From 624ed423243cc0805765d6ba78d22f5e005ce2dc Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 09:12:54 +0200 Subject: [PATCH 001/630] gsmopen: works01 --- src/mod/endpoints/mod_gsmopen/Makefile | 4 +- src/mod/endpoints/mod_gsmopen/gsmopen.h | 18 ++ .../mod_gsmopen/gsmopen_protocol.cpp | 172 +++++++++++++++++- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 152 ++++++++++++++-- 4 files changed, 328 insertions(+), 18 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index 9aff13615a..610dfc13ae 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,9 +1,9 @@ MODNAME=mod_gsmopen SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' #LOCAL_CFLAGS += $(SVNDEF) -I/usr/src/gsmlib-1.10 -LOCAL_CFLAGS += $(SVNDEF) -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff +LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff #LOCAL_LDFLAGS=-lasound -L/usr/src/gsmlib-1.10/gsmlib/.libs -lgsmme -LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lasound -lgsmme -lspandsp +LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp LOCAL_OBJS=gsmopen_protocol.o #OUR_OBJS += /usr/src/gsmlib-1.10/gsmlib/libgsmme.la include ../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 37eb15741c..a335070604 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -514,6 +514,18 @@ struct private_object { int network_creg_not_supported; char creg[128]; + char controldevice_audio_name[50]; /*!< \brief name of the serial device controlling the interface, possibly none */ + int controldev_audio_fd; /*!< \brief serial controlling file descriptor for this interface */ + //pthread_t controldev_thread; /*!< \brief serial control thread for this interface, running during the call */ +#ifdef WIN32 + int controldevice_audio_speed; +#else + speed_t controldevice_audio_speed; +#endif// WIN32 + int controldev_audio_dead; + switch_mutex_t *controldev_audio_lock; + + }; typedef struct private_object private_t; @@ -663,3 +675,9 @@ int gsmopen_portaudio_shutdown(private_t *tech_pvt); int dump_event(private_t *tech_pvt); int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message); int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message); + + +int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed); +int serial_audio_init(private_t * tech_pvt); +int serial_audio_shutdown(private_t * tech_pvt); + diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 6834a1d880..1f0464fa2f 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -783,9 +783,9 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) } /* signal incoming SMS with a +CMTI unsolicited msg */ - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=3,1,0,0,0"); + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=1,1,0,0,0"); if (res) { - DEBUGA_GSMOPEN("AT+CNMI=3,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("AT+CNMI=1,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); tech_pvt->sms_cnmi_not_supported = 1; tech_pvt->gsmopen_serial_sync_period = 30; //FIXME in config } @@ -828,7 +828,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG); tech_pvt->no_ucs2 = 1; } - +#ifdef NOTDEF if (tech_pvt->no_ucs2) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); if (res) { @@ -878,6 +878,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) } else { tech_pvt->at_has_ecam = 1; } +#endif// NOTDEF /* disable unsolicited signaling of call list */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CLCC=0"); @@ -1375,6 +1376,42 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u } + if ((strncmp(tech_pvt->line_array.result[i], "^CEND:1", 7) == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_IDLE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + DEBUGA_GSMOPEN("just received a remote HANGUP\n", GSMOPEN_P_LOG); + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_NORMAL; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + DEBUGA_GSMOPEN("just sent GSMOPEN_CONTROL_HANGUP\n", GSMOPEN_P_LOG); + } + + tech_pvt->phone_callflow = CALLFLOW_CALL_NOCARRIER; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_NOCARRIER\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + //cicopet + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + channel = switch_core_session_get_channel(session); + //gsmopen_hangup(tech_pvt); + switch_core_session_rwunlock(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NONE); + } + // + //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } else { + ERRORA("Why NO CARRIER now?\n", GSMOPEN_P_LOG); + } + } + /* at_call_* are unsolicited messages sent by the modem to signal us about call processing activity and events */ if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_idle) == 0)) { tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; @@ -2465,6 +2502,7 @@ int gsmopen_serial_answer_AT(private_t * tech_pvt) return -1; } } + res = gsmopen_serial_write_AT_expect(tech_pvt, "AT^DDSETEX=2", tech_pvt->at_dial_expect); //tech_pvt->interface_state = GSMOPEN_STATE_UP; //tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE; DEBUGA_GSMOPEN("AT: call answered\n", GSMOPEN_P_LOG); @@ -2500,7 +2538,15 @@ int gsmopen_serial_hangup_AT(private_t * tech_pvt) ERRORA("at_hangup command failed, command used: 'AT+CKPD=\"EEE\"'\n", GSMOPEN_P_LOG); return -1; } + } + + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CHUP"); + if (res) { + ERRORA("at_hangup command failed, command used: 'AT+CHUP'\n", GSMOPEN_P_LOG); + //return -1; + } + } tech_pvt->interface_state = GSMOPEN_STATE_DOWN; tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; @@ -2552,6 +2598,7 @@ int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr) ERRORA("dial command failed, dial string was: %s\n", GSMOPEN_P_LOG, at_command); return -1; } + res = gsmopen_serial_write_AT_expect(tech_pvt, "AT^DDSETEX=2", tech_pvt->at_dial_expect); // jet - early audio //if (tech_pvt->at_early_audio) { //ast_queue_control(tech_pvt->owner, AST_CONTROL_ANSWER); @@ -4002,3 +4049,122 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) POPPA_UNLOCKA(p->controldev_lock); return 0; } + + +int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) +{ + int fd; + int rt; + struct termios tp; + unsigned int status = 0; + unsigned int flags = TIOCM_DTR; + +/* if there is a file descriptor, close it. But it is probably just an old value, so don't check for close success*/ + fd = tech_pvt->controldev_audio_fd; + if (fd) { + close(fd); + } +/* open the serial port */ +//#ifdef __CYGWIN__ + fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); + sleep(1); + close(fd); +//#endif /* __CYGWIN__ */ + fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); + if (fd == -1) { + perror("AUDIO open error "); + DEBUGA_GSMOPEN("AUDIO serial error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + tech_pvt->controldev_audio_fd = fd; + return -1; + } +/* flush it */ + rt = tcflush(fd, TCIFLUSH); + if (rt == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +/* attributes */ + tp.c_cflag = B0 | CS8 | CLOCAL | CREAD | HUPCL; + tp.c_iflag = IGNPAR; + tp.c_cflag &= ~CRTSCTS; + tp.c_oflag = 0; + tp.c_lflag = 0; + tp.c_cc[VMIN] = 1; + tp.c_cc[VTIME] = 0; +/* set controldevice_audio_speed */ + rt = cfsetispeed(&tp, tech_pvt->controldevice_audio_speed); + if (rt == -1) { + ERRORA("AUDIO serial error: %s, speed was: %d", GSMOPEN_P_LOG, strerror(errno), tech_pvt->controldevice_audio_speed); + } + rt = cfsetospeed(&tp, tech_pvt->controldevice_audio_speed); + if (rt == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +/* set port attributes */ + if (tcsetattr(fd, TCSADRAIN, &tp) == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } + rt = tcsetattr(fd, TCSANOW, &tp); + if (rt == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +#ifndef __CYGWIN__ + ioctl(fd, TIOCMGET, &status); + status |= TIOCM_DTR; /* Set DTR high */ + status &= ~TIOCM_RTS; /* Set RTS low */ + ioctl(fd, TIOCMSET, &status); + ioctl(fd, TIOCMGET, &status); + ioctl(fd, TIOCMBIS, &flags); + flags = TIOCM_RTS; + ioctl(fd, TIOCMBIC, &flags); + ioctl(fd, TIOCMGET, &status); +#else /* __CYGWIN__ */ + ioctl(fd, TIOCMGET, &status); + status |= TIOCM_DTR; /* Set DTR high */ + status &= ~TIOCM_RTS; /* Set RTS low */ + ioctl(fd, TIOCMSET, &status); +#endif /* __CYGWIN__ */ + tech_pvt->controldev_audio_fd = fd; + + return (fd); +} +int serial_audio_init(private_t * tech_pvt) +{ + int res; + int err; + + res=gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed); + ERRORA("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res); + + if(res > 0) + err=0; + else + err=1; + + + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^DDSETEX=2"); + if (res) { + ERRORA("at_hangup command failed, command used: 'AT^DDSETEX=2'\n", GSMOPEN_P_LOG); + //return -1; + } + + return err; +} +int serial_audio_shutdown(private_t * tech_pvt) +{ + + int res; + int err; + + res = close(tech_pvt->controldev_audio_fd); + ERRORA("serial_audio_shutdown res=%d (controldev_audio_fd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldev_audio_fd); + tech_pvt->controldev_audio_fd = -1; + + err = res; + + return err; +} + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 7db2452a95..6b8c6d5aaf 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1,3 +1,12 @@ +#ifdef GSMOPEN_ALSA +int alsa_init(private_t * tech_pvt); +int alsa_shutdown(private_t * tech_pvt); +snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream); +int alsa_write(private_t * tech_pvt, short *data, int datalen); +int alsa_read(private_t * tech_pvt, short *data, int datalen); + +#endif /* GSMOPEN_ALSA */ + /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application * Copyright (C) 2005/2011, Anthony Minessale II @@ -296,6 +305,13 @@ switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *s } } #endif// GSMOPEN_PORTAUDIO + if(tech_pvt->no_sound==0){ + if (serial_audio_init(tech_pvt)) { + ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + + } + } if (switch_core_timer_init(&tech_pvt->timer_read, "soft", 20, tech_pvt->read_codec.implementation->samples_per_packet, gsmopen_module_pool) != SWITCH_STATUS_SUCCESS) { @@ -634,6 +650,9 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) } } #endif// GSMOPEN_PORTAUDIO + if(tech_pvt->no_sound==0){ + serial_audio_shutdown(tech_pvt); + } *tech_pvt->session_uuid_str = '\0'; @@ -820,6 +839,10 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch int i; #endif// GSMOPEN_ALSA #endif// WANT_SPEEX + int samples; + int samples2; + char digit_str[256]; + short buffer2[640]; channel = switch_core_session_get_channel(session); @@ -845,11 +868,13 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch #ifndef GSMOPEN_PORTAUDIO switch_core_timer_next(&tech_pvt->timer_read); #endif// GSMOPEN_PORTAUDIO + //usleep(20000); + //goto cng; if(tech_pvt->no_sound==1){ goto cng; } -#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +//#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) #ifdef GSMOPEN_ALSA //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) @@ -857,6 +882,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch #ifdef GSMOPEN_PORTAUDIO if ((samples = gsmopen_portaudio_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) #endif// GSMOPEN_PORTAUDIO + + //sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); + if ((samples = read(tech_pvt->controldev_audio_fd, (short *) tech_pvt->read_frame.data, 320)) >0) { #ifdef GSMOPEN_PORTAUDIO @@ -886,8 +914,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch - tech_pvt->read_frame.datalen = samples * 2; - tech_pvt->read_frame.samples = samples; + //tech_pvt->read_frame.datalen = samples * 2; + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples/2; #ifndef GSMOPEN_PORTAUDIO tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; @@ -895,13 +924,17 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; + if ((samples2 = read(tech_pvt->controldev_audio_fd, (short *) buffer2, 320)) >0){ + WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + +} //status = SWITCH_STATUS_SUCCESS; switch_set_flag(tech_pvt, TFLAG_VOICE); } //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); - if (samples != 160) { - ERRORA("samples=%d\n", GSMOPEN_P_LOG, samples); + if (samples != 320) { + //DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); goto cng; } //DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp); @@ -911,7 +944,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch - +//#ifdef NOTDEF memset(digit_str, 0, sizeof(digit_str)); //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); @@ -939,6 +972,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; } } +//#endif //NOTDEF while (switch_test_flag(tech_pvt, TFLAG_IO)) { if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { switch_clear_flag(tech_pvt, TFLAG_BREAK); @@ -975,7 +1009,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch DEBUGA_GSMOPEN("CHANNEL READ FALSE\n", GSMOPEN_P_LOG); return SWITCH_STATUS_FALSE; -#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +//#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) cng: data = (switch_byte_t *) tech_pvt->read_frame.data; data[0] = 65; @@ -1002,6 +1036,7 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc spx_int16_t *speexptr; #endif// GSMOPEN_ALSA #endif// WANT_SPEEX + unsigned int sent; channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); @@ -1058,6 +1093,15 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc } #endif //WANT_SPEEX #endif // GSMOPEN_PORTAUDIO + + sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); +//DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); + + if (sent && sent != frame->datalen && sent != -1) { + DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); + } + + //NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent); return SWITCH_STATUS_SUCCESS; } @@ -1392,6 +1436,7 @@ static switch_status_t load_config(int reload_type) const char *dialplan = "XML"; const char *destination = "5000"; const char *controldevice_name = "/dev/ttyACM0"; + const char *controldevice_audio_name = "/dev/ttyUSB2"; char *digit_timeout = NULL; char *max_digits = NULL; char *hotline = NULL; @@ -1427,17 +1472,17 @@ static switch_status_t load_config(int reload_type) const char *at_postinit_3_expect = "OK"; const char *at_postinit_4 = "at+sidet=0"; const char *at_postinit_4_expect = "OK"; - const char *at_postinit_5 = "at+clvl=99"; + const char *at_postinit_5 = "at+clvl=3"; const char *at_postinit_5_expect = "OK"; const char *at_query_battchg = "AT+CBC"; const char *at_query_battchg_expect = "OK"; const char *at_query_signal = "AT+CSQ"; const char *at_query_signal_expect = "OK"; const char *at_call_idle = "+MCST: 1"; - const char *at_call_incoming = "+MCST: 2"; - const char *at_call_active = "+CSSI: 7"; + const char *at_call_incoming = "RING"; + const char *at_call_active = "^CONN:1,0"; const char *at_call_failed = "+MCST: 65"; - const char *at_call_calling = "+CSSI: 1"; + const char *at_call_calling = "^ORIG:1,0"; const char *at_indicator_noservice_string = "CIEV: 2;0"; const char *at_indicator_nosignal_string = "CIEV: 5;0"; const char *at_indicator_lowsignal_string = "CIEV: 5;1"; @@ -1467,7 +1512,7 @@ static switch_status_t load_config(int reload_type) #if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) const char *no_sound = "0"; #else - const char *no_sound = "1"; + const char *no_sound = "0"; #endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) const char *portaudiocindex = "1"; const char *portaudiopindex = "1"; @@ -1479,6 +1524,7 @@ static switch_status_t load_config(int reload_type) int controldevice_speed = 115200; //FIXME TODO #else uint32_t controldevice_speed = B115200; //FIXME TODO + uint32_t controldevice_audio_speed = B115200; //FIXME TODO #endif //WIN32 uint32_t controldevprotocol = PROTOCOL_AT; //FIXME TODO uint32_t running = 1; //FIXME TODO @@ -1504,6 +1550,8 @@ static switch_status_t load_config(int reload_type) destination = val; } else if (!strcasecmp(var, "controldevice_name")) { controldevice_name = val; + } else if (!strcasecmp(var, "controldevice_audio_name")) { + controldevice_audio_name = val; } else if (!strcasecmp(var, "digit_timeout")) { digit_timeout = val; } else if (!strcasecmp(var, "max_digits")) { @@ -1756,6 +1804,7 @@ static switch_status_t load_config(int reload_type) tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); + switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_audio_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].id, id); @@ -1764,6 +1813,7 @@ static switch_status_t load_config(int reload_type) switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dialplan, dialplan); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].destination, destination); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_name, controldevice_name); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name, controldevice_audio_name); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dial_regex, dial_regex); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].hold_music, hold_music); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].fail_dial_regex, fail_dial_regex); @@ -1845,7 +1895,7 @@ static switch_status_t load_config(int reload_type) #if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); #else - globals.GSMOPEN_INTERFACES[interface_id].no_sound = 1; + globals.GSMOPEN_INTERFACES[interface_id].no_sound = 0; #endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); @@ -1865,6 +1915,7 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].dialplan); DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].destination); DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_name); + DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name); #ifdef GSMOPEN_ALSA DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsacname); DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsapname); @@ -1883,6 +1934,10 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess); #endif// GSMOPEN_PORTAUDIO DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); + + + + /* init the serial port */ if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { globals.GSMOPEN_INTERFACES[interface_id].controldevfd = @@ -1976,6 +2031,76 @@ static switch_status_t load_config(int reload_type) } #endif// GSMOPEN_PORTAUDIO + if (serial_audio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + + } + + if (serial_audio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("serial_audio_shutdown failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_shutdown failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + + } + +#ifdef NOTDEF + /* init the serial port */ + if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { + globals.GSMOPEN_INTERFACES[interface_id].controldevfd = + gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed); + if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) { + ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + } + } + + /* config the phone/modem on the serial port */ + if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { + res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); + if (res) { + int count = 0; + ERRORA("gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG); + while(res && count < 5){ + switch_sleep(100000); //0.1 seconds + res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); + count++; + if (res) { + ERRORA("%d: gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG, count); + } + } + if (res) { + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_config failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + } + } + } +#endif// NOTDEF + + + } globals.GSMOPEN_INTERFACES[interface_id].active=1; @@ -2027,6 +2152,7 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexpreprocess); #endif// GSMOPEN_PORTAUDIO DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); + DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); } } From c25779d6f4c6098dd6cd02cca5863978948268da Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 09:20:31 +0200 Subject: [PATCH 002/630] gsmopen: works02 --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 6b8c6d5aaf..61f02e0103 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -868,7 +868,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch #ifndef GSMOPEN_PORTAUDIO switch_core_timer_next(&tech_pvt->timer_read); #endif// GSMOPEN_PORTAUDIO - //usleep(20000); //goto cng; if(tech_pvt->no_sound==1){ @@ -1507,8 +1506,8 @@ static switch_status_t load_config(int reload_type) const char *gsmopen_sound_rate = "8000"; const char *alsa_play_is_mono = "1"; const char *alsa_capture_is_mono = "1"; - const char *capture_boost = "5"; - const char *playback_boost = "10"; + const char *capture_boost = "0"; + const char *playback_boost = "0"; #if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) const char *no_sound = "0"; #else From 64e0a5ab0d5c4c4a164921cfc301da1ee7273ca4 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 09:25:30 +0200 Subject: [PATCH 003/630] gsmopen: works03 --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 61f02e0103..e7ad4d046b 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -2210,7 +2210,7 @@ static switch_status_t chat_send(switch_event_t *message_event) } } - if (!strlen(hint)) { //FIXME FIXME FIXME + if (hint==NULL || !strlen(hint)) { //FIXME FIXME FIXME hint = from; } if (to && (user = strdup(to))) { From 5b98e04e498567f785048c096759ebe56141eb57 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 09:26:11 +0200 Subject: [PATCH 004/630] gsmopen: works04 --- src/mod/endpoints/mod_gsmopen/Makefile | 8 ++++--- src/mod/endpoints/mod_gsmopen/gsmopen.h | 11 +++++++++ src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 24 +++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index 610dfc13ae..06109af5ae 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,9 +1,11 @@ MODNAME=mod_gsmopen SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' #LOCAL_CFLAGS += $(SVNDEF) -I/usr/src/gsmlib-1.10 -LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff +LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff -Ilibctb-0.16/include/ #LOCAL_LDFLAGS=-lasound -L/usr/src/gsmlib-1.10/gsmlib/.libs -lgsmme -LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -LOCAL_OBJS=gsmopen_protocol.o +LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 + +LOCAL_OBJS=gsmopen_protocol.o #OUR_OBJS += /usr/src/gsmlib-1.10/gsmlib/libgsmme.la +#OUR_OBJS += libctb-0.16/lib/libctbd-0.16.a include ../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index a335070604..e8cd61a0a0 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -135,6 +135,17 @@ #define GSMOPEN_SVN_VERSION SWITCH_VERSION_REVISION #endif /* GSMOPEN_SVN_VERSION */ +#include "ctb-0.16/ctb.h" + +#include +#include +#include + +#include +#include + +using namespace std; + typedef enum { TFLAG_IO = (1 << 0), TFLAG_INBOUND = (1 << 1), diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index e7ad4d046b..fed0996dea 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -2152,7 +2152,31 @@ static switch_status_t load_config(int reload_type) #endif// GSMOPEN_PORTAUDIO DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); +/***********************************/ + ctb::IOBase* device = NULL; + + + ctb::SerialPort* serialPort = new ctb::SerialPort(); + + //if( serialPort->Open( devname.c_str(), baudrate, + if( serialPort->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + + device = serialPort; + + if( device->Write( "AT+CLAC\r\n", 9 ) != 7 ) { + + ERRORA("BIZARRE\n", GSMOPEN_P_LOG); + + } + + } else { + + ERRORA("port NOT open\n", GSMOPEN_P_LOG); + } + + +/***********************************/ } } } From d1446cd91c1290b93bf4bde66c931e23c8aa34f8 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 09:27:22 +0200 Subject: [PATCH 005/630] gsmopen: works05 --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 + .../mod_gsmopen/gsmopen_protocol.cpp | 125 +++++++++++++++++- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 11 +- 3 files changed, 132 insertions(+), 6 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index e8cd61a0a0..92a6c8b8eb 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -536,6 +536,8 @@ struct private_object { int controldev_audio_dead; switch_mutex_t *controldev_audio_lock; + ctb::IOBase* device_serial_audio; +ctb::SerialPort* serialPort_serial_audio; }; diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 1f0464fa2f..a87cc4ec4c 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -4051,7 +4051,7 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) } -int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) +int oldgsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) { int fd; int rt; @@ -4127,7 +4127,7 @@ int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_a return (fd); } -int serial_audio_init(private_t * tech_pvt) +int old_serial_audio_init(private_t * tech_pvt) { int res; int err; @@ -4149,13 +4149,132 @@ int serial_audio_init(private_t * tech_pvt) return err; } +int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) +{ + +//#ifdef NOTDEF +/***********************************/ + + tech_pvt->device_serial_audio = NULL; + tech_pvt->serialPort_serial_audio = new ctb::SerialPort(); + + if( tech_pvt->serialPort_serial_audio->Open( "/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + + //tech_pvt->device_serial_audio = tech_pvt->serialPort_serial_audio; + ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); + + } else { + + ERRORA("port NOT open\n", GSMOPEN_P_LOG); + } + +return 0; + +/***********************************/ +//#endif// NOTDEF + +#ifdef NOTDEF + + + int fd; + int rt; + struct termios tp; + unsigned int status = 0; + unsigned int flags = TIOCM_DTR; + +/* if there is a file descriptor, close it. But it is probably just an old value, so don't check for close success*/ + fd = tech_pvt->controldev_audio_fd; + if (fd) { + close(fd); + } +/* open the serial port */ +//#ifdef __CYGWIN__ + fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); + sleep(1); + close(fd); +//#endif /* __CYGWIN__ */ + fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); + if (fd == -1) { + perror("AUDIO open error "); + DEBUGA_GSMOPEN("AUDIO serial error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + tech_pvt->controldev_audio_fd = fd; + return -1; + } +/* flush it */ + rt = tcflush(fd, TCIFLUSH); + if (rt == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +/* attributes */ + tp.c_cflag = B0 | CS8 | CLOCAL | CREAD | HUPCL; + tp.c_iflag = IGNPAR; + tp.c_cflag &= ~CRTSCTS; + tp.c_oflag = 0; + tp.c_lflag = 0; + tp.c_cc[VMIN] = 1; + tp.c_cc[VTIME] = 0; +/* set controldevice_audio_speed */ + rt = cfsetispeed(&tp, tech_pvt->controldevice_audio_speed); + if (rt == -1) { + ERRORA("AUDIO serial error: %s, speed was: %d", GSMOPEN_P_LOG, strerror(errno), tech_pvt->controldevice_audio_speed); + } + rt = cfsetospeed(&tp, tech_pvt->controldevice_audio_speed); + if (rt == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +/* set port attributes */ + if (tcsetattr(fd, TCSADRAIN, &tp) == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } + rt = tcsetattr(fd, TCSANOW, &tp); + if (rt == -1) { + ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +#ifndef __CYGWIN__ + ioctl(fd, TIOCMGET, &status); + status |= TIOCM_DTR; /* Set DTR high */ + status &= ~TIOCM_RTS; /* Set RTS low */ + ioctl(fd, TIOCMSET, &status); + ioctl(fd, TIOCMGET, &status); + ioctl(fd, TIOCMBIS, &flags); + flags = TIOCM_RTS; + ioctl(fd, TIOCMBIC, &flags); + ioctl(fd, TIOCMGET, &status); +#else /* __CYGWIN__ */ + ioctl(fd, TIOCMGET, &status); + status |= TIOCM_DTR; /* Set DTR high */ + status &= ~TIOCM_RTS; /* Set RTS low */ + ioctl(fd, TIOCMSET, &status); +#endif /* __CYGWIN__ */ + tech_pvt->controldev_audio_fd = fd; + + return (fd); +#endif //NOTDEF +} + +int serial_audio_init(private_t * tech_pvt) +{ + int res; + int err; + + res=gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed); + ERRORA("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res); + + if(res == 0) + err=0; + else + err=1; + + return err; +} int serial_audio_shutdown(private_t * tech_pvt) { int res; int err; - res = close(tech_pvt->controldev_audio_fd); + //res = close(tech_pvt->controldev_audio_fd); + res = tech_pvt->serialPort_serial_audio->Close(); ERRORA("serial_audio_shutdown res=%d (controldev_audio_fd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldev_audio_fd); tech_pvt->controldev_audio_fd = -1; diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index fed0996dea..8655487bc2 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -883,7 +883,8 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch #endif// GSMOPEN_PORTAUDIO //sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); - if ((samples = read(tech_pvt->controldev_audio_fd, (short *) tech_pvt->read_frame.data, 320)) >0) + //if ((samples = read(tech_pvt->controldev_audio_fd, (short *) tech_pvt->read_frame.data, 320)) >0) + if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) { #ifdef GSMOPEN_PORTAUDIO @@ -923,7 +924,8 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; - if ((samples2 = read(tech_pvt->controldev_audio_fd, (short *) buffer2, 320)) >0){ + //if ((samples2 = read(tech_pvt->controldev_audio_fd, (short *) buffer2, 320)) >0){ + if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); } @@ -1093,7 +1095,8 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc #endif //WANT_SPEEX #endif // GSMOPEN_PORTAUDIO - sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); + sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); + //sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); //DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); if (sent && sent != frame->datalen && sent != -1) { @@ -2153,6 +2156,7 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); /***********************************/ +#ifdef NOTDEF ctb::IOBase* device = NULL; @@ -2175,6 +2179,7 @@ static switch_status_t load_config(int reload_type) ERRORA("port NOT open\n", GSMOPEN_P_LOG); } +#endif// NOTDEF /***********************************/ } From 8c7a624d0ca3d0f09e27089807c12d1c557e0f21 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 09:42:42 +0200 Subject: [PATCH 006/630] gsmopen: cleaning Makefile, libctb and its includes need to be installed and ldconfigged --- src/mod/endpoints/mod_gsmopen/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index 06109af5ae..e833694745 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,7 +1,7 @@ MODNAME=mod_gsmopen SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' #LOCAL_CFLAGS += $(SVNDEF) -I/usr/src/gsmlib-1.10 -LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff -Ilibctb-0.16/include/ +LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff #LOCAL_LDFLAGS=-lasound -L/usr/src/gsmlib-1.10/gsmlib/.libs -lgsmme LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 From fc4c61570b59b69e46bce6a162bcb9b7235bb410 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 10:58:44 +0200 Subject: [PATCH 007/630] gsmopen: cleaning a little --- src/mod/endpoints/mod_gsmopen/Makefile | 2 - src/mod/endpoints/mod_gsmopen/gsmopen.h | 22 +- .../mod_gsmopen/gsmopen_protocol.cpp | 197 +----------------- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 99 +-------- 4 files changed, 8 insertions(+), 312 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index e833694745..2831641d8c 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -4,8 +4,6 @@ SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff #LOCAL_LDFLAGS=-lasound -L/usr/src/gsmlib-1.10/gsmlib/.libs -lgsmme LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 - LOCAL_OBJS=gsmopen_protocol.o #OUR_OBJS += /usr/src/gsmlib-1.10/gsmlib/libgsmme.la -#OUR_OBJS += libctb-0.16/lib/libctbd-0.16.a include ../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 92a6c8b8eb..d740f781b8 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -137,15 +137,6 @@ #include "ctb-0.16/ctb.h" -#include -#include -#include - -#include -#include - -using namespace std; - typedef enum { TFLAG_IO = (1 << 0), TFLAG_INBOUND = (1 << 1), @@ -525,19 +516,12 @@ struct private_object { int network_creg_not_supported; char creg[128]; - char controldevice_audio_name[50]; /*!< \brief name of the serial device controlling the interface, possibly none */ - int controldev_audio_fd; /*!< \brief serial controlling file descriptor for this interface */ - //pthread_t controldev_thread; /*!< \brief serial control thread for this interface, running during the call */ -#ifdef WIN32 + char controldevice_audio_name[50]; + int controldev_audio_fd; int controldevice_audio_speed; -#else - speed_t controldevice_audio_speed; -#endif// WIN32 int controldev_audio_dead; switch_mutex_t *controldev_audio_lock; - - ctb::IOBase* device_serial_audio; -ctb::SerialPort* serialPort_serial_audio; + ctb::SerialPort* serialPort_serial_audio; }; diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index a87cc4ec4c..ab9bf44d16 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -4051,205 +4051,17 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) } -int oldgsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) -{ - int fd; - int rt; - struct termios tp; - unsigned int status = 0; - unsigned int flags = TIOCM_DTR; - -/* if there is a file descriptor, close it. But it is probably just an old value, so don't check for close success*/ - fd = tech_pvt->controldev_audio_fd; - if (fd) { - close(fd); - } -/* open the serial port */ -//#ifdef __CYGWIN__ - fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); - sleep(1); - close(fd); -//#endif /* __CYGWIN__ */ - fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); - if (fd == -1) { - perror("AUDIO open error "); - DEBUGA_GSMOPEN("AUDIO serial error: %s\n", GSMOPEN_P_LOG, strerror(errno)); - tech_pvt->controldev_audio_fd = fd; - return -1; - } -/* flush it */ - rt = tcflush(fd, TCIFLUSH); - if (rt == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -/* attributes */ - tp.c_cflag = B0 | CS8 | CLOCAL | CREAD | HUPCL; - tp.c_iflag = IGNPAR; - tp.c_cflag &= ~CRTSCTS; - tp.c_oflag = 0; - tp.c_lflag = 0; - tp.c_cc[VMIN] = 1; - tp.c_cc[VTIME] = 0; -/* set controldevice_audio_speed */ - rt = cfsetispeed(&tp, tech_pvt->controldevice_audio_speed); - if (rt == -1) { - ERRORA("AUDIO serial error: %s, speed was: %d", GSMOPEN_P_LOG, strerror(errno), tech_pvt->controldevice_audio_speed); - } - rt = cfsetospeed(&tp, tech_pvt->controldevice_audio_speed); - if (rt == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -/* set port attributes */ - if (tcsetattr(fd, TCSADRAIN, &tp) == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } - rt = tcsetattr(fd, TCSANOW, &tp); - if (rt == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -#ifndef __CYGWIN__ - ioctl(fd, TIOCMGET, &status); - status |= TIOCM_DTR; /* Set DTR high */ - status &= ~TIOCM_RTS; /* Set RTS low */ - ioctl(fd, TIOCMSET, &status); - ioctl(fd, TIOCMGET, &status); - ioctl(fd, TIOCMBIS, &flags); - flags = TIOCM_RTS; - ioctl(fd, TIOCMBIC, &flags); - ioctl(fd, TIOCMGET, &status); -#else /* __CYGWIN__ */ - ioctl(fd, TIOCMGET, &status); - status |= TIOCM_DTR; /* Set DTR high */ - status &= ~TIOCM_RTS; /* Set RTS low */ - ioctl(fd, TIOCMSET, &status); -#endif /* __CYGWIN__ */ - tech_pvt->controldev_audio_fd = fd; - - return (fd); -} -int old_serial_audio_init(private_t * tech_pvt) -{ - int res; - int err; - - res=gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed); - ERRORA("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res); - - if(res > 0) - err=0; - else - err=1; - - - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^DDSETEX=2"); - if (res) { - ERRORA("at_hangup command failed, command used: 'AT^DDSETEX=2'\n", GSMOPEN_P_LOG); - //return -1; - } - - return err; -} int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) { - -//#ifdef NOTDEF -/***********************************/ - - tech_pvt->device_serial_audio = NULL; tech_pvt->serialPort_serial_audio = new ctb::SerialPort(); if( tech_pvt->serialPort_serial_audio->Open( "/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { - - //tech_pvt->device_serial_audio = tech_pvt->serialPort_serial_audio; ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); - } else { - ERRORA("port NOT open\n", GSMOPEN_P_LOG); } -return 0; - -/***********************************/ -//#endif// NOTDEF - -#ifdef NOTDEF - - - int fd; - int rt; - struct termios tp; - unsigned int status = 0; - unsigned int flags = TIOCM_DTR; - -/* if there is a file descriptor, close it. But it is probably just an old value, so don't check for close success*/ - fd = tech_pvt->controldev_audio_fd; - if (fd) { - close(fd); - } -/* open the serial port */ -//#ifdef __CYGWIN__ - fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); - sleep(1); - close(fd); -//#endif /* __CYGWIN__ */ - fd = open(tech_pvt->controldevice_audio_name, O_RDWR | O_NOCTTY | O_NONBLOCK); - if (fd == -1) { - perror("AUDIO open error "); - DEBUGA_GSMOPEN("AUDIO serial error: %s\n", GSMOPEN_P_LOG, strerror(errno)); - tech_pvt->controldev_audio_fd = fd; - return -1; - } -/* flush it */ - rt = tcflush(fd, TCIFLUSH); - if (rt == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -/* attributes */ - tp.c_cflag = B0 | CS8 | CLOCAL | CREAD | HUPCL; - tp.c_iflag = IGNPAR; - tp.c_cflag &= ~CRTSCTS; - tp.c_oflag = 0; - tp.c_lflag = 0; - tp.c_cc[VMIN] = 1; - tp.c_cc[VTIME] = 0; -/* set controldevice_audio_speed */ - rt = cfsetispeed(&tp, tech_pvt->controldevice_audio_speed); - if (rt == -1) { - ERRORA("AUDIO serial error: %s, speed was: %d", GSMOPEN_P_LOG, strerror(errno), tech_pvt->controldevice_audio_speed); - } - rt = cfsetospeed(&tp, tech_pvt->controldevice_audio_speed); - if (rt == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -/* set port attributes */ - if (tcsetattr(fd, TCSADRAIN, &tp) == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } - rt = tcsetattr(fd, TCSANOW, &tp); - if (rt == -1) { - ERRORA("AUDIO serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -#ifndef __CYGWIN__ - ioctl(fd, TIOCMGET, &status); - status |= TIOCM_DTR; /* Set DTR high */ - status &= ~TIOCM_RTS; /* Set RTS low */ - ioctl(fd, TIOCMSET, &status); - ioctl(fd, TIOCMGET, &status); - ioctl(fd, TIOCMBIS, &flags); - flags = TIOCM_RTS; - ioctl(fd, TIOCMBIC, &flags); - ioctl(fd, TIOCMGET, &status); -#else /* __CYGWIN__ */ - ioctl(fd, TIOCMGET, &status); - status |= TIOCM_DTR; /* Set DTR high */ - status &= ~TIOCM_RTS; /* Set RTS low */ - ioctl(fd, TIOCMSET, &status); -#endif /* __CYGWIN__ */ - tech_pvt->controldev_audio_fd = fd; - - return (fd); -#endif //NOTDEF + return 0; } int serial_audio_init(private_t * tech_pvt) @@ -4273,17 +4085,10 @@ int serial_audio_shutdown(private_t * tech_pvt) int res; int err; - //res = close(tech_pvt->controldev_audio_fd); res = tech_pvt->serialPort_serial_audio->Close(); ERRORA("serial_audio_shutdown res=%d (controldev_audio_fd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldev_audio_fd); - tech_pvt->controldev_audio_fd = -1; - err = res; return err; } - - - - diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 8655487bc2..e89a66da4e 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1,12 +1,3 @@ -#ifdef GSMOPEN_ALSA -int alsa_init(private_t * tech_pvt); -int alsa_shutdown(private_t * tech_pvt); -snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream); -int alsa_write(private_t * tech_pvt, short *data, int datalen); -int alsa_read(private_t * tech_pvt, short *data, int datalen); - -#endif /* GSMOPEN_ALSA */ - /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application * Copyright (C) 2005/2011, Anthony Minessale II @@ -869,11 +860,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_core_timer_next(&tech_pvt->timer_read); #endif// GSMOPEN_PORTAUDIO - //goto cng; if(tech_pvt->no_sound==1){ goto cng; } -//#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) #ifdef GSMOPEN_ALSA //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) @@ -882,8 +871,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch if ((samples = gsmopen_portaudio_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) #endif// GSMOPEN_PORTAUDIO - //sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); - //if ((samples = read(tech_pvt->controldev_audio_fd, (short *) tech_pvt->read_frame.data, 320)) >0) if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) { @@ -914,7 +901,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch - //tech_pvt->read_frame.datalen = samples * 2; tech_pvt->read_frame.datalen = samples; tech_pvt->read_frame.samples = samples/2; @@ -924,18 +910,17 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; - //if ((samples2 = read(tech_pvt->controldev_audio_fd, (short *) buffer2, 320)) >0){ - if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); -} + } //status = SWITCH_STATUS_SUCCESS; switch_set_flag(tech_pvt, TFLAG_VOICE); } //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); if (samples != 320) { - //DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); goto cng; } //DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp); @@ -945,8 +930,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch -//#ifdef NOTDEF - memset(digit_str, 0, sizeof(digit_str)); //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); //teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str)); @@ -973,7 +956,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; } } -//#endif //NOTDEF while (switch_test_flag(tech_pvt, TFLAG_IO)) { if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { switch_clear_flag(tech_pvt, TFLAG_BREAK); @@ -1010,7 +992,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch DEBUGA_GSMOPEN("CHANNEL READ FALSE\n", GSMOPEN_P_LOG); return SWITCH_STATUS_FALSE; -//#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) cng: data = (switch_byte_t *) tech_pvt->read_frame.data; data[0] = 65; @@ -1096,8 +1077,6 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc #endif // GSMOPEN_PORTAUDIO sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); - //sent = write(tech_pvt->controldev_audio_fd, (short *) frame->data, (int) (frame->datalen)); -//DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); if (sent && sent != frame->datalen && sent != -1) { DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); @@ -2057,49 +2036,6 @@ static switch_status_t load_config(int reload_type) } -#ifdef NOTDEF - /* init the serial port */ - if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { - globals.GSMOPEN_INTERFACES[interface_id].controldevfd = - gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed); - if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) { - ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; - continue; - } - } - - /* config the phone/modem on the serial port */ - if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { - res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); - if (res) { - int count = 0; - ERRORA("gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG); - while(res && count < 5){ - switch_sleep(100000); //0.1 seconds - res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); - count++; - if (res) { - ERRORA("%d: gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG, count); - } - } - if (res) { - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_config failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; - continue; - } - } - } -#endif// NOTDEF @@ -2155,33 +2091,6 @@ static switch_status_t load_config(int reload_type) #endif// GSMOPEN_PORTAUDIO DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); -/***********************************/ -#ifdef NOTDEF - - ctb::IOBase* device = NULL; - - - ctb::SerialPort* serialPort = new ctb::SerialPort(); - - //if( serialPort->Open( devname.c_str(), baudrate, - if( serialPort->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { - - device = serialPort; - - if( device->Write( "AT+CLAC\r\n", 9 ) != 7 ) { - - ERRORA("BIZARRE\n", GSMOPEN_P_LOG); - - } - - } else { - - ERRORA("port NOT open\n", GSMOPEN_P_LOG); - } - -#endif// NOTDEF - -/***********************************/ } } } From 282a1885e7bdfbb1a1f25fb05401dfbdeeaed08b Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 11:07:47 +0200 Subject: [PATCH 008/630] gsmopen: adding libctb-0.16 --- .../mod_gsmopen/libctb-0.16/build/COPYRIGHT | 18 + .../mod_gsmopen/libctb-0.16/build/GNUmakefile | 293 + .../mod_gsmopen/libctb-0.16/build/README | 169 + .../mod_gsmopen/libctb-0.16/build/libctb.bkl | 281 + .../libctb-0.16/build/makefile.bcc | 269 + .../libctb-0.16/build/makefile.gcc | 238 + .../mod_gsmopen/libctb-0.16/build/makefile.vc | 260 + .../libctb-0.16/build/makefile.wat | 283 + .../libctb-0.16/include/ctb-0.16/ctb.h | 139 + .../libctb-0.16/include/ctb-0.16/fifo.h | 96 + .../libctb-0.16/include/ctb-0.16/getopt.h | 19 + .../libctb-0.16/include/ctb-0.16/gpib.h | 378 + .../libctb-0.16/include/ctb-0.16/iobase.h | 294 + .../libctb-0.16/include/ctb-0.16/kbhit.h | 10 + .../include/ctb-0.16/linux/serport.h | 94 + .../include/ctb-0.16/linux/timer.h | 139 + .../libctb-0.16/include/ctb-0.16/portscan.h | 25 + .../libctb-0.16/include/ctb-0.16/serport.h | 20 + .../libctb-0.16/include/ctb-0.16/serportx.h | 451 ++ .../libctb-0.16/include/ctb-0.16/timer.h | 19 + .../include/ctb-0.16/win32/getopt.h | 17 + .../include/ctb-0.16/win32/gpib-32.h | 414 ++ .../include/ctb-0.16/win32/serport.h | 74 + .../include/ctb-0.16/win32/timer.h | 140 + .../mod_gsmopen/libctb-0.16/manual/refman.pdf | Bin 0 -> 727923 bytes .../libctb-0.16/python/module/linux/ctb.py | 455 ++ .../libctb-0.16/python/module/linux/wxctb.py | 264 + .../libctb-0.16/python/samples/parity.py | 70 + .../libctb-0.16/python/samples/protocol.py | 88 + .../libctb-0.16/python/samples/rtsdtr.py | 53 + .../libctb-0.16/python/src/ctb.html | 353 + .../mod_gsmopen/libctb-0.16/python/src/ctb.py | 455 ++ .../mod_gsmopen/libctb-0.16/python/src/gpib.i | 96 + .../libctb-0.16/python/src/iobase.i | 59 + .../libctb-0.16/python/src/kbhit.i | 9 + .../libctb-0.16/python/src/linux/makepy.sh | 63 + .../libctb-0.16/python/src/linux/serport.i | 50 + .../libctb-0.16/python/src/linux/timer.i | 37 + .../libctb-0.16/python/src/linux/wxctb.i | 6 + .../libctb-0.16/python/src/linux/wxctb.py | 264 + .../python/src/linux/wxctb_wrap.cxx | 6469 +++++++++++++++++ .../libctb-0.16/python/src/serportx.i | 84 + .../libctb-0.16/python/src/win32/makepy.bat | 65 + .../libctb-0.16/python/src/win32/serport.i | 57 + .../libctb-0.16/python/src/win32/timer.i | 39 + .../libctb-0.16/python/src/win32/wxctb.i | 6 + .../libctb-0.16/samples/ctbtest.cpp | 181 + .../mod_gsmopen/libctb-0.16/src/fifo.cpp | 130 + .../mod_gsmopen/libctb-0.16/src/getopt.cpp | 14 + .../mod_gsmopen/libctb-0.16/src/gpib.cpp | 338 + .../mod_gsmopen/libctb-0.16/src/iobase.cpp | 211 + .../mod_gsmopen/libctb-0.16/src/kbhit.cpp | 37 + .../libctb-0.16/src/linux/serport.cpp | 443 ++ .../libctb-0.16/src/linux/timer.cpp | 97 + .../mod_gsmopen/libctb-0.16/src/portscan.cpp | 109 + .../mod_gsmopen/libctb-0.16/src/serportx.cpp | 104 + .../libctb-0.16/src/win32/getopt.cpp | 66 + .../libctb-0.16/src/win32/serport.cpp | 452 ++ .../libctb-0.16/src/win32/timer.cpp | 85 + 59 files changed, 15449 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/COPYRIGHT create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/GNUmakefile create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/README create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/libctb.bkl create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.bcc create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.gcc create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.wat create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/fifo.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/getopt.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/gpib.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/iobase.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/kbhit.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/serport.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/timer.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/portscan.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serport.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serportx.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/timer.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/getopt.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/gpib-32.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/serport.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/timer.h create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/manual/refman.pdf create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/ctb.py create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/wxctb.py create mode 100755 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/parity.py create mode 100755 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/protocol.py create mode 100755 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/rtsdtr.py create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.html create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.py create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/gpib.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/iobase.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/kbhit.i create mode 100755 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/makepy.sh create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/serport.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/timer.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.py create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb_wrap.cxx create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/serportx.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/makepy.bat create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/serport.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/timer.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/wxctb.i create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/samples/ctbtest.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/fifo.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/getopt.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/gpib.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/iobase.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/kbhit.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/serport.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/timer.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/portscan.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/serportx.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/getopt.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/serport.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/timer.cpp diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/COPYRIGHT b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/COPYRIGHT new file mode 100644 index 0000000000..9d0d9da185 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/COPYRIGHT @@ -0,0 +1,18 @@ +Copyright + +Copyright (C) 1999-2010 Joachim Buermann (jbuermann@iftools.com) + +ctb is free software; you can redistribute it and/or modify it under +the term of the GNU Library General Public Licence as published by the +Free Software Foundation. + +This library 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 +Library General Public Licence for more details + + +EXCEPTION NOTICE +As a special exception, you may use, copy, link, modify and distribute +under the user's own terms, binary object code versions of works based +on the library. diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/GNUmakefile b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/GNUmakefile new file mode 100644 index 0000000000..e39a687d4c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/GNUmakefile @@ -0,0 +1,293 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.5 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + + +# ------------------------------------------------------------------------- +# These are configurable options: +# ------------------------------------------------------------------------- + +# 'install' program location +INSTALL ?= install + +# Location where the package is installed by 'make install' +prefix ?= /usr/local + +# Destination root (/ is used if empty) +DESTDIR ?= + +# +AR ?= ar + +# +RANLIB ?= ranlib + +# Compiler flags to link shared library +LINK_DLL_FLAGS ?= -shared + +# C++ compiler +CXX = g++ + +# Standard flags for C++ +CXXFLAGS ?= + +# Standard preprocessor flags (common for CC and CXX) +CPPFLAGS ?= + +# Standard linker flags +LDFLAGS ?= + +# Set to 1 to build debug version [0,1] +DEBUG ?= 0 + +# +GPIB ?= 0 + + + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CPPDEPS = -MT$@ -MF`echo $@ | sed -e 's,\.o$$,.d,'` -MD -MP +CTB_LIB_CXXFLAGS = $(____DEBUG) $(____DEBUG_1) -D_THREAD_SAFE -pthread \ + $(__OPTIMIZE_FLAG) -I../include $(CPPFLAGS) $(CXXFLAGS) +CTB_LIB_OBJECTS = \ + $(OUTPUT)/ctb_lib_fifo.o \ + $(OUTPUT)/ctb_lib_getopt.o \ + $(OUTPUT)/ctb_lib_iobase.o \ + $(OUTPUT)/ctb_lib_portscan.o \ + $(OUTPUT)/ctb_lib_serportx.o \ + $(OUTPUT)/ctb_lib_serport.o \ + $(OUTPUT)/ctb_lib_timer.o \ + $(__GPIBSRC_OBJECTS) +CTB_DLL_CXXFLAGS = $(____DEBUG) $(____DEBUG_1) -D_THREAD_SAFE -pthread \ + $(__OPTIMIZE_FLAG) -I../include -fPIC -DPIC $(CPPFLAGS) $(CXXFLAGS) +CTB_DLL_OBJECTS = \ + $(OUTPUT)/ctb_dll_fifo.o \ + $(OUTPUT)/ctb_dll_getopt.o \ + $(OUTPUT)/ctb_dll_iobase.o \ + $(OUTPUT)/ctb_dll_portscan.o \ + $(OUTPUT)/ctb_dll_serportx.o \ + $(OUTPUT)/ctb_dll_serport.o \ + $(OUTPUT)/ctb_dll_timer.o \ + $(__GPIBSRC_OBJECTS_1) +CTBTEST_CXXFLAGS = $(____DEBUG) $(____DEBUG_1) -DGPIB=$(GPIB) -D_THREAD_SAFE \ + -pthread $(__OPTIMIZE_FLAG) -I../include $(CPPFLAGS) $(CXXFLAGS) +CTBTEST_OBJECTS = \ + $(OUTPUT)/ctbtest_ctbtest.o + +### Conditionally set variables: ### + +ifeq ($(DEBUG),0) +OUTPUT = release +endif +ifeq ($(DEBUG),1) +OUTPUT = debug +endif +ifeq ($(DEBUG),1) +LIBFLAG = d +endif +ifeq ($(GPIB),1) +GPIBFLAG = _gpib +endif +ifeq ($(GPIB),1) +GPIBINC = gpib.h +endif +ifeq ($(GPIB),1) +__GPIBSRC_OBJECTS = \ + $(OUTPUT)/ctb_lib_gpib.o +endif +ifeq ($(GPIB),1) +__GPIBSRC_OBJECTS_1 = \ + $(OUTPUT)/ctb_dll_gpib.o +endif +ifeq ($(DEBUG),0) +____DEBUG = -DNDEBUG +endif +ifeq ($(DEBUG),1) +____DEBUG = +endif +ifeq ($(DEBUG),0) +__OPTIMIZE_FLAG = -O0 +endif +ifeq ($(DEBUG),1) +__OPTIMIZE_FLAG = -O2 +endif +ifeq ($(GPIB),1) +__SYSLIB2_p = -lgpib +endif +ifeq ($(DEBUG),0) +____DEBUG_1 = +endif +ifeq ($(DEBUG),1) +____DEBUG_1 = -g +endif + + +all: $(OUTPUT) +$(OUTPUT): + @mkdir -p $(OUTPUT) + +### Targets: ### + +all: ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so $(OUTPUT)/ctbtest tip-linux + +install: install_ctb_lib install_ctb_dll + $(INSTALL) -d $(DESTDIR)$(prefix)/include/ctb-0.16 + for f in ctb.h fifo.h getopt.h $(GPIBINC) iobase.h linux/serport.h linux/timer.h portscan.h serport.h serportx.h timer.h; do \ + if test ! -d $(DESTDIR)$(prefix)/include/ctb-0.16/`dirname $$f` ; then \ + $(INSTALL) -d $(DESTDIR)$(prefix)/include/ctb-0.16/`dirname $$f`; \ + fi; \ + $(INSTALL) -m 644 ../include/ctb-0.16/$$f $(DESTDIR)$(prefix)/include/ctb-0.16/$$f; \ + done + +uninstall: uninstall_ctb_lib uninstall_ctb_dll + for f in ctb.h fifo.h getopt.h $(GPIBINC) iobase.h linux/serport.h linux/timer.h portscan.h serport.h serportx.h timer.h; do \ + rm -f $(DESTDIR)$(prefix)/include/ctb-0.16/$$f; \ + done + +clean: + rm -f $(OUTPUT)/*.o + rm -f $(OUTPUT)/*.d + rm -f ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + rm -f ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so + rm -f ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so + rm -f $(OUTPUT)/ctbtest + +htmldoc: + (cd ..; tar -cvzf manual/libctb-0.16-htmldoc.tar.gz docs/html/ ) + +tarball: + (cd ../..; tar -cvzf libctb-0.16.tar.gz \ + libctb-0.16/build/ \ + libctb-0.16/manual/refman.pdf \ + libctb-0.16/include \ + libctb-0.16/python \ + libctb-0.16/samples \ + libctb-0.16/src \ + libctb-0.16/lib/gpib32.lib \ + --exclude=release \ + --exclude=debug \ + --exclude=install \ + --exclude=output \ + --exclude=website \ + --exclude=*~ \ + --exclude=buildall.sh \ + --exclude=buildall.bat \ + --exclude=version-update.sh \ + --exclude=libctb-0.16.tar.gz \ + --exclude=*.ilk \ + --exclude=*.log \ + --exclude=*.o* \ + --exclude=*.pdb \ + --exclude=*.pyc \ + --exclude=.svn; mv libctb-0.16.tar.gz libctb-0.16/build ) + +../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a: $(CTB_LIB_OBJECTS) + rm -f $@ + $(AR) rcu $@ $(CTB_LIB_OBJECTS) + $(RANLIB) $@ + +install_ctb_lib: ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + $(INSTALL) -d $(DESTDIR)$(prefix)/lib + $(INSTALL) -m 644 ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a $(DESTDIR)$(prefix)/lib + +uninstall_ctb_lib: + rm -f $(DESTDIR)$(prefix)/lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + +../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so: $(CTB_DLL_OBJECTS) + $(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ $(CTB_DLL_OBJECTS) $(____DEBUG_1) -pthread -L../lib $(LDFLAGS) -lpthread $(__SYSLIB2_p) + +install_ctb_dll: ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so + $(INSTALL) -d $(DESTDIR)$(prefix)/lib + $(INSTALL) -m 644 ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so $(DESTDIR)$(prefix)/lib + install -c ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so $(DESTDIR)$(prefix)/lib + +uninstall_ctb_dll: + rm -f $(DESTDIR)$(prefix)/lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so + rm -f $(DESTDIR)$(prefix)/lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.so + +$(OUTPUT)/ctbtest: $(CTBTEST_OBJECTS) ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + $(CXX) -o $@ $(CTBTEST_OBJECTS) $(____DEBUG_1) -pthread -L../lib $(LDFLAGS) ../lib/libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a -lpthread $(__SYSLIB2_p) + +tip-linux: + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. On Linux you'll now" + @echo " have to run (as root):" + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) install" + @echo " " + @echo " to install the libraries in $(prefix)/lib" + @echo " and the header files in $(prefix)/include/ctb-0.16" + @echo " " + @echo " Don't forget to run ldconfig (also as root)" + @echo " " + @echo " ctb comes with no guarantees and doesn't claim" + @echo " to be suitable for any purpose." + @echo "================================================================" + @echo " " + +$(OUTPUT)/ctb_lib_fifo.o: ./../src/fifo.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_getopt.o: ./../src/getopt.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_iobase.o: ./../src/iobase.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_portscan.o: ./../src/portscan.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_serportx.o: ./../src/serportx.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_serport.o: ./../src/linux/serport.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_timer.o: ./../src/linux/timer.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_lib_gpib.o: ./../src/gpib.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_fifo.o: ./../src/fifo.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_getopt.o: ./../src/getopt.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_iobase.o: ./../src/iobase.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_portscan.o: ./../src/portscan.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_serportx.o: ./../src/serportx.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_serport.o: ./../src/linux/serport.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_timer.o: ./../src/linux/timer.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctb_dll_gpib.o: ./../src/gpib.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)/ctbtest_ctbtest.o: ./../samples/ctbtest.cpp + $(CXX) -c -o $@ $(CTBTEST_CXXFLAGS) $(CPPDEPS) $< + +.PHONY: all install uninstall clean install_ctb_lib uninstall_ctb_lib \ + install_ctb_dll uninstall_ctb_dll + + +# Dependencies tracking: +-include $(OUTPUT)/*.d diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/README b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/README new file mode 100644 index 0000000000..fdcdb1d37b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/README @@ -0,0 +1,169 @@ + +CTB (Communication toolbox library) 08.02.2010 +====================================================================== + +Website: http://www.iftools.com/opensource/ctb.en.php +Version: 0.16 + + +Linux GCC compiliation +---------------------------------------------------------------- + +Type 'make DEBUG=x GPIB=x' or 'make -f GNUmakefile DEBUG=x GPIB=x' + +Type the same command with an additional install as root to copy the +headers and libs to there according system places +(i.e. /usr/local/include/ctb-0.16 and /usr/local/lib/libctb-0.16.a) +like: + +sudo make DEBUG=x GPIB=x install + + +Microsoft MingW32 compilation +---------------------------------------------------------------- + +Type mingw32-make -f makefile.gcc DEBUG=x GPIB=x + +Please note! Currently only a shared ctb library will be created. +You have to copy the ctb-VERSION.dll in the application path of +your application linked with ctb or in a global dll folder (but +not recommented!) + + +Microsoft Visual C++ compilation +---------------------------------------------------------------- + +Type 'nmake -f makefile.vc DEBUG=x GPIB=x' + +To create all libs (debug/release with and without gpib support) +just input: ./buildall.bat in the build folder. + + +Borland C++ 5.0/5.5 compilation +---------------------------------------------------------------- + +Type 'make -f makefile.bcc DEBUG=x GPIB=x' + + +Watcom C++ 10.6/11 and OpenWatcom compilation +---------------------------------------------------------------- + +Type 'wmake -f makefile.wat' + + +Python support +-------------- + +Since version 0.9 ctb also includes a python module ctb.py. +To build the python module by yourself, your system has to satisfy +the following requirements: + +- the SWIG program, you get it at http://www.swig.org/ (for linux, + take a look in your favorite distribution package manager). + The current ctb module was build with SWIG version 1.3.29 (linux) + and version 1.3.40 (Windows) +- the develop files for python (means the header and the library + files). I tested it with Python 2.4. You will get it at: + http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi +- if you want to communicate via GPIB, a GPIB installation (GPIB + controller and software, for instance a Nation Instruments or + Keithley card). On Linux the libgpib. + +Like the building of the wxctb C++ library, you also can choose +between GPIB and non GPIB (default) support. + +Compile the python module + +Linux +cd in the python/src/linux folder and type: +./makepy.sh USE_GPIB +or +./makepy.sh +if you don't need any GPIB support + +Windows +cd in the python/src/windows folder. Open the makepy.bat with your +favorite editor and set the commented enviroment variables. See the +makepy.bat file for more information, how you can do that. +After that, just type: + +./makepy.sh USE_GPIB +(for GPIB support) or +./makepy.sh +if you don't need any GPIB support + +At last set the python modul path to the ctb-0.15/python/module +path. +On linux: + +export PYTHONPATH=somepath/ctb-0.15/python/module/linux + +On Windows: + +set PYTHONPATH=drive:\somepath\ctb-0.15\python\module\win32 + + +ChangeLog +--------- + +0.16 + - added port scan function. + - bug fixes for MingW build. + +0.15 + - added ctb namespace and removed all wx prefix (also in the header + path). + - Linux: A serial port cannot opened twice or more any longer. + - 9 bit data transmission support using the parity bit as ninth bit. + - improved documentation + - Some more documentation + +0.14 + - Support for non-standard baudrates (depends on the used UART + or USB to RS232 converter. + +0.13 + - remove the expect and match mechanism. They didn't work very + well, and a future implementation should be done as a + independent library. If someone missed this functions, please + let me know. + +0.12 + - more documentation for doxygen + - replace the ugly GetSettingsAsString methods by a more intuitive + one. + - wxGPIB::Read now checks the MAV bit before reading. This resolves + some stderr stuff on linux. + +0.11 + - the gpib sources are no longer depending on the OS. They are + identical for linux and windows. + - add the current version to the ctb include path, so you can + handle a parallel installation of different versions. + For instance: The header path wx/ctb is replaced by wx/ctb-0.11 + +0.10 + - replace the former gpib async io access with the standard + NI-488 functions (ibrd,ibwrt). To avoid blocking, the internal + gpib timeout was set to the lowest value, whereas the wxIOBase + methods handles the timeout in a global and transparent manner. + - add a FindListener method in the wxGPIB class to look for all + connected gpib devices (listeners). + - The Read and Readv method of the python wxIOBase class returns + additional zero bytes, fixed. + +0.9 + - added python support for both, serial and gpib + +0.8 + - added bakefile support + +0.7 + - added GPIB (Nation Instruments GPIB cards) support + + +Authors' info +------------- + +Joachim Buermann jbuermann@iftools.com + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/libctb.bkl b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/libctb.bkl new file mode 100644 index 0000000000..eb5670bd4a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/libctb.bkl @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + 0.16 + libctb + + + + % + + + + + + + + + + debug + release + + $(OUTPUT) + + + ..$(DIRSEP)lib + + + + + d + + + + pthread + winmm + + + + gpib + gpib32 + + + + linux + win32 + + + + _gpib + + + + + ../src/gpib.cpp + + + + + + gpib.h + + + + + off + speed + + + + ../src/fifo.cpp + ../src/getopt.cpp + ../src/iobase.cpp + ../src/portscan.cpp + ../src/serportx.cpp + ../src/$(OS)/serport.cpp + ../src/$(OS)/timer.cpp + + + + + (cd ..; tar -cvzf manual/$(value) docs/html/ ) + + + + + + $(NAME)-$(VERSION)-htmldoc.tar.gz + + + + + + (cd ../..; tar -cvzf $(value) \ + $(NAME)-$(VERSION)/build/ \ + $(NAME)-$(VERSION)/manual/refman.pdf \ + $(NAME)-$(VERSION)/include \ + $(NAME)-$(VERSION)/python \ + $(NAME)-$(VERSION)/samples \ + $(NAME)-$(VERSION)/src \ + $(NAME)-$(VERSION)/lib/gpib32.lib \ + --exclude=release \ + --exclude=debug \ + --exclude=install \ + --exclude=output \ + --exclude=website \ + --exclude=*~ \ + --exclude=buildall.sh \ + --exclude=buildall.bat \ + --exclude=g++.sh \ + --exclude=version-update.sh \ + --exclude=$(value) \ + --exclude=*.ilk \ + --exclude=*.log \ + --exclude=*.o* \ + --exclude=*.pdb \ + --exclude=*.pyc \ + --exclude=.svn; mv $(value) $(NAME)-$(VERSION)/build ) + + + + + + $(NAME)-$(VERSION).tar.gz + + + + + + ..$(DIRSEP)include$(DIRSEP)ctb-$(VERSION) + + ctb.h + fifo.h + getopt.h + $(GPIBINC) + iobase.h + linux/serport.h + linux/timer.h + portscan.h + serport.h + serportx.h + timer.h + + $(INCLUDEDIR)$(DIRSEP)ctb-$(VERSION) + + + + ../lib + ctb$(LIBFLAG)$(GPIBFLAG)-$(VERSION) + + multi + static + $(OPTIMIZE_FLAG) + + $(FILES) + $(GPIBSRC) + + ../lib + $(SYSLIB1) + $(SYSLIB2) + ../include + $(LIBDIR) + + + ../lib + multi + ctb$(LIBFLAG)$(GPIBFLAG)-$(VERSION) + static + $(OPTIMIZE_FLAG) + ctb$(LIBFLAG)$(GPIBFLAG)-$(VERSION) + + $(FILES) + $(GPIBSRC) + + ../lib + $(SYSLIB1) + $(SYSLIB2) + ../include + $(LIBDIR) + + + + + + GPIB=$(GPIB) + multi + static + $(OPTIMIZE_FLAG) + + ../samples/ctbtest.cpp + + ../include + ../lib + ctb_lib + $(SYSLIB1) + $(SYSLIB2) + + + + vc + $(FORMAT) + + + + + + @if not exist $(INSTALLDIR)\lib\$(LIBNAME)_lib mkdir $(INSTALLDIR)\lib\$(LIBNAME)_lib + + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-$(VERSION).lib $(INSTALLDIR)\lib\$(LIBNAME)_lib + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-$(VERSION).dll $(INSTALLDIR)\lib\$(LIBNAME)_lib + + @if not exist $(INSTALLDIR)\include\ctb-$(VERSION)\win32 mkdir $(INSTALLDIR)\include\ctb-$(VERSION)\win32 + @copy ..\include\ctb-$(VERSION)\*.h $(INSTALLDIR)\include\ctb-$(VERSION) + @copy ..\include\ctb-$(VERSION)\win32\*.h $(INSTALLDIR)\include\ctb-$(VERSION)\win32 + + + + + all + + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. On Linux you'll now" + @echo " have to run (as root):" + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) install" + @echo " " + @echo " to install the libraries in $(LIBDIR)" + @echo " and the header files in $(INCLUDEDIR)/ctb-$(VERSION)" + @echo " " + @echo " Don't forget to run ldconfig (also as root)" + @echo " " + @echo " ctb comes with no guarantees and doesn't claim" + @echo " to be suitable for any purpose." + @echo "================================================================" + @echo " " + + + + + all + + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. If you have an installed " + @echo " wxWidget package (WXWIN must be defined in the enviroment), " + @echo " you'll now have to run: " + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) wxinstall " + @echo " " + @echo " to install the libraries in: " + @echo " $(INSTALLDIR)$(DIRSEP)lib$(DIRSEP)$(LIBNAME)_lib " + @echo " and the header files in" + @echo " $(INSTALLDIR)$(DIRSEP)ctb-$(VERSION)" + @echo " " + @echo " If you are using another compiler (Borland, Watcom, mingw,...) " + @echo " take a look in the README in this directory! " + @echo " " + @echo " ctb comes with no guarantees and doesn't claim " + @echo " to be suitable for any purpose. " + @echo "================================================================" + @echo " " + + + + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.bcc b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.bcc new file mode 100644 index 0000000000..6afadafb3f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.bcc @@ -0,0 +1,269 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.5 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +.autodepend + +!ifndef BCCDIR +!ifndef MAKEDIR +!error Your Borland compiler does not define MAKEDIR. Please define the BCCDIR variable, e.g. BCCDIR=d:\bc4 +!endif +BCCDIR = $(MAKEDIR)\.. +!endif + + + +# ------------------------------------------------------------------------- +# These are configurable options: +# ------------------------------------------------------------------------- + +# C++ compiler +!ifndef CXX +CXX = bcc32 +!endif + +# Standard flags for C++ +!ifndef CXXFLAGS +CXXFLAGS = +!endif + +# Standard preprocessor flags (common for CC and CXX) +!ifndef CPPFLAGS +CPPFLAGS = -a8 -g0 +!endif + +# Standard linker flags +!ifndef LDFLAGS +LDFLAGS = +!endif + +# Set to 1 to build debug version [0,1] +!ifndef DEBUG +DEBUG = 0 +!endif + +# +!ifndef GPIB +GPIB = 0 +!endif + +# +!ifndef WXDIR +WXDIR = $(WXWIN) +!endif + +# +!ifndef INSTALLDIR +INSTALLDIR = $(WXWIN) +!endif + + + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CTB_LIB_CXXFLAGS = -I$(BCCDIR)\include $(____DEBUG) $(____DEBUG_2) -tWM \ + $(__OPTIMIZE_FLAG) -I..\include $(CPPFLAGS) $(CXXFLAGS) +CTB_LIB_OBJECTS = \ + $(OUTPUT)\ctb_lib_fifo.obj \ + $(OUTPUT)\ctb_lib_getopt.obj \ + $(OUTPUT)\ctb_lib_iobase.obj \ + $(OUTPUT)\ctb_lib_portscan.obj \ + $(OUTPUT)\ctb_lib_serportx.obj \ + $(OUTPUT)\ctb_lib_serport.obj \ + $(OUTPUT)\ctb_lib_timer.obj \ + $(____GPIBSRC_FILENAMES_OBJECTS) +CTB_DLL_CXXFLAGS = -I$(BCCDIR)\include $(____DEBUG) $(____DEBUG_2) -tWM \ + $(__OPTIMIZE_FLAG) -I..\include $(CPPFLAGS) $(CXXFLAGS) +CTB_DLL_OBJECTS = \ + $(OUTPUT)\ctb_dll_fifo.obj \ + $(OUTPUT)\ctb_dll_getopt.obj \ + $(OUTPUT)\ctb_dll_iobase.obj \ + $(OUTPUT)\ctb_dll_portscan.obj \ + $(OUTPUT)\ctb_dll_serportx.obj \ + $(OUTPUT)\ctb_dll_serport.obj \ + $(OUTPUT)\ctb_dll_timer.obj \ + $(____GPIBSRC_FILENAMES_1_OBJECTS) +CTBTEST_CXXFLAGS = -I$(BCCDIR)\include $(____DEBUG) $(____DEBUG_2) \ + -DGPIB=$(GPIB) -tWM $(__OPTIMIZE_FLAG) -I..\include $(CPPFLAGS) $(CXXFLAGS) +CTBTEST_OBJECTS = \ + $(OUTPUT)\ctbtest_ctbtest.obj + +### Conditionally set variables: ### + +!if "$(DEBUG)" == "0" +OUTPUT = release +!endif +!if "$(DEBUG)" == "1" +OUTPUT = debug +!endif +!if "$(WXDIR)" == "" +INSTALLDIR = ..\lib +!endif +!if "$(DEBUG)" == "1" +LIBFLAG = d +!endif +!if "$(GPIB)" == "1" +GPIBFLAG = _gpib +!endif +!if "$(GPIB)" == "1" +____GPIBSRC_FILENAMES_OBJECTS = \ + $(OUTPUT)\ctb_lib_gpib.obj +!endif +!if "$(GPIB)" == "1" +____GPIBSRC_FILENAMES_1_OBJECTS = \ + $(OUTPUT)\ctb_dll_gpib.obj +!endif +!if "$(DEBUG)" == "0" +____DEBUG = -DNDEBUG +!endif +!if "$(DEBUG)" == "1" +____DEBUG = +!endif +!if "$(DEBUG)" == "0" +__OPTIMIZE_FLAG = -Od +!endif +!if "$(DEBUG)" == "1" +__OPTIMIZE_FLAG = -O2 +!endif +!if "$(GPIB)" == "1" +__SYSLIB2_p = gpib32.lib +!endif +!if "$(DEBUG)" == "0" +____DEBUG_2 = -v- +!endif +!if "$(DEBUG)" == "1" +____DEBUG_2 = -v +!endif + + +all: $(OUTPUT) +$(OUTPUT): + -if not exist $(OUTPUT) mkdir $(OUTPUT) + +### Targets: ### + +all: ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(OUTPUT)\ctbtest.exe tip-win32 + +clean: + -if exist $(OUTPUT)\*.obj del $(OUTPUT)\*.obj + -if exist $(OUTPUT)\*.res del $(OUTPUT)\*.res + -if exist $(OUTPUT)\*.csm del $(OUTPUT)\*.csm + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.tds del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.tds + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ilc del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ilc + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ild del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ild + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ilf del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ilf + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ils del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ils + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + -if exist $(OUTPUT)\ctbtest.exe del $(OUTPUT)\ctbtest.exe + -if exist $(OUTPUT)\ctbtest.tds del $(OUTPUT)\ctbtest.tds + -if exist $(OUTPUT)\ctbtest.ilc del $(OUTPUT)\ctbtest.ilc + -if exist $(OUTPUT)\ctbtest.ild del $(OUTPUT)\ctbtest.ild + -if exist $(OUTPUT)\ctbtest.ilf del $(OUTPUT)\ctbtest.ilf + -if exist $(OUTPUT)\ctbtest.ils del $(OUTPUT)\ctbtest.ils + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib: $(CTB_LIB_OBJECTS) + if exist $@ del $@ + tlib /a /p4096 $@ @&&| + $(CTB_LIB_OBJECTS) +| + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll: $(CTB_DLL_OBJECTS) + ilink32 -Tpd -q -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(____DEBUG_2) -L..\lib $(LDFLAGS) @&&| + c0d32.obj $(CTB_DLL_OBJECTS),$@,, winmm.lib $(__SYSLIB2_p) import32.lib cw32mt.lib,, +| + implib -f ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16 $@ + +$(OUTPUT)\ctbtest.exe: $(CTBTEST_OBJECTS) ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + ilink32 -Tpe -q -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(____DEBUG_2) -L..\lib $(LDFLAGS) @&&| + c0x32.obj $(CTBTEST_OBJECTS),$@,, ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib winmm.lib $(__SYSLIB2_p) import32.lib cw32mt.lib,, +| + +wxinstall: + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib $(INSTALLDIR)\lib\borland_lib + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(INSTALLDIR)\lib\borland_lib + + @if not exist $(INSTALLDIR)\include\ctb-0.16\win32 mkdir $(INSTALLDIR)\include\ctb-0.16\win32 + @copy ..\include\ctb-0.16\*.h $(INSTALLDIR)\include\ctb-0.16 + @copy ..\include\ctb-0.16\win32\*.h $(INSTALLDIR)\include\ctb-0.16\win32 + +tip-win32: + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. If you have an installed " + @echo " wxWidget package (WXWIN must be defined in the enviroment), " + @echo " you'll now have to run: " + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) wxinstall " + @echo " " + @echo " to install the libraries in: " + @echo " $(INSTALLDIR)\lib\borland_lib " + @echo " and the header files in" + @echo " $(INSTALLDIR)\ctb-0.16" + @echo " " + @echo " If you are using another compiler (Borland, Watcom, mingw,...) " + @echo " take a look in the README in this directory! " + @echo " " + @echo " ctb comes with no guarantees and doesn't claim " + @echo " to be suitable for any purpose. " + @echo "================================================================" + @echo " " + +$(OUTPUT)\ctb_lib_fifo.obj: .\..\src\fifo.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\fifo.cpp + +$(OUTPUT)\ctb_lib_getopt.obj: .\..\src\getopt.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\getopt.cpp + +$(OUTPUT)\ctb_lib_iobase.obj: .\..\src\iobase.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\iobase.cpp + +$(OUTPUT)\ctb_lib_portscan.obj: .\..\src\portscan.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\portscan.cpp + +$(OUTPUT)\ctb_lib_serportx.obj: .\..\src\serportx.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\serportx.cpp + +$(OUTPUT)\ctb_lib_serport.obj: .\..\src\win32\serport.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\win32\serport.cpp + +$(OUTPUT)\ctb_lib_timer.obj: .\..\src\win32\timer.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\win32\timer.cpp + +$(OUTPUT)\ctb_lib_gpib.obj: .\..\src\gpib.cpp + $(CXX) -q -c -P -o$@ $(CTB_LIB_CXXFLAGS) .\..\src\gpib.cpp + +$(OUTPUT)\ctb_dll_fifo.obj: .\..\src\fifo.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\fifo.cpp + +$(OUTPUT)\ctb_dll_getopt.obj: .\..\src\getopt.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\getopt.cpp + +$(OUTPUT)\ctb_dll_iobase.obj: .\..\src\iobase.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\iobase.cpp + +$(OUTPUT)\ctb_dll_portscan.obj: .\..\src\portscan.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\portscan.cpp + +$(OUTPUT)\ctb_dll_serportx.obj: .\..\src\serportx.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\serportx.cpp + +$(OUTPUT)\ctb_dll_serport.obj: .\..\src\win32\serport.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\win32\serport.cpp + +$(OUTPUT)\ctb_dll_timer.obj: .\..\src\win32\timer.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\win32\timer.cpp + +$(OUTPUT)\ctb_dll_gpib.obj: .\..\src\gpib.cpp + $(CXX) -q -c -P -o$@ $(CTB_DLL_CXXFLAGS) .\..\src\gpib.cpp + +$(OUTPUT)\ctbtest_ctbtest.obj: .\..\samples\ctbtest.cpp + $(CXX) -q -c -P -o$@ $(CTBTEST_CXXFLAGS) .\..\samples\ctbtest.cpp + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.gcc b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.gcc new file mode 100644 index 0000000000..febca07dc8 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.gcc @@ -0,0 +1,238 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.5 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + + +# ------------------------------------------------------------------------- +# These are configurable options: +# ------------------------------------------------------------------------- + +# Compiler flags to link shared library +LINK_DLL_FLAGS ?= -shared + +# C++ compiler +CXX = g++ + +# Standard flags for C++ +CXXFLAGS ?= + +# Standard preprocessor flags (common for CC and CXX) +CPPFLAGS ?= + +# Standard linker flags +LDFLAGS ?= + +# Set to 1 to build debug version [0,1] +DEBUG ?= 0 + +# +GPIB ?= 0 + +# +WXDIR ?= $(WXWIN) + +# +INSTALLDIR ?= $(WXWIN) + + + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CPPDEPS = -MT$@ -MF$@.d -MD -MP +CTB_LIB_CXXFLAGS = $(____DEBUG) $(____DEBUG_1) -mthreads $(__OPTIMIZE_FLAG) \ + -I..\include $(CPPFLAGS) $(CXXFLAGS) +CTB_LIB_OBJECTS = \ + $(OUTPUT)\ctb_lib_fifo.o \ + $(OUTPUT)\ctb_lib_getopt.o \ + $(OUTPUT)\ctb_lib_iobase.o \ + $(OUTPUT)\ctb_lib_portscan.o \ + $(OUTPUT)\ctb_lib_serportx.o \ + $(OUTPUT)\ctb_lib_serport.o \ + $(OUTPUT)\ctb_lib_timer.o \ + $(____GPIBSRC_FILENAMES_OBJECTS) +CTB_DLL_CXXFLAGS = $(____DEBUG) $(____DEBUG_1) -mthreads $(__OPTIMIZE_FLAG) \ + -I..\include $(CPPFLAGS) $(CXXFLAGS) +CTB_DLL_OBJECTS = \ + $(OUTPUT)\ctb_dll_fifo.o \ + $(OUTPUT)\ctb_dll_getopt.o \ + $(OUTPUT)\ctb_dll_iobase.o \ + $(OUTPUT)\ctb_dll_portscan.o \ + $(OUTPUT)\ctb_dll_serportx.o \ + $(OUTPUT)\ctb_dll_serport.o \ + $(OUTPUT)\ctb_dll_timer.o \ + $(____GPIBSRC_FILENAMES_1_OBJECTS) +CTBTEST_CXXFLAGS = $(____DEBUG) $(____DEBUG_1) -DGPIB=$(GPIB) -mthreads \ + $(__OPTIMIZE_FLAG) -I..\include $(CPPFLAGS) $(CXXFLAGS) +CTBTEST_OBJECTS = \ + $(OUTPUT)\ctbtest_ctbtest.o + +### Conditionally set variables: ### + +ifeq ($(DEBUG),0) +OUTPUT = release +endif +ifeq ($(DEBUG),1) +OUTPUT = debug +endif +ifeq ($(WXDIR),) +INSTALLDIR = ..\lib +endif +ifeq ($(DEBUG),1) +LIBFLAG = d +endif +ifeq ($(GPIB),1) +GPIBFLAG = _gpib +endif +ifeq ($(GPIB),1) +____GPIBSRC_FILENAMES_OBJECTS = \ + $(OUTPUT)\ctb_lib_gpib.o +endif +ifeq ($(GPIB),1) +____GPIBSRC_FILENAMES_1_OBJECTS = \ + $(OUTPUT)\ctb_dll_gpib.o +endif +ifeq ($(DEBUG),0) +____DEBUG = -DNDEBUG +endif +ifeq ($(DEBUG),1) +____DEBUG = +endif +ifeq ($(DEBUG),0) +__OPTIMIZE_FLAG = -O0 +endif +ifeq ($(DEBUG),1) +__OPTIMIZE_FLAG = -O2 +endif +ifeq ($(GPIB),1) +__SYSLIB2_p = -lgpib32 +endif +ifeq ($(DEBUG),0) +____DEBUG_1 = +endif +ifeq ($(DEBUG),1) +____DEBUG_1 = -g +endif + + +all: $(OUTPUT) +$(OUTPUT): + -if not exist $(OUTPUT) mkdir $(OUTPUT) + +### Targets: ### + +all: ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(OUTPUT)\ctbtest.exe tip-win32 + +clean: + -if exist $(OUTPUT)\*.o del $(OUTPUT)\*.o + -if exist $(OUTPUT)\*.d del $(OUTPUT)\*.d + -if exist ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a del ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll + -if exist ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a del ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + -if exist $(OUTPUT)\ctbtest.exe del $(OUTPUT)\ctbtest.exe + +..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a: $(CTB_LIB_OBJECTS) + if exist $@ del $@ + ar rcu $@ $(CTB_LIB_OBJECTS) + ranlib $@ + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll: $(CTB_DLL_OBJECTS) + $(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ $(CTB_DLL_OBJECTS) $(____DEBUG_1) -mthreads -Wl,--out-implib=..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a -L..\lib $(LDFLAGS) -lwinmm $(__SYSLIB2_p) + +$(OUTPUT)\ctbtest.exe: $(CTBTEST_OBJECTS) ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a + $(CXX) -o $@ $(CTBTEST_OBJECTS) $(____DEBUG_1) -mthreads -L..\lib $(LDFLAGS) ..\lib\libctb$(LIBFLAG)$(GPIBFLAG)-0.16.a -lwinmm $(__SYSLIB2_p) + +wxinstall: + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib $(INSTALLDIR)\lib\mingw_lib + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(INSTALLDIR)\lib\mingw_lib + + @if not exist $(INSTALLDIR)\include\ctb-0.16\win32 mkdir $(INSTALLDIR)\include\ctb-0.16\win32 + @copy ..\include\ctb-0.16\*.h $(INSTALLDIR)\include\ctb-0.16 + @copy ..\include\ctb-0.16\win32\*.h $(INSTALLDIR)\include\ctb-0.16\win32 + +tip-win32: + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. If you have an installed " + @echo " wxWidget package (WXWIN must be defined in the enviroment), " + @echo " you'll now have to run: " + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) wxinstall " + @echo " " + @echo " to install the libraries in: " + @echo " $(INSTALLDIR)\lib\mingw_lib " + @echo " and the header files in" + @echo " $(INSTALLDIR)\ctb-0.16" + @echo " " + @echo " If you are using another compiler (Borland, Watcom, mingw,...) " + @echo " take a look in the README in this directory! " + @echo " " + @echo " ctb comes with no guarantees and doesn't claim " + @echo " to be suitable for any purpose. " + @echo "================================================================" + @echo " " + +$(OUTPUT)\ctb_lib_fifo.o: ./../src/fifo.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_getopt.o: ./../src/getopt.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_iobase.o: ./../src/iobase.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_portscan.o: ./../src/portscan.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_serportx.o: ./../src/serportx.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_serport.o: ./../src/win32/serport.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_timer.o: ./../src/win32/timer.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_lib_gpib.o: ./../src/gpib.cpp + $(CXX) -c -o $@ $(CTB_LIB_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_fifo.o: ./../src/fifo.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_getopt.o: ./../src/getopt.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_iobase.o: ./../src/iobase.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_portscan.o: ./../src/portscan.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_serportx.o: ./../src/serportx.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_serport.o: ./../src/win32/serport.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_timer.o: ./../src/win32/timer.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctb_dll_gpib.o: ./../src/gpib.cpp + $(CXX) -c -o $@ $(CTB_DLL_CXXFLAGS) $(CPPDEPS) $< + +$(OUTPUT)\ctbtest_ctbtest.o: ./../samples/ctbtest.cpp + $(CXX) -c -o $@ $(CTBTEST_CXXFLAGS) $(CPPDEPS) $< + +.PHONY: all clean + + +SHELL := $(COMSPEC) + +# Dependencies tracking: +-include $(OUTPUT)/*.d diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc new file mode 100644 index 0000000000..62e7b56371 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc @@ -0,0 +1,260 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.5 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + + +# ------------------------------------------------------------------------- +# These are configurable options: +# ------------------------------------------------------------------------- + +# C++ compiler +CXX = cl + +# Standard flags for C++ +CXXFLAGS = + +# Standard preprocessor flags (common for CC and CXX) +CPPFLAGS = + +# Standard linker flags +LDFLAGS = + +# Set to 1 to build debug version [0,1] +# 0 - Release +# 1 - Debug +DEBUG = 0 + +# +GPIB = 0 + +# +WXDIR = $(WXWIN) + +# +INSTALLDIR = $(WXWIN) + + + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CTB_LIB_CXXFLAGS = /MT$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ + $(______DEBUG) /Fd..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb \ + $(__OPTIMIZE_FLAG) /I..\include /GR /EHsc $(CPPFLAGS) $(CXXFLAGS) +CTB_LIB_OBJECTS = \ + $(OUTPUT)\ctb_lib_fifo.obj \ + $(OUTPUT)\ctb_lib_getopt.obj \ + $(OUTPUT)\ctb_lib_iobase.obj \ + $(OUTPUT)\ctb_lib_portscan.obj \ + $(OUTPUT)\ctb_lib_serportx.obj \ + $(OUTPUT)\ctb_lib_serport.obj \ + $(OUTPUT)\ctb_lib_timer.obj \ + $(____GPIBSRC_FILENAMES_OBJECTS) +CTB_DLL_CXXFLAGS = /MT$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ + $(______DEBUG) /Fd..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb \ + $(__OPTIMIZE_FLAG) /I..\include /GR /EHsc $(CPPFLAGS) $(CXXFLAGS) +CTB_DLL_OBJECTS = \ + $(OUTPUT)\ctb_dll_fifo.obj \ + $(OUTPUT)\ctb_dll_getopt.obj \ + $(OUTPUT)\ctb_dll_iobase.obj \ + $(OUTPUT)\ctb_dll_portscan.obj \ + $(OUTPUT)\ctb_dll_serportx.obj \ + $(OUTPUT)\ctb_dll_serport.obj \ + $(OUTPUT)\ctb_dll_timer.obj \ + $(____GPIBSRC_FILENAMES_1_OBJECTS) +CTBTEST_CXXFLAGS = /MT$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ + $(______DEBUG) /Fd$(OUTPUT)\ctbtest.pdb /DGPIB=$(GPIB) $(__OPTIMIZE_FLAG) \ + /I..\include /GR /EHsc $(CPPFLAGS) $(CXXFLAGS) +CTBTEST_OBJECTS = \ + $(OUTPUT)\ctbtest_ctbtest.obj + +### Conditionally set variables: ### + +!if "$(DEBUG)" == "0" +OUTPUT = release +!endif +!if "$(DEBUG)" == "1" +OUTPUT = debug +!endif +!if "$(WXDIR)" == "" +INSTALLDIR = ..\lib +!endif +!if "$(DEBUG)" == "1" +LIBFLAG = d +!endif +!if "$(GPIB)" == "1" +GPIBFLAG = _gpib +!endif +!if "$(GPIB)" == "1" +____GPIBSRC_FILENAMES_OBJECTS = \ + $(OUTPUT)\ctb_lib_gpib.obj +!endif +!if "$(GPIB)" == "1" +____GPIBSRC_FILENAMES_1_OBJECTS = \ + $(OUTPUT)\ctb_dll_gpib.obj +!endif +!if "$(DEBUG)" == "0" +____DEBUG = /DNDEBUG +!endif +!if "$(DEBUG)" == "1" +____DEBUG = +!endif +!if "$(DEBUG)" == "0" +____DEBUG_2 = +!endif +!if "$(DEBUG)" == "1" +____DEBUG_2 = /Zi +!endif +!if "$(DEBUG)" == "0" +____DEBUG_3 = +!endif +!if "$(DEBUG)" == "1" +____DEBUG_3 = /DEBUG +!endif +!if "$(DEBUG)" == "0" +______DEBUG = +!endif +!if "$(DEBUG)" == "1" +______DEBUG = /D_DEBUG +!endif +!if "$(DEBUG)" == "0" +____DEBUG_4 = +!endif +!if "$(DEBUG)" == "1" +____DEBUG_4 = d +!endif +!if "$(DEBUG)" == "0" +__OPTIMIZE_FLAG = /Od +!endif +!if "$(DEBUG)" == "1" +__OPTIMIZE_FLAG = /O2 +!endif +!if "$(GPIB)" == "1" +__SYSLIB2_p = gpib32.lib +!endif + + +all: $(OUTPUT) +$(OUTPUT): + -if not exist $(OUTPUT) mkdir $(OUTPUT) + +### Targets: ### + +all: ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(OUTPUT)\ctbtest.exe tip-win32 + +clean: + -if exist $(OUTPUT)\*.obj del $(OUTPUT)\*.obj + -if exist $(OUTPUT)\*.res del $(OUTPUT)\*.res + -if exist $(OUTPUT)\*.pch del $(OUTPUT)\*.pch + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ilk del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.ilk + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + -if exist $(OUTPUT)\ctbtest.exe del $(OUTPUT)\ctbtest.exe + -if exist $(OUTPUT)\ctbtest.ilk del $(OUTPUT)\ctbtest.ilk + -if exist $(OUTPUT)\ctbtest.pdb del $(OUTPUT)\ctbtest.pdb + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib: $(CTB_LIB_OBJECTS) + if exist $@ del $@ + link /LIB /NOLOGO /OUT:$@ @<< + $(CTB_LIB_OBJECTS) +<< + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll: $(CTB_DLL_OBJECTS) + link /DLL /NOLOGO /OUT:$@ $(____DEBUG_3) /pdb:"..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb" /LIBPATH:..\lib $(LDFLAGS) @<< + $(CTB_DLL_OBJECTS) winmm.lib $(__SYSLIB2_p) /IMPLIB:..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib +<< + +$(OUTPUT)\ctbtest.exe: $(CTBTEST_OBJECTS) ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + link /NOLOGO /OUT:$@ $(____DEBUG_3) /pdb:"$(OUTPUT)\ctbtest.pdb" /LIBPATH:..\lib $(LDFLAGS) @<< + $(CTBTEST_OBJECTS) ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib winmm.lib $(__SYSLIB2_p) +<< + +wxinstall: + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib $(INSTALLDIR)\lib\vc_lib + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(INSTALLDIR)\lib\vc_lib + + @if not exist $(INSTALLDIR)\include\ctb-0.16\win32 mkdir $(INSTALLDIR)\include\ctb-0.16\win32 + @copy ..\include\ctb-0.16\*.h $(INSTALLDIR)\include\ctb-0.16 + @copy ..\include\ctb-0.16\win32\*.h $(INSTALLDIR)\include\ctb-0.16\win32 + +tip-win32: + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. If you have an installed " + @echo " wxWidget package (WXWIN must be defined in the enviroment), " + @echo " you'll now have to run: " + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) wxinstall " + @echo " " + @echo " to install the libraries in: " + @echo " $(INSTALLDIR)\lib\vc_lib " + @echo " and the header files in" + @echo " $(INSTALLDIR)\ctb-0.16" + @echo " " + @echo " If you are using another compiler (Borland, Watcom, mingw,...) " + @echo " take a look in the README in this directory! " + @echo " " + @echo " ctb comes with no guarantees and doesn't claim " + @echo " to be suitable for any purpose. " + @echo "================================================================" + @echo " " + +$(OUTPUT)\ctb_lib_fifo.obj: .\..\src\fifo.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\fifo.cpp + +$(OUTPUT)\ctb_lib_getopt.obj: .\..\src\getopt.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\getopt.cpp + +$(OUTPUT)\ctb_lib_iobase.obj: .\..\src\iobase.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\iobase.cpp + +$(OUTPUT)\ctb_lib_portscan.obj: .\..\src\portscan.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\portscan.cpp + +$(OUTPUT)\ctb_lib_serportx.obj: .\..\src\serportx.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\serportx.cpp + +$(OUTPUT)\ctb_lib_serport.obj: .\..\src\win32\serport.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\win32\serport.cpp + +$(OUTPUT)\ctb_lib_timer.obj: .\..\src\win32\timer.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\win32\timer.cpp + +$(OUTPUT)\ctb_lib_gpib.obj: .\..\src\gpib.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_LIB_CXXFLAGS) .\..\src\gpib.cpp + +$(OUTPUT)\ctb_dll_fifo.obj: .\..\src\fifo.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\fifo.cpp + +$(OUTPUT)\ctb_dll_getopt.obj: .\..\src\getopt.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\getopt.cpp + +$(OUTPUT)\ctb_dll_iobase.obj: .\..\src\iobase.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\iobase.cpp + +$(OUTPUT)\ctb_dll_portscan.obj: .\..\src\portscan.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\portscan.cpp + +$(OUTPUT)\ctb_dll_serportx.obj: .\..\src\serportx.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\serportx.cpp + +$(OUTPUT)\ctb_dll_serport.obj: .\..\src\win32\serport.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\win32\serport.cpp + +$(OUTPUT)\ctb_dll_timer.obj: .\..\src\win32\timer.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\win32\timer.cpp + +$(OUTPUT)\ctb_dll_gpib.obj: .\..\src\gpib.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTB_DLL_CXXFLAGS) .\..\src\gpib.cpp + +$(OUTPUT)\ctbtest_ctbtest.obj: .\..\samples\ctbtest.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CTBTEST_CXXFLAGS) .\..\samples\ctbtest.cpp + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.wat b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.wat new file mode 100644 index 0000000000..5041ddac36 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.wat @@ -0,0 +1,283 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.5 (http://www.bakefile.org) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + + +# ------------------------------------------------------------------------- +# These are configurable options: +# ------------------------------------------------------------------------- + +# C++ compiler +CXX = wpp386 + +# Standard flags for C++ +CXXFLAGS = + +# Standard preprocessor flags (common for CC and CXX) +CPPFLAGS = + +# Standard linker flags +LDFLAGS = + +# Set to 1 to build debug version [0,1] +# 0 - Release +# 1 - Debug +DEBUG = 0 + +# +GPIB = 0 + +# +WXDIR = $(%WXWIN) + +# +INSTALLDIR = $(%WXWIN) + + + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +# Speed up compilation a bit: +!ifdef __LOADDLL__ +! loaddll wcc wccd +! loaddll wccaxp wccdaxp +! loaddll wcc386 wccd386 +! loaddll wpp wppdi86 +! loaddll wppaxp wppdaxp +! loaddll wpp386 wppd386 +! loaddll wlink wlink +! loaddll wlib wlibd +!endif + +# We need these variables in some bakefile-made rules: +WATCOM_CWD = $+ $(%cdrive):$(%cwd) $- + +### Conditionally set variables: ### + +OUTPUT = +!ifeq DEBUG 0 +OUTPUT = release +!endif +!ifeq DEBUG 1 +OUTPUT = debug +!endif +INSTALLDIR = +!ifeq WXDIR +INSTALLDIR = ..\lib +!endif +LIBFLAG = +!ifeq DEBUG 1 +LIBFLAG = d +!endif +GPIBFLAG = +!ifeq GPIB 1 +GPIBFLAG = _gpib +!endif +____GPIBSRC_FILENAMES_OBJECTS = +!ifeq GPIB 1 +____GPIBSRC_FILENAMES_OBJECTS = & + $(OUTPUT)\ctb_lib_gpib.obj +!endif +____GPIBSRC_FILENAMES_1_OBJECTS = +!ifeq GPIB 1 +____GPIBSRC_FILENAMES_1_OBJECTS = & + $(OUTPUT)\ctb_dll_gpib.obj +!endif +____DEBUG = +!ifeq DEBUG 0 +____DEBUG = -dNDEBUG +!endif +!ifeq DEBUG 1 +____DEBUG = +!endif +____DEBUG_0 = +!ifeq DEBUG 0 +____DEBUG_0 = -d0 +!endif +!ifeq DEBUG 1 +____DEBUG_0 = -d2 +!endif +____DEBUG_2 = +!ifeq DEBUG 0 +____DEBUG_2 = +!endif +!ifeq DEBUG 1 +____DEBUG_2 = debug all +!endif +__OPTIMIZE_FLAG = +!ifeq DEBUG 0 +__OPTIMIZE_FLAG = -od +!endif +!ifeq DEBUG 1 +__OPTIMIZE_FLAG = -ot -ox +!endif +__SYSLIB2_p = +!ifeq GPIB 1 +__SYSLIB2_p = gpib32.lib +!endif + +### Variables: ### + +CTB_LIB_CXXFLAGS = $(____DEBUG) $(____DEBUG_0) -bm $(__OPTIMIZE_FLAG) & + -i=..\include $(CPPFLAGS) $(CXXFLAGS) +CTB_LIB_OBJECTS = & + $(OUTPUT)\ctb_lib_fifo.obj & + $(OUTPUT)\ctb_lib_getopt.obj & + $(OUTPUT)\ctb_lib_iobase.obj & + $(OUTPUT)\ctb_lib_portscan.obj & + $(OUTPUT)\ctb_lib_serportx.obj & + $(OUTPUT)\ctb_lib_serport.obj & + $(OUTPUT)\ctb_lib_timer.obj & + $(____GPIBSRC_FILENAMES_OBJECTS) +CTB_DLL_CXXFLAGS = -bd $(____DEBUG) $(____DEBUG_0) -bm $(__OPTIMIZE_FLAG) & + -i=..\include $(CPPFLAGS) $(CXXFLAGS) +CTB_DLL_OBJECTS = & + $(OUTPUT)\ctb_dll_fifo.obj & + $(OUTPUT)\ctb_dll_getopt.obj & + $(OUTPUT)\ctb_dll_iobase.obj & + $(OUTPUT)\ctb_dll_portscan.obj & + $(OUTPUT)\ctb_dll_serportx.obj & + $(OUTPUT)\ctb_dll_serport.obj & + $(OUTPUT)\ctb_dll_timer.obj & + $(____GPIBSRC_FILENAMES_1_OBJECTS) +CTBTEST_CXXFLAGS = $(____DEBUG) $(____DEBUG_0) -dGPIB=$(GPIB) -bm & + $(__OPTIMIZE_FLAG) -i=..\include $(CPPFLAGS) $(CXXFLAGS) +CTBTEST_OBJECTS = & + $(OUTPUT)\ctbtest_ctbtest.obj + + +all : $(OUTPUT) +$(OUTPUT) : + -if not exist $(OUTPUT) mkdir $(OUTPUT) + +### Targets: ### + +all : .SYMBOLIC ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(OUTPUT)\ctbtest.exe tip-win32 + +clean : .SYMBOLIC + -if exist $(OUTPUT)\*.obj del $(OUTPUT)\*.obj + -if exist $(OUTPUT)\*.res del $(OUTPUT)\*.res + -if exist $(OUTPUT)\*.lbc del $(OUTPUT)\*.lbc + -if exist $(OUTPUT)\*.ilk del $(OUTPUT)\*.ilk + -if exist $(OUTPUT)\*.pch del $(OUTPUT)\*.pch + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll + -if exist ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib del ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + -if exist $(OUTPUT)\ctbtest.exe del $(OUTPUT)\ctbtest.exe + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib : $(CTB_LIB_OBJECTS) + @%create $(OUTPUT)\ctb_lib.lbc + @for %i in ($(CTB_LIB_OBJECTS)) do @%append $(OUTPUT)\ctb_lib.lbc +%i + wlib -q -p4096 -n -b $^@ @$(OUTPUT)\ctb_lib.lbc + +..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll : $(CTB_DLL_OBJECTS) + @%create $(OUTPUT)\ctb_dll.lbc + @%append $(OUTPUT)\ctb_dll.lbc option quiet + @%append $(OUTPUT)\ctb_dll.lbc name $^@ + @%append $(OUTPUT)\ctb_dll.lbc option caseexact + @%append $(OUTPUT)\ctb_dll.lbc $(____DEBUG_2) libpath ..\lib $(LDFLAGS) + @for %i in ($(CTB_DLL_OBJECTS)) do @%append $(OUTPUT)\ctb_dll.lbc file %i + @for %i in ( winmm.lib $(__SYSLIB2_p)) do @%append $(OUTPUT)\ctb_dll.lbc library %i + @%append $(OUTPUT)\ctb_dll.lbc + @%append $(OUTPUT)\ctb_dll.lbc system nt_dll + wlink @$(OUTPUT)\ctb_dll.lbc + wlib -q -n -b ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib +$^@ + +$(OUTPUT)\ctbtest.exe : $(CTBTEST_OBJECTS) ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib + @%create $(OUTPUT)\ctbtest.lbc + @%append $(OUTPUT)\ctbtest.lbc option quiet + @%append $(OUTPUT)\ctbtest.lbc name $^@ + @%append $(OUTPUT)\ctbtest.lbc option caseexact + @%append $(OUTPUT)\ctbtest.lbc $(____DEBUG_2) libpath ..\lib $(LDFLAGS) + @for %i in ($(CTBTEST_OBJECTS)) do @%append $(OUTPUT)\ctbtest.lbc file %i + @for %i in ( ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib winmm.lib $(__SYSLIB2_p)) do @%append $(OUTPUT)\ctbtest.lbc library %i + @%append $(OUTPUT)\ctbtest.lbc + @for %i in () do @%append $(OUTPUT)\ctbtest.lbc option stack=%i + wlink @$(OUTPUT)\ctbtest.lbc + +wxinstall : + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.lib $(INSTALLDIR)\lib\watcom_lib + @copy ..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.dll $(INSTALLDIR)\lib\watcom_lib + + @if not exist $(INSTALLDIR)\include\ctb-0.16\win32 mkdir $(INSTALLDIR)\include\ctb-0.16\win32 + @copy ..\include\ctb-0.16\*.h $(INSTALLDIR)\include\ctb-0.16 + @copy ..\include\ctb-0.16\win32\*.h $(INSTALLDIR)\include\ctb-0.16\win32 + +tip-win32 : + @echo " " + @echo "================================================================" + @echo " The building of ctb is finished. If you have an installed " + @echo " wxWidget package (WXWIN must be defined in the enviroment), " + @echo " you'll now have to run: " + @echo " " + @echo " make DEBUG=$(DEBUG) GPIB=$(GPIB) wxinstall " + @echo " " + @echo " to install the libraries in: " + @echo " $(INSTALLDIR)\lib\watcom_lib " + @echo " and the header files in" + @echo " $(INSTALLDIR)\ctb-0.16" + @echo " " + @echo " If you are using another compiler (Borland, Watcom, mingw,...) " + @echo " take a look in the README in this directory! " + @echo " " + @echo " ctb comes with no guarantees and doesn't claim " + @echo " to be suitable for any purpose. " + @echo "================================================================" + @echo " " + +$(OUTPUT)\ctb_lib_fifo.obj : .AUTODEPEND .\..\src\fifo.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_getopt.obj : .AUTODEPEND .\..\src\getopt.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_iobase.obj : .AUTODEPEND .\..\src\iobase.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_portscan.obj : .AUTODEPEND .\..\src\portscan.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_serportx.obj : .AUTODEPEND .\..\src\serportx.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_serport.obj : .AUTODEPEND .\..\src\win32\serport.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_timer.obj : .AUTODEPEND .\..\src\win32\timer.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_lib_gpib.obj : .AUTODEPEND .\..\src\gpib.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_LIB_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_fifo.obj : .AUTODEPEND .\..\src\fifo.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_getopt.obj : .AUTODEPEND .\..\src\getopt.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_iobase.obj : .AUTODEPEND .\..\src\iobase.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_portscan.obj : .AUTODEPEND .\..\src\portscan.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_serportx.obj : .AUTODEPEND .\..\src\serportx.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_serport.obj : .AUTODEPEND .\..\src\win32\serport.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_timer.obj : .AUTODEPEND .\..\src\win32\timer.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctb_dll_gpib.obj : .AUTODEPEND .\..\src\gpib.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTB_DLL_CXXFLAGS) $< + +$(OUTPUT)\ctbtest_ctbtest.obj : .AUTODEPEND .\..\samples\ctbtest.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CTBTEST_CXXFLAGS) $< + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h new file mode 100644 index 0000000000..767067d6a0 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h @@ -0,0 +1,139 @@ +#ifndef LIBCTB_CTB_H_INCLUDED_ +#define LIBCTB_CTB_H_INCLUDED_ + +#include "ctb-0.16/fifo.h" +#if ( GPIB ) +# include "ctb-0.16/gpib.h" +#endif +#include "ctb-0.16/getopt.h" +#include "ctb-0.16/iobase.h" +#include "ctb-0.16/kbhit.h" +#include "ctb-0.16/portscan.h" +#include "ctb-0.16/serport.h" +#include "ctb-0.16/serportx.h" +#include "ctb-0.16/timer.h" + +/*! + \mainpage ctb overview + + The ctb (communication toolbox) library was realized, to simplify the + communication with other instruments throughout the serial com ports + (at first). To make my life easier, it should works with Linux and + all win32 plattforms (excepted windows 3.1, which is a only 16bit OS) + because I develope my applications for both plattforms).\n + Some times later GPIB support was added to make ctb an integrated part + for the extensive test and calibration system of a company I worked + these days.\n + The main goal of the library was a non-blocked communication to avoid + frozen GUIs waiting for data which in some conditions never arrives. + + On the base ctb defines an abstract class IOBase, which must be + derivate for several interfaces (at now this was done for the + RS232 comports and GPIB IEEE488 interface). + + This leads to another feature: Because all classes depends on one + super class, you have just open your wanted interface and don't + worry about it's special typ later. This is like the 'Virtual + Instrument' featured by Nation Instruments LabView. + + Last not least: ctb provides one written code for Linux and Windows + (compiles well with GNU G++ and VC++). Without any dependences (execept + for a standard C++ compilier) ctb runs also in small enviroments like + embedded systems and doesn't need any graphic stuff for use. + + ctb is composed of five parts: + + - ctb::IOBase class + - ctb::SerialPort class + - ctb::GpibDevice class + - ctb::Timer class + - ctb::Fifo class + + \section IOBase IOBase class + + An abstract class for different interfaces. The idea behind this: + Similar to the virtual file system this class defines a lot of + preset member functions, which the derivate classes must be + overload.\n + In the main thing these are: open a interface (such as RS232), + reading and writing non blocked through the interface and at + last, close it.\n + For special interface settings the method ioctl was defined. + (control interface). ioctl covers some interface dependent + settings like switch on/off the RS232 status lines and must also + be defined from each derivated class. + + + \section SerialPort SerialPort class + + The class for the serial ports is named as + ctb::SerialPort. SerialPort is a wrapper for non blocked reading and + writing. This is easy under linux, but with windows a lot more + tricky. SerialPort is as simple as possible. It doesn't create any + gui events or signals, so it works also standalone. It's also not a + device driver, means, you must call the read method, if you look for + receiving data. + + You can write any desired data with any length (length type is + size_t, I think, on win32 and linux this is a 32Bit integer) and + SerialPort returns the really writen data length, also you can read + a lot of data and SerialPort returns the really received data count. + + Both, read and write returns immediatelly. Using these, the program + never blocks. Also IOBase implements a blocked read and write. You can + use these functions, if you want a definitiv count of data and never + accept less than this. Because there is a difficulty, when the + communication is interrupted or death, both blocked functions get a + timeout flag to returns after a given time interval. The timeouts + will be handled with the second timer class. + + As an additional benefit ctb features also 9 Bit transmission (with + take advantage of the parity bit), non-standard baudrates (depending + on your hardware but not on ctb) and all parity eventualities + including static parity settings like Mark and Space. + + \section GpibDevice GpibDevice class + + Named as ctb::GpibDevice. In the philosophy of the SerialPort class + GpibDevice also supports non-blocking communication. You can instant + as many GpibDevice objects as you need for instance to communicate + with a lot of different bus participants in a typical GPIB enviroment. + GPIB support was tested with PCI cards and USB adapter from Nation + Instrument and Keithley. + + \section Timer Timer class + + The idea of the ctb::Timer class is to base on the Unix C alarm + function. You create a Timer with a given alarm time and a adress of + flag, which the timer must set after the time is over. + + Because the alarm function cannot used more than once in the same + process (under windows I don't know a similar function), every timer + instance will be a separate thread after starting it. So you can start + a timer and continue in your program, make a lot of things and test + the flag whenever you want this. (For example, you read/write a + given count of data). + + \note + I think, it's a better style, to request a given count of data in + 100ms (for example) and trap the situation, if there are not enough + data after this time. And not do this for every byte! + + \section Fifo Fifo cass + Provides a simple thread safe fifo to realize a fast and simple + communication pipe between two threads (and was used also as a put + back mechanism for the wxIOBase and it's derivated classes).\n + ctb::Fifo tackles the concurrently access from different threads with an + internal temporary pointer asignment which was atomic. From there no + mutex or semaphore is involved and lead to a fast access. + + Please note:\n + The thread safeness is limited to the put/get write/read methods but + which should be sufficent for a fifo. + + + \latexonly \newpage \endlatexonly + + */ + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/fifo.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/fifo.h new file mode 100644 index 0000000000..d17079d4a2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/fifo.h @@ -0,0 +1,96 @@ +#ifndef __LIBCTB_FIFO_H_INCLUDED_ +#define __LIBCTB_FIFO_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: fifo.h +// Purpose: +// Author: Joachim Buermann, Michael Hungershausen +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include + +/** + \file fifo.h +*/ + +namespace ctb { + +/*! + \class Fifo + A simple thread safe fifo to realize a put back mechanism for the + wxIOBase and it's derivated classes. +*/ + class Fifo + { + protected: + /*! the size of the fifo */ + size_t m_size; + /*! the start of the internal fifo buffer */ + char* m_begin; + /*! + the end of the internal fifo buffer (m_end marks the first + invalid byte AFTER the internal buffer) + */ + char* m_end; + /*! the current read position */ + char* m_rdptr; + /*! the current write position */ + char* m_wrptr; + public: + /*! + \brief the constructor initialize a fifo with the given size. + \param size size of the fifo + */ + Fifo(size_t size); + /*! + \brief the destructor destroys all internal memory. + */ + virtual ~Fifo(); + /*! + \brief clear all internal memory and set the read and write + pointers to the start of the internal memory. + \Note This function is not thread safe! Don't use it, if another + thread takes access to the fifo instance. Use a looping get() or + read() call instead of this. + */ + virtual void clear(); + /*! + \brief fetch the next available byte from the fifo. + \param ch points to a charater to store the result + \return 1 if successful, 0 otherwise + */ + virtual int get(char* ch); + /*! + \brief query the fifo for it's available bytes. + \return count of readable bytes, storing in the fifo + */ + size_t items(); + /*! + \brief put a character into the fifo. + \param ch the character to put in + \return 1 if successful, 0 otherwise + */ + virtual int put(char ch); + /*! + \brief read a given count of bytes out of the fifo. + \param data memory to store the readed data + \param count number of bytes to read + \return On success, the number of bytes read are returned, + 0 otherwise + */ + virtual int read(char* data,int count); + /*! + \brief write a given count of bytes into the fifo. + \param data start of the data to write + \param count number of bytes to write + \return On success, the number of bytes written are returned, + 0 otherwise + */ + virtual int write(char* data,int count); + }; + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/getopt.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/getopt.h new file mode 100644 index 0000000000..2efd341889 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/getopt.h @@ -0,0 +1,19 @@ +#ifndef LIBCTB_GETOPT_H_INCLUDED_ +#define LIBCTB_GETOPT_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: getopt.h +// Purpose: Simple wrapper file +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined (WIN32) +# include "win32/getopt.h" +#else +# include +#endif + +#endif +// __WX_GETOPT_H diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/gpib.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/gpib.h new file mode 100644 index 0000000000..1d360a8c49 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/gpib.h @@ -0,0 +1,378 @@ +#ifndef LIBCTB_GPIB_H_INCLUDED_ +#define LIBCTB_GPIB_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: gpibx.h +// Purpose: base class for gpib devices +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "ctb-0.16/iobase.h" + +namespace ctb { + +/*! + \file gpib.h +*/ + + /*! defines the os specific name for the first gpib controller */ + extern const char* GPIB1; + + /*! defines the os specific name for the second gpib controller */ + extern const char* GPIB2; + + /*! + \enum GpibTimeout + NI488.2 API defines the following valid timeouts. + */ + enum GpibTimeout + { + /// no timeout (infinity) + GpibTimeoutNone = 0, + /// 10 micro seconds + GpibTimeout10us, + /// 30 micro seconds + GpibTimeout30us, + /// 100 micro seconds + GpibTimeout100us, + /// 300 micro seconds + GpibTimeout300us, + /// 1 milli second + GpibTimeout1ms, + /// 3 milli seconds + GpibTimeout3ms, + /// 10 milli seconds + GpibTimeout10ms, + /// 30 milli seconds + GpibTimeout30ms, + /// 0.1 seconds + GpibTimeout100ms, + /// 0.3 seconds + GpibTimeout300ms, + /// 1 second + GpibTimeout1s, + /// 3 seconds + GpibTimeout3s, + /// 10 seconds + GpibTimeout10s, + /// 30 seconds + GpibTimeout30s, + /// 100 seconds + GpibTimeout100s, + /// 300 seconds (5 minutes) + GpibTimeout300s, + /// 1000 seconds + GpibTimeout1000s + }; + + /*! + \struct Gpib_DCS + + The device control struct for the gpib communication class. + This struct should be used, if you refer advanced parameter. + */ + struct Gpib_DCS + { + /*! primary address of GPIB device */ + int m_address1; + /*! secondary address of GPIB device */ + int m_address2; + /*! I/O timeout */ + GpibTimeout m_timeout; + /*! EOT enable */ + bool m_eot; + /*! + Defines the EOS character. + Note! Defining an EOS byte does not cause the driver to + automatically send that byte at the end of write I/O + operations. The application is responsible for placing the + EOS byte at the end of the data strings that it defines. + (National Instruments NI-488.2M Function Reference Manual) + */ + unsigned char m_eosChar; + /*! + Set the EOS mode (handling).m_eosMode may be a combination + of bits ORed together. The following bits can be used: + 0x04: Terminate read when EOS is detected. + 0x08: Set EOI (End or identify line) with EOS on write function + 0x10: Compare all 8 bits of EOS byte rather than low 7 bits + (all read and write functions). + */ + unsigned char m_eosMode; + /*! buffer for internal use */ + char m_buf[32]; + /*! to avoid memory leak warnings generated by swig */ + ~Gpib_DCS() {}; + /*! + \brief the constructor initiate the device control struct with + the common useful values and set the internal timeout for the + GPIB controller to 1ms to avoid (or better reduce) blocking + */ + Gpib_DCS() { + /*! set default device address to 1 */ + m_address1 = 1; + m_address2 = 0; + /*! + set the timeout to a short value to avoid blocking + (default are 1msec) + */ + m_timeout = GpibTimeout1ms; + m_eot = true; + /*! EOS character, see above! */ + m_eosChar = 0;//'\n'; + /*! EOS mode, see above! */ + m_eosMode = 0; + }; + /*! + \brief returns the internal parameters in a more human readable + string format like 'Adr: (1,0) to:1ms'. + \return the settings as a null terminated string + */ + char* GetSettings(); + }; + +/*! + \enum GpibIoctls + + The following Ioctl calls are only valid for the GpibDevice class. +*/ + enum GpibIoctls { + /*! + Set the adress of the via gpib connected device. + */ + CTB_GPIB_SETADR = CTB_GPIB, + /*! + Get the serial poll byte + */ + CTB_GPIB_GETRSP, + /*! + Get the GPIB status + */ + CTB_GPIB_GETSTA, + /*! + Get the last GPIB error number + */ + CTB_GPIB_GETERR, + /*! + Get the GPIB line status (hardware control lines) as an + integer. The lowest 8 bits correspond to the current state + of the lines. + */ + CTB_GPIB_GETLINES, + /*! + Set the GPIB specific timeout + */ + CTB_GPIB_SETTIMEOUT, + /*! + Forces the specified device to go to local program mode + */ + CTB_GPIB_GTL, + /*! + This routine can only be used if the specified GPIB + Interface Board is the System Controller. + Remember that even though the REN line is asserted, + the device(s) will not be put into remote state until is + addressed to listen by the Active Controller + */ + CTB_GPIB_REN, + /*! + The command asserts the GPIB interface clear (IFC) line for + ast least 100us if the GPIB board is the system controller. + This initializes the GPIB and makes the interface CIC and + active controller with ATN asserted. + Note! The IFC signal resets only the GPIB interface functions + of the bus devices and not the internal device functions. + For a device reset you should use the CTB_RESET command above. + */ + CTB_GPIB_RESET_BUS, + /*! + Configure the end-of-string (EOS) termination character. + Note! Defining an EOS byte does not cause the driver to + automatically send that byte at the end of write I/O + operations. The application is responsible for placing the + EOS byte at the end of the data strings that it defines. + (National Instruments NI-488.2M Function Reference Manual) + */ + CTB_GPIB_SET_EOS_CHAR, + /*! + Get the internal EOS termination character (see above). + */ + CTB_GPIB_GET_EOS_CHAR, + /*! + Set the EOS mode (handling).m_eosMode may be a combination + of bits ORed together. The following bits can be used: + 0x04: Terminate read when EOS is detected. + 0x08: Set EOI (End or identify line) with EOS on write function + 0x10: Compare all 8 bits of EOS byte rather than low 7 bits + (all read and write functions). + */ + CTB_GPIB_SET_EOS_MODE, + /*! + Get the internal EOS mode (see above). + */ + CTB_GPIB_GET_EOS_MODE, + }; + +/*! + \class GpibDevice + GpibDevice is the basic class for communication via the GPIB bus. +*/ + class GpibDevice : public IOBase + { + protected: + /*! + \brief + the internal board identifier, 0 for the first gpib controller, + 1 for the second one + */ + int m_board; + /*! + \brief + the file descriptor of the connected gpib device + */ + int m_hd; + /*! + \brief + contains the internal conditions of the GPIB communication like + GPIB error, timeout and so on... + */ + int m_state; + /*! the internal GPIB error number */ + int m_error; + /*! the count of data read or written */ + int m_count; + /*! + \brief contains the internal settings of the GPIB connection like + address, timeout, end of string character and so one... + */ + Gpib_DCS m_dcs; + int CloseDevice(); + /*! + \brief returns a short notation or more detail description of + the given GPIB error number. + \param error the occured GPIB error + \param detailed true for a more detailed description, false + otherwise + \return a null terminated string with the short or detailed + error message. + */ + virtual const char* GetErrorString(int error,bool detailed); + /*! + Open the interface (internally to request a file descriptor for the + given interface). The second parameter is a undefined pointer of a + Gpib_DCS data struct. + \param devname the name of the GPIB device, GPIB1 means the first + GPIB controller, GPIB2 the second (if available). + \param dcs untyped pointer of advanced device parameters, + \sa struct Gpib_DCS (data struct for the gpib device) + \return zero on success, otherwise -1 + */ + int OpenDevice(const char* devname, void* dcs); + public: + GpibDevice() { + m_board = -1; + m_hd = -1; + m_state = m_count = m_error = 0; + }; + virtual ~GpibDevice() {Close();}; + /*! + \brief returns the name of the class instance. You find this useful, + if you handle different devices like a serial port or a gpib device + via a IOBase pointer. + \return name of the class. + */ + const char* ClassName() {return "ctb::GpibDevice";}; + /*! + \brief returns a more detail description of the given error + number. + \param error the occured error number + \return null terminated string with the error description + */ + virtual const char* GetErrorDescription(int error) { + return GetErrorString(error,true); + }; + /*! + \brief returns a short notation like 'EABO' of the given error + number. + \param error the occured error number + \return null terminated string with the short error notation + */ + virtual const char* GetErrorNotation(int error) { + return GetErrorString(error,false); + }; + /*! + \brief request the current settings of the connected gpib device + as a null terminated string. + \return the settings as a string like 'Adr: (1,0) to:1ms' + */ + virtual char* GetSettingsAsString() { + return m_dcs.GetSettings(); + }; + /// This is only for internal usage + int Ibrd(char* buf,size_t len); + /// This is only for internal usage + int Ibwrt(char* buf,size_t len); + /*! + \brief Many operating characteristics are only possible for + special devices. To avoid the need of a lot of different functions + and to give the user a uniform interface, all this special + operating instructions will covered by one Ioctl methode (like + the linux ioctl call). + The Ioctl command (cmd) has encoded in it whether the argument + is an in parameter or out parameter, and the size of the + argument args in bytes. Macros and defines used in specifying an + ioctl request are located in iobase.h and the header file for + the derivated device (for example in gpib.h). + \param cmd one of GpibIoctls specify the ioctl request. + \param args is a typeless pointer to a memory location, where + Ioctl reads the request arguments or write the results. + Please note, that an invalid memory location or size involving + a buffer overflow or segmention fault! + */ + virtual int Ioctl(int cmd,void* args); + /*! + Returns the current state of the device. + \return 1 if device is valid and open, otherwise 0 + */ + int IsOpen() { + return m_hd >= 0; + }; + + /*! + \brief Opens a GPIB device in a user likely way. Insteed of + using the Device Control Struct just input your parameter in a + more intuitive manner. + \param devname the name of the GPIB controler like GPIB1 or GPIB2 + \param address the address of the connected device (1...31) + \return the new file descriptor, or -1 if an error occurred + */ + int Open( const char* devname, int address ); + + // Open overrides and hides the IOBase::Open( const char* + // devname, void* dcs ) of the base class! So bring it into scope + // again! + using IOBase::Open; + + int Read(char* buf,size_t len); + + int Write(char* buf,size_t len); + + /*! + \brief FindListener returns all listening devices connected to + the GPIB bus of the given board. + This function is not member of the GPIB class, becauce it + should do it's job before you open any GPIB connection. + \param board the board nummber. Default is the first board (=0). + Valid board numbers are 0 and 1. + \return -1 if an error occurred, otherwise a setting bit for + each listener address. Bit0 is always 0 (address 0 isn't valid, + Bit1 means address 1, Bit2 address 2 and so on... + */ + static int FindListeners(int board = 0); + }; + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/iobase.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/iobase.h new file mode 100644 index 0000000000..eda03b314f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/iobase.h @@ -0,0 +1,294 @@ +#ifndef LIBCTB_IOBASE_H_INCLUDED_ +#define LIBCTB_IOBASE_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: iobase.h +// Purpose: io basic class +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "ctb-0.16/fifo.h" +#include + +/** + \file iobase.h +*/ + +namespace ctb { + + enum { + + CTB_COMMON = 0x0000, + CTB_SERIAL = 0x0100, + CTB_GPIB = 0x0200, + CTB_TIMEOUT_INFINITY = 0xFFFFFFFF + }; + +// const unsigned int wxTIMEOUT_INFINITY = 0xFFFFFFFF; + +/*! + \enum IOBaseIoctls + + Defines the ioctl calls for derivated classes. The following Ioctl + calls are valid for all from wxIOBase derivated classes. +*/ + enum IOBaseIoctls { + /*! + Reset the connected device. For a serial (RS232) connection, + a break is send. For GPIB the IFC (Interface Clear) line is + set. + */ + CTB_RESET = CTB_COMMON + }; + +/*! + \class IOBase + An abstract class for different interfaces. The idea behind this: + Similar to the virtual file system this class defines a lot of + preset member functions, which the derivate classes must be + overload. + In the main thing these are: open a interface (such as RS232), + reading and writing non blocked through the interface and at + last, close it. + For special interface settings the method ioctl was defined. + (control interface). ioctl covers some interface dependent + settings like switch on/off the RS232 status lines and must also + be defined from each derivated class. +*/ + + class IOBase + { + protected: + /*! + \brief internal fifo (first in, first out queue) to put back + already readed bytes into the reading stream. After put back a single + byte or sequence of characters, you can read them again with the + next Read call. + */ + Fifo* m_fifo; + enum { + /// fifosize of the putback fifo + fifoSize = 256 + }; + /*! + Close the interface (internally the file descriptor, which was + connected with the interface). + \return zero on success, otherwise -1. + */ + virtual int CloseDevice() = 0; + /*! + Open the interface (internally to request a file descriptor for the + given interface). The second parameter is a undefined pointer of a + device dependent data struct. It must be undefined, because different + devices have different settings. A serial device like the com ports + points here to a data struct, includes information like baudrate, + parity, count of stopbits and wordlen and so on. Another devices + (for example a IEEE) needs a adress and EOS (end of string character) + and don't use baudrate or parity. + \param devname the name of the device, presents the given interface. + Under windows for example COM1, under Linux /dev/cua0. Use wxCOMn to + avoid plattform depended code (n is the serial port number, beginning + with 1). + \param dcs untyped pointer of advanced device parameters, + \sa struct dcs_devCUA (data struct for the serail com ports) + \return zero on success, otherwise -1 + */ + virtual int OpenDevice(const char* devname, void* dcs = 0L) = 0; + public: + /*! + Default constructor + */ + IOBase() { + m_fifo = new Fifo(fifoSize); + }; + + /*! + Default destructor + */ + virtual ~IOBase() { + delete m_fifo; + }; + /*! + \brief A little helper function to detect the class name + \return the name of the class + */ + virtual const char* ClassName() {return "ctb::IOBase";}; + /*! + Closed the interface. Internally it calls the CloseDevice() + method, which must be defined in the derivated class. + \return zero on success, or -1 if an error occurred. + */ + int Close() {return CloseDevice();}; + + /*! + In this method we can do all things, which are different + between the discrete interfaces. The method is similar to the + C ioctl function. We take a command number and a integer + pointer as command parameter. + An example for this is the reset of a connection between a PC + and one ore more other instruments. On serial (RS232) connections + mostly a break will be send, GPIB on the other hand defines a + special line on the GPIB bus, to reset all connected devices. + If you only want to reset your connection, you should use the + Ioctl methode for doing this, independent of the real type of + the connection. + \param cmd a command identifier, (under Posix such as TIOCMBIS + for RS232 interfaces), IOBaseIoctls + \param args typeless parameter pointer for the command above. + \return zero on success, or -1 if an error occurred. + */ + virtual int Ioctl(int cmd,void* args) {return -1;}; + + /*! + Returns the current state of the device. + \return 1 if device is valid and open, otherwise 0 + */ + virtual int IsOpen() = 0; + + /*! + \param devname name of the interface, we want to open + \param dcs a untyped pointer to a device control struct. If + he is NULL, the default device parameter will be used. + \return the new file descriptor, or -1 if an error occurred + + The pointer dcs will be used for special device dependent + settings. Because this is very specific, the struct or + destination of the pointer will be defined by every device + itself. (For example: a serial device class should refer + things like parity, word length and count of stop bits, + a IEEE class adress and EOS character). + */ + int Open(const char* devname,void* dcs=0L) { + return OpenDevice(devname,dcs); + }; + + /*! + \brief In some circumstances you want to put back a already + readed byte (for instance, you have overreaded it and like to + parse the recieving bytes again). + The internal fifo stores fifoSize characters until you + have to read again. + \param ch the character to put back in the input stream + \return 1, if successful, otherwise 0 + */ + int PutBack(char ch) { + return m_fifo->put(ch); + }; + + /*! + Read attempt to read len bytes from the interface into the buffer + starting with buf. Read never blocks. If there are no bytes for + reading, Read returns zero otherwise the count of bytes been readed. + \param buf starting adress of the buffer + \param len count of bytes, we want to read + \return -1 on fails, otherwise the count of readed bytes + */ + virtual int Read(char* buf,size_t len) = 0; + + /*! + \brief + ReadUntilEos read bytes from the interface until the EOS string + was received or a timeout occurs. + ReadUntilEos returns the count of bytes been readed. The received + bytes are stored on the heap point by the readbuf pointer and + must delete by the caller. + \param readbuf points to the start of the readed bytes. You must + delete them, also if you received no byte. + \param readedBytes A pointer to the variable that receives the number + of bytes read. + \param eosString is the null terminated end of string sequence. + Default is the linefeed character. + \param timeout_in_ms the function returns after this time, also + if no eos occured (default is 1s). + \param quota defines a character between those an EOS doesn't + terminate the string + \return 1 on sucess (the operation ends successfull without a timeout), + 0 if a timeout occurred and -1 otherwise + */ + virtual int ReadUntilEOS(char*& readbuf, + size_t* readedBytes, + char* eosString = "\n", + long timeout_in_ms = 1000L, + char quota = 0); + + /*! + \brief + readv() attempts to read up to len bytes from the interface + into the buffer starting at buf. + readv() is blocked till len bytes are readed or the given + timeout in milliseconds was reached. + \param buf starting address of the buffer + \param len count bytes, we want to read + \param timeout_in_ms in milliseconds. If you don't want any timeout, + you give the wxTIMEOUT_INFINITY here. + But think of it: In this case, this function never returns + if there a not enough bytes to read. + \return the number of data bytes successfully read + */ + int Readv(char* buf,size_t len,unsigned int timeout_in_ms); + + /*! + \brief + readv() attempts to read up to len bytes from the interface + into the buffer starting at buf. + readv() is blocked till len bytes are readed or the timeout_flag + points on a int greater then zero. + \param buf starting adress of the buffer + \param len count bytes, we want to read + \param timeout_flag a pointer to an integer. If you don't want + any timeout, you given a null pointer here. + But think of it: In this case, this function comes never + back, if there a not enough bytes to read. + \param nice if true go to sleep for one ms (reduce CPU last), + if there is no byte available (default is false) + */ + int Readv(char* buf,size_t len,int* timeout_flag,bool nice=false); + + /*! + Write writes up to len bytes from the buffer starting with buf + into the interface. + \param buf start adress of the buffer + \param len count of bytes, we want to write + \return on success, the number of bytes written are returned + (zero indicates nothing was written). On error, -1 is returned. + */ + virtual int Write(char* buf,size_t len) = 0; + + /*! + Writev() writes up to len bytes to the interface from the buffer, + starting at buf. + Also Writev() blocks till all bytes are written or the given + timeout in milliseconds was reached. + \param buf starting address of the buffer + \param len count bytes, we want to write + \param timeout_in_ms timeout in milliseconds. If you give + wxTIMEOUT_INFINITY here, the function blocks, till all data was + written. + \return the number of data bytes successfully written. + */ + int Writev(char* buf,size_t len,unsigned int timeout_in_ms); + + /*! + Writev() writes up to len bytes to the interface from the buffer, + starting at buf. + Also Writev() blocks till all bytes are written or the timeout_flag + points to an integer greater then zero. + \param buf starting adress of the buffer + \param len count bytes, we want to write + \param timeout_flag a pointer to an integer. You also can give a null + pointer here. This blocks, til all data is writen. + \param nice if true go to sleep for one ms (reduce CPU last), + if there is no byte available (default is false) + */ + int Writev(char* buf,size_t len,int* timeout_flag,bool nice = false); + + }; + +} // namespace ctb + +#endif + + + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/kbhit.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/kbhit.h new file mode 100644 index 0000000000..2a0545439c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/kbhit.h @@ -0,0 +1,10 @@ +#ifndef LIBCTB_KBHIT_H_INCLUDED_ +#define LIBCTB_KBHIT_H_INCLUDED_ + +namespace ctb { + + char GetKey(); + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/serport.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/serport.h new file mode 100644 index 0000000000..d88528bd25 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/serport.h @@ -0,0 +1,94 @@ +#ifndef LIBCTB_LINUX_SERPORT_H_INCLUDED_ +#define LIBCTB_LINUX_SERPORT_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: linux/serport.h +// Purpose: +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "ctb-0.16/serportx.h" +#include +#include + +namespace ctb { + +/*! + \class SerialPort + + \brief the linux version +*/ + class SerialPort : public SerialPort_x + { + protected: + /*! + \brief under Linux, the serial ports are normal file descriptor + */ + int fd; + /*! + \brief Linux defines this struct termios for controling asynchronous + communication. t covered the active settings, save_t the original + settings. + */ + struct termios t, save_t; + + /*! + \brief The Linux serial driver summing all breaks, framings, overruns + and parity errors for each port during system runtime. Because we only + need the errors during a active connection, we must save the actual + error numbers in this separate structurs. + */ + struct serial_icounter_struct save_info, last_info; + + /*! + \brief adaptor member function, to convert the plattform independent + type wxBaud into a linux conform value. + \param baud the baudrate as wxBaud type + \return speed_t linux specific data type, defined in termios.h + */ + speed_t AdaptBaudrate( int baud ); + + int CloseDevice(); + int OpenDevice(const char* devname, void* dcs); + + /*! + \brief internal member function to set an unusal (non-standard) + baudrate. Called by SetBaudrate. + */ + int SetBaudrateAny( int baudrate ); + + /*! + \brief internal member function to set a standard baudrate. + Called by SetBaudrate. + */ + int SetBaudrateStandard( int baudrate ); + + public: + SerialPort(); + + ~SerialPort(); + + int ChangeLineState( SerialLineState flags ); + + int ClrLineState( SerialLineState flags ); + + int GetLineState(); + int Ioctl(int cmd,void* args); + int IsOpen(); + int Read(char* buf,size_t len); + int SendBreak(int duration); + + int SetBaudrate( int baudrate ); + + int SetParityBit( bool parity ); + + int SetLineState( SerialLineState flags ); + + int Write(char* buf,size_t len); + }; + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/timer.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/timer.h new file mode 100644 index 0000000000..7cc1a51e01 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/linux/timer.h @@ -0,0 +1,139 @@ +#ifndef LIBCTB_LINUX_TIMER_H_INCLUDED_ +#define LIBCTB_LINUX_TIMER_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: linux/timer.h +// Purpose: +// Author: Joachim Buermann +// Id: $Id: timer.h,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +/** + \file timer.h +*/ + +#include + +namespace ctb { + +/*! + \brief A data struct, using from class timer. +*/ + struct timer_control + { + /*! + under linux, we used usec internally + */ + unsigned int usecs; + /*! + covers the adress of the exitflag + */ + int *exitflag; + /*! + covers the adress of the exit function. NULL, if + there was no exit function. + */ + void* (*exitfnc)(void*); + }; + +/*! + \class Timer + \brief A thread based timer class for handling timeouts in + an easier way. + + On starting every timer instance will create it's own thread. + The thread makes simply nothing, until it's given time is over. + After that, he set a variable, refer by it's adress to one + and exit. + + There are a lot of situations, which the timer class must handle. + The timer instance leaves his valid range (for example, the + timer instance is local inside a function, and the function fished) + BEFORE the thread was ending. In this case, the destructor must + terminate the thread in a correct way. (This is very different + between the OS. threads are a system resource like file descriptors + and must be deallocated after using it). + + The thread should be asynchronously stopped. Means, under all + circumstance, it must be possible, to finish the timer and start + it again. + + Several timer instance can be used simultanously. +*/ + class Timer + { + protected: + /*! + control covers the time interval, the adress + of the exitflag, and if not null, a function, which will + be called on the end. + */ + timer_control control; + /*! + stopped will be set by calling the stop() method. + Internaly the timer thread steadily tests the state of + this variable. If stopped not zero, the thread will be + finished. + */ + int stopped; + /*! + under linux we use the pthread library. tid covers the + identifier for a separate threads. + */ + pthread_t tid; + /*! + here we store the time interval, whilst the timer run. + This is waste!!! + */ + unsigned int timer_secs; + + public: + /*! + The constructor creates an timer object with the given + properties. The timer at this moment is not started. This + will be done with the start() member function. + \param msec time interval after that the the variable + pointed by exitflag is setting to one. + \param exitflag the adress of an integer, which was set + to one after the given time interval. + \warning The integer variable shouldn't leave it's valid + range, before the timer was finished. So never take a + local variable. + \param exitfnc A function, which was called after msec. + If you don't want this, refer a NULL pointer. + */ + Timer(unsigned int msec,int* exitflag,void*(*exitfnc)(void*)); + /*! + the destructor. If his was called (for example by leaving the + valid range of the timer object), the timer thread automaticaly + will finished. The exitflag wouldn't be set, also the exitfnc + wouldn't be called. + */ + ~Timer(); + /*! + starts the timer. But now a thread will created and started. + After this, the timer thread will be running until he was stopped + by calling stop() or reached his given time interval. + */ + int start(); + /*! + stops the timer and canceled the timer thread. After timer::stop() a new + start() will started the timer from beginning. + */ + int stop(); + }; + +/*! + \brief sleepms + A plattform independent function, to go to sleep for the given + time interval. + \param ms time interval in milli seconds +*/ + void sleepms(unsigned int ms); + +} // namespace ctb + +#endif + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/portscan.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/portscan.h new file mode 100644 index 0000000000..92c4ba11d6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/portscan.h @@ -0,0 +1,25 @@ +#ifndef LIBCTB_PORTSCAN_H_INCLUDED_ +#define LIBCTB_PORTSCAN_H_INCLUDED_ + +#include +#include + +/** + \file portscan.h +*/ + +namespace ctb { + + /*! + \brief returns all available COM ports as an array of strings. + \param result stores the available COM ports + \param checkInUse return only ports which are available AND + unused (default) + \return true if successful, false otherwise + */ + bool GetAvailablePorts( std::vector& result, + bool checkInUse = true ); + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serport.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serport.h new file mode 100644 index 0000000000..9488753d4b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serport.h @@ -0,0 +1,20 @@ +#ifndef LIBCTB_SERPORT_H_INCLUDED_ +#define LIBCTB_SERPORT_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: serport.h +// Purpose: simple wrapper file +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined (WIN32) +# include "ctb-0.16/win32/serport.h" +#else +# include "ctb-0.16/linux/serport.h" +#endif + +#endif +// __SERPORT_BASE_H + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serportx.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serportx.h new file mode 100644 index 0000000000..aa55c4ec59 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/serportx.h @@ -0,0 +1,451 @@ +#ifndef LIBCTB_SERPORTX_H_INCLUDED_ +#define LIBCTB_SERPORTX_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: serportx.h +// Purpose: +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include +#include +#include "ctb-0.16/iobase.h" + +#if defined (WIN32) +# define snprintf _snprintf +#endif + +/** + \file serportx.h +*/ + +/*! + \def SERIALPORT_NAME_LEN + defines the maximum length of the os depending serial port names +*/ +#define SERIALPORT_NAME_LEN 32 + +namespace ctb { + + /*! specifices the first serial port */ + extern const char* COM1; + /*! specifies the second serial port */ + extern const char* COM2; + /*! specifies the third serial port */ + extern const char* COM3; + /*! specifies the fourth serial port */ + extern const char* COM4; + /*! specifies the fifth serial port */ + extern const char* COM5; + /*! specifies the sixth serial port */ + extern const char* COM6; + /*! specifies the seventh serial port */ + extern const char* COM7; + /*! specifies the eighth serial port */ + extern const char* COM8; + /*! specifies the ninth serial port */ + extern const char* COM9; + /*! specifies the tenth serial port */ + extern const char* COM10; + /*! specifies the eleventh serial port */ + extern const char* COM11; + /*! specifies the twelfth serial port */ + extern const char* COM12; + /*! specifies the thriteenth serial port */ + extern const char* COM13; + /*! specifies the fourteenth serial port */ + extern const char* COM14; + /*! specifies the fiveteenth serial port */ + extern const char* COM15; + /*! specifies the sixteenth serial port */ + extern const char* COM16; + /*! specifies the seventeenth serial port */ + extern const char* COM17; + /*! specifies the eighteenth serial port */ + extern const char* COM18; + /*! specifies the nineteenth serial port */ + extern const char* COM19; + /*! specifies the twentieth serial port */ + extern const char* COM20; + + /*! + \enum Parity + + \brief Defines the different modes of parity checking. Under + Linux, the struct termios will be set to provide the wanted + behaviour. + */ + enum Parity + { + /*! no parity check */ + ParityNone, + /*! odd parity check */ + ParityOdd, + /*! even parity check */ + ParityEven, + /*! mark (not implemented yet) */ + ParityMark, + /*! space (not implemented yet) */ + ParitySpace + }; + + /*! + \enum SerialLineState + + Defines the different modem control lines. The value for + each item are defined in /usr/include/bits/ioctl-types.h. + This is the linux definition. The window version translate + each item in it's own value. + modem lines defined in ioctl-types.h + \code + #define TIOCM_LE 0x001 + #define TIOCM_DTR 0x002 + #define TIOCM_RTS 0x004 + #define TIOCM_ST 0x008 + #define TIOCM_SR 0x010 + #define TIOCM_CTS 0x020 + #define TIOCM_CAR 0x040 + #define TIOCM_RNG 0x080 + #define TIOCM_DSR 0x100 + #define TIOCM_CD TIOCM_CAR + #define TIOCM_RI TIOCM_RNG + \endcode + */ + enum SerialLineState + { + /*! Data Carrier Detect (read only) */ + LinestateDcd = 0x040, + /*! Clear To Send (read only) */ + LinestateCts = 0x020, + /*! Data Set Ready (read only) */ + LinestateDsr = 0x100, + /*! Data Terminal Ready (write only) */ + LinestateDtr = 0x002, + /*! Ring Detect (read only) */ + LinestateRing = 0x080, + /*! Request To Send (write only) */ + LinestateRts = 0x004, + /*! no active line state, use this for clear */ + LinestateNull = 0x000 + }; + + /*! + \struct SerialPort_DCS + + The device control struct for the serial communication class. + This struct should be used, if you refer advanced parameter. + */ + struct SerialPort_DCS + { + /*! the baudrate */ + int baud; + /*! the parity */ + Parity parity; + /*! the wordlen */ + unsigned char wordlen; + /*! count of stopbits */ + unsigned char stopbits; + /*! rtscts flow control */ + bool rtscts; + /*! XON/XOFF flow control */ + bool xonxoff; + /*! buffer for internal use */ + char buf[16]; + SerialPort_DCS() { + baud = 38400; + parity = ParityNone; + wordlen = 8; + stopbits = 1; + rtscts = false; + xonxoff = false; + }; + // to avoid memory leak warnings generated by swig + ~SerialPort_DCS() {}; + /*! + \brief returns the internal settings of the DCS as a human + readable string like '8N1 115200'. + \return the internal settings as null terminated string + */ + char* GetSettings() { + const char ac[5] = {'N','O','E','M','S'}; + memset(buf,0,sizeof(buf)); + snprintf(buf,sizeof(buf)-1,"%i%c%i %i", + wordlen, + ac[parity], + stopbits, + baud); + return buf; + }; + }; + +/*! + \struct SerialPort_EINFO + + The internal communication error struct. It contains the number + of each error (break, framing, overrun and parity) since opening + the serial port. Each error number will be cleared if the open + methode was called. +*/ + struct SerialPort_EINFO + { + /*! number of breaks */ + int brk; + /*! number of framing errors */ + int frame; + /*! number of overrun errors */ + int overrun; + /*! number of parity errors */ + int parity; + SerialPort_EINFO() { + brk = frame = overrun = parity = 0; + }; + ~SerialPort_EINFO() {}; + }; + + /*! + \enum SerialPortIoctls + + The following Ioctl calls are only valid for the SerialPort + class. + */ + enum SerialPortIoctls { + /*! + Get all numbers of occured communication errors (breaks + framing, overrun and parity), so the args parameter of + the Ioctl call must pointed to a SerialPort_EINFO + struct. + */ + CTB_SER_GETEINFO = CTB_SERIAL, + /*! + Get integer 1, if a break occured since the last call + so the args parameter of the Ioctl methode must pointed + to an integer value. If there was no break, the result + is integer 0. + */ + CTB_SER_GETBRK, + /*! + Get integer 1, if a framing occured since the last call + so the args parameter of the Ioctl methode must pointed + to an integer value. If there was no break, the result + is integer 0. + */ + CTB_SER_GETFRM, + /*! + Get integer 1, if a overrun occured since the last call + so the args parameter of the Ioctl methode must pointed + to an integer value. If there was no break, the result + is integer 0. + */ + CTB_SER_GETOVR, + /*! + Get integer 1, if a parity occured since the last call + so the args parameter of the Ioctl methode must pointed + to an integer value. If there was no break, the result + is integer 0. + */ + CTB_SER_GETPAR, + /*! + Get the number of bytes received by the serial port driver + but not yet read by a Read or Readv Operation. + */ + CTB_SER_GETINQUE, + /*! + Set the parity bit on or off to use it as a ninth bit. + */ + CTB_SER_SETPAR + }; + +/*! + \class SerialPort_x + SerialPort_x is the basic class for serial communication via + the serial comports. It is also an abstract class and defines + all necessary methods, which the derivated plattform depended + classes must be invoke. +*/ + class SerialPort_x : public IOBase + { + protected: + /*! + \brief contains the internal settings of the serial port like + baudrate, protocol, wordlen and so on. + */ + SerialPort_DCS m_dcs; + /*! + \brief contains the internal (os specific) name of the serial + device. + */ + char m_devname[SERIALPORT_NAME_LEN]; + public: + + /*! + \enum FlowControl + \brief Specifies the flow control. + + + */ + enum FlowControl + { + NoFlowControl, /*!< No flow control at all */ + + RtsCtsFlowControl, /*!< Enable RTS/CTS hardware flow control */ + + XonXoffFlowControl /*!< Enable XON/XOFF protocol */ + }; + + SerialPort_x() {m_devname[0] = '\0';}; + virtual ~SerialPort_x() {}; + /*! + \brief returns the name of the class instance. You find this useful, + if you handle different devices like a serial port or a gpib device + via a IOBase pointer. + \return name of the class. + */ + const char* ClassName() {return "ctb::SerialPort";}; + + /*! + \brief change the linestates according to which bits + are set/unset in flags. + \param flags valid line flags are SERIAL_LINESTATE_DSR and/or + SERIAL_LINESTATE_RTS + \return zero on success, -1 if an error occurs + */ + virtual int ChangeLineState( SerialLineState flags ) = 0; + + /*! + \brief turn off status lines depending upon which bits (DSR and/or RTS) + are set in flags. + \param flags valid line flags are SERIAL_LINESTATE_DSR and/or + SERIAL_LINESTATE_RTS + \return zero on success, -1 if an error occurs + */ + virtual int ClrLineState( SerialLineState flags ) = 0; + + /*! + \brief Read the line states of DCD, CTS, DSR and RING + \return returns the appropriate bits on sucess, otherwise -1 + */ + virtual int GetLineState() = 0; + + /*! + \brief request the current settings of the connected serial port + as a null terminated string. + \return the settings as a string like '8N1 115200' + */ + virtual char* GetSettingsAsString() { + return m_dcs.GetSettings(); + }; + + /*! + \brief Many operating characteristics are only possible for + special devices. To avoid the need of a lot of different functions + and to give the user a uniform interface, all this special + operating instructions will covered by one Ioctl methode (like + the linux ioctl call). + The Ioctl command (cmd) has encoded in it whether the argument + is an in parameter or out parameter, and the size of the + argument args in bytes. Macros and defines used in specifying an + ioctl request are located in iobase.h and the header file for + the derivated device (for example in serportx.h). + \param cmd one of SerialPortIoctls specify the ioctl request. + \param args is a typeless pointer to a memory location, where + Ioctl reads the request arguments or write the results. + Please note, that an invalid memory location or size involving + a buffer overflow or segmention fault! + */ + virtual int Ioctl(int cmd,void* args) {return -1;}; + + /*! + \brief Opens a serial port in a user likely way. Insteed of + using the Device Control Struct just input your parameter in a + more intuitive manner. + \param portname the name of the serial port + \param baudrate any baudrate, also an unusual one, if your + serial device support them + \param protocol a string with the number of databits (5...8), + the parity setting (N=None,O=Odd,E=Even,M=Mark,S=Space), also + in lower case, and the count of stopbits (1...2) + \param flowControl one of NoFlowControl, RtsCtsFlowControl or + XonXoffFlowControl. + \return the new file descriptor, or -1 if an error occurred + */ + int Open( const char* portname, int baudrate, + const char* protocol = "8N1", + FlowControl flowControl = NoFlowControl ); + + /*! + \brief Opens the serial port with the given number. + \note The port numbering starts with 1 (COM1 for windows and + /dev/ttyS0 for Linux. Please note, that USB to RS232 converter + in Linux are named as /dev/ttyUSBx and from there have to + opened with their device name! + \param number of the serial port count from 1 + \param baudrate any baudrate, also an unusual one, if your + serial device support them + \param protocol a string with the number of databits (5...8), + the parity setting (N=None,O=Odd,E=Even,M=Mark,S=Space), also + in lower case, and the count of stopbits (1...2) + \param flowControl one of NoFlowControl, RtsCtsFlowControl or + XonXoffFlowControl. + \return the new file descriptor, or -1 if an error occurred + */ + int Open( const int portnumber, int baudrate, + const char* protocol = "8N1", + FlowControl flowControl = NoFlowControl ); + + // Open overrides and hides the IOBase::Open( const char* + // devname, void* dcs ) of the base class! So bring it into scope + // again! + using IOBase::Open; + + /*! + \brief Sendbreak transmits a continuous stream of zero-valued + bits for a specific duration. + \param duration If duration is zero, it transmits + zero-valued bits for at least 0.25 seconds, and not more that + 0.5 seconds. If duration is not zero, it sends zero-valued bits + for duration*N seconds, where N is at least 0.25, and not more + than 0.5. + \return zero on success, -1 if an error occurs. + */ + virtual int SendBreak(int duration) = 0; + + /*! + \brief Set the baudrate (also non-standard) + Please note: Non-standard baudrates like 70000 are not supported + by each UART and depends on the RS232 chipset you apply. + \param baudrate the new baudrate + \return zero on success, -1 if an error occurs + */ + virtual int SetBaudrate( int baudrate ) = 0; + + /*! + \brief turn on status lines depending upon which bits (DSR and/or RTS) + are set in flags. + \param flags valid line flags are SERIAL_LINESTATE_DSR and/or + SERIAL_LINESTATE_RTS + \return zero on success, -1 if an error occurs + */ + virtual int SetLineState( SerialLineState flags ) = 0; + + /*! + \brief Set the parity bit to a firm state, for instance to use + the parity bit as the ninth bit in a 9 bit dataword + communication. + \return zero on succes, a negative value if an error occurs + */ + virtual int SetParityBit( bool parity ) = 0; + + /*! + \brief check the given baudrate against a list of standard rates. + \ return true, if the baudrate is a standard value, false + otherwise + */ + static bool IsStandardRate( int rate ); + + }; + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/timer.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/timer.h new file mode 100644 index 0000000000..b1313ebfef --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/timer.h @@ -0,0 +1,19 @@ +#ifndef LIBCTB_TIMER_H_INCLUDED_ +#define LIBCTB_TIMER_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: timer.h +// Purpose: simple wrapper file +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined (WIN32) +# include "win32/timer.h" +#else +# include "linux/timer.h" +#endif + +#endif + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/getopt.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/getopt.h new file mode 100644 index 0000000000..afa50d4567 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/getopt.h @@ -0,0 +1,17 @@ +#ifndef LIBCTB_WIN32_GETOPT_H_INCLUDED_ +#define LIBCTB_WIN32_GETOPT_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: win32/getopt.h +// Purpose: +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +extern char* optarg; +extern int optind; + +int getopt(int argc, char* argv[], char* optstring); + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/gpib-32.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/gpib-32.h new file mode 100644 index 0000000000..627b30acfa --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/gpib-32.h @@ -0,0 +1,414 @@ +/* + * + * + * Win32 include file + * for accessing the 32-bit GPIB DLL (gpib-32.dll) + * + * + * Contains user variables (ibsta, iberr, ibcnt, ibcntl), + * function prototypes and useful defined constants for + * calling NI-488 and NI-488.2 routines from a Microsoft + * C/C++ Win32 application. + * + * + * Copyright 1998 National Instruments Corporation + * + */ + +#ifndef DECL_32_H // ensure we are only included once +#define DECL_32_H + +#include "windows.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/***************************************************************************/ +/* HANDY CONSTANTS FOR USE BY APPLICATION PROGRAMS ... */ +/***************************************************************************/ +#define UNL 0x3f /* GPIB unlisten command */ +#define UNT 0x5f /* GPIB untalk command */ +#define GTL 0x01 /* GPIB go to local */ +#define SDC 0x04 /* GPIB selected device clear */ +#define PPC 0x05 /* GPIB parallel poll configure */ +#define GET 0x08 /* GPIB group execute trigger */ +#define TCT 0x09 /* GPIB take control */ +#define LLO 0x11 /* GPIB local lock out */ +#define DCL 0x14 /* GPIB device clear */ +#define PPU 0.16 /* GPIB parallel poll unconfigure */ +#define SPE 0x18 /* GPIB serial poll enable */ +#define SPD 0x19 /* GPIB serial poll disable */ +#define PPE 0x60 /* GPIB parallel poll enable */ +#define PPD 0x70 /* GPIB parallel poll disable */ + +/* GPIB status bit vector : */ +/* global variable ibsta and wait mask */ + +#define ERR (1<<15) /* Error detected */ +#define TIMO (1<<14) /* Timeout */ +#define END (1<<13) /* EOI or EOS detected */ +#define SRQI (1<<12) /* SRQ detected by CIC */ +#define RQS (1<<11) /* Device needs service */ +#define CMPL (1<<8) /* I/O completed */ +#define LOK (1<<7) /* Local lockout state */ +#define REM (1<<6) /* Remote state */ +#define CIC (1<<5) /* Controller-in-Charge */ +#define ATN (1<<4) /* Attention asserted */ +#define TACS (1<<3) /* Talker active */ +#define LACS (1<<2) /* Listener active */ +#define DTAS (1<<1) /* Device trigger state */ +#define DCAS (1<<0) /* Device clear state */ + +/* Error messages returned in global variable iberr */ + +#define EDVR 0 /* System error */ +#define ECIC 1 /* Function requires GPIB board to be CIC */ +#define ENOL 2 /* Write function detected no Listeners */ +#define EADR 3 /* Interface board not addressed correctly*/ +#define EARG 4 /* Invalid argument to function call */ +#define ESAC 5 /* Function requires GPIB board to be SAC */ +#define EABO 6 /* I/O operation aborted */ +#define ENEB 7 /* Non-existent interface board */ +#define EDMA 8 /* Error performing DMA */ +#define EOIP 10 /* I/O operation started before previous */ + /* operation completed */ +#define ECAP 11 /* No capability for intended operation */ +#define EFSO 12 /* File system operation error */ +#define EBUS 14 /* Command error during device call */ +#define ESTB 15 /* Serial poll status byte lost */ +#define ESRQ 16 /* SRQ remains asserted */ +#define ETAB 20 /* The return buffer is full. */ +#define ELCK 21 /* Address or board is locked. */ + +/* EOS mode bits */ + +#define BIN (1<<12) /* Eight bit compare */ +#define XEOS (1<<11) /* Send END with EOS byte */ +#define REOS (1<<10) /* Terminate read on EOS */ + +/* Timeout values and meanings */ + +#define TNONE 0 /* Infinite timeout (disabled) */ +#define T10us 1 /* Timeout of 10 us (ideal) */ +#define T30us 2 /* Timeout of 30 us (ideal) */ +#define T100us 3 /* Timeout of 100 us (ideal) */ +#define T300us 4 /* Timeout of 300 us (ideal) */ +#define T1ms 5 /* Timeout of 1 ms (ideal) */ +#define T3ms 6 /* Timeout of 3 ms (ideal) */ +#define T10ms 7 /* Timeout of 10 ms (ideal) */ +#define T30ms 8 /* Timeout of 30 ms (ideal) */ +#define T100ms 9 /* Timeout of 100 ms (ideal) */ +#define T300ms 10 /* Timeout of 300 ms (ideal) */ +#define T1s 11 /* Timeout of 1 s (ideal) */ +#define T3s 12 /* Timeout of 3 s (ideal) */ +#define T10s 13 /* Timeout of 10 s (ideal) */ +#define T30s 14 /* Timeout of 30 s (ideal) */ +#define T100s 15 /* Timeout of 100 s (ideal) */ +#define T300s 16 /* Timeout of 300 s (ideal) */ +#define T1000s 17 /* Timeout of 1000 s (ideal) */ + + +/* IBLN Constants */ +#define NO_SAD 0 +#define ALL_SAD -1 + + +/* The following constants are used for the second parameter of the + * ibconfig function. They are the "option" selection codes. + */ +#define IbcPAD 0x0001 /* Primary Address */ +#define IbcSAD 0x0002 /* Secondary Address */ +#define IbcTMO 0x0003 /* Timeout Value */ +#define IbcEOT 0x0004 /* Send EOI with last data byte? */ +#define IbcPPC 0x0005 /* Parallel Poll Configure */ +#define IbcREADDR 0x0006 /* Repeat Addressing */ +#define IbcAUTOPOLL 0x0007 /* Disable Auto Serial Polling */ +#define IbcCICPROT 0x0008 /* Use the CIC Protocol? */ +#define IbcIRQ 0x0009 /* Use PIO for I/O */ +#define IbcSC 0x000A /* Board is System Controller? */ +#define IbcSRE 0x000B /* Assert SRE on device calls? */ +#define IbcEOSrd 0x000C /* Terminate reads on EOS */ +#define IbcEOSwrt 0x000D /* Send EOI with EOS character */ +#define IbcEOScmp 0x000E /* Use 7 or 8-bit EOS compare */ +#define IbcEOSchar 0x000F /* The EOS character. */ +#define IbcPP2 0x0010 /* Use Parallel Poll Mode 2. */ +#define IbcTIMING 0x0011 /* NORMAL, HIGH, or VERY_HIGH timing. */ +#define IbcDMA 0x0012 /* Use DMA for I/O */ +#define IbcReadAdjust 0x0013 /* Swap bytes during an ibrd. */ +#define IbcWriteAdjust 0x014 /* Swap bytes during an ibwrt. */ +#define IbcSendLLO 0x0017 /* Enable/disable the sending of LLO. */ +#define IbcSPollTime 0x0018 /* Set the timeout value for serial polls. */ +#define IbcPPollTime 0x0019 /* Set the parallel poll length period. */ +#define IbcEndBitIsNormal 0x001A /* Remove EOS from END bit of IBSTA. */ +#define IbcUnAddr 0x001B /* Enable/disable device unaddressing. */ +#define IbcSignalNumber 0x001C /* Set UNIX signal number - unsupported */ +#define IbcBlockIfLocked 0x001D /* Enable/disable blocking for locked boards/devices */ +#define IbcHSCableLength 0x001F /* Length of cable specified for high speed timing.*/ +#define IbcIst 0x0020 /* Set the IST bit. */ +#define IbcRsv 0x0021 /* Set the RSV byte. */ + +/* + * Constants that can be used (in addition to the ibconfig constants) + * when calling the ibask() function. + */ + +#define IbaPAD IbcPAD +#define IbaSAD IbcSAD +#define IbaTMO IbcTMO +#define IbaEOT IbcEOT +#define IbaPPC IbcPPC +#define IbaREADDR IbcREADDR +#define IbaAUTOPOLL IbcAUTOPOLL +#define IbaCICPROT IbcCICPROT +#define IbaIRQ IbcIRQ +#define IbaSC IbcSC +#define IbaSRE IbcSRE +#define IbaEOSrd IbcEOSrd +#define IbaEOSwrt IbcEOSwrt +#define IbaEOScmp IbcEOScmp +#define IbaEOSchar IbcEOSchar +#define IbaPP2 IbcPP2 +#define IbaTIMING IbcTIMING +#define IbaDMA IbcDMA +#define IbaReadAdjust IbcReadAdjust +#define IbaWriteAdjust IbcWriteAdjust +#define IbaSendLLO IbcSendLLO +#define IbaSPollTime IbcSPollTime +#define IbaPPollTime IbcPPollTime +#define IbaEndBitIsNormal IbcEndBitIsNormal +#define IbaUnAddr IbcUnAddr +#define IbaSignalNumber IbcSignalNumber +#define IbaBlockIfLocked IbcBlockIfLocked +#define IbaHSCableLength IbcHSCableLength +#define IbaIst IbcIst +#define IbaRsv IbcRsv + +#define IbaBNA 0x0200 /* A device's access board. */ + + +/* Values used by the Send 488.2 command. */ +#define NULLend 0x00 /* Do nothing at the end of a transfer.*/ +#define NLend 0x01 /* Send NL with EOI after a transfer. */ +#define DABend 0x02 /* Send EOI with the last DAB. */ + +/* Value used by the 488.2 Receive command. + */ +#define STOPend 0x0100 + + +/* Address type (for 488.2 calls) */ + +typedef short Addr4882_t; /* System dependent: must be 16 bits */ + +/* + * This macro can be used to easily create an entry in address list + * that is required by many of the 488.2 functions. The primary address goes in the + * lower 8-bits and the secondary address goes in the upper 8-bits. + */ +#define MakeAddr(pad, sad) ((Addr4882_t)(((pad)&0xFF) | ((sad)<<8))) + +/* + * This value is used to terminate an address list. It should be + * assigned to the last entry. + */ +#ifndef NOADDR +#define NOADDR (Addr4882_t)((unsigned short)0xFFFF) +#endif + +/* + * The following two macros are used to "break apart" an address list + * entry. They take an unsigned integer and return either the primary + * or secondary address stored in the integer. + */ +#define GetPAD(val) ((val) & 0xFF) +#define GetSAD(val) (((val) >> 8) & 0xFF) + +/* iblines constants */ + +#define ValidEOI (short)0x0080 +#define ValidATN (short)0x0040 +#define ValidSRQ (short)0x0020 +#define ValidREN (short)0x0010 +#define ValidIFC (short)0x0008 +#define ValidNRFD (short)0x0004 +#define ValidNDAC (short)0x0002 +#define ValidDAV (short)0x0001 +#define BusEOI (short)0x8000 +#define BusATN (short)0x4000 +#define BusSRQ (short)0x2000 +#define BusREN (short)0x1000 +#define BusIFC (short)0x0800 +#define BusNRFD (short)0x0400 +#define BusNDAC (short)0x0200 +#define BusDAV (short)0x0100 + +/**** + **** typedef for ibnotify callback **** + ****/ +typedef int (__stdcall * GpibNotifyCallback_t)(int, int, int, long, PVOID); + +#define IBNOTIFY_REARM_FAILED 0xE00A003F + + +/*************************************************************************/ +/* */ +/* iblockx and ibunlockx definitions --- for use with GPIB-ENET only !! */ +/* */ +/*************************************************************************/ +#define TIMMEDIATE -1 +#define TINFINITE -2 +#define MAX_LOCKSHARENAME_LENGTH 64 + +#if defined(UNICODE) + #define iblockx iblockxW +#else + #define iblockx iblockxA +#endif + +extern int __stdcall iblockxA (int ud, int LockWaitTime, PCHAR LockShareName); +extern int __stdcall iblockxW (int ud, int LockWaitTime, PWCHAR LockShareName); +extern int __stdcall ibunlockx (int ud); + + +/***************************************************************************/ +/* IBSTA, IBERR, IBCNT, IBCNTL and FUNCTION PROTOTYPES */ +/* ( only included if not accessing the 32-bit DLL directly ) */ +/***************************************************************************/ +#if !defined(GPIB_DIRECT_ACCESS) + +/* + * Set up access to the user variables (ibsta, iberr, ibcnt, ibcntl). + * These are declared and exported by the 32-bit DLL. Separate copies + * exist for each process that accesses the DLL. They are shared by + * multiple threads of a single process. + */ + +extern int ibsta; +extern int iberr; +extern int ibcnt; +extern long ibcntl; + + +#if defined(UNICODE) + #define ibbna ibbnaW + #define ibfind ibfindW + #define ibrdf ibrdfW + #define ibwrtf ibwrtfW +#else + #define ibbna ibbnaA + #define ibfind ibfindA + #define ibrdf ibrdfA + #define ibwrtf ibwrtfA +#endif + +/* + * Extern 32-bit GPIB DLL functions + */ + +/* NI-488 Function Prototypes */ +extern int __stdcall ibfindA (LPCSTR udname); +extern int __stdcall ibbnaA (int ud, LPCSTR udname); +extern int __stdcall ibrdfA (int ud, LPCSTR filename); +extern int __stdcall ibwrtfA (int ud, LPCSTR filename); + +extern int __stdcall ibfindW (LPCWSTR udname); +extern int __stdcall ibbnaW (int ud, LPCWSTR udname); +extern int __stdcall ibrdfW (int ud, LPCWSTR filename); +extern int __stdcall ibwrtfW (int ud, LPCWSTR filename); + +extern int __stdcall ibask (int ud, int option, PINT v); +extern int __stdcall ibcac (int ud, int v); +extern int __stdcall ibclr (int ud); +extern int __stdcall ibcmd (int ud, PVOID buf, long cnt); +extern int __stdcall ibcmda (int ud, PVOID buf, long cnt); +extern int __stdcall ibconfig (int ud, int option, int v); +extern int __stdcall ibdev (int boardID, int pad, int sad, int tmo, int eot, int eos); +extern int __stdcall ibdiag (int ud, PVOID buf, long cnt); +extern int __stdcall ibdma (int ud, int v); +extern int __stdcall ibeos (int ud, int v); +extern int __stdcall ibeot (int ud, int v); +extern int __stdcall ibgts (int ud, int v); +extern int __stdcall ibist (int ud, int v); +extern int __stdcall iblines (int ud, PSHORT result); +extern int __stdcall ibln (int ud, int pad, int sad, PSHORT listen); +extern int __stdcall ibloc (int ud); +extern int __stdcall ibnotify (int ud, int mask, GpibNotifyCallback_t Callback, PVOID RefData); +extern int __stdcall ibonl (int ud, int v); +extern int __stdcall ibpad (int ud, int v); +extern int __stdcall ibpct (int ud); +extern int __stdcall ibpoke (int ud, long option, long v); +extern int __stdcall ibppc (int ud, int v); +extern int __stdcall ibrd (int ud, PVOID buf, long cnt); +extern int __stdcall ibrda (int ud, PVOID buf, long cnt); +extern int __stdcall ibrpp (int ud, PCHAR ppr); +extern int __stdcall ibrsc (int ud, int v); +extern int __stdcall ibrsp (int ud, PCHAR spr); +extern int __stdcall ibrsv (int ud, int v); +extern int __stdcall ibsad (int ud, int v); +extern int __stdcall ibsic (int ud); +extern int __stdcall ibsre (int ud, int v); +extern int __stdcall ibstop (int ud); +extern int __stdcall ibtmo (int ud, int v); +extern int __stdcall ibtrg (int ud); +extern int __stdcall ibwait (int ud, int mask); +extern int __stdcall ibwrt (int ud, PVOID buf, long cnt); +extern int __stdcall ibwrta (int ud, PVOID buf, long cnt); + +// GPIB-ENET only functions to support locking across machines +extern int __stdcall iblock (int ud); +extern int __stdcall ibunlock (int ud); + +/**************************************************************************/ +/* Functions to access Thread-Specific copies of the GPIB global vars */ + +extern int __stdcall ThreadIbsta (void); +extern int __stdcall ThreadIberr (void); +extern int __stdcall ThreadIbcnt (void); +extern long __stdcall ThreadIbcntl (void); + + +/**************************************************************************/ +/* NI-488.2 Function Prototypes */ + +extern void __stdcall AllSpoll (int boardID, Addr4882_t * addrlist, PSHORT results); +extern void __stdcall DevClear (int boardID, Addr4882_t addr); +extern void __stdcall DevClearList (int boardID, Addr4882_t * addrlist); +extern void __stdcall EnableLocal (int boardID, Addr4882_t * addrlist); +extern void __stdcall EnableRemote (int boardID, Addr4882_t * addrlist); +extern void __stdcall FindLstn (int boardID, Addr4882_t * addrlist, Addr4882_t * results, int limit); +extern void __stdcall FindRQS (int boardID, Addr4882_t * addrlist, PSHORT dev_stat); +extern void __stdcall PPoll (int boardID, PSHORT result); +extern void __stdcall PPollConfig (int boardID, Addr4882_t addr, int dataLine, int lineSense); +extern void __stdcall PPollUnconfig (int boardID, Addr4882_t * addrlist); +extern void __stdcall PassControl (int boardID, Addr4882_t addr); +extern void __stdcall RcvRespMsg (int boardID, PVOID buffer, long cnt, int Termination); +extern void __stdcall ReadStatusByte(int boardID, Addr4882_t addr, PSHORT result); +extern void __stdcall Receive (int boardID, Addr4882_t addr, PVOID buffer, long cnt, int Termination); +extern void __stdcall ReceiveSetup (int boardID, Addr4882_t addr); +extern void __stdcall ResetSys (int boardID, Addr4882_t * addrlist); +extern void __stdcall Send (int boardID, Addr4882_t addr, PVOID databuf, long datacnt, int eotMode); +extern void __stdcall SendCmds (int boardID, PVOID buffer, long cnt); +extern void __stdcall SendDataBytes (int boardID, PVOID buffer, long cnt, int eot_mode); +extern void __stdcall SendIFC (int boardID); +extern void __stdcall SendLLO (int boardID); +extern void __stdcall SendList (int boardID, Addr4882_t * addrlist, PVOID databuf, long datacnt, int eotMode); +extern void __stdcall SendSetup (int boardID, Addr4882_t * addrlist); +extern void __stdcall SetRWLS (int boardID, Addr4882_t * addrlist); +extern void __stdcall TestSRQ (int boardID, PSHORT result); +extern void __stdcall TestSys (int boardID, Addr4882_t * addrlist, PSHORT results); +extern void __stdcall Trigger (int boardID, Addr4882_t addr); +extern void __stdcall TriggerList (int boardID, Addr4882_t * addrlist); +extern void __stdcall WaitSRQ (int boardID, PSHORT result); + +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif // DECL_32_H + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/serport.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/serport.h new file mode 100644 index 0000000000..503f25cffb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/serport.h @@ -0,0 +1,74 @@ +#ifndef LIBCTB_WIN32_TIMER_H_INCLUDED_ +#define LIBCTB_WIN32_TIMER_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: win32/serport.h +// Purpose: +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "../serportx.h" +#include + +namespace ctb { + + /*! + \class SerialPort + + \brief the win32 version + */ + class SerialPort : public SerialPort_x + { + protected: + /*! + \brief the win32 api equivalent for the Linux + file descriptor + */ + HANDLE fd; + /*! + \brief a very special struct in the win32 api for controling + an asynchronous serial communication through the com ports. + */ + OVERLAPPED m_ov; + + /*! + \brief The win32 API only allows to test for an existing + break, framing, overrun or parity, not for the occured numbers. + So every error event decrement this internal error struct and + can request by an Ioctl call. + */ + SerialPort_EINFO einfo; + + /*! + \brief The win32 API doesn't have any function to detect the + current state of the output lines RST and DTR (if someone knows + some function, please contact me). + So we save the state always after changing one or both lines + (for example, on Open, SetLineState and ChangeLineState) + */ + int m_rtsdtr_state; + + int CloseDevice(); + int OpenDevice(const char* devname, void* dcs); + public: + SerialPort(); + ~SerialPort(); + + int ChangeLineState( SerialLineState flags ); + int ClrLineState( SerialLineState flags ); + int GetLineState(); + int Ioctl(int cmd,void* args); + int IsOpen(); + int Read(char* buf,size_t len); + int SendBreak(int duration); + int SetBaudrate( int baudrate ); + int SetLineState( SerialLineState flags ); + int SetParityBit( bool parity ); + int Write(char* buf,size_t len); + }; + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/timer.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/timer.h new file mode 100644 index 0000000000..e750baead3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/win32/timer.h @@ -0,0 +1,140 @@ +#ifndef LIBCTB_WINDOWS_TIMER_H_INCLUDED_ +#define LIBCTB_WINDOWS_TIMER_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// Name: win32/timer.h +// Purpose: +// Author: Joachim Buermann +// Copyright: (c) 2010 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include + +namespace ctb { + +/*! + \brief A data struct, using from class timer. +*/ + struct timer_control + { + /*! + under win32, we used msec internally + */ + unsigned int msecs; + /*! + covers the adress of the exitflag + */ + int *exitflag; + /*! + the running thread steadily polls this variable (only under win32). + If it's not zero, the thread terminate. + */ + MMRESULT stop; + /*! + covers the adress of the exit function. NULL, if + there was no exit function. + */ + void* (*exitfnc)(void*); + }; + +/*! + \class Timer + \brief A thread based timer class for handling timeouts in + an easier way. + + On starting every timer instance will create it's own thread. + The thread makes simply nothing, until it's given time is over. + After that, he set a variable, refer by it's adress to one + and exit. + + There are a lot of situations, which the timer class must handle. + The timer instance leaves his valid range (for example, the + timer instance is local inside a function, and the function fished) + BEFORE the thread was ending. In this case, the destructor must + terminate the thread in a correct way. (This is very different + between the OS. threads are a system resource like file descriptors + and must be deallocated after using it). + + The thread should be asynchronously stopped. Means, under all + circumstance, it must be possible, to finish the timer and start + it again. + + Several timer instance can be used simultanously. +*/ + class Timer + { + protected: + /*! + \brief win32 needs this + */ + DWORD id; + /*! + \brief in win32 internal handle for the timer thread + */ + MMRESULT h; + /*! + control covers the time interval, the adress + of the exitflag, and if not null, a function, which will + be called on the end. + */ + timer_control control; + /*! + here we store the time interval, whilst the timer run. + This is waste!!! + */ + unsigned int timer_secs; + public: + /*! + The constructor creates an timer object with the given + properties. The timer at this moment is not started. This + will be done with the start() member function. + \param msec time interval after that the the variable + pointed by exitflag is setting to one. + \param exitflag the adress of an integer, which was set + to one after the given time interval. + \warning The integer variable shouldn't leave it's valid + range, before the timer was finished. So never take a + local variable. + \param exitfnc A function, which was called after msec. + If you don't want this, refer a NULL pointer. + */ + Timer(unsigned int msec,int* exitflag,void*(*exitfnc)(void*)); + /*! + the destructor. If his was called (for example by leaving the + valid range of the timer object), the timer thread automaticaly + will finished. The exitflag wouldn't be set, also the exitfnc + wouldn't be called. + */ + ~Timer(); + /*! + starts the timer. But now a thread will created and started. + After this, the timer thread will be running until he was stopped + by calling stop() or reached his given time interval. + */ + int start(); + /*! + stops the timer and canceled the timer thread. After timer::stop() a new + start() will started the timer from beginning. + */ + int stop(); + }; + +/*! + \fn kill_all_timer() + \warning This function don't works under win32 and will be removed next + time. So don't use that! +*/ + void kill_all_timer(); + +/*! + \fn + A plattform independent function, to go to sleep for the given + time interval. + \param ms time interval in milli seconds +*/ + void sleepms(unsigned int ms); + +} // namespace ctb + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/manual/refman.pdf b/src/mod/endpoints/mod_gsmopen/libctb-0.16/manual/refman.pdf new file mode 100644 index 0000000000000000000000000000000000000000..285e523de38e3d61bf48df51eef0e6bcaf4e408e GIT binary patch literal 727923 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 tSJ8#Y2Ht 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

mp6|9a)V=yUwS2LW3JF|c6>T$EDzej%OIqeHw zK3?4X+Q=kKyZA+P+xzR*Ei`_((L`Wgxc=R%Js9q#p8sG@&2s!y+0RIg91PIG?PY4fos(yvRJvV%IA>q^ybdc{s@Zy3+h zlB;^y&m8uM8njzW&$wJ{kQlJ&K7KPzO3sUBPqTmWMLf~h z+BkXl>_=8-9hYtB(RBXx)ERGjW#q+eD41v^Y?nTH+wiXM(sJj9-w6*p+kgCzc+HrG z8gl0W307gBFkQb{2&2t`QV-0#|jV(1(dmNT^8_kOgA+~`kUqXJZ>OL5>V<0d8D7T4VIz&t@pixdsf`&s z{fjSN{;+BeP>clVTxVyjpDj^an6n66E41;dMC(6I7}>9<-4kr zdEPsiBgovV3onk>2X>e#Xi8_x<`tBw77{=(Nx|DOH5A|^6SPbJx` zSG}>W82he2M&Ezl`I&DUH{O^zWc4o9D;G3IElKeYQh9c9xyt-Dyj}K;TVzpqC$3L( zZW16nGxN=gMGJRFj|pmaUf$&9!6U@3e|8=^td*afw{o8&WmRwJD z+3=ksMFTyxZn|EKNq%E@;@H6KKIyN;Gre28yxHpdNNudgfZ2L0joJo0?r9m^IPBO? zi^O1TmdCADrybH=xL7tQTsNj!f=Mr(^H~kYTOVl`QGB@0)|DR{r8L++CGqv_$MODs zeBCG9?P1=0M{2}(_5!8-<>wciS#bDO?#K6K#bnn~x+=nna8Yuh5T=#9PA@#(8J`acrnd5Z?t&)1%iKW(aW z*OHz4?3t=PjwY+Mf3cilH!;p-fX~;N{nzXmgmpe?^}aM-8|!w@KWXX}?6xw#)N1F6 zqb?Wg-VScMGkgzP1T~vEcBXE_gM%Con`}B@7rigs#o!&U_ok%b{IPM(&X~NNK2XPL zM4yPJDw}+!JfF|8Tjtf}mCXZZ0b|uhmt!vNy?s;eFXBAdXl$vo!|d0{g)zG|`d(@! ziaYA^bfGN9qt%>uce@TvUdVa6Q7bPqJ?k*5Q8#z{hsjZp^&VsuYU*qEd1L;e1v$$0 z2;=5h?SEqRk&6yXDSzla(cV*&TCFJ@rfQe$qeJ^;>+} z&n)kFUqM^pgqb~X8@r~BblX#lWUDh+Gb^iXH{Cg#@Z#c^uJ&)NLE8;AG^y(8H zIKSb?jPLzo!IENaO!#6>gA+Lm{0=@_;F@}=gKtT5uP(ai;hPC=m#rH$w`%=%*MfBo z?DBJG{79Un;&dm`QRl_-K--CNI~~riH*_`)U0V7}jC&=SNkzVw7oKlot$lNUAGa<& zZLFQY`MD&#S(e(ueAccX9POn!MjtzzJ3I5X>Ed3;J@s<3FJC|1RK-!$_{z6I(*t)A zMRh)*b9ZZT!;913ea%?4a)am3)CK&=jhmkJFfW>B`F`B5)`_=LA9cIABEG2OUezm1 z(J9@PhdPI;t={1Iu5X>y_4hBiJLXX5pf2W(Qvz(|iQhBXn(;{~L4`*wM9bV~1or46 zl|7yBx==W7K*7iC2QAQj&1n|BV_y{gdbMDD!rjNshNQI^v*#+rGU7CT_HEsa#(}#A z_ehDbeLXneV@E%yM0KH#{h)qpx?+}$T=?C@#O1@%H1e9J(`P4bnpN;d}z8Af|arpE&|52N?o5pkwySjFRr|t+<5A8#f zP0tfu`VLJMhsHlzy!GeF>GoH~$Nso`UdLsK%FMtXDG>f(^G~xD25#TC)p1a3^B|Kw zr;c1&b}Q+_B&Vql!|OM9dYWjd`(nAz#EEg4YBPhnZ3~It$s267=grV9-Mr6cd^kIy z!_Hp1TFWlaoh%S?=baA-l78?nBR78JkT@9@#D@3^}f z!&Nx%XI~jNv+=f}>ovzW?`V?x>cK7cfvBAQ4_l01+h|I{mub@X9VfT<48zi~1h?-S?+1Z2D<%SX5Mci;l59-EI{%(cRVaf%z{z z_BYSC=r_EZsGgMv1?+&I(fY)896tuF_iPCfbXsow;<`i?f9pW3c(V(|cj zn{@qj!&e)+cAFY>E@jWwiKN~2)J+dB=4U@mi+{XkO;RXJ#EF7-_%;vvPmOj7+56&P zxD9FcIMoZyJ|3B^zp(46*Ji;M_wYJ0gt!3(%igC<+lD@-+cCzP$M;*sEPIz7U($c^6t`Duj+(9KxNz3tH#=bEU0XFP zR>1sfHZ2ebq@PY*?~}#t=M=?UxSwkpW!@z)xi?6ks4X%&b?ar2BrY%1CeyD- zFHg0{dDlD9C9&Tk8t?0IayV0`AGU_N2JcRMOb9vcVLFct_5J-;(Tjf+WVp=z5N4_+ zwDa~eEgJt|Wm@NXvDtIkPBZTGu(k5t@;NA{;J&@X59YgX#N<3$CnsFOXoOJmHG6v^6d_ul<%$4|im?l~$u_WHeUh?&>*PBBP#Bpq)lWqh!))A~RR7 zPId$UMG{*OU;@4#&R8(25*MDOXg1yh$1(L&0Bli^1NTmL!En<$D%Ps?@s+e{Wf_*gr}aA`r`0}L<*=U^qc9bR(!gu6`!tZ1+JB{#$fy}{T4-> zK)#Nw*0Lw`o9XgaAbl+Rh%RqMGK)$Z)8(y*Gqdao{boen%AU|~rpsG_c$NN$eluO( zicqqaehZoUWq;6brpsHwJx_l`zZqWfvc~kA%bcGGfzU8D%0WtcN(10Pu~YUf8URNK z2}|EYAzG-$^qY~pRQ6Gs%pj{SeIlT8|IwJZzNt0>8UQDt(#WZg%HAxXN*q&9%HAvh ze534J^qXk_oPY+vkvyQ%HdLY{`8pi3Wl!igQ%QH!NA#PilrriG{bm{fC!hgvzyOuK zhX%kAV$ISw(*QV94Xf-4{bm{f2Ohh!k7xj#fCj*Uk%a!JOwT|W(NAcZX#gBDPUw$l zZO{NX0S$n|3M*?vSC%7j)KbCd%5sR<&`)TY>B@2fy0RRCtz~WKH7KChpnzV3Bv-Ta z&GZ@+(3Ry7VWvMSmH9W+UFia+UES4;^)Qk1LV#?@6+)glh8m?gK-&wyI|A*bWQ+2- z5()tVKGoUU3dSUyT?7qSE*KIN*qmx4K2{+Z8P=K#hUl0841*{`M@vRhnt-AN>tOW+ zt0Eq zP(GkomCnc-udQT+R*dYF<&yD`(#_#3pZi#qU}R^gtzZbfA^{m;VtO#a0trB+Q2B^r zRg#enrM8lh;&lY-RUsKk*hgBE(m~iNvT>-|nKhP-qDn>KG!CMjOl+~`n+EFE0Pt3w zOg_cTuiDhap!ZoGiSd&qS)nw9{~=v9GG3~Xj2thuRvKZT10{SVr6K+gXl6AQr=n=J zDkOnn1obV(lO(SqVX2a6NB{r^y*4wAvQ=xUH2M&zkgV(w;8j;J#iWv2)m@-fMs5kD zuvaCOAvFQ?qt)0qst}FXC^gktxoChKA!iR82YsXy7=5*nMpY!FQTK~li-u7|_038f z2f_TKHdHmvfhx3Ct8<`i4N%2nfc&VWH2?{a1z(LtP=#o-%P3SvrPSgsOp!j4OjZ!cBd3X_ z{IRa6v)VBD6FE>H3~~VVhvYNDZ%+s$2!jLo8kp5F(yEZG7FPk#n&NzdYXOBUk+q7- z*(^{H0AmMI1Z2e{i(2`$S%qZeGF#Kpqz+8zjPOQqNQpt@i^80R&NxW^CE)d1tN_aM zQbWlIK$6tgB1KUk3IR5gd~;klF^H2+&o#p0D^2CtRUD<*w{{LBUvpD0N7?gr4YIjh{yvy z33fBw0NC)Ops*)F6DxmgRx$r;x&QM>5j)605Fc2XIFT@-7)?@mmZw~;O)4Q-ai67} zi8Y-6DDDlGbuz0+)l(*p0>W0pKz1!;g+qa%T(M(HvMO{|i;DoN(m*oMX2CQA-UFKl z3l3%sFC-%#g=!!t6$Psu-#N}7><&oX2HJuEdI%vCiXH)}1&0DGUFEY_6$g`Y|JHag zK@$ODDkMmQU;q_;F__ra2!jusI21Sx<(H-cDGu4JYkmNbv}06PW@AAL;D<&%3am$5 z?no*(3b`o1FsqQO7MB1r{XxnPjR8L_L@7e*U;=3mLEXWh08>cm%}g=3obuP#bS!an z<8}l&0OAx1a3GN)GoT$q<}q$AC{nBZ(Nu+GwK)KAm?OU(P!!-zLE1xz#^KH25d;Wv zC)7%=+HC&>P)#_5P-Tcg=xYc`6ixt4GPn{1JdX0qvI>ROX7?w#?Susf<>pX606tY9 z>%j0uhLRXYjQ>a5o5xetz3<~`P{v9s(qI-U&fste86s398JdJhQc6l?iZY~;6pbjQ znW9t@nHnXHk_aWK3>lKC@4fap`{@0g^LqWxwm-k;pU3Oac3FF^b+2{b*LB?l>^68H zL*;@&PBLU12X_FtkAM;p{SS_`AVC4c0d!s0B48xP0~d+Cp8_*n2P%8A&~FCR`%tbx zcXJ)2X+}*Zm`nnCehT+h?tkpO30Ej^XhcHu zK#8s>P|ku|FcM;+gAl9$Edpj6yr7ZT|DoT^EU3o9#6sdt%+>{xvs9=*BCHhX)yMas zaR+m(iaFR704{)F{sA)$A`&2k3jjn)*wtVZ0V+7E@EnvJ~B3f+Y|afIH~ZzHhBOe5dtXq%S5g>&<+Jg3V)dhD%7C(p8q_6k%|Cd z$t9HL0Y4kqH5i7k~!AC@Tx^l!i)S5R)JoifR>bc!U<5 zgC8;$b78Ps24|9?`v{__;FApYUevOR#JXfLDFzLUoikvm4^b%$&lw=!AZY$fVqLPR z9fL&%S!?W~1czEUZ9_g=2V5F3Z7E#UA*ap1P?Br@d$=XTErO| zJdlyt`{^iA4F6&50*C>S(!h@W0E{RRf(I}Xdq2voKt>&K0J#7)y#!#8CSbtzTpKP< zU;@H_T9yYg5}QB7A;{ptUXO?nP=%lXGFYIRz^y=72@xT9AS1E+1D^)c|G;vBv7SP{Am!!G3#g!34#XIRmhQP0aSt{2p-5t`&d7JLe} z^Ke>Y@Y&)SOZ@XdMq=;B*CmHxz*(2bst|g0@PCQp21d#<5pqy)_kdRiMSG|}fKL#V z;uz?fi3kSZ3&Z!j2bg1!XJqQYMy7>&HiPjK-y_BY8JWEwjulMAR7NFxs6T*n3%YM2XKSdI z0K^>W{4CYTU`GujiJ+y4 z^9zsz6cCItdI5|c{~?nXGBP0mLM3n=2IvJeC{oZ6Z;&v(fEO|{Apk1AV2zH7_E>TX z6{n%(irz0ufdb8o@7Tl(8JQ3O_acZ*C|a@!2B=D|gH$kR$E6W+4COv)V7<2nJJA@x zBg5QPVd{gi7#5s>{{~f8h^TN0<^MQK;oi_NE!3cqK_N#I6iztB00mOmV_6gfx)y`~ z+$S$&WMTlz^9&{$%s8k)Ak#BQ`NLpg90QO!5m=o(28~n{fSj2YR=8)A3{V_^j2>Ww z5-c1a`CkJ(kde6rz>Ei~54=w3$^vBwbf`tGfgo9hNCu!MBCtHUp^-95JB9d` z_{M>F2B0V6KXy{MS0_2AMA$EoB#=WiKo=Ayl!7s$0SJl+EKeTL$ixANP*9eDY9@7dye*hLui z=|Y`spcDc71-hbZqbdbqssRsZr0xQ6N<^JTI8*~Hub~YYTLe~) z5+EuNVjRGQfdA#m3mU0N0QEUw?_!3>807$^-YHO`2CxJ<2fUz>i3D)MprE2AA|1f~ z52qn`kI;$-MvW-xfV(vu%W7b-Qw=RpNE~3zicsf9v_3($33_jWwS8W|$OHmNB-5c; zsVpiuVJ^sUt%4?#&|8vdb)OrVHsSa6qdJ*&zSp ziOio5GE^M?`31NSGICSF{u9>gCELi^eP{DcnP!+SWw|0eo2{TK$8!tFZ$?JabjUA7#U7IN) zY&c4JVg0vf*Ob&RkAAEn)qBu++g6vGQ*!L;Ydhm7{-{;xZB2A;`SNa9Z*Y`AT2*dW zTJ!Flmb2RV%kSkT&XzLpdQeo7=QFf4>%0|9w2G>62Xludw|u^@3VudZ#gbn~RDxG~y0@|NE!Cwy`MWY~r7Z zhmBMPOWajQO&jq*x_3tAz4W2M>6;bP3{RaF_Ysee&FSr^>1;`DZ@u$HA!BKBnd#Kv zHZY~?mDCr^j~wN^E$;QYZIa1UUlp@!=RO=(iBX73Dr~qTBdxumwzsKf+wXUgsckje zwgsvUPcu)>sqntgFtK-xOkBQo-`iU4vvF^gdYy(&0KX~eRUWG&PVDI@jcohy@Zqbv z69un+)_uwAcp6#yHS!h3Dq@u{-L|3R-YL<-(btXo9q&~8QinU7{qjty*Md4`Zn`UV zpM%00v*y^=Ccpc$ltTj;ONTX;?UNd-9vmemeDLs}Q?W^H@p#9*2{^{ohy2A;9@x5X2^R_J)tCzNjUmEK(u75^1SVX&a**>t(uUG2odG+(p zVmaSO7hdluu#M5^l4DGtd%F9Sy!Q6bUVf8r_2`F8_!D-V?7Cao5$`YUys!8GB$ zxna7`EpCSHdEo#rL~^Qp+cKdk#p#qvrQWp-=+Aw@lo|gcf82MCX&V;4JNN#Yi}TI& z7}?`dK}9e;HLBFy8db&8uKiO_+0Ux6c5?yINspHgYO3ivP(~hH{&&2{)B~lmnP=)qJbPL z``1kMrs5~(@S6)C$oRUfyk?`;GQzM>@LV4Ja9+)+M$KyfUZ+nYFf4gW-lEUbzW0us zyh*%hQM2@Gi>UMFeY*k5uM5>Zr(7qVThx3tUMR%nwKcesxlI(jB%+m;{-tC^#Nm+% za&ec|O+fR%@%U?>^_vr)s~Oaku0*J5KA|^TZk1e!`~A@Auu3wR#*s%>QCDm1~e#XyF zJU!_AJnfo~#)yDF&G};KLE$kuJ;lqs(*PY7r= zVOvLWP@{iEjnnDiX|q)Q@)M_gnh5`(Mx9A@50dE5Z2EigwO-hh2j2Ft$2elMX(-Gl z@lUVU-Cod;F%~SL7naV7+x_vu-tBvG^s58gN`4#OyBn+=y~?v)wgrY7A9V`EseN_Rh3BnQhdb(F_&6?Zz?-i?`l6d-;p<>lx{3Nx27X zr_&Q$1J6lB=PbOlsK|H}-Vxf zlP@V2@3Zd8U|t6w`F)iZ7mS97RE^hI+ELY7EV$pQ>f@_N-7}j{=k6%6N_Q3azA$;8 z^V{&7C7U{0LgLf4;@+9ntzJD(>=j9&^8@K8hiR&R%du--rai8W=EUVX0KA` z^;^bXS@$VFKx$j}_7&6UjX%2!1@~VoZE{JuxHSlV`?b*zqE$DhznkaLlWpKx_Mu~s z*rXMS9}i2`I`=RG`n}#ot}5!f8d0#T>07sKX4dy{GW5F!+2)7NS9H8@bI3Lrt}ZBk z>_(V=>i1pBIV%#&lgc{Y>qlqayjFVp{@V^Yn8qc^^cQE~+vQc)ti4|}bpJS=Jmz;r zDeGUatG`-Vt?lh+f2k?SVfNg_Kc~XBo;w@VG|7OI^hovoY#qleRYj4Jmy0ClqXVrjP1sdRj`q1F;S%)XHd+ZKI=@3X3dL7*Z=Kp@9s7A$j=@-qte4FC@%-wg$4W@vrY;L zlwKSDRVbuW;5YgQ)x)={l~BOk6(!OIoC;EqPJGi&l@%*qLtjA6w;g(D}3#f z676)$M1zJzo8js+jwHW(?lSsZ{1c121@V<)v*V^&iM9Rw*s(^35p*Zu-sd0gts>G= zZ42|ZPEj-5ru=~tuZ(t`uP>{7f@WUNe4*R@F^ry*ak^`}=mbsW>{(W0J_I;P$k1n5Z7oe|j8_WiZ*&)WaM!F!>`Ga@=mCnoFxsM(@00^N+!bs?RFjtJFtK`z|tc z@^CYmrky>j!$$e6>!hYF-f$!MOuLOqC^43mtT7sX6r&vbbxKl@VHA@NR+wRUNWV_J9XX#8GQC9EXsT0CA( z2!7&jz3h?UjEJ1b#%B-F#y(r_+0(wG=J&(yJezrP>IvUD;2xW>(^R}%W!J8-EtyqM zRxXgO722}0DJxdAyncn}5r$T1l)Pis>cZ~qUo+3V)?8Ci*=RRJ{Bz`O>C~?MZR~JU)7FO z6jm5(Jx_9T?qcEPTZ*;AV?OLtaiom6KIwYLPt)=vC#m-xChpm0oSe{ewa_QEINbBQ z{8%{b^j@ESz3b=h*OLy^*)X;?%8#|4j-K(!!1`XO!tCC=7x$t+JM>|6VSU!P8pX9E znkSgcpFX5oAN*8kRJFcd@u*FT;8!|-&WxApA^LJ+!=jet7#kIii_NL@`SNC&f$p{S z%ce(7kJf6lclz#PHA=+X=Y{&|6zjf)dU{VME-k<4UjF`sQ5qbMoc(9a3%o17w=yl> zICplS&cy2MU5g!4b$r9esTDn2ckYHzb@-3=lQ-iHs_Vw2NQKOpcTab6^Gf}x*F>J) z6Y+1K&l!OuSL8WhZIs+n3hz(W^fCj(s{I?f433$4xnrXV<2N zNwn@hO8LFaVu+gp&8C7eJ`PQDf$JV)C0gpvg@vXEuk7r(9GTzw>9eQGMW4h2@bl*> zzxCXWKYuqFW0n_PEoqD9{QN@W;^N=ozTLvK8E!#4EDOhlJ%L{xDD__R%Zg=-_P{U} z9K0F*`ggdC#+ow@T6dC!`dk|`B!X`1bR2jwUp~6_*}WxR#%Ff}P=e?e)dX zs@(-e@jdxp?o7SuaK>RB{A353j@MjnIT?A*MAPxd^=Fj3+B2I@7-X*29T6X;l5+4) zwPmkn`myk!bk*BvF19{&eOS8en~nDr^_lKzKVYPWP=7Cz=}BfjTCi*@8iKlm;}1T4 z(&85otX5n){>r*j6;_4g)E-s(=m*OUPtIXIBiUO(-e7cXRSBA^7j*pgHH0^ zXZMaCmM}=C)C@auUTPe)9yuE4DD*xiuG{>*cE@2k|eXg+Cl_z3cEba+~oc*l-kwiu>qhjz6wzh_>)3N3XX_7H+Yuy5)Om zrs31Rw}Sb$)3xUMEMv}1uO0ewW>8Pd&HLN@q6+hy9_**)$Wsc(`ChFA-`xVs>{uI@ zJ8Sn8f_d__y06FNuWxkQVBB_Zv0}tF<7-EHPTjEaTo;j+lmE4EW{ebCb@^>`U866{ z7S(VbqcqNVWa|O1z3`0m4ad5M$y1c_tDRB9>ipH-DGfk|j( zm23B-;9dT=DNhPE(&uQr{)Qb`Vv45#^*N-4$_{$DE`gcagFSFF0 zP_Nu;U32=^)yrms@AQ`az0$SUU&OtuC^vwg|6qBw zaLv!FdOGQAtHvA@i=8Po{gwHHC+5zrDQr zw{mLaxZ5lK?zvG{Gxlw4w$(Og{a3cU*Lha%qE4COw}xMyTK{$t z5P>__?a&b$z-#&UpIo1X&LMxd>72hKGBl>c<;=cb!?>8`vD|*ksF&VAQjNFYGAl0z zM#=y9E$aYn2GVRq{Fa$4TjGEHmUVy_%JOl=t&c$okAH%)eYPOR!mW?NNEH7B``zeU z2t4{3-1=Atw?5VZ?hN}|tb8E+4E|)0ZnM9IN_p5n$DfQ_AM1cW5$jvH^|20aeT=-6 z*x$mRj9VY;;MT`FAU$IL4E|)Si5vP|z%F8a3%5Q-mJ{qx@F(Ne$2z$6F|@PCe+GXt zh`ZVU3Lgz9y<(p*aqD9yZhg$et&f?w^)WE_@gHVCnF&=6_CIGo8E6dnC-{?b>tiNv zeTI&%vLJTOWf| zmi;Z<`WT6VSU-$gA0t;m_9r-ImhCwF3f%gbiCZ5-k(K?!xb-nO7vZ1aPX=l$>w&oS zF;FP*Pw;WZj6u;~!CIy03;fBr{Wv0qvz~*mK_~G;u zX0O5j@mppsa6I2n)Xe}G^_s}JX25V6{1sqU5w=^Va+58wKX%Z-Fhjb3ZHwu`Dj~6nufeaEE*oy!w54L(F zlw%^#cI27|rC%0SLe|E-prJ)PNNAwQgsBE|9*O!`-o}V~rU_dh0!sr%GT(#|UeM6C zGH7T}!UPS>Ki!U+G zpZ`JQCc$B+pTQ0qklUeuF+c;NAb1NRUsqrZLIgp&K0?;UR36As_!=xSpgd?JiT{9s zFibG$3IKyfRNF`6a$N>F4H;;#-)cj!=ZO0da|9~Y2rNNyA1`PmLIGw|qzMOFj=B%C zDFV+J;_5zL(8z=WSdBCq9Ns||$+i$?z~pCvB`ELX1q~fm20PclHUkK%pjQK?AW)Hz zxf5&|aN0roK0*${ypWLy1r(5RKxje&KOjl59E4%e5Pz1az>gO)GLZmYC#D4EI0#eV zb%K8+*w7Ny_|dp*mswY_!M;vt%%KB3;{lN$NDl!ldcnYIB;+B?V^<^P)Cggd4z?%% zKm*wVcpby25r)Q1A}3?j2$U(-VS^(;qySq<6HaP`?Tx8CkdX=nNMZulV~)Qu%Wnrs zg~4E$Ng?3wMCB&X0#j`8I|u3kgPI?4435!M1FAL%*?`{&w<`jnod+~Bp#bDBR61-O z9EW4LZ^O9~whqD)L|&stDik1-Kadj*cpL-&j0V<&m{TBis*=5Rn4sNWPDeyr7W^ z25{_QLYjc%bBrA$8G{ib@(2c4_H3}DhIU+JCcqIQqKytL;y@!w)aaPTolziV+z6*e zNEN}T!G#ZVI>wy-;H?suBJzSpg079u9gs0Yf@-$aF=l$EiRKzXt7Bfs$OHpCKg5wD z!uF5yLr7FX$my6DFfyS4PCX1nxrgb6IUS=V0BS#^4{!FV!EPJ)#Tc0#gQQ~MVoccUm=`iK zR|5R9!ZAC>FDnGSj%nPH6GAenqY!rLrr{z)&Z(QQ+cB>pBa<4!kG52>x&b>xAmFo) zwuIe|XW}}!29Gf# z6#>`>TPnxz7(dt&79rBOZYr!|*fnS9wy5y~6*V!yIyj-zBYcbwmi()nctIl* z1kmrtdSh^)K^_KGp@<{nx~QP02qZQR_K_Q!uD~S#u1;V?&N^~K?--P1;9r16;{lCS zVu*d@=IA3iM{dIUNM6v$gaLS;aKeCzg-bUn@II-?mX}47WMm=%7zWYkP!#4UH&It7u;oNuMu-_j^Fl@<5TH^b>^y)B7jB}u zCll(8#I2%vK_hb+Kt3rDC8ks-<_ar(<`!IQ=CfEnT z45Pz^crfxvI@g7m#s3)W#(`gmq3aJ6f1o!x=Ryowd19{2yr7YZ1o(xRBi-a&h>1!! zc_AYc2=EIrF5P6`hY1TedEp{)A7CrK2Y4JT!8cqx2{Sq9Tz5NU3OVQ~0A~!$0gBU~ z8pPi$2Pne6%v#)0fRvvjY9#{RGC+=Ccc_M@dEkRQ2qFiMU4xXNBg7>Na!271IRGY9 zq<{%Vn8?B7bz-!yLGBvRfe1Cd8sKrzp-&fZ0*N~_^8!X92tXMCPCIZkM%K(&i)tY0 zz_kFla)@(6g^Cp4cPL)aNCW}o!UK*K$nltM&Wtqjko7}8(vZs~(xaNreZ2!^`=D1R z*!Lp&{y#mcL70x@`@n}GYR}9I8i^o)@@3knNfL+1fh8e&(8FwgJ?)hG%;sS}m}Q5FX;Xk?-Q+)}hr>5jwVpg|;s zZXN&)SR8~JL2GfJgUI?if>Ap1Xa?^a3UHxOQW>0^5m%H zHCX+EKPKEniMFWbg^WxXK!qJ>?g7LIc8_Z477TnoL@y!eAnDrfh0Tlu#QY~VGY3R#M@`1L4!3g2!Cr{+bx+$fP5TLgK^Z63$@Qi z_U_uk005MXV4y0BzR?uh@&K$4->p%^UxXrZ|7oQLP&4a!X zz-bYg)565UyJ({r1s?!301F~7{*!6Eppgs(nozeGV3(j>O_K@3hu9^Ae6D#xBNYpP z90V(z!+SxUKY(Qdi-0gP?kvauSb7nZ_@EmeG&Mt15;pGzyWwf06$=SmI4JR7TjUW6 zFg?{^PinwAr$9=SLoNYpYshi{YniamwH9~Mij=n_=q%7VjYBU%7QYO1PbN$+;f0Ju zfdG0lvYb~Dzk~vj3dRaL${^=e!UPju&`3lA#3DgG{RVul5%-IVI5|Z5CA^T4i3C{Q z1=awknKpW{R8#^&1QT#pC$I*1%rr8Q0J88@q`Vj~x`u2Om~s>Mxz^%N4Pm;)!LCj~ zrcDKUC#Rt{@+}AVVX*8ZYIMyD8ks=AN~l3G1roMcM{RaO4X&X?J8JWSMj{ZPo_f%# z3(B!@Lx$rv)*cZ_T?x0;<^_z*l>oLhzyZK;A_v@EU@O78Y(p<70@nRn+_?lE8h4`& z8+`nPHH>|HSG)TzLpol~6&mw2EHq4(q5V%2vaz=AZho@M&`t(5S17*XWC*eXG%q zhHbWl2?@NAkqHC1BP^%xj}|B92urx`&)~k{kx><6ee|?}Xv-=5qvZ_nT;h(_+8Ho!4)<_cdMd1|wVZ2bFA54#E9?;0d z0qCj+t>qE%i(}c0`bHpD6VWEoyjB6JH~^PV2u}lre>xQ|pOCyI?u*Rpg_4N`aQVc1 zk@33!fG;x9x<4;uWO73g2{2=1PTe0x0+ur}LCa>g3~#pjkygA;-=5tqxfXGuEmj`wu?Snz89XW_PP6Lnzfr?-l~l&uC8C= zB>CHKTD!F0+0bK7H}YE|uZXTxO+MtZ{MxnL$u)1*bah--s5O}SsZCDss^_P4InGpKz<3oS@Tcde=O)*KQ;Sxl!%eX z<%R82!T&bAY;~~th0dM1}Z`{O^cL{tczx_h4qj|%%sT*cRkI$<=daE(u?1ACfU;O}_ znI)t`<5CoBtd&|WOkHG8hOsuW}G=8m%bKO2G=XMQU zyI^~M;)=k?#_JJ}q|Nuad{d}CsTtV&^y8cO{G0Jx=V}Gs`ZhBJ8>%lF9m^ICdAoH+ zlC|TniMl(-0w!Ub=md#M)fR=~_QT_A?rV;ien!y#?W&h2hGPFj6&qc_X&-u>Th=Vj zOWtwCXh_)D)NN|FzvMp@eJT2EXr@Ek6y&t5W!SMyJy1$o$|pZ@M3asF+h-@-OLk3= z*tFqUl~F)oJa`KWmbCfpS`zB@R;c3ajw}6MBEw3~ODZn^IdSn5pEMciY5O`$y2_Jc zTK7JXRBX9(?{k_*V5HW(BqfRR`RktbB>Ja1yi<{!_BT~?gluTap^Ujc!aB%R^ZcAf z|9#G%yJ-n(&lG##OKyari*nwiI6Tq*_}-E?3n(=ghnnu}92bl{yqPue!RnzV(bNa? z@}1{(p&#xFH~5>-|~n%<@h#U&gl%CN=~HDjj;lvTX(FEje=Ya{x@DP7whJ2&{6*&Wm}eV(N9 z)0Jt!9!{dm zZX6NESh?%1(8!zP?Vc&?3rt3@WoSz9x}loo!WH9v9wZ8Vg7+dj3jZKC* zL&NtBd4DeX+H=92@h{NNXAV6dtX{L(t#tidutwgj1Aq1I(L1E`w@LJu3rv_WEWtxG zQ1Eh<>nCKWx>VFQcf8ne^Vkc!4VH;0+Z?2IENS|qWcDJlc}n`O-?ta19r<}mK8pHW zw{?eIL zQl>v*nIl5}-WU1ulO6cj_b5xv;%hoE@!Wo+n|=G5Kp@? zF6$vo6PMw~sx2$$%gt~yPK@|DNB{X4t@g(|sy895TC*=!Kbh;09`L|ax!37o zoy`>chHX+;!k*pQo?LhA448j^da==ST9}JZ_E+@2E1J#)s}IfVC@fsrKO)2>Tl>t8 zD>dDl!*z}>4w`bJr}|d*v}D!W-MuN9#naU~ykA=li3D47TbQ`!Lc(i$gxAiPm!Ig4 zcJ^Jv(+hper)Vg4`T4J?{4ACH$h)li^F9R1$Ml2HkLCc4KO!nC(Tb=|72VYJ z^HKL^W)IV7`L0-j4|^-oY?a*Jm^Fbp*Vy-P%bFNHyT~^lhH~>ZQjb)8jZdAnGABgr zuU>ZV#;y1JTYA$To#UqD$zK@g6Y;R59RIvQr8YAa- zsTN)xq3%|Tp3#Dy&k{e)O!rk+ZRmeuDmc@9_7&RZ3GG|lkEhs6XCGG4DZQedR(uB~&KvL1eBJ^YM}{GnSPoi3FWb@wGdS>>pw^EVGOp<>_9bJ73${ z1ge5h>bEVmJ1Mj;E~x8F$B-a6OHhVi*%P#L<@@yuojQ%JEL>E+AFaP-;FwqYQvbl7 z;V=Ti+a0f;JE^qv#XBvp!#iS9LXX6%#a^V(+@&!~T++hp(I(^HiF2xRn6<2U-W;CYj_JDQ(`5k1RT`(jl2O}iPM z^tXRaj<|^GerOW%Pno~^g>7*`h3c)8H1$`?Voz+s=!@m2XBcFsU#``JIv%RWLm1;8EQZbDL9@8*H}RW{k2g?2{=f zPfE7ld2__lmk#3_5AE1<+jgGtf(etZ{=IExEBp9;e~_#9it&sL~bKlWASkbb0Y^pN7wi^iNIrvE|h96eE=Y=M}>KYd*hPuVFuFX7V{zbwfJl*5f%yoOReU=D9bdeN1@#m(S+#iDlYfXR1)LQjtnr(+5 zF|TmAL~%}$Ztfz_0D<=A<-^U4w9j~C92kWiE9&3J2+=elSw@?SrU1MsjmP~K;iZl^f^2op=>Pzfw zbz||@=S9sU>wYeq^?1gE?`^LxKb-Bi?8?5N4=Rp+=l5cpyy7uuJ&EGB8_HwsZ8VSe ze)DU^&Oaa0Oyxcwl&tvVR&6XJLl^$(>V0peXMFD);}0%k(bFH%G>z(ZF89|lnn;4@H zhS=&~|DAv5sCRQ1n2f7g?%b~w?qKyKHh1abiYpn*MRn!A+@G)TC-}sHRU=nVTM{Mm z_;>03M@dJ5roMf8e?*9WPsJ6vo~St|v%lUFFEwa(Z~n1Ybm{wv2WS1gl*H_r(A)82 z-Hqq3glHcetxtVS{ic<#ablRt%gEMtO1$_jMtVkaUEQ#gez~isBWHKn74`lcB_oy2~X^$9^6OVJ6phc?AS?l-*AZ$#$Bb_;A>0lOLzHdR%zlqp8U7oE$OS zu}5>Yg|oisw?l&Or<={cv)KI5&mT24{WV4Ptrh1g-+k=tZ?ax0{ZOx^I$hJOtN3oi zqEqghj8?7~eh{9|<1hl85a&L6zgI^uX-SmGvT9J(rcr=pqXax}sdJ6g#DC2~Ef$}@p7bu;AzQA2l znYc?T6L(1k(>nZT&{ZA#VU+K~zQCW1d0}9m;7`U~Qkl3*D$>ia{uQWG*k9mJhKw5f z6a2}T-Wxp-a$M|h;ZJ6}q(VxS<=zQju$~NGu$~NGu$~NGu$~NGu$~NGurR|HtS7@4 ztS7@4tkHnXGX7+?ODcSVKbh^43ZLLl2Ie0^2%q3jX1k=qC-{>wi39o>wo58}fn#R7 zq{1gSX0}Tze1boj?UD+g;FzHk8ta#`T~euHT| zrFf=^U?qhDc|58P4EsMuqe$ux<3?DZ!r&&nVC!bk&`{q$SPdM73X%tEq1-KDg$j3W zkBRvm4;C8GTaYS|BT#|FAlP2O`XX#K%4^U_WNKm3uw65uTdoe`D05sh2`f~1KqKY) zh5KAEkQ0aw>?Rza3uHA4?qB>D?RY^$i+8Z^6Zg458WoBrY!R4q4>Ev+(mEllQ3f|l z2#W`UMFzAI@Ka$)R9IG{Kr7J(V?*K+6<*NL&N*0Uz|hb^#)S;@1)|7tTows?jWW1d z)0ngPV4*?H6|;=xNK|mE3&K{TypW;bGFW7|ZwW`Cg8P;bwi@My48^3uBE$Uxkw}FG z;gVxqf;1{XisW0R#cQ6SNH$ntSVbM8EC(1?QActbqQJNXDwsF@V1ePY3~6UT5(2vh z+faqDbcVqL8Hp%>ULDIT5DKxHSkG6i>{P=oRX73_j-?7wfeJ5VWTF7D zO0_S+e!r-PaVb`0%ju{+nwLu^-AOk_m6G-|X^C9Xo$_pBqD1dsU zBg;aL41@v;6@og2xXmapXk@|wP<_Fe0aI3JgZu+CAE43TZi5_A3CTbh-1;%>PCD54 z30yChDJ3%8U;=%W$1H%zZjA%K;j0N(o{IxF_?!r|}pxQjvgd zkTc+a3U?RGAP4!M5<>RhGa6j`(fxL?V}{NfzP6tWN3L2no|AXFkVjmPUG69zy!$<%>6*nssZtXEJt zBfSdf0;vRuRlH^znfm~eW&yo+K%RokgqWzc5n*`>ulGqN4#3-E!0ykHr%+%kW1vul zNv@;}uA=Q{pp8V_h>0s-jiAU`!A0inQQ8%#N1&>*n@c|ZQw zz<;lI?9#zt!vGEpEI}Ym3dctr7-28Z|6c9@7?~)51H)w&1Hdr3I03s%9wSC72(Vuz z$6S#!V(d6h^k0QPPC zFH0W4$n5_(Fr1J-01Pri5Y5TFN-}0&6dV{8-PTd&9iL+qIv5dX>X3PrWW2sOz%)Ss zPJ@Et05CX4!u^xXt0d#}g#sn0c4z}7J5VJ;Gy;1xbVOq?NWDrDJO2PMI3d!Z5(W{R z4UB@)kPQCsP23wSR@xop&d&jcDo-F1gTn?J7%DtLU7OUaB(d`k07E%$uuvQThD;zq zaZO?$!%E+zM+{CAG*lnvj2IL!pnWIbxOlut5*z=(fT1FV7Np!cxIi?+1SdYef&Dkx z2owPl8$SmavV?*|8PZm>=Drqkq=e>jWPp*__y>T&S%M1JHx4dHkLqXzTYGdU?k4` z9AH@EB29DwW&@*x+FBdh%#Z>0f3feQ^ceVW4{Wb+HiH`+fk???#7HE5psgO-Bp|&4 z`Z+L!MPIxcac@&PdIVS@l^Ddc;=NQj1fEFgM9H)a0kKbKb_Y#C%We<)38qTVvFLBL@Qb_@VS z!FtO;_ykcW{|kV^eYz%P>jhDgNrkK(6iVQf4=G->SedA;G|Cj96d$RXMq>X*HZx4* zorwC8Fo2ImXPw0$K!I5VWcc_$`%t+j8aZ1pwqpu1ivYU=*v~kQDX?&%!#)4dxLWeS z1)od|z}EmWi_nB}`M@GTb`d&S1a=NC3u1sqA_^e4AWa>Ztf(ak)bUZK7&RJzBr-~4 z=zujE-&2iC#ShR(!~uM&QK3sGx}R`n8rEBb{|$|+`!>KL5e1Ns9k!t%O9sfTqij2S zM?;nj&|a5+XuMt~iSz%!%Y?KA6MB{Z^D?OrIvE5qj9e5)7&Q{PAFxXVLk&b}0V)-^ zF+j-)aUOv$1I%Iw>RSA#Ww{jmfb9Pu3?Od-rWQIl;$Z-J3ur@=2EG>nk1&8yZ3i1V z@tZjX1`kRU1BY#t%Yb7W|H!xxLSziR@Rf<=`&6h$3@lB|wjWF+_#QH@#R=s2e^&rf z$+KAd{HWwvJbiq)|L;}u;5+{BUdvX=LxUs+-zxc&3w$PPOGGqxkKdfRbIPp8wW&Uv zK1&I2J$2=r$xc~K#dTN4Cyh??xM$HH6ir(o{{G_(+n;$Ov*=3#AFsJ|>9O)M*P_-$ z$L;rTR8U7hxniJyvgOUp{_c-^qzqQpef?hfspQLJ!;nK;zZ}zkd1aPi^D@n_wW^;R zf7QQp_}W}r)$iN=;mbjFrJbA7g_j9W(-|8a@T-%0(;#Y{rhH~!?qTPUy2~;@3Ju4!pB1cw%`kJu)V+ zVnuFnU(?f%9q;QUyDtB&4yx#Nn?1aSzW6}T=iAM5x<3Ees`=;87Nuipw4P&4`<97) zjM*XIB=)MpMAcwY5cP~wfxq13y8PQY71Z$JBF@^t&MD!j81;hb2W#URi55-Ypk3O=}7< zc+>l4T>pix%OB$sikb^_9i>%{japPGJK^WMI|ZWGEwYn+yeyw>?=4S==}&OX^txCq zNnR<3dtnbxfyI5nI z`t{7C-3n@tFC|aPH?tJ9zr3kDFl)V}ck8dP^~2X#`ZmlezcXx6`eCQDtKz%ggnhKx zAG6!(d0biTGGSk@vstoV#Z8T7b(=|kw#{97NaoU>D3jflJwED>E*_~0JE=Ej#GQsI ziw;@!c^REwLdnQnB4yKPQ@w#Qcj2bbKXPA%x(QnDy_h(8(y)V_-z!}_J{{g_Vm@Pj zyMUDEj0xxZw|y!DSb`fAC4NUrbT)l$(+)fN=-H4>qUsXGhwB|Bk9ZB0{sDtM`Ov29 z9=%f0F{P7}tS=f0P+{zbjoJ82XS7h%a$(a+9!7hDWseOTp?Lh}PRZ^qvMF9e=MpJZLN2+=}Pc-=1G;wj+@lE1=$Kv#C?9RLo z?q-CaNod!3WE(uxJ>4rxaJsORLubOgc>mESQq!`}+0D^xI`=&_mWh72|Lw9=+ehy% z9y${$d|>%bEjP8W&G&Uy-FDA^JTYZa{hZ`I9%A(Hz$s#?(Vlthl)tpdUNCK&qcQ%w zXP&@9`s$EbU&MzWUu||)^~+^X&$6Ax!h-o-(sZj`f|+Yp?f$89m}#^6jMJ|9a?UCy z(Sp<`)S{B*20<(K32tnSXxkY~KQ=5}`MA~#$zNOODV}o_LREXWM|*77O+IH|JK|g1 zzyDZXdXKu&&-VGcGsUF8&7kG=WT^Vf<|)!9%~y3EVX{|H)4oo^wsiHY+SRdw2}kZ3 z9`hX;J)gerkm~2}tLK%?F%$9Fe_Huf?ebWcVAX91wq%0m+aZe|y?b!zjKIFkXKS@e z&J_tL&^K4*${wMPjJBe$+X(-5`Mk2c@L_G13v7kFGLDJU^Ut1Z>$?-DH^wtodjI*j zv@^+b$L`;Fa+8g(V2LYLdG?C-zQ^zy{{5pXG(%OjO*}RUOt7R#HkGDUh8mA6ndB+_ zM|YAfJxSnk$`Jjz8MlXuJU;fi=|6w8AhnY6N%QbRE0baw!Al|Mg6JwqqGt5i<+q2+ z?{lXH%NO5ktHUmInn zt2{ekyzeA!s~V}3E;p^;tlmf+DZG%rE)T|Lqi5N0^E&Sr7E%S<|F+*g_TX&b$Z7XB z78@HTJ`1gdzcCR0#%W9GtuYc5asTUW-@nR8SZ?lF>T<_qe?jNeME1}l~|`;OD;OQ z&%Hd=$*E{^o>50{s$g}2}K8NN^39C_^Y!U{2c0j;v% zlT;qQJ=p$Gdg9fkm-dW4f1$1bqS31@pA_0FJ+!Bn(ifT>m~}OpRu2E@PBd+Uf9`wz z5vz1)mB(ZHrRKm^syt*TlxV#@r{3>*|MTMW4{w5py$Nfc^$@nI1Bazo9I*Q1#oQ33 z%y7x@-zI)L@|XV+saeOCl$5kwDO@dXw`Y$>kAz#J()kx@@lv+q57qRS?I>?AdVHfn zL+sRZ=sxAqmL>g^F zVwH9+G0}P>ac(?q;gtHrUq2+?_nvxD_=EHOxLDED>K7~K`;I)5pqODsQSG=~wA)@k zLi|&o)##BYyQ3}I8)hjV8@6QruhTX~DKF9{j$5j=-&yCGR$A`GghIyMy%zOz#vi`t z^W^nji)3dF$mjQ1p6kD@Y<~Hu*HA?Prug@rJ(qtr)qSiB zoiprpn77E9amRhyS3lmGnd-Yfy(00)t{s=Y)OO5QP*TX~lNQ$UjChxStLA2Uv%g6E zks8l1!Lq+mI{vapk39Cyt-m%)-Re){jT>^u%N3Vk#wLH3G*e07` zvz3v|yrsU6QQbaKwlgF(KY8zvV}Fkc7u*v&A)MH@aPrDyL6x)JlB!Q$b5A&FFtz`$ z|GnGgfz0Leg1ema*10=xo*JSaakx6P<9J_fjL5AUm)<<7wGVgeSy*v*cbSdAu-AR1b;GEXtF=S zpA3e@tWPk9G4#)&NXq^Me=;U8#=eC=8N1G4pWshstAF92<4*=g7wb7}^)Hah@h7v@ zzwil;8B;Q$2ZA9U`(NQtW~+bUTlkaN>R+lRTm1`P;7?|&f8i7S$!zs6e1bojt^S2i z@X^4!8Kd8htAC+^6$=IhSO0?I4gZAwWH3*|KVd%^`9WjgDY*KVf~$WixcZlZtA8oD z`j^61|NbjjWls z9B7bqg;sF<*R*&+LoZ;k(7+xQd5sT9FQM=aw8{U2?qKXCJy>8sLT4bkHm5rn(2#+B z4fO}&(o1g2B=FD%KW3;q4a{*QZ-l;(KmdV6BG5iy%!qd2qHt5^$r$rO83kH9KzfNI zZ-fRS;0X<5hLUvPgUfe1hs)5Ly$uigb+T6{N2`ag0HRtw9t+@q+!%>&8|($ZX> zEC8ZyuDF`e!I1r%WFm?TUjZQhVQKX^D}Zn_DK1$wKtntFVBaPbys0`c&rmZd=sf|s zUtsy;y`%_9^?1}z$++_3EVGBOc>%}wO= zso_un2@8R^Pa4?aln}XI0EtqsrN`?$LG*qkqsDK2T|(Sv{&Q; z28m8mz)0-)9AKy!JRO>a4*-Mw57^Z4&-vrABuVV~1He#&Kq_2k@DT(4AM9ZSq`N$T zk=XPHfWa98$bSFG9T1lXERo2}eG;2K&W}M^3uuN78fTm&iENsH&&mIy~ZT`EVNEA-5bF9kyx?eG{b%D0C|SY$qP{O)Tp@ z$Uy@%&{q_?{URbF=wX4%3^4#?fmn6`diU@@XxjfZW`aCAiQ_(J1)%%@NSg;3VpwNl z1_2o!_tM150)refe4e4~00T8B9++n!gV2OrEZ<9$$^#jh{U2sNI8(sP2PPsF8Q*c{ z83GFgFaCE88uv9EtDFpS&^XLel(_)&i+{NCSmpwViF}V5kE|kA%NZmz4zm<>|E0pE z1YRhcCXCsu5ZKXpBo(pZ(x8#C2?*Wr=Lyy`pBs9CkHoKn+c%`9E$`c+501fdFnMEMXGL{UGxT z&LSWzW#LvP0X2H?*$hrt=jcW76E{l#FsNGmUj?{isjR~LV3z>SNJse}&}$A{1*ph^ zj;Y0eSmy!k|KciuI(UMQ*uYhQa05>sz{o@a&WPcX49=^B1dtYi>CXcfnGk^E;s`Qu zTu6@r-NN~go7}+282E7JK2l#Wf%w6}1>Q$+Fyepv=Yfkv%6|YCswV0D3k>oHbT}9B zeKz9(jKtm#))Bx3fy4SgY79_^01HBvuo{CGvEbj$AJiDY&tMUVG#s6l%EFCL8(O9_ zX`l_-u*KW^Kg67W1>OH&Y77GdVGSE!AGgKs&?{J0!^YH1R>RJHo1g6eJQF;x{@GXY zHiZ=E*?|2gtYNm++t1xsR>REO#n0W;-OXpUyD&U@v!AcK%X;B$6*rfE*dW7{2>R{N zP$p=yHv+>fh@%uCKhGy)VbNxu6)Wcs-EUE9)s$DNz#FTi%T)+3oWcB4s;@j=E zIIdpoAtL;@Jijb_QG||MM{VtQp%sA<&bc}+bswy@g&dnSJ2>Rm@2{0JCT}|ay{O09 zWOzwb?LLhv=l)=?KkuhChb$ZQJ!;cSW2wI%;?oihdg4RsKELmg3L5TUOqBtQ9s!^P(Nn*?rGPopIi5jt@}|eHMzb%DIwv+ZY$*n)9=+= z&Jc~9=wWzx@5hJc2Uk|E4C-xZfBdKV{H`@e$C`h6;J&l7+1v1-a&xSaX`8#NA??sw zJHs*c!W$p%$@ml-YF$5N|HgTLRW)VJ^|X?L`dT*i{b}^*l6*h!Y3wFr)%cMsPdf+c zj%)W@{Oip0vN#RVC1YNtPtZ8~hk7%y#(mP3PeqcS4(+M1r5GhjjJq-^DR1A_p}}#= zni)>(HDsQ3?c090^K)SCUB}YT`{iHSX1(Y?`}WY?tA)}(<1ZF0ub*GnJyyv6`~hW4 zCgp*K@0v`nq#e=p-U}ziBu{PH(fxDrNQ-SwYn{`dJZidYIpt7(w8#D@Pg*aZ3qQMK zhhj>C@VPD5|7^_&xG-Ge(23~p{lhIMrwt)N$w~ z_tA@%I#Da&=kLroR@`y+70tLVijm&_xohsxefDB@(-qv4o-2x3ZoZ>&=){|MTh5+r ziZM&ysq5ktGD%6?angtk`$_Iy9rXM~Zj&sw$;BB^_Z!DG(c$l+Tbf6nTNL4Jtswa( zHKt|%jZt3r?%$bxYneI0t*;l$I9vi7_iqn_{E^6Idz zY`ZDVaKggN0DQ@gjds=tBidcxn(o;8aPe7LxnmRhUMq@AX+5|ycR_@6s^Hv?*Yk#W z$p4u3_QOw)o;hMk?L8}tSNji3(3KTiMPEnX$qc?JP`F5cZg9xLkB?sDhVIMxY#_NH zc;fsmf6e5#NKr__Jpev6cJEK72YSK5tk2{soV{cE#5@$lMe3T5YQ5 zdTQK5t!)%bpIz|)XC*^7<-ya|%VJXx2)oM12@IR^`twthQ)`4S%3ibks1~a$t0qx0 zNiDX{Vaagwj^0rMg2{hBuB>Xh^>Axm7|k`btx8`K|luU&5pq|7_o^NM9Ise6wN&Wjy>v2{pefy=seVqZRvI9jeSV#1ZBBaSA&6A>NJ z(QacTMGLqYkh48Fr?s)I?s2_G*2m?BU1KM17X2jI+_cknWXiB;k6`Z`!G%Za9Q2X| zy&85V2#hTLxoL{czLy^aU`$8G?O&MTH8KvqEjxLbL6mTv^=Dq}m+^upQqNv3zzUNeK2T#&gimws^R{NsyPJ$5S7`{r4_Q=?A&@T~T5+M!`} zA|p=tWqK{poe=$L)lq}hYu8UbYu;Q>*)oT5@cq2qmo`k@+}l`xJ#^C7Qq_cx*|tV0 zw8Dm?&kF?(Klk&teRqylkY=TFV5#YenZxQ8%NBlXvKZMjA#kjJf}fM1-B`EX1u9dn zF1A-RgSVA50oATc7_48Z$`rTg9-1{p(U6`90Jyk6~`P8>lewjXb@tYzo zp4yJqs#$0m__FL$sPJCJ8N*yF4gM(oO7C9~Gs4|;MBDJpA=NUoMjutW_UZV%kV5T% z(IQT}l&1JxZ2wpsUElTQf_!7|Qbm^|$(r8n410RM+-OnFa`BDlj;qI{hv|Hk7#-MD z7JN+i*}jx0y(^~SO~R>j68E3@WNp~H>W%UKw#dSF#n%I_m<}x*w=_Y~Y*);x-1$>H zitP)hn7%*yc$AMw>AVQT1yS&`V*9$XJuO>$^iw-MU)yetdU@#(_TVFr=uP(wENrHp zzjE@^#JSX^S~ep_Ec}10eFr?%Z~H$PNkxMYiX`kSEV`Lm#$VjDZAv4(| zB3lv4&dN$wWoJkB{NJC$k?)V+|4;tU^Sqvp&%8eOxUT!YuIv52E_G;WpH!LPcZZA5 zuXrUl&DhA+ah#Z~ z?))KB{X6jzZZhuh1JR*0AFs%+4tAem-`rQV;yW{QG^<1r-$aV_m7 z)C_NC=pjgo|J*$ANU{3Dd{Z;N%F$+e4ScJ!*SH<-SCvV8parv-HrV^v#dj1%8Wucv zZ(PJlX4F@zdES}%!L7Sp8ODbojn>E;Z@fD8l*6KS(0A6Poh}wnXhc+1&R;fJ5wgE6Ap@;UOK!C zl%3$ml#g<_T8VfEy(w6~&Es?BmwtFxP(UZzsQ$_LPvE?O{IH80QLUMW#XN)P(June zvclw8zsrZoSvlpuSNoAk?5B4xieXVwih{-8RsCVykwTdh1g9k%zpzSVYcZLYv|HPz zzo*uc!Y{aY2u^VOD8B0on{^18^l{s$D7B`?(T~{bF3c+uxGEp!w4kDtuNxcbwHY{m z`#Y}kS-C?dcP6N)qF6+72OS8kLZo(5G_P;FIvo4VU>8^iawZdWBF6J*z_;H zP6EsV~i+MFTdd%myO|Qcjzh+GN zX9i!tJfkRjeV%8S+A@#&MqFr9qyMjlWZERG7}_?8V@y?($r_CU-hcG{c^DVuHBM+- z8AE7z9E>pV6;boGmt9S<>|Jtw!d00%d@I}3m^O(utR z067OsY`^pT{tYJSo|#H{H7wSD*l)&5gYyl&19+KqmzP+*lxYX^^P*Nbg>|2hZg zPZRUzhhg^!X66GwC0ETI^glju)-!$9GLfDp3F{n9gR$Rn)#sp%7-+y8pmc6kA^o_7 zIB!4wSz_3wQiAJ*h?vFlYcCEtPlHTVsq>F%!wp+Eb?{5|D&;OPbPyQO$`(!*) za_S|WkoBY&t9=W*wLl*`IeAPZ5JAAanXUc)X^f9G2B@1|VLb$d#Rdy^{DrUoY{H1J zdV5!%vPodU$=9Pd$eT3Ywhast1PwW5hH>9~3j#~ryV|WNZn$**5z`r_iSbofedvm} zoKCp&ox$HPc&!CqvWsVyTMkeZExsTV=aZ`tZ0?(PmG^gz4EB ztbq1hAkUq1L^T6N=gj=Pj}$Qr@!Wk?(O3B6Lo(|J>~Hd(-=vETYZlUQOYs@g&Yqbc zOt(|?Q?%mhrWauUu$D~Q4G7Hpx zq~s=dElwQ~!xQ;2y5>xL`$ZaZ4#v~9R$oeEct-xTQ+2s&+`u3at&j0Tl(+0j5C0p-K z2>-&v1?KW!L=03lgokzaQK%idb6;ewn{CDpoPB_DaZ8&4NDSLv+>kpp+CJQUP-Pbs zU=1n?1t4Hxq-}O5s9y#A@O#LU*r7k6dHt{bxdjx%0f=*eWN1_vkQETc?B1umLqKIe zjIE$t#5ybt%6sA91{Ur=pcpoQ7TdM=c3Yh^U??Hgx8Ftse42nz4eHK~MuUn(fjGnF0|_15whB3{`yp@LY%`Fu0q|jvh1zH{4q!$1l9RTBT#%vu=NYh}YoV+N9#*gl z+SIiW;U}Pb+r5R_!3?05!}}HuB!}`qE9<|aK?{z()VbJ6wEdU?V7wtTDFlV#UZ&kX|we}8k}|A!TT z@-+aQ6zC1~qMIG8+rVCO_XcVQE3h91*UkL^l&}F((zX~Vc4#dGxEppo)^-wYUuIxK zsj-3e1t2`w!gv6{xj;1b-CHR3Z4h~YPu^t(6@i>07%pXp!q$NyV$`( z?T5kjZ-0UX2jD~n=za81V*?8g);%nRcIeLi5V%66K_DsyD361S12{W2l^T@D0kR@@ zJX>{j1ZU-@5 zNJ0jgI2)n?1_e-C1?u2Ei?%~|?#m3Irzcd9h8rN-Hn+s6v>{MDXV4Dr#H{Y`dl5Kl`{)b$4 zkGvn7>E;lw4Xn&SDHAmPIV3DFV7t$pW8XdtP~PuTDiyP$HAxB4#b4Gz@z{^k6jD4oyTZBr1Ot60Ns~h7Yr;E zRHPWqehy${dn{tOgWA}K8QAPhPJkQ$j_xf8GGN}pNAG@^Z5Ip`^ZLgo`zsj8RAz^2 z38NE%IZ@#P&fSMCb`WeIPNBbof#Jr&0z9^xf`LsZC-)vk*$#s3BQmfl7$~F&O1^-t zz@}i(mJ^g3+V$|?L9l%|g#HQ!KmuSR@HaUhz&t?-g+0*4?;zMdv_Cs4bs2<2Il%T3 zFra}J0}_HF<^T%{*QLv^wpmO!Y;`#(0?<`Re|vk2L#yq>0&FgU*g;$X#3!~a zfdIuMRN#E~lYndcB-juA6MCqzvx5aJRHSBewapGfQe0r7?s|IeFw{`#693wtXcRF! z0A6!(f=1gMYG45Z=o|LXXgdrwR07ApiU#(a>$o<6IO2rd(tmMnkn;+l@OIs59NYcx zsFad_6z%U&0~|BJ)x8C#2vFf5GiLXTjh#l?ek=i4WJ54T5ZMPXMc^siRJXtx4`og4 zezmcKy8TZ@lRfV1&~tzdpp3wBYzx2{R5=98jXhuicbWtH*$1HK0D!_m72UR|TQ(5L z18d&hZ`0Yg8+H^+@;?r=O?3;RO~52U_8csMP*vyHpuinqP~6uX*askRa}I#L4n%^v zMcslzf?)r$2ZS5f_I)}kck3Tp4L#H#_Zf(If<}XO=b&yMa1DXIFj$K0y3yFSD~|oJ zLTy@hRur5WTBxC&8xVmNC_%Jq$#xiN`=Nybu>b(bg*;Pe$vA-81>OYUh~KMZ+wJ;( zh@m#;0OYvk=7ct#=sAEYC(g;Tdu_Xe9oP>y6tr{%F@Ml#o1y{B1T-9IG|0KJ7tuJk zhx}0~iT^wYHuwjCTM4W%0B6P~lpd_-nZfMcy_4{2`{8!P??hTM@!OYGInNPHP z1Bw;^lJwo{+a3HHz_k4PZUw#O0O)c+RRyioHpd$9*n&{r?wyZ2grQK0r2pD#=mLj8 zL=+L(-~I$=xVZO_U$sLN3hZV7HX4MET~GAhMXfS$<<>3r|0i_pe;An1<;ei;#jeq@ z8XXoLIj0<3Re#Bc@s@sE@z2dOXB&z$Jnb-`o6s~_$rTZsMDy-M2aofQqyABt2e8!` zrO%{Pw>w~Z9wz@rRCS`nIfLU~(jy@^^LGUc8O7E0zbC_ShKf>uE`2`u;uiDjQrPQw zK`{jYo-tyVaK)yzva?$n86I0w9gO^1bZa%Q?-6wk(UTjqhigX@J^xfwJIFGJoadT5 z>#5~jQmsi^>U-ELq(OUu`1>6Zujp#nVVO_|%c4BBWwySdLIW%X%VUq?FTlkDqJFDb zTk@EGB}!Y>P)vWF7G}eST^N7h#BmRn<4mIo@0=!kVy>kyo>S?lU3rpSoXl6yf3Ia( z|EgvT$0w=G_;V~o(eKmSkpz(rmEy=|tb(cEla;Y4Hg{ab``W3_#T}^<7djesHJ+PwZ7ccPS1u==bJFosVyW#t0BosWXO*S zUjscBzE2&n_-^smHTS@xArc`eNCz*zuU6%Jhu8=HkbCN4R+J0$l|m2bk;yJk=Wzs2 zFtYcYz5Y{yM<5Lo343?gk8eQ3V(vMNUjQOK+Wd1YZQ*q)!X&CuulQKQ~QvOD5 z0b;c`ltjY#t25OJydBGS4r(V0q)560Y^*TpL}`bXGkwqcwKW`6%a0AHqU7s~>})uk z^3XX?(1X#j-RGKaXnyPxW+){e=`B5R!Ua0p>8r^z$4S*#Un^d-f2aA7;YWtUV&<~Q z$4=~^Wn+FjOkRFowJKT6wXDdD6qPFm&x!Od4*g`w%I~5uEm~42m1D|&nbvvo8r@A_ zhM|D~+3KKJ?3TQo0o~NYh8Fr20a-m#)EB3h#Yzb)UvU=WTRdJ4uqRf#)z+gxRn_M1 zUFnA~ZJWYkLokxwN-zc|5sdYBrO%W4E9HyDExdILMcVU)A@w^3@>QAYKDIsrAZO6R zHWqKc%2>6_0I4FTQXWRUN>}xXG@uJcyogwCkmNH-ba8H%QCBgdJ5a$>d%3XJ z@fQDm-fNl9`_-tZXO?YB2rIM5u~I%Ta<`d2nhqEfdr3qDccZ3O6SpFlv{!8bZ`z zr1Q{5CTPDI@a)0q6ET15N{_h`N3Sl!h)?pAJONieHMe#$lyiQ#g^vCkH+mz1u5k+w=q)^i9uuVns(G@#9Y9+ONGSM9dHpOcjT z)x_r_3SVwmJ&CX>Pjo-W(sQI~A?6+?uRO&iEi<7-N%@QyDntp#>0D>7Js{Jf90~6= z{4DqTOu2C(+id|EvV)A@Xrm&PE>s&n|0rkoYBXVG@DaTe<#=;`+eBE&>NS;$V{!3H zV~1rV%;#*tu$6dqvfrcyZr+_(X~r6Jwzcbw(obybr`SK{4?Zj1ULqO8$4M{pxQFD5QwSC!|*Dv(>EyGr0*nMpUyuurIaFCdgPF zH`D#{t+@O7IXwgOUJK}L*2jAbY(y@tmVJ@n={e2SwJTJS#+iQtWe)!)=%xE^IBr=p_BQfo=xRH;YC`^Os4z9&h1pgHEMx(a z<{fFVh?B$-;h}~{II`CZd#xX9xhFkoIiwm{{ppeK zN!e+lqy){6E>yUgzdB(QSetQy`Lfv03+%RyScL*-2TkZqdOT(PIK~vYLL~`bHO4*h zOdZA2_rI!hSo;p+x3LctIOII{`wzx3SMnh3Niyd8&u5Y_|2)gsBZu>qN3$K5ibcM$ zCSuwJ)*x=zAt_FGpU3_jL(0*N0Gn6-%@2=05)0J%lQPyS^@Nk7UpT0-@fXw&h3Dbl zr!UmFV<#J3>+uZ|^JPdEYiksXvWdTV&7qM%E5>&!C%|U}^TpfeCtkA{K4ExEke{Gy zh7r92^YLBk>RlaY&ertT&vCG^e{`CZtKW>inO(`K`}q@D&r`b6bM`7nJva|lo%GL+ zy4oM0{iWKxaV|J=HeWXC+sM)fM~a^#gk6rVpUiv7h)Fu=zIe!9v?FdkT&aBXV5Uy5 z@%tX!x8f!@$_&f&E7@}A=P^TjPI}4sSM{8n@+G8cCO#`jr0q%<%!uoB z?(x+j^~qUxo1@gFYtp1axLHST}&yJ9)2>8 zQ`V*R>9*O-0iC&vLt0&J)w)`p$h2-Yo3ykdYiF&ovqg^Mrj!d)Z6`g*y%H;bJhNb0 z+W}d(10CizWZio4qyLnqf=UkqNYs9jb?72WAkzbS9Kc+mizu<8izu<8iztB%UGz0* z5Er_L63D$+KLvK$=pP$UE0BXHP-mJSs20Y#2>-DKR`b?tuGGyjSP z)0TKJ|yL0>G{EwS|uT}s((ja_K+?en1Oi~+b7FUU#*+7`$N^ck=Sd*$8TR%#L~6#ji0Y)(+Xx(+%N!fS0zP>6{a z&^hdW7VI=Z_p={BQ(i#OBQ{>BKhcyI5cCMFA9p_s*tdm?p+)>ZYqd>K6trVvffkU! zB%rX)5WWXM2=*Y^b|Zyyu>7OGMK9A(7#d#SkJ(&tpfEIhNxI!(#j!tfl?~((IwHHd z-~eU9_ZX4gq0RPT3D8NmkWUCuNNmXhgM32lAf~-*L$Dp?2|(QcKF-joIVhM4M5wiy zngg(8087cT`xVCyGhjc|Dx0Y}o3+3k=*@kYfz8yMP02P>bM`FR zwsa+C=sX2c|L#O8KU9{~6YCp^>o0)Tvj}L{R z+)U+wFj4@jwR>f|!%hX|eEvse3n7nyvS$UQ+|i0A^q*p6sH`DW5NlUiL#VJ7y2by$WDT(b zEaAE?!`Ivh-~bkVt6TURpgeGXW1sN9ok!O?`CraMU{ur!>wi7Jp|Jj!^DO_#vRcn- zVg+>vSn*-&e?Wd=ZuB3(ZOqPw{sRDp0aAUJr2!O`kKlc^zELGBWnEp**udG$o~2+m zd(?`&~HdV74X{OINWNH+DgPSF4al)Rx2#G!RBJxG3hC))}&yaxFW7v)I zDaQgeUT7!Aq;TFpI_)FG-T8)tt^&qNqI;Fzk0tJ;CA%dIx32{hcSj@(<4A=Gz+yYZG50@e2u6J)xlP_xg^D z+>rtDbMwV444+fvo^pKw*gb3pY#~y{Q?<;k1%1nbH3e2UG>YtxOJib6rI@jzF*E5$fm~-PEes{DtdaDD9OzY7k^RGy{fH@*S(C4ikJCD z5f5*_s?x}5a{6ByVHz0OAt4t-!oyo*=x;DHF-X-iVkVxt^R#&0Ftk|ihV&Z=>4Eol zO#E%{X^j?ha-LhKdcsn)TLzcyw8yH$M-QH}X|Aoik#v+Rg5*`m?To&bPvV+O1fKd@ zfxo44UNYRw63u8$qZ_Y2*UhP!f9jHF$d^0swI;;g-a}Zna(s7gA5ObUNa9u-(zGbi ze%HC7S3TnMW$q&SR*)_cJoV|~-O0j`qTbIpMi>dGYLb59} zCS%GhwQ@-AgF1W9)!7B>0`-t3(HPyY2iNl3?|(WPeA+fSaLi@}$wI3cKZ|tC6I}Lq z@1j`l?NNak{}HLgnYdh3X$WiU#BEyk?y(4Vs5u;nbv60c%U@T6x~35p!ea~#lw%e6 zwEB-JcwY@UDs>x~`5G9^9uHrTywEPh_D?|Ya=WxCxyWMY9DKIec1@9m#k;W$o$& zWS7`JbHh5-@-+qo%3z0z>LV5#xD$u#Ul!Oj4ADG$gE?D)Oh}vNw!L_GRVgaHYVy}4 zc3m-};H4I_h)DS>Qmn=fV&P-9zQQc|DCp+A(fh zQUfScwtWc)>3V#aqP4b_of!g@Mgjj16riXnsBmIvst!i9+1r!TQD`5k;1yFu0 zKoP>X{-tWDYh_>wU5yIN18!5eB?4teVB&JpilWyUg{2kMdBIb_>qHQiIu?dzR!HzD zmi5$tEnw}9LugwhXsLrRwE}7xyi*u%CV?>2H?X4O;$g>!LC=BCF@fZW^(V`~O~5z& z_l=TPaAQLqK~sHW1h^7H9&m#1wL+MvQ1JlmuD0<+K-{(d3?U)pJt|EmusUJ_g{Rgv zJvTSBoB_38^ew5ttDshZ>dDZPgNy4ogEBD)=%b)jyuy}`+GrT?QTUpW zi+9rsZnQ7@Yu6ol=++0HXsD-$ut1pVAS^-k8Wt)TGhmL@Md(3&@b~55FIM!K|D-a2 z(D}NFq`G<)AJw;1n_c^VdpJxNX$9AT8W*N#2-7o$=~=*atPGK+Fav8-eYl0Si80*T z3U&ka=`iEBgGi0548lCujr9(fzUUE zUWL$wnZR|RX|D^q2@G*)QlOLrH0&*{Q8U6~efV$w1=q2*0xHBBnqP3xxn>3%GY9$t z)H8Juy5RkAX!>m41qilH;Fdbp;Oh{uP5CxNH-);#0^AJUVgNVRTYu%oLCei~gK8+j zb#)=QE{EWj!6CTbKZ2XBBM50gn4l<37%h_M`pu&2H;Zn$S#a*gEX zHKJAqFq!q&$*x~6yMDRsmdj-~F4(-w#M;=((9GBlCcCa=l-F-nUcXg&%dN_r_o%O* zR5CzXn8LukFacUl+t?BYH9b&8@b%O1E%yTb3MM2BjQ{mf2ZN)U0S;6Yx*4EJ32sKL z-;CIDGw8aFyA0Q_F#swuUyfYA9J%F@$c+m&@6t82F$4l4 z*Bill{YLBc8?Cq8XuWxd-TFx|^+6-pp$~60u#hwNuah6Wg#;XaV2Od=Ljp=yuw+>O z>%W^wz-G$3+fC${lD?8+M^3`^XE91i11>z}7u(en2$`emgs-0}GBV&9!AC|9l!+#o@Rbrt*2F-%bnYHE{96t3b?@|TZYy-AEw z5`jUvXTDXkK0qraa@}w;_)n^+o#Y5MvB49TdtcrM@ZW!ZJB{ zio(78Ua|bWb7juP_l^=A{GDo6O!nXrR=eH+7jD9$%d5g9;wVD#kLji7Yd%CtU>{)- zEB;AOar20om=0#&1Qv#H?2BU+N!@YoH#K-L4*X;>BXu>voqO<+wZiYb%L5(0V>}d- zX9a#@kX*ukO!pPT7xx%FX=C*e4@OKUnd6CLxSkj8-aE#6E|mB5lZuaT@s6CKvgd4V zSfZr+PVCA*>n(f?jxlzl*-EISz(?`&$EO@3M1+D-W*BG2AM(%QJjRm2qrg2hNxOK# zAO7}f084=xUSM_Paft(Jd55t_9zE(c6FGfu&fI#n=Hz_vC^hMk#<|kdjxjU!q{r@2 zPz+s?KI~7k_^8{x@YXSUjnG~=s{n5-rr#*?T>!}d;piy}2L-Bz-q7PTxR~Zbv3`Xv zCp$w`%89(`-eZfbWinr1bCg~s*I3Twm`55;IJb5d&HmD2o^*DIT$6e;_*f)N=;~9f z-wst6rA!a8ydL!OVNt+NV~;wA3S2!V@xxhXT2+)~**2=;rgNE-qEYnCr{T;!(oe4_KRI=JDQOA*np zPdEZnw^eX39_Yd_7(AvPtd$QQI{vFZ^ANVL=sbo^Mq@?>mCO7}@5&$DHImb}h>na| zUFB%~eJt>#dEM$o9yj=HwM*$A=u{&^X3q`=xIZaz{K?W@#maGGET^L+OX)tDgPv-U z&n?ZvPYW0+0@gmU4N6v8PFMeY^6ad#2l7my+jUif*Q>ApP_DS~E*sNd`_c8ujmR$a zh*s?Y0TGdrqlKPEUbk!MRl#!V$ZOVzD8|+tOXsm3zwu9*Sx#I{K1E=6Q0eN!qf=_b z6Z~aD*hs!ZaNZ(sIG$^~QfUSko3j54CWl26Ngnv*V2*@%eR67D@JQgB$am-2v<)9M zo63JV{NwOs&CkZHY=&9i)O06xq;~#tY#Uqvmd$9qS}i{RGmCU_)%Fa6R)6x!puegk zK@*OTk}v)A;kyK6i3pKfLS$+tM3f5IO+_RpB>Z3+X@VNw<} z{11P%AS9>ns$7bG&zLF`b9wdTPws=WY?w73p^{4zt?#>wLa>UJ(&AxixwYEy{IoY( z+Mf0xa;koe-gtigk$sGormWV2zvnXQ4`U$Kg$qgFKI9Q)Da-R z!EUP;PNPyF%mZ^Zc77#qQYY6$d9{aSgdS#lUOh>?<)d-lqbMX~T`i5x-?aAV zGV|+}cWJ7gLo;=}S`EaF*n-2OFVA*;ko?1F0?U=Gk4NM#zWxI6nvOIeT`C&(1eIGOX?n|9NrA z)3*o_(ZC~k?|O;b%&dK2zE0+@2YTYj@SjdrHj`@IkY+!I5U#YYstQZ zNv6pkh$loQ8xOsI%TV5D&G^odQdc?Ro{c+E^lez}9RvINn%5j3CEroBgb4@Ocl~@f zMAh;9)N*Zqbkk996{879=IHZ-mMvxe@)y(9pB*MUnIc6RJY8L3-4@a%6L&A6{jLDwBFyM_Q ztA^^y5NloG;cVC9`xjHrUHM_}QZbi@PS_=qW59MLpU+m3%@?*H4ya-8ylYM zayI`HcviDjGi*LWhWak1Wh|e~Ov|%2vi#!vPwGM>TGiL^39FaAA}Q{qubk(ScchPv zS&`?6zgE?81uHz5491}{*u-c5o9x~62NISaX&fDfC1>8APa#Pt3LaSMKUl`nl`SZu zu9@@Y^5=nZzrt4OXGLbFx9^OO#d$vb+4$PkH^%CC{|)_@x!8Zs_X_pR=9vXW^C_!) zV)eLx4)T(An#jX_B`K3)N!NYTpw=|JUL)_a=slItu3(#yYYP{gyP0vr&&ZZ{50=d_ zpMPE{{xH)tq+N6HhHajOA>X@!42F&pDl-D=zIf?@oW^rix6a6&F3H6qlzQ2y*G)rH z)pzY+nEFhz>8XYznm(%T6^69P1 z?EJBB=f89D?yWw5JgG{@{aWy1Jx}?>Y<5NPd{x%n>SIF5fr%d15Ii22Ql2buIG^#L zq%hUzkFPH_a4zQlIY*^uBCxP(l#TI&M*3OBDSkvHf3lJ|gNAO}Et%;GzQ+tN{|xZI zJuvyo%52cmn9}_#pE6s)0md^0I#JW9gWr=>G&D>rQvH_*Fc0TsKEoN+RgNWj_-DaI z9iuPu)koS;#w0D%Ji*&H8}E(4wYZ+UrYX(pdaoM?_t_|0!d}e+y!a&Hhm@?xGIUSm~>N{T#kcc#`o_P>fUz-15^k4wFiPRYHnc;)-+3LO_ z1{NlY#9U$rS}ayxk&e8VvA%GW?&4DED@s$3FlCPHa;NFmr0({-i{pVGNPft2UXP3s z>$W$ragZ-7D31upu)r4=daAv;djHliR!C-&M$N2?pqE=DcXMSzZ-2lC2b-qi1_9&8 z`WkcR$n?9CU615r3iTgR{OnZcwN}aXu%`22+xca z1Jl9kGcyFv#sbtb8sw*>-zYn;GI6?Q(^sp;sqLxr>rC-~*ZN{DG2=RcapD-f)``B-rCsc3;DMyL)U zvWxJO#n6L$r-_xmtGrGPj~<9We3B%Rw^t!ppCs>Uwo6>JS!dI#3%{Ju^NA6Y6%WIz z!;-F8rC*IrrsT#3xhw5%rhU`HIHJ#y^&@YepD( zJ*+blDv|5KrDl@9*3rxcwjZ{xqH^u%R-Nq$7`)>Q+TXxdXoD$ysADMeH)i^>gIMf zXMEqL1aPywz0aR9q4cM|tT5<++4qvNXEEvx$J>gLBZ;2(afd>p4Xf%SJ*RckoWeb| zMQ%kJNQ+lIFFaKhFV;LJf7j&FuUeD-G-A@j3|U8=8@#JEyyw4Z-=t8Y4d$g$p!%NQ ziif`}d0pDv{#~nHJ?)_NwXxc{eu6=NofmDT;dJ?o5BamyyC3_vOc7x=y^3fmd#!@s zneR5p89T|;moqVXy82XIu%3x|S1?OJ*XTP2L}9RPydPEOUH$0;CDWW145IqC7rfkV zsp|ZQIz%Hq-n?+U&@d?G?NmhJ@A%(ST30buSh*?%`~&&?q{MEOh6dd}k(x#`4tteq z7|`=Wt!51K`>5t;?!NRR?|Hf_Rs-Cy&* zT*d=OgQ*cyq7hMKEJx`tPuK-FGWSUuiXlOMZL;*mut9Dty*k|y7Phkd^y_8}$wgK6 zg(ocRdp($!?hVe2Pw-u9q7t;7s%KvcVL#Covf}zItzdM5=o)YPO+IqNjvI^bd+P%1 zuIaNUmvj6n>pNufkgVG}N;+bwL z`eh=;6L0?txJcht5_tBRrd9TU`A{>xp^+&+rLIm&yDI`u-Bq@rDQEia>nA$iyvod< zm=ZLT;(Pty4=PUI)p{%zg|}MU_2P__eSFr>`32-u(#;n{xMbtv#+_A~_dkBN6o2o7 zf90agfv^V=Hg-=nv}zeYG!zRw`EsJqepPYkYw<_H$0BPV662*kxkgW(cr7&%lRVIC zL#`Jik;fo0?qGfEYJaX0Rc_!g)zqnMkNg1VL3VhXjaUI&(AT?+@&(C`k6lzx`O#T8>yqEaz@X zb4fc3=i>Z< zYyGXQs-8hMPuaO`ch`xI{Nbip@ZhR%qq+hzfIo1)4Z&cCss#U+Cn^g zQ>XA4+~#X{|JiXYKL_^*)aEb!h!EmwG1r;Hb*{!O<5KbWR`Jl3&(h457`+j<)wx`I zre4kY2m8^xW1e5h>ziLSdh{nUUi3(?@xddMI9stGb-V^A8++>hL~fN~ed_2)k-Wy5 zSs90Jk9iNjF^gf1eMoM#c~y;1`C&iE+@;m@mw>;(u2=UoSvzTPmJH+JEeKzC?Vr)+C%Q|s=cP(Pk7&baZ*c~GAbU- zF8G|zP>@`GPJxJ`{jv&&!kyyljLkLgekQ8CowP|m>X27>v4tZDo_GJ23vFxL#B(h! zKJiYL$}ulX2Swt*JL)s)uNnqL(;g-oDOuOyJ1Kng`y(DAnPlzqD_dAF#dYb^l#SyHFqel@YMI2(DxQ|5Gn;$p(}<8;@mpUkcuT9rLk>}Q5|%6Hb~PM6^t=I^tI zakj;cLA9(cUe5Ip<^MZu3`HIR4*qZ0n3Lx}QDZKA*x#t}dc1T?)L2mcx}2Caql}@6 zwzZ`q-1G*M5Yku|ish~cTDQcIL7_I(tN!wRuOC6jRM8P+HjuvaH-ZeR^=*kDgB17m z=dMSP|8H;qZ#)@1L=hEB2E@pJgUP5=A*hKqg2^CjnhHde0iuT$fU0;oA=;`PqRHza zJQ)xr1JS>&5#@D1^Zy7aZ)A$%YeJY-s0sex|Ak5v{=cvKdj%(o(Eab<>%X{AkpK1H z(7QK-*$_ASPVR74&`M}`IN*rq0bRe7KO8Wjf%*>6f1qJw3?egBP%Bv>L=Yew0Rh74 z_?A{6#%qFquYD{_$Eshel{U=7B-TP(**He?TxxsKis zjzv~Qk>h##UhL&acs*xpm=TigoE>d@q!<@&c?{QApDZt{BR4VBqnq_*VW1AP`VA!dUo0sIPOKT$549sG{iDTE)TVUf!5KdgT}= zqvBZwBxG(23#l9txOgG?z%lk5uAJ6f?8+--Y6p&DHVO#q7#-AMaB=tME1vp+Tl}TG z9dBONh``D@-RUyMG$uh#xm$5jh1ad4-X?2@RxrMu?$E@fq*!&rav{J_bZ`XkV>ipf z#CUU*DZ*=&`gbc*`wvVgXO_#EJ!Q3g)wQaFhvzbBJC+G0rgQS=!=9_*iLs%Dz5Lmf zF3u$w%U+Mn*%kX-!;fpBE!3Tzm-1 zgDzOT^}69~bo%n@8x#C2xA--E`SU5##u#2l)@I3h+g5!;GSgRza77mC>*Q8wqmjBg zCPTOY()A!dINN+#^Mt^Ha{^nJb42AD&WW{Pyk)I(6KfH9YwEFU{U_Fbd>>pp!ZfUF zcrh6{V~e@EQjD=$$ijtTSj>;~iZ5JQqq+41-(YCAi1&Bo$ri6Q>8Ujw@lWz=6D&>| z;j6@t9{6f*4tJ6>6A4BGEMRo{V8YBMG|X!K|ym?xO~{!a>6R(_0_alpUFMqv*Ae6>4nwep7J&MzQs+EzXZ$YKaYANoKv1QQ62i1d(oHxuJbKWz( zY50nSi@ZNyvhWNkG|dHy@^tT<>$6WCw0vcjw&su`cyxO z2dc!17~D5Qv?tb&6u+T<;r-O*5GVWXb5dD1td`#1$M=tD(`v47y;R!NG9rUD_IPfV z{EA!_n*vP^f7NBpQfpp1h4RP)$7Dt>^seB|rnQxY+8&&(YdBci@WHZyHsF~GsW)C( z^4;OjMv)QkPw-|HQMFm6&fp8tA{rl?mEpq2EEC`w;E5?TxR=(D^HYh zy3OWgkLSmy+SxRP^Ot3YbX0DVxsI3A^-5fb%(+6@Xv;1j+16tow(S3&&MHFceoksz zDv99HL);N35>F8v(mYESQzYHp?JVkb{NllWtT|>9whJWouOF&NSm#qk7qb_|AGssZ z;-p0W9Cvy0R)qskk6zvNxnnjs%_2^ty5En|4Gk;AJ{ZHEl*%Kn(O9y-MlLFU)|@wwu`pxSeBPO^di{sH+E+loLJfA?&x1u|}4&#>s0j_7lshoE}KgtkTga zx0@9D)6h{6kr0#XjC`fEpff-{_K*QHuaz*&ZvOohvr9>5jrsLYO3Y!$_^0csB51^# z)BA)npJ#@cMV};!_hkO*s+HxA%>DVTu5+1VHSZI*poXL?+a;}ZttEG+re5IOVy)pM)?bVo!>%Gg} zUh)yeZ(Te&JdOYSK66{ycR=?RVbTym7XFaOb3MSK*SvD_^g~?H%8Ow=8b(KB9~#l# zZuIG=BJX+FOn+KA*hnMSzbK1KbhUT(9?j7?9Di4nbv z9vjMWpsJnxCDYce%-vtZQ1F(_l%58;+^$1|JY^C+0spy-jXy(v=}(&MEr&YT(%HiV z%da2tr>nWwk24HR|&stdGqF@6t*_ISc&P~ zislh|_N5?UoS!Cw)vw1T1R}46i?}){u1eUYm&Mmn2#gS^v3)xCFe0X9u5ixLr zkr^k_d`M_(%``J^jO}tVN$+B9{svr{Ner2Q(sb?|J?&OVGB?VV|nvVF5o-&!0UkA zNATDzDHVxR^~akp>%R3QxI(Y#_{83i$@}r4Yt?^*5qwjF?w6Tpd2so)Dd1V+pJU|& zAN5`dgMCUxzPwX3HuSRV#Di+rNScN_S4poc2ekb;A$14&X^#Jl!~2Ff_h+eR@Qg{q z&!q{AO<6vv8GhkD9)xU;jME=}$`IjIJGtc7UNP$4+ISCd#PEr{&Sj6+Zed+Z*hy3d z#C$Oh7447mPW^cLcAPOb1_H@myV`#4+?ZntLv* zRh;i7-s5hM)*8PcFIQ7#bCsB>!!^1uKl(b5A984?WTE-iiQi9kin;vR7_aBypto;V z%vK5viho9xN~*L{;=QX{ix=#B#ZAs&;VkaHM2x`@Q#W`jV3ek_zKtxk^!}~%-Uw#j zyCXE(1Q*EpuO8B^p~{qfofPQtNdBw+YuW2C--53ve5?7%Xw=M%5f*07{QJ1NQ_C8jH*efq2q_Y$co5oLOKK2z-AzVp0PFa~ z8v>4BxA4_T4O#Pat(7lgDTdze9TvXP=h!Cx%t<0z=W*OsOdAjn3W5oUbGzDD&m>PaW1{w_bfk`V2um%~fXs6{?`S#^^maAGP#Mj^$~ zu3^G4mG*+WDQnM@%n6E916qPn=`hu)3~Xm&HTrsX1CMh!qA9P~wZ@fy#|dRSgs>JL zsSZ(7F=V;_%VzPQD7-PIOnuTeI$|}QjUsS`&xfOoe1y7rIlWQpLn`HbkKS|3v-ag- z*A2~98i=o4?T9NC6IQ6cs~?2%Ips{Sn6%Wz@3ATaCZ9AZTWIPLrLtc!>^o`8MMhPr zOHNG5Cj@aY`W@n_tBUz!M?Ga{=;Gyq{H2_0Cc}E~qb!Tn;)&tG(zK8=eVusG$Kov> zHp52YSKUj$U1QCcZ~u~ZmjaIq#wmU~9=3QZd#(0qfNwydVK`H`@Z&?4ciMe9#!T4{ zD!)${PbH9QaT-eH^_IV%IleR@jdA?@k$RJC?j-`kU;V{m2iRgMaLTV0vN)S?ejeBD z`jsked%G!B95 zsR`sPFOCbIts5!}L_Ef}BCd zRiE@+VhYzV+ozAYAy*tz4w&CG$nH^YrDQqtsk7uNaUEfpNwsCb+ne~-D}4zRI7uC4 zrVspyjB8JwJo~x&CuzmhJg$bKwZOq5mp4-GFHJngDI1V4LdL%q(!DBvgR9TPui7*f zta?y0Kqax_N5z$*ZdS09q8(1h8;`$-u3^mc8^iE1#7yX)3$Bfwrz8#ZQFM4 zw9TEiZQHhO^*(iO-8$8`sz!H@{C7zZYv%JG3Y$hFG-)AY?QS<4C!_!NT~p{h<1T7II3$TujX-B zHhlMhY9K%Xfj%bGaS{3%D57y#Tx91_V_MVQ%zy#fKO2Fy*awJAYQCApORJRC!gaa% z2e4skQFdacs1WrOLa5(Ba9}-D^BgyaEX6sHwVjSiqq9fM(hAm_9}V!|isi5KH^G?V zQ)8xrRYQ8qxn1bLwBfI7rFUkzHLM%+cZ_=4b$#Lx2A#=~Gl067Yb5UKl|{am2JAjG z5B2|GZZou*?_iE1d=(0+xHAgOc&2G(!Y**PzG4G%&^z0uG*n4{tZ!3Xb*GqI*AOR4 zGR|SFr15c8eg6Im9t>5^pn)ueaW^JI!@Tq7X-20AO{P07_BAZ(hTR6#yxPw+xO@O7Z{4}zeHNO|D=5n!Acmb$Sz+xZX zY@O6>(g%@D8;h|Ky;JE?qRRVjgo|J=50HG>$Mg(NZBCwa@3ttFTnFu(Q?06T2b)IA zMoWk$#r??hm>?k*>!a8U!I&I;vlz-<0f_-$BeEx9ZVlEX$MFTr`?7|HG3g4Lsody4R_VC-4`vc5#Gu)|t ze41eTi_5n|lzYq7pvP$mJUyqr>GHqicP5*J0UbB4Pu74vl)F5Tx*x zr1c|)&ur}P*UPp%_x6ZQf7ixMC=3LE_){-CI^?ru&=xO%gdzgHcKrGw(IM05?(Rvv z;9(usIEFfqg)BP5hcN}fqDogA+e(OIp^pP2Wft~)FBj!!N|XWtK)MQ`b2-=|;8sX; zA-?^4m*en?oh)$KCAO(cy~Z(dWUGZxA$DW?qafeU)A>#;Di_SdJkw}@FgPk4_|>#p z;z=S|%heCgsRcJxX4^g!%|unYU2IC8KD)CBPG-TP+f`IQlDdaVAzy4d;sremEI*in zXu^0|U*Fm|AfXh~R95bhoY+^-;y`EzTj9mB7Js{hrZCU|JsCfQi1h?lltDk8vy45`GTcolt2$kk@-H?G zR_+5X&MVS&lri4vmKdVOTR{lLvRw*#mv~qKd4n_IOg4bkR&@yb3oL}AQk@CaLW-YB z)CBIpoE8M%)|nAltl@ovH8nRJy0G4Ml}WQl5M38gv+gb8_Hi6DbBJx~*GZ?Y z0Kc5y7M@Rra6MthS~Wl9RerY<~dQvlZ& zQnwsfb-WT_&Y|CKcMT4`Y+A~8K_A$R(g96p>T2!a!PjoD=Ft_DT z(>L+o-@d-zAW^2ec*9J3fe;92Lt9Ciku}F87E<2hq}+VSx7AL{X2W&!dUYX+-3y4_vT1 z_(p=9-{qr}tJ?$SwsY&Ctn|u~oNrqt?^yGiCwm_?Mr;#aip#y`@dG^Iy^Vn>;;Ya= zhc^e-2-vV&EJN?fkvDT)I}tWrV`H!O(7db^uqKlxgRCM@qVvlKa&$|xl1)qpTgv^f zD6J~JQhAYH5=|l2bq=O|Ur5s<<6`r&yOl?4kkNsySqrK-LA0nySaEhUy?ks z9^km`X#tyPf!yn-dFxVwCKgfQMFGg594pAG=R#i9HLr52P-{ zyr^(zt>~&@jpo8D3g8|1N`oQodzc_>7s*v8f% zutOuOsEeF<4bi=}Gi=S*dRZwA`)nb#x&$Ge-|TLg8>iNBff;j%!{F$j z7VbamM6aPfHvcW3qx$j=DfPJYvXI;ZcQS5D)=Wvq7>G5b4|N!_o#1p5yi7;pNnDeu zBNWmoUDjMN>BIwZ{KQ%I$yY5cz!q8o*Uiqmk+o1b>@lkmPkAufj&4*ayFo_4i`aX; zJwxB|H$~5JS3i~ZX?%5-f*z&V9^1#U=qzT_Y~Zf6V3$n({=WB(!sG)l2MC2MX?Wiv zA1$c2Kqf+n96#CGk3IA^)$WE7iSHrFK4s+zE()t2o6TSQovl%|UX3t19BP~@A3i$kyb(C<(gMhcf1{FJmQviXGZedWLSThbK^YTT4lgMZwvw=4)A3w6)o9!2Z*wm?8 z&H85XeEwM=&Y}ZYvf|axxl|NE&DR9rYNg&@+0}hS38uQ^CR^yzL?+fyeufy*26Fbu zd?l~2OhzuvKO$&LWChg%t=ywj7o+>=a7i{o=W*&SRasCI6wR%J>zq+@t=h1l;_GM+~G7uCH;IFyx~0gp2mA-m>Sn}4E^=x>uJnj z9f_Z)MQ}BTBq}SPD?Q}VP*fThH{+5V8;1RkS~l+A{4PG{vQZI*R*d{Q(FDH|SaeY< zTNYTahA}-a`6V2Pw>%fieJDz86LM}K9v?U@X5ZH(>UfVm2`;NSVv0Oy-ZS<6kCIHE z>K-(HGoifyS)$X}nH){EUsnq52akBEHs=E~i)v?`3HNC+I3l->N6>HMum= zrRnB_KZ(>-!kJ&|HI$>0_S0T5=uEQ7E^P1Y?Aj3?x^UMMyg~_Zut-+=G8u+3rU(F(`-xXyYhEwqQfeca*V)=RLx1 zNE`&M>NFELHXs6_yQ^pu)p6{=>v1*0-h(rLg3f}t!pP!qNmL9ACjMYiX~nT_tYF^E zp^2pauuy2n(xf~+Zc1Xyg)qc+UP1A7Pq z3;vdvxzai6_M(t#hq)*3RL%%hRPiWEx1u_dw5Y>|IDoj8C8|!tjLCYMSZC)HapQTk zu=XE_i!3jJtyUW_Q)32zRJK;w)W!u7&0+8Xw^HkTfl1G>06-jh-yYazYN(-MUGS8( zl^*d&M(u}wGiJaFWnJAQuC}8OzDe|bqv)vL`>4Pv@xpe zv94ijl@FQywi7$qA)tj93B-}OC6bi>FgltMa(*lVpC&uzwsnp-!i2yCTV|5z1i*tg z{3(DE$t8%dIv2QtNW3!GJ+$p9pZHXC;N>TJ+l5&AJh({*gCkDAy)26L0wo--=+DN8_lfHR^Y9Q> z=-Ij+@mJwGNc8+vw?5*)I@D|}ldoG4TOhoFkK75F=&Aq331R7!EU=!h{#Bs(x=jic zK6p4hrH1wxs>tqUA)e(aYqcG3gZo};_2u%|Yjf_hikhPna}Wt{Bc_D#hdXGEVhM}6 zZv7Dub+tf?hyvprV44seu_rtAsn;a{xNCy`0(&Ic^>?K;GY1eVe`F-aQRLmZIR4aJoC2PQ@9t#ke9JC2%k~a<)xM`^OpvvifbVvObB2Q)*Ozp9Zw#> z&?3fox4B0D=eR@(_8)lJ#pn@}8^&BS)SjN2Ubtl$x(<82ykGN)5^ajGms(PuBSHs> zz;|ccI(f6HSU+#ZuW(lHo1vB>q_GvxhnW@9#C*J$3dVt~m0#C{Ej!vQ-bYt{_sC*T z2u3r(j6pKhLsZ06AnUlE*(u3L6ngS+5MleZk59|LM!&1<<#j7ry|^uWN|0OPSILv3 ziFn{~@GS`-n=QhSjd2bKT`hOe`P(rJ1eX(MeVpmJ!{5|ex8s($9Yc1!A&QfR@DT~- zYxE_tQ7k?SV}8Z{-Y!}8X2;t> zc__>Bq8Bqm zCOIoQ>w(W14e@}Oke#_m!e`sOfXvhL^NeMno8JnC1!)i`zhfi!ZC1R9OV9{s!O85H z)Z#Bh+Ll*f)^}c#nIm8Kl4ns8e`>lVbknCD_J zK^6jR#jhc5(INAK3F&~K`+^&TH<;?VR!PQ;0;f7%kvP966fa^e-g`aP0 z6viE|9_)eYO)kf7Cp-bnbhM*ZJpcRnix-{O?EC4ZOQdVLFreA3p1#xUod=Y!tvozN zq z_>(-JBx65jwFvAaH~CLw+m? zE@$H?41M%P_AJ#?Au|OopBx^24Ee2{cC}Ma6aGNTvtt0|gT&Q}o+Ke3^RuM9ZW_`W zlV|tc-Sz$#RZFRY=39~RNi2x1hEgA$+tQ2HzvS)+X9+q9dhs+KsmD@wa8%%{Cr+~o~e_>6qWY61&PkJYvJ z*~MZp(8dXXa=gZAC}O-Gj{RoF|7nZec_czdS>m})RZ-IT5LxU8u{B=9?zO3Z@P_&t zJdHA%5s29K`5P@>u<6ZlP@^07Q}i~~+fNOcFw3BfcDx0RiJ zBTH!aWRK#p`WSvxiQabl#7~-9>2DPeBfWLp;s#o)Tmp4Q6StMM`I>(slEfqYCgoUGq|!&Ei_6p?{W2v-24Pc(H=Rt51Ua zNd5JnevF-_Bo0!~v_>G!;>TS`)@3Ir8p1Pr$-|NRvpO=s)hGvG<^>hTaCx$`hBB~*# z39>2)DCjOGFey7~%Zz8%T0k;|?UZ566A5MCq%cM1gv#5A&odDKU#z({A}w=-P>1fR zo8>IedaFQHI*JcF#@Qup!eJv`&!46f1JbmY|2aCn-aG&bDZtss>X{D~gALR#D57Ms zLF^^U8td9@mj2I{P~k|2CM>6-vGgVLnfJ>YNP2#;dpD-N|rn z7_VAAaOW7}!jTBqA(M!E)S!ogUnHbw3fi6P#ix%$2T77X`p2(m`%kF;3ro8>Np(CC zozZgsZ9~8_vB_xTGqb2jn)zTr*%(P*DnoWl_OL8?rQ_LQb^sWz5IQwQbj) zx6bW3d{KWd@Az#eMI;yrtr=)<7V_CfBEj*2*bRHun%~eeU|8OcPUQkFp>A=lFOY$D z<)eiCX#@d5`yZ6tp*`B6v#|C{DVvC$u*;*H+(cN{jRKkcN|Y7z;1OL^vRdF#3bJ@c zU;8-+Bex-o89p7qeJ{Vuv3|~{brZx2ibvp(jsy7ua8~f1KfdtUW-x6hTFFlJR+cT8 z@tHT?_lu$&&5Rcqju#I-ig%y37-wW%+(-9gM3*#MGkn)-jbt)TL(@5)`Q)5r<4}eB zLj@1_1vpH6e=~SDd+Oe1w1}6WzyC568ViY19N?huOhiMf#!GX8mBX_8)?~e6!n%-r zo`Nb6WU!-qG2_L@X>(zea47oK=@tJGa3jx6_U0>|p$W&~pC!3k%UB}D?KkvAnLu#u z#IqIdNNPVhpumj5-)$Kw$`U~v-&Mo)vyOd(-8Xax>`sksCDzRsZr6W=fDKu*b|*`3 z+*X#=mdHCHETcwn(~*rNSGeQy8O62it~G{!TiT=*Jx@g$EB9g8TRRywbcDQbBEoswDqI@C_a1HZ{JQB9l{!ct3i@CV`>|DYDW4!B z#!*M{7qVFt`qkoV#36>Us%i;K2hfJ4k_kEaZadML(B`dhEbHVlri}zd5LOgF5X0ei znOD+EkiCCP&-o-}_Sp>UxQ6?zGw4B-l6+of))dbz=2G^%M^)`(p-@d^bT5BH!9i@> zgE9>TXoBK~R6g*7KsE;SXmLGwJ!6N*wtyV^wvR;0QB7aZ%a`vkrdKE~H$OH$I}v_8 z_TW_p5J?Q#K!wN*t)M!yX&GV?rI*}f-XZ|@&YiZqEvt^sM~+ed`uoNwLz z!s2{vHvlBvVq1|dJX!k@{?MhgO}?z07vie=KA#32cRf(t;k9G#ZTVn-))96r47&(9 zMTtQ;+c41sP`=_P>tMk@`jwuM@9vS%@bo?rk=kkA$Dz><_N>ucaODj8+O0(F-z)RY z6GXJH*S;rT*C?cPt|r>*a8ZNVeT=Pj52g}NEWdFAk$7shz15zt=?Gl`)f4?pNmv#+ zSE(LkGg=K(A|=`q!(y3-Y?d|GWqpFm?#C{WV>NAP%IDRr%6tLgse1?!wmBR|B2C3E z%fbUWa9`7Ovy9u0GO_}u(fBcOdA zP$8rh4J|0VUiPVt{E5B1zr-38#PEw!#k((@hs&ol^6>xFx@2E9N*i2~TaJlx&Zn?J zw#N1nT{M|30iLfEfB+X8-><9Ln?Oq3BtKB9mOTkU7VJ$Ji=prsk=+Rs@(oJ{6-^@F4ZM2~?eB<>svS6G!Y5n3v zBOQnk$SU;~zF5E9Sfmv}iurhFwn*AhX81-+Csa>FhxZGrvlBkNda}0rkHO(e3TQ*VAs~Mwc z7B4UFnPuUsr%Ez$-tWndP=e7|2c9^M*Zed4gM~aSHAT{zk9tg-uLnIS6DS?K>Og|Q z2ckm5aKM&Ehork0O<(J?s|_^65)F3vLk)oiMz;;U3iwd?h~Bx~P*tNz1>>+kzjuoL z@qYTpzb3~C-Tw@;CnkpHQqZVw^~Cq)xh8d)`K=PuJP3%YW{V8h4xN56Lj$PK?2Ls~U4+7~9N3#~>!eW&?jEI>y ze-uk!_ed?w_1ba_LPa#P( z>I2)hIWFdJ-=+{E&a|>DJ<`7P6{5MM4F^`gc?JcSLH7b`++R$GT};AEC&zsdVuIn) zEA!&r*P{8GOtT9Mt(%S`?um_JfPTK~BbKbt6Rq#t$pcCovpK+4+}m9_gwV*Gf*PZ$ zMj+JkN7REi=czo;A%r~EoNPFa2<3S3ojmAU>ST&4-%z?V11znjkuN8lDKQ7nvO3Eca~81w^m zxkyaA;0Q2|qAe1np<{uUTD$fTVggH0>#7%)NbSUqgN$*MZIzKV&v6?OfBZMFh@}7$ zj;tK-Zq@TwM-<(44Ew}vE+z&6CX^73WibAPmolG zJWt1bPTc-ha1qc^aoTjSkIYWnIYRnc{$j$$MCkXpT{NO=+VC9aoUuU6K;t%qoi3ZH zhpy>Pfh6;@;m~sLYdq&g7FanIV_vRP!?^hUkgGK}L|Z9`Cg3LVhFpq_IH4`zE{Yr7 z(z_hg2X4=pS7{J9_RhD5{Z>F96-EJI-m#0mp<2RsS#(?yiY8ANaEConZ94?>NIJ#$ z=N$z2_i1@?a|Wqa`+z-juA@fB*s&&&z(x!jbw~4I`>F3k*&~sySDlz0rhW4V{}ODr z77_=;P%M2?eC116vJ^GZiF~#qRvCr4mh}}j)=FWB?vn?ya<*?vYpG*U9O{t*BnNmd zk`#o5*_nKGn{%3@j$nXz+xi0-8e9`2h`4gA!44X9?(o>JM$+B`w1p{ydi5UtgcaA9 z=!v!|IUZ8nE)SUrb69MaC=JRihz)4v>V>=0L>ieBm4?Gz1-+T+^^Fu1$jUVsYwc87 z$d9G#+G|jYL`%$)mM=A6b=U$2PwO#E6h@>0^mX#H3)t8AZaYAxFsK+7pQ%h%P$6Qn>YNEY(TM=Z2Xwq zhdTj|4yg50j}gRh6-+n%<1f3#C5eo~{+qv-Y$xd|XdSxK+@WE-w0!}oMjxjcL4!7jRu6`woszt@%u+zDMW+hxK*iPjc@ZE9 z$?F=N6c1`GqLcU%O%~!7sk3UVb>v%aurz8BMLyWgtl4R7yMJU ze%ka11ey$7I9+!lXR7j&L#Gbhvc~n{p=+p=k*B1&3TAZ`kb4`UMzO;!t*q)yGobY) z3z4HRrOakCT?z*~LdFUr(U;M;i(z~6w{~j!-(}tU!=Wrytn_6f#I2xMmZB2Bh-3GN{snsG4fMpTa;mSml++)i2hn ze|`t)4oDks-3fI5QGPX|XeO~WIt81Nzf3gwqs^;n#8EE!Yx@}>I6u>Ph327s`3GIR zUL{?Ml_EWO*9p;GkS974_)kJ{{n?^j(_sRd1Q&!IvbWHu*MnNP@Td*nZZeb_0`?ZMl`T zM3HA0zurwJ_+g;Q7Us>Y&AP|!fe3g%pqf-Z@I0-iJcP;uF>>)0*Oj82=`F0HL(x#Q z|L)+YMFq)VnN7L9AUx})-ANq5Rs$Sittem-T zRhId&drB70wI#Dus}ReVl}pbAObY)$+V8; zG5>?8M{`_+*!4VcFt@z`h4oR~Pg{J`B;I_9G$VJUCs;l1@=!OpTZBz9fpCppIzu6P z>*`exA92Og2{tgFS&Ve@J0S;IYEEs>0+0Cd%FJrb3x(ZBCdQMocyF@G4YJ3!??Y&- z8Y<~}-jn{=PIeqff9G=j=PjOjm_Sc;{%>Kbgz~O0#y8~ttNh<~`0vNhZ_6h-%+iJG zoA%rCIC@@X;N8tLXLywWD3hrQ*}4XQ%R7pXO!tgk5=O6yh|Bo#Jy8vN2z%kmMe?@7 zvn7v7Yn+xS%`zny@&;gUXylgn=lJaWwJT;OfopbPW-3IhiNp&zTB>*-2XfxEyeEB4 z`z$lQL6{Wzl`}kY_8~5GgkT=ry=7Li&}S}-BC_b+ynYHWY3$OmBurE3xtt+v&V7kH zf2KW)hlQ+AM@}@+@a4sf_1L%!?f~^zA7In zLhWh{UK7?#npQRo*O99g8z1bqk((InIxT3M8sM%@gbifMkFp$-20UGW-(EmrQ||Y= zWPz9Rak!zlBc>X zOa;ym(3KgpmuKqA94*gx^co5S(b@{>D%M-VX2-k@7<$cgXph10xdI(}(SM~hg`bj(U_Z#aUsAR+*edHIFa?%hp^V>|7udnzeFnid1_W!Et)i4>IR!PV+t>g3TEIY zF~nV8s$^NnZ6OpIATsJre!!Fzl0L>_H-mQ_RB#`MwpieTEVa zVnaYG+bKWsv$CITx56J0uQNv``K!Y;(af1Rl-&mI(X^lHued|-%0bZx{uNL$`dy}em0)}a++f4vx?t;eshpN}UFs5imJ(k(r$H&}_qIn~!Z~$s&tr^`lblVZ z#!o!TYtpyohU)qlL5cn83dTOL)RJmJ8B*G8VzU>LlsG;$$c1V-o^Zfl@VO!+W)3P$ zA|+g9nT4~yuDSejC2ZOKN3ais+r4#AYTugh35TM$)L{Hf`v*MDexUZPzxyv!B z)XD*A@-pZ!PD8F53SJR4^6balHBrLQoz3-dpkAV0R=;(Vpv+kKexM`qcChuW!a?mN zVqp_f^I?l_Iex()`JJ`?EY;C=Hg@4Uxuas;702>g$Yt`6Y+=cM*X2O`9 zGoGd*v<$!ny6Sio7byyhsa%xu6|1LI|IrjrZNv_eAB}?>mD}YJaHURjHN!4ZbeE<^ z$c~~ZkR3RtQmM+E0+51Yi4YsIp<=9tg=)P4T=w?EDedL1-pJn%tP-8 ztEZ%SX=X`HvkO%7J?P=n0~EI6R}5p>E(m}umq0meG+aduX+7v>Z)A+#>bUn^I(`{z zSa#2nN^TF$mAWVjh)>yh2;p&WXA2>|H8yBrJ`d#{P+<5TbKP77^0^oeE7hc3M-@-c z2*U1<$!EX5HhrhNSKr;QZW6E*ra>qV{;p=nDGjr zE!f$cE7ty2%IKFdN)?pY(`NV|1lbJOt|_l_L6Ve^U5s5g@rqPlKEyc)VlJd;s?CXK z&MT4WHZbcgi5&O^ab~`$nzfGE60?lUBNo(G5TXSi`25*RSnn|DcIZEg{VXjaLOv(6 z0X0yp!A*gC_YS3-yK$&q1W?lA(s7lTBp7N`p?DR&MYVdrPXyaJ{+z&--hP0pEE1y? zx^RMRP|G7a0KUr>*p4OMK&FZ}@}s>l$~jS0_GNMbthRsQuuyXh8{z91_?pg|K*A4v zZ`}8*^QlE5Q+5Zb!eLhF#F#bj_&5->&n%!xvEUXdA(jeC(Ut!B9me>{+QV5T4TqF@ zjy{;K;f4)60|nK~V0Xby^2zazwo;(#m$f10g>IB;+@c-HH_0d{fV7JBm;!u^kb1Bd z!(M2D#sf~BhR&rbjrvh++W6FJv}y90RjEwg&(OT#nxKntX45MnhQwXFCY+4}zJYik z=sf(KVg_4wyFHO^&Nx2pFI-7;hA8aX_lAeq+U@n-D_O&mpiIYa9}%7zi7tTBBR!E< z@Ojsb-y7$w@!`?FoNAPuKXs{Yc4(UZTELa{b`m zFMn;k7|F^i8ZCtIVq&12tt;(I+99uj}iIhG|v!Y!!C#z%5*9r$<1f+Fj;k zOD%yO!tS9#NWoJ!X=Ei9b4UqT7@RR{+!|#iAlX_tvJBP2jbq;aXjQD+blDDx24Yu- zn;Num!?;qKKMMqxpH{vh%LiP0zKGlYnKkaFA|%z=qxR6sa-NGRRy}lINQe`cb(@2m z|6)k3L(kq7?ZYWoEY$<_lCZ%+R#uh`8oCaykX4K$^ifKjjbngH4C-jl13OoWDMnuO zHiy~GsdW8|E4 zheoNUU#jSmeTVL=T_W3HQfR6O0g1#$o42A&kQd8zE)hp-F>T8TVDK+M7(f>|$WZ*& z6{AfEq?Mcjw2bGh+*`z*!2`6E&sXR*!TuP~93yR{7FK$ew4U)~>ds%SHmioJ?L~4C zUpJ$BM6!^wD>N(uIFUGS3{-Q|Iu{b}{9`XLR|TD?DE7vmU`pIS4BE8pnpV3r4OdoS znTZq!UP?nPo`Wg%;YHf1()m}W__yg^ zHqk)suE(+R3D8rtVZhMoKgXM4f!vBt9VEPM0{Hvb9L_o{L%>Fk8i-CZH@gKRt|An3L?~wYx zdj0>U#sB}OzW<*&eaZiU(*IA0{y#zee=_9%!sY*;NdCVP`Tuty{~t5{FCPCNt$&;C zU(JwzVjTZ^MgL|^{Nv^E_mV$3-T*FDD1v1mVu zd;7))R?qrS=76yR%))<*pYnb${5@^+$N8k^9ORRJ3447*+v}5h{aRn|r@XI!4bt33 z3VvenlfAU=VQ146t+^KF=TB5oRXMJI#NCc7GWy3)uTDVhk0rtpKezCcdT@S3c2yI2 zFNitR1cBMfCp)SC{g3td8`0$4x`{obdU-N|YyT>Q@hr1~)s;Ma} zANE#X(Eq2^41mesj}EJspFJkz?uUMOcDR52zz_Xthj%I9C*>V}&2Qv;iq_of*^SIu z=TYaUS&Jh=vlUntg(fRz3a}(}*{|b?zN4ZFa&~ULAMMqx;>VK0KQR#n1cu zqUdACT*M~kO6GeF+r&&*`*%;}b8e{LFC%pEksjplm5ra4+aHb}tFr(Bw>-wn@x*LK z`8*R#u?#0#)9Ksba92Ni84AITsogKoPf-IsQ~^UJxK5MbkCxdrNBwFRy6Ly^}gxgf<(PL zZjx^m@F?QPCFErK2&-;-tg}Miz&Hmf9~e(^r33b)^}q$@`{098@yNcpodIE9b_Ab~ zR+cqJ24kM;-P=RNZn(A9Ppyihg5)Ph0tb(mX$4>f*Zkc5YXg15r`=kGn)S$ojUyKR zv>HgH^g=+f2qR_b*e)8N(tUl^E53>BR{mu_EQ>iu+KDjiIl4atP%sJ$y9jUQ&YkiM z??CQ}LgHoOEj=5YjizjpgB@hTaqu}RW^&kNl8X3JA_)z)7r6WAxdRyl4+3hj^2$+@ zoxLZaGGZs>j{KYmX;tlve?C15@I73;LhDlMK>E94;Q70I$>tIc-53M(vXq@*!)}I- z=R?Pj5YH2P@sVQc3nf6YWyn^ip~*{Nw;H)SxL4*1i&UBAzFYm(g3Q$#ey4A7eCaTC zf~~9ur%pL-H&@z0Qa`pAn0_E6ehIH%w!|Ce$&pybzFcaN52Cp`FM)c+`XD#&m(nsB zfFw=u?yzPP|4Op|^_z^5Q^7Ar?YSP&-HBeB;t5P^*luc>0tI(4k0>@z?h$p%WDTm0 z&1ynMX2$C&BRZ-S0Ix$eE7G2r^$o4OSy-6PCHMXFpkCOk-2vIGrbss=P6FE%Y@n>O}DO%x$byPHTUmIK*~YApuX zCmJOBr9ya=>&xuBUT3_BM0KQNQc-}V!`ear{pz$D=U|qxX($K$CBRn*68;qHYpR6{ z3LhA@=GvJfk}C?lg{YVM8?0?uf=T%n5jQ6Z2%|0hLBEW8PGCj9u1E6M;PP>^F%>!G zKx$2eZrwA#_8k{u!S<;liqpv+U1amVPQHUrw7_^6Dwuo8Eu3)N!#P)~jCyj^T{Zhg z#3qgKQ%l`kh+PdZO1rqn{F4?TS8NPZTB{N~=tXEFc<=0*-qKjr>c~n{>SeD!Y12eH zG1Lwazs~TQonJ2~7>_XZTo(01W;E+Zy#gA|y#B2o2DIJERT$HKm5W&k$Jy;vUw?d} z0sVB>@_UJUf@gIVid%YxriI@{NAQJu;inxtnVcUTsV@7Y#X2JcZd#me zr*Wfuz5@RB5iSVv*~Xa+5URUh-+w{G>yNDH&b#V~_ccBLBA+)`^m2YlYX)F_$sQCC zii6NkSpxjl)ibU3UA4VTT2+Pu2lSSp7zpmOl*33`rQ4|l-JL%jJ*Pzw+`x$a14gx* z3%~ppwar;x4iRNS7=K_e;REPpCqSAx;4YX}Cfe}C`I9v+6uPPXU)7b1&kp1F zv~0rGTa*hgx0>dT%o!f^JCjSJ&UCNw13Oq(71AFz_Bfo-bOQm|6*0C%Gg&<31uGMu zpX`nz-;cc-HrYqwdtxhZanD$(`?l;x1}JJ}gR<_cG!>Fu%`-#XbK_mhby(GMHvrJT0~BQc^@)#gRi;BlEyddgYGbIm(7 zE*@dqGN3uVZt;YobNm|T+)rP2_N!G$H@8e!+)<2TZR20V4e{ecgWJ&k$O+6Ra1z z8!KA92tRX-t!k|qZxV3$%jyZ)dKmE6l^g4nF)gTER#Xll}z%Jg-)b~V7d z6Kj~}s>N?;qO+@PwPM~{2ipj>qs(LErS2yE8GMK66u!S(3q`hh=yfY0N}$tvIZ86} ziqtW>JtNrBbpC+B7i;ZHh?t1H=BQZ@|%3uESS%M;Gtg!71 z{G$>gBA?l_+sQq7A@b%OO+d{Po@1_u!C7~De&9O4a-=sLxX7na>T72pg(WTy+$mY1 zneSW9QW5;^*;Gb;Q6TjvudnpGN@=tB4a`Zwzfrlw4OM^gT6Yckr6qYaA}Mo12xwYl ze*_I6%Kutw>(Amp7}1>>yG{?J+MbE8X47zmw;4qWJ;?|kpQ6c^L$Eh&BVE*VoGrJb zZSH1dmVK!lbYd5O+V6CBZO&LD>;<$pd(QVW^{j7NMU&<m2j=QdM=j8Vf|ycloM^`Ba~xv3=u>0X7({N%m1ht>s1m}1^or(`4BhqEPn z;d!+dWRaldrx=+lOxH0`vSq5KtJh{GFEMDkWJmFR5I9MkQY&ALWtwa>x|3C?N%Z<& zcQ!=J2%}|HX(oDL^9@vIo!V9FwI;Zc%W$aJiLajeJuU|KmK9YVamflIIiQshrL;RK z%6h3DPI5Wc1X=bqtHtUN`UFih_ymc=pqkRO4Fv=5%YZun(a)4;arA-)6BX5sio5k1 zpHp7BCEhP*6g_p=tiaTd?C=mw!c@LRb~_je(4H3w{DI;5hE0JpBw_qxvbi@%bZeCB-lD(DSWv};wi z?)WM{kWJ^pbh88;ZqW%i4keV_c7#2J8SeH6Ry^zQnD5TR@v=sKqsb3`+y$LU+A0r4G9qtcxl?lfCj?UdOtFd*$2qHnFX#^z-(kM}f; zHxA&JJ4ue`a2)fyf0ZTWC)8Jy;Ba;9Sn!nfb3NI$8q8dQNaE``gYnT&zksjtcxQ3Y zW|B$s9uFP(lU%kR7JgR0vm1HB`n}ecq0BLc@UgT4)o<2O?v1y>89bGe)?k?@{HU`Y z6EtDe?JBEBvDVA%Xhi-2_S#!3Rlc!p=_LGcB%H_HdGXyQShOR_jwRSrjOcBemYREIN~}$=7411v)IJ)@s_IdO_nH{1 z30gLG(@1L*%YIZ(0-A?6ddw95CB}9^%5U=N{r(Lo7)Gmr5?+{` zII_Qq(2BHomRlX=fU!>%rHeUY0`dwQZpbxofp5Q@l4VqLGJ_K$MRHHHF?GRR*OXT4 zja+5e{QZT{9Lq`5&%8No2SwzuIdrrPRl_DR1)`+b8a9g??ygF;D^-fv^!nQ=CK7}* zMMx0#)#IBEgkQ+yH<-K7aYVM$B_;s+yi}(X3j*{pWVoTDdYw`aZkJiVt395(rQ22* zHK>GNy3C;?wZX^uq-Jd)Dh;>Mle{=0M>4XGQ6JzxK}OBZWBFyQr4NsO6+R>kHSU&+ ztjL1_LXV-PE1x08$fQSs7tHAI5orpdR(09sMgN*|)b%(md=2p{=r%1nSxwjxj%yZ0 z``aY{rEG=~n9NjhXL8swrBtJV%j)d=)s8d)dk}hiTL4yT{Yjw(Qg*DmVR$S_f$N&+UNJYAx zv-aV*{dcUj^^XkN%MVVFK(d+FCQGF4U3dMQ3y989+kFwaay}>2*u&O!H<=(N6eA-3{_bj(GG*%EN?c7pvPumaV4DwVE8 zB3-8}X;mO;jmrgob2RUL>69}V;G&yu5pfmF+6eh#uf=H1bpW)Ao}eO)8lOpG?}Z}f z;=)9@vD@LyL6UVvOO`{yD76bVQ4$xSzkM`G*-UZ2LIO0Gtxlg=8M#V@YSE%_+=pth z$p{EnbVg&~gutsI+PJ&Truv1>ojJp5#hr8dx-X#bKrv*2j{K1LXncuV@G2~*3I=Mc zGNKC6h3a_7Ku*2%3|$Zcta^YC(%j~T^Q`VE%c-8|yi6wYqW$YlPrmZ!OZ=x9JfLv0 zIKr{*Yg6u+N{nb)4rWmB^6y927CCkoHC6f{I(4AXpiRc8zqA4bR4|c%$uE>U5;msH zkYm_Xp2{;A-BNE^<|eGKdfIQ4U!NWnaX$5w+jb|qE-Xuo z(TN)N)I4x4V?59WTHHIf=N<)aPydM52R7o*gOEJqGWosOHHdqUm0?Pw)Zg_;w*%yZ zs_x2Sr-#%M$I4~oE@(o2m;mcU!eu`zOgu*woIi9Gz|hB?KX`xc5c_zoSXmFv+>P&S z-YrGT9X_h+{|z3D)Ip%uWtSl4F98CdrxUAV@R*I-Y%U`QzYh({@UP7v34%{qV{{q8 z|0=U1S1i;MEH#%_0~^v@6f;*DR5I9I(%h3Y=rZ4`$ZD{!s(U$`QuoT{5;6ZbfKz6P{pRHV)1)ER>m}$-Ax3Q zZW}_rS?eGooJ&_k5zCua;3O&X*izOb&--lau|oJmCfJc&3aDr|lW?eIpbhUJ?UB7g z8W3ktCR7rYn?NVWk|`YyaZn~_x730gbg=c2koXvnNZ0Trh|i>hQ6%dHP3mnh75}^5 zDjEDIv-DOqi$%g(Gj&kg`_n-_-yge$09Gas9yn~KfZ||i@6hjxH1ZM5&p56*gR(8w ziqx$SFQi6~79=WEmHyaMrZJm}t};WM4~xSoS!-1|Bi?A`rQPamVh99itKqRPas5rp z7m0hQkW3fwZ4-QKTe=uy+CV(2*W~Gw2Xo?R$NXgY{d3vGcAzk!C8urSP|tqaDEj!h z#I03Bld`d#Wm~G_(?*x{^4vnjj4cKoS$zVS#qvE(I8BcBwyEdvI*=|{_(wG$XY}f` zy-Mfwa%GV+3atFu0zw!2-HmGi`mPYq0km z>!Yh4o+fj)qc8sCC^y}J-MXclizmZ(&zts214G8yx>VQ7Nx~1c5^(L=362FTB}sZM zn`h4lS%GolFkQBj7q4!eGevd_=Ma_`t0BBQ8n0!vaZeL{KXmS!s)c=j!0RcvWFP1B zj;8K}cJxCRJG8hejn#=IVC%u^26P*KQ7sY{QDhFa3{-QmHOvUPYx@oqKblf@V?sQY zcB={~Mjs-@-{lBAV;wv8nVz%gr~>W`x6O5mYvN4H!C<_l6jrqF+GC+EBbSWNb{lZ^ zv!ib_px1}RTW*JO!KBe3R4Y|=odSa|nbZ0P0s*Iw`B$s~9U39A6e9psL^pV3W=PH;?ieE}o&*WfFq1j{b!&+0b^=QC21g)?tvyG2fMx$Qgtfxw6HT|+* z1Ypr)ckuzF*(eDGUnimmTC0pHc`5nELkT1Wk z^t>d;ygs<}STLI!V#7wqZ7oWNuPXV3jK%kOhVdDe0@Phl}1fdH-65$JRTaPdWL-b(S@oJeyy* za{V?G)e(yeE2aYK5{voGR-#^gs_bSb0c3f)iBh;%niyL0xFsPYzi4ghQ!iX<_UuZT z?1QsvA~=pTSxEX&L&&!>I%c!y7w|yoLQ3Bu1&P}GfuOAF=fg`p`X_u4@TD7juuA|9 zU!S`4$UJi;>q;ZCJ>IiJcmfVmeGK<)2A2ciMo3M?qi>dqFXIKtKx1Z)Uyg)Ey^rCW zX0Qq}V2gnEw)7Z7T8pf1S1@f)g{DJmJ~5Y zOD|ajpt+kE3S9@l01BdpXlWFE_{PPgX*-vsJ9S|osW5K8U}uXoRBgNe z(4HlQ`9(`1PB1yG?Zg+b#T=a&he#_K{d7>Au+DeSZq(p1um#k0$5Cfr)M*@-c($p-VpB1&*J5q$A#q~6Mj?nj{cPMjnCn+O`YF~PBD8Q%MhA}1@ z?ARRDUZ3B!PRPMA?qW{i;Oc#(%(nh}b0f7v3r}AZ+2g%+l2f+LS%xqqqXo!h(DU#* z&{oN4ZeB+h;qL^Y$@qPqhAYfL6IIN%EiREo`X2+LV`fPYk@+eoo6v)?O;~i>M3x?V z>6CX%uS!G(ewot3Q8*3Z4@@R{gnFkATfMw_Sj>b!i1B7fmH|dI+R@Pk>TKTQShP1f zSPsTYXZAnPM@dAc&2dG-TYsNRrqc^qT6z%Ih4_Xve0)5xdH55NFR(FwWYK$zl=xNY zBa{|Aocz%IIVYn5-Y-<>tHt+7?Vy?Y!uVn(lkm}A7k!FV7J?+hQRnZOkQ~dZ=L!H2 z*2ruQl4~&k^dRlGKDa18|GldxSm1nKXFINojNr`OKE~gOIqr zZ6UIT_PlYSnb67}1w$xNZhvW-Ex2D=L$f>YurL^mE%T%pCK^qp)bhaojRq#MRgOgM zK6ceO0MFe#nXHE}U;?D{7((-6kbQV(?;~e|`oG~sCbA(p0-W87*V+-;mO-lMSVc^( zyICoEaB)|{!>dJca9d!|cyj0b4V(_7x`>>7f_@*BbL3CEhV4z>S#^xp*8zeNUCugt zswirMV?`jy!2Z?6)Nw-ETC7{$+CO`pSktG#WqIIY#h>T>Yttg*9N$jt9FKCt39zLL zMq-Da%`w~a=o+y@T0Q}tj(Mr1?={#EYrim?(POMiwAVVuWEk$XT$pZiOkjDqyLQ)$ z<0qt(vhHlTa2w99$Km_T%^u9Ic(%vAtKuK`98IFz(B`{Fvbhcqtk$42_CV^g(my8U zm0a+_M|cq?93r4J^LEucarz61yU#HI%$t1=B;Vk3GG(;1gy^y-_YsPMolHXd#CXnV zZo#mJa-OLXWImP}2j6+v14q9NN7>J0xqNp~mN( zMxLf@S9pL>`ym5;$%GIdEa|S!S?2B3%Sq|uf|_ANH(9cnBD^nyf@9+wSEQ%$MevIZ z5rq!qOU9ykzQz%g?^-Ba=L=19tPCPgx|&o^fA=qIN!9ELvoCvBR6Y}bskb-)!xYjL ze&gr%+k3Ke3i~6};pHcjQ5pwh_jN8dl`(hiW0)MW3G7GziRKN6q(qQC%|TlsZAXa1 z-KL!ncIqU83>n}(;NOEbhaG1RV>{`d*c39TsB#ut7vYh~2^*ETo@Ur!uB_4Jcr&-p zkD^0V9*Bf8YoxeLPIyE6q=g4g@s7?eV$iYbFj8?m76}_*ve*KT2~s`P?xs<=g3Buu zBg8ABU&QCMX>sIBY$cR(QPAWf+z@omPM=mcNl-eCic1cCmcAttLtxZP;j7;69*BQ6mk2@hx36RH3v#$qK88m*^rKOLQc+%x6nq?JHWwJmYw8Uuw0EH?xPFps&><`3@`~`rTBTc_9yzQph8@ zN6x?@#$mzyxQ@#TuMM;Mjf<%Ueiw(4 zxicG++DEU@RLA(uZNcHaQt5@;ZW66*R-j{~XnJBK$boSWE_1&0qNzXNfp}J>pyI1v z*>JNK$kt(!=C>P)bBz}rt>>lfj+*t=oDa6%K~WGP6WluV4X51xsv+N(L}QCfZQSC0 z06Qs*em}>v{umT4yjKgU6{l%ceAJUq4OvgmDLb~h(JsaxSd8MiQs3+Eb=UxTlS0g^ z$*HPwT~^y5M5-diXkDdRbL7+ZFm)A!Mg;Y5Jsfk$1~r@?R7f4J#(rlWD}8`)CJDCk z68eK?r13W4b<9Y-*scy;SR5u|f>!DNY$*(fL<;Y5oarK|Uh0bEw5XUJ20i~((B1y1 zqrG?eS270EHdC5s$ z8%DmcM-AzHPP+RKQLa*IP?mQFge^oMr7FA!tgrDcGUUk?O85N`5`PkYR;5=v}Z%9q|M~ zlV-VIrU$nW_STf1{c-CkL)*Sk#xM=YM#&wIO||xOG47Kf>IIME+Y^vMh)rK7|ChCP zXK3Gqr!|tE82>oTIb~W<-^HIcfdmN|WU<(AaP%_Z; zy3Dx1eW&N`B=Hv5_asiYE;*(y9Gs~V3AsnXIhL4gmyccnCCMMDoOV8E}IF7dmG?4h27o}QAK&@#RBra69V}uAm{>6g9jH&2%PkOM!{{j-rae2n47i$Fp=3Up!O2U>DPAYv~Af;o1ZxhbUhw8)gX06hb`4i#v*{ERk zk|ZkHtt9m?gWOa?RiA{`;l<#`0z_@Ez1@ARg*t!2o!;l%-kIr0sJAiJQiUmRbp|{d z+Z5tEI8aS96aPQqzX% ziSGs|CSK*x(r9>k?Sq`xghmaQauX+8L)q7`YUSh8f^E^vP;>C&RUzm@C(4l#xEXs& zjby*YU-V_u+DoCKWsLL_uk(yhsN{Y2wGW3kV(0p0dsVV7UBNgcmKNRu2bgVzd_Me4 zbkQHU7_o z%u%8tP3HP4(;icVZ^vfa>r%w0hp6} zI7^yoF%P#6AK~v!t9S911SjA9P-y_>gZ7C;?2;_YIPn&MT-G0j>7Z|-efA>D0a;Y4 zr8dfb)NWCTSC5hwy5tE77oWn8BJA-EK0zz3ffIryS6>GD{=W(=`7L?f zsWdRW9M-E%(r+CRGwK!jw=%Fy>AR8tM)|9hM&wI^rd9)JMEA3;md7TA8{Oj<=)43r zdX8z#d@3 z1E;Z$HoC*<^MCrYYCntx?2Ye0^dYFFPyXr4mRQT-o+DoKasi6Sg zKX$!ez?%Oq^2^`^?#6IadTHSOrB#k6C@Iv>R7jMy`|gDvrbLTa3&S3R?9j|k@`T)Plu!N5zo?W@VF~5WS4|G@ zo++=)c};dA&uK8$;ZG}!r4yd+hBpq?AcinXnJM8|t2@?|@ppP4Z0|JwJSm@NXcgcX zMj1ju>U`kkA-?lG)TtVCJ*2-{;EGvjS_Plg3RlXpgVV*buthH6$MfM@&4%iu!d6Hjim@30>&inmRf7*l$ zMnqF;k=TsXWe=8i&aH4lIlMh7!(VJ8nh-qt&U84Zy*--EWQ)6kI#teo=Do_MPY&~d z-q$_iF7sXG=`c{0=`xB;<7+IooANkj@L+*A?ARk4?aw02r|6<-&oLiU^K5`KcNQHE zv&sSQT!A1SBBLv2dPQi$`-yD(f`|;<&2jk?Wb;{8-@vd)eyWX&Ch8Ti-eqDAP}emE z1*`Bai6|2Ih80KpK)v^p9CmiAQoVE1I20uu@ci8*evVi8)s@ZVOnzd?LQ@}9kt(Pa-}U}=QTG<|HAK(|E+002${|W#jaxb zZGW@N&jdZZ6VEbLxI&tE+k{1-vsv%S`fv%ju{8SWZj$2tNjb@~ed93z%ey1dbv}lV z6=HGjyMlBM1BA;`kCj1Ra?)YI&n~v!U`&4UIG~eSUMDF()t2C6`!q-8U!ub<&a=bg z?krAwSg_xs&a%_JT%X%P2pw&_4~bC(&4taz!?4uXrR-~^5>w1R4v&Pf?CRHIm<;(H z)gkc4z9RRX5a=zUVeEX9R36f_&E_G3QW4DcUM;ntL!%$G^0CrN)s4r%%0GCG5$rLC zS}V_mx_<*JEYXPoTzB-i8!FmO-nFlT?FDUr0IF_-!huH(S9`A*V@2IAZ5zdG;iWvU)6Qow3Z)fRJj1LoLV#Gwb~inpSNs>M#d+MTGj z$a?FCB+WgJ>%lwL}67Db&@y z<&q$Znt##()T}nnPr8*-s8AwMj9 zSk>_zG0mg{@Zy#;vi)Vtec8`D0AriwSUTDD2rTzLcYwyi21))HN&*+(ld@EJJgB>M zxKhHE8to)$SyIcI2euip+{iTfg%8eF`QjpaO&yGQ+nJ9A@Gn`qu-~$WZFc;8MlGE} zXL6bn`kRj8*zrx;>hw4hwc<%;*`#E{YDNKfmV^}(WFr=P=@o_cGHOf4Hx)W1ylMwx zMp+R-3xCeIpvGgKgKnn9^&KBhk?tfcPeu~V%8Yf>AAhi;tYsc~^dk-@1{;z)0Vu!^uxC4J`3^r7Is3NV{T&Iza-9mH?fJn9(wjM3Cga zST5+$0$?BBi!FuZ9aAwmwg4&l-$J{o$3N_Rki*Bsd=T@ow*P2o=aT>$9|ET9)aiEI zecp<$gZ%7Qn~NIBW~5mn7Yh`lk$kKW&^YizbKB5jHyN0Wv`4QlUk{CxPV|rs^T(hRoaP096V7 zu=R=aa6pflu;fX8p(@ZcQ5rc}La&?5*h+;In!2^MMe}3+4s${k;+m z1+L>wDso3jl=5j0qeG;2DzArCC}ZlWE<=h3(b<>81)f7~Luh5=m8wWkNb}G48ppm{ zZs`EPZT|xx3`_jwkh+#X3BL1)S9{s(=pUR1d~1sJCafI|8}rak(qDNT&O(QZH;LD-iUU&Em{vI&M#U#@h{`!Tzf(3XO$+ zki-c(S9DFRi_v#j*#ksTH7S?PnT5t@@nu4}tJGmX88JQe;)cT-imC2ZO-<0<#aiYW zffeg3wYVKv0ZV-$$aT(>vl)_oOrmp{8IkL9X)+6zC91`yvocNUb~PV+yOuA^!#e=;D*9$HirGT2vNW_)J~1Cu~G4 zc1R5iQn(TmeQCiHMy0G0#vq%4raSv=&f%F{DXlZv@=jz97ksR`ff;9JlA3(ZC#2zmFm zHP`3>=`|@NOclK`e0r1$-Mem>dUn>x>D|r1ils1CFQiAUFBG$zrMVe!F<6? zw4)P&K(M#`7VZ*Z!GXhH@po$WQ}xXW1iL#_HNGLR{&jME>1x|B^W7Xfs|Tfsu9=^N zjssTVMVkfJv4$Zxndc9uRxdcAAQ&0WfiUW@G)Aw&oAAB?Q9_3}<>e;>4Y-w$`=Hzl z%r-d|8^jLiXz~}tbP(h6quw-Ye16hV3uyRGSWIs#zkUnvI`%|7zM&yY zPe+86sv#~W>bPoPW*~|#Bcv@NJ4pcs!RxgfYY=z>U_nPhI%aqU947ApA!!ZOaHH#I zVvxn#i?(agQe7PK`RB9Q+-;W9__0@v1Kq{ZlxzK53U`hZ%NtVUVX}+z9Gg4EZ`Fz? z#SL7yTiR2vuWQY#WPe?&mUP$JR736YIK}y|`@F1=O8vqk|g-T%4)0Z7s%oNo(g`~>*@wxjMZILCTOg}Btt=Y&3bYQvtkBgyN zCVGMEDurOH+<}P2;h0%bQrI~gf7O$>bpWH}hwC@C-|S-oNN*-VoD%dnQo8z~spm39 zvMBr-%a!SYe&gU{b$DUCpOf-oVfeBxrZL=d%`-Ep*l2GQ0^}+v$^>N7&pGdf;8hMU zX?eGdah`wh;9iuyxj%&ym~LQ4$%pmQ-Z$7BaU}l4b`r#!>&)`rRVbLscw*e*wlo~1 zhBfL-X&jw%p0SY#ICmJ3d|n+%Yq?<#OO1v^Z{IOkWqwt?b)i2n8K?w>(YO=&^HjGo z+7zNu*2q3FeESrJGS{tF{*qx}QJY)ZLI+R3w{-kiZUDJPtLe=jiExNTL7%~#Hl<(7 z|7NmO{7J^Gf6vMLIxD}t>_>smBqY|MM8ZqoN|L}128cp;7=~BJO2%C1%GBVp-FfG3 zRD4FjY`c374(f=LhoYqFh|~qf@;lwW&t1EX7vW0rgZz?CjmEoeb|#k=Se(0o)OS0w zxMl-kK0`#v#+99GLH)&gs$hD*r1zTG$lof(C~d+Mw(mghU^NhL<7xv%h3_;fd?X*O zK$_#0J&ywVHwB;HoxHdjQUv?M{vzL{U#)Ha2dN=c*8VWL%&9vx%~UH@ydydGyw-Ac zY`YmA40%iEeVlFQIguydH*5R`JPtCb+D!oePh$1_je=~=>-s0Bi6DNKXrp`a#X`nd zm)r$s!luEzTaD6?b)ee`6txE{pM9jdn2HDF*Hs+FjoYO}fz0m6yt6xgnM6FabZMIK zq<-QUx8!8-df)*|b$(bZgf^pVr5#Hm+h9X9#uRHh5g#5D%_5<~`60|0D9qMNxxNAa zsjhm^bU0U)S{+vIQu@}fau|@iY##icqYr=8UxkrQESfqNY&w}VdPmY}Yi4~UD55=o zd`qzQjCf6n^Ye6{1+gr4ARhx*cQ0Hw%p0j8!WSf=IJYRkx(HS{k8V0y$6*ZUh-3K? zKOS1PWQKtZVw^Vkyomll%h&jA1*nsq$Tc;e?QT;egrbG3>XJ`a=p1mST?PNP`3rcO z`!d(f-SN&e0MBq;F)-{2E*7q#Ia${5;ofJtQ71`GE|(+}RijTTo6xTr`Nu#B1nx_T zNOCk2j}~Vv?Qg{}<0lAIoUB6J#CUM!U!)jtJv@`ZsKJSx%7xuPa@P9Qxg;agq^4+df!BHHJvRZ3EJ|#($WAhwyeVg9S%wyNkvdnB!?V|J zR7F!t`+~U0$UNxk08*4~9)v)3eOE1U3L;MTQ}une&&AoHyu*_t!WAY1kLZaZt`%(;=&z1-N~9HA%~QUN#MPE zuu@0OG73YoB;wFXS6&)}oR4B{jd33u){pPQJrkWAzHW8_R;7!!@WYjo?jn7b(}w67 zi0)-$Tr>JZaWSuD@cc;!u2Wy-bZ2EQRc>AFOzXqnbp=*O{P8(J0wJlbfOePD8&+RH}pdy9qldJ16cc(b_b(S~u@;M6@L>hO_&;=aE?$ z09@dEFnn&-VxEe@-It0ZqgEyDY^BR9bn4ER?C?zFkWk^UWC2-I6+N;7%hG`(s`e<) zw>JCHx=xBH9dr6bEx){M?u$_%+Hp3Pd;K`s%Vy&YY6lXMN_K&qV{>w zrHtY~iIZQhD#dQ{1y71@g0%bC#wn|r4}ynPjKE@_swElsm$*hVWJ`kCy7a{PxWA2w zluJAmK6dts$<*p_37ORJ@LH;wB`!Yt`7+c+tLZf6_g|2Vp7biNCrSbat6VTf=x zML7^0@N3w)a$g5|3#@f6P37x?^BwQ>1j4zlyYS?W?*WW%KrV|^=L|0Fn3m^;3i&8w z3M6rBtN(~fsov_&4w4xMNk<~4nEABnEK87}1+|9rB@_0?ZP(*LHi*8>xfGOI^AtDE z8|Ll|1sRSZxNQ7&e6yP9rlRAz?j6I{IGpTa)O6-nkCemYyxG`R4MSA-ZB?xD!1ejCkZsx$$?*vTxt-3?_NF2H#nLP3eiS z%-s!aMdRSWCZ!8BGu#5 zA(_)=`Ci=?Zb)R7Y=0YR&SjrJ1pRk&%`sAc%VK}v3M@-sdA2k4)<+0eFt_cd~Z z1-nppr{7Ro-8%Dkip~6Z8~deKo~!th7{}q1y8D~Aw<5imE!4lI{|X6*H#XqC9IuZ3 zQ?K_r*GqKKjm}0Vmz)6vOnq=8jttyo^CK2)4;PPxb5I=c6Z8whNnT&}&dnl=BXgR= zU$u+zaX`8xl2JT{^D>Td2VEVgC9xz|HfsHPb#jbyb@J#+c_2*U?)b9oFC)aalcAEG zasnb86~xbOTy|^*epMGACXO}>nPOIaa-|7*8n7wqi`nBL6C9iF{%%mbc7YIv^|38p zJRjJ&7zZp5l$=On{E68c6Xe_TQUNtE&s!)n|1%@xxVC!ENFHcf1684B`Py^bLkB+> z$@1e5t7-W)PEjOg<1&2UqV(eV64M;pwt#!0!Zss1t5{=KRNebto>p}5?)w}{GDdBx zbC|+V_Q4AHc#3;7HV^${B^S_rs_$WfT?W}Ll!7d6-|UYd_hP3okt2WEN@Ib%j~Mhz zyd+uR_uiL23rSVcVuQ}3=?|K+lcw$9NBWy$u9y21$nygIQ2gSK=2r})G+0iyf-V;e zCXwnbwI&1Q=GtlQyC`{8O0c0@uv5h0(5~Pc9?x=}fxF;w1Zw1n@_|;1gsO`;Ym*j6 zL{6yG)+anetu(M^Z`LhBlFDC==mP~z0FBRsP#)fMvw;*dO5a}L-Pg;ojIEcqk7=Dv zL8W0tXTSR4h3)NM?VIig%u)!eKa^T0@+%Y;9LsUHxc0HGVM#_{zOQbR{TQYtkrJ!1 ze-m{HJXyDb2k9!SKwv!zyc18PHPVMmihWyj*Q*jF5+={jUTH0}e75VHyK@EBFc+#{S6;i!nLR6+mXP&DcqU7+OuwR*R=M8N99JeO z=_O9fC1Y1=Z*J|$Vhj3SDD0zG6cXXm-~y0zMvw2;BhwgB(M*PZ3^-wRP;IV^cxVg- z3gc5n(+gG+Kgh+?&1$B@bY0+t4p%zDKYRIFD09qzvZ z(@BJsnp*f4JDC3^0e}|*dXO`Jo%FmrUAU{52N-fO zmk3`c9r+Ee!U3mLfT71%^LzKz$uN()3xS;+QtLJ^**7#tDkqF!3_ZkX-VgtkOeu%a zhZ1D1A1u}&a5|nmy^(FZ1iX^jG&QRXZacIH%F5AtsCC~|>Q`%3!c3UkXaMVA6|>rF zw~0;GW~P?amR`ZVprAG4LE30ujP2eT%RZwC)~ z`%b>>{UuPl)|pHrTTG7F!b_;%$iiAh?fI>u7j>{G8GC9&c|*k|AH9O!=Xopu^(Xz6 zqC#bNgUOWhQ;;RE!yuq#QcpD8QMUAMYO$F8^Jb+SoFbtpYJ^M0j@+=VUy)@&Zq8w% zxke)2;4p}q-m>#t!gLDuc(U8m=BiF$651u@uQM7*saL9LZXLQU*I}{{`hhks@jZjy znH9MhPnMxEER62?;@C_O4h+D``1KzvXC#+-p41${w6XmlyceCckuiBqCbL9meM*FQ z=DogjEAb~ zl0&>CFXGQUUM*dsf_Vt~siPCW81Ay&f`%<3m4^K1t#jcEfOLKDX`9nJU$~EXwo1z} zkL36XXaq@HM%??Yo7jXe55ZtLr6)QgeP?&aK$}o7Z z7pdg|>$U;;IvZmdPtr4BW;_z3w2eV~q{F60n~;^BWORB)`2!(dWt>ZF2t;!tx&9pc z_r1Y%|NS&cFD-&<)^hfSB9(52hWYph3pLT)3}wS4*706budsQ#ExFyO$#cGvf5lZz z587pooR33{zf2IZwSr3g{ldCZ0$r6OS@~2%U}D&77JepbB4&fXDQU=0UdN49OEo4k z7y1|O+eoev>R~(p&q>3>=l9u3{ zy|$D5_ERP4$W|h!kg@puq_0nbnPYej<7KYjvhPo8Ga&^4dRozgWzLfYE|+s0)yhp4 z#U|nFo_L+vFlzd-XV^3Is{RDaGj&c3M8HXY(jUXO3>0>OEN?FpFa)Ifq$AI%jiHhIi$!(3JCL>fZd zi-nRDKkB}7xFFuu*m${TjSPTYXMRo=HL4VQxoImsLxwE6X*r($8Fr2RbzH*7iNXX3 zxk2m3f&`2qihbF6P*s(lR@V`Y;R8)DQ5LE!s23zBiPrQA)hnW0BW!=isR zQli3`lF!9X!-MVyo~-b)*$uJ7cvUH5TMnB@_B!WOgu1w8^NEx9-Ahy3wk>S(%pttd z&LdcVdsoh&3&TJih+Cnjvtq+H&Eq4KXo%IA!fE9c!pv+3%@<}Nkl33@^B9~YViXx=wPPWVoJH{ zAGl%fR){S>ipHx7N!FMkzkvyIOVOWy`Yu|ri%<_O9u3Q_QGwJpk)codWn48H@X(ee z14C_+c|Isi9!_)fMba)x{!QaYo56ecn18nrb68)&0_Tu*3-u`K)YU4QY93 ze2}wCfY#^zQS0L_re>5jwrtoNA#A1h>~F9(4!@BvE>6@lPtVU_h`Y~X)Y9d@x+6n^ zhmMW!B#YtpYx&d^m#k)$%l-9- zRGRaKI4LXerg67f>Ua(aU^(q6zbDisbr;Q?MOyg9ws)b7X9Umd`Pjds^GWb$)shig zUYlG#CY%Tim~wY4adIU^3c(MVg!0Hf!R0?-DhlZ*3@*zt;s{FW=xhLS%b#JU5*fd7YHx+6=w-_L8zl z?h%Q3>tKp6d+A$ED4;e7W;%g%W}UZO|31F(8JGbRJ%A5=tYC@>ERlsaU5#9rT(ICQ zC<{}ECXzW`fOWak8US&RBq$KN7d`fJKNlokw~^GyPYf`>EDD;5dQ2p>!>Do@@0}EzAmKT3&0=Tg<$;e(9zDw2C?$B&$ry&KUR5rEr+`pE zE$Q0WggotNeNOmAGnVmYx2t_|HUH(l3|MDx*;rTvBEv%go3ESJQ& zQZg`MtC}NAgLvyL8_QQF(t9+(ucFLu)~lY5f#*MfVjLuGS#{|@QpVX5ROYVM@kfgd z_J(!jCb!T8AyE_S()JUn=}~sK>bExXXDJ>AE?)E8)++Yz;CJf_K3r+P04R7M&$@0c zH>^sxwW3(}4vNM_qSQL3j*sJQA;VSZ=jkyGZ@_KZWMDg05g%U7{~j0@x8i`&oA3o~ z9^GJddiXN)KXR>`Sh|Jn!+jn!qT}N-act%z`*<@9QzX06y zJE&G|bf+E?$_3@D4{at|NAR9D)~DQg+@++j`opN53K%KR^6FLq*pn(-#$=R$@j0k? zYS3fGhx(o4TL{M5cby9(2Ms$`Sy{-j@E-riVqhI?y8W3>Yi?JE(8Z=GxPswG5u;(Y zURd-_MfXV$(vcyar@;C3FTo608|t6Pda)|My(K)o3r){1TANYVoX%aRW-AC#z30-k z5TRcgo~2WOi4HX+08XzlkPoF0nes^(!B?}!r}`%2pYMtxwiN(c64Q6tp2kFXrj3Zd zbz?^ef2VCMF_V1LRhnHcP&N`O*)ADx;+5JnP0b{iQlj_9J#iOn%U#_{yY$F26%ni2 zb{T&|GZE~p*oCJ`_Ncx_+Rl_*<_qmW>f5Z`te0Xf53z^yY33}j-pp=bObwW2+}C?X z%tSQd6%gK5{9fJUue?dV6Lx@nJWMR*cd)s$JI11XX~*smK=F}vc6>ADnoXL71a1Hepo7!FcN@WpI$m1D zseRA%q3l(NQ%|JO63&-N7$=(H1HtQqQrat8O z#(q=*Qa&rFaAmV`Wl40>S_SibXOcgQc4DAcj+Wpt(iyv0h`JM zl1@$599ikRBgJ{Szlj?kC<6MH35~_Uu+G~c3V=a!f=yI@C~{iHM(fxcWOhf5;h-&c zxUHf1=#U)+wPBY~^rRQs^+Plo`Yg08N~aZYF`8C}u}&l_#w7w;`EAe(y|+uzss zUhEI9@^4TFl`#4L4XVe${vS{?d@e31S|xWoWBh-?<9^6;&IV5Z694J^;mZlz7}^?{ z+nD12fY6wKuw6f#JP~sTM<+oueFuDo|B0#hBmEDi9^1cl1@s+_|Dn?1(<+K83yUaI zDl4eU>04Rp8=2cmQ482w8T~`H``^fV4DA0Ni-!mQC-#5fYya-~U&wl_3~W%e|AVZ@ z!ovPv$a)OS|3So)(YOAY-v9Ub|CO&t%}(><=ii7udio!3;D2ZA{p0_?GWJ;M@TnPp zplbAVtc>{VjLiRM%AScit%((_hp~e#t*wnQt&^F9u`%ucOu-YQ{l9bY)M)>oad-B# z|10p$dHC`6 zZ;Ssr=6}TUqsRP%_+$F<^N-CxHRF$ue?|Kv|I_}7_&-|zc>kyU-^-8XKk@v_>ZktC z{(tHHGv9x7f9n6izN7m;vF}*ff7bDTqVImz(SHg*gE9W|8~Ya&51*d-$N2vde0QZ_ zDTkzrPOT!Os)_Q)Z`>}PA3-1iRDeY7iVp--s=u(aLM8Q(q>8xXPsg0lA^l&FK{Y&x zfQWzsI3;1wMJS3gvh@ItIXa|@U9949zgUWO(5CGDnP=5f&+p5ZY{wby7q68icCK+s zK7Nv3y#&2ZIhu3$!GtomBzQR*JbPypMFc~;gtTD#S-d>LUr<1e6n;)&ayJfSBU?kI(^$(GwwFy0 zp-aO|1xKJ@2GJ>_O}!yh;{6U)?j6?%ki{2X%iHR-CUvr1ETTGK)=0s zNt25_Vat@|l8ey!T7`z6>6P{@4iL`pvFkF#TpmziSe0tF@^BT@?0S({%@pSi1(Fs| z|EN9q*6@Yqdj(OKN^cz3((Dg&cV7+JV)p{KM|AAN0)ce9)w|Ya3(APyxa08UD2jsp zwXmw`@`1s(t=C*U&N=axxFRJNm=yG!7%QuDlP2=_$^O%vRjr8C1sh;&k%{6eFg)J2y4U1;Pxopc;#jnoRYB)DP{u~w}yovDM zAEAMx0@$6yCRHEd>`Pi6UW>YMRSwD}TNQ8BKfx9^DIHC;+)G|>`uYy z5Th(xJZ3w(sEWIcWz-a0-p&2dT?Dh`N%eJ+Zpq08#Pn*^K6c^Ubf5fS7m0lh`J{6H zp*Hxa*~!5%<6e`cZiMz|WX6r9Pv_|}2#i@I9Tvvp>zA{U)!P-@!QWN*!vab+kNIsO z^-8z#sG?MiOG1jTf=^(Y1sC_Jl6ADZ7Ouo-Q!)N9EXL*Fv+Fk56080Ir8HX?mr=JT zY5lb+6e?=yCO9x{IgP?eL$xH6rHlI%4EJ=&6Vuyq$|F(4$ORAGh0D}sqSm`#+82{5 z5cKtiv$hZkuT%YY3kMnfKPb!WkOQt|9uKKSUH0H)j(2vu2Pqjf=z*7-u(3RU(eW@EwUKV8KWIn|r0*AE?-nuA8QQ*~Ef}PmauOCsfpgj)oJ6Ws(TNcm zHi$$T#P?4oob-S`S~^Gfd~S5n&MJpjBSASUZ#`4PQH__?Dybz8a*ld3dpa6~X|<)H z-LnbtRB;oSQ$)&G5HHe*K&{=g&Ej&^ZH8eiD9bZm@C<6pu@-4%nI6yc(V%|Snz4!jFLrL1;MHQyi)jZB)d0#VQEkSwcIS<5^_)0DG$}K6l1l=B&*H&s`y_Jmdogt z;m;za<5e#i}aG{RV_XoXZ0~x(iid%mo#F($2gB}zI7u!Xl?Ki5-16T z>59M!kq~+U*}Ahn{AZ%0`+p(2k0M4Ya*C!u#;R zwq_POcE$i(6AKe_9UFkIj-HvVxsI*zzfsj6kMw`1sy`a*532f;GXBmT|NZ(0tNiy{ z|Npk--?@f?@#9|l>*D_TM)B9X!}}FAF*G!=F|gD#uq9A?&j+Bjw6fDTFeG3E{Jo(G znEttef$6VSCtzUyXDU5C-M=ov#})i*iw5++UKQxs|G~6>yxjZ=Pah!oejEJ7SoHMF z|NQnJAd8ir?*9g|5Eah zmAh-Hm8a{ZdRML;p`V49FI`+_^=ETn$S9E>b991nYIJ`gm=2xK-rB~QVP0Tfqx-Ht zvq_X4D!|H|z>fZ2!`TzOKtIcRqvc6}S3p+CL^%oMyV<@Z{NnvW6jza4LYPqKg&Ipl z_san2*LScviM0WsqYYThaUVi(|50$nFJv9yY-oHGBcc+z^4`E}*qB4&o+(2<7qGIZ z)+sRu@FLNO0Yx=HK4_?WSYgNDv8u1wRe2Z)L-K`l12eI^`Kgaent4LCpgPZMQ;|xObGtr?&Ali^f56FK$ zM}^Oxup`Owl;cQ5GVAusa*AwkbD;c8D20;)|nrvL6vvREKVbvU!Zi zX?=c<$*5ofjxQn;nsq}uZ@@MKjX%y8hAj|WYyxsnGoTVeG{(>5LQzUU2jaBS+H3}w zT3jk#g+7c7q?4>b5Oi{6Mv-<_$WM3E&oA`h5p6!7e&f(ChSW~MoHvxLcp~m5vB78e z%-lzTw}zuZ9#FuVX|wm*eTsFpdT=@`w5WB?IxNecJN*m;7g%qXy6iHwF^YM5<$p_!Jqf=a5VEON*WmtUkl#d!pWqXp)-iNqC*)Y5Y@8HQqoVO01DOrInSd zl)Ltm#XSQ^$fQ+%4u zyt^ps0=0hFOIvEQZNL5bZ3P6q1yltv`t$wL)@lOlXbql8P9jOZ8gh%eytbSznsL?M zc&qR0Zo0V%g$2%gv{SQ2>fFJj&psX+2_>*4U4}OMO#pJn4ddH1UVPViC5ID1doIiO zzpk=fCKU$@G?HN|ot558BcEN^SO0L#64C37Y!32ZlD;{w4=sIsN!`ix@@tD@jArGc zon=lhhqo)CN=?!?hleiGoZ`ej!oAKo+d68Pa4k!to5X>N`znFq!qj^gZ)A(pfU+GL z0mX@M-ExliSjjZBz+|&vE0caRu?J@I_46H3!cmJyJqLzrLe|M;(N~>kkF}~+X?=Ju zU8|+arHLgA(-WfCR4(BMID|z-GD|+lnwx|pJS2zS&GBMc zOsCZKq&XH;;nDtndzDm1vw7QA6gjP%dpu3Y3ZZ(lZC_zlCEBI7^e+{kf8*}RO@GVy zx!1bJu!Nmzq6aWN6`}j(7>Q-+xgL2A!TPQuXB-@&Jk83kE1JGMX!R+6n_#~U5y2Hh z+n3R2r{nWgEt;{HWEvQB8`S!FXlTRo9j6_Q=Z8=@&B3DuALz-%Fv@K1A)kJWxC>T81o5ec}(-y@hRAqboVLY42jfmcEd*sP)pJ^ZUsmsEn_xC`k_y3Bn;9 zp4_ecSy3&LQKzCwd;}<;Mrv~a6{sOaeQXj)wj`wqh6>r_3I?Y`= zNp6a(zQSOx3pd5X#-)Z@O!dK_<&0gEPw{$@z_NWk)k*^cg9?hA{jNv4vS5$*P(#K_ zWQ?)>Y|VGA5*|n6l5H>SSHXFs%A(^^ah4#bTcem$wFPTwncA$noMM9-L;al2%hyha zKn_}%vZaUPL-KG`ENT?g&RR~>6JWfng?%U%$R`DuMzGot0Nv zb2-JW8IeNA8?AIC^sBKU2MoFj2#)C{-Lc2#0${TJqG9Lpr??MA7 ztX-)d-LTaE1dR0T|M`LaK}r8(7a-F|_t3uqBg;F!{gW73-a9M)1&j=T=KU8i%1DXx zeN%l0MhVgX0vPH4=#%_ANBx=d7gO-r>KVLuB(i)k;r|jC|HA?Q6EMD)^d~Q}zE}Le z<3+}gnKa&K(V(YeVk2N>ru(lu`OFP$Z2?9$20HK9_;)(|6Gr}iRtyYGA1(6-9sWst zAAkSVL&We$BmZ^Q|7((Bp#yx>;l0!AFD4>jVfd>?1T2hyrT(3iSpR+t`~^z%?{~(( zNQwQu)9|lv@1(@^-eiAuN72zUF#d15qg)h})t9GePGdGCx1;)2SGgM0rg^ug8k(B} z{D8bSPVorX_9p_z?ZRZNu4QC6A0$qbuyH zfQC8P`Bm7I7r}sw5Fub3StV?R4bb5#YMVi3R`AY2&J(jICr$V=Z#O*coPl%IJNKl6 zVzX=5uX}}u`*1ULPoX#TA*?H4s;*#cs@qEz8($slY|uapn)z{3-GC0Y$ronvw(dbh zzk09Wc0@=^I2swbLN3UDI^Nqkg$8Mc0x8k_^1Pn{EGs#-R)%PXP3|S5CXfIHss9@3 zFTl$Sq`mpV3K9k0%vXX7d<}p>sA!G7!mn?Y9`MHPECYC}y>1p;8qn%NdA~-pcuj&s z+oS92+14>Yv@a;HmMG(PO0(o8XdB?rBQ>-Z}XF z6d8rq^X_|GQ?I5i*5DG-o@#>~c;Y(I|9a^+gbM(1T3}xUTX+E0#sFG?(eJ+PpH*EO z+u-4g;2GJA`1#s4COHN~W$VgX!P5i%e93oZ&v*y)DYNWU+jIR5_deq*6Fj^Z2`DI- zvRA3r_e=a+4911S^41Xc8MG}hI(;JpqkW)?w~JR-gJ)TFF*0G-v$uxgqj5Ki^C(MKz;*SRgJ;wJVTt;(vmK-tds zX9~f&(szLBYuZnUh1ru_CEzg6Iu?`-&&y&CK0*RIuL~Xv{hqPz*C{>#euSra`J4Bf zUhK;qZq@1SttVyoeFCu;hQtcckQa}9rRV2Vo;Yu>*GRcNctqDTPqw@Dh^CG9_aV&f z-r(MPX*Z265Wp*}tzQlN8V31WI({A^k`L^auRW+)4)Z{umYnW@Kj`&nMVwndW8@ip z0$ybISzXZ#xg-O1sCh0IGr-}K{D~-R=0$p)`)yQ%=FQ^%6L@2DQ`_%rqg>6g*VcNU z7C%UES8qP!P+LiYUv$e&6%i>|P_j}#Pkxk@w=5}*pT?~iU))yksBF3@1RsAFZM*_J zOxxzn3R?&k!)_{U=n%z-7;HUoo`4d6Rf+y#-Th-@CtEZ^`N&@ZjDAcSlWcskJ%+d+ z$zbnP%o$-ILpEOPU^@7F_@=QC+a^TJI_B|dV*z2bY#fGsR?*2QJrv@Ke`>+tGDHiS zVDjhF7{hwF;1NNk=P4%p;Y?$%H9Na-wZ&jPmap?$5>BY z&PH-`mi9`F$Lbx~0|v(}Bb+kj!{C0;PZ9sUqBO{S)+mVrzI+I-#7lsb9*VAOCEQ7+Z_^D zQ}yd#+^!^sjYv(m3I&o@_ZL3D=$24SkV{Teh+x;^u6uZ8d<fsbRUN)Ae%eVkH;nR;TE4H3`Hj&ci!Ew& zlXwlXw&D^DlVPYPs}qu8n`TH?4FL*qb5%o;?3`8%V=&0i*YM~vAX0`U!B3)UJ8q^i zzE2ICO5$9Pwem{o-3F1^(PzX?dB1X~l;EaH=EBmRdnnySa#=5YOw?Rp!P`HTOxk4_ zv6p>zmO^D~W?vYh8(^_NE04uG)MVXo$vQcM9;##CdVa;xlMfPLQBoJrts?F(hZo8+ zSxz~#M&8FWj%nBCP*#PP#jI&~)!e@oWIzcTF@@35uW{+xb481i`^n~c`E`c12M7jS ztp0(S8H+gKO+TM8Zqb3c%&m)TS-;WGSKA4R)z=B8G5P3IusZU6hsmpLSV=3`Qvsi@ zlW`N2YFcQXiei-h4)Wp5ZyAVe#O>k(%#dAI%2sli2pSqr;qll_bE=9{RDOcu2SIup>G<{yT z-C&gyeyi(GubO1Utp@C+W)5;t((zje9B2qqJxbyewe0($6zJ19rIb@VQZ&U#vfq@> zWXbsZY z+DLdQQ+kXCOu;{P1zKYSmG=VNvBlJu*w@BIv{Iqle=9+o#ZQ`{NhvDgMcVUaJ+~;i z^SQBxQy3TTmsUO$pvM4pk0wSf66GG9@403klaiG19MLkon&gHb=A!}%n}+M0Lq(#W z5v^~j^V(_eLPVzXrYim}fez2LCP%ismxw4J0 zzR42Es;n=sq_~17`6&hwNo}#s?s93a!yMtb$c&+FX{sX_-Q1{2+FL?-1pSTB4aIH@ z;o$}XJ@|!xM=LRg3Kpws#=}WpR3_kV17N0-^+U2Edl5fh3d{+pKhh=CZA+kpI&?@k|0-sU@H=h!ZAwh_%bV*wItqTFes#J{y^47~LalJG$**eR zs!QR`v(2H4@^OCmu|QI9MR2fS6aZ{_?zY;iK%n+n%Vj!ZiME$bR*x|3_>)i{?#1m! zj&}K%_F>qxjWNzT1PAf${bsF)mClH7)JE-F2AK8p>Vg}G=-VhEbCY%MjDkY^agu&? zuEhC=^>S(2aice`R0qp&ko;g&2ae+a0ca+I?yQhTdC9U@3&Ouy2v31iOUt=zCk|XSpK>VdP155jZGzM z6w7!i9+MQ4+Ej_BbSclf-R;pIe%L;7urjJzZF$ z((8=nCA|n<)j5W2jl6tpNxKJR-)9$H2jj-q_v3500>!4=*JN}obV*8jf2uc1OK4H! z!yN>Pu2DO`=K3=fn zd(hKP=Pl)s=NCETIHoje{>DSmB^6ZCOLpzP08gYgPC2}9>Y(OE`u(esy#4p_7?rP! z$LH2ge9_I)#3zGgX*;6ur|ahId@FwVHVgWqbUSf?gETX(M6q6 z4OM+Jr7q}=b3*8{UWnZr5XW`6Gy4-~?($ZA2#Tglncy{irVJ932oh_y8-r{n*hVWT zEq(%zQrn}pIld{-#8T`F)1&3bVlz0EfKU~$2RFkmt{R#zKn%*TR!-XG%Wya47w47P zIW&G>sp!f~KO(w0373BIQBPe4v}j>4Q}gx8EkEA(f}x(0?*_S{yP3OMBleC#+xi2m z^6Af(rkRQquMMqn9$r>uS;0>rJC%1{5K?QE?PzFNP_)teVdRW0MqkE0FNUFpbEY(!V6m6QS0%aP0jfFuC04`o z7%}FAXpBsl)RnQAmR+Akr0xYO-KbKN zv3M=>QzsI;0>!Iqri(M!kJ*0tqW1_7GyK-LdTc$L(KR!wZf}`sQ{-SSql5Nb+?qbV zz1#vJ&cT&!_XtuImV8ccueO1k#mo4bO6JQ(MT+i=)ktan=tb1P4AY)ctlEn`kSnJVZ?Gjgbgaoh*>4;3FgBu z3%q>AvX@*2g5N?_;LX?_*Lp(O8az;15r9Wy?2QVNy?e$vCVCYtlr&F1RUE_ntU5n-}5MG)iZ6l1(L%0m0EBImY!QSvZs0##z8kEROQ#DTBwz0 zxqRpsfSIh!#PWuH@#v(Gk^kzneDWyaY*Ax|Zj~`KQ4fDJNvEb$f?;ON2i!s5kA9i>v4h{WX7xT`E5=(FF}Hm?l$|wc zg|y$uT5_)@^^cU;*aS4a(3zwZla@E*xx`a~w21AcJfUT%FxKz=*ji22Jt8lx5jpRZ z-z+laNv3!s31tv5=PT1~G2}wu$6WE~Di3I3Lp^g~vx}en_Le(arP`m_`z8!xR!R?2 zsX3D$?^RDXE!Qf-R>$muMZqA$;O9|qMs7{X^w~V9l806NnzJ-4G-ld~Ml$Q5h&WXEOe=?L zVH{fg%VrGEmz&1Y9M4aVW7E!t4J9@3Ya|eK#rnDd1%B~Kb`F#;cv%jhD;}5Pb z`!kvpVm6A=;I4Ow8KpH)Y=KTK^-(A^P8{JGMhm59jldHTG;icN8tgk_kb&63c2_>9 z@u<7{Ykso{oqOt2b^$$F>{06MMZ4+*&M=sS3Z}&t;KvIuO?XN1nk}C1o`nb>A*~ZK zj#wY%<}AT(kU6CHGNGM6zL}ivV-%b8HP&T7J}c4v?0wzhy}CPy?fYoD%}&uJc6#X5 zJcjBES*3>`Enz)Y+g6vUqZ(73Fw6V<@mR9p7+cZ`#!31BPuvK5j41wKp_e0JzxyP3 z2m{MDq=vjtXG4|r;?TE1;$`7mEH-nR#TPZ>P(OSdpj9*vC+dT>Hk6q!s$R`{4Ye9T z#f_HBg6UrIgO!O`SIn#Nk#w{&j&Gn?f%?^M?Ta(Z8U6=kg)*3IDhrG&u!3Hf&Nl6trIM}pdyI-J6^DrKKOn?;PEgU5_LALxq_A1`O?Db!`7o=wIdp%~wbe4lZ%Bf6Mn4V#hPz|kYVSE1&$uCFL5;O95H zHepOK;t7sb&IZk-t+O$i$`dOuhf8r}!fqD8Tnmq;N^+Cj_I_O?ch@2n!Kom7pBP9ZcJ15^ zXRe+o4JbP+YOAe`Qdo*_ZH#X&ql9dEUTuCkK;HcdQ~QE;!yz7(7Ho}M1+)9J?9gD4 zQAt&&ogV)M9eZRLBj=j9*$8*%$!s?Sc{0w3Ju{M@uTc??*g-@Ep$|+h&1eny;9hy0 zeHXYHS1bIEq$A^ruJkz1`-`=uH_*%@0}Hr+igerF>iASz`|FS6S?)%~IT3<*uTtd! zm!G>oE8gT-Hd%|iU&nVY%kcr=LCt-RF0q`d_t?U)h0I;1O{_JYn`DBrthaGXxjn6{+)%`icvq08 ztd5a-+1&`jTU=Z$;kW08#&{wb89I>=?y}i-%OJY-M^~$FIFs35!=F_820df2qM0gW zyGY{no}WDTtAb-dGOC!hVQG)Jcs|MONA538F2((EB zQ;r7e3Z{^fn$e1q_)Y3AxMJqhLV{Q$cSwy4#>|4Ekjf-&vu1mGUy1n@mTb~=?g{3Y z2-#hz@f3{JA)I}fa+~K=>TU12RYsvpYhfHUxz${<^+m} z#mx)!rP$~v9l`yy?$nCw+;Q;okk*^`xnu&-*BHN{?Wd^D1+M(o{Y2grV6F8P5k*^A z#+O2*r9uc>X3PEx&MbdFEX8o%W;h~k_H0I%R7%0E(`E0D{+3-ie;>olvhG2;bCVN( z@bTho1O2lmB4nhRUp%b$j0r?_VP=WwUDS7|60JyZ#R!fu2c0aSZANa6HX4znfIR-j zHDrAp_&pEFf|=j9=|84s=)IvmM2VBlIiDo^bQ7fbBR%R(UriN%HgsQ!Z{jwmm>L0^ zQ^Y{lBNKy=TO@o&>SLyKF69Wkj}O?{9>h#)>PU~f;|?JE^A5*DIhfMhDDGZ3C_};_ z@=oCC%vsNV>Q*+L4bzuy^sKLMa^1NgVR0s)*uk2Zhscl@x)XCsEC{ci6oZqZiUob2 zT|&18p3t-l#57ZNn}$_5ZyJt@cVCB1$i(Lv_+s zN~U6654oi`V&;ybUyaTvA?I!J`zNThMgBVCiV>BcsTl=PebZ#11Sv+c{X}_FV~SH2 z`P(UO*#@#Zv0ZI)y$vG*&DkY_p_mz4&2R@i?PvGx8Sr_SVscq@rlh>vI*9sB(uYR5 z%BxwLbyiskU%V6|DZq8ny>#n?Ji}cInL{%p!zUveaeoa$jn^TSEX`ex%8fM_si8e- zF`#%Rlh)bOo!Mt!=RunkQW=Ffp1B`DMUzTe9)oy&+$UCs3wrN!0{(ig*`fi3c-jGy ze3TtIu6IkaN6X$15!p`_5t(a1R#(pJp+vM-px} zDIPat)-YN$3z^3=4;UbA=Es;g05fDzz!(wn9GS!*O<**u2ob_f;0bUVaOIil#VzQDjtR_q--?pDgEH6~OFw;)bZ`ZyK*W4kK&h?C1O~*Y~!9#uTB8gXg{A}l$s-<+> zoy$s@qo@*bi@B8SFNyRE3BB!Nf7z?muIxpB;YaSLxMM`lbv4(DGT7j4NYpi*!ktdj z3;f*TNrx3=5Zylgc}j^89PRn(N>+nX>2mz~(!^3smw{zV&v+9fg^4kHeKpF!1IwK9 zKqw>I)rT((PjkgK8kZ8HG}T8!V2j9}!C(a|ONhyi%#SJ3g1WtnL`i#m3Z@k71w_Jf->JS0e zkOH8Tqt)=Y2%#{U<|D1Fm(fvw5cV=$WX3ZIIE>i{(x_(?6w&7l8fcDibZ@_s0By2n zHTQ23hCTely{aPP5q-`h*io$VvvFp1mWpb5u!Y)09A6}x zyK9NPn%d27KVxoS)IB^b1ojjCINWF{1AMEGGm(p7wOj;|8H%X9{WLNc^+T^b9(&?JwApD7^j3T z-{Az5GtUD>Z^Q<_*X0bYca_dZ$4#iMh0j=+<4;<`$0;=thNp-Uo#67QB`51L@4UoD zokW;Lt={E?bmI|0;H=z6fF$m+-xTh*`RUx%@FA81XW#`%UR}z67fvHnCM{pxHl!Br zV?06yAC`A`nQ9Ctm*Ss&st9R-adv7iF6&$x6Sdla@#1k8crm?vuT2J?P{+Y8{DIaN24yd#o7R#oE%pdP|Y- z;+VXOcJ*}U)5FR06R=Ze>I)uok?l3{zi2s1seOY*Q_|IC1rpEX(UXd$?;OoMYzqp4mk`-g}6 zfc@&0}A_Vj(|FYIsFMmypZOB(ty*^+KTi0JUpaV2()a zxkP9TIp-uR`+Yw4F2VeX!$Q?JqP!DV+_3$ViJOJ*T(?$JC-f8?z94>nsHKEQmaA+H z6#~CHF@f)DRF5oxTQ};aJVpewb?+%T=y6e-4ZEhyhKzCc2wvY9RgN7qVed} z#@C$uv{P{ba#FTG@D58TjORCrjP19F2dNpU>!f8Qx5Epl&ws>HThJR|?Ni#e&W^+A z<<)6z$Xn#k{>nacqrnQAHxN3Jr#_(-@VbmR{pF?*M>$(GrL9$x_+-LyFQJUW_cd61 z%kZG@QO6UIr_jdl*Cz|sX1SwM*ybT;6&d}8lTMEwjBxXn9z2lcaghw!7^S5TLU=feZPboz&Y;}fvZ%rk-$=a$m2aJDLOz}EhuH^hjMO?9W6N^EvI)fsUx_wiwv1A2_s7Oo<#r$OWNa=#S~i7-O7C3;wLMb&(`; zm)G8~k^`i}LcA7dnX{&$nC61_v6FH59epvWzZ7K zuTJy7Pim(&Rh9A`I2~HC#mpM#9_RM@@ll66+G2Z83yF~BUZ2q@;+AmtV1A|Z11B|i z*G1n>kMYUB^Fnb=f9@=}k(_NChRG$*0yg1++C*VaDsW_N{1!?j4!q}>gjR;xGx}7A zO6{~y$!xp%(_|%n+D_@W_6UJ@i8=oo!Y_aTZOSkjlNHdEWY?0oHRVt>S`6KB7Y#nMxw@R;qpf#6}i8q=grV2_d)trQSU(m?H5Px2_5 z8p89#dL`ZK?#y~8j2W{O%?Rv8+}_r5h57NfO+E6ey*(?k*~<{upD(S0`%c&>+48o_ zddravpqDw4J<#wGLrLpqVMgr9i#?$;;CA_SD9{a(S^c*gSfuIqDW6rAMdv=JRjCsf z+MhNPUXQJQ24weXsq0$6q-N4F#L|=fL>M^uLS&}!(@&tr`KeWur|VlXHMRC=snem` za(Q%ixM4x>-E@K+MXqml&iZs&(u10Yoh?jzOS|fc4cIITK7_(}Sd47DL;5Rd_6`+) z2vfz5owvSjXQW^H3DzAE$wcQAiP+KOX=nAPe(GeN_~Jbyb#MhsPi@1+Ht;UtmEDr< zSJdOEb0Yh$C)!>&nj<=FOAg!vMGb+caElQtJG^h*#ZiN(kS8@H`98m{uY*G3Hw!d5 zR%;wrwL27=gupEMWlc3k+Z7sozBU}#ns-P9AxQc8u0!K&ksW{s7Ocs}*XgM=kEGH= z*vq+Nes>ouXS18j1eH`(22Al2xEaK+-@V?pU} z!O_9TEmse9Cca}jz%**~Y|g#rd&+EV&H&qd z)wco~ib%X z2v9P4-z=o$b+zzFxcYCx{$h(8Y&ad|Wk&doy)z#5PtnzC;HwmbYAaXyzS!oo-S;F` z4;_^B>T*}}c^g{LhhKQy+?%RSPfK@p&QuM`{TwV)X^df#x!cyCx$J0@P4FXQN1pVyVt^e`C=IS1|+XgjDs=-r`enb%2Ff`REr3dGT# zRtPdYgXa*W;7qQ4?Gt&9$wFAqXUR0<%fl*nh$ivD4@!T&zJ%kFo}|}L6`V-_jL~=U zBfd81S!RgIEqtmW@Cr(9Kx)S$*wSqvfeJR|98Sbi`Ew0!u>*NQ7&!f|K~3p{imah& z$tpL!(T_Xoc^hID8$0guY~D5@NQgo=632N?KGK1Krlfrh_?#d#I72nGz((?Aq2e-_ z0_r<>7SiY7v%aEqRiBw_AZgR~mZ+CxRrf_L>7>m$?XwguDYI5KSbFQpVCqf+C$+H= z7*sO;?Q#G(2j0~nQQO;tG+z??uWN&2>*En zkG@hi$?(^WDDE0)G>U$ttl!mm&1+oeTn&^A}Ue#WizBdlzNw>UuC zrRKCt$B6L6kx(HNs$qsK|K;~eShKl!9+4@!=kZmnBIOEpB3eC1qGYtXnm7jL19-&C z+a=%A8|a%9qStZfUYRr*gssw7CM~53?3uxv$aaCO7eJxg0>gg_17-WrO8!0A@c$SE z`hO#WGkxf@|E3Lz$Vy6o6Q`0ivCy@*mD8~lr;#-b-{}B+% zO8*|b`LBS`KfeCcAY!0@_lZ7E=ud;_e>(QRM~A+b`45%oUCsR~G?ba)AEoj0TR9P^ z(a^uwhlYWT>D@%3VZ+e z6ZNbtEOY?I&ep~TmH_MboL2gPKb)h#8RU*u|FFmnO&kmWwgwLGSq=Uu($eJJFxRs( zx3c^XhPfy}93TOZ1V{m-0kQx&fIL6}pz=SP<)#2LfH}YdU$ z{SO`cANuycmq_=ga{exgf5_t>pFb4ze+cA%9^vEYA0_^!n16)re&qUxjQ*jlf8>AP z_s@F%x$Unyf9(0U8vG@Pzo-7a#vf<)@%d=6kL7<7&foKYoarCi|2ot6ydOvXtCc^N z{|qN)`H0y5>lgFS5MLI$zX|88%&Z?l+s|1LwZF}*8t|Jx8>JA3(=lQ|ZeOc7|2 zfr(WD0*$HFT-a_Pfl)ffIJD3PH+?lbm%jd90Um-Vap`Zg7_ zxyO@+a`zMWlPANR*_q9_IzLq}Eq>hhjuCZE0MOxkn6Hr^{De%r9Jr|!RD&b*76Zdj zS0^tq=pi|TppO<1Y{yR^b~?z8euxb;B&1FQ&;fp(Q|q8wIOLA3e2b2uv9Sxl_!+8~ z{}a!bJ2E6hGhv|Vmq3^WJZM{>cT<<}wI9O1LmOxc9Jaz|!56p+D_Q9KAv6#=m_3&l z$N~~9#L_3GG@4^V0xwEXPzOOT6<|eawvJc8CmxA$?u&|C^1c-O*K#(BXa1b0{&WybLKnNlTT#bg;K~G;4CwTm{t$(`*bh{tp ziKB$@e&Mx-goSD-FQT}+1f+{#6I?o4fbMX^da14&sq*uUwW~d%GzT_De(^>W1_gq0 z5O^&!00vj)N2GJjd~!c=rNhLz3=Cid*)o0sfa3tMEnq>`*FX><-qGDHwC7)ya|6GX zx)Q(|p1tlfT}#dJu=7SiRX>_w5}xj|$k|o-fLk~{A868a-hvvv zHa)?6E?te3&qRS}ens4#0*O_i(bjXII%^?!T=K{z9r2J|dh%|)1$De3Ilnn>y=r8? zIRwAe-#wg70MbrQX1(F>V9w`1eQNO3K?G9hIAh&=8v^6tJzjm2xLrqq>+qz1b|m;N zvhjkMgIju*yRo_TFbu`l;@99!!%Qd=1=j&>?8%eOfNC^6wz>8;HrE(6o4~* zklJPq2!ox0+vpsm>Ot7p*+*(>H|Kl?LIOrA_mn$BKs;+VXC^>~|M4ktg>|(1DgWl} z@okvl2|KKX2-5VyRmv`kS9tho_A!6k5pxGNaGmOLziz$$8R2O>#<$Z_8}W1m6_psv zI3+GQtb};@822aR!%S!B8a60Z$>iwp1x;Yx6R|&SXk6mDJm?R19QTXj$(JMeV+V~S zi|lsane;|3V7DlV-EZSdNdgTWGt@n8o8vDBF0k#WzR?@mR&15v7_%cD1wvG--TXi1kjE)G`H@7wTdJbiB zRYon{I;i%Y9eN?>_CuL*OmkEhPG&M4*z+2A>qskw{ax*J?&7M=JqUEK5pq|+Oh=V! zU}e5f53b~z?a9l+!((UG)4wl}A(KWu5sZ^_)te>Vtl~#Hglj!anUP5jaBoCKA37ZE zH^X)L=z3MQC(j`aPG`S+=cIKaH8Vx8WyRLQmh64sz*I`GqMd&quJgBG{F2TEbgD8K z@(ZY+|527#2C?m+1J08FYX3!pdIm3*75;_Rk>0WvwEE>{^lq))ijhudKpW&cYG~JEfzbu;S#e# zY@r)F5(s#JiX@GQw@H+#EfnoTP1CrBB2B-h9$fuCD!;*p2NOYm$YM3M<1bq)qSEwK zNXnWl*Ly>xh;IoTdBmivI1 zz^)!n=M&Md4BhyUia{qN$+Pmq;bi;hEIIA2d{c<9oHIFFyv(vO0)5P96azcGF$mOj zI8P}t|zd@1G&WL#2S4cT`YA#5U!xx2fz54v`ak zP6>lAW+>SUFTHK1fE|YoEX|{(>4sAVd1pv=^3yTNvqNzS@dz zN8G}t4C$3(dVahpI)y$e^FnKAVs=6>DB8;B5jq8ePt8NqUeDtSATNoqXMx-~)rpaT z%YI>am~0{_W2+Gs^8@XAhEtGJZgUe>8T^ZndIlRqz>K=RM*bRD!bRE#)$vO8D{(-$ zd3mMn7@3_4+Rvj3=9BK>`O@~f8qdFYp+XA#+b$u_C3vigLw zz)1EceEdD^;$pg1*rq(s!OZLu(CiT1&>@ld#@KIZ2#f5e(p^TVK&PlP?-%-M>AdoA zX*X;@ht||L%3e55-zMlH2{j3jT`!yBRHXjYqr=w9mIPhLtqK#kJ73o0oc;BT0<28P zZ(V4}%PpGBHTkTGo`a>y>O%TGQZh463*4T z(Ao#Z<~JhID}8{r}Gy2b-`sXsAg zo{uf)=$p^b8|Oz5LxF~8MP0};GYz`Q&6AJC;5rMsM!RsO3V|Z1@ln^t0P zQa#VaFJC_ir!FP>_xJLJ(oR}b#y)8%Y9X@8wC+pX@J%A=jThul5B^l)?m*URbpp+> zo-#tRE-_BAxR9UFQSwHMwk~Hp)1iytc~gkly-X_jF6Z3-q*w1rNaC=6PpyA%uU~Bb z%R>1XxM>OH#x0}!&}1vybdxON3vSEkjS#)?OoQ>Kn^Is6w_%b531>s$^;6V)GOWVo z05#jtppg;O5RLvl60w=@Slp~C!t8NJ$%Lqk_!*NDV6ixlLTDLtq-A)Mmoyll%un)cj|GBxI%I+fX$zmXcjaXP~hASqn#{ae$S zUQ?msmoi7EX;q=oLTTYMzQtD+*PNtFe!HQlg6hRaq0I58^%nkg7WX6 zSb3%epJ9O)1<3#-^26$YT~dan&mLEV{{~>!=WG>k(LcdzJ5l(YD*tPZF6s)o%rT z-AvT*`b$O6j&m);a@o3BN=w1|+X;Go-#e|e(l2D%+fqWcZy%pm10L_HR6joP=N7)rxti2da@ zV4=7y0jX>?58@HR_e^kwq=Hh#2_b;s@~(hiww@J<7Nl0X>94n_=%n7$ z>*rIFb)FUOK}X+-kAvs_3}$PvmNQRfCYFawtZKDNCW%6rYD?pf^a+bb$lmI4d=|yb zab*VKq>9rrB4WSR?+>pMLF4Wc=2d_XgXi9D=#iu}3 zU14C1)IFtJXE1G}5q8gVdm@j|jA*(@aDab)|Ex(4PC z|Ji`vzIg3eYwgb?nX~cZBh6jUPEe*-8!F>DL5eL| zBf1CP)`xohvHTPaN*R`*%wP+G0%B7W-vAGe)r9}u)0JG>&{oVueS9wQ8)!0lV7+-=hzK&&rOFi^P8%-0eBJzhr zoYz01nY<3Y19yhEUF5i;F!qHPT+S2Stj6kh$kC(f3HaL)n*WfZ>`;t&d|%i^g50R+ zsD3*_$1zz0U&?Y_(_lYt+qFyjND9}Q(es_=^`VsveCKA5i$mS%lszLYIlV61ttk<6w*oTy zNJ+V6+zqp$are45^a<=55>LP>{vKZ?aPI*}#8MbgcD>8!EX4LCIatT3G!0Tqt{ zvS$L$uu81K@w81be>Jt33J^|n_8$hGF=R>(00+9t5qeKrI-W4E5b(_R_l(Io(XH{!DtoD%7HMGz_^(?t!B_-Ym-}$u7)@9pgi8qO@ zuS)XaC`#(}pX=8!yk&6ZPKpq9T-}rXddyx64|0CzALGF6yg3vg2x$=g-Qj|B-%-A3 z98*C_p-l6wT-o)nrQm3S4l_Cr;?vMmrW3&6wHcyW~%QK$v_!!eqbZ|24TK}FrTo-I~Jj~w; z;V)4=`q=H=P{z=-@>{Jmr7&?dCI-L9)%I}1xrioVAoqu*tOCVL%d{G`?8?~SSttE3 zT>oj2D2pHEY=%^TD^Rjm8d&-hwmp|XthL=zN^wgOPs^~33H@oR`Fdi47MuL-9S{C~ z{@MOIc+YF`S@6TU#TXyngW{h^$1|ID`d)r_J{~0S^(h&*ENw9IIm@(rzjrdkN#d3u zHU4yZ4#Xd(ybUvw3Pu-geH2zF{0U3yNGGuk%+*Y3!A1?ER!-x4*-C$phWmu1 z*&vYs%7{LZ9NbQ9*$P!Yv$Q)=Nz7|>zTtXu*MO=}Ppb`V%1{}~mXtl}a1MV{k8t4) z(aG6J0K(m}$eNN+AmmNbT>mS+`tEG~V^SmN+9fiO`oikY8p8zExObI5$lHEn<&Vqr zDnL`_OAu`#HmhkuLAG?kcq$ZjXqL(AJiS2A)*%-s@k<=#S>2`2PUWj7Ugg1=t4bay zSqg+gGUbE;lBu@NFZLKiQf{2nC+csa9vMgD^2a-ToBRNl6;u7GQy4tX#Yf=}X-Z@g zZ+PeIpqWvuMHx2UgJ*mm+tNQ9E>dqb?8&8i$hR6}^KGpDwZTnFu>mXmkwA(yP{2W8{vTWg=lL!OOfQLkUT12VXaUVH~J_ze6Vz zQtLZ;BP%62hRBpQqHkCl!wj-dFuW{)mE1#B8w!3Mp&iTo2>m(q7)KC$TGaj?h^T<$ zKm-&($QudonKO=LG{P1OCoDlY9%h^uAG`AEz+PiKmtfl~^}2SULX6h-oR}uFZxl`h ztO`SeDd|OMy+ghA;qY6-)!qB7xq1!e(Tz#U+|EpNQ*nfODW&4-dP2s6G17H&&gpC@ zCunT5V6rg#fQY^8yxCv!XZr>!+n}}P2!qmKb%c@Ycp*z@3XOcYoBK60uKs80NAL8M z-MXAo?V2W{{VvCP^B0d(mtGVeSdUI$01)aEI+f>kW7;Bz0v2<~PZHXKVj>qLpDa*Q zvXtYfU0AeR@`7ULmOMU&2Kg#Wvpfz0pQWIigtrBf2f!}Wsk}I(NwQT`97`;Ic@;|o zdH`~k1 z%7W%&D@wibBYntO4Z14_Mh*=W@x`5B7Kp8`3R~y-=g;ojeCujgu zmFEe3Ei8MW-7+`xTe!?hM2wl=84aRZ;{1gDN!2#u92dKAt?A?3`j<#F$y|WOkRY#U zg;i<1&^A^n(5NNxV@@EKndDc6FO{i%qVA!o_3Uwd%e=0IS3v0PuB>;T1^fB)!{8wd z54C62ufqlyw^%BHj8>IPD{XX$fsEsjxYl}}4)`ddxhoA|B7)cyc0>CF2n{=-VI!BB zn0acrwlT5l=;AXs?Oz3@p>eN_i({uUYmW0blV`S1nhv^cxr0<*^}o=RgPcc)G@mB* ziXCCpGK~;D*I=^xmmOhhFQ7_lSaTjUh)}KXdkpQ3Por&cj;OKbS?CVnW*6PDTdC}O z2EzCyx2xH+q#MQY(Ezv_DOmST8suvn5SQp&3S1trg1us^GDsvd;Oo7k+}Wai=@91o z;WWoX;(CgQSQzdMY}hJouP`LR;JXgbTWXoFDp6}6zigFii~{SD>DEdPDy6Il39q2f zx}131Y5J=hpnfc_i8HKxU>Y=-{FX@%Jm2m|wR$OULeWmQfmFaRuA-|$# zAvcS(Cj|rT4!FaVv2|i9U)c}&U8*tnMls@a=Qnr8v?%Yr@U5WPmniGJQG>dcT-qq)abbb^<%Fp{IDP41GPD)n zxbwuKsD=MP%5M4-LnT`iD`!v&JfE5nvvFw2&$5H;O|rPAE|t!l4j6U9suGKdCSRG( z_IT034+D#5rxKoxbDTL(d?UjBhgW%8A7z!^;0i3W(KVe|X+O6NQ;JVRXm(Q1Oel?mCYk1OH>>2P;;%rgphi5hz^KWF^;8{W~_I(iQ ztVFh3e3A?_IGXwHsJpATy!|_YwkRX7Su?l81o}~Ac+*)W`A6nyAG{DxcV-1(ncD0D zsjXFgF4tq6>BuVgJ)MX<1vBE+4DFr=eOUOM(YCEn^S)QzC^uHJM7MiX^R&TW(|?Yv zLlV%mwMA9rhUZBHObTkuawI)Nt)ir`w=`KZk61dUi6=*0zDCJf$BK(EZhsvb z_hT5GVvNo>dob9cfPVQowq?BXvkJ(RZs?x(8_#-pDy{}G?TzcJ$dP7$fqhuw^;Do+ z@P4%AO7;9UD}{b)nBE(A3jQ`cZ?oeEn6a#gMS(WO2iXB8mk;wK;wvAaiv;BM{S|qH?^c zr5b7SrO^6PxZYpYl&8H~gK<3sSPWA({D*bGR-Thaj&)O0nMH~n-_$&#ifX`c?m6f8 zUjv4xiR}yT*;%5VANWYe%rc!cRniKI?ZXT6GYmsS`E1Cnm#UbB=5wmb+YYoQhb>Nu zyJ|t60VI9Bh%!y;kUls_54s%4A!~=8Ijh;j4P3b^pIHJO(c$&Itp!J2mUZsX<#L7l zYD?cUQq}mlXlyq>{0FS~_oa$q%Rv~VRHKPR&)Xz#MoKz`7vxA?p95h`S1T!+cWVDk zcuTiir!-e7CjA}56B#11B8{^w>rRO&LS7achZz?-?^U3LXk@;<$DlS=Qqqc2lCwoYbhO~icpPTVW?-BEsV zh*sN_1?>P&gPiV!--4^9!Jyw;@*=q$2N|7X#?C}^k)uCqS-8fjhg79wI`CUJgGLoY z(veBER57>*7R$0=-}FyTg5%J0cN_(2*biTARW02}&l{F4$rU|;#J0Dad1%|V|Q7xr(H!>lqt>@-R8JV@PNY|{SR&Sd6`6<}}!mK5xvsVWT zwrqfUZ&w_#jY_C5MeQ>KSzrrSkTAuCU#&4S3^ZYsF*gHZ3Hv_njU5uTQ9_*A+7V2L zhLYQj1u>u!To#q}KeK6wixqwJT!)*Ie7weO1dVF9L>|;3(ICdnHhk&@j|(sNrYKOW zSm_QV=-uXNar<6T7Id6B2B}qMTBD_?+-SH{P~SEH9r%mke$z6aKjE!kdv&I@@$XYV z$FZ5^7vNfD66K!dWfG&mL?S~7gljbw8~>JWKj@CGHtS1q`VyZ8oTx)Pi4T=3^ZYgL%6tk4@#{*9Y43e#Wi|<8&-BwSsX{HCX8csK_q6m~9yN9#%^=>&k^sRph4GbUTj_=7;oyZ-3c%>s zRoX3Y4zcz`G0Xs_%ikXsHtOT;chnm;zQcq|y63vISgI$Lmcyg1;5 zcvZpC>{!%4J8S5b->B1?ymo|#A3@0LBC!TBzMpyipNLTmR{?^|(xZ@f;XX$Pu zW{;#2C!*43(>FU83xy(;p)IX)>B{-147gToSkMwFD&dIFnoBq5XRa1HV^paFZ4e%J z(+Dlbx-6BHi=gWobrt9QzWqbE^}0{BlgvY^N`oeLZSNGh11}en=2NWxr!x6yu9l?X)h4bQv9;G zT}vlfl$}v}z#_X=fX!hF&doBM3^p`ABsM|@IS~a@FD)|ngB#6$foVrxjb5)XP?jWm z5Blw>wOa>9R!FcvA;|Spgm`OWa~PlDQKVm_6$a#m|5I4FXh13Mx6HZ&9xLS#1k(Of zqbsh9aYy7x4LjQ;Ouv;bRNHc(U=m()-uV6Yl=jvU1Q03G9Q(FKV|856$)C-iLGd|* zrxQTfIw3StcX7$6S5@gAJlk9kVhvh{Zl5W98(;7@U!XuExUj#8@_zES;9PwHudYf^ z{U2_M^*=M*{{IzdF#i+v|37)l-zejM;`5ll;l}?8rzGWsqy+yRPW{uL@h{%=4|w{| z;N|aVEC?C$@-O8`|ba}?!U0mztGSBoeceh zg8sjdp?{hz{>6~~XN&)XhW<77ujPMU@qb9tKYWP&yL;lF(SNO>|Bp_Je;)hK`~7F^ zpZot!g1!R{|1Ttnf%U(0{usZH4-4aeC;fe!pns43V_;(b7Yh15v;eDb%l2IzWAz<- zC~WfG6l3!Jxr26e`p!YLhIU)K^e|D@)@h=_-Ov%-{Tb9QWETML3QevJ4S$6Md4%1A{ybFvX8)w?nAQ4}?s=uaGR4k}LU~5Lcl5I;7yjoH z0-B3zE)YM4mD$yF(11$V123^VfGF`HM^@3SzQ83oQd`&jF9^=6 zqNAJiV_Pvt274D*VGjs_YTUF|eO1B4IoUlp18FMpfjnebXuwHHk9zwUA%IC0xU`KEdKAOz$yB)r-Yz33OvE6H6Gg<=p(Lb!LqR~im zn}3x@fR*z=_6^-M$pbtcB_P_nA+=+_=A@x7U>Q9v#}Y2Lo$G5|?V6uIV`{)wwmxiW z(%L!e0BeC++5!%WUr8Tmf}d&=NT9%WARK-l{6B$4pn&e^>kZ$_3xbP@PHget^$d_b z9r0|%AjJHF!YW}#Agq8r+VMTxQ(OFj5X{tKW1hc$emr9^a&h%wTY&?o22gJ|?do0F z8pIB6A4`%VnAJe=!;e6N)`9r>dVg^+x~V4b*1mT!_`;)k+`jpmRsYi64=k^| z+*Z!}YRC3t+dGB@c+E}`~r!=9vDEgBDJvvyvwEa z(Bk#r;ya?!4@{h0yS#>s9r<#F;G;sI-{_HH^z=Mr&K7Sh70Q+d+LmmJ#3h8D#(j&t* zRYBRbmm`tco2}v;UmVVMxI2>^3w|2HbWTFg=S!R4XZ=23XVFtkP8=&q5)Z$qb5K)S5BuCW)aF)$_yjnS|SN(7UiMm#0^0`d&o{{yAu@ROJa!g!i|%*M%F zn0UBmQ3&VeW8})|`6-K+Ft&qkoKEbmg>Seg<_p2?O<`$CO$Ernv_%No9OqYZ0O9s3 zy|Wxyb;O*VSA^15v^Dp4+@Jr@B^xqjAZ#fI8_DeJ6x9sF(&(+e%9_QkJj+GuG|e<% zr)6Rz2R_sywRx>PM%T)y?sia6{Dkh+Flg_?86$(-z1_Y}rd{8#x z-kdb2Xt7kcxJfi-IOj5l@vTVvov@p|5RmV(8oP3C+Cn$5dX8uHB1`;js# z+3$K+$s=fLRw4Pv3;fe(WMkG;hh<#OFsjm!e*heF})>I zG0&aQ%p+fy1oI0BD;d|*%5*e-{tXN!J&sRmG|-%dq6pC=DGttjb%H;;tC=?)C4-1g{E4`h$Qvu(CDb5mJ+dYJpV2x}4sw z8!rMBb)CG1j%0g+kesy9eM8A6<-IgH@tiU3aaLSfBH00plvhlR0CBqL;wmBxf%R1M zFKACj@2Mx4Zq=ppB~5%*3rEo6A8!)iCr3Jup$`gUAb@aMcsA$={P!eQb!!j}WKkIn z1uU(0x-RD3=Ra$NV^&Y~b6t8F24ySCW~dJG&?I|4Av&nX1kt~u@{b@%B}QuMX`xE% zA!B%Ad^|Q04m6%-N8OImrt%r39Iqap@Z+WN=Y(;4xI zBkC~%Zk@f<>Z+)W?)}vE=o-h zz#K2-lA{f>4d50kqk7nX3S?tNO&lgJz2B3BO_Y7$KJ z3W6|~(??hK?#bXQvUa%=rdp|`Kn9_9|KV+C$V-{L3n9O{XKAHhkM~B9oZsGHXSc_aO8;YSTU|9&isscH~=h+dmpRA>b8NnurwGVscst`%c7iNfW8z znDmtSect56vl>R(iFkyXxd|V#JUEL0TV!Y?Xa}3SMb{F2_)~q?ACP0t#vHYv0Q$UX zIj>E@r3*qg(E>Urrt2GDC9|RJWe#|<@p1cX&A-$?(K=oE=<*;O<5oZJ%uuVHZAdem zkIsDzM3g<`inRu(_kNQQw`ynxlB_>#aqNT!{lH1TC9<{(U?Dx@9j#TIcfvgF6|AD- zLuBf0FQ@?Cf|J&kEU$yy)7E6+5<0OKvBWkU(Ow9-pJid})sr2$F85u|OfE;fTT>@B z2#;BV4kx{tCx~1+Z)kWs`7NKTxCSG}P?m7}`7pLm<`}X?4tf{!9oyE%(y<-BRM&~} z+zV!^x^q=n*2EsU6~ys}jSr zP@WSXw8MRrCLQKg01nHZROhCVnfKeS@)}-awMICK2{!#&4l?6Ty3aj7~Cw zmt{Ho`V@FNjMpe764S+#$Aa%ohOoDaBGyDN;DXA@6|LWJ<7GN=3F!5ljG3h3LE3Mb z^Aut=6E9-I+wOM_Qr12`I{;v|94@9aPS79)eHpAEd33UHai3J&1TeJ!N`Erb7@8ze zyC;yzH5P=7G#}1ugDk3|MT}5%oHZu-MSPJaInLsYuzjDJH*M_m`w?f?XV}rpEDBH8iu{x*j$YM9afGN40y5`Rc-=%NY`>c%|4 zndbNIt=Zw|+ev)$Bae7(fZz6y&UhYx21y$Y=8j^=Oz0ea%(~|gOMuZl0@>l5+ON42 zaSl)@Ql)!^7G|%dp3zWm`a(^}4cwe&pCk6$f~nKlL!E2TF&Pv zaaSR?;ryPZDs7j*=%RqwfL79}LdUi#B7B9Zni*??J@Od|uS#Z2>U3_U&rF}Ao*7XZ#p-!dZi%D;b38s)Y~iz_Z*s%CmNM6-x*sRt(%N#{9Z5-0 zcBuefc$Hu`oo2rM!AT%KCkwmate2qBG6xxrWqi}pW)ZmS||HZX^LY%rHQiC2H3vbb+2H^Acy=rHMQ*{L_rR>Gg)KJ7 z4i+3HTX!4Gcw^Pw%$pdG|E}X0P4>Jm9v?1JXClEDpv4x;j+|FCWgzfdFsOFLZ;{Bc zDiTBI#OPPn0|GVrY`cT9K@wHq-Vk1IIl==GmPUgcs&Bk}NvUTagc!9{(lZ@z=~it0 zs!f`0v4DRB3YZHp@Uc!{%*b}lkz!4|6ehBA#()IK!N>A%8V^rnTq$31=tJKkQMONE zEjbi(OLxqtj-!;f(y|nn>PVrFHo_!^^AQJ=;e$qgDAFo!Lgw7e+`BG`#Xv2w{PeZf zI#W-I4l!XGEqq7(B=S09)!EeWEvsHG%ax!kvk!&SHG`k(8~eAGN5Y~BaTQa?Ke;-% zA@!6)F6NJ8M>_@4xmNN{i*rr{v}Wu#gAqZP+ku;59@=Md4-ie@`^9#%L>eTXTX11P~cP$vv8f={2sVWO01*zUsE$-1hH$WOOr zJRASP8sX0e=V{hu%FVOYXk@wa0O-+1`(`TgFfX6nitF+DY*b24Btm8vL=I##?O%NT zC>1c9VB#qb$d!f`jwZiyV3&}4Zwwp#>y2i}W3=t;FAokuzj6td$xl0Vcxc!e3G zt?j5z)QF|1kQN$!O8q-;D4`6HCulSa^1JSp-9Tluk)C>tg|8u4e=vYVVr%v~`zsx< zNwf|W7>>CL5(%2MxsLgy712TN+9{0JMzm%hQ;7U2aKhorAE`FhY9ZZjm2{a^Vh;@~ z)m=CkAEM`4X9-ds_j;!V!nGPEcj=g1P!k{C@aJ#|L1-`sq2;Csk_A}wT8jxcA#moz z6ipz0Y=l`hJ1=I|^~GcCo=jah*!$l;i-3vPlhHbG0e*JfsULYg-n~E>3M|0PP$>05 z|C#lZJV>V!bwqYjSJ$o$oi9<#d!lJT}5B`q@jC|o_O2t7?oz|fWd)H9xWeX_2D z++8lXf&q{8(OFLPql#-s;IxMe=J~8m6E2b`TmSX_#g&6)tQv!JrpKnpg_pFhNg1rb z1f}x1K{tG5S#kmqlK%^gxDqkoN{$s@<<`^=sH=tzwqpWQ^vsHPEKD%tXFt#sm;;1& z49;o+t<&Wi`lR+MJ&(@ymV8`J(M*`NI0HKtF*Y2RCAqwk(uRzGdt)=EWnDJ{>%JN! zd0Truu9wd0rH441OetL>!&Ui1_u9nkFt}>^1;NhSByp!_MMVqgR&{Z$Dr&A-pDy(; zG#YC7Yng|t(5JZQWBi((Y9%9VH|G$0(C}8Z&qzWeD?mg#15S;NTS>rVYg00oc^wf) z2wG6AtiHcznwkb>QN2uQNOG@17b6&fO3~dSVe4=S)$oPf=|#cDxycY7sHu*^x>Wu1 z(iiiQ_>e~L(~i+}zIYyaiz54>M=W<9HejNH5v_;j zW0YE|DBQnR3x*g8K*s-MpxB(5=iqqd9()8U&6t2tCbmz!{oWZkH7`Dg7kK;4S)x^g zM8Jn_AG(a#gdj>8;(_f-xiIfj#F9TeL2%%{9wh2+YKE{vjI}j>E~*?yZ(W9J$%sGH zs);EzinsV3u4t4YF=u|kk}JU!^ttaB?el}A(_e|G$9iwT&RT@TkOMb2qs)=Ufy!xb zWuD}s)LdLtcteji;>kma6Cp3iWORStJ}-eSQS#tCZa+3S9TUDgMBcF6P{?&U+eB&S z*NH1PB|(_9AQqT$IY9Sm zzqt6!r1_=)VMZcR6zuSO?L55&U9Y%o&vJiyAAnJ{6{O zPEt^bis(`n6?!=4jF~=USJt5Bsyg{2J-jQ}UCfri7u-it;$?;vMR^Eb`e@`KA!b%v zxdstcI8?FbWo&YvMX8*99L-E^6D0p*R%|)GsE51Qi93qUvA6t(MI67R>}z9UY@f48 zJZ0P#AGoyCVZy$>~yLVPHL+2T5<6BCCv81@2h$`8jIr*t|L-8 z4#eG} zK=ID>*<#Jd!9HmkBvyx!j3;|@TqJO_Xc`PcuJ;tK_AwPJth1R$&(+(FMTX;2>sP$BoiN#N z&f)z2v6sW=>qHl3lV9O)7lFRU%{(T7DHe0@2Lo9eBx5B^!A8u9cn5}^h*qJ6AB8AO z_=CG+WY-%T+gOk2vHzi?U4ssbsgSRkDc!fbVSnEJk@>w6+Ha}}4mEh(l<05$iHb7o zXQMNQJ=RLhNRY?la704p!dVtw9~waV90K?k#Gv&L?-0E{qK?{#I~Wyt5f3f7LbZ=> zO3$<>YL_BCy<2uLc5vt^YoIL8v*Z;yNbOyTN%B?rWu=~JJB_5!wik+#Sn!NlIXnq> z;7imOMxoJngBl|s)&?kSG{qbXD6CpASti88cA{D0*#O)@Q@DX{>jaRY9ML<~%ziaIo}9!%NNgb))PP@ybC z$Sxb_NrtX8D+R+r%RaHS!ysr_y)9n`UtTw1{02ULd5K6SnQFU?oL`1%>y5M~O#qlGKCO zdw-!czOj6rV9(L!V_p!}Fdvh??0j^EqloNhmwS6dKZgIEv6x=z!I@Y;L1Hp;J2JX_ zakkm&7Jx_i&uS!_;VQbUV_r-St$e}4z7CxPh z*GdQD76~nt>5-y!pA3c`oeYPzBWw7;wsqn1r4uqnDLduA>NsLGR*E&oKk@*CZA6^L zf4@0Iib~n92$*;Y*7Vw#ga*q9x)o7%-=rb&}Srt{O+qKpM#oRs zYCrn{AJ_45?J%{xH1y}z<)UQKgDSe-1o_$kLMynks6$6)m2;ZP5b4MOd&%_q%?-4n z=V1VRdJ_WoqWSM=0cHQG>Kj1}5@i7eyauj>qQv)9hZoV=@9^?|8N4&i;CT$(4~_bM z$B;p5H&hLROvigTU?HxAN1XP14)L2-%<>VBbf?vauPuia`k{EFqBOM`4+n4w-9pp+Q7gH>nv2rx(2_qzo~w4qTytl=0UR*Rc9(U;CTA?95P+qm0nn?U-kZ8It0XbA0;u5) zZUDEjh#pn@iKBjd4n9*SaXO}*x(w8^TS7qdewn3hzj42Elu^R%=mQ4Stjp%dd2WCb zKx#)lyCz#x3G*$pNoo<2AANH{svs7~guCujX;wEo5LV{zpJv0f1x0%95l`*b42QjW zC>tZD1CxwLlDZakcJAxf51@$lbc@KV)XvW;uwNxN0Z^QAno}*qv1hS^?2u#lc3G^F zaZ_QW(|uOeQjcTr^KN6Z49R@=Tl#b#vc6tMNt9uP`II^Mo)e*#e-{A!fZ+?)jt_=# zw$mmnW7T=1Oc=f=m~`|?0ZsOazSe7#)(*r0h#qJpZ?t@}jy{=#=$fb1r| z4Rd0kXVzwMp<>FNQ_4ulLj&^`8z4AN6;|L4Q-0sY)Zctiu)N2aV)h4S&VS#q*(J2) z7P>P_;ZSA^!jpeix65ae!vKWYIoPNre(VrLd|=b^tdzhR{R;h9(UU_@3S56+ zX7Y=H0*ss*WLPf%ZcnU2am9|@<*ke&!-CA7HD6O^)ZmB9n%XE-V#s}3D(^*|l4&Lg zAYXJec1e?#ge9S^(t!%sYH$hTLPa6??&D?zqx>?x|4_9WBIdnKZvq39Y1zh%l;AX| zD)SO0RgY;R((D9q)8yr)%P_t0hT1lVD^axvg7-b&!l=^eUFF`Te5a7Ga0q*A<-^@I5334y@0dX#X+VUzwZRAAsOyXcx zK?^D2Z(#4oGl&lMbfdDgO71m=6 zGB+rYPm*x$ejVa%`>E=jE{LGVRK`?6=rc-eR2I4AOst<5dYa*36vp#4c$_H|SPu+} z4Y(pqwHa(x)VHQPoN6!7GCHAXZVs8+xzXd-QKDlfqOE3g;etwYksvkfa`zpUFh9<0 zBS#Leg5E}AYjKo0fj&RoMSbyYeD`o6Hgr}Gp9dLkMa&kh&5PHSsvW2GGz%iXGG|rC z=HWO@kFBM$o5M3xzQYwr$KwRLXV8DEac$|C=2W_HO-6=VpySjL=N0gd1hlVk0=tBS zo6F;$feVnBqdH>EoxO&8fxt7PfP;{+Z9%HyW7E(~oNZ2MJY7K&o*QFUa1j8!>&7I} z_K?+Drp2uYp10; zb85~l&z&z*0VPeLjWS_^LUk>%v{O~lXl<_j18#cYq0CCuwv`a!hD(3B6@A0qABl5} zC?EJYpR-1N<(RvvlOVNQdbktO4aIBc+Ig{7wmYTZBCrrO3Y#*J=O-gE(j_X#xgX{8 zW(Qh-J}JC6#2EL8gI_Z%TmD1kN;?le&oC(+_SxT=yLSy?T0^`Sv zMA#pf`v!v;FeQ+R!yk+Mt>_n!X+~>fzRQrWM;A^;|aMJ(^S6ewv{+ zp*A%P7n=LGH0*%NL?E2s#N6RxQ=k(_bLG0|;IE^d@ihI&;T9YYot6CMU%eHnW1#9EJj9;yd+&%Eku!xe%G9MQ zXBMGBo%xOkrGMJjY+O9Sf@v(aAoct_AfU|B2a2v6;z%NubNLZ9ucY890F)bX2cn}F zDpAT+>gE$<@N%Gm-;02uh*Y<#Mozf3m;Xit;>tsT!U{@^s-k=+CTDxaT&hToIDdS` z`d*AGAN4w~(A};`hhW{hOA)b}wAR3oYF^!-0R~Ka z@WMn25Tbu|bOn(Ep%&%o<0X!9NrnZvmB zlAj_#br(i1Ygzb(5|~jL6SA|!>|5O-g%x{t(<9{H7)g-~D)bk)+ny}~<_7DFxn-N} zs5VS<hw*Smc?l4+#I#@j4*#y4s@gA6_vB#!DR8V~hP-1C1P2 zieLp^$@9jBpg+TyZ?160qQIp0A72?YJI#FU^8uOM{!`9Rxh0j*C>!5$h-b4d9{}`xBe?Jy;HAQud7U7Yh*D|3;-Rhb zXbnzJ#r(2IA{%T2fKM);Hj7H9Pl#mXUaKY?4l5m;wBmqs&VG91Fok{(_&z;enr5wr zG6~HiOsxwiM+OlXc-&Zjmu2RN@cyFN5RWH+N?ROYod4{2sbY~KV>3&SdswBrjlQBi zaoPnqWv}h?<8S)>#*V9_mX@1S_A&S1I^S`qJh6|m4#~^3%2=FHrzRpg$?7B?f%OK_ z+2i*~BD@NOr+!j4UdL$u0|((RW90|*UZ4G3*Vyw5SdHo`8DDoY{}{<)1vGr7K0gZT zDaGV6lX6ah|uNW%z`~xXX9B~B-mBm%k&uQGZ|#R_3z|eE2zc8 z@k*UiRRUcoipUyUvhhY^lzXa|iIU2=cPfvT5S@6RN%6Fdu5*SoKx8!!D%sF_g*ppDls@bdh*`W?QB} zUxvvzi28^A%;fObA)T^oyexA&S%db*r!;4Y_s-VkAKS1&daQr6D?y0d4I1Y;Jky21 zr*dtqUs88ZJZK@zv_*N7R2R%4;SfDHq#Rl5 znGZmzKJs2Gtmzx6dlW9XOif7aMLG2x_Eht_;&TT@ZRL9K-UF9>V01EBJ7zaK0wJ0I z%1z}Me?IF*A3Y*R5$~jHA6J`aaL`P5pS;VEL}Kb zFM%@#kqAe>mZl4#d=UzqxAJihdbra3L5|5o)V=YfO_59|P{K^#YQ_n_5sDIH3>1&5 z>7}UjayabwSGK0&x&X)KOMXuOPyYDIOErAed}*#z8(i04^tr3a#v1Ce9L=qIhYWC4 zsmEcZ0&@V~NYbsx>2e13?ErYQ%JsgUyC>*R6VKE{n?Dw#=_IUAnNvgFa-}iThl2>G zMI7T{rQUpw2-?aV;KY8iAx;`A7ob{?Nqq}#a z?Nq&pl;ARL$t&kcW1T3@{PS>eE_0#b%={Kl@x*fymeRiK_?rgBjR4*hz$!*V@B#O{&8TWZ=8sZ*s4t#r~fDF zZv-gr?l&8D;OCQOPEF{V*6gNm|DDEbF-lRlVhzMk__M!Z7{B^a^ZA&LNhHqE)ynQC zvc=X9tw9KYO7PGJ@Q_DmJeC&~rE$<646NtQZ65O1kI}lRsq+o46HhfYUePF;L^BHH z&x^XHHyZ~Eko&bZ1>4c=I`Qr(RDVkBD$$?oHbr4eos{Y&>U>VliIC?_R!^vz3{=a} z&sc2}nG;`s7r=qaoib^MFaSqDJPEHR%+sbg_@E+(C zy#^ax*e-;SB97jG7UZhdRpHWJ9q${?8iS$dRjRg9>MSZ3LiN=q_E zdR-@HiJ{9+n>=Ev(tz-sJyuL&*Gzy~5TqU zRdJc@Qnb5GfDgucT46!%y%e+QuH4i;2k=y=S_$jfl^qXGz9c8-w3va536=T-w60;1Q4>kmun6|nLrBz}t&8w~s z$F#o`kypI%GT{i3U6~z`Uo?}o>ZSwGkfBO;L+~sM&ugg|^E|KWGumZ;6lYKw&7L{X z6wpQzMEIl!iv^c3#73q>uOOjxod6JTNZ1mL*bI9?3@}hh*ER5OI_7?q>;tqT%_I75 zWS+{kUSv5n4UX9oz!fQF_iyX}+_s+S4GK7k|FoBBbu(D$Oj3xC(+n&{e)He}ptxq7 z6Bhi1N)hpw*yiXif#j(^l{B5b$C$b~BDAu=j?qel>$tuyujAw~pIA^c2u_Imo0(km ztij2jI6`z=%uLzIX5=Z}Z5kc53=MQf!p~Oj5y&xcW`^_PBKM+FO`+QhrQ{c#ZF$-8 z@z=t{6DR4+1(|xmQBTxMd=3GE%fhCY@aK&28s&2zuxjX)x1_jiPxI?#4N!}>dPJ|~ z|HIom2U!lbd%MkBG5 zGvZ%7G9rEj@r`=icq2x(5&>Q2+9C0%VshSL9GB9q1x>~Qy(i#(d^*MxBTYEdIo$5D z{G!g2_f_LM(ItG(v*WLYiGFa4I7w{Aav+5a;E*IFkPsU1WTE%K#v=YTnKYDVh@q6apLa64A&NiJi3882xL zs2b@kL8{3JYwXtx5hrQY?`(lTR_6Liw@Vk|r}ji`;`=9tF*F<==D3!zFKWEd9MPqG z7!+KPqrk;isLXwAcIKV;cXV{x3K7U*ji5cJ0o1t5h+o1@Klw}-WiG^aA6%XdzO)s) z&H#vL@0W8_>A*DEpR%PIMcD8p1BmqrQ7F~9RX*J>3KWsAl0rn+gB6u@(Yq}$^AI;= zP9%X6j{ea57599N!`^<8K70H1OrRL-LD|+Y*f#M!I{j$n#me|{OUHci2D}sD?EEh& z{O@@4zekz>*(&}2tG$%*yZQOQhwz!c>;FGO_=;k(ioaF+M4H(FC`M?0E-x=l@8{yV>^p{=8?#ecG#ihd&k z68`}bkoz~+sS=GcjmkGFpl7G6Z*J)D59{i`tpC%y>S$%~eLVWsc7`;%GUwL;8oAj!otwuKavOk$lm|Q>*AX{_Pn{r~R!mq_@l5&g>n{F7Z^`nJ{nW7PMSzn_2SzjVO=oB8k9zg7R% z_~$SC2l4RVNK^kZ5&zud@2J1^|1$;gSD^ZL)W2~P|FZse~FHP^&6D=zZqD+Pu{no`S0{U z(-sx&ioXpc8i>Q%+v8i@cP}rccQ4aekuLvE-%F%RE#6(2>Zw-Gx5t)E?T=T&;gwp0 zs@A25kd2pEBqH%LsJ z7gi_0Ob&Huj6fLo0Zr0Ufd(cd0V*m0P^_%1SRs5${PTbM2gmwwcwe4+CnuJAXQw7`o>BL{*yR={pa2>efm761(*OmL6B`PVi2xVk zAWi|q7~C0*3Dte#%4;hV!Fi{~1}3%!BYx;y?m*RiM1%GW^lmMjW-n==ed&R>14IB& zM;VbQdCyO9N={&X+0FuEO=etFXlQ(L16ODOpiBur_H;7g1i?ug)eHe^z^=47nJ&kp7Bt9 zoV`KbEkiQa)j0zKOmg~sEzmOqr>M2Eu3@--R(_yP%&wklV^mQqJ)(RK`rzzX80j8Z zn3*5#-J%}RJo3!H{ME2ZJPChOCRtxb9PgM9JZvg}niCe2=({Q^UrUUDpOu!nhOoo; z(@L>TEY1Kmv|quS3yU{Ao>oRvUoauB*<1p5$pNvY{+*SiJqr_9QDVJ-&&@xDpz>%LY{3}~~)o2qD6JNRwcCj_LvF64R($>(`zjN7mzu45* zzJ217e?ku2YMZ+f=F}(t+

`ZD^QfB$-ZUlzaW?hRQ_XHEI6SN`oQ{8;4Oy!^%Z zzRzsy==52B+D-atJ^$7E>71XQ>Y9?;Q(4KHa{WWS*w_%@toBa0XrK%BzSbu?fHjG! z6dCn(nf?B?F!;(&8NF*ckd}G++QZ3(I-A1_YitH5@R0)3a+d)7ltV3BzXs3jb9^iEt9}d*JHZF7 zn0ZA1xv=REzH%D&?i@*WPqzXL3|wsV%TC{Oo`K@=NdLkeM}OXeh+F5eLDU7gYNTqb zBL9xlk#PD$juva=aZPIdc_oL8w8t$U6k0w}a=`e8PBOqfZEWJfNw5}Um3ecGg)&BV z1g(fOdoY9J2@NkePVFdp)uNpM2N0fkc}B;S%iGcl!Q!3i^4owfwOZS0_}gj%sxsjwPSF)KIL-3MWf+ z5hXqH<)zhy269r2ID6PXR#uyART&R1JA8f_-MzT=iEoI7B?LW9{Y0j17ei%pp*&ncswf=&69n=pljVY0;CDzyd zVN8K0>vx|smD3<}$^RuRf0V$`{lldV7HR_Ro!u9>%2*{zZnfo$nRO{o+q;4q8-Bkrci^)q0bU@oa%2P!S-?cy!Ss9yS5vI0xj@9EIAB*D8x%zf zy`@lsa6cuOk+F|<~DQqh2zBZ9HU5cV{lA(JNPUUO$i&(@SFR&=N;r zN_76INRq0Va7v|EbtOARu&#=&%*p|}X5DR%v1MJig&XZqW!My~$Vz{Zg==BhdY!xi_b zg_~aRkj{v%;^CvOyC$LJ8u5%#eDlR#Ni~r2`645apibR19p|T%9sBK1#7#`2FqL-J zwjD<6tbupg8e6u7Rl1>DP~-C6X+od!LQqIlvC{z^s_@xC`=AwjBCFB+Z{W+OcKXnX z!_d>9`&$Yj1JQzQye1u07*lC%3%M0l+Ww>$oAUb|c1p3*%XoIg|h1R*^4|XrJIO z0LqY=(#AHleV4$zt^_a&C{TcRj*c}ZyDuDTW1nLe8*|CH{*H_miixuoU!mfpM2(&M@=cue39BEedNBfVRxkS=yy=2xMY zl^{VOUsSGtgcy4(0VUq{ge*0COcwt!egFl^VVEWZhA3YktED5d*BGydyYoo3Z6V~C zz<93S{83jEeqJBW4)WV@L)oY0lf<9IDH?6Y1l z@OJ&1Zh?c!XF`za&q?muvEEmY#Gn;txe1voFp-ic4L7h}cJOw#atX^~?dqKU^uA*Q zT)mk%y@FANsuNKWOwtD(JJtIEDbq7Th`XU+I@57uBeIv$RdUgcEdmq&-%Ui>0Yrn%zW13y$QO%mTs1@)Hds z!ePsd>Wb2XD!r{baWzDSg(35MdOwA%8Uo zyo;c&T^X<9SJ}+EE07AvJ&64TBgufIg`e#mz&;6MutZ2y(nI4HSq$z+=I4WLOGHv7 zY1xc3$wARmWGc9ZeC%ID<_6taQ3|dvZWZaCztUXr2jatwvWXq*O zqop&k6WTWy4;?RFnKEB`@o%NINeczl*-3)d z^q@B7Y~u2fUj(+8irOpGj(l1VqMLq{(Cg{{N} zJT?oVUrj3Pf^ZO5Xangh7Reh5Z|qFXz^b{wAKEH`Ag{NEEMgB^y1+PeWJ8VDysD#K zXV5eJa$#wml#+)&xm+fW&y{iK<}+hpfd{$AvlKop!2`XXf!pFWyBzrufrkjM9{5<>w(ELi1G!GO(@olDg37#vb% z`3YaQ&$4*yP%U$cT9VT8bHj;JmVb)-;UI`iTl5uOTENye6sOC2(Uh=>=*dF@h8vLE z)L;2Qc7Kj;it|y4+_nhtfZ|9>^UADlq2Z2FBRibaFTkqQnoaX?p2gL|baTC4at>lfYNOx1>6!I$j!VVH3=>GfBR z{Kbqy^I%uRC5k-$XE_)Z9zvOois4iK{|2yrtYzqaM6w_3Ck> zcR&MSqBwbh=p$>;3k7pe1wWFo2e3W$k!c9iM@5KC03S}UFvKZ`4Ns0xpZYU zwRWhi;q%Xlif0o0i`vVJH9f`_Icvu-E(mw{OOL_WZ5+IH3dFD?gxGmobf)kZG`e7ho-Zo0olMXD>d=YTN?jzxZJwItkW zEpeO-qYsfsqDT>tl1nNXag-{ERT6o~p5Ks)J8%Ps7!Rr+O(HVy@cmYVjoX}`55lL4#mn!1XvRfTL`*b1Gv|3MDI51L+)M?jFh zKB~o)Qvprb+1PNWl)OkqDhcNuj6Fk2%w>j74_Wj>*9SX#a9==mp0%5ng@+xa!A6cy zqe7zDgkThtk$W$_TI4#lBo(4FpPQy&6wou8PW{@#Fwk86!_`CPs31E5l*(J4wa-V4 z)r*jsS88k@$oVC=RCR76lJAMuzftP`KOZWCp!nG zegQT=Wcf&N0y){n3OX@xXKQM^c-u$>NTTMWvj+0A{%GlM8GmT393U*+YK75s%Szi5 zH1VAe!c}0-NF&B|YiuC>twDOhpik%m5_be>g_ZRkVq@YpT#GWSTuBv+0`dJ@yn6dG z^W*UTCTBIsd?iv zhAcE5eI^B^TMAQ_^bn2)H?kvEZOh^}>8N85<&GMjpyJOl>H&~BK*M03W2|DTKN71! z3Wa1Z_1TSlY`k_FfcAWkcvx@(62oU6&I40)($}p$k zc55@jP`GG@EiLu7r8$wlQ6k-8%*WFaw9aq7IS&M0(`dYg_uFx#p*C3EPe@%5MB{5E zTLxRFul_DNo2}@e=!tUPj(w0MQ<{OSj$F+u&5(v9l)_8D;q3TIPYf2!*_>y{>833j zKFgrgX1$3wA6%v|1i@Nefs)ad1h<7)jGxZUCj}*ywK;2lKIfe#5o|dw>-|{kPi&-G zVcl`GkurmW;h9aSy&cLYZS_NiD&`XPTsadpq@_k@OWx~gpz0bB3dseuvWA%MEs8Zp zHY62PSPwW$$P+ zad>f}vm4VN_m|g03%B__J;t>@we}$)n1~=AmZ^)_S*2(dV?V}nnh_pC1K!B)C+J0) zDT7h;EleD914O8_k;$$?pw@jxXs8ySF@E^l7 z$o+a%S}_!Nej`bx#JJs2vg@($T|FATwVu+Jjwa0@JOL z%y5tb&RPn81o~OEf>5;cWF!{E2qpj;E;V7KV6ofy;s)uX{p1j+6(Uk(MvwJuz{CeS z!Psh``w@@x+Tw|6NQ;pyWLl8aa3m<`>bA2CH;l5?x%UWp~XowS2FUe*`Oa>_$akM__l*8y$MM~B+} zD$b>#wb)g=ztAWUiS$^l&jllA_WD>ackqeN0laOCy%e#{-@|+sC5(ZR9LTWIY)N); za)M(E_*u5JEcVBDQR%gJI7_^DgJDTtpb}!V`j1>LQk7?8AC-`5C4Bmg!`ohx8q3sS zI$5Q+Z2X=HC(>-3P#?M?bs;;9D@Ra_GMB5T&1?xJQ%^<`RAl*O9Z0?MXrAS5J&?A1 zx|V)y^5`cR_o?GbVrDAaHryI{eRq8|CwQQq5b3HgYr)U*c?z$FN-E$ZH*>FbyTECtxO6#gs|Uj;~@AjyA~{n)`n1eoog_JNmQK_X#Z2XmeVJN|eQ#nxy8* z_cMk|vsgkwXjf2%kp3r22Zx+5^lmdRyXVsoDB2u<$^^y0*3$E;d234_XrZ5&Q`2}# z`?OxCcAw$H7?o-mK{`lVA97rL#O4Jpa-&Z$Xg3j#NC*D28de>XuO~{gkYUlgpuOaA zsy8|MqjElzIbc5k6%}x?kyZd?yh4trYJ%d7Cy7mx`)tSJE@LCKWWf-s+m6~g*wF}h z^3+nLWkJoZ>dCxoA!?fHFajoz=s`h+-*;=&lfg&Zwzhlr;JUz}1H&xBqh~h7N0t&6 zB%u!fG!02M{gGLha6RlMUUUgnKqL^pPE4k=euf*mW5QlXp`XrAs;`4DLpGsn*}D%- znSu*Gzvjek!v#||teCJGwKIGUIgs_-7%_1hm@?9B5w6|Ucvwbs;ZUYK8b7s}h4h^U zlIeD&NUaxckd>YN`pHo_^re``Ml=XE4DQY{FSP*y&0fwOG(k#g&NHx<%4Z{Ei5hL# z$f(ECD;28uLY0rCqUdZFauG0yo~TgBlLcywOB_RDi_&_39XOXPdB|)d)Nqz~DwK#8;xFFQ=Fv=qKF}?R4 zSu~7gdzLOm#WYisO}3!EE7JWO&}zyi3g~tI;9SkKnyCl?vLlOGB?I^E*hz0HvliNZ zKC74!!RexlKia5?Kw9WDCV1tVg61Zv*)PBwc8!VAPTLf%+Nfj1TnvpV z&EJ78H2auHqS&etL2KOOmat2GIdKo?3MQZRIm4oYf+9u47v3Ky%D&@s=UI8a;d7&8 zC6vh5qD%8TAZt5?FpSk`fl17`C>e+E_&_#EjHH}v2vD}qG?YdFP|h5EMZpnaKAtwt z6R`oJtD%y^cwqC|gnQTEL$;B|m<&*jU#+=>;JJUSEw9TCOS^T!3P$@aUY_9u2qiy@ zA~casH$EElq%D8^0zP^Xoy7=r15SVI&Nw{qreg)|HKZdIL?lqaILe77pXa=D{8@2$ za7pR9c&*vk%;r>bra~h1#muz zF2hV+IaMx11RCI`p0S;o@ZhrNq79leub;!Zu?m?y_yuB&+oGP#W;O!s=W^;c z;P~R_SGRck8Gd4?-Sev$hae@L=8|`5;L!bE``aF0RzifX8+Pj5BG|{(7~NK061ZJe z6xGpjFI4Oi8;Nd~C(HfP5wO<;j#PZb8M$36h8(`8=nsk(id_VnqhnaVZ7QarO4Ce@ ziFGeM_uIAi(IiHnEFFY@I11hSUMQ=>_9rG#yE?0k_q^}J5a2ebWYb-qZ8hsx_AuPF zxlgxow>~<-L&A~0FU@+#44LQ8Y&oKE;Z#)81A%fS@T1qZ z6EDqVr+3B^mYmFnyVjyS z@BtMu_|O6%h>L`S>D0bB4d#&uH?Tc8XZB?EmAN)FVt1`+E_GYl|A6K$WM2HCP0Z=k zFo9XBxTTI^LkGcVS>1>}907$dCMV>rqSgum#y)! zL*2@y2e`O$0O)qu_w-SDN))e{F}+DRBouEPhPX4 z0TEoJ?n($PGvatYu;wZ&{SQBId;=&m9>|%MQo1dyGK4O+YL;@>U(om2NOn4?*Zo2D zFvCv2$~r@;7&gh{e#|L&J8CaoS@S4n7umdZZKXPcFlQV@n$cxUtNOZImAWID)Qm(4 zC;iIYU0%d+T9AcT&8tH$tc{`{ox}%Sn@R51)JLBm`vP}$_i;}%WNp&v)KKsL9PGsM zO-({8(goJCIwP~rb~}P-$!k#7(}1!lP^Aq7iAHGav5UxE&j!%Nj)W|?g-*2wpG^iN zM4oqx)bhH{7bv4^mY#|CJp6K$Eg->6IYRon>Ew>zWU3mhu(4`&rLpBUf=u)vrh~%S zoVrGT=y)8|M?2iC=)C! zFsY6yiy*$Dh^ZZY3C@HnguIFFwY}uK*XxAOX~drE)`}3-bES60)(7qLnZ=L@W<1jj zRMT#1VNV2*k@sjV0fV2UVuQ6_JDaso)aJ~UuOX>QfMAonTG79TX#Q>|^+NIlBAsKv z?5BoLVPVgQMf?NvzWtpnS$@gN`REZ|fKaGOP^y*h(0@B@t{RUyElgl@V#Uf0vhKCN zl+QZW*!-Zq5KNz^W^s>1<&fV}!Dic-lqb6|9m1Msy^liTW1I!tMXu+PH)?5puXlUl z&l;qVtHUK^UpMLg*7gCNo?H2^53bpcczu|C)sj2x737J^vp0W|pja!CjnS29W@DST zqzjS6JVNj;Gt=eLw4ejVdqK^~s{Sj}7?|@w8G|$;~8JFyC%~^2_Y1l9m$` zABFN1gE@RVUev?h%xMc<*2S0L3t(hfw0`dSQ&NCyZc|Q4xMSlttJXNjrbs$kZx7Y6h(Kcomi?$ zH^`@}!`EQm(x`*#OQ>|9A4y2n>P}7fePSUQ4-Rkbo&(kGCo1J&cGcg^=RH%&4`@6a zMOvQ@(+)AM%+fI76F3O?rdy4&TXp?QQO5})JX86v;C;U|M%0#yF6z5_jnLKCy$B(0 z5owPOw$egfaS~k4{Gp$EhdZJXceHas*GCwFsOx-!WhVjdbr_7O@rpoXY;}-?pHg9$ zm)4>Bco0Dm5Ox`6TOx+b;)dv(NAaR}*8PV>BNWZWZ(VYzIO^aWr0uQ)YV`u{srD0) z7THgaflZJ`T|84~xuSx}rtOZoW<{)|DKVBFDu4c9ZNH{Cx0alL`8b(5P2ndTT}cdc zaUr9hzr`O5`UD91u!zUS^z??Gj)!0TiXmfYRs?-7(1=LuI84-!j}UlHw#2$%nhoHvho^D3 zx5^X1fkA}v-4s!$?DbRc+~bjJpAFEUY*|8E=o;0`Ak)7vvG#eF#&W>eyJa|j?;7vd zuw+(K3zd~<^M{Yd84#C)Eg(M9J~08Gm2b`!5cenI^Ra_xpOISfg6XuKWF4evZ62G-OmCL5$5@DTMvW;E+ApM` zlujFFHrE;GwE-&?w{ESv3p(a*_?lEwR6JNL_0>3$2KxkUNEt`>yf%Zv> zQ3DL`*Ts+M){zvmoT=NNsYznZubegSAlhH6-X+OnU8|tt@%@?+RO?0}wc9gvK9g$< zsN-54M_i^qEBAHc)tNc7{l}Pfl=~y&gReeGI@rj@_HXaUFSZ@7-0rRkSY!uwP!l`l zQ|)_?mXLF2T6>s;mCGz(iZiAYz;9%x_doA`$SqWWuNrQzaC5733Gw+2p%&yj%Qsp2;b0l7Ks`$UoW-j6A zYj{?)8+*(OFNF@4Jv&hx8CM+8Z-=E=Qy5KL+C*(@8v!zAd&lvP_nQ{}iFln)QUD?4 zZ&nrA4mYI8rp-0DLVXl79IJI~=CYmZJjhfr7i3BNl)A)xf7H8D1$cFm87^^wriWxa z;2~V7Js^+9X1~b)XCbUx@sDw`B#513>vAp>iPB8;bTSMrI_Es?m_>3KP)L}RRuqvM z-_^Spp&lESveM?TyEPbJFPw8xC8{fW3m-IAuhEirE@(uw|NIbi5KTttS_h^~?=(Q$ zpd!ZpR1KVb8}`fHsgh{Jm5%kPZ_c4irit5WjD*AL{*_-d_O!Y?~ z2EaBWN7??~XqwDJ2P7=0Ov0jKb-ig63Csv%hc^9{vWN^%#LaB%+M`X5I27zi*^h&; zI}wLSOMRem+=a8?D;!Hg*d5dSESn2Do|x$U=qBmy?B*(c3ixyAEoYZU0@{HZg_=8K zpZ>_~Y>1|hQ{b3#1V$^$aHICH z5ez4hIz?z_a>lvMO+Ms}6W6Z?%KL5RBcXN;B7{KPOXy%?556`fOltWDC8?Q>q}q|+ zD?|-qDZ!2Y?Ra+Yyz1~)7_eON3K1edF5qRvXH4H*$a3BXOxZj4&B5+iqbWWAoPi7W zUBvrVB`8B>_HtgyILR^RMKa%d`sS!l-}M@YpCu|v&hj3R#F)mYBDo(k74ahUQqp}v0 z4y12iCSPq2E95{Ck2m`Ik#_lC75P!vKDOIzyn&YDP-NtnLI#LB9NyAnem#&x?)ssi zCUbQv>CfSxIa86lMkZ^M1J@2fo%Ei0B3?gAQ(P@6s=Q;89#%Z8a;C;|)wvdp2sn^- zc;7#O`7tMR_jN@^9M~@UhFPhIg!8eg<_(!Dx4DL4YFtn`0VVVv$ITC+ekCYC=1s%Z zXps0>G;w_qTI*qR#7v}=xXqs&yU7Kc!v}kp=cMSwSz2z8O(GQdHki=}J#p2vMkL1x zS7Jfvht!!Pz|(oETV6czA!kP-OD1hSeZ%=$YP43tnYU1zS)m=Zgk9=Jzxps- z6vT|qG->-kFDZVv>3$rD%aiF7teZ=6JHEa6hX6>3p|Nf9x_=1YEQ!akOf8}HF3U6t z`aZb<8q!}kWpf9LUyjxnpa^TI{wg&EwOA+}hxdP~w@&^9@0638`h&p8J;Y3>CECa= zY$`ie*BvwPQju;n6CxCT4ze>yr56cPs{DbWihgpoh;Tt~( z^@|Zi@5MH*lWkI63+C*rm$>5^d%>#*XO#zOTs8!Op|-9VW&jw^+bufRUNck;}IIuJ7id@xWU#Go!yV7GesTlD^GM zG$J|9Bz<8aNQ(THZaCx~0KFvtpz9v}ld<30N`m(DT}&h?m#OFCNyAf+uuRfPN@ zS7g-oBbRNHvGoj@XhB7u1KSj5-)j%fhCzGZLc+`=tuf8|Ed1u!$rEL+?H2v)qYK<% z!0s8_cKWcsZS2R*wjSz~}AzI}TjIa+cP+x5knPNe$4Ud_$>zVfXGX&x~)-eZq{BW~1 zaJSHe+$>NvYU5-6w%4@V9Q#IuKu7V=xW^xrLokd4R%dnoey1+vmoffsDA+$;QR07V z?2A|lPDd@dQKaYno-w;klY4-88SGDvCST;^jRn@|%|@ZQh?0Z^=d!yqkcK=a8)>*g zKpOW*CY}~7qN6WGt8#7%Fk>es7`)kzqATm)DKYL*x!%Y3|KYuxJinAqvCeiF77nM; zvMk_7k(0GbQ?yNHkMfk+1gs&lQ>McqZkF?ik2Xr!j|4On);{9nwM(|@luIbyZdpF< z!vRqtJaa?li}CZ27bRCk*ysjjI1M}1ZlRV6ErzlUNVce9kX4EJS}S-k4MqwdG>dhi zgG|0J({W4%H3wSzpDb>m$L_)l1BfeMF$jV9kNfPecz#V~;O;wepj zos#}BzM1<%ET<#nG4W$9Ekc=jMF-0^HXLBvephiX-uX&M-8B7J2%}Df4y$9foz7fk z@yqO0DkQg1)F6@rZcySbOdqm0`U~+Ha%4Rok%m*ThChozYpXYA881MXz>e-+sZH87e0z6|l8`IvQH{VbDb=XH`U2=N zsAaLSyIa@FY#I}sP?(K!&8XDnbDrLt_BX;WDRN~yeGy7vm+9hJq4nMUWyTz3G0e7S z_e`q65lp9}|1Bn53G~_$jHarDG5LG-V`}`+77}A`OWV_m|89F#>4BeVp z3C{#%HX+G$cwZqq(Zma2rC!H3Q0MN7xM?xVwcd53-4D z>|WCi;e7M%%xyQ*qZz;4*|p&NdY#p;@4>`h@bfo`WzezH!;EEYV8)Q%M9+P9sDMI5;tRlbmFDEBgdg51AbPr|D(}C zy*W-)rct^_j^XrUMu=cOW8v7+-X1k%!qklu=zN+<{|5Kfq9v7a3-L*Kpo9rD#4d1_ zod9P%dY+t@ABcMhKY2@|M-YW8s$L<7V4E2V+8T2-U5IYBzZ3G-*1j~(v}#f4*Fu!K z@yw`oxR15+FTQP&y+(Y0C}gOj51NY@8^(}RP(W(;!t$U5*_t{q@O01u@3v>;aPr+N zT~yC*f=7mfu4&P+PLqBrqb<0Xf!W93_3?SH9hneblC9yQZ_lJ^;b=> zrV2z&59WLODMK9IUB#jv(=Y^+N;2Eazb%Ai1JV)#W7V4DIXzF9Z^V?tBQDbW0P+#s z>DjkR^wKWlpBYAa5)1GK#IolI^H$0!E`}q?Js>G|Sk@>45B8#)gcCX;5)TifkMu`Z zXI#i#8qlZD3q3P?LZ*enPPUwys88%i!M9Hms373`(Gprgv0Q6_yEj}sDW0exa9Qu>beP#o@h;xIc#OC8e z;nu~mgDs3_XDjErF$Oc(P(FHN%-@$`Ub`S|;N3@$&S#pY0$Wzzn1R^O+9O?Iz6AFO z@JQ~UZJJC{8)amTcH^q~wfsS`-%q)IZ^7)RVzwer7AL|lB2{)tbqv~J-b1k{=r6_{ zxoR{On`T{L@o2v;*KSmar`4K~{yG1QePU;sPTX%I=8B`%pheujGN#t{0^y;ZhMZ_tU>TrePRHL}l_QR=b{q|8#mzp|n!_ zQA?i}^FCr{Jdx_x)6JF1(4Tzwx!wq1fjD#jUukUz(7hO6{-A2aJ2WWuH!6d*81}fe zxh$$-NbM@j)&L?7uR7JrT%hZ%8K1q5?+d+wKfw|^DOT1n??y^mcGU;$1{EDI4dD*w z3d8s!RU+Aa$C$2PV^4h!`^vkfTp(7G@bLAvA|Eh0xG)Xzd3+}mX_UN0n>3GpHFJ-j ztpK#zv-qf6Y<$*KAElMzY_H+j0sCPB(BCL5n&)b&hszm;I~9N7H7x2AQLyY6zf1(( zIBJQ5>lo*vQ`pa~M-Pvzi4BbrP-D=XI7uZ^<>cA0=hb5pxTKs9`t9l?)`*mCEUC;bMk4bcA!C{5&+9G*wuK?uS)?muHqV`eMsRC zW>j7_KKCyqcn28<1AC{69$H^Ft{I+W1S6T_!#Nj-R)qywBAwlxrl-tMG|8Gh^wDjuu5w-IVpgJS^Xi`Ft&8 z+IkY8C2j%oGPvIK#WfZvx+^?e4=m^=g7Wx0FuD}yLa*Acz4z&jW%X$|W#+m639{*Q;^gdfM)+&#`dpFj~T)0h`a zFH?8qROQmkcsJQ;XtdP_C;@=h#Z@{Gpve3ZfPOE&6w zfTyG#(MJ%Iiztn-RWqU;M#Nt;I;hs!1^t3ZAqY3y7S;2vgf(X~wdzZI6galgko@#2l z%Xw>+eSYC}MWuw8Rarn_qbN-T(;y&kAzhrfp8Jh3EU{|+sb6Gj-|>Dg&23WDGi81| zd4UsA;I&a)%`A$hUecxK9jds6=I`VjtgXjLrCD?GF~J`UGcLVDHaj;gEvDG(PkoGD z068oZTE7U_CW?$@k;yT@zH8yI5*ars{nfPJzZ!oj&m5SE!0_li0(j)?`7><4bluB@ z=G|?AGPpO$P>>gWn2tbSfSuI)b7bEr3*~8VMUxNZ=(L?SsZBZWif%4qjYt`Nk?V?B z8G$@%3cOxWHU@Enu)g_Djx7uTr1=mcFTB=vTOrDgPx-9$qu`K%y71(ceTJ0VQ}j0O z5?)KanyZ_tO3gJ32Q(h}{YT6`gpqp)GoQQ8$quH_`TRCMw`m(WTh12+>qzp+xHhW7 zLxuRnCDhZ8dC1N?t%hUe$!mFrvf!7zi?k0~C#<};!QEXc(KA(2;$iG+Y{HeWthGm5 zq^t+&I`EGeKVb0Z@8=Q=AE2HPMeCuYDxvloM-Mr*dToFg9Pbv=S_OtwaAX}mv&kVB ziCyXNn`89F3@6oBQA8Ct*f&Qt0a5E4+qDQmWfQe9ihE?}epJJhMlMlc*+n9#Z-nA% zeoAf1r<(>Oj7ACc_fJ#8$vWQUZ0KRi27xgs{^aA2aG0^x#w$NxxORmhJ!lgqL92yW z%=|vaH)k*$fuzJJl3}~Qg3WLb3(ZO;7KD7CX#xRy4%7srYsEkb$4t6inSL!Re3G4V zEGQ!$@||8wM~WiprC=kbvTGyH@SUtW#(tfqiW1HX59NojHz=U>$6Lk4xW-wlE%c z7K+%B*}DdxB1UM!uDmjAEtmeSD~?e?M0Abc3_nZPB0Pkk*!XCIH5%BdEOG~zVxdz5 zWO$krxDZyR|1NuuazWw2T!BYXJHFrsp~cmJlhFiBs8MIEtcV`L(XWU$Q3iNfqY`v& zT9eo+N5Kgd-qB4a5N*oBvwBCQfvopInwksBo7{6k*n6_Vg%OHNK(@)O$W$jO$&BQG zjCna9sR;#VEf&j>+=3=_Ii&YfZ3GG%NJ429BoPUMe9mfB57tk?;v9i%T(h6&*LrC&D; z6T>+H?*^B?m^EKssU*u-m+WC$J z$)UY{?Y1he_~@AuiEv(T@`1VD%y6-hDvzHFu?%X4<7M#-Vhk>$@^B8Er!dd?Tx^Fg z{B17ms-dr@ixB(9=OE}ZTtk|SWTS#RTq(X*A;_E~Qnk1Vd+FnUHhMK(EWE$Fa4mQJ zF`#(9?hsFSm39N=!lz6SOJ>kFUMJ}&;7dDql{EWE2yEn_g6gI)IfS$ma{47iqxCo# z!beQT@+@Xk(gDhYU@NpHm2E7#z1m`GhD<2W4Uc(K|HP@%u6hPDs<}<$GZwQ&ea_qh z^K-K4q)Kd|!vj^NzNl39_>^zbe4$DR+J=8!%jNizTU3jx6Jx1hSMi3>I9dLTvOdn8 zWUNYQP+CxNW61i$%aZ%dA6nv%*X%*1irA0gP4n3Hj?Btx!cPOF-_)*K!fK<+h7 zX(;YE;crdC#!hQexmTnO)a4j3H}DLqgp@YAinLQuO4QWK*b2fzW`TA?#T)6Um_^G+ z75%%Awgfy^NQ(8i87~cWpX^Rcd+gDh%Z%_YWtygZ!v+V-o)u*Pp19b0veK+NU}Dap$1M}r1+z%+-BDmQ9dh8hKA>jzI%g0bWUS29@o)E(c zxEDH#1pPuF%Co+hs@$aaO|w@uO5vLe7J*7jRIv{=Y$7Ja3t7q2qRISB>O@K>Y!-jmgLC%li*N4vW z$SPEG?YE0soHBsQi;?K+_`4XGw%HU->ToQZ=8AFbI$XebDs0;=f1)#p1Zo)HE(2nv8LlQ zFEkl^UW`5OPYxZ3BdzkS?uc<>G1 z6>3-4{POi5@13%9Va9 zI<9v;S8nq2?*uk%-g~s+^e2~X8K2*F^T#jWzG2aVXD^Kn8AUi;*={`xnJ{%!74 zwHt2izwSlbok#C%_4?A)PtSU{=FOf`V|&+YbN9G!vKE}}{lnypXRn{%@WA;CCkt#Z zcl}2-XRQ4^(5LIH$NhQNoGLxq?`WHw z#ytAi$n-w7ullU^gerkk17BbD+b?gwR<&J+JQr_jvSCwZ)hDk#viZcYzs9y5x$N4e zqh1+4CI3Am%WQggONqzUlo?VjazmA`JLfkVj##~Le!jCkb{GAA!|%Zkb4O-)9{+ym z_#Ue}3}{??z_dW5-9k^vFZY#R`}1{2O1%E)y>GPYw!G~~Gvnv>XV&Z7sqJioR0e-tRtsYguSw-#Qpl7z0 zd|+$aQ6+CJf97=Aw|$*EOrE`A$)*FVmj?>X3-125#1GTx_q59&ir2`02{xBMbI?bI^l7ZfHGt?^|uVw5yP|ZSl!T zwSHJ!_s`G%o^!6#NAG0a+M&dxjh*sb*JIE07xy&Ge{9d@`44~7d)G6^H(b%|lk`eG zGJmOkc=BC0wElL>^iK27P4QL^&HJ?Fqy6Tr+1lZrtA4XTy7BM+(<^LUa{l2`N9H+3 zjox-=p8fX)UcGVngdu;PZ+6Z6A7`%YJ^S&(wGRE2{_u!V$1-ofc3kBWd!5_ADDz06 z=epg{<%2ShKK_0e-)&EN#<-C%X$&6CeA8Tif2rA21Xukpl*l|vdX8*|00m1|V~X3gN~ zpAF30y;7T3?B+dJcq;WB|LY4^^*K9YeE+r$wjY|-?4?%KGxn_R^2xph_b*Iq``+nx z#fPq)vTI-8Bl%}|A1ogpf4srgm-DRt^6T$+7FucU-!=Z-A1gL{W5&m4ZW?&y=21<{ z9xv4L-Lm=X9{haZmu+j!vfXs@#v6M4-ekh(Q_{|@Irl@0FJ37*?VbgnENj-Jb&;zJ z4fy?o-$Tz$o!9m6Dft#0TAk0#Xf*nYvQytI=dJKj-YZ6I@6|Efch;`Hs~Xh)w8Qh| z#@%w&q%W4#yyB6<4^Q)6yYZ`Cd~{^8CCYk%s+J z#QC54obPs`^t5A}E6?BlPKQeSrxiW+t^dpA`Rq+Ro|~RrwdmHDkJ;DVxTWvP`|5ts zuaRW?dwAOPy&G#BDY9(0dCynx6#HP_s-q8FQ|98F&H z-wr0orkt;vEj|5 zqa739b1&$6W?H*vE3|J^=D|?SgC)o8+jRZzqYpnYdBKI*?_HVyk2$}(w;o;gG5o3*erewMf$J-M zQ+idwrJvN?_vGaAN9$yHj}1?Mqh!k-e~gLPwXe*x^y}@Do_gYg zH%CtB*fXPY%V&m-9+K~L=bz`$ZHLLzO=hfY_yDja1{?77O6&cs) z!5_x{@%Jl(3v?Ly^J<&-#lO3>829|{LXSK#o=2s+J-2CY_a+@GH2TKbGxMQ=H&_33 z*)}2aQ`zBzejC((}w&!wsMBv25}mTd(;#-**Q-xPATk zQu&VMuk(v{TGk7PrZm21(dYhmy1GVGzu|q`lS^Nye{$6R;qP@XeQ%-S1IP3*e*M1a z$TnqG++6>s{2eN++tQ@pCq=e5Z$9=y-CpV2>Ye$l`AZMoTyAvUy|;dF-z$&rE!_C7 z-YpjNc{%j*?Y&0qx~b*f`|9o5^~MWk@xLon`?bk)lc&C(@m~3RL$5fBhKo0A`P~n* z@-$!bZlC9WE3z?T;f7*Qk8QfkeP@|YPxyoFeeLd#tgC;f_1^K$sm+>ZL(9VzM32NX7JFKmFO| z#Ndn-vsQhwYS>F>&a6MUvRAo*{h#~2R@IlPfA`g+?)&@O>e{MKxWA6EzEA7hZ+w6D zkF_RltCRn%(emLQ&mHf#{=Odhx-7b7Oy>tH-<-!^%J<#5J68Yo{givQWVHOX?6?Q~ zO@2Jx{LhK~i@RPs{lemxJ}Nk9W1!X_v(x?ODjz$!v%oh+tK?aCXVdgeJ2Sj59&nAn zr^%A?H+XN|y69BP689aN6`Xm0qj!fEsquxGtb<+3`%NKBkT-S!5-?Zb|y+aS( zV{5Rr`kI5cy)z(x@rNG2>C7iT-hS}a9p2OCuCp0sKU&)HZaQ+R%Ug9z zy-_@Gi3{I%Kk-b1;KSd%x3%uXO^^SuxWxD_HP#nQJ2rC2{bT;Fa(kzB=RWJ&qOted zum29GEv)@W!xt7j@89&;)B^Y4_05@WCC+&6^k!YxzS~pB2dx?3YSrov1u71$ZtHvM zr{24k-`~Ajmz}nG$6q@8Zl3W)KYV1=>E&fN2No}TYhY%(2XDz!a_9No)n=CqJ9kaK zrF^&3+k2h=I_sr3cW1s{tZ~PVO)`6L-!<&{tkYYsJhN@sZ+|{>)8;DI%`Mqw`5*VU z$(HKEa}7q0x^yBp?s(w=j+KKO2-kA`2n zc+RqK+tpfh;rAQb4i2o@aj|OuznAM=zRZZ z$o}v%7n+qSaBRcO8twP?tks}f_lJD9zfro*ar54cR#SiJ{MR?C{7NJD*$f*q{#nXO3NUY|Izirv7S7IoIb{zY2N(u0Jn*@hF{-1_>*C~3vF)mP7(91@9)|9^@@7m-Zk*sKf;5b`}COuCx+No za?M;b?$Py6-rQ`-@%zU{`p$gh=7&GN@ImEY+m@MqyzQsn@ek##IJRWx)-S(2a_7KB zwH6M4s=$%V2MQM3d*dB%|LR(?e|z%+{m+Dcch!8Y*y0+mt=dyz!gX^p4lVs<(9^4r z{xHB>z=^f13qas^T9$zx^{FH z*c1Arq0!UbB+nPlvF`hyc++@g@w7#uU8i<+C|alFl5Jb7&%b--i$HD^!(Q~8@u(1 z;qNsvoYRi{bj^`B4iv69;o_*#6IU!7GP}dor5_*i`6maL&VA$ae4VPVYCC?$(|gG^EjT|)2UTBbmz5an%DTO zV)^SwOg5$ssduPbL-#kIJon9z4-WlS{=hZs8|Q7*~8?mK}?W#QuhkdbO zPt{^QdmjG1afe$+?!Ir|>4!hvUAXulx7!D(MTp+o4ae;pR|}pIR=O zwf?%}Z94jTe>ZRQ9g7Fmyshf!m36nfzRqipJZ|sx`*kB*)jKgGZSBq$O$-0gF3+iF z3;ka2@BPQVYch9T-hy2Qy|{Z^kA90^pOaN*#qJ?97Y`hLa((4Oj=Gm3XSaZ=Pk ztQ+2bO!s^L?&*7B_qjbEg-hQ&b>!VG>h)jHq2}&gPr0tjT>9iEO=k@6{MLo6@Fb$Y z9&NsE*=sLs8PR&o#z)$&KKJm$3rqhRDA~WBuj=LBAf6z0kwoX2|cZ9`}4WxmDBsv!?`}zAkU^nzMKz=KP9c^?tlE^Yn&` zoz9rQojF?KjdN!&ytL-zhAwr^`FY!5-hGb_nRClSWh&-de){HZWsj98b70-n!{01h z^l7~V!AjGs4Xo1grsvvwO1BTKeX?6K=j|;{{kUY$O>f`r**mHHkJr6)tod!H)^DhO z>g}l=`gcBlp^nxp zF1o>U&bfHg&ENV@?Actd(#xkG-Zc8>5~u6^*zVB!iQkm?xc1N~8=LQ{c)#PNJ*A1!{e<=wmA?%849)Xa4L3ljGS8P%9-QtDm|yk>WM4Omn!x;-+tlAhr{#M{8izH7#T0Ux*e`sPQwwB7XD zG2=x3n{PO5Kj3wg9s9?VEgu}aXYA;W4~1Ut6Ri7UhNsQ%L)skv`N$nFtS)|Y>F=_x z`*z5cncH4C`s?`ZzjpsVv~%e_fe5OCDMA=G~#RJiq&!q5CZ=lXlTAO8Mtw>`9PbM24MpU&gY zxT)N?`PNjMRP)uZ&n~aB?ziGS%4}}DywoFK_+}RQ%y^>P>MxGAez8=(!sVJC^0nLa z)yt25@Zyg9y(ixL@Qz0FudVz*&)%7bS8U3^<>N7>2R9y@|F3&SJWV9S1GV;cd+}G} zW#64g&UQZ6so}#PzC3Tx?0)+P-1F|#n#G1Mx%jAW+_Z0>KJj+rIZf}svB{~XyG*4rEEgzp*~JYKock!ELBZ+X2{hU=%dCRMIq zc%{8d`&Bb;7?81k(cp8>ZV%oNJZV30s9BwR^R2LdSGfC6E$f#ZzIocrJB#!@llP1A zS9M!|Y~JAKZfte_%>ox**_pq@&jSkt!|s`Ht=clU`WIi$dFZyW*B@>3eR$(jb&ihz zd1m!H?N2oMd)bm{VfUkhdsjVD-?wmO%Wsc9c4v=Y>eQL= z>VS58_l~*Fnf6=YuYMyk>dbvK^yypEN9S#QuGaI7{k_XLx6Hcu)qQslID5`Da`)^R zvXNt{R?k+x5le2mR`Mc-=s%R4F7z? z#hZS(_q9@eS2wAD{e?0gS6bw3_W0Gy%N^^}wc(b%xBR^|;6K}BUxj&1p1$wfiUn)z z{q^d$dG@?Ce^B9XS4?j@`TgMs_fJ@`xI)#&ZNL8TlX_joG;dyd`s8E$LJUHP((MJ)vKo&=vI(Fsj|urRkS!( zfcM|25$>Q`@1+{ysw8njjqoN9*J@d-cEy&>9%&lL$OwcxXEv-{GczMBs)ReDpH{1u z7MrVTh|RS|R>W(Hh{Ftq|TL(9`U0700&z6fL+Ntq4vL@y?my^sJ0PR;Tp-X3xy@%3!4tr9YA0Kfc7bRq$CW@twV_1=|{Sdz$+9|EHX^4(qZx(p0H%^?$0QwklB_ zEALIYY>H1u|JUK8tT%A~mw%&QQ83)5rmFr=73Wq(xK)8}HHw;btcW)wdVLm@YPI%< z0*Qg~v8v>)P*okMD&PETfvE=7d$bsNc1dyz7d1=uiAxp#R%7vZHHsQj{XGgB`;(Vn zEU4^Xqp<2*1sD58O~}F?DD~g=F`fY2rE?bL2~7hX%`7%{W^c|MhpMUCv%RRE?ou=6 zd^hME&PraT&$fi|WayuqVop z(>$)|EIig(YL@14N7vP32wXiJvj1@_sY9VC=*`B_>xfd;n@w?V_HOb<*EgQRK3n#q z0crQ$S1>)*ZnB1nZD6l2N?D&RI=ashT}K$aH5;F`c+J#twMZU6tlef!?f<%;62`UL zoY4X4B=!eSbW!a#o}*Bdu-mdHX9q~NBn)o1tMC4|!R_|!q3n+6($bK9cJ0}VZMVDC z24WWWDB%+Zci8`DiZk!%_OUx+gFBqD79)F1hcBBbPP^b8cBgeJ{x{5>t|*tFlWY<= zv-h3d>5DEsf5;x(C6ATeWwE^fZE%-88$FkGIH9d8hPex#Y*E`4qmDbthI3o9|Gy4y zQ7*R8kzcY$aAzN5yJ5>-b0fAFjo9FxD47!0+~-mB$z^b!S-EsgBo6M)W*PR_d2-mY z?+k}Mn<$R#eGxxq_H~oXn9lgSDT-JOo~g(z{ni=k7{+sMEP;781MK*u3Wv;Lp+19Fr?taT0;` zOU~4Ih}cYvvWJ4{HPWINQaskyTGG(d?2~5kqIeNAkvUm?*)6hIeOcGaW&6tRxUtzU zXSSEb7VDBvoMe=fs*baF{H2wNpJO%=qTO1|JPvpDV`8rs$yKLO(75GJm|yfSm*&TM zD6SUkOKCv}Y2_Zw3{`I4E6}r7`80<$%d~PKG>oiJub|)Vx7X<$$t<51U0wN$-{!Cz zE^pB7arjI}*vTd~&0r)PafBV=P{<6V1SoGwn~J-MVf}Wm8FJYI4%0B5hTRcx_&lCS zAmH+ZLJ_AoWTXU86Tb{jen-S*hCOb((-RKbos8kNg`E+H+vno$G0aFx06MprUb30H ze34MV7v_R8y$+iz;4nPS2y_Y=rp+*2ZhtBOI?onqBw5@+kH_Znc%8^vL7yjNGi_nJ z!xy%@!ePS}iTG0iD6&Mkdy>vWc2^*57lK#?UX zoXO6OkYNwn?LlwYW}3{_Z3N6n#Aev+u29hHG5o0j)XbwCM|SQpe72zBvwH)saKIOE zgdFyu&uv3wG&~_Q9Q3CGP@P8^WRlLI2{UzhO-INZ@w&nxBjEFyLAN7p4|v^Szb6HN z+UM4ZOtQ~|PMh1|vN@d*pXmwMgF&y$iF_UMnJ%B*2nPMB02IxmvYMQE$mw?ZZ1%9t za2q}!ix}`YP1U=@=?Zv!A%7|W)p=ALO42#=GwjYlnECp`hG_=E4n-Z8!xrMM^Y}w4 z02IwHH*?c#bHGiY0&8e;j3S5wP&*KGagZVoe<}bq^QcgjF!P6cbPhgf_URll6@a>c z64&I??}~ec3>yn>4||ch!XdXe5DwU!VV5gp3;5hA0m`Qt$u?}<5O!O@Y53S$9#<&h z^(i*wahOhatv3|#njU{D0ETcT*|rHo1U+F!Fausk#0WZq2=u1Y7YarqNCGenyDfJB zhR9Y5E<;Ga;-Bt7&;c%{&1X1#K356bwFrexe<}cm zNOmX0Vc`mSJpqr0+sA2h1z8iW<)Ayj2C&;B0jJHM3ZOhz&Lk%$ZU}V+yP>)(01ITl z+D(%~8RC-g1bmKQ*q;gjERtQD@k2zsa1oyyJ4?W03z_k7IrKCYleMc2OPi*`cna@waE4K!?Po10J?a%P$Mpv+ZONy zZ6OD%;lyNPI#U8DEK&>+vKwZ=>99q7wm{HuMLdzPE69I9joUil_oM(&YmqyT^1=qg zfuK9$ak|{zpvz-=ygs`#67+>V5vSYqrvhMzY;ELn=fdYSoMDg6$>kTcVIA~EBEhiN zVMa_&Uc?#krvgxfN+J}*?I<7Jc->we@$&>-HlNcL40u8=BVhNsO!bdH6@VHd$psrX z1l-icUC71_+d@tw5<*OM*d1ZmyT=|5dHksW)X~cwi$KWDq@5vW2!>?$!A+b&(;aen z9B#uM^oIPY0KmdXBH+Yf5e&M+4rEq`FX#$H5d08eO(Sf&5qemRus;=mB2UgS4jyk;dhD)< ziQtes07E2GSK@~VAqPTw!xk_DHa1qst@f8K6buE~&0&8i1pq^2+q*7zE==smLDR#{ z?KKU!c-VwQ$OeH3g1_B{gpvY45h`~!2;+A696Wky_+aCK2rM>ei`co&(Ib%f{iy)d zrcH9O)@xETkfj8mB*RC4^V^&Vi%MK{dN5ZYD;TER=RihvN9-ISbh{J)3>{U!6PbK= z_eeb+ug&B#G=fIR12ge@!x1wa_IUzcuQTjV1px7~Eo2Gn6YHKG3JVNCCGWWMnI{iLBtTaM`?g-Xej&{iOgo0sb$Q$x`xmZ&HDB>hh+_Puz3)&;@ zfE}sEbUMQ!)4Di3ks#Iw5OUIe3INsp<@dcW$k7Ui?O|?FU(gwFV3FeiXu}9c&~n@k zy3ZY;e401gfSGJ*gQ0-oa(jYdv|PsA4r z1zbU=Ka>JM@uMU%Q>^=-!vnwO3UHt~`dl^)I9|KQ$7bbp1(T0lVKM|(g;WR2X6(M5qCxa6()$2EQHkQ2>Vk3sGXHWmCT-f7!HIu z!=c6@fm_C5x)9H7L1fM_@_Epo3V_+WFTb4(6$3WtJ9XABl7oP{s4YkJ?M4)m(KD)>3av`vzA~^i1 z0LtU~NM@~w8^htlfETp8)Mj>KAjE_ej08dvBweIwABNc!0BVe6Dsuc7NHyMw;c&qa zF(lhPC{0kz<2GH0b6DIQDF7@ylCZJ(F@hMxJcg16O)lFI+!(`)%@+&@-M)~+;YStE z6~G!J*Dc|9`XVSaY~uh-7zxzj2)ev(k2eA*#?a$R3BZykQ}yG}fH8%ASl}bX6QEy) zT>&pv+K?Nwh|-&E{!{=8jbx&F{1}mlCurE*2x=iSgo(%I3}GraL&0DK*%whT1%N^$ z_tkJCHJhkq4jYjQ4m)8C*bm@eJ{KyD&*{Qwo;!fG8cBqPI5Z4SAGTFD8wz`F1cO4z z6+|ubA!RX!!=DNO9^g%Kv&RjAT#Ug2LMfU$>}oSPB6cSxb!Gf^di<#Xpp+FGpxHd* zhVb_T)nvA~1Qxj=t1stV}W*ps4bKd zK<&UJT6H2aP8*!Sj*SUbH{kXnN8-)0!yZ^l7Siyi0#Ku*BpI$DBa9Ocp6o>X@fk+M zu!YftU4%mgB0hgA07gkB1|;H=s*{wXIDPmDOpZ*1Pzo#>zK91=$Q_Ot0b2n5R?XtS z$JM9ov0=vbdE8zu1Z3KX)9%Ll&eRZ|)hv=|BL6ZiB8+GcqDXq|X2{D{3}Bv$IGqOT zg_+)>MatdfCSV`}PlFXAqy+;wmAFE~*v1Vc0I%Jj3P2qdZxUNUBC;MQ@{AMx4x)K* z=OJcBxEI381IcQlJEj0o2j6l<=f;ElI5y27x+uaQ5&*Oaazp!Y5@M}YX2O&J4CAx{ znsXl}$fe^&ok5I6ByivjLy7bRG1eNsK){Exmpgzuk}25>%4)zF3A>SOB5uTf{tdvy zecVA|KKJ@l0dO;zPb2Zaep^kJfipf3g^sD7yctPPO+1q81Q;zYE2 zF$Tf10yqFnyBn3xXK)3;V?6GZ0BV?I)`P@-77ThY`Maz^zSxDgZ^aWR{pXZ17nUso@RcX2#Uxv*ASv311>}o@F zw5S_i0&=j@B3#;(Sqx`K*g%p-KlY~rut=5r6&A*P?hCpN6UiKpKAvzRs1A%`XiA0m zrvgx8WJhFPj#LQ3xR_L!f{CpV1GioI%g|;BXtIaxZhtBO#Z;15V&XP#7-qsk5Uqsq z&}&DxbP+3sHQmd}3YeHnQUI`Vqam!9)%I~CV=lqg$3b^;l7c~}2ZIkHzQ;ss_W4r* zC@gY6DT z4`Brk!|6{2V0E8l2SmGfqUVRO^AHh(p$V=P!XJbj#$oY9442)X3c%_<$vKI3kH^RZ zF9{Ppg{_y3?DY8{RKSPN8mqn?_dxCdR`*FR#c1~kS3Z<)9PJ_OQ_ACupljkZWgrYN zSin;NSluVtSkdm$DttzOT}2#?gL4t~z*Iu`Ba9%bv%|(+n>&Ej{pB{5KkOysiDTf! zY=pA!;6B1+ffaF5pqdLvf<9fgJlb2JaFPaA>snta>$GyUb_$+2y%xgwkl>d zUSftE^z7xbey|8h57{&6t|DD~1h6di!ag6ntm9ib>;{1{1os7%Bg2dN+3-3YF5GQO zwBd?Q1wim@cFsV#gpLWB#A8HU96?a{V{G`>Ff-#ffZ+r%2l-P0&~bKnd}7Bic?WLB zkkjGDegF@}UQRq}NCm55KE-5~0zj=^Hi;8vjM2lTWCqO0YDYV8X$QeU^=$-|T_+WQ z>NtBf5<501CEX(Ejo|Oi9YA%Qy@3)sR%Q*G>BXpz=K!ag zfmsz5&P`+ix&l#KsQ^^R*{n9PV|DTnq;Om+PZZWjSJ>tWz}J=U9Y-MMqFe!3yqJIe z-|g5N#yWsi2h*hyf$2DiiG+FLR^$q`g$y-tlHH$j!YKiKE;nI)rrUrL0b3+Y*dnqT zav&xYVq7?1(WrlP?td3!6(HwU{td4i8A{n_@HrA+h+;sHWW=p7{!i8rKPNd?c%(cI zn~4hLMph@Z9k+_pfm;n08jY*}*D=PbikZNUogjoog(wUJ6kKlM0Ln8aD+}XncKGj- z8qX1i9poYGEe^tMiI?Dz64>OnLKZQJMN?q^b&QDx4`Lj3s;kwBK@M%fZZi;`y~^`o zcd0ebzJL-jHbVsSyNSAiO|eo$t*}C<^GdFF5lMnfkt=}0C>bww+X%gJ8bm$049sw@ zkjF(#xzB@0iZUJ{7(NAn>NwdsG6iZmhIU6?bbAT7dFzV2pPW zfrQF$*mDO^q)5iSv3+wFMnZJsA~I4rE4@w*x#@75gh~4RsQ~EMNOs@gIOg1h;S-od z5%};{6O_(Ux}4Vi=1&Dc$1yiz0x1v=3=Hbn)=(pD0W2#-sRnSc68wkiV)v&4P>Yu> zdna}bcQdd?657YTi{?(o0#Oz&^q>ggmkz%-1%RS)GA8Kd>hjnfgc)FNBp?818)`c- zq6n0D@@@W90E))RwwpJM3nOI57K5se-;uw=CeRbm7KqC6`BMR?j+4&VGzl_MR_3tD zxg)~D%l1*W8bi790|d3^4xlQw^g5!=NGx<7AxS zA8#(g5WIxDlA8x{9k{(YL%3^=AZIm12&=;QKRGT4q(QtMD6@FB2(`h06m*2Sks@SJ zxjg}eaWV$*k1_THhLN2u@@Up*lovq<;Czr z=#q;de7yhURM29ofwQyv6Gh~IjIl3dBfJEg5Uvb3oR?f2E{~8KgEl6vpjQq2pI{s? zaG!Du;GM&4XZin$Kyfn(97XsA6{(Zm(Ek|Y02_&*Rs1K)LWTLxV{i>)Si)gMq(9n7 zj`{!JJ;#LJhY3eAaN$_-{shOnaIhh{p_7?5>o_Ho`~ES;Dq0W|vO$&-5^ex>6iqZ7 zBxI7oEp3F=|1WkmCpd&Lm`q=+wHT$a$YZ{6VLFe5ltQma{hyp;^h{!*Nw_pI4P$@g zb|fknM+BjJB$rvd`aiiO5WvC_%Lq7zGmTk+W(I{GS{bVl~PBB-+Tv0VZyS+;tTIP5LI`)yVh? z<76!BAFnauC07wCqDYi@*A3Js0-sQt9Wc>wKwV2o&4T}UU_xIwH;5Z#@M3kR!~hu! z2zyFdL)@}9SF+pT9}lczZw+FhDF21j0h33#CQiZ=_7WXW-h{$9nXvWG2PUY4w0kN+ z1PRi&;g>~CB)*vpY?5YO>LN~R?Ec3Che@v>nUbt~%1tT19+o1^z;F`^U<86n%8NzD z{JX~~%;n_rg%EX!3&MfxRmmO%S9)RFC~ZohjwLZC3><{LV!R=~fW%zV8f`WV)a1uU zUDGU7lcK*(h}?P}m;2l$^4tWw>*Uh=4@FhX4sQsu}OCvVtvP%6Nw?D|QW^gkY$ zi#|YL0vah4CrQXgj1{5dF69lib8RS$lgXX`cwpRAE=s}>8G)P%bH;y!DUBovl7dl| zIKX5V{1vfQRt#@0X6_qf;?ev2Tt*SF)$JbLKTS_Uc?PJbXY}Y zas{Fc;}5l4yE@smM6fv9fSVKH$Vb>1F?(*#s^CphJ5m8C-65IGLXv?^xxOPXShOA$8)!ovK?L#;DdzRiaqa+c z@1(jzs_#;Ej2Sb4Jr()h%iR}p1zg?;HUUBAbQ~eQ%U0ZXAui14uy~#iQs_?QYONm3P7zvGPy9-cPTqY3=MEU;*KHZI2^L8 zc@fP-Ts*`ifrNo$6$%nb^-nP(dBM%1J8@%ilyJJ?AcGO8DlbThb|tJNjX?Rw7_)OI zGlEkC-!w@cP9zq~P7*6k^Y3EpGl-|Md58>9vN$3RsRt3FfhqB2@jvzcrUDi&8!H*2a`W1Qy`7!Y@n0?)`=#?l8+8C~$co^;@ zQa|EbxRXh>jcZ{#F#*o%#Q_f365=7if!im(g^#!h<6FQ1*KK?YIB-G7w}1mt0P!v0 zfPNF-0uG+oMHZb8I1m#T4+9RKnEBU&QG>_#tCS_uI^w=jLJ+kf;#)WnPbQ0cMUAn{Ggk6?=hphiDb`n@dy6&I*r?}(?Z zN@+qXkME1#iG_{p+zm2B5X6()4K_5z)5-Fa9Q#W$(dArLjb zNufhTReX~|hh)z9CWVeGX5frYL80SHI8TN`2g`l@hYB6)gv2)~bO_v!YvMZ$@9_-^ z9o#GNO$r?&7;t9C!Ao5JtG;$f2hzQ`ZT^tp_5Y#$HLIEV&#-th&Cy7 za_SRAn-n@k^ThQ95GJDd28B-ILGgkPMS$ap>;)Z6cL^VY4ti63=L{Ds;#{r=IrCYe zKzA!F6$e!8BwlKci%g9%^elozJ7;#Upe~Ep<#DNvnPSR}&ONS`X7q8v5G}t&} z%F-oZyTU!@28nA{xW}&6xMqcWO#F#!R=CH+vAAZ1dn_L@u36z8%eabbR=CGA%f&S-++$lOu36z8%OtKI>6l}$D%^aMHB~bQ9ZF7?Co$=T4cQd1&Yjz`6w!o-6Yx-6?*R@DWn<25yVkY{D!D#Z8*hk$TiYi72_8Ar{Xj@cE6m7 zDL&(rqp6K97GCifoS*t=5CTuQ-U`B!St}pCO9)s@0XK-&fnqI`u+dvVn7kjo6@a7al zm{~q&)f5Mby{>ji{89WP$Mkv$Rv|1baEf=3CaI665Ecdl#W$#sslzIS1=CPGgO@Ed zShaBkmsJXA>_NCoNGNuZV+hVcLNN>c&w95YEV;d66lB`!upo>BRc~cx@?KCZ!X5K4 zT$%$2yJH62ORXR*c|RQxHmVJ#cmqlAdMgN1Lqcx_;T%hM&R|N*Bv?R)RS1hc;!y|- z1yJdiRQAw&PzVdbQ|XozMbcpv!a^Vd6z{DDs?gPKw)DQ~aCDujit zRH>7MKkKj{oKvCUQokT<2n|Ikk`y-4djJd4^Ym5_CfZhOrO_!?O=*y%d+MMdO#F=A z3c_T?>8&74(5c=E!UW>ztsqPZ7`+vQN%huSL732Cy%mJj`@Pl^LOCS!fg5=O39VIZ z%A=4-a@xQ_fYf;KA}!QhgF)KmF3`dN+*U+l@MEHkGy-mj6vqH=!q6BSKTp(?KI zpfrAv^8Vy0Aw5!_iqdqHyh{bZRC1mi%Iej#cc@qPV{xi}hu{BTt>!@FaP6c36x1Nu zn?ge5D^p;N(zrxgQdw3#?c*WX)0Gl{Eu6zslMg|CS}Md*mLHc8*%UnaK)Fd$Iw%T3 zV1Q}kg}2-R7$V0#l6(kW#`2Nk%Ih1v#(@_y%&R+IN|ixWQiI(=ieTmrpoWMoQSu?k zZVEvxGRP=lL$UygxYWj_0ylw_DpZI!({cw;L&P?D@*!~8lYtrL;R4c`iC5>f8p=8# ziw3D3N4_^3B6k2aMC@uvJ_I4cJQ2i-MX1ALqw+F!d6*XQ8dS)j)D_vWxdSjn&c&L1 z2=&TGm|~68>G$yr0O9_;^+DbY)Kb-{NhV1Fps`TeE}0gHW5#x3nMY%{RvRd z#A6b;iQkQf+EM_hA!3Xn`4GID$a_6h6QaBXn+Tc_%A#JbqmDRX{8Sf80icG6airu! zn5-;?Xo-pnkg%>Q2fIVK$neBaw2x|K{!{>Jh#2pWAL3F$o){CzQQmR^qk=CfI;s#R z#S48DKVlhqkIYn2wuY&3`x)(1q*qAhC;$Y4;+ZhJ*!A+?f{Hr&(T+M8;QrTU=3a# zWpTlBDEElRkMK&8PpC-{p#*p;01KyNr&n7}Qtrcqal@VMZ2vIt+i+)4^nvmiq^pt5 zoD#so>Hn~C{FG+rX&d6&Nf(CoP??XH-^eK8O(hDFneLPT)=0_ts*V#bII26N&Qd}z zMaA$yY~x)cCv zq#QF{Zaad?B0*lIq*Q`BK$JG13J9-)*~s|fJ%X@}l9ssxSR?&ka0>ItV~8AF7Kw0f z53#tUXF5pU4^eoMlo)Cd<_=&{FWKc3zfQI5HLlYH$Q zOpSDGo{M31sqaoGE|vXK0H{eNy)nh4`~)Am2=e5CS88k$u1*3Dmm6M~X=S zpvKBkGIGa@LVPM%p9Bi^I!#1ToYWsm7!ovWz`^~g04%&xEo+p9gjKs3fN*_-YMjLD zQvi}@{y2mYirO<)DgZTBjxwG*UJ+FTm7rnj0jS#Fa4p_WqZ9`v^m($>Ms#ut01K~V z7k4jJ1k&#hWp?k?GcyCQ9Mvy=Mu||!I#f#VdU)WKn_VRhfIn=GqA^s^LI28um*~q(%!*rMMtSLN~wtjFJ>kFf@+gvPEY(r>7+5h-?g7mG%;MqZt}z*l_s6TYZ8A_Q;$WDCgAH-3Ys^^ za-R4VlP5Ym30}@BD4Y1&V_IzDXQ-SUqU7J9c;X05jyLKj&V!f+8{el((S+MA8Qv~S z8Ks6nl6kr;os^XOq`xWE6x|`|Z=jA5Ij+z6>9BZeLcH{J>0AAG76S$K^1rhp&iEY| z|2q!^WphlY@^?$^XQy3$22mpbN=0%UomH$Y z?vCFFiF0%)94L`+`R~=PjXyp5_X>wt5f(*&#NVxhbjdN1@WX2 z<9l+<_@aMn({hVn?t5$FQf~M1zcW5+)a8F?{G1q7iNC9gI=?xlX)!;y+GFS~m+Rjh zwesX>uSq&!f&@ri<`g)qxGn2XPAw!kMZ-GR)TF)K91Lp?#2Z{5K+Pd1hf@yWv4%h; zy<88T=n$7j(;Mv}#~>=`;I(?71jOZr@LFu>QY==I9#~4;xN)}&Fwu}+Wmv1?v*zH6 zXPi0!o0&-JIIgP$C_?2t6fX(ovlc5S*Fy(jH(PVKWN_B7U^_6PEfOR6-4wqR? zSCuHAr<`DNO0uJ^A&?0!51{B^M2*Dl3#K>h+^uu3thBb}9?T3?Zr&@Po+B$KaZ`J} zeZgwg(#-DR%wU&-MC+*4Xg=rDfjGYM$)KA+?Dy3PjA{YGu%65_AJ+f=TCvF%&kPGW_knj ziN2XV!&&9Z7mRj9VETiBUS?Xk2k+%5lV8XGlEdIKD%u=nZML$&HEmJ5b(K23GctmK z?%mCvY2{jU>YSCv|7Z7|);p_n_l{{9or66xd-TXKdsa$oW%kUX=QMT|CM};MI(%iW zm9%n?m_bLaG*6TRb?p)8)hWvir1i=9LUE=z!t?{Lf;L56PeGnwi~eI*{sVM@NZO?~ z)?fXT(8fj)Z7h;#V{Jtnm#5X%JvIhBfPE6*W}y11%^2UN{;Vzzy-oR_6WStPLTe)kTDfQ9zXgt}U5Raw#ky7E;b^mbm|B~md~8~q^>AZio62q1 z;jr0j>joZ%K0no_QU|sEJW9yb+CVt5%~0KGYtH*jRFO|$bFaidgc0(hb-{*VoA~a<9ulNQdq-!7AbLD-a8d@ zAv;3Dm-=Bih7!k6HTRXHF}^=lXiVn^z*%t(@o?$^M&*#w+9=c_+Q@d&+PEfF1Wv-Y z*tB(?qo$(sH5<`ZN?b|!Ruz@d@UYRQpAXs?MEe%KQu&+{`m>WPuG3Ft-RXN08=c@K zSY4Fz65pSCPg%LZE{Crnq7Iwv6%RXEk^70`^7Mij!{B8- zeJ+$v7h~WZ7h`y==+eY7C@d%FLP0<=2K7b67?gF^&pCbrC9EfofkR5$2R5?&1dmWJ z#)xm>SMpn*QmzxmKyXrFUs{_L{G+w;M3aCcrC)E0#<3@UixEbAi{n{-ODS5tKf-&( z{5a_P`f`UV#XoUe&ZU4O) zuO)4Qx8p}r#yD*Z%P6L|DRoP0qil%Q25V9}bOIcqPGXPKCiV+vCb4&kuod?zH>fgb zB#uFVlD_8Z+R|x2fR*4mv?&9T)*n)#XtRv68k|+&Kx;FUaan7VcP(1BID@J>uEfL2 zEY$kL0jQ6`{UPum&s*Su_@b{RuWzbwrNl9)QzGUR;m01+z68pcbNmZN#9r2TRR$V9DZ?!QomE|XC9;w zbY?q?`@@M~r;kfSrI688tx5?eX+T20xCdde%Ko1~1GFu14{|!h9-;uJkc*+IoHIco z+Ik>2Syg}H$EEy{^`cE;o2pl+&5sacafebMRP1}A8HCKwwrJ`%HUbST z<8Wdd3|c$Cz*)sl;^Ej=E^$7{MiyX_I#VdFFy=Q&&b`59;p}T;UakcuoQPoe- zlop|D5Kbgy0re<~e#i5Kv5!o*s#`&1S~!kl>kSK!NaF4l+_&&6EeVB$_8BTeip zOq&8FAG zPIQFqkD4eF&WcD+#DjX5`hIconw8EY(1gUk;);@VrtX7&wy*;W8!|z_`nZT;LVm$3 zE9{BDN!ua8rQ(iKfhzi3tS7THno{OO;6})h3X)Ht72HqA=)AzAa(xouAeFGkB8mzf zmO_leZo$hNf>xNIgbad7OYA>olF{b^S%m#r1q|wRLG~813h_lkX241)=ST8_zSpSf zC&%D!6!Y_1)oT;zNAibQH|{85zjCwhwf;Dj!hVX-j!{2xjewIf2zQFEi`(3sBS9Dr5nS^(s3yfqvXkD(69KgOiIk z-X)i9LWf{}g1?YIDePfbmgJpGK`${E&WxCg!9$JuTrho!`H`z8zjX_lhEE0kxK|~< z@3C~14 z*jRdhm^O7=GlGE7k1#el1wT+CwLWLsguR{O-eS!?YFAXoPb)Gj-}=Yyi2N#^fa2BPzZ{W)*GNpT+zT&SZa9{#W9-$gDbFQ|=l440H-OPAaV&C1-HJixlzen*e%#q!dA*{nPh&3?ys=n zQ%^EKkFbwZ2QbO}5DIlX94HKlZOBs6KJG<{5Hvs;*ZCwmgpgU;X+l;Z=S$c-X%n)F zI)Y-qFhgxz7&amMiFi<8!^#DXUpMujmynf}olwvPQ-OZ>P|#P{eYjS|IU*!M@Li}Z z?q5}wUEkv>qe7=M-T<*TRMBmnui;@4{vN8|3%!ms=Hcn2*Hg!ha*$R<$ao&hTtpmzYSZ@%ZC16%#BT}V)aJ|p!ahWsN0ASTkDHle>UXDiVru|J&UVvRUk z8ZYKsthtF}5RWP3b`1X*r4!+3Lje(O!UqJLhy~PI&K=AOXrF7 zCv14&Ydwn)|1DCERf8qI4XN0AGy)#FFK!O3`~HcKjDu8&Psnuq=B?;s#>)AokyF{ z5mlSSgU}Rx|EX*iK~wmezW<<~Zr|YiN*chz#QIXHQsyclq3a(iyi=TWOzSFHByrBLcKvKAHm=hY=|$X8xCeD# zCG|;>g7q)3NlO;}u}FFw0;<4`3?4BT)Kx)K4xuJn5Ku03 zE7d0FOes!%uPM{DJ}%*>x<5r#z|?INy!asE1$a1B_@ijEYMmymr3(k9J{R1af_GxY z)aQ)j7$=KHQy#7nbRk+^*W=lw)|&=c?U9aU^0wlz@!f#4ahp@TP<`R4o(}OsdDyBo=kwmWJ=@DK3Ak-Nyrq2)4roM-i z3M<-@oPE4oy1$Gu2$&aR2)ixit$E#DgHx|z>h!}CD9$vRxR^7$K=2$a=3;%hK6LvF zSBmiQaX#cepnjp?8~DYAJcN%~$RM~^#r?*))b$hsB}FU~r^9+WDPi9e5-8|G1hW{I z(vxyuDJ52;JuxxjPR6_|V&9_;iZeqLkFM7eE-&I#X-h&EgaMs*D%Y6KpIHyF zpH=w1etyyHb-j@=easXZ4e)A+HNuLd`!x`AgzcI(tGr*r8u3=7?kiFvlI}C4&3XVL z;ahBng2(zGs+coAG(jtfAZUQPFTTZWCflT}N5M+DzPRM%x5D0}&XG8)yrQk^zl7h5 zxD4(dkuQXBZ@pZRKr1|-y8VT3g?&=pZ}Q9#x~20(?l&O|V2#juv9eeS*^!82-L8l6 zD%rSJ5_$q2sLtZ7(x%(`Fjxw^H)BY-9raxBCfq_o?t~=@y_={Yu{RJI1kXmo6g(S_ zE$KoqlTK%0aDha5ceqIc>U6iP;JJE^XFp6^V2venaPf#FFT`xRS!ed2{1C z5#O?h^fO5DH`zw`xV+ym5NUjfJ5T7f#8&9Ga8)r*w_h=5>lwfVe38s_yF9xTuZTV_ zYKnfQxogFG5CJLf5AI*VbMRIO-GEY$x~&gMS;Q%zsrke{h9z+v&G8S`jX1JsD z_&>(LFr}?8tW(@622M?V?{aSmnHo!muoV!>By=HV0uXx$XPbU^<4P4WCT0e~OH?SQ z#6!g8DlJ~e7yc}HERvMqr>K`gK2YTg_4C2?A@D%e6?kxW3pgzB`u)LyA=_SCBTQ9- zH*qY59Krm=K2;$_y8es0C2&($p1$ThA}8zuw26JC)ImWP;%G%1MY!~RKop~p;Rpp2 z{15F-(2q8uS1A9!ey2cFafjl!688t54#EGhmN2e;z4{ zBEO6_f(Z0|fICk=Gngm@Pvm_xaenbj3K}SrpuR@=&#Xg1Fu#PWc zr@$9QRJ3u0YImqgNf-Kux-NBoMNvF)E|K_!OpT9Emwn*uBBmE(o$y)HCj9JtEAse& z0@MYFG(HoRJ-0r7ru>Kn>kQy3oeP(%YyZCE=|1iM6?i`YM=}+4y>Y#A9l7R`0s% z=YzS3eE^)$8%eMewpZZL{`7Hiv1of-eXIK*Y2%lc=eGOFol!Uor;8b_JY}>+lHM^cW?^5Ox9DM1Hd3B)Z^&bI_FXmkc&{hlEaUieP11c`f#h!_ND(Vxga=UX9j(I)9fn=T`f`5@$R+N?)v z6X?f=*7+nH!l~y}D?D`F4>;jBpv`)$HgOC@d7U2+Vk6Ea{vJ6O?gf2)RgnPwe4wo9 zIs|2aM2;eDIR13n69%uJEg~0motSSiXlvhcXvE%NBj~&Y3!cdTP;I)7O%qH)AA`jd z^iv7hIvg$s9XHG>y6#N$hTP+-hJj84Rl`81J@o)|+YR@Y>`#Ru>vKkv)a}pgE343G z!hRu}SnyNAzQnoY6>44fCZLTd5sfbFX5ChxG9&doQrbwl65n$1>uuyn=(HzdDx&{#`hXQ0h`Gd+HdFt=Op z+{d>eJqx=$ZM>GK%^53$ZevueMEA!#&}zk<$MT9jPH6{muR;OYh7UvE8(5!(tiqRK z{}EE8$K0uRA9SAsZSp>6E)owViD`7T#h038s1BB zE~%y<*Mn8k_atv}$#02;6}U-z1O`jV+aZ-)H{4PBd1HBn980LZSYK{DJvJ1XTG-7L z1>`=J@zhX2?t3f>x}5>WPLP*Qd+ckXO&Mx*IKn~1x}k6BXCJ?YZucS4L-^HbL$K4w zAP`=RL2S2#BO6}-7MGWp3+k$D6S-AnT8cb0XrJU9VN=j(h1nKiRGW*J%S^Q4DAD&R z_6=QMMK2S!DpkE-$kez$guKQ{74jcie?q^+`X_SJl#VUvOjNFJ%jH|V?-~sV zTN3+#>qzWB^iW+6Q)N2Do###>Ct~6jvJd6Mg`ABnpvOQGKq`C$>YfpD4%yQ})?;S~ z-Gv9%bbA>6iJU2QZ|Qz3RSHDE2Wb;|9V#kZ|CW#)5vRo%QWgaZAs?W}3wf6iAhFj_ z4FtbJJkZaA;$dRn6OF0k2At&C;3i}XC?M_%Mi4R_H?3~tQTM)X*P~6;X+yG==N$P! zj}-z=)EC93AbFiCAEEOwg9}9C8_FIb@gT8HKSx+G#XXHlMx0CB)8d}SR3&s`{4=_( z4|U6WW;8)=LUj>$p7KrTd<{5#e(*#>5Hx;(C0zGkqSA@_3`+GA{0h&Q*r&8583SQn zj4Se(xi6*eq8<^`?+Q#t;>@VD9i5MpYyHbPT-s1*|b@&swS*2=~i;TAj9c<7jL|*vTSXQb^7vZzG9DWRMqWH;%*Rog!$Nl^KTp^X2zwRh4VR7XLu2zv zeVWQjV!yD}qE{Ep zys!^p`j>ly@B{HJkD-Y<`$V20uYXDV71zGlS1J@+#}}`pkj>OUgjm0$*-Hfg9FNAzxu8)a5_SdZNY*Z6fD~Hn}&{6J`=OyieNRz>FmEm37oH1>x+~ zzr`3N+6dIr*AkD7&^eXAOstW5v{4@eML_f?>zWd#|NjcRcUHZwBaGwy`4nngJBc01 z0wa)Y3sMD~GNf=JgTX|gs0jJ=`HiZa=l?>wbB49wy)Lun^2}wY$Kb(NYY)-MhVDBq zP#l_|dT1h(OM8IVi3Y?sIQV|$8l*XLT>LF}P+TqgNKCH#0$W;)@mM@_Zobs@aqamw zH^p~S(>vO;$`!INiOm|9{9UvM_oFp?1_|swf5$~l*C)9yFJRuA2@qv?=gqQ zK0U44y<*#DZ4B+qMTj8p01oFJoVq+K5ic~YHCIkDY5HFNV4vlz?Ro(X*;7tQo|TZ9 z_fo&h_tG*tXCiFuNj7zQd;lz~r-g+&Xa42RSy{~bx_+-`>8;W6LYk4CaOIqv>ea<* zuuyU)yf-;Y#>Ef4aqEYoC02wMtPd@DbFOM?poyIHND(Se4Ipt)`%0-tWQmx~+WaRX zA}6ozZh6g_M{amFI!_gT&4|NY0+QrdZ3*5dFnGi2LNB5C@g_-W!=C zd!uvtruG43Bs{JLCN`lOo%O{fvMZ;UJMG!nIp(r)2ppc8VCf90xAKk$`wRqKTYzL* zT)^)o|Ji#}`+BsE&%hm1zx9o{OLUZ*8rj5(josv?M((P2iLH0>Xt4)#A@HB? zJ-KH0pVLIuf{)W$sVleM#FK$xsm(a-HTJW(OLPFu7`dk9d}Q_&XJow>7}|BTrpsJ_ zWIN8m<=JE29S7528Nu^gtVM=(YPs!cFrLdkSbXwm4}P!rNIK2tWq3AqhG>-~7cyLZ zqy}|kf%j~Dp=)Ef`(h6stRwMhzZZ;$L+8rPKC8Bmj8%8C@gBcd+w9z^oDmtZ{34dH z_~d25M`p{o3r})g7BeR$HPG30To5C)#%!!N_Pv^wjiqYFQ=c8|U7o}nIU{GDeR&{@ zd8QkWm)esWEVSg%A8qk*wEFwp-<*-ukLV-N`sS-xMEdNYb$)RE@b2{!Tv-Qh-&pj0 z9%6H1yd!xTGU!tqc^QG5SLIoZI((pFAZK)tV8&5-du|s$T7N;W$;bnH8hwsSb62e` z_VbnZWG>D7Vw9xMll3NF1ttBP&{F4$mY#r&SRd)z{gW=W`ut)sp-BW-*{+T%It3p@ zr--`rJRaap`at%KT6<`1ZtJeYi$fz6bLRZ0@Ge|nXHXl9 z#TOUfifs!~h`mOeM;6m$@jou5ZT5=2798$!FE=J~w3V?os3QFPR`t(be{*~AEr z7Q0DXrU%a^Ur!VIVw)E>?R%5g=h^h2LsJ+%cT0G+XMT;lcN}PG?;yy0V^4%`VwLwr zmDnmwhS=?5S)Gf^6<)hbxbtg%qE;%2-EqKDOM#X;8?^LaLyIf{Ag6BPz6jDYVv3GF zGA?zlJc!`H=T)qpK~v!Kd=Joqy;6+%j@V^_?Y%^ct%8=A!&Uh&R*IJ1N@)288Cr6L zea4PZ+;zBbbEl1qzls(c*nJD{UR#{yHMHb2cs9BbEw+zmgO%R6)wRYkoSv_Z%mHLR zrvXLt?G+g(wtvQfC^pVc@z5YM4y|(mJI?*}-uNF^A-4KbU@>^2XDk2E*0wM%@kYOw zoR}MzIlBofJB>@+!0$;e+dUAP?RtZkc(!-&YU1)N*Llv;ToV6q9*G^JC4U?({e18D zR>m5a8pY$GJ9^k(LT51N+9{e7^XJrmiyf(isPY{G%heW8X%`5VI5{R;12^`@epIKSGpzLIA zc|s`o-*t3ae-JIPB2akz1+;vh7%llt_{G7^9=OptOV@m{fyO*MI{Zj|D+eywpX$o?MFJL^5r za>u=tG!YuZGqmK7UpagDPqb|D2)mM)oM%(#dSykiX)Xa~*Kvs+yIzSI>!%2bB>xYs zG7MCZ^I(o=ufSo8`zUAtL(N`+8P=aMF1@7C()$iAwWYxJ#GWp+lRG1_7=3xc^5r#< z$HtWWUN9{PRQj+SD%G{A?HfP9I8le)7X^vSYaU&!kKl|?j20gjE#K-!tB$8Fy9ejg z?fhWZ%l8+^$^OY@-+LrNu)fB9fp+7jXvsglFk)mj%Q5!aC0Va*2iL{t6gcSl3NYjz ziQV=0(y!%0mA#jZ-5HnoD%ziWzDhi^r@+_TBfj6B$AujB*}Ld{)=ir8y>zZTds=zM zUH`;=RvKvJE>>I2(y;WoyGQ%p=Dh+G(q{}Uxu$5z??iJTyN>&)?b3wHmJeKy?m_D& zZn+!tLaU#L`(khCs}b9q8Vv7>3Fj=ugkz73p)K}xrNg4vL+eLAgXMF7SxxZ+a9U&&^B}evwpy$ds|Axms~-=|iG6i_FIPV6QyCxe zQeD>W6hGhG!K>ETxD{IZfK%M*(TK(wn!Q)y6g%faiz_2UaU$zPIyO(ib<6h%uGMMy zMVfi{K%!gT3){?`ukrb=1Max@@_H;}PcI{GpQQ-%UP`6UD)i5@scE=Ytg+#UoZKxP z8-jU=V#ik##fje|Hz4{$@6W|Dh_&G8Xvr5vV<7C>l!vbTJ2AQXO*LZoN(z1UnMs{@ z=s%wGy=eZJ2g%>S%33sAzPk)Pp&P^R|*7hBwM&zG-mH45ajZ9S2+Bvu9<3)})Hinkm6tv<<5X+6RoZ8QQ zgW7f-0W=rmUH(gduecBMDn5ith1ej_h}dDYM|=pdS#*V)75OLo zK6aRN{_rH0j9w+`a&9b|=vCQ18;`#dtc~w$E+si{c;jlDS8jknqc7D|M+Ydmh@I^k z#m*+4qX&ftbKk&@UE5i4JLl$pFpFzr3afQ(46N*da9Q@ihtfN)*frBTw&SJsfxO~Hd)s+4bXvMf$SMd!@r7}l7UDhTrp0x>!cO0#}JgE&|)^^P>XB@SVbK@E0 z+_+`2OK^BF8Qx_u8C9u~r>YVnPjO4uCe<{$ThuCRqsqEArtd>-R^7XQ|emjKA-nfgBi|BaQZRhOSlOzOSUpojQEujQHV{z1p1E3QrD?jK7u{-7MC=s_rJ^q_pH zuB|<48QHoL4gbjjijF7Nq6e?;J#)6)DYWM(P5?&L+SQ`_H84QKH644Otc$T%7XEjI)O~&ZbF6$|@ug4;=0DEu*kUJe+Qo~{^!#_$8`VCFfi&+O2+WZI(tXXHAa^KK``*=37MYP~P zXo)QfWhK6f#&O*D`kq|oLi{b?^Hw*mapAJXePl-@5A?eKt-XuZyut4YZDa7c}O!4uQ3@q&ZKuP@;k$m z(*H7NCUAHI{uds4mAX5-lJ6hgPOblemfje0W@EQ&87#wT*8vmU_3F#Mc%5gfr)i$Z zKMjo{|5)uCixFb3j^h5tRuP?vjJU=<%e$J)#7?}=2Ccoplid6g-eu}y(2{S9mfR?< zkCPjPR(tK5hAa=UfIr|pz z^1ZyY-2Ll2vv*Zq+G16jbLE>G*A1_0&I&e9Xtn3=IgGFAHR1H;v2if_mj)J zf`K^?fwjF`!lB($xOevSir8j;yxRCP4|*ia*25n2EblV1=}Lz)4v4b*!hBgjF3i9EXWAV$ksp69o=9$IpbNayVR(e^CSQm2mg z?E5pHKmGFC?;k!regFN_*MIx%KObJO6<$4k{qx6 c|N8vPr_cZX^x@YhljGn#ef8B(e|`V-UrDn)=>Px# literal 0 HcmV?d00001 diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/ctb.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/ctb.py new file mode 100644 index 0000000000..6b541ffe39 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/ctb.py @@ -0,0 +1,455 @@ +import wxctb, sys, re + +DCD = wxctb.LinestateDcd +CTS = wxctb.LinestateCts +DSR = wxctb.LinestateDsr +DTR = wxctb.LinestateDtr +RING = wxctb.LinestateRing +RTS = wxctb.LinestateRts +NULL = wxctb.LinestateNull + +def abstract(): + import inspect + caller = inspect.getouterframes(inspect.currentframe())[1][3] + raise NotImplementedError(caller + ' must be implemented in subclass') + +class IOBase: + def __init__(self): + self.device = None + # set timeout to 1000ms (the default) + self.timeout = 1000 + + def __del__(self): + pass + + def Close(self): + if self.device: + self.device.Close() + + def GetTimeout(self): + """ + Returns the internal timeout value in milliseconds + """ + return self.timeout + + def Ioctl(self,cmd,arg): + if self.device: + self.device.Ioctl(cmd,arg) + + def Open(self): + abstract() + + def PutBack(self,char): + return self.device.PutBack(char) + + def Read(self,length): + """ + Try to read the given count of data (length) and returns the + successfully readed number of data. The function never blocks. + For example: + readed = dev.Read(100) + """ + buf = "\x00"*(length+1) + rd = self.device.Read(buf,length) + return buf[0:rd] + + def ReadBinary(self,eos="\n"): + """ + Special SCPI command. Read the next data coded as a SCPI + binary format. + A binary data transfer will be startet by '#'. The next byte + tells the count of bytes for the binary length header, + following by the length bytes. After these the data begins. + For example: + #500004xxxx + The header length covers 5 Byte, the length of the binary + data is 4 (x means the binary data bytes) + """ + try: + eoslen = len(eos) + b=self.Readv(2) + if len(b) == 2: + hl = int(b[1]) + b = self.Readv(hl) + if len(b) == hl: + dl = int(b) + # don't left over the eos string or character in the + # device input buffer + data = self.Readv(dl+eoslen) + # check, if the binary data block is complete + if data[dl] == '#': + # not complete, another block is following + for c in data[dl:dl+eoslen]: + self.PutBack(c) + + data = data[:dl] + self.ReadBinary() + return data + except: + pass + return '' + + def ReadUntilEOS(self,eos="\n",quota=0): + """ + ReadUntilEOS(eosString=\"\\n\",timeout=1000) + Reads data until the given eos string was received (default is + the linefeed character (0x0a) or the internal timeout + (default 1000ms) was reached. + ReadUntilEOS returns the result as the following tuple: + ['received string',state,readedBytes] + If a timeout occurred, state is 0, otherwise 1 + """ + return self.device.ReadUntilEOS("",0,eos,self.timeout,quota) + + def Readv(self,length): + """ + Try to read the given count of data. Readv blocks until all data + was readed successfully or the internal timeout, set with the + class member function SetTimeout(timeout), was reached. + Returns the readed data. + """ + buf = "\x00"*length + rd = self.device.Readv(buf,length,self.timeout) + return buf[0:rd] + + def ResetBus(self): + """ + If the underlaying interface needs some special reset operations + (for instance the GPIB distinguish between a normal device reset + and a special bus reset), you can put some code here) + """ + pass + + def SetTimeout(self,timeout): + """ + Set the internal timeout value in milliseconds for all blocked + operations like ReadUntilEOS, Readv and Writev. + """ + self.timeout = timeout + + def Write(self,string): + """ + Writes the given string to the device and returns immediately. + Write returns the number of data bytes successfully written or a + negativ number if an error occured. For some circumstances, not + the complete string was written. + So you have to verify the return value to check this out. + """ + return self.device.Write(string,len(string)) + + def Writev(self,string): + """ + Writes the given string to the device. The function blocks until + the complete string was written or the internal timeout, set with + SetTimeout(timeout), was reached. + Writev returns the number of data successfully written or a + negativ value, if an errors occurred. + """ + return self.device.Writev(string,len(string),self.timeout) + +class SerialPort(IOBase): + def __init__(self): + IOBase.__init__(self) + + def __del__(self): + self.Close() + + def ChangeLineState(self,lineState): + """ + Change (toggle) the state of each the lines given in the + linestate parameter. Possible values are DTR and/or RTS. + For example to toggle the RTS line only: + dev.ChangeLineState(RTS) + """ + self.device.ChangeLineState(lineState) + + def ClrLineState(self,lineState): + """ + Clear the lines given in the linestate parameter. Possible + values are DTR and/or RTS. For example to clear only + the RTS line: + dev.ClrLineState(RTS) + """ + self.device.ClrLineState(lineState) + + def GetAvailableBytes(self): + """ + Returns the available bytes in the input queue of the serial + driver. + """ + n = wxctb.new_intp() + wxctb.intp_assign(n, 0) + self.device.Ioctl(wxctb.CTB_SER_GETINQUE,n) + return wxctb.intp_value(n) + + def GetCommErrors(self): + """ + Get the internal communication errors like breaks, framing, + parity or overrun errors. + Returns the count of each error as a tuple like this: + (b,f,o,p) = dev.GetCommErrors() + b: breaks, f: framing errors, o: overruns, p: parity errors + """ + einfo = wxctb.SerialPort_EINFO() + self.device.Ioctl(wxctb.CTB_SER_GETEINFO,einfo) + return einfo.brk,einfo.frame,einfo.overrun,einfo.parity + + def GetLineState(self): + """ + Returns the current linestates of the CTS, DCD, DSR and RING + signal line as an integer value with the appropriate bits or + -1 on error. + For example: + lines = dev.GetLineState() + if lines & CTS: + print \"CTS is on\" + """ + return self.device.GetLineState() + + def Open(self,devname,baudrate,protocol='8N1',handshake='no_handshake'): + """ + Open the device devname with the given baudrate, the protocol + like '8N1' (default) and the use of the handshake [no_handshake + (default), rtscts or xonxoff] + For example: + At Linux: + dev = SerialPort() + dev.Open(\"/dev/ttyS0\",115200) + or with a datalen of 7 bits, even parity, 2 stopbits and rts/cts + handshake: + dev.Open(\"/dev/ttyS0\",115200,'7E2',True) + At Windows: + dev = SerialPort() + dev.Open(\"COM1\",115200) + dev.Open(\"COM1\",115200,'7E2',True) + Returns the handle on success or a negativ value on failure. + """ + # the following parity values are valid: + # N:None, O:Odd, E:Even, M:Mark, S:Space + parity = {'N':0,'O':1,'E':2,'M':3,'S':4} + # the regular expression ensures a valid value for the datalen + # (5...8 bit) and the count of stopbits (1,2) + reg=re.compile(r"(?P[8765])"r"(?P

[NOEMS])"r"(?P[12])") + self.device = wxctb.SerialPort() + dcs = wxctb.SerialPort_DCS() + dcs.baud = baudrate + res = reg.search(protocol) + # handle the given protocol + if res: + dcs.wordlen = int(res.group('w')) + dcs.stopbits = int(res.group('s')) + dcs.parity = parity[res.group('p')] + # valid handshake are no one, rts/cts or xon/xoff + if handshake == 'rtscts': + dcs.rtscts = True + elif handshake == 'xonxoff': + dcs.xonxoff = True + + return self.device.Open(devname,dcs) + + def Reset(self): + """ + Send a break for 0.25s. + """ + self.device.SendBreak(0) + + def SetBaudrate(self,baudrate): + """ + Set the baudrate for the device. + """ + self.device.SetBaudrate(baudrate) + + def SetLineState(self,lineState): + """ + Set the lines given in the linestate parameter. Possible + values are DTR and/or RTS. For example to set both: + dev.SetLineState( DTR | RTS) + """ + self.device.SetLineState(lineState) + + def SetParityBit(self,parity): + """ + Set the parity bit explicitly to 0 or 1. Use this function, if + you would like to simulate a 9 bit wordlen at what the ninth bit + was represented by the parity bit value. For example: + dev.SetParityBit( 0 ) + dev.Write('some data sent with parity 0') + dev.SetParityBit( 1 ) + dev.Write('another sequence with parity 1') + """ + return self.device.SetParityBit( parity ) + +class GpibDevice(IOBase): + """ + GPIB class + """ + def __init__(self): + IOBase.__init__(self) + + def __del__(self): + self.Close() + + def FindListeners(self,board = 0): + """ + Returns the address of the connected devices as a list. + If no device is listening, the list is empty. If an error + occurs an IOError exception raised. For example: + g = GPIB() + listeners = g.FindListeners() + """ + listeners = wxctb.GPIB_x_FindListeners(board) + if listeners < 0: + raise IOError("GPIB board error") + result = [] + for i in range(1,31): + if listeners & (1 << i): + result.append(i) + return result + + def GetEosChar(self): + """ + Get the internal EOS termination character (see SetEosChar). + For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosChar() + """ + eos = wxctb.new_intp() + wxctb.intp_assign(eos, 0) + self.device.Ioctl(wxctb.CTB_GPIB_GET_EOS_CHAR,eos) + return wxctb.intp_value(eos) + + def GetEosMode(self): + """ + Get the internal EOS mode (see SetEosMode). + For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosMode() + """ + mode = wxctb.new_intp() + wxctb.intp_assign(mode, 0) + self.device.Ioctl(wxctb.CTB_GPIB_GET_EOS_MODE,mode) + return wxctb.intp_value(mode) + + def GetError(self): + errorString = " "*256 + self.device.GetError(errorString,256) + return errorString + + def GetSTB(self): + """ + Returns the value of the internal GPIB status byte register. + """ + stb = wxctb.new_intp() + wxctb.intp_assign(stb, 0) + self.device.Ioctl(wxctb.CTB_GPIB_GETRSP,stb) + return wxctb.intp_value(stb) + + # This is only for internal usage!!! + def Ibrd(self,length): + buf = "\x00"*length + state = self.device.Ibrd(buf,length) + return state,buf + + # This is only for internal usage!!! + def Ibwrt(self,string): + return self.device.Ibwrt(string,len(string)) + + def Open(self,devname,adr,eosChar=10,eosMode=0x08|0x04): + """ + Open(gpibdevice,address,eosChar,eosMode) + Opens a connected device at the GPIB bus. gpibdevice means the + controller, (mostly \"gpib1\"), address the address of the desired + device in the range 1...31. The eosChar defines the EOS character + (default is linefeed), eosMode may be a combination of bits ORed + together. The following bits can be used: + 0x04: Terminate read when EOS is detected. + 0x08: Set EOI (End or identify line) with EOS on write function + 0x10: Compare all 8 bits of EOS byte rather than low 7 bits + (all read and write functions). Default is 0x12 + For example: + dev = GPIB() + dev.Open(\"gpib1\",17) + Opens the device with the address 17, linefeed as EOS (default) + and eos mode with 0x04 and 0x08. + Open returns >= 0 or a negativ value, if something going wrong. + """ + self.device = wxctb.GpibDevice() + dcs = wxctb.Gpib_DCS() + dcs.m_address1 = adr + dcs.m_eosChar = eosChar + dcs.m_eosMode = eosMode + result = self.device.Open(devname,dcs) + return result + + def Reset(self): + """ + Resets the connected device. In the GPIB definition, the device + should be reset to it's initial state, so you can restart a + formely lost communication. + """ + self.device.Ioctl(wxctb.CTB_RESET,None) + + def ResetBus(self): + """ + The command asserts the GPIB interface clear (IFC) line for + ast least 100us if the GPIB board is the system controller. + This initializes the GPIB and makes the interface CIC and + active controller with ATN asserted. + Note! The IFC signal resets only the GPIB interface functions + of the bus devices and not the internal device functions. + For a device reset you should use the Reset() command above. + """ + self.device.Ioctl(wxctb.CTB_GPIB_RESET_BUS,None) + + def SetEosChar(self,eos): + """ + Configure the end-of-string (EOS) termination character. + Note! Defining an EOS byte does not cause the driver to + automatically send that byte at the end of write I/O + operations. The application is responsible for placing the + EOS byte at the end of the data strings that it defines. + (National Instruments NI-488.2M Function Reference Manual) + For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosChar(0x10) + """ + intp = wxctb.new_intp() + wxctb.intp_assign(intp, eos) + return self.device.Ioctl(wxctb.CTB_GPIB_SET_EOS_CHAR,intp) + + def SetEosMode(self,mode): + """ + Set the EOS mode (handling).m_eosMode may be a combination + of bits ORed together. The following bits can be used: + 0x04: Terminate read when EOS is detected. + 0x08: Set EOI (End or identify line) with EOS on write function + 0x10: Compare all 8 bits of EOS byte rather than low 7 bits + (all read and write functions). For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosMode(0x04 | 0x08) + """ + intp = wxctb.new_intp() + wxctb.intp_assign(intp, mode) + return self.device.Ioctl(wxctb.CTB_GPIB_SET_EOS_MODE,intp) + +def GetKey(): + """ + Returns the current pressed key or '\0', if no key is pressed. + You can simply create a query loop with: + while GetKey() == '\0': + ... make some stuff ... + + """ + return wxctb.GetKey() + +def GetVersion(): + """ + Returns the version of the ctb python module. The numbering + has the following format: x.y.z + x.y means the version of the underlaying ctb lib, z the version + of the python port. + """ + return "0.16" diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/wxctb.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/wxctb.py new file mode 100644 index 0000000000..f9e0d2ee6e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/module/linux/wxctb.py @@ -0,0 +1,264 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 1.3.40 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info +if version_info >= (2,6,0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_wxctb', [dirname(__file__)]) + except ImportError: + import _wxctb + return _wxctb + if fp is not None: + try: + _mod = imp.load_module('_wxctb', fp, pathname, description) + finally: + fp.close() + return _mod + _wxctb = swig_import_helper() + del swig_import_helper +else: + import _wxctb +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,0) + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + raise AttributeError(name) + +def _swig_repr(self): + try: strthis = "proxy of " + self.this.__repr__() + except: strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object : pass + _newclass = 0 + + +def _swig_setattr_nondynamic_method(set): + def set_attr(self,name,value): + if (name == "thisown"): return self.this.own(value) + if hasattr(self,name) or (name == "this"): + set(self,name,value) + else: + raise AttributeError("You cannot add attributes to %s" % self) + return set_attr + + + +def new_intp(): + return _wxctb.new_intp() +new_intp = _wxctb.new_intp + +def copy_intp(*args, **kwargs): + return _wxctb.copy_intp(*args, **kwargs) +copy_intp = _wxctb.copy_intp + +def delete_intp(*args, **kwargs): + return _wxctb.delete_intp(*args, **kwargs) +delete_intp = _wxctb.delete_intp + +def intp_assign(*args, **kwargs): + return _wxctb.intp_assign(*args, **kwargs) +intp_assign = _wxctb.intp_assign + +def intp_value(*args, **kwargs): + return _wxctb.intp_value(*args, **kwargs) +intp_value = _wxctb.intp_value +class timer_control(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined") + __repr__ = _swig_repr + usecs = _swig_property(_wxctb.timer_control_usecs_get, _wxctb.timer_control_usecs_set) + exitflag = _swig_property(_wxctb.timer_control_exitflag_get, _wxctb.timer_control_exitflag_set) + exitfnc = _swig_property(_wxctb.timer_control_exitfnc_get, _wxctb.timer_control_exitfnc_set) +timer_control_swigregister = _wxctb.timer_control_swigregister +timer_control_swigregister(timer_control) + +class Timer(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + def __init__(self, *args, **kwargs): + this = _wxctb.new_Timer(*args, **kwargs) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_Timer + __del__ = lambda self : None; + def start(self): return _wxctb.Timer_start(self) + def stop(self): return _wxctb.Timer_stop(self) +Timer_swigregister = _wxctb.Timer_swigregister +Timer_swigregister(Timer) + + +def sleepms(*args, **kwargs): + return _wxctb.sleepms(*args, **kwargs) +sleepms = _wxctb.sleepms +CTB_RESET = _wxctb.CTB_RESET +class IOBase(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _wxctb.delete_IOBase + __del__ = lambda self : None; + def ClassName(self): return _wxctb.IOBase_ClassName(self) + def Close(self): return _wxctb.IOBase_Close(self) + def Ioctl(self, *args, **kwargs): return _wxctb.IOBase_Ioctl(self, *args, **kwargs) + def IsOpen(self): return _wxctb.IOBase_IsOpen(self) + def Open(self, *args, **kwargs): return _wxctb.IOBase_Open(self, *args, **kwargs) + def PutBack(self, *args, **kwargs): return _wxctb.IOBase_PutBack(self, *args, **kwargs) + def Read(self, *args, **kwargs): return _wxctb.IOBase_Read(self, *args, **kwargs) + def ReadUntilEOS(self, *args, **kwargs): return _wxctb.IOBase_ReadUntilEOS(self, *args, **kwargs) + def Readv(self, *args, **kwargs): return _wxctb.IOBase_Readv(self, *args, **kwargs) + def Write(self, *args, **kwargs): return _wxctb.IOBase_Write(self, *args, **kwargs) + def Writev(self, *args, **kwargs): return _wxctb.IOBase_Writev(self, *args, **kwargs) +IOBase_swigregister = _wxctb.IOBase_swigregister +IOBase_swigregister(IOBase) + +ParityNone = _wxctb.ParityNone +ParityOdd = _wxctb.ParityOdd +ParityEven = _wxctb.ParityEven +ParityMark = _wxctb.ParityMark +ParitySpace = _wxctb.ParitySpace +LinestateDcd = _wxctb.LinestateDcd +LinestateCts = _wxctb.LinestateCts +LinestateDsr = _wxctb.LinestateDsr +LinestateDtr = _wxctb.LinestateDtr +LinestateRing = _wxctb.LinestateRing +LinestateRts = _wxctb.LinestateRts +LinestateNull = _wxctb.LinestateNull +class SerialPort_DCS(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + baud = _swig_property(_wxctb.SerialPort_DCS_baud_get, _wxctb.SerialPort_DCS_baud_set) + parity = _swig_property(_wxctb.SerialPort_DCS_parity_get, _wxctb.SerialPort_DCS_parity_set) + wordlen = _swig_property(_wxctb.SerialPort_DCS_wordlen_get, _wxctb.SerialPort_DCS_wordlen_set) + stopbits = _swig_property(_wxctb.SerialPort_DCS_stopbits_get, _wxctb.SerialPort_DCS_stopbits_set) + rtscts = _swig_property(_wxctb.SerialPort_DCS_rtscts_get, _wxctb.SerialPort_DCS_rtscts_set) + xonxoff = _swig_property(_wxctb.SerialPort_DCS_xonxoff_get, _wxctb.SerialPort_DCS_xonxoff_set) + buf = _swig_property(_wxctb.SerialPort_DCS_buf_get, _wxctb.SerialPort_DCS_buf_set) + def __init__(self): + this = _wxctb.new_SerialPort_DCS() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_SerialPort_DCS + __del__ = lambda self : None; + def GetSettings(self): return _wxctb.SerialPort_DCS_GetSettings(self) +SerialPort_DCS_swigregister = _wxctb.SerialPort_DCS_swigregister +SerialPort_DCS_swigregister(SerialPort_DCS) + +class SerialPort_EINFO(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + brk = _swig_property(_wxctb.SerialPort_EINFO_brk_get, _wxctb.SerialPort_EINFO_brk_set) + frame = _swig_property(_wxctb.SerialPort_EINFO_frame_get, _wxctb.SerialPort_EINFO_frame_set) + overrun = _swig_property(_wxctb.SerialPort_EINFO_overrun_get, _wxctb.SerialPort_EINFO_overrun_set) + parity = _swig_property(_wxctb.SerialPort_EINFO_parity_get, _wxctb.SerialPort_EINFO_parity_set) + def __init__(self): + this = _wxctb.new_SerialPort_EINFO() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_SerialPort_EINFO + __del__ = lambda self : None; +SerialPort_EINFO_swigregister = _wxctb.SerialPort_EINFO_swigregister +SerialPort_EINFO_swigregister(SerialPort_EINFO) + +CTB_SER_GETEINFO = _wxctb.CTB_SER_GETEINFO +CTB_SER_GETBRK = _wxctb.CTB_SER_GETBRK +CTB_SER_GETFRM = _wxctb.CTB_SER_GETFRM +CTB_SER_GETOVR = _wxctb.CTB_SER_GETOVR +CTB_SER_GETPAR = _wxctb.CTB_SER_GETPAR +CTB_SER_GETINQUE = _wxctb.CTB_SER_GETINQUE +CTB_SER_SETPAR = _wxctb.CTB_SER_SETPAR +class SerialPort_x(IOBase): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _wxctb.delete_SerialPort_x + __del__ = lambda self : None; + def ClassName(self): return _wxctb.SerialPort_x_ClassName(self) + def ChangeLineState(self, *args, **kwargs): return _wxctb.SerialPort_x_ChangeLineState(self, *args, **kwargs) + def ClrLineState(self, *args, **kwargs): return _wxctb.SerialPort_x_ClrLineState(self, *args, **kwargs) + def GetLineState(self): return _wxctb.SerialPort_x_GetLineState(self) + def GetSettingsAsString(self): return _wxctb.SerialPort_x_GetSettingsAsString(self) + def Ioctl(self, *args, **kwargs): return _wxctb.SerialPort_x_Ioctl(self, *args, **kwargs) + def SendBreak(self, *args, **kwargs): return _wxctb.SerialPort_x_SendBreak(self, *args, **kwargs) + def SetBaudrate(self, *args, **kwargs): return _wxctb.SerialPort_x_SetBaudrate(self, *args, **kwargs) + def SetLineState(self, *args, **kwargs): return _wxctb.SerialPort_x_SetLineState(self, *args, **kwargs) + def SetParityBit(self, *args, **kwargs): return _wxctb.SerialPort_x_SetParityBit(self, *args, **kwargs) + IsStandardRate = staticmethod(_wxctb.SerialPort_x_IsStandardRate) +SerialPort_x_swigregister = _wxctb.SerialPort_x_swigregister +SerialPort_x_swigregister(SerialPort_x) + +def SerialPort_x_IsStandardRate(*args, **kwargs): + return _wxctb.SerialPort_x_IsStandardRate(*args, **kwargs) +SerialPort_x_IsStandardRate = _wxctb.SerialPort_x_IsStandardRate + +COM1 = "/dev/ttyS0" +COM2 = "/dev/ttyS1" +COM3 = "/dev/ttyS2" +COM4 = "/dev/ttyS3" +COM5 = "/dev/ttyS4" +COM6 = "/dev/ttyS5" +COM7 = "/dev/ttyS6" +COM8 = "/dev/ttyS7" +COM9 = "/dev/ttyS8" + +class SerialPort(SerialPort_x): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + def __init__(self): + this = _wxctb.new_SerialPort() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_SerialPort + __del__ = lambda self : None; + def ChangeLineState(self, *args, **kwargs): return _wxctb.SerialPort_ChangeLineState(self, *args, **kwargs) + def ClrLineState(self, *args, **kwargs): return _wxctb.SerialPort_ClrLineState(self, *args, **kwargs) + def GetLineState(self): return _wxctb.SerialPort_GetLineState(self) + def Ioctl(self, *args, **kwargs): return _wxctb.SerialPort_Ioctl(self, *args, **kwargs) + def IsOpen(self): return _wxctb.SerialPort_IsOpen(self) + def Read(self, *args, **kwargs): return _wxctb.SerialPort_Read(self, *args, **kwargs) + def SendBreak(self, *args, **kwargs): return _wxctb.SerialPort_SendBreak(self, *args, **kwargs) + def SetBaudrate(self, *args, **kwargs): return _wxctb.SerialPort_SetBaudrate(self, *args, **kwargs) + def SetLineState(self, *args, **kwargs): return _wxctb.SerialPort_SetLineState(self, *args, **kwargs) + def SetParityBit(self, *args, **kwargs): return _wxctb.SerialPort_SetParityBit(self, *args, **kwargs) + def Write(self, *args, **kwargs): return _wxctb.SerialPort_Write(self, *args, **kwargs) +SerialPort_swigregister = _wxctb.SerialPort_swigregister +SerialPort_swigregister(SerialPort) + + +def GetKey(): + return _wxctb.GetKey() +GetKey = _wxctb.GetKey + + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/parity.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/parity.py new file mode 100755 index 0000000000..910361b8e0 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/parity.py @@ -0,0 +1,70 @@ +#!/usr/bin/python + +import getopt, time, sys + +sys.path.insert( 0, r'/home/jb/project/libctb-0.16/python/module/linux') + +import ctb + +def main(): + + baudrate = 19200 + + devname = "" + + protocol = '8N1' + + try: + opt,arg = getopt.getopt(sys.argv[1:], + 'b:d:p:', + ['baudrate=', + 'device=', + 'protocol=' + ]) + + except getopt.GetoptError: + print "usage: parity.py [options]\n"\ + "\t-b baudrate\n"\ + "\t--baudrate=baudrate"\ + "\t-d device\n"\ + "\t--device=serial device name like /dev/ttyS0 or COM1\n"\ + "\t-h\n"\ + "\t--help print this\n"\ + "\n" + sys.exit(0) + + for o,a in opt: + + if o in ("-b","--baudrate"): + + baudrate = int(a) + + if o in ("-d","--device"): + + devname = a + + if o in ("-p","--protocol"): + + protocol = a + + + print "Using ctb version " + ctb.GetVersion() + + dev = ctb.SerialPort() + + if dev.Open( devname, baudrate, protocol ) < 0: + + print "Cannot open " + devname + "\n" + + # send the following string with a always set parity bit + dev.SetParityBit( 1 ) + + dev.Writev( "Hello World" ) + + # send the following string with a always cleared parity bit + dev.SetParityBit( 0 ) + + dev.Writev( "Hello World" ) + +main() + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/protocol.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/protocol.py new file mode 100755 index 0000000000..ff1731b895 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/protocol.py @@ -0,0 +1,88 @@ +#!/usr/bin/python + +import getopt, time, sys + +sys.path.insert( 0, r'/home/jb/project/libctb-0.16/python/module/linux') + +import ctb + +def DataBlock(): + data = '' + for c in range( 0, 256): + data += '%c' % c + + return data + +def main(): + + baudrate = 19200 + + devname = "" + + try: + opt,arg = getopt.getopt(sys.argv[1:], + 'b:d:', + ['baudrate=', + 'device=' + ]) + + except getopt.GetoptError: + print "usage: protocol.py [options]\n"\ + "\t-b baudrate\n"\ + "\t--baudrate=baudrate"\ + "\t-d device\n"\ + "\t--device=serial device name like /dev/ttyS0 or COM1\n"\ + "\t-h\n"\ + "\t--help print this\n"\ + "\n" + sys.exit(0) + + for o,a in opt: + + if o in ("-b","--baudrate"): + + baudrate = int(a) + + if o in ("-d","--device"): + + devname = a + + print "Using ctb version " + ctb.GetVersion() + + dev = ctb.SerialPort() + + protocols = [ + '8N1','8O1','8E1','8S1','8M1' + ] + + dev.SetTimeout( 1000 ) + + for protocol in protocols: + + if dev.Open( devname, baudrate, protocol ) < 0: + + print "Cannot open " + devname + "\n" + + sys.exit( 1 ) + + else: + + print( "%i %s" % ( baudrate, protocol ) ) + + for i in range(0, 4 ): + + dev.Writev( "\x33" ) + + time.sleep( 0.0006 ) + + dev.Writev( "\x31" ) + + time.sleep( 0.0006 ) + + time.sleep( 0.5 ) + + dev.Close() + + +main() + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/rtsdtr.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/rtsdtr.py new file mode 100755 index 0000000000..e67a9ffd3b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/samples/rtsdtr.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +import getopt, time, sys + +sys.path.insert( 0, r'/home/jb/project/libctb-0.16/python/module/linux') + +import ctb + +def main(): + + devname = "" + + try: + opt,arg = getopt.getopt(sys.argv[1:], + 'd:', + ['device=' + ]) + + except getopt.GetoptError: + print "usage: parity.py [options]\n"\ + "\t-d device\n"\ + "\t--device=serial device name like /dev/ttyS0 or COM1\n"\ + "\t-h\n"\ + "\t--help print this\n"\ + "\n" + sys.exit(0) + + for o,a in opt: + + if o in ("-d","--device"): + + devname = a + + print "Using ctb version " + ctb.GetVersion() + + dev = ctb.SerialPort() + + if dev.Open( devname, 38400 ) < 0: + + print "Cannot open " + devname + "\n" + + dev.SetLineState( ctb.DTR ) + + dev.ClrLineState( ctb.RTS ) + + for i in range( 0, 100 ) : + + time.sleep( 0.01 ) + + dev.ChangeLineState( ctb.DTR | ctb.RTS ) + +main() + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.html b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.html new file mode 100644 index 0000000000..7a5732fa9b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.html @@ -0,0 +1,353 @@ + + +Python: module ctb + + + + +
 
+ 
ctb
index
/mnt/s/wxaddons/wxctb-0.9/SWIG/ctb.py
+

+

+ + + + + +
 
+Modules
       
re
+
sys
+
wxctb
+

+ + + + + +
 
+Classes
       
+
wxIOBase +
+
+
wxGPIB +
wxSerialPort +
+
+
+

+ + + + + + + +
 
+class wxGPIB(wxIOBase)
   wxGPIB class
 
 Methods defined here:
+
GetError(self)
+ +
GetSTB(self)
Returns the value of the internal GPIB status byte register.
+ +
Ibrd(self, length)
# This is only for internal usage!!!
+ +
Ibwrt(self, string)
# This is only for internal usage!!!
+ +
Open(self, devname, adr)
Open(gpibdevice,address)
+Opens a connected device at the GPIB bus. gpibdevice means the
+controller, (mostly "gpib1"), address the address of the desired
+device in the range 1...31. For example:
+dev = wxGPIB()
+dev.Open("gpib1",17)
+Opens the device with the address 17.
+Open returns >= 0 or a negativ value, if something going wrong.
+ +
Reset(self)
Resets the connected device. In the GPIB definition, the device
+should be reset to it's initial state, so you can restart a
+formely lost communication.
+ +
ResetBus(self)
The command asserts the GPIB interface clear (IFC) line for
+ast least 100us if the GPIB board is the system controller.
+This initializes the GPIB and makes the interface CIC and
+active controller with ATN asserted.
+Note! The IFC signal resets only the GPIB interface functions
+of the bus devices and not the internal device functions.
+For a device reset you should use the Reset() command above.
+ +
__del__(self)
+ +
__init__(self)
+ +
+Methods inherited from wxIOBase:
+
Close(self)
+ +
GetTimeout(self)
Returns the internal timeout value in milliseconds
+ +
Ioctl(self, cmd, arg)
+ +
PutBack(self, char)
+ +
Read(self, length)
Try to read the given count of data (length) and returns the
+successfully readed number of data. The function never blocks.
+For example:
+readed = dev.Read(100)
+ +
ReadBinary(self, eos='\n')
Special SCPI command. Read the next data coded as a SCPI
+binary format.
+A binary data transfer will be startet by '#'. The next byte
+tells the count of bytes for the binary length header,
+following by the length bytes. After these the data begins.
+For example:
+#500004xxxx
+The header length covers 5 Byte, the length of the binary
+data is 4 (x means the binary data bytes)
+ +
ReadUntilEOS(self, eos='\n', quota=0)
ReadUntilEOS(eosString="\n",timeout=1000)
+Reads data until the given eos string was received (default is
+the linefeed character (0x0a) or the internal timeout
+(default 1000ms) was reached.
+ReadUntilEOS returns the result as the following tuple:
+['received string',state,readedBytes]
+If a timeout occurred, state is 0, otherwise 1
+ +
Readv(self, length)
Try to read the given count of data. Readv blocks until all data
+was readed successfully or the internal timeout, set with the
+class member function SetTimeout(timeout), was reached.
+Returns the readed data.
+ +
SetTimeout(self, timeout)
Set the internal timeout value in milliseconds for all blocked
+operations like ReadUntilEOS, Readv and Writev.
+ +
Write(self, string)
Writes the given string to the device and returns immediately.
+Write returns the number of data bytes successfully written or a
+negativ number if an error occured. For some circumstances, not
+the complete string was written.
+So you have to verify the return value to check this out.
+ +
Writev(self, string)
Writes the given string to the device. The function blocks until
+the complete string was written or the internal timeout, set with
+SetTimeout(timeout), was reached.
+Writev returns the number of data successfully written or a
+negativ value, if an errors occurred.
+ +

+ + + + + +
 
+class wxIOBase
    Methods defined here:
+
Close(self)
+ +
GetTimeout(self)
Returns the internal timeout value in milliseconds
+ +
Ioctl(self, cmd, arg)
+ +
Open(self)
+ +
PutBack(self, char)
+ +
Read(self, length)
Try to read the given count of data (length) and returns the
+successfully readed number of data. The function never blocks.
+For example:
+readed = dev.Read(100)
+ +
ReadBinary(self, eos='\n')
Special SCPI command. Read the next data coded as a SCPI
+binary format.
+A binary data transfer will be startet by '#'. The next byte
+tells the count of bytes for the binary length header,
+following by the length bytes. After these the data begins.
+For example:
+#500004xxxx
+The header length covers 5 Byte, the length of the binary
+data is 4 (x means the binary data bytes)
+ +
ReadUntilEOS(self, eos='\n', quota=0)
ReadUntilEOS(eosString="\n",timeout=1000)
+Reads data until the given eos string was received (default is
+the linefeed character (0x0a) or the internal timeout
+(default 1000ms) was reached.
+ReadUntilEOS returns the result as the following tuple:
+['received string',state,readedBytes]
+If a timeout occurred, state is 0, otherwise 1
+ +
Readv(self, length)
Try to read the given count of data. Readv blocks until all data
+was readed successfully or the internal timeout, set with the
+class member function SetTimeout(timeout), was reached.
+Returns the readed data.
+ +
ResetBus(self)
If the underlaying interface needs some special reset operations
+(for instance the GPIB distinguish between a normal device reset
+and a special bus reset), you can put some code here)
+ +
SetTimeout(self, timeout)
Set the internal timeout value in milliseconds for all blocked
+operations like ReadUntilEOS, Readv and Writev.
+ +
Write(self, string)
Writes the given string to the device and returns immediately.
+Write returns the number of data bytes successfully written or a
+negativ number if an error occured. For some circumstances, not
+the complete string was written.
+So you have to verify the return value to check this out.
+ +
Writev(self, string)
Writes the given string to the device. The function blocks until
+the complete string was written or the internal timeout, set with
+SetTimeout(timeout), was reached.
+Writev returns the number of data successfully written or a
+negativ value, if an errors occurred.
+ +
__del__(self)
+ +
__init__(self)
+ +

+ + + + + +
 
+class wxSerialPort(wxIOBase)
    Methods defined here:
+
ChangeLineState(self, lineState)
Change (toggle) the state of each the lines given in the
+linestate parameter. Possible values are wxSERIAL_LINESTATE_DTR
+(means the DTR signal) and/or wxSERIAL_LINESTATE_RTS (RTS signal).
+For example to toggle the RTS line only:
+dev.ChangeLineState(wxSERIAL_LINESTATE_RTS)
+ +
ClrLineState(self, lineState)
Clear the lines given in the linestate parameter. Possible
+values are wxSERIAL_LINESTATE_DTR (means the DTR signal) and/or
+wxSERIAL_LINESTATE_RTS (RTS signal). For example to clear only
+the RTS line:
+dev.ClrLineState(wxSERIAL_LINESTATE_RTS)
+ +
GetAvailableBytes(self)
Returns the available bytes in the input queue of the serial
+driver.
+ +
GetCommErrors(self)
Get the internal communication errors like breaks, framing,
+parity or overrun errors.
+Returns the count of each error as a tuple like this:
+(b,f,o,p) = dev.GetCommErrors()
+b: breaks, f: framing errors,  o: overruns, p: parity errors
+ +
GetLineState(self)
Returns the current linestates of the CTS, DCD, DSR and RING
+signal line as an integer value with the appropriate bits or
+-1 on error.
+For example:
+lines = dev.GetLineState()
+if lines & wxSERIAL_LINESTATE_CTS:
+    print "CTS is on"
+ +
Open(self, devname, baudrate, protocol='8N1', handshake='no_handshake')
Open the device devname with the given baudrate, the protocol
+like '8N1' (default) and the use of the handshake [no_handshake
+(default), rtscts or xonxoff]
+For example:
+At Linux:
+dev = wxSerialPort()
+dev.Open("/dev/ttyS0",115200)
+or with a datalen of 7 bits, even parity, 2 stopbits and rts/cts
+handshake:
+dev.Open("/dev/ttyS0",115200,'7E2',True)
+At Windows:
+dev = wxSerialPort()
+dev.Open("COM1",115200)
+dev.Open("COM1",115200,'7E2',True)
+Returns the handle on success or a negativ value on failure.
+ +
Reset(self)
Send a break for 0.25s.
+ +
SetBaudRate(self, baudrate)
Set the baudrate for the device.
+ +
SetLineState(self, lineState)
Set the lines given in the linestate parameter. Possible
+values are wxSERIAL_LINESTATE_DTR (means the DTR signal) and/or
+wxSERIAL_LINESTATE_RTS (RTS signal). For example to set both:
+dev.SetLineState(wxSERIAL_LINESTATE_DTR | wxSERIAL_LINESTATE_RTS)
+ +
__del__(self)
+ +
__init__(self)
+ +
+Methods inherited from wxIOBase:
+
Close(self)
+ +
GetTimeout(self)
Returns the internal timeout value in milliseconds
+ +
Ioctl(self, cmd, arg)
+ +
PutBack(self, char)
+ +
Read(self, length)
Try to read the given count of data (length) and returns the
+successfully readed number of data. The function never blocks.
+For example:
+readed = dev.Read(100)
+ +
ReadBinary(self, eos='\n')
Special SCPI command. Read the next data coded as a SCPI
+binary format.
+A binary data transfer will be startet by '#'. The next byte
+tells the count of bytes for the binary length header,
+following by the length bytes. After these the data begins.
+For example:
+#500004xxxx
+The header length covers 5 Byte, the length of the binary
+data is 4 (x means the binary data bytes)
+ +
ReadUntilEOS(self, eos='\n', quota=0)
ReadUntilEOS(eosString="\n",timeout=1000)
+Reads data until the given eos string was received (default is
+the linefeed character (0x0a) or the internal timeout
+(default 1000ms) was reached.
+ReadUntilEOS returns the result as the following tuple:
+['received string',state,readedBytes]
+If a timeout occurred, state is 0, otherwise 1
+ +
Readv(self, length)
Try to read the given count of data. Readv blocks until all data
+was readed successfully or the internal timeout, set with the
+class member function SetTimeout(timeout), was reached.
+Returns the readed data.
+ +
ResetBus(self)
If the underlaying interface needs some special reset operations
+(for instance the GPIB distinguish between a normal device reset
+and a special bus reset), you can put some code here)
+ +
SetTimeout(self, timeout)
Set the internal timeout value in milliseconds for all blocked
+operations like ReadUntilEOS, Readv and Writev.
+ +
Write(self, string)
Writes the given string to the device and returns immediately.
+Write returns the number of data bytes successfully written or a
+negativ number if an error occured. For some circumstances, not
+the complete string was written.
+So you have to verify the return value to check this out.
+ +
Writev(self, string)
Writes the given string to the device. The function blocks until
+the complete string was written or the internal timeout, set with
+SetTimeout(timeout), was reached.
+Writev returns the number of data successfully written or a
+negativ value, if an errors occurred.
+ +

+ + + + + +
 
+Functions
       
GetKey()
Returns the current pressed key or '', if no key is pressed.
+You can simply create a query loop with:
+while GetKey() == '':
+    ... make some stuff ...
+
abstract()
+

+ + + + + +
 
+Data
       wxSERIAL_LINESTATE_CTS = 32
+wxSERIAL_LINESTATE_DCD = 64
+wxSERIAL_LINESTATE_DSR = 256
+wxSERIAL_LINESTATE_DTR = 2
+wxSERIAL_LINESTATE_NULL = 0
+wxSERIAL_LINESTATE_RING = 128
+wxSERIAL_LINESTATE_RTS = 4
+ \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.py new file mode 100644 index 0000000000..6b541ffe39 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/ctb.py @@ -0,0 +1,455 @@ +import wxctb, sys, re + +DCD = wxctb.LinestateDcd +CTS = wxctb.LinestateCts +DSR = wxctb.LinestateDsr +DTR = wxctb.LinestateDtr +RING = wxctb.LinestateRing +RTS = wxctb.LinestateRts +NULL = wxctb.LinestateNull + +def abstract(): + import inspect + caller = inspect.getouterframes(inspect.currentframe())[1][3] + raise NotImplementedError(caller + ' must be implemented in subclass') + +class IOBase: + def __init__(self): + self.device = None + # set timeout to 1000ms (the default) + self.timeout = 1000 + + def __del__(self): + pass + + def Close(self): + if self.device: + self.device.Close() + + def GetTimeout(self): + """ + Returns the internal timeout value in milliseconds + """ + return self.timeout + + def Ioctl(self,cmd,arg): + if self.device: + self.device.Ioctl(cmd,arg) + + def Open(self): + abstract() + + def PutBack(self,char): + return self.device.PutBack(char) + + def Read(self,length): + """ + Try to read the given count of data (length) and returns the + successfully readed number of data. The function never blocks. + For example: + readed = dev.Read(100) + """ + buf = "\x00"*(length+1) + rd = self.device.Read(buf,length) + return buf[0:rd] + + def ReadBinary(self,eos="\n"): + """ + Special SCPI command. Read the next data coded as a SCPI + binary format. + A binary data transfer will be startet by '#'. The next byte + tells the count of bytes for the binary length header, + following by the length bytes. After these the data begins. + For example: + #500004xxxx + The header length covers 5 Byte, the length of the binary + data is 4 (x means the binary data bytes) + """ + try: + eoslen = len(eos) + b=self.Readv(2) + if len(b) == 2: + hl = int(b[1]) + b = self.Readv(hl) + if len(b) == hl: + dl = int(b) + # don't left over the eos string or character in the + # device input buffer + data = self.Readv(dl+eoslen) + # check, if the binary data block is complete + if data[dl] == '#': + # not complete, another block is following + for c in data[dl:dl+eoslen]: + self.PutBack(c) + + data = data[:dl] + self.ReadBinary() + return data + except: + pass + return '' + + def ReadUntilEOS(self,eos="\n",quota=0): + """ + ReadUntilEOS(eosString=\"\\n\",timeout=1000) + Reads data until the given eos string was received (default is + the linefeed character (0x0a) or the internal timeout + (default 1000ms) was reached. + ReadUntilEOS returns the result as the following tuple: + ['received string',state,readedBytes] + If a timeout occurred, state is 0, otherwise 1 + """ + return self.device.ReadUntilEOS("",0,eos,self.timeout,quota) + + def Readv(self,length): + """ + Try to read the given count of data. Readv blocks until all data + was readed successfully or the internal timeout, set with the + class member function SetTimeout(timeout), was reached. + Returns the readed data. + """ + buf = "\x00"*length + rd = self.device.Readv(buf,length,self.timeout) + return buf[0:rd] + + def ResetBus(self): + """ + If the underlaying interface needs some special reset operations + (for instance the GPIB distinguish between a normal device reset + and a special bus reset), you can put some code here) + """ + pass + + def SetTimeout(self,timeout): + """ + Set the internal timeout value in milliseconds for all blocked + operations like ReadUntilEOS, Readv and Writev. + """ + self.timeout = timeout + + def Write(self,string): + """ + Writes the given string to the device and returns immediately. + Write returns the number of data bytes successfully written or a + negativ number if an error occured. For some circumstances, not + the complete string was written. + So you have to verify the return value to check this out. + """ + return self.device.Write(string,len(string)) + + def Writev(self,string): + """ + Writes the given string to the device. The function blocks until + the complete string was written or the internal timeout, set with + SetTimeout(timeout), was reached. + Writev returns the number of data successfully written or a + negativ value, if an errors occurred. + """ + return self.device.Writev(string,len(string),self.timeout) + +class SerialPort(IOBase): + def __init__(self): + IOBase.__init__(self) + + def __del__(self): + self.Close() + + def ChangeLineState(self,lineState): + """ + Change (toggle) the state of each the lines given in the + linestate parameter. Possible values are DTR and/or RTS. + For example to toggle the RTS line only: + dev.ChangeLineState(RTS) + """ + self.device.ChangeLineState(lineState) + + def ClrLineState(self,lineState): + """ + Clear the lines given in the linestate parameter. Possible + values are DTR and/or RTS. For example to clear only + the RTS line: + dev.ClrLineState(RTS) + """ + self.device.ClrLineState(lineState) + + def GetAvailableBytes(self): + """ + Returns the available bytes in the input queue of the serial + driver. + """ + n = wxctb.new_intp() + wxctb.intp_assign(n, 0) + self.device.Ioctl(wxctb.CTB_SER_GETINQUE,n) + return wxctb.intp_value(n) + + def GetCommErrors(self): + """ + Get the internal communication errors like breaks, framing, + parity or overrun errors. + Returns the count of each error as a tuple like this: + (b,f,o,p) = dev.GetCommErrors() + b: breaks, f: framing errors, o: overruns, p: parity errors + """ + einfo = wxctb.SerialPort_EINFO() + self.device.Ioctl(wxctb.CTB_SER_GETEINFO,einfo) + return einfo.brk,einfo.frame,einfo.overrun,einfo.parity + + def GetLineState(self): + """ + Returns the current linestates of the CTS, DCD, DSR and RING + signal line as an integer value with the appropriate bits or + -1 on error. + For example: + lines = dev.GetLineState() + if lines & CTS: + print \"CTS is on\" + """ + return self.device.GetLineState() + + def Open(self,devname,baudrate,protocol='8N1',handshake='no_handshake'): + """ + Open the device devname with the given baudrate, the protocol + like '8N1' (default) and the use of the handshake [no_handshake + (default), rtscts or xonxoff] + For example: + At Linux: + dev = SerialPort() + dev.Open(\"/dev/ttyS0\",115200) + or with a datalen of 7 bits, even parity, 2 stopbits and rts/cts + handshake: + dev.Open(\"/dev/ttyS0\",115200,'7E2',True) + At Windows: + dev = SerialPort() + dev.Open(\"COM1\",115200) + dev.Open(\"COM1\",115200,'7E2',True) + Returns the handle on success or a negativ value on failure. + """ + # the following parity values are valid: + # N:None, O:Odd, E:Even, M:Mark, S:Space + parity = {'N':0,'O':1,'E':2,'M':3,'S':4} + # the regular expression ensures a valid value for the datalen + # (5...8 bit) and the count of stopbits (1,2) + reg=re.compile(r"(?P[8765])"r"(?P

[NOEMS])"r"(?P[12])") + self.device = wxctb.SerialPort() + dcs = wxctb.SerialPort_DCS() + dcs.baud = baudrate + res = reg.search(protocol) + # handle the given protocol + if res: + dcs.wordlen = int(res.group('w')) + dcs.stopbits = int(res.group('s')) + dcs.parity = parity[res.group('p')] + # valid handshake are no one, rts/cts or xon/xoff + if handshake == 'rtscts': + dcs.rtscts = True + elif handshake == 'xonxoff': + dcs.xonxoff = True + + return self.device.Open(devname,dcs) + + def Reset(self): + """ + Send a break for 0.25s. + """ + self.device.SendBreak(0) + + def SetBaudrate(self,baudrate): + """ + Set the baudrate for the device. + """ + self.device.SetBaudrate(baudrate) + + def SetLineState(self,lineState): + """ + Set the lines given in the linestate parameter. Possible + values are DTR and/or RTS. For example to set both: + dev.SetLineState( DTR | RTS) + """ + self.device.SetLineState(lineState) + + def SetParityBit(self,parity): + """ + Set the parity bit explicitly to 0 or 1. Use this function, if + you would like to simulate a 9 bit wordlen at what the ninth bit + was represented by the parity bit value. For example: + dev.SetParityBit( 0 ) + dev.Write('some data sent with parity 0') + dev.SetParityBit( 1 ) + dev.Write('another sequence with parity 1') + """ + return self.device.SetParityBit( parity ) + +class GpibDevice(IOBase): + """ + GPIB class + """ + def __init__(self): + IOBase.__init__(self) + + def __del__(self): + self.Close() + + def FindListeners(self,board = 0): + """ + Returns the address of the connected devices as a list. + If no device is listening, the list is empty. If an error + occurs an IOError exception raised. For example: + g = GPIB() + listeners = g.FindListeners() + """ + listeners = wxctb.GPIB_x_FindListeners(board) + if listeners < 0: + raise IOError("GPIB board error") + result = [] + for i in range(1,31): + if listeners & (1 << i): + result.append(i) + return result + + def GetEosChar(self): + """ + Get the internal EOS termination character (see SetEosChar). + For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosChar() + """ + eos = wxctb.new_intp() + wxctb.intp_assign(eos, 0) + self.device.Ioctl(wxctb.CTB_GPIB_GET_EOS_CHAR,eos) + return wxctb.intp_value(eos) + + def GetEosMode(self): + """ + Get the internal EOS mode (see SetEosMode). + For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosMode() + """ + mode = wxctb.new_intp() + wxctb.intp_assign(mode, 0) + self.device.Ioctl(wxctb.CTB_GPIB_GET_EOS_MODE,mode) + return wxctb.intp_value(mode) + + def GetError(self): + errorString = " "*256 + self.device.GetError(errorString,256) + return errorString + + def GetSTB(self): + """ + Returns the value of the internal GPIB status byte register. + """ + stb = wxctb.new_intp() + wxctb.intp_assign(stb, 0) + self.device.Ioctl(wxctb.CTB_GPIB_GETRSP,stb) + return wxctb.intp_value(stb) + + # This is only for internal usage!!! + def Ibrd(self,length): + buf = "\x00"*length + state = self.device.Ibrd(buf,length) + return state,buf + + # This is only for internal usage!!! + def Ibwrt(self,string): + return self.device.Ibwrt(string,len(string)) + + def Open(self,devname,adr,eosChar=10,eosMode=0x08|0x04): + """ + Open(gpibdevice,address,eosChar,eosMode) + Opens a connected device at the GPIB bus. gpibdevice means the + controller, (mostly \"gpib1\"), address the address of the desired + device in the range 1...31. The eosChar defines the EOS character + (default is linefeed), eosMode may be a combination of bits ORed + together. The following bits can be used: + 0x04: Terminate read when EOS is detected. + 0x08: Set EOI (End or identify line) with EOS on write function + 0x10: Compare all 8 bits of EOS byte rather than low 7 bits + (all read and write functions). Default is 0x12 + For example: + dev = GPIB() + dev.Open(\"gpib1\",17) + Opens the device with the address 17, linefeed as EOS (default) + and eos mode with 0x04 and 0x08. + Open returns >= 0 or a negativ value, if something going wrong. + """ + self.device = wxctb.GpibDevice() + dcs = wxctb.Gpib_DCS() + dcs.m_address1 = adr + dcs.m_eosChar = eosChar + dcs.m_eosMode = eosMode + result = self.device.Open(devname,dcs) + return result + + def Reset(self): + """ + Resets the connected device. In the GPIB definition, the device + should be reset to it's initial state, so you can restart a + formely lost communication. + """ + self.device.Ioctl(wxctb.CTB_RESET,None) + + def ResetBus(self): + """ + The command asserts the GPIB interface clear (IFC) line for + ast least 100us if the GPIB board is the system controller. + This initializes the GPIB and makes the interface CIC and + active controller with ATN asserted. + Note! The IFC signal resets only the GPIB interface functions + of the bus devices and not the internal device functions. + For a device reset you should use the Reset() command above. + """ + self.device.Ioctl(wxctb.CTB_GPIB_RESET_BUS,None) + + def SetEosChar(self,eos): + """ + Configure the end-of-string (EOS) termination character. + Note! Defining an EOS byte does not cause the driver to + automatically send that byte at the end of write I/O + operations. The application is responsible for placing the + EOS byte at the end of the data strings that it defines. + (National Instruments NI-488.2M Function Reference Manual) + For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosChar(0x10) + """ + intp = wxctb.new_intp() + wxctb.intp_assign(intp, eos) + return self.device.Ioctl(wxctb.CTB_GPIB_SET_EOS_CHAR,intp) + + def SetEosMode(self,mode): + """ + Set the EOS mode (handling).m_eosMode may be a combination + of bits ORed together. The following bits can be used: + 0x04: Terminate read when EOS is detected. + 0x08: Set EOI (End or identify line) with EOS on write function + 0x10: Compare all 8 bits of EOS byte rather than low 7 bits + (all read and write functions). For example: + g = GPIB() + g.Open(\"gpib1\",1) + eos = g.GetEosMode(0x04 | 0x08) + """ + intp = wxctb.new_intp() + wxctb.intp_assign(intp, mode) + return self.device.Ioctl(wxctb.CTB_GPIB_SET_EOS_MODE,intp) + +def GetKey(): + """ + Returns the current pressed key or '\0', if no key is pressed. + You can simply create a query loop with: + while GetKey() == '\0': + ... make some stuff ... + + """ + return wxctb.GetKey() + +def GetVersion(): + """ + Returns the version of the ctb python module. The numbering + has the following format: x.y.z + x.y means the version of the underlaying ctb lib, z the version + of the python port. + """ + return "0.16" diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/gpib.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/gpib.i new file mode 100644 index 0000000000..752ecd3a18 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/gpib.i @@ -0,0 +1,96 @@ +%{ +#include "ctb-0.16/gpib.h" +%} + +%include iobase.i + +namespace ctb { + +%typemap(in) void * dcs (Gpib_DCS tmp) { + /* dont check for list */ + $1 = &tmp; +} + +enum GpibTimeout +{ + GpibTimeoutNONE = 0, + GpibTimeout10us, + GpibTimeout30us, + GpibTimeout100us, + GpibTimeout300us, + GpibTimeout1ms, + GpibTimeout3ms, + GpibTimeout10ms, + GpibTimeout30ms, + GpibTimeout100ms, + GpibTimeout300ms, + GpibTimeout1s, + GpibTimeout3s, + GpibTimeout10s, + GpibTimeout30s, + GpibTimeout100s, + GpibTimeout300s, + GpibTimeout1000s +}; + +struct Gpib_DCS +{ + int m_address1; + int m_address2; + GpibTimeout m_timeout; + bool m_eot; + unsigned char m_eosChar; + unsigned char m_eosMode; + Gpib_DCS(); + ~Gpib_DCS(); + char* GetSettings(); +}; + +enum { + CTB_GPIB_SETADR = CTB_GPIB, + CTB_GPIB_GETRSP, + CTB_GPIB_GETSTA, + CTB_GPIB_GETERR, + CTB_GPIB_GETLINES, + CTB_GPIB_SETTIMEOUT, + CTB_GPIB_GTL, + CTB_GPIB_REN, + CTB_GPIB_RESET_BUS, + CTB_GPIB_SET_EOS_CHAR, + CTB_GPIB_GET_EOS_CHAR, + CTB_GPIB_SET_EOS_MODE, + CTB_GPIB_GET_EOS_MODE +}; + +class GpibDevice : public IOBase +{ +protected: + int m_board; + int m_hd; + int m_state; + int m_error; + int m_count; + int m_asyncio; + Gpib_DCS m_dcs; + int CloseDevice(); + int OpenDevice(const char* devname, void* dcs); + virtual const char* GetErrorString(int error,bool detailed); +public: + GpibDevice(); + virtual ~GpibDevice(); + const char* ClassName(); + virtual const char* GetErrorDescription(int error); + virtual const char* GetErrorNotation(int error); + virtual char* GetSettingsAsString(); + int Ibrd(char* buf,size_t len); + int Ibwrt(char* buf,size_t len); + virtual int Ioctl(int cmd,void* args); + int IsOpen(); + int Read(char* buf,size_t len); + int Write(char* buf,size_t len); + + static int FindListeners(int board = 0); + +}; + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/iobase.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/iobase.i new file mode 100644 index 0000000000..c6bc452adb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/iobase.i @@ -0,0 +1,59 @@ +%{ +#include "ctb-0.16/iobase.h" +%} + +namespace ctb { + +enum { + CTB_RESET = CTB_COMMON +}; + +%typemap(in) char *& readbuf (char * tmp) { + /* dont check for list */ + $1 = &tmp; +} + +%typemap(argout) char *& readbuf { + PyObject * plist = PyList_New(2); + PyList_SetItem(plist, 0, PyString_FromString(*$1)); + PyList_SetItem(plist, 1, $result); + $result = plist; + delete *$1; +} + +%typemap(in) size_t * readedBytes (size_t tmp) { + /* dont check for list */ + $1 = &tmp; +} + +%typemap(argout) size_t * readedBytes { + PyList_Append($result, PyInt_FromLong(*$1)); +} + +class IOBase +{ +protected: + virtual int CloseDevice() = 0; + virtual int OpenDevice(const char* devname, void* dcs = 0L) = 0; +public: + IOBase(); + virtual ~IOBase(); + + virtual const char* ClassName(); + int Close(); + virtual int Ioctl(int cmd,void* args); + virtual int IsOpen() = 0; + int Open(const char* devname,void* dcs=0L); + int PutBack(char ch); + virtual int Read(char* buf,size_t len) = 0; + virtual int ReadUntilEOS(char*& readbuf, + size_t* readedBytes, + char* eosString = "\n", + long timeout_in_ms = 1000L, + char quota = 0); + int Readv(char* buf,size_t len,unsigned int timeout_in_ms); + virtual int Write(char* buf,size_t len) = 0; + int Writev(char* buf,size_t len,unsigned int timeout_in_ms); +}; + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/kbhit.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/kbhit.i new file mode 100644 index 0000000000..7e5b6cddd3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/kbhit.i @@ -0,0 +1,9 @@ +%{ +#include "ctb-0.16/kbhit.h" +%} + +namespace ctb { + +char GetKey(); + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/makepy.sh b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/makepy.sh new file mode 100755 index 0000000000..40b49dfb2e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/makepy.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +CFLAG='' +GPIB_SOURCES='' +GPIB_LIB='' +GPIB_SUPPORT='' + +# the python develop version. Please check the right version of your +# python developent enviroment +PYTHON_VERSION='2.6' + +for arg in $*; do + if [ "$arg" = "USE_GPIB" ]; then + GPIB_SOURCES='../../../src/gpib.cpp' + GPIB_LIB='-lgpib' + GPIB_SUPPORT='Yes' + else + echo '============================================================' + echo 'You run makepy.sh without GPIB support.' + echo 'If you want to create the python wxctb library with' + echo 'GPIB support, rerun the command with:' + echo 'makepy.sh USE_GPIB=1' + echo '============================================================' + GPIB_SUPPORT='No' + fi + if [ "$arg" = "USE_DEBUG" ]; then + CFLAG='-g' + fi +done + +echo "// This file is created automatically, don't change it!" > wxctb.i +echo "%module wxctb" >> wxctb.i +echo "typedef int size_t;" >> wxctb.i +echo "%include timer.i" >> wxctb.i +echo "%include serport.i" >> wxctb.i +echo "%include ../kbhit.i" >> wxctb.i +if [ "$arg" = "USE_GPIB" ]; then + echo "%include ../gpib.i" >> wxctb.i +fi + +echo "swig generates python wrapper files..." +swig -c++ -Wall -nodefault -python -keyword -new_repr -modern wxctb.i + +echo "create shared library wxctb with GPIB=$GPIB_SUPPORT for python"\ + "$PYTHON_VERSION ..." +g++ -Wall $CFLAG -shared -I /usr/include/python$PYTHON_VERSION/ \ + -I ../../../include \ + wxctb_wrap.cxx \ + ../../../src/linux/timer.cpp \ + ../../../src/linux/serport.cpp \ + ../../../src/serportx.cpp \ + ../../../src/kbhit.cpp \ + ../../../src/iobase.cpp \ + ../../../src/fifo.cpp \ + $GPIB_SOURCES \ + $GPIB_LIB \ + -o _wxctb.so + +echo "copy ctb.py, wxctb.py and _wxctb.so to the module/linux folder..." +mkdir -p ../../module/linux +cp ../ctb.py ../../module/linux/ +cp wxctb.py ../../module/linux/ +cp _wxctb.so ../../module/linux/ diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/serport.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/serport.i new file mode 100644 index 0000000000..3150fe9117 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/serport.i @@ -0,0 +1,50 @@ +%module serport + +%{ +#include "ctb-0.16/linux/serport.h" +%} + +%include ../serportx.i + +namespace ctb { + +%pythoncode { +COM1 = "/dev/ttyS0" +COM2 = "/dev/ttyS1" +COM3 = "/dev/ttyS2" +COM4 = "/dev/ttyS3" +COM5 = "/dev/ttyS4" +COM6 = "/dev/ttyS5" +COM7 = "/dev/ttyS6" +COM8 = "/dev/ttyS7" +COM9 = "/dev/ttyS8" +}; + +class SerialPort : public SerialPort_x +{ +protected: + int fd; + struct termios t, save_t; + struct serial_icounter_struct save_info, last_info; + speed_t AdaptBaudrate(int baud); + + int CloseDevice(); + int OpenDevice(const char* devname, void* dcs); +public: + SerialPort(); + ~SerialPort(); + + int ChangeLineState(SerialLineState flags); + int ClrLineState(SerialLineState flags); + int GetLineState(); + int Ioctl(int cmd,void* args); + int IsOpen(); + int Read(char* buf,size_t len); + int SendBreak(int duration); + int SetBaudrate(int baudrate); + int SetLineState(SerialLineState flags); + int SetParityBit( bool parity ); + int Write(char* buf,size_t len); +}; + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/timer.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/timer.i new file mode 100644 index 0000000000..5709224113 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/timer.i @@ -0,0 +1,37 @@ +%{ +#include "ctb-0.16/linux/timer.h" +%} + +%include cpointer.i + +// lets create new fuctions for pointer handling in python (for int *exitflag) +%pointer_functions(int, intp); + +namespace ctb { + +// perhaps we doesn''t need timer_control to export +// but we need if we want to inherit from timer in python +struct timer_control +{ + unsigned int usecs; + int *exitflag; + void* (*exitfnc)(void*); +}; + +class Timer +{ +protected: + timer_control control; + int stopped; + pthread_t tid; + unsigned int timer_secs; +public: + Timer(unsigned int msec,int* exitflag,void*(*exitfnc)(void*)=NULL); + ~Timer(); + int start(); + int stop(); +}; + +void sleepms(unsigned int ms); + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.i new file mode 100644 index 0000000000..7f84b5fb33 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.i @@ -0,0 +1,6 @@ +// This file is created automatically, don't change it! +%module wxctb +typedef int size_t; +%include timer.i +%include serport.i +%include ../kbhit.i diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.py b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.py new file mode 100644 index 0000000000..f9e0d2ee6e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb.py @@ -0,0 +1,264 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 1.3.40 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info +if version_info >= (2,6,0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_wxctb', [dirname(__file__)]) + except ImportError: + import _wxctb + return _wxctb + if fp is not None: + try: + _mod = imp.load_module('_wxctb', fp, pathname, description) + finally: + fp.close() + return _mod + _wxctb = swig_import_helper() + del swig_import_helper +else: + import _wxctb +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,0) + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + raise AttributeError(name) + +def _swig_repr(self): + try: strthis = "proxy of " + self.this.__repr__() + except: strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object : pass + _newclass = 0 + + +def _swig_setattr_nondynamic_method(set): + def set_attr(self,name,value): + if (name == "thisown"): return self.this.own(value) + if hasattr(self,name) or (name == "this"): + set(self,name,value) + else: + raise AttributeError("You cannot add attributes to %s" % self) + return set_attr + + + +def new_intp(): + return _wxctb.new_intp() +new_intp = _wxctb.new_intp + +def copy_intp(*args, **kwargs): + return _wxctb.copy_intp(*args, **kwargs) +copy_intp = _wxctb.copy_intp + +def delete_intp(*args, **kwargs): + return _wxctb.delete_intp(*args, **kwargs) +delete_intp = _wxctb.delete_intp + +def intp_assign(*args, **kwargs): + return _wxctb.intp_assign(*args, **kwargs) +intp_assign = _wxctb.intp_assign + +def intp_value(*args, **kwargs): + return _wxctb.intp_value(*args, **kwargs) +intp_value = _wxctb.intp_value +class timer_control(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined") + __repr__ = _swig_repr + usecs = _swig_property(_wxctb.timer_control_usecs_get, _wxctb.timer_control_usecs_set) + exitflag = _swig_property(_wxctb.timer_control_exitflag_get, _wxctb.timer_control_exitflag_set) + exitfnc = _swig_property(_wxctb.timer_control_exitfnc_get, _wxctb.timer_control_exitfnc_set) +timer_control_swigregister = _wxctb.timer_control_swigregister +timer_control_swigregister(timer_control) + +class Timer(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + def __init__(self, *args, **kwargs): + this = _wxctb.new_Timer(*args, **kwargs) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_Timer + __del__ = lambda self : None; + def start(self): return _wxctb.Timer_start(self) + def stop(self): return _wxctb.Timer_stop(self) +Timer_swigregister = _wxctb.Timer_swigregister +Timer_swigregister(Timer) + + +def sleepms(*args, **kwargs): + return _wxctb.sleepms(*args, **kwargs) +sleepms = _wxctb.sleepms +CTB_RESET = _wxctb.CTB_RESET +class IOBase(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _wxctb.delete_IOBase + __del__ = lambda self : None; + def ClassName(self): return _wxctb.IOBase_ClassName(self) + def Close(self): return _wxctb.IOBase_Close(self) + def Ioctl(self, *args, **kwargs): return _wxctb.IOBase_Ioctl(self, *args, **kwargs) + def IsOpen(self): return _wxctb.IOBase_IsOpen(self) + def Open(self, *args, **kwargs): return _wxctb.IOBase_Open(self, *args, **kwargs) + def PutBack(self, *args, **kwargs): return _wxctb.IOBase_PutBack(self, *args, **kwargs) + def Read(self, *args, **kwargs): return _wxctb.IOBase_Read(self, *args, **kwargs) + def ReadUntilEOS(self, *args, **kwargs): return _wxctb.IOBase_ReadUntilEOS(self, *args, **kwargs) + def Readv(self, *args, **kwargs): return _wxctb.IOBase_Readv(self, *args, **kwargs) + def Write(self, *args, **kwargs): return _wxctb.IOBase_Write(self, *args, **kwargs) + def Writev(self, *args, **kwargs): return _wxctb.IOBase_Writev(self, *args, **kwargs) +IOBase_swigregister = _wxctb.IOBase_swigregister +IOBase_swigregister(IOBase) + +ParityNone = _wxctb.ParityNone +ParityOdd = _wxctb.ParityOdd +ParityEven = _wxctb.ParityEven +ParityMark = _wxctb.ParityMark +ParitySpace = _wxctb.ParitySpace +LinestateDcd = _wxctb.LinestateDcd +LinestateCts = _wxctb.LinestateCts +LinestateDsr = _wxctb.LinestateDsr +LinestateDtr = _wxctb.LinestateDtr +LinestateRing = _wxctb.LinestateRing +LinestateRts = _wxctb.LinestateRts +LinestateNull = _wxctb.LinestateNull +class SerialPort_DCS(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + baud = _swig_property(_wxctb.SerialPort_DCS_baud_get, _wxctb.SerialPort_DCS_baud_set) + parity = _swig_property(_wxctb.SerialPort_DCS_parity_get, _wxctb.SerialPort_DCS_parity_set) + wordlen = _swig_property(_wxctb.SerialPort_DCS_wordlen_get, _wxctb.SerialPort_DCS_wordlen_set) + stopbits = _swig_property(_wxctb.SerialPort_DCS_stopbits_get, _wxctb.SerialPort_DCS_stopbits_set) + rtscts = _swig_property(_wxctb.SerialPort_DCS_rtscts_get, _wxctb.SerialPort_DCS_rtscts_set) + xonxoff = _swig_property(_wxctb.SerialPort_DCS_xonxoff_get, _wxctb.SerialPort_DCS_xonxoff_set) + buf = _swig_property(_wxctb.SerialPort_DCS_buf_get, _wxctb.SerialPort_DCS_buf_set) + def __init__(self): + this = _wxctb.new_SerialPort_DCS() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_SerialPort_DCS + __del__ = lambda self : None; + def GetSettings(self): return _wxctb.SerialPort_DCS_GetSettings(self) +SerialPort_DCS_swigregister = _wxctb.SerialPort_DCS_swigregister +SerialPort_DCS_swigregister(SerialPort_DCS) + +class SerialPort_EINFO(object): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + brk = _swig_property(_wxctb.SerialPort_EINFO_brk_get, _wxctb.SerialPort_EINFO_brk_set) + frame = _swig_property(_wxctb.SerialPort_EINFO_frame_get, _wxctb.SerialPort_EINFO_frame_set) + overrun = _swig_property(_wxctb.SerialPort_EINFO_overrun_get, _wxctb.SerialPort_EINFO_overrun_set) + parity = _swig_property(_wxctb.SerialPort_EINFO_parity_get, _wxctb.SerialPort_EINFO_parity_set) + def __init__(self): + this = _wxctb.new_SerialPort_EINFO() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_SerialPort_EINFO + __del__ = lambda self : None; +SerialPort_EINFO_swigregister = _wxctb.SerialPort_EINFO_swigregister +SerialPort_EINFO_swigregister(SerialPort_EINFO) + +CTB_SER_GETEINFO = _wxctb.CTB_SER_GETEINFO +CTB_SER_GETBRK = _wxctb.CTB_SER_GETBRK +CTB_SER_GETFRM = _wxctb.CTB_SER_GETFRM +CTB_SER_GETOVR = _wxctb.CTB_SER_GETOVR +CTB_SER_GETPAR = _wxctb.CTB_SER_GETPAR +CTB_SER_GETINQUE = _wxctb.CTB_SER_GETINQUE +CTB_SER_SETPAR = _wxctb.CTB_SER_SETPAR +class SerialPort_x(IOBase): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _wxctb.delete_SerialPort_x + __del__ = lambda self : None; + def ClassName(self): return _wxctb.SerialPort_x_ClassName(self) + def ChangeLineState(self, *args, **kwargs): return _wxctb.SerialPort_x_ChangeLineState(self, *args, **kwargs) + def ClrLineState(self, *args, **kwargs): return _wxctb.SerialPort_x_ClrLineState(self, *args, **kwargs) + def GetLineState(self): return _wxctb.SerialPort_x_GetLineState(self) + def GetSettingsAsString(self): return _wxctb.SerialPort_x_GetSettingsAsString(self) + def Ioctl(self, *args, **kwargs): return _wxctb.SerialPort_x_Ioctl(self, *args, **kwargs) + def SendBreak(self, *args, **kwargs): return _wxctb.SerialPort_x_SendBreak(self, *args, **kwargs) + def SetBaudrate(self, *args, **kwargs): return _wxctb.SerialPort_x_SetBaudrate(self, *args, **kwargs) + def SetLineState(self, *args, **kwargs): return _wxctb.SerialPort_x_SetLineState(self, *args, **kwargs) + def SetParityBit(self, *args, **kwargs): return _wxctb.SerialPort_x_SetParityBit(self, *args, **kwargs) + IsStandardRate = staticmethod(_wxctb.SerialPort_x_IsStandardRate) +SerialPort_x_swigregister = _wxctb.SerialPort_x_swigregister +SerialPort_x_swigregister(SerialPort_x) + +def SerialPort_x_IsStandardRate(*args, **kwargs): + return _wxctb.SerialPort_x_IsStandardRate(*args, **kwargs) +SerialPort_x_IsStandardRate = _wxctb.SerialPort_x_IsStandardRate + +COM1 = "/dev/ttyS0" +COM2 = "/dev/ttyS1" +COM3 = "/dev/ttyS2" +COM4 = "/dev/ttyS3" +COM5 = "/dev/ttyS4" +COM6 = "/dev/ttyS5" +COM7 = "/dev/ttyS6" +COM8 = "/dev/ttyS7" +COM9 = "/dev/ttyS8" + +class SerialPort(SerialPort_x): + thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag') + __repr__ = _swig_repr + def __init__(self): + this = _wxctb.new_SerialPort() + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _wxctb.delete_SerialPort + __del__ = lambda self : None; + def ChangeLineState(self, *args, **kwargs): return _wxctb.SerialPort_ChangeLineState(self, *args, **kwargs) + def ClrLineState(self, *args, **kwargs): return _wxctb.SerialPort_ClrLineState(self, *args, **kwargs) + def GetLineState(self): return _wxctb.SerialPort_GetLineState(self) + def Ioctl(self, *args, **kwargs): return _wxctb.SerialPort_Ioctl(self, *args, **kwargs) + def IsOpen(self): return _wxctb.SerialPort_IsOpen(self) + def Read(self, *args, **kwargs): return _wxctb.SerialPort_Read(self, *args, **kwargs) + def SendBreak(self, *args, **kwargs): return _wxctb.SerialPort_SendBreak(self, *args, **kwargs) + def SetBaudrate(self, *args, **kwargs): return _wxctb.SerialPort_SetBaudrate(self, *args, **kwargs) + def SetLineState(self, *args, **kwargs): return _wxctb.SerialPort_SetLineState(self, *args, **kwargs) + def SetParityBit(self, *args, **kwargs): return _wxctb.SerialPort_SetParityBit(self, *args, **kwargs) + def Write(self, *args, **kwargs): return _wxctb.SerialPort_Write(self, *args, **kwargs) +SerialPort_swigregister = _wxctb.SerialPort_swigregister +SerialPort_swigregister(SerialPort) + + +def GetKey(): + return _wxctb.GetKey() +GetKey = _wxctb.GetKey + + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb_wrap.cxx b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb_wrap.cxx new file mode 100644 index 0000000000..c72f220ded --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/linux/wxctb_wrap.cxx @@ -0,0 +1,6469 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.40 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#define SWIGPYTHON +#define SWIG_PYTHON_DIRECTOR_NO_VTABLE + + +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); + SwigValueWrapper(const SwigValueWrapper& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + + + +/* Python.h has to appear first */ +#include + +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic C API SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the SWIG runtime code. + In 99.9% of the cases, SWIG just needs to declare them as 'static'. + + But only do this if strictly necessary, ie, if you have problems + with your compiler or suchlike. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The SWIG conversion methods, as ConvertPtr, return and integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old versions of SWIG, code such as the following was usually written: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + which is the same really, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + also requires SWIG_ConvertPtr to return new result values, such as + + int SWIG_ConvertPtr(obj, ptr,...) { + if () { + if () { + *ptr = ; + return SWIG_NEWOBJ; + } else { + *ptr = ; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + SWIG errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() +*/ + +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class" == "Class", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like ||... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like ||... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCompare(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (strcmp(iter->type->name, c) == 0) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (iter->type == from) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + register size_t l = 0; + register size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + register size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + register int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + register size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + register const unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + register unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register char d = *(c++); + register unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +/* Compatibility macros for Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + +#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) +#define PyInt_Check(x) PyLong_Check(x) +#define PyInt_AsLong(x) PyLong_AsLong(x) +#define PyInt_FromLong(x) PyLong_FromLong(x) +#define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) + +#endif + +#ifndef Py_TYPE +# define Py_TYPE(op) ((op)->ob_type) +#endif + +/* SWIG APIs for compatibility of both Python 2 & 3 */ + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_FromFormat PyUnicode_FromFormat +#else +# define SWIG_Python_str_FromFormat PyString_FromFormat +#endif + + +/* Warning: This function will allocate a new string in Python 3, + * so please call SWIG_Python_str_DelForPy3(x) to free the space. + */ +SWIGINTERN char* +SWIG_Python_str_AsChar(PyObject *str) +{ +#if PY_VERSION_HEX >= 0x03000000 + char *cstr; + char *newstr; + Py_ssize_t len; + str = PyUnicode_AsUTF8String(str); + PyBytes_AsStringAndSize(str, &cstr, &len); + newstr = (char *) malloc(len+1); + memcpy(newstr, cstr, len+1); + Py_XDECREF(str); + return newstr; +#else + return PyString_AsString(str); +#endif +} + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) +#else +# define SWIG_Python_str_DelForPy3(x) +#endif + + +SWIGINTERN PyObject* +SWIG_Python_str_FromChar(const char *c) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromString(c); +#else + return PyString_FromString(c); +#endif +} + +/* Add PyOS_snprintf for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) +# define PyOS_snprintf _snprintf +# else +# define PyOS_snprintf snprintf +# endif +#endif + +/* A crude PyString_FromFormat implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 + +#ifndef SWIG_PYBUFFER_SIZE +# define SWIG_PYBUFFER_SIZE 1024 +#endif + +static PyObject * +PyString_FromFormat(const char *fmt, ...) { + va_list ap; + char buf[SWIG_PYBUFFER_SIZE * 2]; + int res; + va_start(ap, fmt); + res = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); +} +#endif + +/* Add PyObject_Del for old Pythons */ +#if PY_VERSION_HEX < 0x01060000 +# define PyObject_Del(op) PyMem_DEL((op)) +#endif +#ifndef PyObject_DEL +# define PyObject_DEL PyObject_Del +#endif + +/* A crude PyExc_StopIteration exception for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# ifndef PyExc_StopIteration +# define PyExc_StopIteration PyExc_RuntimeError +# endif +# ifndef PyObject_GenericGetAttr +# define PyObject_GenericGetAttr 0 +# endif +#endif + +/* Py_NotImplemented is defined in 2.1 and up. */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef Py_NotImplemented +# define Py_NotImplemented PyExc_RuntimeError +# endif +#endif + +/* A crude PyString_AsStringAndSize implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef PyString_AsStringAndSize +# define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} +# endif +#endif + +/* PySequence_Size for old Pythons */ +#if PY_VERSION_HEX < 0x02000000 +# ifndef PySequence_Size +# define PySequence_Size PySequence_Length +# endif +#endif + +/* PyBool_FromLong for old Pythons */ +#if PY_VERSION_HEX < 0x02030000 +static +PyObject *PyBool_FromLong(long ok) +{ + PyObject *result = ok ? Py_True : Py_False; + Py_INCREF(result); + return result; +} +#endif + +/* Py_ssize_t for old Pythons */ +/* This code is as recommended by: */ +/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ +#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) +typedef int Py_ssize_t; +# define PY_SSIZE_T_MAX INT_MAX +# define PY_SSIZE_T_MIN INT_MIN +#endif + +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIME PyObject* +SWIG_Python_ErrorType(int code) { + PyObject* type = 0; + switch(code) { + case SWIG_MemoryError: + type = PyExc_MemoryError; + break; + case SWIG_IOError: + type = PyExc_IOError; + break; + case SWIG_RuntimeError: + type = PyExc_RuntimeError; + break; + case SWIG_IndexError: + type = PyExc_IndexError; + break; + case SWIG_TypeError: + type = PyExc_TypeError; + break; + case SWIG_DivisionByZero: + type = PyExc_ZeroDivisionError; + break; + case SWIG_OverflowError: + type = PyExc_OverflowError; + break; + case SWIG_SyntaxError: + type = PyExc_SyntaxError; + break; + case SWIG_ValueError: + type = PyExc_ValueError; + break; + case SWIG_SystemError: + type = PyExc_SystemError; + break; + case SWIG_AttributeError: + type = PyExc_AttributeError; + break; + default: + type = PyExc_RuntimeError; + } + return type; +} + + +SWIGRUNTIME void +SWIG_Python_AddErrorMsg(const char* mesg) +{ + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + + if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); + if (value) { + char *tmp; + PyObject *old_str = PyObject_Str(value); + PyErr_Clear(); + Py_XINCREF(type); + + PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + Py_DECREF(value); + } else { + PyErr_SetString(PyExc_RuntimeError, mesg); + } +} + +#if defined(SWIG_PYTHON_NO_THREADS) +# if defined(SWIG_PYTHON_THREADS) +# undef SWIG_PYTHON_THREADS +# endif +#endif +#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ +# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) +# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ +# define SWIG_PYTHON_USE_GIL +# endif +# endif +# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ +# ifndef SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() +# endif +# ifdef __cplusplus /* C++ code */ + class SWIG_Python_Thread_Block { + bool status; + PyGILState_STATE state; + public: + void end() { if (status) { PyGILState_Release(state); status = false;} } + SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} + ~SWIG_Python_Thread_Block() { end(); } + }; + class SWIG_Python_Thread_Allow { + bool status; + PyThreadState *save; + public: + void end() { if (status) { PyEval_RestoreThread(save); status = false; }} + SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} + ~SWIG_Python_Thread_Allow() { end(); } + }; +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block +# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow +# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() +# else /* C code */ +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() +# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() +# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) +# endif +# else /* Old thread way, not implemented, user must provide it */ +# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) +# define SWIG_PYTHON_INITIALIZE_THREADS +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_END_BLOCK) +# define SWIG_PYTHON_THREAD_END_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# endif +# if !defined(SWIG_PYTHON_THREAD_END_ALLOW) +# define SWIG_PYTHON_THREAD_END_ALLOW +# endif +# endif +#else /* No thread support */ +# define SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# define SWIG_PYTHON_THREAD_END_BLOCK +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# define SWIG_PYTHON_THREAD_END_ALLOW +#endif + +/* ----------------------------------------------------------------------------- + * Python API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* cc-mode */ +#endif +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_PY_POINTER 4 +#define SWIG_PY_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + + +/* ----------------------------------------------------------------------------- + * Wrapper of PyInstanceMethod_New() used in Python 3 + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ +SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *self, PyObject *func) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyInstanceMethod_New(func); +#else + return NULL; +#endif +} + +#ifdef __cplusplus +#if 0 +{ /* cc-mode */ +#endif +} +#endif + + +/* ----------------------------------------------------------------------------- + * See the LICENSE file for information on copyright, usage and redistribution + * of SWIG, and the README file for authors - http://www.swig.org/release.html. + * + * pyrun.swg + * + * This file contains the runtime support for Python modules + * and includes code for managing global variables and pointer + * type checking. + * + * ----------------------------------------------------------------------------- */ + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(ptr, type, flags) +#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) +#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Python_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) +#define SWIG_NewClientData(obj) SwigPyClientData_New(obj) + +#define SWIG_SetErrorObj SWIG_Python_SetErrorObj +#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg +#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Runtime API implementation */ + +/* Error manipulation */ + +SWIGINTERN void +SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetObject(errtype, obj); + Py_DECREF(obj); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +SWIGINTERN void +SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(errtype, (char *) msg); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) + +/* Set a constant value */ + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { + PyDict_SetItemString(d, (char*) name, obj); + Py_DECREF(obj); +} + +/* Append a value to the result obj */ + +SWIGINTERN PyObject* +SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { +#if !defined(SWIG_PYTHON_OUTPUT_TUPLE) + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyList_Check(result)) { + PyObject *o2 = result; + result = PyList_New(1); + PyList_SetItem(result, 0, o2); + } + PyList_Append(result,obj); + Py_DECREF(obj); + } + return result; +#else + PyObject* o2; + PyObject* o3; + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyTuple_Check(result)) { + o2 = result; + result = PyTuple_New(1); + PyTuple_SET_ITEM(result, 0, o2); + } + o3 = PyTuple_New(1); + PyTuple_SET_ITEM(o3, 0, obj); + o2 = result; + result = PySequence_Concat(o2, o3); + Py_DECREF(o2); + Py_DECREF(o3); + } + return result; +#endif +} + +/* Unpack the argument tuple */ + +SWIGINTERN int +SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) +{ + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", + name, (min == max ? "" : "at least "), (int)min); + return 0; + } + } + if (!PyTuple_Check(args)) { + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { + register Py_ssize_t l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at least "), (int)min, (int)l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at most "), (int)max, (int)l); + return 0; + } else { + register int i; + for (i = 0; i < l; ++i) { + objs[i] = PyTuple_GET_ITEM(args, i); + } + for (; l < max; ++l) { + objs[l] = 0; + } + return i + 1; + } + } +} + +/* A functor is a function object with one single object argument */ +#if PY_VERSION_HEX >= 0x02020000 +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); +#else +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); +#endif + +/* + Helper for static pointer initialization for both C and C++ code, for example + static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); +*/ +#ifdef __cplusplus +#define SWIG_STATIC_POINTER(var) var +#else +#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var +#endif + +/* ----------------------------------------------------------------------------- + * Pointer declarations + * ----------------------------------------------------------------------------- */ + +/* Flags for new pointer objects */ +#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) +#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) + +#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* cc-mode */ +#endif +#endif + +/* How to access Py_None */ +#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# ifndef SWIG_PYTHON_NO_BUILD_NONE +# ifndef SWIG_PYTHON_BUILD_NONE +# define SWIG_PYTHON_BUILD_NONE +# endif +# endif +#endif + +#ifdef SWIG_PYTHON_BUILD_NONE +# ifdef Py_None +# undef Py_None +# define Py_None SWIG_Py_None() +# endif +SWIGRUNTIMEINLINE PyObject * +_SWIG_Py_None(void) +{ + PyObject *none = Py_BuildValue((char*)""); + Py_DECREF(none); + return none; +} +SWIGRUNTIME PyObject * +SWIG_Py_None(void) +{ + static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); + return none; +} +#endif + +/* The python void return value */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Py_Void(void) +{ + PyObject *none = Py_None; + Py_INCREF(none); + return none; +} + +/* SwigPyClientData */ + +typedef struct { + PyObject *klass; + PyObject *newraw; + PyObject *newargs; + PyObject *destroy; + int delargs; + int implicitconv; +} SwigPyClientData; + +SWIGRUNTIMEINLINE int +SWIG_Python_CheckImplicit(swig_type_info *ty) +{ + SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; + return data ? data->implicitconv : 0; +} + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_ExceptionType(swig_type_info *desc) { + SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; + PyObject *klass = data ? data->klass : 0; + return (klass ? klass : PyExc_RuntimeError); +} + + +SWIGRUNTIME SwigPyClientData * +SwigPyClientData_New(PyObject* obj) +{ + if (!obj) { + return 0; + } else { + SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); + /* the klass element */ + data->klass = obj; + Py_INCREF(data->klass); + /* the newraw method and newargs arguments used to create a new raw instance */ + if (PyClass_Check(obj)) { + data->newraw = 0; + data->newargs = obj; + Py_INCREF(obj); + } else { +#if (PY_VERSION_HEX < 0x02020000) + data->newraw = 0; +#else + data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); +#endif + if (data->newraw) { + Py_INCREF(data->newraw); + data->newargs = PyTuple_New(1); + PyTuple_SetItem(data->newargs, 0, obj); + } else { + data->newargs = obj; + } + Py_INCREF(data->newargs); + } + /* the destroy method, aka as the C++ delete method */ + data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); + if (PyErr_Occurred()) { + PyErr_Clear(); + data->destroy = 0; + } + if (data->destroy) { + int flags; + Py_INCREF(data->destroy); + flags = PyCFunction_GET_FLAGS(data->destroy); +#ifdef METH_O + data->delargs = !(flags & (METH_O)); +#else + data->delargs = 0; +#endif + } else { + data->delargs = 0; + } + data->implicitconv = 0; + return data; + } +} + +SWIGRUNTIME void +SwigPyClientData_Del(SwigPyClientData* data) +{ + Py_XDECREF(data->newraw); + Py_XDECREF(data->newargs); + Py_XDECREF(data->destroy); +} + +/* =============== SwigPyObject =====================*/ + +typedef struct { + PyObject_HEAD + void *ptr; + swig_type_info *ty; + int own; + PyObject *next; +} SwigPyObject; + +SWIGRUNTIME PyObject * +SwigPyObject_long(SwigPyObject *v) +{ + return PyLong_FromVoidPtr(v->ptr); +} + +SWIGRUNTIME PyObject * +SwigPyObject_format(const char* fmt, SwigPyObject *v) +{ + PyObject *res = NULL; + PyObject *args = PyTuple_New(1); + if (args) { + if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { + PyObject *ofmt = SWIG_Python_str_FromChar(fmt); + if (ofmt) { +#if PY_VERSION_HEX >= 0x03000000 + res = PyUnicode_Format(ofmt,args); +#else + res = PyString_Format(ofmt,args); +#endif + Py_DECREF(ofmt); + } + Py_DECREF(args); + } + } + return res; +} + +SWIGRUNTIME PyObject * +SwigPyObject_oct(SwigPyObject *v) +{ + return SwigPyObject_format("%o",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_hex(SwigPyObject *v) +{ + return SwigPyObject_format("%x",v); +} + +SWIGRUNTIME PyObject * +#ifdef METH_NOARGS +SwigPyObject_repr(SwigPyObject *v) +#else +SwigPyObject_repr(SwigPyObject *v, PyObject *args) +#endif +{ + const char *name = SWIG_TypePrettyName(v->ty); + PyObject *repr = SWIG_Python_str_FromFormat("", name, v); + if (v->next) { +#ifdef METH_NOARGS + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); +#else + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); +#endif +#if PY_VERSION_HEX >= 0x03000000 + PyObject *joined = PyUnicode_Concat(repr, nrep); + Py_DecRef(repr); + Py_DecRef(nrep); + repr = joined; +#else + PyString_ConcatAndDel(&repr,nrep); +#endif + } + return repr; +} + +SWIGRUNTIME int +SwigPyObject_print(SwigPyObject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) +{ + char *str; +#ifdef METH_NOARGS + PyObject *repr = SwigPyObject_repr(v); +#else + PyObject *repr = SwigPyObject_repr(v, NULL); +#endif + if (repr) { + str = SWIG_Python_str_AsChar(repr); + fputs(str, fp); + SWIG_Python_str_DelForPy3(str); + Py_DECREF(repr); + return 0; + } else { + return 1; + } +} + +SWIGRUNTIME PyObject * +SwigPyObject_str(SwigPyObject *v) +{ + char result[SWIG_BUFFER_SIZE]; + return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ? + SWIG_Python_str_FromChar(result) : 0; +} + +SWIGRUNTIME int +SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) +{ + void *i = v->ptr; + void *j = w->ptr; + return (i < j) ? -1 : ((i > j) ? 1 : 0); +} + +/* Added for Python 3.x, would it also be useful for Python 2.x? */ +SWIGRUNTIME PyObject* +SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) +{ + PyObject* res; + if( op != Py_EQ && op != Py_NE ) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + if( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ) + res = Py_True; + else + res = Py_False; + Py_INCREF(res); + return res; +} + + +SWIGRUNTIME PyTypeObject* _PySwigObject_type(void); + +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type(); + return type; +} + +SWIGRUNTIMEINLINE int +SwigPyObject_Check(PyObject *op) { + return (Py_TYPE(op) == SwigPyObject_type()) + || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own); + +SWIGRUNTIME void +SwigPyObject_dealloc(PyObject *v) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + PyObject *next = sobj->next; + if (sobj->own == SWIG_POINTER_OWN) { + swig_type_info *ty = sobj->ty; + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + PyObject *destroy = data ? data->destroy : 0; + if (destroy) { + /* destroy is always a VARARGS method */ + PyObject *res; + if (data->delargs) { + /* we need to create a temporary object to carry the destroy operation */ + PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); + res = SWIG_Python_CallFunctor(destroy, tmp); + Py_DECREF(tmp); + } else { + PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); + PyObject *mself = PyCFunction_GET_SELF(destroy); + res = ((*meth)(mself, v)); + } + Py_XDECREF(res); + } +#if !defined(SWIG_PYTHON_SILENT_MEMLEAK) + else { + const char *name = SWIG_TypePrettyName(ty); + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); + } +#endif + } + Py_XDECREF(next); + PyObject_DEL(v); +} + +SWIGRUNTIME PyObject* +SwigPyObject_append(PyObject* v, PyObject* next) +{ + SwigPyObject *sobj = (SwigPyObject *) v; +#ifndef METH_O + PyObject *tmp = 0; + if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; + next = tmp; +#endif + if (!SwigPyObject_Check(next)) { + return NULL; + } + sobj->next = next; + Py_INCREF(next); + return SWIG_Py_Void(); +} + +SWIGRUNTIME PyObject* +#ifdef METH_NOARGS +SwigPyObject_next(PyObject* v) +#else +SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (sobj->next) { + Py_INCREF(sobj->next); + return sobj->next; + } else { + return SWIG_Py_Void(); + } +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +SwigPyObject_disown(PyObject *v) +#else +SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = 0; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +SwigPyObject_acquire(PyObject *v) +#else +SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = SWIG_POINTER_OWN; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_own(PyObject *v, PyObject *args) +{ + PyObject *val = 0; +#if (PY_VERSION_HEX < 0x02020000) + if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) +#else + if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) +#endif + { + return NULL; + } + else + { + SwigPyObject *sobj = (SwigPyObject *)v; + PyObject *obj = PyBool_FromLong(sobj->own); + if (val) { +#ifdef METH_NOARGS + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v); + } else { + SwigPyObject_disown(v); + } +#else + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v,args); + } else { + SwigPyObject_disown(v,args); + } +#endif + } + return obj; + } +} + +#ifdef METH_O +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"aquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#else +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#endif + +#if PY_VERSION_HEX < 0x02020000 +SWIGINTERN PyObject * +SwigPyObject_getattr(SwigPyObject *sobj,char *name) +{ + return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); +} +#endif + +SWIGRUNTIME PyTypeObject* +_PySwigObject_type(void) { + static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; + + static PyNumberMethods SwigPyObject_as_number = { + (binaryfunc)0, /*nb_add*/ + (binaryfunc)0, /*nb_subtract*/ + (binaryfunc)0, /*nb_multiply*/ + /* nb_divide removed in Python 3 */ +#if PY_VERSION_HEX < 0x03000000 + (binaryfunc)0, /*nb_divide*/ +#endif + (binaryfunc)0, /*nb_remainder*/ + (binaryfunc)0, /*nb_divmod*/ + (ternaryfunc)0,/*nb_power*/ + (unaryfunc)0, /*nb_negative*/ + (unaryfunc)0, /*nb_positive*/ + (unaryfunc)0, /*nb_absolute*/ + (inquiry)0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ +#if PY_VERSION_HEX < 0x03000000 + 0, /*nb_coerce*/ +#endif + (unaryfunc)SwigPyObject_long, /*nb_int*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_long, /*nb_long*/ +#else + 0, /*nb_reserved*/ +#endif + (unaryfunc)0, /*nb_float*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_oct, /*nb_oct*/ + (unaryfunc)SwigPyObject_hex, /*nb_hex*/ +#endif +#if PY_VERSION_HEX >= 0x03000000 /* 3.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ +#elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ +#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ +#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ + 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ +#endif + }; + + static PyTypeObject swigpyobject_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp + = { + /* PyObject header changed in Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"SwigPyObject", /* tp_name */ + sizeof(SwigPyObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyObject_dealloc, /* tp_dealloc */ + (printfunc)SwigPyObject_print, /* tp_print */ +#if PY_VERSION_HEX < 0x02020000 + (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ +#else + (getattrfunc)0, /* tp_getattr */ +#endif + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03000000 + 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ +#else + (cmpfunc)SwigPyObject_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyObject_repr, /* tp_repr */ + &SwigPyObject_as_number, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)SwigPyObject_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigobject_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + (richcmpfunc)SwigPyObject_richcompare, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + swigobject_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + swigpyobject_type = tmp; + /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */ +#if PY_VERSION_HEX < 0x03000000 + swigpyobject_type.ob_type = &PyType_Type; +#endif + type_init = 1; + } + return &swigpyobject_type; +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own) +{ + SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); + if (sobj) { + sobj->ptr = ptr; + sobj->ty = ty; + sobj->own = own; + sobj->next = 0; + } + return (PyObject *)sobj; +} + +/* ----------------------------------------------------------------------------- + * Implements a simple Swig Packed type, and use it instead of string + * ----------------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + void *pack; + swig_type_info *ty; + size_t size; +} SwigPyPacked; + +SWIGRUNTIME int +SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) +{ + char result[SWIG_BUFFER_SIZE]; + fputs("pack, v->size, 0, sizeof(result))) { + fputs("at ", fp); + fputs(result, fp); + } + fputs(v->ty->name,fp); + fputs(">", fp); + return 0; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_repr(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + return SWIG_Python_str_FromFormat("", result, v->ty->name); + } else { + return SWIG_Python_str_FromFormat("", v->ty->name); + } +} + +SWIGRUNTIME PyObject * +SwigPyPacked_str(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ + return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); + } else { + return SWIG_Python_str_FromChar(v->ty->name); + } +} + +SWIGRUNTIME int +SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) +{ + size_t i = v->size; + size_t j = w->size; + int s = (i < j) ? -1 : ((i > j) ? 1 : 0); + return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); +} + +SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void); + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type(); + return type; +} + +SWIGRUNTIMEINLINE int +SwigPyPacked_Check(PyObject *op) { + return ((op)->ob_type == _PySwigPacked_type()) + || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); +} + +SWIGRUNTIME void +SwigPyPacked_dealloc(PyObject *v) +{ + if (SwigPyPacked_Check(v)) { + SwigPyPacked *sobj = (SwigPyPacked *) v; + free(sobj->pack); + } + PyObject_DEL(v); +} + +SWIGRUNTIME PyTypeObject* +_PySwigPacked_type(void) { + static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; + static PyTypeObject swigpypacked_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp + = { + /* PyObject header changed in Python 3 */ +#if PY_VERSION_HEX>=0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + (char *)"SwigPyPacked", /* tp_name */ + sizeof(SwigPyPacked), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ + (printfunc)SwigPyPacked_print, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX>=0x03000000 + 0, /* tp_reserved in 3.0.1 */ +#else + (cmpfunc)SwigPyPacked_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyPacked_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)SwigPyPacked_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigpacked_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + swigpypacked_type = tmp; + /* for Python 3 the ob_type already assigned in PyVarObject_HEAD_INIT() */ +#if PY_VERSION_HEX < 0x03000000 + swigpypacked_type.ob_type = &PyType_Type; +#endif + type_init = 1; + } + return &swigpypacked_type; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) +{ + SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); + if (sobj) { + void *pack = malloc(size); + if (pack) { + memcpy(pack, ptr, size); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = size; + } else { + PyObject_DEL((PyObject *) sobj); + sobj = 0; + } + } + return (PyObject *) sobj; +} + +SWIGRUNTIME swig_type_info * +SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) +{ + if (SwigPyPacked_Check(obj)) { + SwigPyPacked *sobj = (SwigPyPacked *)obj; + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; + } else { + return 0; + } +} + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIMEINLINE PyObject * +_SWIG_This(void) +{ + return SWIG_Python_str_FromChar("this"); +} + +SWIGRUNTIME PyObject * +SWIG_This(void) +{ + static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This(); + return swig_this; +} + +/* #define SWIG_PYTHON_SLOW_GETSET_THIS */ + +/* TODO: I don't know how to implement the fast getset in Python 3 right now */ +#if PY_VERSION_HEX>=0x03000000 +#define SWIG_PYTHON_SLOW_GETSET_THIS +#endif + +SWIGRUNTIME SwigPyObject * +SWIG_Python_GetSwigThis(PyObject *pyobj) +{ + if (SwigPyObject_Check(pyobj)) { + return (SwigPyObject *) pyobj; + } else { + PyObject *obj = 0; +#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) + if (PyInstance_Check(pyobj)) { + obj = _PyInstance_Lookup(pyobj, SWIG_This()); + } else { + PyObject **dictptr = _PyObject_GetDictPtr(pyobj); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; + } else { +#ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; + } +#endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } + } + } +#else + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } +#endif + if (obj && !SwigPyObject_Check(obj)) { + /* a PyObject is called 'this', try to get the 'real this' + SwigPyObject from it */ + return SWIG_Python_GetSwigThis(obj); + } + return (SwigPyObject *)obj; + } +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Python_AcquirePtr(PyObject *obj, int own) { + if (own == SWIG_POINTER_OWN) { + SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); + if (sobj) { + int oldown = sobj->own; + sobj->own = own; + return oldown; + } + } + return 0; +} + +/* Convert a pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { + if (!obj) return SWIG_ERROR; + if (obj == Py_None) { + if (ptr) *ptr = 0; + return SWIG_OK; + } else { + SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); + if (own) + *own = 0; + while (sobj) { + void *vptr = sobj->ptr; + if (ty) { + swig_type_info *to = sobj->ty; + if (to == ty) { + /* no type cast needed */ + if (ptr) *ptr = vptr; + break; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) { + sobj = (SwigPyObject *)sobj->next; + } else { + if (ptr) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } + break; + } + } + } else { + if (ptr) *ptr = vptr; + break; + } + } + if (sobj) { + if (own) + *own = *own | sobj->own; + if (flags & SWIG_POINTER_DISOWN) { + sobj->own = 0; + } + return SWIG_OK; + } else { + int res = SWIG_ERROR; + if (flags & SWIG_POINTER_IMPLICIT_CONV) { + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + if (data && !data->implicitconv) { + PyObject *klass = data->klass; + if (klass) { + PyObject *impconv; + data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ + impconv = SWIG_Python_CallFunctor(klass, obj); + data->implicitconv = 0; + if (PyErr_Occurred()) { + PyErr_Clear(); + impconv = 0; + } + if (impconv) { + SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); + if (iobj) { + void *vptr; + res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); + if (SWIG_IsOK(res)) { + if (ptr) { + *ptr = vptr; + /* transfer the ownership to 'ptr' */ + iobj->own = 0; + res = SWIG_AddCast(res); + res = SWIG_AddNewMask(res); + } else { + res = SWIG_AddCast(res); + } + } + } + Py_DECREF(impconv); + } + } + } + } + return res; + } + } +} + +/* Convert a function ptr value */ + +SWIGRUNTIME int +SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + if (!PyCFunction_Check(obj)) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; + + /* here we get the method pointer for callbacks */ + const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; + if (!desc) + return SWIG_ERROR; + if (ty) { + swig_cast_info *tc = SWIG_TypeCheck(desc,ty); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } else { + return SWIG_ERROR; + } + } else { + *ptr = vptr; + } + return SWIG_OK; + } +} + +/* Convert a packed value value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +/* ----------------------------------------------------------------------------- + * Create a new pointer object + * ----------------------------------------------------------------------------- */ + +/* + Create a new instance object, without calling __init__, and set the + 'this' attribute. +*/ + +SWIGRUNTIME PyObject* +SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) +{ +#if (PY_VERSION_HEX >= 0x02020000) + PyObject *inst = 0; + PyObject *newraw = data->newraw; + if (newraw) { + inst = PyObject_Call(newraw, data->newargs, NULL); + if (inst) { +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + PyDict_SetItem(dict, SWIG_This(), swig_this); + } + } +#else + PyObject *key = SWIG_This(); + PyObject_SetAttr(inst, key, swig_this); +#endif + } + } else { +#if PY_VERSION_HEX >= 0x03000000 + inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); + PyObject_SetAttr(inst, SWIG_This(), swig_this); + Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; +#else + PyObject *dict = PyDict_New(); + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); +#endif + } + return inst; +#else +#if (PY_VERSION_HEX >= 0x02010000) + PyObject *inst; + PyObject *dict = PyDict_New(); + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + return (PyObject *) inst; +#else + PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); + if (inst == NULL) { + return NULL; + } + inst->in_class = (PyClassObject *)data->newargs; + Py_INCREF(inst->in_class); + inst->in_dict = PyDict_New(); + if (inst->in_dict == NULL) { + Py_DECREF(inst); + return NULL; + } +#ifdef Py_TPFLAGS_HAVE_WEAKREFS + inst->in_weakreflist = NULL; +#endif +#ifdef Py_TPFLAGS_GC + PyObject_GC_Init(inst); +#endif + PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); + return (PyObject *) inst; +#endif +#endif +} + +SWIGRUNTIME void +SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) +{ + PyObject *dict; +#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + } + PyDict_SetItem(dict, SWIG_This(), swig_this); + return; + } +#endif + dict = PyObject_GetAttrString(inst, (char*)"__dict__"); + PyDict_SetItem(dict, SWIG_This(), swig_this); + Py_DECREF(dict); +} + + +SWIGINTERN PyObject * +SWIG_Python_InitShadowInstance(PyObject *args) { + PyObject *obj[2]; + if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) { + return NULL; + } else { + SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); + if (sthis) { + SwigPyObject_append((PyObject*) sthis, obj[1]); + } else { + SWIG_Python_SetSwigThis(obj[0], obj[1]); + } + return SWIG_Py_Void(); + } +} + +/* Create a new pointer object */ + +SWIGRUNTIME PyObject * +SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) { + if (!ptr) { + return SWIG_Py_Void(); + } else { + int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + PyObject *robj = SwigPyObject_New(ptr, type, own); + SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; + if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { + PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); + if (inst) { + Py_DECREF(robj); + robj = inst; + } + } + return robj; + } +} + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_LINK_RUNTIME +void *SWIG_ReturnGlobalTypeList(void *); +#endif + +SWIGRUNTIME swig_module_info * +SWIG_Python_GetModule(void) { + static void *type_pointer = (void *)0; + /* first check if module already created */ + if (!type_pointer) { +#ifdef SWIG_LINK_RUNTIME + type_pointer = SWIG_ReturnGlobalTypeList((void *)0); +#else + type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, + (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); + if (PyErr_Occurred()) { + PyErr_Clear(); + type_pointer = (void *)0; + } +#endif + } + return (swig_module_info *) type_pointer; +} + +#if PY_MAJOR_VERSION < 2 +/* PyModule_AddObject function was introduced in Python 2.0. The following function + is copied out of Python/modsupport.c in python version 2.3.4 */ +SWIGINTERN int +PyModule_AddObject(PyObject *m, char *name, PyObject *o) +{ + PyObject *dict; + if (!PyModule_Check(m)) { + PyErr_SetString(PyExc_TypeError, + "PyModule_AddObject() needs module as first arg"); + return SWIG_ERROR; + } + if (!o) { + PyErr_SetString(PyExc_TypeError, + "PyModule_AddObject() needs non-NULL value"); + return SWIG_ERROR; + } + + dict = PyModule_GetDict(m); + if (dict == NULL) { + /* Internal error -- modules must have a dict! */ + PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", + PyModule_GetName(m)); + return SWIG_ERROR; + } + if (PyDict_SetItemString(dict, name, o)) + return SWIG_ERROR; + Py_DECREF(o); + return SWIG_OK; +} +#endif + +SWIGRUNTIME void +SWIG_Python_DestroyModule(void *vptr) +{ + swig_module_info *swig_module = (swig_module_info *) vptr; + swig_type_info **types = swig_module->types; + size_t i; + for (i =0; i < swig_module->size; ++i) { + swig_type_info *ty = types[i]; + if (ty->owndata) { + SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; + if (data) SwigPyClientData_Del(data); + } + } + Py_DECREF(SWIG_This()); +} + +SWIGRUNTIME void +SWIG_Python_SetModule(swig_module_info *swig_module) { + static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */ + +#if PY_VERSION_HEX >= 0x03000000 + /* Add a dummy module object into sys.modules */ + PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); +#else + PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, + swig_empty_runtime_method_table); +#endif + PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +} + +/* The python cached type query */ +SWIGRUNTIME PyObject * +SWIG_Python_TypeCache(void) { + static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); + return cache; +} + +SWIGRUNTIME swig_type_info * +SWIG_Python_TypeQuery(const char *type) +{ + PyObject *cache = SWIG_Python_TypeCache(); + PyObject *key = SWIG_Python_str_FromChar(type); + PyObject *obj = PyDict_GetItem(cache, key); + swig_type_info *descriptor; + if (obj) { + descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); + } else { + swig_module_info *swig_module = SWIG_Python_GetModule(); + descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); + if (descriptor) { + obj = PyCObject_FromVoidPtr(descriptor, NULL); + PyDict_SetItem(cache, key, obj); + Py_DECREF(obj); + } + } + Py_DECREF(key); + return descriptor; +} + +/* + For backward compatibility only +*/ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) +#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) + +SWIGRUNTIME int +SWIG_Python_AddErrMesg(const char* mesg, int infront) +{ + if (PyErr_Occurred()) { + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + if (value) { + char *tmp; + PyObject *old_str = PyObject_Str(value); + Py_XINCREF(type); + PyErr_Clear(); + if (infront) { + PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); + } else { + PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); + } + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + } + return 1; + } else { + return 0; + } +} + +SWIGRUNTIME int +SWIG_Python_ArgFail(int argnum) +{ + if (PyErr_Occurred()) { + /* add information about failing argument */ + char mesg[256]; + PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); + return SWIG_Python_AddErrMesg(mesg, 1); + } else { + return 0; + } +} + +SWIGRUNTIMEINLINE const char * +SwigPyObject_GetDesc(PyObject *self) +{ + SwigPyObject *v = (SwigPyObject *)self; + swig_type_info *ty = v ? v->ty : 0; + return ty ? ty->str : (char*)""; +} + +SWIGRUNTIME void +SWIG_Python_TypeError(const char *type, PyObject *obj) +{ + if (type) { +#if defined(SWIG_COBJECT_TYPES) + if (obj && SwigPyObject_Check(obj)) { + const char *otype = (const char *) SwigPyObject_GetDesc(obj); + if (otype) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", + type, otype); + return; + } + } else +#endif + { + const char *otype = (obj ? obj->ob_type->tp_name : 0); + if (otype) { + PyObject *str = PyObject_Str(obj); + const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; + if (cstr) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", + type, otype, cstr); + SWIG_Python_str_DelForPy3(cstr); + } else { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", + type, otype); + } + Py_XDECREF(str); + return; + } + } + PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); + } else { + PyErr_Format(PyExc_TypeError, "unexpected type is received"); + } +} + + +/* Convert a pointer value, signal an exception on a type mismatch */ +SWIGRUNTIME void * +SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) { + void *result; + if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { + PyErr_Clear(); +#if SWIG_POINTER_EXCEPTION + if (flags) { + SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); + SWIG_Python_ArgFail(argnum); + } +#endif + } + return result; +} + + +#ifdef __cplusplus +#if 0 +{ /* cc-mode */ +#endif +} +#endif + + + +#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else + + + +/* -------- TYPES TABLE (BEGIN) -------- */ + +#define SWIGTYPE_p_char swig_types[0] +#define SWIGTYPE_p_ctb__IOBase swig_types[1] +#define SWIGTYPE_p_ctb__SerialPort swig_types[2] +#define SWIGTYPE_p_ctb__SerialPort_DCS swig_types[3] +#define SWIGTYPE_p_ctb__SerialPort_EINFO swig_types[4] +#define SWIGTYPE_p_ctb__SerialPort_x swig_types[5] +#define SWIGTYPE_p_ctb__Timer swig_types[6] +#define SWIGTYPE_p_ctb__timer_control swig_types[7] +#define SWIGTYPE_p_f_p_void__p_void swig_types[8] +#define SWIGTYPE_p_int swig_types[9] +#define SWIGTYPE_p_p_char swig_types[10] +static swig_type_info *swig_types[12]; +static swig_module_info swig_module = {swig_types, 11, 0, 0, 0, 0}; +#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) +#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +/* -------- TYPES TABLE (END) -------- */ + +#if (PY_VERSION_HEX <= 0x02000000) +# if !defined(SWIG_PYTHON_CLASSIC) +# error "This python version requires swig to be run with the '-classic' option" +# endif +#endif +#if (PY_VERSION_HEX <= 0x02020000) +# error "This python version requires swig to be run with the '-nomodern' option" +#endif +#if (PY_VERSION_HEX <= 0x02020000) +# error "This python version requires swig to be run with the '-nomodernargs' option" +#endif + +/*----------------------------------------------- + @(target):= _wxctb.so + ------------------------------------------------*/ +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_init PyInit__wxctb + +#else +# define SWIG_init init_wxctb + +#endif +#define SWIG_name "_wxctb" + +#define SWIGVERSION 0x010340 +#define SWIG_VERSION SWIGVERSION + + +#define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) +#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) + + +#include + + +namespace swig { + class SwigPtr_PyObject { + protected: + PyObject *_obj; + + public: + SwigPtr_PyObject() :_obj(0) + { + } + + SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) + { + Py_XINCREF(_obj); + } + + SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) + { + if (initial_ref) { + Py_XINCREF(_obj); + } + } + + SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) + { + Py_XINCREF(item._obj); + Py_XDECREF(_obj); + _obj = item._obj; + return *this; + } + + ~SwigPtr_PyObject() + { + Py_XDECREF(_obj); + } + + operator PyObject *() const + { + return _obj; + } + + PyObject *operator->() const + { + return _obj; + } + }; +} + + +namespace swig { + struct SwigVar_PyObject : SwigPtr_PyObject { + SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } + + SwigVar_PyObject & operator = (PyObject* obj) + { + Py_XDECREF(_obj); + _obj = obj; + return *this; + } + }; +} + + +#include "ctb-0.16/linux/timer.h" + + + static int *new_intp() { + return (new int); + } + + static int *copy_intp(int value) { + return (new int(static_cast< const int& >(value))); + } + + static void delete_intp(int *self) { + if (self) delete self; + } + + static void intp_assign(int *self, int value) { + *self = value; + } + + static int intp_value(int *self) { + return *self; + } + + +#include +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif + + +SWIGINTERN int +SWIG_AsVal_double (PyObject *obj, double *val) +{ + int res = SWIG_TypeError; + if (PyFloat_Check(obj)) { + if (val) *val = PyFloat_AsDouble(obj); + return SWIG_OK; + } else if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else if (PyLong_Check(obj)) { + double v = PyLong_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + double d = PyFloat_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = d; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); + } else { + PyErr_Clear(); + } + } + } +#endif + return res; +} + + +#include + + +#include + + +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} + + +SWIGINTERN int +SWIG_AsVal_long (PyObject *obj, long* val) +{ + if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else if (PyLong_Check(obj)) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_int (PyObject * obj, int *val) +{ + long v; + int res = SWIG_AsVal_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< int >(v); + } + } + return res; +} + + + #define SWIG_From_long PyInt_FromLong + + +SWIGINTERNINLINE PyObject * +SWIG_From_int (int value) +{ + return SWIG_From_long (value); +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) +{ + if (PyInt_Check(obj)) { + long v = PyInt_AsLong(obj); + if (v >= 0) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else if (PyLong_Check(obj)) { + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_int (PyObject * obj, unsigned int *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > UINT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< unsigned int >(v); + } + } + return res; +} + + +SWIGINTERNINLINE PyObject* +SWIG_From_unsigned_SS_long (unsigned long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLong(value) : PyInt_FromLong(static_cast< long >(value)); +} + + +SWIGINTERNINLINE PyObject * +SWIG_From_unsigned_SS_int (unsigned int value) +{ + return SWIG_From_unsigned_SS_long (value); +} + + +#include "ctb-0.16/linux/serport.h" + + +#include "ctb-0.16/serportx.h" + + +#include "ctb-0.16/iobase.h" + + +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_NewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromStringAndSize(carray, static_cast< int >(size)); +#else + return PyString_FromStringAndSize(carray, static_cast< int >(size)); +#endif + } + } else { + return SWIG_Py_Void(); + } +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtr(const char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); +} + + +SWIGINTERN int +SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) +{ +#if PY_VERSION_HEX>=0x03000000 + if (PyUnicode_Check(obj)) +#else + if (PyString_Check(obj)) +#endif + { + char *cstr; Py_ssize_t len; +#if PY_VERSION_HEX>=0x03000000 + if (!alloc && cptr) { + /* We can't allow converting without allocation, since the internal + representation of string in Python 3 is UCS-2/UCS-4 but we require + a UTF-8 representation. + TODO(bhy) More detailed explanation */ + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + PyBytes_AsStringAndSize(obj, &cstr, &len); + if(alloc) *alloc = SWIG_NEWOBJ; +#else + PyString_AsStringAndSize(obj, &cstr, &len); +#endif + if (cptr) { + if (alloc) { + /* + In python the user should not be able to modify the inner + string representation. To warranty that, if you define + SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string + buffer is always returned. + + The default behavior is just to return the pointer value, + so, be careful. + */ +#if defined(SWIG_PYTHON_SAFE_CSTRINGS) + if (*alloc != SWIG_OLDOBJ) +#else + if (*alloc == SWIG_NEWOBJ) +#endif + { + *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1))); + *alloc = SWIG_NEWOBJ; + } + else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } else { + #if PY_VERSION_HEX>=0x03000000 + assert(0); /* Should never reach here in Python 3 */ + #endif + *cptr = SWIG_Python_str_AsChar(obj); + } + } + if (psize) *psize = len + 1; +#if PY_VERSION_HEX>=0x03000000 + Py_XDECREF(obj); +#endif + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} + + + + + +SWIGINTERN int +SWIG_AsCharArray(PyObject * obj, char *val, size_t size) +{ + char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ; + int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc); + if (SWIG_IsOK(res)) { + if ((csize == size + 1) && cptr && !(cptr[csize-1])) --csize; + if (csize <= size) { + if (val) { + if (csize) memcpy(val, cptr, csize*sizeof(char)); + if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(char)); + } + if (alloc == SWIG_NEWOBJ) { + delete[] cptr; + res = SWIG_DelNewMask(res); + } + return res; + } + if (alloc == SWIG_NEWOBJ) delete[] cptr; + } + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_char (PyObject * obj, char *val) +{ + int res = SWIG_AsCharArray(obj, val, 1); + if (!SWIG_IsOK(res)) { + long v; + res = SWIG_AddCast(SWIG_AsVal_long (obj, &v)); + if (SWIG_IsOK(res)) { + if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) { + if (val) *val = static_cast< char >(v); + } else { + res = SWIG_OverflowError; + } + } + } + return res; +} + + +SWIGINTERNINLINE int +SWIG_AsVal_size_t (PyObject * obj, size_t *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v); + return res; +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_char (PyObject * obj, unsigned char *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > UCHAR_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< unsigned char >(v); + } + } + return res; +} + + +SWIGINTERNINLINE PyObject * +SWIG_From_unsigned_SS_char (unsigned char value) +{ + return SWIG_From_unsigned_SS_long (value); +} + + +SWIGINTERN int +SWIG_AsVal_bool (PyObject *obj, bool *val) +{ + int r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; +} + + +SWIGINTERNINLINE PyObject* + SWIG_From_bool (bool value) +{ + return PyBool_FromLong(value ? 1 : 0); +} + + +#include "ctb-0.16/kbhit.h" + + +SWIGINTERNINLINE PyObject * +SWIG_From_char (char c) +{ + return SWIG_FromCharPtrAndSize(&c,1); +} + +#ifdef __cplusplus +extern "C" { +#endif +SWIGINTERN PyObject *_wrap_new_intp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"new_intp",0,0)) SWIG_fail; + result = (int *)new_intp(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_copy_intp(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + char * kwnames[] = { + (char *) "value", NULL + }; + int *result = 0 ; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:copy_intp",kwnames,&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "copy_intp" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + result = (int *)copy_intp(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_intp(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int *arg1 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char * kwnames[] = { + (char *) "self", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:delete_intp",kwnames,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_intp" "', argument " "1"" of type '" "int *""'"); + } + arg1 = reinterpret_cast< int * >(argp1); + delete_intp(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_intp_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int *arg1 = (int *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "value", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:intp_assign",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intp_assign" "', argument " "1"" of type '" "int *""'"); + } + arg1 = reinterpret_cast< int * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "intp_assign" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + intp_assign(arg1,arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_intp_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int *arg1 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char * kwnames[] = { + (char *) "self", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:intp_value",kwnames,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intp_value" "', argument " "1"" of type '" "int *""'"); + } + arg1 = reinterpret_cast< int * >(argp1); + result = (int)intp_value(arg1); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_timer_control_usecs_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::timer_control *arg1 = (ctb::timer_control *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"timer_control_usecs_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__timer_control, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "timer_control_usecs_set" "', argument " "1"" of type '" "ctb::timer_control *""'"); + } + arg1 = reinterpret_cast< ctb::timer_control * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "timer_control_usecs_set" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + if (arg1) (arg1)->usecs = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_timer_control_usecs_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::timer_control *arg1 = (ctb::timer_control *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + unsigned int result; + + if(!PyArg_UnpackTuple(args,(char *)"timer_control_usecs_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__timer_control, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "timer_control_usecs_get" "', argument " "1"" of type '" "ctb::timer_control *""'"); + } + arg1 = reinterpret_cast< ctb::timer_control * >(argp1); + result = (unsigned int) ((arg1)->usecs); + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_timer_control_exitflag_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::timer_control *arg1 = (ctb::timer_control *) 0 ; + int *arg2 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"timer_control_exitflag_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__timer_control, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "timer_control_exitflag_set" "', argument " "1"" of type '" "ctb::timer_control *""'"); + } + arg1 = reinterpret_cast< ctb::timer_control * >(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_int, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "timer_control_exitflag_set" "', argument " "2"" of type '" "int *""'"); + } + arg2 = reinterpret_cast< int * >(argp2); + if (arg1) (arg1)->exitflag = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_timer_control_exitflag_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::timer_control *arg1 = (ctb::timer_control *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"timer_control_exitflag_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__timer_control, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "timer_control_exitflag_get" "', argument " "1"" of type '" "ctb::timer_control *""'"); + } + arg1 = reinterpret_cast< ctb::timer_control * >(argp1); + result = (int *) ((arg1)->exitflag); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_timer_control_exitfnc_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::timer_control *arg1 = (ctb::timer_control *) 0 ; + void *(*arg2)(void *) = (void *(*)(void *)) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"timer_control_exitfnc_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__timer_control, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "timer_control_exitfnc_set" "', argument " "1"" of type '" "ctb::timer_control *""'"); + } + arg1 = reinterpret_cast< ctb::timer_control * >(argp1); + { + int res = SWIG_ConvertFunctionPtr(obj1, (void**)(&arg2), SWIGTYPE_p_f_p_void__p_void); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in method '" "timer_control_exitfnc_set" "', argument " "2"" of type '" "void *(*)(void *)""'"); + } + } + if (arg1) (arg1)->exitfnc = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_timer_control_exitfnc_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::timer_control *arg1 = (ctb::timer_control *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + void *(*result)(void *) = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"timer_control_exitfnc_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__timer_control, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "timer_control_exitfnc_get" "', argument " "1"" of type '" "ctb::timer_control *""'"); + } + arg1 = reinterpret_cast< ctb::timer_control * >(argp1); + result = (void *(*)(void *)) ((arg1)->exitfnc); + resultobj = SWIG_NewFunctionPtrObj((void *)(result), SWIGTYPE_p_f_p_void__p_void); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *timer_control_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__timer_control, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_Timer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + unsigned int arg1 ; + int *arg2 = (int *) 0 ; + void *(*arg3)(void *) = (void *(*)(void *)) NULL ; + unsigned int val1 ; + int ecode1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "msec",(char *) "exitflag",(char *) "exitfnc", NULL + }; + ctb::Timer *result = 0 ; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|O:new_Timer",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_Timer" "', argument " "1"" of type '" "unsigned int""'"); + } + arg1 = static_cast< unsigned int >(val1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_Timer" "', argument " "2"" of type '" "int *""'"); + } + arg2 = reinterpret_cast< int * >(argp2); + if (obj2) { + { + int res = SWIG_ConvertFunctionPtr(obj2, (void**)(&arg3), SWIGTYPE_p_f_p_void__p_void); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in method '" "new_Timer" "', argument " "3"" of type '" "void *(*)(void *)""'"); + } + } + } + result = (ctb::Timer *)new ctb::Timer(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ctb__Timer, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_Timer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::Timer *arg1 = (ctb::Timer *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"delete_Timer",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__Timer, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Timer" "', argument " "1"" of type '" "ctb::Timer *""'"); + } + arg1 = reinterpret_cast< ctb::Timer * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Timer_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::Timer *arg1 = (ctb::Timer *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"Timer_start",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__Timer, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Timer_start" "', argument " "1"" of type '" "ctb::Timer *""'"); + } + arg1 = reinterpret_cast< ctb::Timer * >(argp1); + result = (int)(arg1)->start(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Timer_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::Timer *arg1 = (ctb::Timer *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"Timer_stop",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__Timer, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Timer_stop" "', argument " "1"" of type '" "ctb::Timer *""'"); + } + arg1 = reinterpret_cast< ctb::Timer * >(argp1); + result = (int)(arg1)->stop(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *Timer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__Timer, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_sleepms(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + unsigned int arg1 ; + unsigned int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + char * kwnames[] = { + (char *) "ms", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:sleepms",kwnames,&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "sleepms" "', argument " "1"" of type '" "unsigned int""'"); + } + arg1 = static_cast< unsigned int >(val1); + ctb::sleepms(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_IOBase(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"delete_IOBase",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_IOBase" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_ClassName(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"IOBase_ClassName",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_ClassName" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + result = (char *)(arg1)->ClassName(); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Close(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"IOBase_Close",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Close" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + result = (int)(arg1)->Close(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Ioctl(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + int arg2 ; + void *arg3 = (void *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "cmd",(char *) "args", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:IOBase_Ioctl",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Ioctl" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IOBase_Ioctl" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "IOBase_Ioctl" "', argument " "3"" of type '" "void *""'"); + } + result = (int)(arg1)->Ioctl(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_IsOpen(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"IOBase_IsOpen",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_IsOpen" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + result = (int)(arg1)->IsOpen(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Open(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char *arg2 = (char *) 0 ; + void *arg3 = (void *) 0L ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "devname",(char *) "dcs", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|O:IOBase_Open",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Open" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IOBase_Open" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (obj2) { + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "IOBase_Open" "', argument " "3"" of type '" "void *""'"); + } + } + result = (int)(arg1)->Open((char const *)arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_PutBack(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + char val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "ch", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:IOBase_PutBack",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_PutBack" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + ecode2 = SWIG_AsVal_char(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IOBase_PutBack" "', argument " "2"" of type '" "char""'"); + } + arg2 = static_cast< char >(val2); + result = (int)(arg1)->PutBack(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "buf",(char *) "len", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:IOBase_Read",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Read" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IOBase_Read" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IOBase_Read" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = static_cast< size_t >(val3); + result = (int)(arg1)->Read(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_ReadUntilEOS(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char **arg2 = 0 ; + size_t *arg3 = (size_t *) 0 ; + char *arg4 = (char *) "\n" ; + long arg5 = (long) 1000L ; + char arg6 = (char) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + char *tmp2 ; + size_t tmp3 ; + int res4 ; + char *buf4 = 0 ; + int alloc4 = 0 ; + long val5 ; + int ecode5 = 0 ; + char val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "readbuf",(char *) "readedBytes",(char *) "eosString",(char *) "timeout_in_ms",(char *) "quota", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO|OOO:IOBase_ReadUntilEOS",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_ReadUntilEOS" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + { + /* dont check for list */ + arg2 = &tmp2; + } + { + /* dont check for list */ + arg3 = &tmp3; + } + if (obj3) { + res4 = SWIG_AsCharPtrAndSize(obj3, &buf4, NULL, &alloc4); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "IOBase_ReadUntilEOS" "', argument " "4"" of type '" "char *""'"); + } + arg4 = reinterpret_cast< char * >(buf4); + } + if (obj4) { + ecode5 = SWIG_AsVal_long(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "IOBase_ReadUntilEOS" "', argument " "5"" of type '" "long""'"); + } + arg5 = static_cast< long >(val5); + } + if (obj5) { + ecode6 = SWIG_AsVal_char(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "IOBase_ReadUntilEOS" "', argument " "6"" of type '" "char""'"); + } + arg6 = static_cast< char >(val6); + } + result = (int)(arg1)->ReadUntilEOS(*arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_From_int(static_cast< int >(result)); + { + PyObject * plist = PyList_New(2); + PyList_SetItem(plist, 0, PyString_FromString(*arg2)); + PyList_SetItem(plist, 1, resultobj); + resultobj = plist; + delete *arg2; + } + { + PyList_Append(resultobj, PyInt_FromLong(*arg3)); + } + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + return resultobj; +fail: + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Readv(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + unsigned int arg4 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + unsigned int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "buf",(char *) "len",(char *) "timeout_in_ms", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOOO:IOBase_Readv",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Readv" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IOBase_Readv" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IOBase_Readv" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = static_cast< size_t >(val3); + ecode4 = SWIG_AsVal_unsigned_SS_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "IOBase_Readv" "', argument " "4"" of type '" "unsigned int""'"); + } + arg4 = static_cast< unsigned int >(val4); + result = (int)(arg1)->Readv(arg2,arg3,arg4); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Write(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "buf",(char *) "len", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:IOBase_Write",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Write" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IOBase_Write" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IOBase_Write" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = static_cast< size_t >(val3); + result = (int)(arg1)->Write(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_IOBase_Writev(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::IOBase *arg1 = (ctb::IOBase *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + unsigned int arg4 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + unsigned int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "buf",(char *) "len",(char *) "timeout_in_ms", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOOO:IOBase_Writev",kwnames,&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__IOBase, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IOBase_Writev" "', argument " "1"" of type '" "ctb::IOBase *""'"); + } + arg1 = reinterpret_cast< ctb::IOBase * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IOBase_Writev" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IOBase_Writev" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = static_cast< size_t >(val3); + ecode4 = SWIG_AsVal_unsigned_SS_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "IOBase_Writev" "', argument " "4"" of type '" "unsigned int""'"); + } + arg4 = static_cast< unsigned int >(val4); + result = (int)(arg1)->Writev(arg2,arg3,arg4); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *IOBase_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__IOBase, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_baud_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_baud_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_baud_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_DCS_baud_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + if (arg1) (arg1)->baud = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_baud_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_baud_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_baud_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (int) ((arg1)->baud); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_parity_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + ctb::Parity arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_parity_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_parity_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_DCS_parity_set" "', argument " "2"" of type '" "ctb::Parity""'"); + } + arg2 = static_cast< ctb::Parity >(val2); + if (arg1) (arg1)->parity = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_parity_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + ctb::Parity result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_parity_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_parity_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (ctb::Parity) ((arg1)->parity); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_wordlen_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + unsigned char arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned char val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_wordlen_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_wordlen_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_char(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_DCS_wordlen_set" "', argument " "2"" of type '" "unsigned char""'"); + } + arg2 = static_cast< unsigned char >(val2); + if (arg1) (arg1)->wordlen = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_wordlen_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + unsigned char result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_wordlen_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_wordlen_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (unsigned char) ((arg1)->wordlen); + resultobj = SWIG_From_unsigned_SS_char(static_cast< unsigned char >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_stopbits_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + unsigned char arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned char val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_stopbits_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_stopbits_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_char(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_DCS_stopbits_set" "', argument " "2"" of type '" "unsigned char""'"); + } + arg2 = static_cast< unsigned char >(val2); + if (arg1) (arg1)->stopbits = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_stopbits_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + unsigned char result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_stopbits_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_stopbits_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (unsigned char) ((arg1)->stopbits); + resultobj = SWIG_From_unsigned_SS_char(static_cast< unsigned char >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_rtscts_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + bool arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + bool val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_rtscts_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_rtscts_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + ecode2 = SWIG_AsVal_bool(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_DCS_rtscts_set" "', argument " "2"" of type '" "bool""'"); + } + arg2 = static_cast< bool >(val2); + if (arg1) (arg1)->rtscts = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_rtscts_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + bool result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_rtscts_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_rtscts_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (bool) ((arg1)->rtscts); + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_xonxoff_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + bool arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + bool val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_xonxoff_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_xonxoff_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + ecode2 = SWIG_AsVal_bool(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_DCS_xonxoff_set" "', argument " "2"" of type '" "bool""'"); + } + arg2 = static_cast< bool >(val2); + if (arg1) (arg1)->xonxoff = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_xonxoff_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + bool result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_xonxoff_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_xonxoff_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (bool) ((arg1)->xonxoff); + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_buf_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + char *arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + char temp2[16] ; + int res2 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_buf_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_buf_set" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + res2 = SWIG_AsCharArray(obj1, temp2, 16); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SerialPort_DCS_buf_set" "', argument " "2"" of type '" "char [16]""'"); + } + arg2 = reinterpret_cast< char * >(temp2); + if (arg2) memcpy(arg1->buf,arg2,16*sizeof(char)); + else memset(arg1->buf,0,16*sizeof(char)); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_buf_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_buf_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_buf_get" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (char *)(char *) ((arg1)->buf); + { + size_t size = 16; + + while (size && (result[size - 1] == '\0')) --size; + + resultobj = SWIG_FromCharPtrAndSize(result, size); + } + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_SerialPort_DCS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"new_SerialPort_DCS",0,0)) SWIG_fail; + result = (ctb::SerialPort_DCS *)new ctb::SerialPort_DCS(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ctb__SerialPort_DCS, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_SerialPort_DCS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"delete_SerialPort_DCS",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SerialPort_DCS" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_DCS_GetSettings(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_DCS *arg1 = (ctb::SerialPort_DCS *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_DCS_GetSettings",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_DCS, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_DCS_GetSettings" "', argument " "1"" of type '" "ctb::SerialPort_DCS *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_DCS * >(argp1); + result = (char *)(arg1)->GetSettings(); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *SerialPort_DCS_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__SerialPort_DCS, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_brk_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_brk_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_brk_set" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_EINFO_brk_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + if (arg1) (arg1)->brk = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_brk_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_brk_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_brk_get" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + result = (int) ((arg1)->brk); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_frame_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_frame_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_frame_set" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_EINFO_frame_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + if (arg1) (arg1)->frame = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_frame_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_frame_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_frame_get" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + result = (int) ((arg1)->frame); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_overrun_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_overrun_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_overrun_set" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_EINFO_overrun_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + if (arg1) (arg1)->overrun = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_overrun_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_overrun_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_overrun_get" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + result = (int) ((arg1)->overrun); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_parity_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_parity_set",2,2,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_parity_set" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_EINFO_parity_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + if (arg1) (arg1)->parity = arg2; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_EINFO_parity_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_EINFO_parity_get",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_EINFO_parity_get" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + result = (int) ((arg1)->parity); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_SerialPort_EINFO(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"new_SerialPort_EINFO",0,0)) SWIG_fail; + result = (ctb::SerialPort_EINFO *)new ctb::SerialPort_EINFO(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ctb__SerialPort_EINFO, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_SerialPort_EINFO(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_EINFO *arg1 = (ctb::SerialPort_EINFO *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"delete_SerialPort_EINFO",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_EINFO, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SerialPort_EINFO" "', argument " "1"" of type '" "ctb::SerialPort_EINFO *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_EINFO * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *SerialPort_EINFO_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__SerialPort_EINFO, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_delete_SerialPort_x(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"delete_SerialPort_x",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SerialPort_x" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_ClassName(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_x_ClassName",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_ClassName" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + result = (char *)(arg1)->ClassName(); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_ChangeLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + ctb::SerialLineState arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "flags", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_x_ChangeLineState",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_ChangeLineState" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_ChangeLineState" "', argument " "2"" of type '" "ctb::SerialLineState""'"); + } + arg2 = static_cast< ctb::SerialLineState >(val2); + result = (int)(arg1)->ChangeLineState(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_ClrLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + ctb::SerialLineState arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "flags", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_x_ClrLineState",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_ClrLineState" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_ClrLineState" "', argument " "2"" of type '" "ctb::SerialLineState""'"); + } + arg2 = static_cast< ctb::SerialLineState >(val2); + result = (int)(arg1)->ClrLineState(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_GetLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_x_GetLineState",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_GetLineState" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + result = (int)(arg1)->GetLineState(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_GetSettingsAsString(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + char *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_x_GetSettingsAsString",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_GetSettingsAsString" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + result = (char *)(arg1)->GetSettingsAsString(); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_Ioctl(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + int arg2 ; + void *arg3 = (void *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "cmd",(char *) "args", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:SerialPort_x_Ioctl",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_Ioctl" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_Ioctl" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SerialPort_x_Ioctl" "', argument " "3"" of type '" "void *""'"); + } + result = (int)(arg1)->Ioctl(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_SendBreak(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "duration", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_x_SendBreak",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_SendBreak" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_SendBreak" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + result = (int)(arg1)->SendBreak(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_SetBaudrate(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "baudrate", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_x_SetBaudrate",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_SetBaudrate" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_SetBaudrate" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + result = (int)(arg1)->SetBaudrate(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_SetLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + ctb::SerialLineState arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "flags", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_x_SetLineState",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_SetLineState" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_SetLineState" "', argument " "2"" of type '" "ctb::SerialLineState""'"); + } + arg2 = static_cast< ctb::SerialLineState >(val2); + result = (int)(arg1)->SetLineState(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_SetParityBit(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort_x *arg1 = (ctb::SerialPort_x *) 0 ; + bool arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + bool val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "parity", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_x_SetParityBit",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort_x, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_x_SetParityBit" "', argument " "1"" of type '" "ctb::SerialPort_x *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort_x * >(argp1); + ecode2 = SWIG_AsVal_bool(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_x_SetParityBit" "', argument " "2"" of type '" "bool""'"); + } + arg2 = static_cast< bool >(val2); + result = (int)(arg1)->SetParityBit(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_x_IsStandardRate(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + long arg1 ; + long val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + char * kwnames[] = { + (char *) "rate", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:SerialPort_x_IsStandardRate",kwnames,&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_long(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "SerialPort_x_IsStandardRate" "', argument " "1"" of type '" "long""'"); + } + arg1 = static_cast< long >(val1); + result = (bool)ctb::SerialPort_x::IsStandardRate(arg1); + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *SerialPort_x_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__SerialPort_x, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_SerialPort(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort *result = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"new_SerialPort",0,0)) SWIG_fail; + result = (ctb::SerialPort *)new ctb::SerialPort(); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ctb__SerialPort, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_SerialPort(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if(!PyArg_UnpackTuple(args,(char *)"delete_SerialPort",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SerialPort" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_ChangeLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + ctb::SerialLineState arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "flags", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_ChangeLineState",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_ChangeLineState" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_ChangeLineState" "', argument " "2"" of type '" "ctb::SerialLineState""'"); + } + arg2 = static_cast< ctb::SerialLineState >(val2); + result = (int)(arg1)->ChangeLineState(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_ClrLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + ctb::SerialLineState arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "flags", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_ClrLineState",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_ClrLineState" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_ClrLineState" "', argument " "2"" of type '" "ctb::SerialLineState""'"); + } + arg2 = static_cast< ctb::SerialLineState >(val2); + result = (int)(arg1)->ClrLineState(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_GetLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_GetLineState",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_GetLineState" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + result = (int)(arg1)->GetLineState(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_Ioctl(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + int arg2 ; + void *arg3 = (void *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "cmd",(char *) "args", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:SerialPort_Ioctl",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_Ioctl" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_Ioctl" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SerialPort_Ioctl" "', argument " "3"" of type '" "void *""'"); + } + result = (int)(arg1)->Ioctl(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_IsOpen(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if(!PyArg_UnpackTuple(args,(char *)"SerialPort_IsOpen",1,1,&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_IsOpen" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + result = (int)(arg1)->IsOpen(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_Read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "buf",(char *) "len", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:SerialPort_Read",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_Read" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SerialPort_Read" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "SerialPort_Read" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = static_cast< size_t >(val3); + result = (int)(arg1)->Read(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_SendBreak(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "duration", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_SendBreak",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_SendBreak" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_SendBreak" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + result = (int)(arg1)->SendBreak(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_SetBaudrate(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "baudrate", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_SetBaudrate",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_SetBaudrate" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_SetBaudrate" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + result = (int)(arg1)->SetBaudrate(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_SetLineState(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + ctb::SerialLineState arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "flags", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_SetLineState",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_SetLineState" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_SetLineState" "', argument " "2"" of type '" "ctb::SerialLineState""'"); + } + arg2 = static_cast< ctb::SerialLineState >(val2); + result = (int)(arg1)->SetLineState(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_SetParityBit(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + bool arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + bool val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "parity", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:SerialPort_SetParityBit",kwnames,&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_SetParityBit" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + ecode2 = SWIG_AsVal_bool(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SerialPort_SetParityBit" "', argument " "2"" of type '" "bool""'"); + } + arg2 = static_cast< bool >(val2); + result = (int)(arg1)->SetParityBit(arg2); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_SerialPort_Write(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + ctb::SerialPort *arg1 = (ctb::SerialPort *) 0 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *) "self",(char *) "buf",(char *) "len", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:SerialPort_Write",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ctb__SerialPort, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SerialPort_Write" "', argument " "1"" of type '" "ctb::SerialPort *""'"); + } + arg1 = reinterpret_cast< ctb::SerialPort * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SerialPort_Write" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "SerialPort_Write" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = static_cast< size_t >(val3); + result = (int)(arg1)->Write(arg2,arg3); + resultobj = SWIG_From_int(static_cast< int >(result)); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + +SWIGINTERN PyObject *SerialPort_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_ctb__SerialPort, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_GetKey(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char result; + + if(!PyArg_UnpackTuple(args,(char *)"GetKey",0,0)) SWIG_fail; + result = (char)ctb::GetKey(); + resultobj = SWIG_From_char(static_cast< char >(result)); + return resultobj; +fail: + return NULL; +} + + +static PyMethodDef SwigMethods[] = { + { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, + { (char *)"new_intp", _wrap_new_intp, METH_VARARGS, NULL}, + { (char *)"copy_intp", (PyCFunction) _wrap_copy_intp, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"delete_intp", (PyCFunction) _wrap_delete_intp, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"intp_assign", (PyCFunction) _wrap_intp_assign, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"intp_value", (PyCFunction) _wrap_intp_value, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"timer_control_usecs_set", _wrap_timer_control_usecs_set, METH_VARARGS, NULL}, + { (char *)"timer_control_usecs_get", _wrap_timer_control_usecs_get, METH_VARARGS, NULL}, + { (char *)"timer_control_exitflag_set", _wrap_timer_control_exitflag_set, METH_VARARGS, NULL}, + { (char *)"timer_control_exitflag_get", _wrap_timer_control_exitflag_get, METH_VARARGS, NULL}, + { (char *)"timer_control_exitfnc_set", _wrap_timer_control_exitfnc_set, METH_VARARGS, NULL}, + { (char *)"timer_control_exitfnc_get", _wrap_timer_control_exitfnc_get, METH_VARARGS, NULL}, + { (char *)"timer_control_swigregister", timer_control_swigregister, METH_VARARGS, NULL}, + { (char *)"new_Timer", (PyCFunction) _wrap_new_Timer, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"delete_Timer", _wrap_delete_Timer, METH_VARARGS, NULL}, + { (char *)"Timer_start", _wrap_Timer_start, METH_VARARGS, NULL}, + { (char *)"Timer_stop", _wrap_Timer_stop, METH_VARARGS, NULL}, + { (char *)"Timer_swigregister", Timer_swigregister, METH_VARARGS, NULL}, + { (char *)"sleepms", (PyCFunction) _wrap_sleepms, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"delete_IOBase", _wrap_delete_IOBase, METH_VARARGS, NULL}, + { (char *)"IOBase_ClassName", _wrap_IOBase_ClassName, METH_VARARGS, NULL}, + { (char *)"IOBase_Close", _wrap_IOBase_Close, METH_VARARGS, NULL}, + { (char *)"IOBase_Ioctl", (PyCFunction) _wrap_IOBase_Ioctl, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_IsOpen", _wrap_IOBase_IsOpen, METH_VARARGS, NULL}, + { (char *)"IOBase_Open", (PyCFunction) _wrap_IOBase_Open, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_PutBack", (PyCFunction) _wrap_IOBase_PutBack, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_Read", (PyCFunction) _wrap_IOBase_Read, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_ReadUntilEOS", (PyCFunction) _wrap_IOBase_ReadUntilEOS, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_Readv", (PyCFunction) _wrap_IOBase_Readv, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_Write", (PyCFunction) _wrap_IOBase_Write, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_Writev", (PyCFunction) _wrap_IOBase_Writev, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"IOBase_swigregister", IOBase_swigregister, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_baud_set", _wrap_SerialPort_DCS_baud_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_baud_get", _wrap_SerialPort_DCS_baud_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_parity_set", _wrap_SerialPort_DCS_parity_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_parity_get", _wrap_SerialPort_DCS_parity_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_wordlen_set", _wrap_SerialPort_DCS_wordlen_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_wordlen_get", _wrap_SerialPort_DCS_wordlen_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_stopbits_set", _wrap_SerialPort_DCS_stopbits_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_stopbits_get", _wrap_SerialPort_DCS_stopbits_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_rtscts_set", _wrap_SerialPort_DCS_rtscts_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_rtscts_get", _wrap_SerialPort_DCS_rtscts_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_xonxoff_set", _wrap_SerialPort_DCS_xonxoff_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_xonxoff_get", _wrap_SerialPort_DCS_xonxoff_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_buf_set", _wrap_SerialPort_DCS_buf_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_buf_get", _wrap_SerialPort_DCS_buf_get, METH_VARARGS, NULL}, + { (char *)"new_SerialPort_DCS", _wrap_new_SerialPort_DCS, METH_VARARGS, NULL}, + { (char *)"delete_SerialPort_DCS", _wrap_delete_SerialPort_DCS, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_GetSettings", _wrap_SerialPort_DCS_GetSettings, METH_VARARGS, NULL}, + { (char *)"SerialPort_DCS_swigregister", SerialPort_DCS_swigregister, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_brk_set", _wrap_SerialPort_EINFO_brk_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_brk_get", _wrap_SerialPort_EINFO_brk_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_frame_set", _wrap_SerialPort_EINFO_frame_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_frame_get", _wrap_SerialPort_EINFO_frame_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_overrun_set", _wrap_SerialPort_EINFO_overrun_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_overrun_get", _wrap_SerialPort_EINFO_overrun_get, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_parity_set", _wrap_SerialPort_EINFO_parity_set, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_parity_get", _wrap_SerialPort_EINFO_parity_get, METH_VARARGS, NULL}, + { (char *)"new_SerialPort_EINFO", _wrap_new_SerialPort_EINFO, METH_VARARGS, NULL}, + { (char *)"delete_SerialPort_EINFO", _wrap_delete_SerialPort_EINFO, METH_VARARGS, NULL}, + { (char *)"SerialPort_EINFO_swigregister", SerialPort_EINFO_swigregister, METH_VARARGS, NULL}, + { (char *)"delete_SerialPort_x", _wrap_delete_SerialPort_x, METH_VARARGS, NULL}, + { (char *)"SerialPort_x_ClassName", _wrap_SerialPort_x_ClassName, METH_VARARGS, NULL}, + { (char *)"SerialPort_x_ChangeLineState", (PyCFunction) _wrap_SerialPort_x_ChangeLineState, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_ClrLineState", (PyCFunction) _wrap_SerialPort_x_ClrLineState, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_GetLineState", _wrap_SerialPort_x_GetLineState, METH_VARARGS, NULL}, + { (char *)"SerialPort_x_GetSettingsAsString", _wrap_SerialPort_x_GetSettingsAsString, METH_VARARGS, NULL}, + { (char *)"SerialPort_x_Ioctl", (PyCFunction) _wrap_SerialPort_x_Ioctl, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_SendBreak", (PyCFunction) _wrap_SerialPort_x_SendBreak, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_SetBaudrate", (PyCFunction) _wrap_SerialPort_x_SetBaudrate, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_SetLineState", (PyCFunction) _wrap_SerialPort_x_SetLineState, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_SetParityBit", (PyCFunction) _wrap_SerialPort_x_SetParityBit, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_IsStandardRate", (PyCFunction) _wrap_SerialPort_x_IsStandardRate, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_x_swigregister", SerialPort_x_swigregister, METH_VARARGS, NULL}, + { (char *)"new_SerialPort", _wrap_new_SerialPort, METH_VARARGS, NULL}, + { (char *)"delete_SerialPort", _wrap_delete_SerialPort, METH_VARARGS, NULL}, + { (char *)"SerialPort_ChangeLineState", (PyCFunction) _wrap_SerialPort_ChangeLineState, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_ClrLineState", (PyCFunction) _wrap_SerialPort_ClrLineState, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_GetLineState", _wrap_SerialPort_GetLineState, METH_VARARGS, NULL}, + { (char *)"SerialPort_Ioctl", (PyCFunction) _wrap_SerialPort_Ioctl, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_IsOpen", _wrap_SerialPort_IsOpen, METH_VARARGS, NULL}, + { (char *)"SerialPort_Read", (PyCFunction) _wrap_SerialPort_Read, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_SendBreak", (PyCFunction) _wrap_SerialPort_SendBreak, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_SetBaudrate", (PyCFunction) _wrap_SerialPort_SetBaudrate, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_SetLineState", (PyCFunction) _wrap_SerialPort_SetLineState, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_SetParityBit", (PyCFunction) _wrap_SerialPort_SetParityBit, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_Write", (PyCFunction) _wrap_SerialPort_Write, METH_VARARGS | METH_KEYWORDS, NULL}, + { (char *)"SerialPort_swigregister", SerialPort_swigregister, METH_VARARGS, NULL}, + { (char *)"GetKey", _wrap_GetKey, METH_VARARGS, NULL}, + { NULL, NULL, 0, NULL } +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + +static void *_p_ctb__SerialPort_xTo_p_ctb__IOBase(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ctb::IOBase *) ((ctb::SerialPort_x *) x)); +} +static void *_p_ctb__SerialPortTo_p_ctb__IOBase(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ctb::IOBase *) (ctb::SerialPort_x *) ((ctb::SerialPort *) x)); +} +static void *_p_ctb__SerialPortTo_p_ctb__SerialPort_x(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ctb::SerialPort_x *) ((ctb::SerialPort *) x)); +} +static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__IOBase = {"_p_ctb__IOBase", "ctb::IOBase *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__SerialPort = {"_p_ctb__SerialPort", "ctb::SerialPort *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__SerialPort_DCS = {"_p_ctb__SerialPort_DCS", "ctb::SerialPort_DCS *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__SerialPort_EINFO = {"_p_ctb__SerialPort_EINFO", "ctb::SerialPort_EINFO *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__SerialPort_x = {"_p_ctb__SerialPort_x", "ctb::SerialPort_x *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__Timer = {"_p_ctb__Timer", "ctb::Timer *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ctb__timer_control = {"_p_ctb__timer_control", "ctb::timer_control *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_f_p_void__p_void = {"_p_f_p_void__p_void", "void *(*)(void *)", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_int = {"_p_int", "int *|size_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0}; + +static swig_type_info *swig_type_initial[] = { + &_swigt__p_char, + &_swigt__p_ctb__IOBase, + &_swigt__p_ctb__SerialPort, + &_swigt__p_ctb__SerialPort_DCS, + &_swigt__p_ctb__SerialPort_EINFO, + &_swigt__p_ctb__SerialPort_x, + &_swigt__p_ctb__Timer, + &_swigt__p_ctb__timer_control, + &_swigt__p_f_p_void__p_void, + &_swigt__p_int, + &_swigt__p_p_char, +}; + +static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__IOBase[] = { {&_swigt__p_ctb__IOBase, 0, 0, 0}, {&_swigt__p_ctb__SerialPort_x, _p_ctb__SerialPort_xTo_p_ctb__IOBase, 0, 0}, {&_swigt__p_ctb__SerialPort, _p_ctb__SerialPortTo_p_ctb__IOBase, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__SerialPort[] = { {&_swigt__p_ctb__SerialPort, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__SerialPort_DCS[] = { {&_swigt__p_ctb__SerialPort_DCS, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__SerialPort_EINFO[] = { {&_swigt__p_ctb__SerialPort_EINFO, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__SerialPort_x[] = { {&_swigt__p_ctb__SerialPort_x, 0, 0, 0}, {&_swigt__p_ctb__SerialPort, _p_ctb__SerialPortTo_p_ctb__SerialPort_x, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__Timer[] = { {&_swigt__p_ctb__Timer, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ctb__timer_control[] = { {&_swigt__p_ctb__timer_control, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_f_p_void__p_void[] = { {&_swigt__p_f_p_void__p_void, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}}; + +static swig_cast_info *swig_cast_initial[] = { + _swigc__p_char, + _swigc__p_ctb__IOBase, + _swigc__p_ctb__SerialPort, + _swigc__p_ctb__SerialPort_DCS, + _swigc__p_ctb__SerialPort_EINFO, + _swigc__p_ctb__SerialPort_x, + _swigc__p_ctb__Timer, + _swigc__p_ctb__timer_control, + _swigc__p_f_p_void__p_void, + _swigc__p_int, + _swigc__p_p_char, +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ + +static swig_const_info swig_const_table[] = { +{0, 0, 0, 0.0, 0, 0}}; + +#ifdef __cplusplus +} +#endif +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned staticly to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int found, init; + + clientdata = clientdata; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + module_head = &swig_module; + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + found=0; + iter=module_head; + do { + if (iter==&swig_module) { + found=1; + break; + } + iter=iter->next; + } while (iter!= module_head); + + /* if the is found in the list, then all is done and we may leave */ + if (found) return; + /* otherwise we must add out module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpeters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %d\n", swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ + /* c-mode */ +#endif +} +#endif + + + +#ifdef __cplusplus +extern "C" { +#endif + + /* Python-specific SWIG API */ +#define SWIG_newvarlink() SWIG_Python_newvarlink() +#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) +#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) + + /* ----------------------------------------------------------------------------- + * global variable support code. + * ----------------------------------------------------------------------------- */ + + typedef struct swig_globalvar { + char *name; /* Name of global variable */ + PyObject *(*get_attr)(void); /* Return the current value */ + int (*set_attr)(PyObject *); /* Set the value */ + struct swig_globalvar *next; + } swig_globalvar; + + typedef struct swig_varlinkobject { + PyObject_HEAD + swig_globalvar *vars; + } swig_varlinkobject; + + SWIGINTERN PyObject * + swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_InternFromString(""); +#else + return PyString_FromString(""); +#endif + } + + SWIGINTERN PyObject * + swig_varlink_str(swig_varlinkobject *v) { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *str = PyUnicode_InternFromString("("); + PyObject *tail; + PyObject *joined; + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + tail = PyUnicode_FromString(var->name); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + if (var->next) { + tail = PyUnicode_InternFromString(", "); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + } + } + tail = PyUnicode_InternFromString(")"); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; +#else + PyObject *str = PyString_FromString("("); + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + PyString_ConcatAndDel(&str,PyString_FromString(var->name)); + if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); + } + PyString_ConcatAndDel(&str,PyString_FromString(")")); +#endif + return str; + } + + SWIGINTERN int + swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { + char *tmp; + PyObject *str = swig_varlink_str(v); + fprintf(fp,"Swig global variables "); + fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(str); + return 0; + } + + SWIGINTERN void + swig_varlink_dealloc(swig_varlinkobject *v) { + swig_globalvar *var = v->vars; + while (var) { + swig_globalvar *n = var->next; + free(var->name); + free(var); + var = n; + } + } + + SWIGINTERN PyObject * + swig_varlink_getattr(swig_varlinkobject *v, char *n) { + PyObject *res = NULL; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->get_attr)(); + break; + } + var = var->next; + } + if (res == NULL && !PyErr_Occurred()) { + PyErr_SetString(PyExc_NameError,"Unknown C global variable"); + } + return res; + } + + SWIGINTERN int + swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { + int res = 1; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->set_attr)(p); + break; + } + var = var->next; + } + if (res == 1 && !PyErr_Occurred()) { + PyErr_SetString(PyExc_NameError,"Unknown C global variable"); + } + return res; + } + + SWIGINTERN PyTypeObject* + swig_varlink_type(void) { + static char varlink__doc__[] = "Swig var link object"; + static PyTypeObject varlink_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp + = { + /* PyObject header changed in Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(&PyType_Type, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* Number of items in variable part (ob_size) */ +#endif + (char *)"swigvarlink", /* Type name (tp_name) */ + sizeof(swig_varlinkobject), /* Basic size (tp_basicsize) */ + 0, /* Itemsize (tp_itemsize) */ + (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */ + (printfunc) swig_varlink_print, /* Print (tp_print) */ + (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */ + (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */ + 0, /* tp_compare */ + (reprfunc) swig_varlink_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) swig_varlink_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + varlink__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + varlink_type = tmp; + /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */ +#if PY_VERSION_HEX < 0x03000000 + varlink_type.ob_type = &PyType_Type; +#endif + type_init = 1; + } + return &varlink_type; + } + + /* Create a variable linking object for use later */ + SWIGINTERN PyObject * + SWIG_Python_newvarlink(void) { + swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); + if (result) { + result->vars = 0; + } + return ((PyObject*) result); + } + + SWIGINTERN void + SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { + swig_varlinkobject *v = (swig_varlinkobject *) p; + swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); + if (gv) { + size_t size = strlen(name)+1; + gv->name = (char *)malloc(size); + if (gv->name) { + strncpy(gv->name,name,size); + gv->get_attr = get_attr; + gv->set_attr = set_attr; + gv->next = v->vars; + } + } + v->vars = gv; + } + + SWIGINTERN PyObject * + SWIG_globals(void) { + static PyObject *_SWIG_globals = 0; + if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); + return _SWIG_globals; + } + + /* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + + /* Install Constants */ + SWIGINTERN void + SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { + PyObject *obj = 0; + size_t i; + for (i = 0; constants[i].type; ++i) { + switch(constants[i].type) { + case SWIG_PY_POINTER: + obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_PY_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + PyDict_SetItemString(d, constants[i].name, obj); + Py_DECREF(obj); + } + } + } + + /* -----------------------------------------------------------------------------*/ + /* Fix SwigMethods to carry the callback ptrs when needed */ + /* -----------------------------------------------------------------------------*/ + + SWIGINTERN void + SWIG_Python_FixMethods(PyMethodDef *methods, + swig_const_info *const_table, + swig_type_info **types, + swig_type_info **types_initial) { + size_t i; + for (i = 0; methods[i].ml_name; ++i) { + const char *c = methods[i].ml_doc; + if (c && (c = strstr(c, "swig_ptr: "))) { + int j; + swig_const_info *ci = 0; + const char *name = c + 10; + for (j = 0; const_table[j].type; ++j) { + if (strncmp(const_table[j].name, name, + strlen(const_table[j].name)) == 0) { + ci = &(const_table[j]); + break; + } + } + if (ci) { + size_t shift = (ci->ptype) - types; + swig_type_info *ty = types_initial[shift]; + size_t ldoc = (c - methods[i].ml_doc); + size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; + void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; + if (ptr) { + strncpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; + strncpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; + } + } + } + } + } + } + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" +#endif + +SWIGEXPORT +#if PY_VERSION_HEX >= 0x03000000 +PyObject* +#else +void +#endif +SWIG_init(void) { + PyObject *m, *d; +#if PY_VERSION_HEX >= 0x03000000 + static struct PyModuleDef SWIG_module = { + PyModuleDef_HEAD_INIT, + (char *) SWIG_name, + NULL, + -1, + SwigMethods, + NULL, + NULL, + NULL, + NULL + }; +#endif + + /* Fix SwigMethods to carry the callback ptrs when needed */ + SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); + +#if PY_VERSION_HEX >= 0x03000000 + m = PyModule_Create(&SWIG_module); +#else + m = Py_InitModule((char *) SWIG_name, SwigMethods); +#endif + d = PyModule_GetDict(m); + + SWIG_InitializeModule(0); + SWIG_InstallConstants(d,swig_const_table); + + + SWIG_Python_SetConstant(d, "CTB_RESET",SWIG_From_int(static_cast< int >(ctb::CTB_RESET))); + SWIG_Python_SetConstant(d, "ParityNone",SWIG_From_int(static_cast< int >(ctb::ParityNone))); + SWIG_Python_SetConstant(d, "ParityOdd",SWIG_From_int(static_cast< int >(ctb::ParityOdd))); + SWIG_Python_SetConstant(d, "ParityEven",SWIG_From_int(static_cast< int >(ctb::ParityEven))); + SWIG_Python_SetConstant(d, "ParityMark",SWIG_From_int(static_cast< int >(ctb::ParityMark))); + SWIG_Python_SetConstant(d, "ParitySpace",SWIG_From_int(static_cast< int >(ctb::ParitySpace))); + SWIG_Python_SetConstant(d, "LinestateDcd",SWIG_From_int(static_cast< int >(ctb::LinestateDcd))); + SWIG_Python_SetConstant(d, "LinestateCts",SWIG_From_int(static_cast< int >(ctb::LinestateCts))); + SWIG_Python_SetConstant(d, "LinestateDsr",SWIG_From_int(static_cast< int >(ctb::LinestateDsr))); + SWIG_Python_SetConstant(d, "LinestateDtr",SWIG_From_int(static_cast< int >(ctb::LinestateDtr))); + SWIG_Python_SetConstant(d, "LinestateRing",SWIG_From_int(static_cast< int >(ctb::LinestateRing))); + SWIG_Python_SetConstant(d, "LinestateRts",SWIG_From_int(static_cast< int >(ctb::LinestateRts))); + SWIG_Python_SetConstant(d, "LinestateNull",SWIG_From_int(static_cast< int >(ctb::LinestateNull))); + SWIG_Python_SetConstant(d, "CTB_SER_GETEINFO",SWIG_From_int(static_cast< int >(ctb::CTB_SER_GETEINFO))); + SWIG_Python_SetConstant(d, "CTB_SER_GETBRK",SWIG_From_int(static_cast< int >(ctb::CTB_SER_GETBRK))); + SWIG_Python_SetConstant(d, "CTB_SER_GETFRM",SWIG_From_int(static_cast< int >(ctb::CTB_SER_GETFRM))); + SWIG_Python_SetConstant(d, "CTB_SER_GETOVR",SWIG_From_int(static_cast< int >(ctb::CTB_SER_GETOVR))); + SWIG_Python_SetConstant(d, "CTB_SER_GETPAR",SWIG_From_int(static_cast< int >(ctb::CTB_SER_GETPAR))); + SWIG_Python_SetConstant(d, "CTB_SER_GETINQUE",SWIG_From_int(static_cast< int >(ctb::CTB_SER_GETINQUE))); + SWIG_Python_SetConstant(d, "CTB_SER_SETPAR",SWIG_From_int(static_cast< int >(ctb::CTB_SER_SETPAR))); +#if PY_VERSION_HEX >= 0x03000000 + return m; +#else + return; +#endif +} + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/serportx.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/serportx.i new file mode 100644 index 0000000000..083daddab4 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/serportx.i @@ -0,0 +1,84 @@ +%{ +#include "ctb-0.16/serportx.h" +%} + +%include iobase.i + +namespace ctb { + +enum Parity +{ + ParityNone, + ParityOdd, + ParityEven, + ParityMark, + ParitySpace +}; + +enum SerialLineState +{ + LinestateDcd = 0x040, + LinestateCts = 0x020, + LinestateDsr = 0x100, + LinestateDtr = 0x002, + LinestateRing = 0x080, + LinestateRts = 0x004, + LinestateNull = 0x000 +}; + +struct SerialPort_DCS +{ + int baud; + Parity parity; + unsigned char wordlen; + unsigned char stopbits; + bool rtscts; + bool xonxoff; + char buf[16]; + SerialPort_DCS(); + ~SerialPort_DCS(); + char* GetSettings(); +}; + +struct SerialPort_EINFO +{ + int brk; + int frame; + int overrun; + int parity; + SerialPort_EINFO(); + ~SerialPort_EINFO(); +}; + +enum { + CTB_SER_GETEINFO = CTB_SERIAL, + CTB_SER_GETBRK, + CTB_SER_GETFRM, + CTB_SER_GETOVR, + CTB_SER_GETPAR, + CTB_SER_GETINQUE, + CTB_SER_SETPAR, +}; + +class SerialPort_x : public IOBase +{ +protected: + SerialPort_DCS m_dcs; + char m_devname[SERIALPORT_NAME_LEN]; +public: + SerialPort_x(); + virtual ~SerialPort_x(); + const char* ClassName(); + virtual int ChangeLineState(SerialLineState flags) = 0; + virtual int ClrLineState(SerialLineState flags) = 0; + virtual int GetLineState() = 0; + virtual char* GetSettingsAsString(); + virtual int Ioctl(int cmd,void* args); + virtual int SendBreak(int duration) = 0; + virtual int SetBaudrate(int baudrate) = 0; + virtual int SetLineState(SerialLineState flags) = 0; + virtual int SetParityBit( bool parity ) = 0; + static bool IsStandardRate( long rate ); +}; + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/makepy.bat b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/makepy.bat new file mode 100644 index 0000000000..8320cb9e57 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/makepy.bat @@ -0,0 +1,65 @@ +@ECHO OFF + +REM ################################################################## +REM # set the path/settings of your compiler enviroment and remove the +REM # comment command (REM) +REM # (you don't need this, if you set it always in your system +REM # enviroment) +REM ################################################################## +REM CALL "c:\Programme\Microsoft Visual C++ Toolkit 2003\vcvars32.bat" + +REM ################################################################## +REM # set the path to your python24 (or python23) library, for example +REM # works for me with C:\Program Files\Python2.4\libs\python24.lib +REM ################################################################## +SET PYTHON_LIB="C:\Program Files\Python2.4\libs\python24.lib" + +REM ################################################################## +REM # set the include path of your python24 (python23) deleveloper +REM # header files. For me, it's on C:\Program Files +REM ################################################################## +SET PYTHON_INCLUDE="C:\Program Files\Python2.4\include" + +REM ################################################################## +REM # after installing swig, set the path, so the script can find it +REM ################################################################## +SET SWIG="C:\Program Files\swigwin-1.3.40\swig" + +REM ################################################################## +REM # DON'T CHANGE ANYMORE AT THE FOLLOWING LINES!!! +REM ################################################################## + +SET GPIB_LIB= +SET GPIB_SRC= + +ECHO // This file is created automatically, don't change it! > wxctb.i +ECHO %%module wxctb >> wxctb.i +ECHO typedef int size_t; >> wxctb.i +ECHO %%include timer.i >> wxctb.i +ECHO %%include serport.i >> wxctb.i +ECHO %%include ../kbhit.i >> wxctb.i + +IF NOT [%1]==[USE_GPIB] GOTO nogpib +SET GPIB_LIB=../../../lib/gpib32.lib +SET GPIB_SRC=../../../src/gpib.cpp +ECHO %%include ../gpib.i >> wxctb.i + +:nogpib + + +DEL *.obj wxctb_wrap.cxx *.lib *.dll *.exp + +ECHO "swig generates python wrapper files..." +%SWIG% -c++ -Wall -nodefault -python -keyword -new_repr -modern wxctb.i + +ECHO "create shared library wxctb for python 2.4..." +cl /LD /D WIN32 /I %PYTHON_INCLUDE% /I ../../../include wxctb_wrap.cxx ../../../src/win32/serport.cpp ../../../src/serportx.cpp ../../../src/win32/timer.cpp ../../../src/kbhit.cpp ../../../src/iobase.cpp %GPIB_SRC% ../../../src/fifo.cpp /link %PYTHON_LIB% winmm.lib %GPIB_LIB% + +MOVE wxctb_wrap.dll _wxctb.dll + +ECHO "copy ctb.py, wxctb.py and _wxctb.so to the module/win32 folder..." +MKDIR ..\..\module\win32 +COPY ..\ctb.py ..\..\module\win32 +COPY wxctb.py ..\..\module\win32 +COPY _wxctb.dll ..\..\module\win32 + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/serport.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/serport.i new file mode 100644 index 0000000000..84cb69887c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/serport.i @@ -0,0 +1,57 @@ +%{ +#include "ctb-0.16/win32/serport.h" +%} + +%include ../serportx.i + +namespace ctb { + +%pythoncode { +COM1 = "com1" +COM2 = "com2" +COM3 = "com3" +COM4 = "com4" +COM5 = "com5" +COM6 = "com6" +COM7 = "com7" +COM8 = "com8" +COM9 = "com9" +COM10 = "\\\\.\\com10" +COM11 = "\\\\.\\com11" +COM12 = "\\\\.\\com12" +COM13 = "\\\\.\\com13" +COM14 = "\\\\.\\com14" +COM15 = "\\\\.\\com15" +COM16 = "\\\\.\\com16" +COM17 = "\\\\.\\com17" +COM18 = "\\\\.\\com18" +COM19 = "\\\\.\\com19" +}; + +class SerialPort : public SerialPort_x +{ +protected: + HANDLE fd; + OVERLAPPED ov; + SerialPort_EINFO einfo; + + int CloseDevice(); + int OpenDevice(const char* devname, void* dcs); +public: + SerialPort(); + ~SerialPort(); + + int ChangeLineState(SerialLineState flags); + int ClrLineState(SerialLineState flags); + int GetLineState(); + int Ioctl(int cmd,void* args); + int IsOpen(); + int Read(char* buf,size_t len); + int SendBreak(int duration); + int SetBaudrate(int baudrate); + int SetLineState(SerialLineState flags); + int SetParityBit( bool parity ); + int Write(char* buf,size_t len); +}; + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/timer.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/timer.i new file mode 100644 index 0000000000..b95f26a0d4 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/timer.i @@ -0,0 +1,39 @@ +%{ +#include "ctb-0.16/win32/timer.h" +%} + +%include cpointer.i + +// lets create new fuctions for pointer handling in python (for int *exitflag) +%pointer_functions(int, intp); + +namespace ctb { + +// perhaps we doesn''t need timer_control to export +// but we need if we want to inherit from timer in python +struct timer_control +{ + unsigned int msecs; + int *exitflag; + MMRESULT stop; + void* (*exitfnc)(void*); +}; + +class Timer +{ +protected: + + DWORD id; + MMRESULT h; + timer_control control; + unsigned int timer_secs; +public: + Timer(unsigned int msec,int* exitflag,void*(*exitfnc)(void*)=NULL); + ~Timer(); + int start(); + int stop(); +}; + +void sleepms(unsigned int ms); + +}; diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/wxctb.i b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/wxctb.i new file mode 100644 index 0000000000..d00350fb03 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/python/src/win32/wxctb.i @@ -0,0 +1,6 @@ +// This file is created automatically, don't change it! +%module wxctb +typedef int size_t; +%include timer.i +%include serport.i +%include ../kbhit.i diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/samples/ctbtest.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/samples/ctbtest.cpp new file mode 100644 index 0000000000..bf84e20ed7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/samples/ctbtest.cpp @@ -0,0 +1,181 @@ +#include "ctb-0.16/ctb.h" + +#include +#include +#include + +#include +#include + +using namespace std; + +// ----------------- options ------------------------------- +const char* options="a:b:d:e:hlp:t:"; + +const char* helpMessage = +{ + "A simple serial port class test\n" + "ctbtest [options]\n" + "available options are:\n" + "-a : address (only GPIB)\n" + "-b : baudrate [any value], default is 38400\n" + "-d : connected device, default is COM1\n" + "-e : eos\n" + "-h : print this\n" + "-l : list all available serial ports\n" + "-p : protocol like 8N1\n" + "-t : communication timeout in ms (default is 100ms)\n" +}; + +int main(int argc,char* argv[]) +{ + int address = 15; + + int baudrate = 19200; + + string devname = ctb::COM1; + + string eos = "\r\n"; + + string protocol = "8N1"; + + int timeout = 100; + + bool showAvailablePorts = false; + + int quit = 0; + + int val; + + while ( ( val=getopt( argc, argv, (char*)options ) ) != EOF ) { + switch ( val ) { + case 'a' : address = strtol( optarg, NULL, 10 ); break; + case 'b' : baudrate = strtol( optarg, NULL, 10 ); break; + case 'd' : devname = optarg; break; + case 'h' : cerr << helpMessage << endl; exit( 0 ); + case 'l' : showAvailablePorts = true; break; + case 'p' : protocol = optarg; break; + case 't' : timeout = strtol( optarg, NULL, 10 ); break; + } + } + + ctb::IOBase* device = NULL; + + std::vector ports; + + if( ctb::GetAvailablePorts( ports ) && showAvailablePorts ) { + + for( int i = 0; i < ports.size(); + std::cout << ports[ i++ ] << endl ) {}; + + return 0; + + } + + +#if ( GPIB ) + if( ( devname == ctb::GPIB1 ) || ( devname == ctb::GPIB2 ) ) { + + ctb::GpibDevice* gpibDevice = new ctb::GpibDevice(); + + if( gpibDevice->Open( devname.c_str(), address ) >= 0 ) { + + device = gpibDevice; + + } + + } + else { +#endif + + ctb::SerialPort* serialPort = new ctb::SerialPort(); + + if( serialPort->Open( devname.c_str(), baudrate, + protocol.c_str(), + ctb::SerialPort::NoFlowControl ) >= 0 ) { + + device = serialPort; + + } + +#if ( GPIB ) + } +#endif + + if( ! device ) { + + cout << "Cannot open " << devname.c_str() << endl; + + return -1; + + } + + // up to know you don't have to worry any longer about the kind of + // the connected device. As long as you do nothing something device + // specific (like toggle some modem control lines), the access is + // the same for each device. + + string line; + + char receiveBuf[ 128 ]; + + cout << "Enter your command or just press Enter without any\n" + "input for exit!"; + + while( true ) { + + cout << endl << "Your input >"; + + // read the string to send + getline( cin, line ); + + // add some defined EOS (end of string sequence or character) + if( line.empty() ) { + + break; + + } + + line += eos; + + // send data throughout the connected device independent of the typ + if( device->Writev( (char*)line.c_str(), + line.size(), + timeout ) != line.size() ) { + + cerr << "Incomplete data transmission" << endl; + + } + + int readed = 0; + + do { + + // in case of an event driven GUI you better use a non blocking + // Read(...) in your idle function. Here we have to wait for the + // response before we send another user command... + readed = device->Readv( receiveBuf, + sizeof( receiveBuf ) - 1, + timeout); + + // something received? + if( readed > 0 ) { + + receiveBuf[ readed ] = 0; + + cout << receiveBuf; + + } + + } while( readed > 0 ); + + cout << endl; + + } // while( true ) + + device->Close(); + + delete device; + + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/fifo.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/fifo.cpp new file mode 100644 index 0000000000..c03e320846 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/fifo.cpp @@ -0,0 +1,130 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fifo.cpp +// Purpose: +// Author: Joachim Buermann, Michael Hungershausen +// Id: $Id$ +// Copyright: (c) 2006,2007 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "ctb-0.16/fifo.h" + +namespace ctb { + + Fifo::Fifo(size_t size) : + m_size(size) + { + m_begin = new char[size]; + m_end = m_begin + m_size; + m_rdptr = m_wrptr = m_begin; + }; + + Fifo::~Fifo() + { + delete m_begin; + }; + + void Fifo::clear() + { + m_rdptr = m_wrptr = m_begin; + }; + + int Fifo::get(char* ch) + { + if(m_rdptr != m_wrptr) { + *ch = *m_rdptr++; + if(m_rdptr >= m_end) { + m_rdptr = m_begin; + } + return 1; + } + return 0; + }; + + size_t Fifo::items() + { + char* tmp_wrptr = m_wrptr; + // the rdptr will only changed by the reader. If we suppose, that + // the caller of the items() method is identical with the reader, + // this should be thread save. + char* tmp_rdptr = m_rdptr; + + // if the write pointer is identical with the read, there are no + // more data in the Fifo + if(tmp_wrptr == tmp_rdptr) { + return 0; + } + // the write pointer is greater as the read pointer, so we just + // can calculate the difference for the remaining data + if(tmp_wrptr > tmp_rdptr) { + return (tmp_wrptr - tmp_rdptr); + } + // the write pointer has circulate and stands against the read + // pointer + else { + return (m_size - (tmp_rdptr - tmp_wrptr)); + } + }; + + int Fifo::put(char ch) + { + // for a thread safe operation, the write of a data byte must be + // atomic. So we first assign the current position of the write + // pointer to a temporary pointer. + // Increment it for the comparison with the end of the internal + // buffer and the read pointer + char* tmp_wrptr = m_wrptr + 1; + if(tmp_wrptr >= m_end) { + tmp_wrptr = m_begin; + } + if(tmp_wrptr == m_rdptr) { + return 0; + } + // this don't changes the write pointer! + *m_wrptr = ch; + // that's the trick! The following assignment is atomic and cannot + // interrupted within a read access by the read thread + m_wrptr = tmp_wrptr; + return 1; + }; + + int Fifo::read(char* data,int n) + { + int nresult = 0; + while(n--) { + // the same as get() + if(m_rdptr != m_wrptr) { + *data = *m_rdptr++; + if(m_rdptr >= m_end) { + m_rdptr = m_begin; + } + } + else { + break; + } + nresult++; + data++; + } + return nresult; + }; + + int Fifo::write(char* data,int n) + { + int nresult = 0; + while(n--) { + // the same as put() + char* tmp_wrptr = m_wrptr + 1; + if(tmp_wrptr >= m_end) { + tmp_wrptr = m_begin; + } + if(tmp_wrptr == m_rdptr) { + break; + } + *m_wrptr = *data++; + m_wrptr = tmp_wrptr; + nresult++; + } + return nresult; + }; + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/getopt.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/getopt.cpp new file mode 100644 index 0000000000..69afb2e7b7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/getopt.cpp @@ -0,0 +1,14 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: getopt.cpp +// Purpose: simple wrapper file +// Author: Joachim Buermann +// Id: $Id: timer.h,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#if defined (WIN32) +# include "win32/getopt.cpp" +#endif + + diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/gpib.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/gpib.cpp new file mode 100644 index 0000000000..f6ee5b3d7d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/gpib.cpp @@ -0,0 +1,338 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: gpibx.cpp +// Purpose: +// Author: Joachim Buermann +// Id: $Id: gpibx.cpp,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001,2004 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "ctb-0.16/gpib.h" +#include "ctb-0.16/timer.h" +#include +#include +#ifdef WIN32 +# include "ctb-0.16/win32/gpib-32.h" +# define snprintf _snprintf +#elif __GNUG__ +# include +#endif + +namespace ctb { + + const char* GPIB1 = "gpib1"; + const char* GPIB2 = "gpib2"; + + struct gpibErr_t { + int m_errno; + const char* m_notation; + const char* m_description; + }; + + static gpibErr_t gpibErrors[] = { + {0,"EDVR","DOS Error"}, + {1,"ECIC","Specified GPIB Interface Board is Not Active Controller"}, + {2,"ENOL","No present listing device"}, + {3,"EADR","GPIB Board has not been addressed properly"}, + {4,"EARG","Invalid argument"}, + {5,"ESAC","Specified GPIB Interface Board is not System Controller"}, + {6,"EABO","I/O operation aborted (time-out)"}, + {7,"ENEB","Non-existent GPIB board"}, + {10,"EOIP","Routine not allowed during asynchronous I/O operation"}, + {11,"ECAP","No capability for operation"}, + {12,"EFSO","File System Error"}, + {14,"EBUS","Command byte transfer error"}, + {15,"ESTB","Serial poll status byte lost"}, + {16,"ESQR","SRQ stuck in ON position"}, + {20,"ETAB","Table problem"}, + {247,"EINT","No interrupt configured on board"}, + {248,"EWMD","Windows is not in Enhanced mode"}, + {249,"EVDD","GPIB driver is not installed"}, + {250,"EOVR","Buffer Overflow"}, + {251,"ESML","Two library calls running simultaneously"}, + {252,"ECFG","Board type does not match GPIB.CFG"}, + {253,"ETMR","No Windows timers available"}, + {254,"ESLC","No Windows selectors available"}, + {255,"EBRK","Control-Break pressed"} + }; + + char* Gpib_DCS::GetSettings() + { + const char* to[] = { + "None","10us","30us","100us","300us","1ms","3ms","10ms","30ms", + "100ms","300ms","1s","3s","10s","30s","100s","300s","1000s" + }; + memset(m_buf,0,sizeof(m_buf)); + snprintf(m_buf,sizeof(m_buf)-1,"Adr: (%i,%i) to:%s", + m_address1, + m_address2, + to[m_timeout]); + return m_buf; + }; + + int GpibDevice::CloseDevice() + { + if(m_hd != -1) { + // goto local... + ibloc(m_hd); + // ...and switch device offline + ibonl(m_hd,0); + m_hd = -1; + m_board = -1; + } + return 0; + }; + + const char* GpibDevice::GetErrorString(int error,bool detailed) + { + for(size_t i=0;i<(sizeof(gpibErrors)/sizeof(gpibErr_t));i++) { + if(gpibErrors[i].m_errno == error) { + if(detailed) { + return gpibErrors[i].m_description; + } + else { + return gpibErrors[i].m_notation; + } + } + } + return 0; + }; + +// This is only for internal usage + int GpibDevice::Ibrd(char* buf,size_t len) + { + return ibrd(m_hd,buf,len); + }; + +// This is only for internal usage + int GpibDevice::Ibwrt(char* buf,size_t len) + { + return ibwrt(m_hd,buf,len); + }; + + int GpibDevice::Ioctl(int cmd,void* args) + { + switch(cmd) { + case CTB_RESET: + if(m_hd >= 0) { + ibclr(m_hd); + return 0; + } + return -1; + case CTB_GPIB_GETRSP: { + char spr = 0; + if(m_hd >= 0) { + ibrsp(m_hd,&spr); + *(int*)args = (int)spr; + return 0; + } + return 1; } + case CTB_GPIB_GETSTA: + *(int*)args = m_state; + return 0; + case CTB_GPIB_GETERR: + *(int*)args = m_error; + return 0; + case CTB_GPIB_GETLINES: { + short state = 0; + if(m_hd >= 0) { + iblines(m_board,&state); + *(int*)args = (int)state; + return 0; + } + return -1; } + case CTB_GPIB_SETTIMEOUT: { + if(m_hd >= 0) { + GpibTimeout timeout; + unsigned long to = *(unsigned long*)args; + // convert the timeout in ms (given by args) into the + // traditional NI-488.2 timeout period + if(to > 1000000) timeout = GpibTimeout1000s; + else if(to >= 300000) timeout = GpibTimeout300s; + else if(to >= 100000) timeout = GpibTimeout100s; + else if(to >= 30000) timeout = GpibTimeout30s; + else if(to >= 10000) timeout = GpibTimeout10s; + else if(to >= 3000) timeout = GpibTimeout3s; + else if(to >= 1000) timeout = GpibTimeout1s; + else if(to >= 300) timeout = GpibTimeout300ms; + else if(to >= 100) timeout = GpibTimeout100ms; + else if(to >= 30) timeout = GpibTimeout30ms; + else if(to >= 10) timeout = GpibTimeout10ms; + else if(to >= 3) timeout = GpibTimeout3ms; + else if(to >= 1) timeout = GpibTimeout1ms; + else timeout = GpibTimeoutNone; + ibtmo(m_hd,timeout); + return 0; + } + return -1; } + case CTB_GPIB_GTL: + // Forces the specified device to go to local program mode + if(m_hd >= 0) { + ibloc(m_hd); + return 0; + } + return -1; + case CTB_GPIB_REN: + // This routine can only be used if the specified GPIB + // Interface Board is the System Controller. + // Remember that even though the REN line is asserted, + // the device(s) will not be put into remote state until is + // addressed to listen by the Active Controller + if(m_hd) { + char adr = (char)m_dcs.m_address1; + ibsre(m_board,1); + ibcmd(m_board,&adr,1); + return 0; + } + return -1; + case CTB_GPIB_RESET_BUS: + ibsic(m_board); + return 0; + case CTB_GPIB_GET_EOS_CHAR: + if( m_hd ) { + *(int*)args = (int)m_dcs.m_eosChar; + return 0; + } + return -1; + case CTB_GPIB_SET_EOS_CHAR: +#ifdef __GNUG__ + // FIXME! + // Doesn't work with linux-gpib-3.2.08. All EOS beside 0x00 + // are blocking during sending data to the device. (Look at + // function my_ibwrt in linux-gpib-3.2.08/lib/ibWrt.c + if( m_hd ) { + m_dcs.m_eosChar = (char)*(int*)args; + ibeos(m_hd,(m_dcs.m_eosMode << 8) | m_dcs.m_eosChar); + return 0; + } +#endif + return -1; + case CTB_GPIB_GET_EOS_MODE: + if( m_hd ) { + *(int*)args = (int)m_dcs.m_eosMode; + return 0; + } + return -1; + case CTB_GPIB_SET_EOS_MODE: + if( m_hd ) { + m_dcs.m_eosMode = (char)*(int*)args; + ibeos(m_hd,(m_dcs.m_eosMode << 8) | m_dcs.m_eosChar); + return 0; + } + return -1; + } + // error or unknown command + return -1; + }; + + int GpibDevice::FindListeners(int board) + { + int listeners = 0; + if((unsigned int)board > 1) { + return -1; + } + // reset the GPIB, otherwise no connected device is found (linux) + SendIFC(board); + // list of primary addresses to searching for. Must be terminated + // with NOADDR. + Addr4882_t addrlist[31]; + // The range of valid addresses is 1...30, 0 is reservated by the + // controller, 31 is not valid + for(int i = 0;i < 30; i++) addrlist[i] = (Addr4882_t) i + 1; + addrlist[30] = NOADDR; + // place to store the results + Addr4882_t results[31]; + memset(results,0,sizeof(results)); + FindLstn(board, addrlist, results, 31); + if(ibsta & ERR) { + return -1; + } + for(int i=0;i<=30;i++) { + if(results[i]) { + listeners |= 1 << results[i]; + } + } + return listeners; + }; + + int GpibDevice::Open( const char* devname, int address ) + { + m_dcs.m_address1 = address; + + return OpenDevice( devname, &m_dcs ); + } + + + int GpibDevice::OpenDevice(const char* devname, void* dcs) + { + // if dcs isn't NULL, type cast + if(dcs) m_dcs = *(Gpib_DCS*)dcs; + + if(strncmp(devname,"gpib1",5) == 0) m_board = 0; + else if(strncmp(devname,"gpib2",5) == 0) m_board = 1; + if(m_board < 0) { + return -1; + } + // check for a valid timeout + if((unsigned int)m_dcs.m_timeout > GpibTimeout1000s) { + m_dcs.m_timeout = GpibTimeout10us; + } + + m_hd = ibdev(m_board, + m_dcs.m_address1, + m_dcs.m_address2, + m_dcs.m_timeout, + m_dcs.m_eot, +#ifdef __GNUG__ + // FIXME! + // linux-gpib-3.2.08 doesn't work with any EOS (blocks). + // Because we always has to add an EOS on the message + // (independent of the m_eosChar setting), we can ignore it! + 0 +#else + (m_dcs.m_eosMode << 8) | m_dcs.m_eosChar +#endif + ); + if(m_hd < 0) { + // no gpib controller installed (not found) + return -2; + } + // test for a connected listener (device with given address) + short int listen = 0; + ibln(m_board,m_dcs.m_address1,NO_SAD,&listen); + if(!listen) { + // no listener at the given address + CloseDevice(); + return -3; + } + // reset device + ibclr(m_hd); + // save state, error and count + m_state = ThreadIbsta(); + m_count = ThreadIbcnt(); + m_error = ThreadIberr(); + // no error + return 0; + }; + + int GpibDevice::Read(char* buf,size_t len) + { + // if something is in the fifo, first read that + if(m_fifo->items() > 0) { + return m_fifo->read(buf,len); + } + m_state = ibrd(m_hd,buf,len); + m_error = ThreadIberr(); + m_count = ThreadIbcnt(); + return m_count; + }; + + int GpibDevice::Write(char* buf,size_t len) + { + m_state = ibwrt(m_hd,buf,len); + m_error = ThreadIberr(); + m_count = ThreadIbcnt(); + return m_count; + }; + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/iobase.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/iobase.cpp new file mode 100644 index 0000000000..b92ba4f2d6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/iobase.cpp @@ -0,0 +1,211 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: iobase.cpp +// Purpose: +// Author: Joachim Buermann +// Id: $Id: iobase.cpp,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include +#include +#include "ctb-0.16/iobase.h" +#include "ctb-0.16/timer.h" + +namespace ctb { + +#define DELTA_BUFSIZE 512 + + int IOBase::Readv(char* buf,size_t len,unsigned int timeout_in_ms) + { + char *cp = buf; + int n = 0; + int timeout = 0; + size_t toread = len; + + Timer t(timeout_in_ms,&timeout,NULL); + if(timeout_in_ms != 0xFFFFFFFF) { + t.start(); + } + + while(!timeout && (toread > 0)) { + if((n = Read(cp,toread)) < 0) { + break; + } + if(!n) { + sleepms(1); + } + toread -= n; + cp += n; + } + // ok, all bytes received + return(len - toread); + }; + +/* + Readv() calls the member function Read() repeatedly, til all + demand bytes were received. To avoid an endless loop, you + can refer an integer, which was set unequal zero after a + specific time. (See the timer class) +*/ + int IOBase::Readv(char* buf,size_t len,int* timeout_flag,bool nice) + { + size_t toread = len; + int n = 0; + char *cp = buf; + + while(toread > 0) { + if(timeout_flag && (*timeout_flag > 0)) { + return (len - toread); + } + if((n = Read(cp,toread)) < 0) { + return (len - toread); + } + if(!n && nice) { + sleepms(1); + } + if (n > 0) + { + toread -= n; + cp += n; + } + } + // ok, all bytes received + return(len - toread); + }; + + int IOBase::ReadUntilEOS(char*& readbuf, + size_t* readedBytes, + char* eosString, + long timeout_in_ms, + char quota) + { + int n = 0; + int timeout = 0; + int bufsize = DELTA_BUFSIZE; + int result = 0; + int quoted = 0; + char* buf = new char[bufsize]; + char* des = buf; + char* eos = eosString; + char ch; + + Timer t(timeout_in_ms,&timeout,NULL); + t.start(); + + while(!timeout) { + if(des >= &buf[bufsize]) { + // buffer full, realloc more memory + char* tmp = new char[bufsize + DELTA_BUFSIZE + 1]; + memcpy(tmp,buf,bufsize); + delete[] buf; + buf = tmp; + des = &buf[bufsize]; + bufsize += DELTA_BUFSIZE; + } + // read next byte + n = Read(&ch,1); + if(n < 0) { + // an error occured + result = -1; + break; + } + else if(n == 0) { + // no data available, give up the processor for some time + // to reduce the cpu last + sleepms(10); + continue; + } + // if eos is composed of more than one char, and the current + // byte doesn't match the next eos character, we handle the + // readed byte as a normal char (and not an eos) + if((eos != eosString) && (ch != *eos)) { + // FIXME! + // write all characters, which was matched the eos string + // until now (with the first wrong character all received + // eos characters are invalid and must handled as normal + // characters). + + // This doesn't work right and is only a little workaround + // because the received eos chars are lost + PutBack(ch); + // because we doesn't match the eos string, we must 'reset' + // the eos match + eos = eosString; + continue; + } + else { + if((ch == *eos) && !quoted) { + if(*++eos == 0) { + // the eos string is complete + result = 1; + break; + } + continue; + } + } + if(ch == quota) { + quoted ^= 1; + } + *des++ = ch; + } + *des = 0; + readbuf = buf; + *readedBytes = des - buf; + return result; + }; + + int IOBase::Writev(char* buf,size_t len,unsigned int timeout_in_ms) + { + char *cp = buf; + int n = 0; + int timeout = 0; + size_t towrite = len; + + Timer t(timeout_in_ms,&timeout,NULL); + if(timeout_in_ms != 0xFFFFFFFF) { + t.start(); + } + + while(!timeout && (towrite > 0)) { + if((n = Write(cp,towrite)) < 0) { + // an error occurs + break; + } + if(!n) { + sleepms(1); + } + towrite -= n; + cp += n; + } + return (len - towrite); + }; + +/* + Similar to Readv(). Writev() calls Write() repeatedly till + all bytes are written. +*/ + int IOBase::Writev(char* buf,size_t len,int* timeout_flag,bool nice) + { + size_t towrite = len; + int n = 0; + char *cp = buf; + + while(towrite > 0) { + if(timeout_flag && (*timeout_flag > 0)) { + return (len - towrite); + } + if((n = Write(cp,towrite)) < 0) { + // an error occurs + return (len - towrite); + } + if(!n && nice) { + sleepms(1); + } + towrite -= n; + cp += n; + } + return(len); + }; + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/kbhit.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/kbhit.cpp new file mode 100644 index 0000000000..4a244ea251 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/kbhit.cpp @@ -0,0 +1,37 @@ +#if defined ( WIN32 ) +# include +#else +# include +# include +#endif + +namespace ctb { + + char GetKey() + { +#if defined ( WIN32 ) + if(_kbhit()) { + return _getch(); + } + return '\0'; +#else + int ch; + static struct termios t, save_t; + tcgetattr(0,&t); + save_t = t; + t.c_lflag &= ~(ICANON); + t.c_cc[VMIN] = 0; + t.c_cc[VTIME] = 0; + tcsetattr(0,TCSANOW,&t); + + ch = fgetc(stdin); + + tcsetattr(0,TCSANOW,&save_t); + if(ch != EOF) { + return ch; + } + return '\0'; +#endif + } + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/serport.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/serport.cpp new file mode 100644 index 0000000000..a369abc5e7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/serport.cpp @@ -0,0 +1,443 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: linux/serport.cpp +// Purpose: +// Author: Joachim Buermann +// Id: $Id: serport.cpp,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "ctb-0.16/linux/serport.h" + +#include +#include +#include +#include +#include +#include +#include + +#define CMSPAR 010000000000 /* mark or space (stick) parity */ + +namespace ctb { + + const char* COM1 = "/dev/ttyS0"; + const char* COM2 = "/dev/ttyS1"; + const char* COM3 = "/dev/ttyS2"; + const char* COM4 = "/dev/ttyS3"; + const char* COM5 = "/dev/ttyS4"; + const char* COM6 = "/dev/ttyS5"; + const char* COM7 = "/dev/ttyS6"; + const char* COM8 = "/dev/ttyS7"; + const char* COM9 = "/dev/ttyS8"; + const char* COM10 = "/dev/ttyS9"; + const char* COM11= "/dev/ttyS10"; + const char* COM12= "/dev/ttyS11"; + const char* COM13 = "/dev/ttyS12"; + const char* COM14 = "/dev/ttyS13"; + const char* COM15 = "/dev/ttyS14"; + const char* COM16 = "/dev/ttyS15"; + const char* COM17 = "/dev/ttyS16"; + const char* COM18 = "/dev/ttyS17"; + const char* COM19 = "/dev/ttyS18"; + const char* COM20 = "/dev/ttyS19"; + + SerialPort::SerialPort() : + SerialPort_x() + { + fd = -1; + }; + + SerialPort::~SerialPort() + { + Close(); + }; + + speed_t SerialPort::AdaptBaudrate( int baud ) + { + switch(baud) { + case 150: return B150; + case 300: return B300; + case 600: return B600; + case 1200: return B1200; + case 2400: return B2400; + case 4800: return B4800; + case 9600: return B9600; + case 19200: return B19200; + case 57600: return B57600; + case 115200: return B115200; + case 230400: return B230400; + case 460800: return B460800; + case 921600: return B921600; + + // NOTE! The speed of 38400 is required, if you want to set + // an non-standard baudrate. See below! + default: return B38400; + } + }; + + int SerialPort::CloseDevice() + { + int err = 0; + // only close an open file handle + if(fd < 0) return EBADF; + // With some systems, it is recommended to flush the serial port's + // Output before closing it, in order to avoid a possible hang of + // the process... + // Thanks to Germain (I couldn't answer you, because your email + // address was invalid) + tcflush(fd, TCOFLUSH); + + // Don't recover the orgin settings while the device is open. This + // implicate a mismatched data output! + // Just close device + err = close( fd ); + + fd = -1; + + return err; + }; + + int SerialPort::ChangeLineState( SerialLineState flags ) + { + int state; + ioctl(fd,TIOCMGET,&state); + state ^= flags; + return ioctl(fd,TIOCMSET,&state); + }; + + int SerialPort::ClrLineState( SerialLineState flags ) + { + return ioctl(fd,TIOCMBIC,&flags); + }; + + int SerialPort::GetLineState() + { + SerialLineState flags = LinestateNull; + + if( ioctl( fd, TIOCMGET, &flags ) < 0 ) { + + return -1; + + } + return (int)( flags & 0x1FF ); + }; + +// +// included from /usr/include/linux/serial.h +// +// struct serial_icounter_struct { +// int cts, dsr, rng, dcd; +// int rx, tx; +// int frame, overrun, parity, brk; +// int buf_overrun; +// int reserved[9]; +// }; +// + int SerialPort::Ioctl(int cmd, void* args) + { + int count = 0; + int err = 0; + struct serial_icounter_struct info; + SerialPort_EINFO einfo; + + switch(cmd) { + case CTB_RESET: + return SendBreak(0); + case CTB_SER_GETEINFO: + err = ioctl(fd,TIOCGICOUNT,&info); + if(err) return err; + einfo.brk = info.brk - save_info.brk; + einfo.frame = info.frame - save_info.frame; + einfo.overrun = info.overrun - save_info.overrun; + einfo.parity = info.parity - save_info.parity; + *(SerialPort_EINFO*)args = einfo; + break; + case CTB_SER_GETBRK: + err = ioctl(fd,TIOCGICOUNT,&info); + if(err) return err; + if(last_info.brk != info.brk) count = 1; + break; + case CTB_SER_GETFRM: + err = ioctl(fd,TIOCGICOUNT,&info); + if(err) return err; + if(last_info.frame != info.frame) count = 1; + break; + case CTB_SER_GETOVR: + err = ioctl(fd,TIOCGICOUNT,&info); + if(err) return err; + if(last_info.overrun != info.overrun) count = 1; + break; + case CTB_SER_GETPAR: + err = ioctl(fd,TIOCGICOUNT,&info); + if(err) return err; + if(last_info.parity != info.parity) count = 1; + break; + case CTB_SER_GETINQUE: + err = ioctl(fd,TIOCINQ,&count); + if(err) return err; + *(int*)args = count; + return 0; + case CTB_SER_SETPAR: + return SetParityBit( *(int*)args == 1 ); + default: + return -1; + } + last_info = info; + return 0; + }; + + int SerialPort::IsOpen() + { + return (fd != -1); + }; + + int SerialPort::OpenDevice(const char* devname, void* dcs) + { + // if dcs isn't NULL, type cast + if(dcs) m_dcs = *(SerialPort_DCS*)dcs; + // open serial comport device for reading and writing, + // don't wait (O_NONBLOCK) + fd = open(devname, O_RDWR | O_NOCTTY | O_NONBLOCK); + if(fd >= 0) { + + // exclusive use + int dummy; + + ioctl( fd, TIOCEXCL, &dummy ); + + tcgetattr(fd,&t); + save_t = t; + + // save the device name + strncpy(m_devname,(char*)devname,sizeof(m_devname)); + // we write an eos to avoid a buffer overflow + m_devname[sizeof(m_devname)-1] = '\0'; + + // Fill the internal terios struct. + // If the given baudrate is an non-standard one, the AdaptBaudrate + // call returns the linux specific value B38400 which is a + // condition for the later switch to an unusual baudrate! + cfsetspeed(&t, AdaptBaudrate( m_dcs.baud ) ); + + //cfsetospeed(&t, AdaptBaudrate( m_dcs.baud ) ); + + // parity settings + switch( m_dcs.parity ) { + + case ParityNone: + t.c_cflag &= ~PARENB; break; + + case ParityOdd: + t.c_cflag |= PARENB; + t.c_cflag |= PARODD; + break; + + case ParityEven: + t.c_cflag |= PARENB; + t.c_cflag &= ~PARODD; + break; + + case ParityMark: + t.c_cflag |= PARENB | CMSPAR | PARODD; + break; + + case ParitySpace: + t.c_cflag |= PARENB | CMSPAR; + t.c_cflag &= ~PARODD; + break; + } + + // stopbits + if(m_dcs.stopbits == 2) + t.c_cflag |= CSTOPB; + else + t.c_cflag &= ~CSTOPB; + // wordlen + t.c_cflag &= ~CSIZE; + if(m_dcs.wordlen == 7) t.c_cflag |= CS7; + else if(m_dcs.wordlen == 6) t.c_cflag |= CS6; + else if(m_dcs.wordlen == 5) t.c_cflag |= CS5; + // this is the default + else t.c_cflag |= CS8; + // rts/cts + if(m_dcs.rtscts == false) + t.c_cflag &= ~CRTSCTS; + else + t.c_cflag |= CRTSCTS; + + t.c_lflag &= ~(ICANON | ECHO | ISIG | IEXTEN); + t.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON | IXOFF | IXANY); + t.c_iflag |= IGNPAR; + t.c_oflag &= ~OPOST; + + if(m_dcs.xonxoff == true) { + t.c_iflag |= (IXON | IXOFF); + } + + // look out! + // MIN = 1 means, in TIME (1/10 secs) defined timeout + // will be started AFTER receiving the first byte + // so we must set MIN = 0. (timeout starts immediately, abort + // also without readed byte) + t.c_cc[VMIN] = 0; + // timeout in 1/10 secs + // no timeout for non blocked transfer + t.c_cc[VTIME] = 0; + // write the settings + tcsetattr(fd,TCSANOW,&t); + // it's careless, but in the moment we don't test + // the return of tcsetattr (normally there is no error) + + // request the actual numbers of breaks, framing, overrun + // and parity errors (because Linux summing all of them during + // system lifetime, not only while serial port is open. + ioctl(fd,TIOCGICOUNT,&save_info); + // it's also careless, but we assume, that there was no error + last_info = save_info; + + // in case of a non-standard rate, the termios struct have to set + // with the B38400 rate, see above! + if( ! IsStandardRate( m_dcs.baud ) ) { + + SetBaudrateAny( m_dcs.baud ); + + } + } + return fd; + }; + + int SerialPort::Read(char* buf,size_t len) + { + if(m_fifo->items() > 0) { + return m_fifo->read(buf,len); + } + // Read() (using read() ) will return an 'error' EAGAIN as it is + // set to non-blocking. This is not a true error within the + // functionality of Read, and thus should be handled by the caller. + int n = read(fd,buf,len); + if((n < 0) && (errno == EAGAIN)) return 0; + return n; + }; + + int SerialPort::SendBreak(int duration) + { + // the parameter is equal with linux + return tcsendbreak(fd,duration); + }; + + /* + Note: The following hints are copied from the ftdi_sio.c sources of + the kernel modul for the USB to RS232 converter using an FTDI + chipset (FT232BM or similar). Thanks to all those people + contribute code and above all helpful comments to this modul. + */ + + /* + * The logic involved in setting the baudrate can be cleanly split in 3 steps. + * Obtaining the actual baud rate is a little tricky since unix traditionally + * somehow ignored the possibility to set non-standard baud rates. + * 1. Standard baud rates are set in tty->termios->c_cflag + * 2. If these are not enough, you can set any speed using alt_speed as + * follows: + * - set tty->termios->c_cflag speed to B38400 + * - set your real speed in tty->alt_speed; it gets ignored when + * alt_speed==0, (or) + * - call TIOCSSERIAL ioctl with (struct serial_struct) set as follows: + * flags & ASYNC_SPD_MASK == ASYNC_SPD_[HI, VHI, SHI, WARP], this just + * sets alt_speed to (HI: 57600, VHI: 115200, SHI: 230400, WARP: 460800) + * ** Steps 1, 2 are done courtesy of tty_get_baud_rate + * 3. You can also set baud rate by setting custom divisor as follows + * - set tty->termios->c_cflag speed to B38400 + * - call TIOCSSERIAL ioctl with (struct serial_struct) set as follows: + * o flags & ASYNC_SPD_MASK == ASYNC_SPD_CUST + * o custom_divisor set to baud_base / your_new_baudrate + * ** Step 3 is done courtesy of code borrowed from serial.c - I should really + * spend some time and separate+move this common code to serial.c, it is + * replicated in nearly every serial driver you see. + */ + + int SerialPort::SetBaudrateAny( int baudrate ) + { + struct serial_struct ser_info; + + int result = ioctl( fd, TIOCGSERIAL, &ser_info ); + + ser_info.flags = ASYNC_SPD_CUST | ASYNC_LOW_LATENCY; + + ser_info.custom_divisor = ser_info.baud_base / baudrate; + + result = ioctl( fd, TIOCSSERIAL, &ser_info ); + + return result; + } + + int SerialPort::SetBaudrateStandard( int baudrate ) + { + speed_t baud = AdaptBaudrate( baudrate ); + // setting the input baudrate + if(cfsetspeed(&t,baud) < 0) { + return -1; + } + // take over + m_dcs.baud = baudrate; + + tcsetattr(fd,TCSANOW,&t); + + return tcgetattr( fd, &t ); + + }; + + int SerialPort::SetBaudrate( int baudrate ) + { + return IsStandardRate( baudrate ) ? + SetBaudrateStandard( baudrate ) : + SetBaudrateAny( baudrate ); + + } + + int SerialPort::SetLineState( SerialLineState flags ) + { + return ioctl(fd,TIOCMBIS,&flags); + }; + + int SerialPort::SetParityBit( bool parity ) + { + // waits until all output has been transmitted + tcdrain( fd ); + + // now read the current termios settings and manipulate + // the parity + tcgetattr( fd, &t ); + + if( parity ) { + + t.c_cflag |= PARENB | CMSPAR | PARODD; + + } + else { + + t.c_cflag |= PARENB | CMSPAR; + + t.c_cflag &= ~PARODD; + + } + + tcsetattr( fd,TCSANOW, &t ); + + tcgetattr( fd, &t ); + + return 0; + } + + int SerialPort::Write(char* buf,size_t len) + { + // Write() (using write() ) will return an 'error' EAGAIN as it is + // set to non-blocking. This is not a true error within the + // functionality of Write, and thus should be handled by the caller. + int n = write(fd,buf,len); + if((n < 0) && (errno == EAGAIN)) return 0; + return n; + }; + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/timer.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/timer.cpp new file mode 100644 index 0000000000..f1c50f613b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/linux/timer.cpp @@ -0,0 +1,97 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: linux/timer.cpp +// Purpose: +// Author: Joachim Buermann +// Id: $Id: timer.cpp,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + + +#include "ctb-0.16/timer.h" +#include + +namespace ctb { + +// a dummy function, see below + static void timer_exit(void* arg) + { + }; + + static void* timer_fnc(void* arg) + { + // the timer thread should be canceled every time + // (asyncronously) + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL); + // this is tricky, but absolutly necessarily to avoid segfaults + // if the destructor finished a running thread + pthread_cleanup_push(timer_exit,NULL); + timer_control *tc = (timer_control*)arg; + // linux allows a real sleep, means the timer thread will + // be sleeping (no reduce of the system performance) + usleep(tc->usecs); + // time is over, system reawake the thread. + // if there is an exit function, calling it + if(tc->exitfnc) tc->exitfnc(NULL); + // set the exit flag + if(tc->exitflag) *tc->exitflag = 1; + // deallocate the system resources (thread) + pthread_cleanup_pop(1); + return NULL; + }; + + // the constructor initiate the internal control struct + Timer::Timer( unsigned int msecs, int* exitflag, void*( *exitfnc )(void*) ) + { + control.usecs = msecs * 1000; + control.exitflag = exitflag; + control.exitfnc = exitfnc; + stopped = 1; + }; + + // if a timer instance leave it's valid range, it automaticaly will + // be finished + Timer::~Timer() + { + if(!stopped) { + // only a running thread may be canceled + stop(); + } + }; + + // starts the timer thread + int Timer::start() + { + stopped = 0; + if(pthread_create(&tid, // result parameter, covers the id + // of the new threads + NULL, // thread attribute object, NULL means + // the defaults + timer_fnc, // start function of the thread + &control // start function parameter, must refer + // as void* + ) == -1) { + return -1; // there was something going wrong + } + pthread_detach(tid); // thread status must be "detach". In the other + // case, the destructor call of a running + // thread throws a segfault + return 0; + }; + + // stop the timer thread + int Timer::stop() + { + if(control.exitflag && (*control.exitflag == 0)) { + pthread_cancel(tid); + } + stopped = 1; + return 0; + }; + + void sleepms(unsigned int ms) + { + usleep(ms * 1000); + }; + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/portscan.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/portscan.cpp new file mode 100644 index 0000000000..f13766e9fa --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/portscan.cpp @@ -0,0 +1,109 @@ +#include "ctb-0.16/ctb.h" +#include "ctb-0.16/portscan.h" + +#include + +#ifndef _WIN32 +# include +#endif + +namespace ctb { + + bool GetAvailablePorts( std::vector& result, + bool checkInUse ) + { +#ifdef _WIN32 + + std::stringstream devname; + + for( int i = 1; i < 100; i++ ) { + + devname.clear(); devname.str( "" ); + + // some systems like WinCE doesn't like the extended port numbering... + i < 10 ? devname << "com" << i : devname << "\\\\.\\com" << i; + + COMMCONFIG cc; + + DWORD dwSize = sizeof( cc ); + + if ( ::GetDefaultCommConfig( devname.str().c_str(), &cc, &dwSize ) ) { + + if( cc.dwProviderSubType == PST_RS232 ) { + + ctb::SerialPort com; + + if( com.Open( devname.str().c_str() ) < 0 ) { + + continue; + + } + + result.push_back( devname.str().c_str() ); + + } + } + } + +#else + glob_t globbuf; + + // search for standard serial ports + int res = glob( "/dev/ttyS*", GLOB_ERR, NULL, &globbuf ); + + if( res == 0 ) { + + // no error, glob was successful + for( int i = 0; i < globbuf.gl_pathc; i++ ) { + + if( checkInUse ) { + + ctb::SerialPort com; + + if( com.Open( globbuf.gl_pathv[ i ] ) < 0 ) { + + continue; + + } + + result.push_back( std::string( globbuf.gl_pathv[ i ] ) ); + + } + } + + } + globfree( &globbuf ); + + // search for USB to RS232 converters + res = glob( "/dev/ttyUSB*", GLOB_ERR, NULL, &globbuf ); + + if( res == 0 ) { + + // no error, glob was successful + for( int i = 0; i < globbuf.gl_pathc; i++ ) { + + if( checkInUse ) { + + ctb::SerialPort com; + + if( com.Open( globbuf.gl_pathv[ i ] ) < 0 ) { + + continue; + + } + + result.push_back( std::string( globbuf.gl_pathv[ i ] ) ); + + } + } + + } + + globfree( &globbuf ); +#endif + + return result.size(); + + } + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/serportx.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/serportx.cpp new file mode 100644 index 0000000000..c59bcc002f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/serportx.cpp @@ -0,0 +1,104 @@ +#include "ctb-0.16/serportx.h" + +#include + +namespace ctb { + + int SerialPort_x::Open( const char* portname, int baudrate, + const char* protocol, + FlowControl flowControl ) + { + SerialPort_DCS dcs; + + dcs.baud = baudrate; + + // default wordlen is 8 + if( ( protocol[ 0 ] >= '5' ) && ( protocol[ 0 ] <= '8' )) { + + dcs.wordlen = protocol[ 0 ] - '0'; + + } + else { + + return -1; + + } + + // protocol is given as a string like "8N1", the first + // character specifies the data bits (5...8), the second + // the parity (None,Odd,Even,Mark,Space). + // The third character defines the stopbit (1...2). + switch( protocol[ 1 ] ) { + case 'N': case 'n': dcs.parity = ParityNone; break; + case 'O': case 'o': dcs.parity = ParityOdd; break; + case 'E': case 'e': dcs.parity = ParityEven; break; + case 'M': case 'm': dcs.parity = ParityMark; break; + case 'S': case 's': dcs.parity = ParitySpace; break; + // all other parameters cause an error! + default: return -1; + } + // default stopbits is 1 + if( ( protocol[ 2 ] >= '1' ) && ( protocol[ 2 ] <= '2' )) { + + dcs.stopbits = protocol[ 2 ] - '0'; + + } + else { + + return -1; + + } + // default flow control is disabled + dcs.rtscts = ( flowControl == RtsCtsFlowControl ); + + dcs.xonxoff = ( flowControl == XonXoffFlowControl ); + + // save the settings in the internal dcs for later use + m_dcs = dcs; + + return OpenDevice( portname, &m_dcs ); + + } + + int SerialPort_x::Open( const int portnumber, int baudrate, + const char* protocol, + FlowControl flowControl ) + { + // portnumbers start with 1 + if( portnumber < 1 ) { + + return -1; + + } + std::stringstream devname; + +#if defined ( WIN32 ) + // some systems like WinCE doesn't like the extended port numbering... + portnumber < 10 ? devname << "com" << portnumber : + devname << "\\\\.\\com" << portnumber; +#else + devname << "/dev/ttyS" << ( portnumber - 1 ); +#endif + + return Open( devname.str().c_str(), baudrate, protocol, flowControl ); + } + + bool SerialPort_x::IsStandardRate( int rate ) + { + const int rates[] = { + 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, + 115200, 230400, 460800, 921600 + }; + + for( unsigned int i = 0; i < ( sizeof( rates ) / sizeof( int ) ); i++ ) { + + if( rate == rates[ i ] ) { + + return true; + + } + } + return false; + } + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/getopt.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/getopt.cpp new file mode 100644 index 0000000000..c8454b9bde --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/getopt.cpp @@ -0,0 +1,66 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: win32/getopt.cpp +// Purpose: +// Author: unknown, I found it in the internet +// Id: $Id: getopt.cpp,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 ? +// Licence: (I think Open Source) +///////////////////////////////////////////////////////////////////////////// + +#include +#include + +char *optarg; /* Global argument pointer. */ +int optind = 0; /* Global argv index. */ + +static char *scan = NULL; /* Private scan pointer. */ + +/* found char, or NULL if none */ +static char *index(const char* s,char charwanted) +{ + return(strchr((char*)s, charwanted)); +} + +int getopt(int argc, char* argv[], char* optstring) +{ + register char c; + register char *place; + + optarg = NULL; + + if (scan == NULL || *scan == '\0') { + if (optind == 0) + optind++; + + if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0') + return(EOF); + if (strcmp(argv[optind], "--")==0) { + optind++; + return(EOF); + } + + scan = argv[optind]+1; + optind++; + } + + c = *scan++; + place = index(optstring, c); + + if (place == NULL || c == ':') { + fprintf(stderr, "%s: unknown option -%c\n", argv[0], c); + return('?'); + } + + place++; + if (*place == ':') { + if (*scan != '\0') { + optarg = scan; + scan = NULL; + } else { + optarg = argv[optind]; + optind++; + } + } + + return(c); +} diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/serport.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/serport.cpp new file mode 100644 index 0000000000..23b50ab32b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/serport.cpp @@ -0,0 +1,452 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: serport.cpp +// Purpose: +// Author: Joachim Buermann +// Id: $Id: serport.cpp,v 1.1.1.1 2004/11/24 10:30:11 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include +#include "ctb-0.16/serport.h" + +#define SERIALPORT_BUFSIZE 4096 + +namespace ctb { + + const char* COM1 = "com1"; + const char* COM2 = "com2"; + const char* COM3 = "com3"; + const char* COM4 = "com4"; + const char* COM5 = "com5"; + const char* COM6 = "com6"; + const char* COM7 = "com7"; + const char* COM8 = "com8"; + const char* COM9 = "com9"; + const char* COM10 = "\\\\.\\com10"; + const char* COM11 = "\\\\.\\com11"; + const char* COM12 = "\\\\.\\com12"; + const char* COM13 = "\\\\.\\com13"; + const char* COM14 = "\\\\.\\com14"; + const char* COM15 = "\\\\.\\com15"; + const char* COM16 = "\\\\.\\com16"; + const char* COM17 = "\\\\.\\com17"; + const char* COM18 = "\\\\.\\com18"; + const char* COM19 = "\\\\.\\com19"; + const char* COM20 = "\\\\.\\com20"; + + SerialPort::SerialPort() + { + memset( &m_ov, 0, sizeof( OVERLAPPED ) ); + fd = INVALID_HANDLE_VALUE; + m_rtsdtr_state = LinestateNull; + }; + + SerialPort::~SerialPort() + { + Close(); + }; + + int SerialPort::CloseDevice() + { + if(fd != INVALID_HANDLE_VALUE) { + CloseHandle(m_ov.hEvent); + CloseHandle(fd); + fd = INVALID_HANDLE_VALUE; + } + return 0; + }; + + int SerialPort::ChangeLineState( SerialLineState flags ) + { + bool ok = false; + if(flags & LinestateDtr) { + if(m_rtsdtr_state & LinestateDtr) { + ok = EscapeCommFunction(fd,CLRDTR); + } + else { + ok = EscapeCommFunction(fd,SETDTR); + } + m_rtsdtr_state ^= LinestateDtr; + } + if(flags & LinestateRts) { + if(m_rtsdtr_state & LinestateRts) { + ok = EscapeCommFunction(fd,CLRRTS); + } + else { + ok = EscapeCommFunction(fd,SETRTS); + } + m_rtsdtr_state ^= LinestateRts; + } + if(!ok) return -1; + return 0; + }; + + int SerialPort::ClrLineState( SerialLineState flags ) + { + BOOL ok = false; + if(flags & LinestateDtr) { + ok = EscapeCommFunction(fd,CLRDTR); + m_rtsdtr_state &= ~LinestateDtr; + } + if(flags & LinestateRts) { + ok = EscapeCommFunction(fd,CLRRTS); + m_rtsdtr_state &= ~LinestateRts; + } + if(!ok) return -1; + return 0; + }; + + int SerialPort::GetLineState() + { + BOOL ok = false; + DWORD stat; + int flags = 0; + if(GetCommModemStatus(fd,&stat)) { + if(stat & MS_CTS_ON) + flags |= LinestateCts; + if(stat & MS_DSR_ON) + flags |= LinestateDsr; + if(stat & MS_RING_ON) + flags |= LinestateRing; + if(stat & MS_RLSD_ON) + flags |= LinestateDcd; + ok = true; + } + if(!ok) return -1; + return flags; + }; + + int SerialPort::Ioctl(int cmd,void* args) + { + COMSTAT comstat; + DWORD errors; + int result = 0; + bool brk; + switch(cmd) { + case CTB_RESET: + return SendBreak(0); + case CTB_SER_GETEINFO: + if(ClearCommError(fd,&errors,&comstat)) { + // actualize the last events + if(errors & CE_BREAK) einfo.brk++; + if(errors & CE_FRAME) einfo.frame++; + if(errors & CE_OVERRUN) einfo.overrun++; + if(errors & CE_RXPARITY) einfo.parity++; + *(SerialPort_EINFO*)args = einfo; + return 0; + } + case CTB_SER_GETBRK: + if(ClearCommError(fd,&errors,&comstat)) { + if(errors & CE_BREAK) result = 1; + einfo.brk += result; + *(int*)args = result; + return 0; + } + break; + case CTB_SER_GETFRM: + if(ClearCommError(fd,&errors,&comstat)) { + if(errors & CE_FRAME) result = 1; + einfo.frame += result; + *(int*)args = result; + return 0; + } + case CTB_SER_GETOVR: + if(ClearCommError(fd,&errors,&comstat)) { + if(errors & CE_OVERRUN) result = 1; + einfo.overrun += result; + *(int*)args = result; + return 0; + } + break; + case CTB_SER_GETPAR: + if(ClearCommError(fd,&errors,&comstat)) { + if(errors & CE_RXPARITY) result = 1; + einfo.parity += result; + *(int*)args = result; + return 0; + } + break; + case CTB_SER_GETINQUE: + if(ClearCommError(fd,&errors,&comstat)) { + *(int*)args = (int)comstat.cbInQue; + return 0; + } + break; + case CTB_SER_SETPAR: + return SetParityBit( *(int*)args == 1 ); + } + // error or unknown command + return -1; + }; + + int SerialPort::IsOpen() + { + return (fd != INVALID_HANDLE_VALUE); + }; + + int SerialPort::OpenDevice(const char* devname, void* dcs) + { + // if dcs isn't NULL, type cast + if(dcs) m_dcs = *(SerialPort_DCS*)dcs; + + fd = CreateFile(devname, // device name + GENERIC_READ | GENERIC_WRITE, // O_RDWR + 0, // not shared + NULL, // default value for object security ?!? + OPEN_EXISTING, // file (device) exists + FILE_FLAG_OVERLAPPED, // asynchron handling + NULL); // no more handle flags + + if(fd == INVALID_HANDLE_VALUE) { + return -1; + } + // save the device name + strncpy(m_devname,(char*)devname,sizeof(m_devname)); + // we write an eos to avoid a buffer overflow + m_devname[sizeof(m_devname)-1] = '\0'; + + // device control block + DCB dcb; + memset(&dcb,0,sizeof(dcb)); + dcb.DCBlength = sizeof(dcb); + dcb.BaudRate = m_dcs.baud; + dcb.fBinary = 1; + + m_rtsdtr_state = LinestateNull; + + // Specifies whether the CTS (clear-to-send) signal is monitored + // for output flow control. If this member is TRUE and CTS is turned + // off, output is suspended until CTS is sent again. + dcb.fOutxCtsFlow = m_dcs.rtscts; + + // Specifies the DTR (data-terminal-ready) flow control. + // This member can be one of the following values: + // DTR_CONTROL_DISABLE Disables the DTR line when the device is + // opened and leaves it disabled. + // DTR_CONTROL_ENABLE Enables the DTR line when the device is + // opened and leaves it on. + // DTR_CONTROL_HANDSHAKE Enables DTR handshaking. If handshaking is + // enabled, it is an error for the application + // to adjust the line by using the + // EscapeCommFunction function. + dcb.fDtrControl = DTR_CONTROL_DISABLE; + m_rtsdtr_state |= LinestateDtr; + // Specifies the RTS flow control. If this value is zero, the + // default is RTS_CONTROL_HANDSHAKE. This member can be one of + // the following values: + // RTS_CONTROL_DISABLE Disables the RTS line when device is + // opened and leaves it disabled. + // RTS_CONTROL_ENABLED Enables the RTS line when device is + // opened and leaves it on. + // RTS_CONTROL_HANDSHAKE Enables RTS handshaking. The driver + // raises the RTS line when the + // "type-ahead" (input)buffer is less than + // one-half full and lowers the RTS line + // when the buffer is more than three-quarters + // full. If handshaking is enabled, it is an + // error for the application to adjust the + // line by using the EscapeCommFunction function. + // RTS_CONTROL_TOGGLE Specifies that the RTS line will be high if + // bytes are available for transmission. After + // all buffered bytes have been send, the RTS + // line will be low. + if(m_dcs.rtscts) dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; + else { + dcb.fRtsControl = RTS_CONTROL_DISABLE; + m_rtsdtr_state |= LinestateRts; + } + // Specifies the XON/XOFF flow control. + // If fOutX is true (the default is false), transmission stops when the + // XOFF character is received and starts again, when the XON character + // is received. + dcb.fOutX = m_dcs.xonxoff; + // If fInX is true (default is false), the XOFF character is sent when + // the input buffer comes within XoffLim bytes of being full, and the + // XON character is sent, when the input buffer comes within XonLim + // bytes of being empty. + dcb.fInX = m_dcs.xonxoff; + // default character for XOFF is 0x13 (hex 13) + dcb.XoffChar = 0x13; + // default character for XON is 0x11 (hex 11) + dcb.XonChar = 0x11; + // set the minimum number of bytes allowed in the input buffer before + // the XON character is sent (3/4 of full size) + dcb.XonLim = (SERIALPORT_BUFSIZE >> 2) * 3; + // set the maximum number of free bytes in the input buffer, before the + // XOFF character is sent (3/4 of full size) + dcb.XoffLim = (SERIALPORT_BUFSIZE >> 2) * 3; + + // parity + switch( m_dcs.parity ) { + + case ParityOdd: dcb.Parity = ODDPARITY; break; + case ParityEven: dcb.Parity = EVENPARITY; break; + case ParityMark: dcb.Parity = MARKPARITY; break; + case ParitySpace: dcb.Parity = SPACEPARITY; break; + default: dcb.Parity = NOPARITY; + + } + // stopbits + if(m_dcs.stopbits == 2) dcb.StopBits = TWOSTOPBITS; + else dcb.StopBits = ONESTOPBIT; + // wordlen, valid values are 5,6,7,8 + dcb.ByteSize = m_dcs.wordlen; + + if(!SetCommState(fd,&dcb)) + return -2; + + // create event for overlapped I/O + // we need a event object, which inform us about the + // end of an operation (here reading device) + m_ov.hEvent = CreateEvent(NULL,// LPSECURITY_ATTRIBUTES lpsa + TRUE, // BOOL fManualReset + TRUE, // BOOL fInitialState + NULL); // LPTSTR lpszEventName + if(m_ov.hEvent == INVALID_HANDLE_VALUE) { + return -3; + } + + /* THIS IS OBSOLETE!!! + // event should be triggered, if there are some received data + if(!SetCommMask(fd,EV_RXCHAR)) + return -4; + */ + + COMMTIMEOUTS cto = {MAXDWORD,0,0,0,0}; + if(!SetCommTimeouts(fd,&cto)) + return -5; + + // for a better performance with win95/98 I increased the internal + // buffer to SERIALPORT_BUFSIZE (normal size is 1024, but this can + // be a little bit to small, if you use a higher baudrate like 115200) + if(!SetupComm(fd,SERIALPORT_BUFSIZE,SERIALPORT_BUFSIZE)) + return -6; + + // clear the internal error struct + memset(&einfo,0,sizeof(einfo)); + return 0; + }; + + int SerialPort::Read(char* buf,size_t len) + { + DWORD read; + int m = m_fifo->items(); + while(len) { + if(m_fifo->get(buf) == 1) { + len--; + buf++; + } + else { + break; + } + } + if(!ReadFile(fd,buf,len,&read,&m_ov)) { + // if we use a asynchrone reading, ReadFile gives always + // FALSE + // ERROR_IO_PENDING means ok, other values show an error + if(GetLastError() != ERROR_IO_PENDING) { + // oops..., error in communication + return -1; + } + } + else { + // ok, we have read all wanted bytes + return (int)read + m; + } + return 0; + }; + + int SerialPort::SendBreak(int duration) + { + if(duration <= 0) duration = 1; + if(!SetCommBreak(fd)) return -1; + // win32 Sleep parameter is ms + Sleep(duration * 250); + if(!ClearCommBreak(fd)) return -1; + // no error + return 0; + }; + +/* + FIXME! : We need some additional code to check the success of the + baudrate modulation (non-standard rates depend on the used + UART chipset). +*/ + int SerialPort::SetBaudrate( int baudrate ) + { + DCB dcb; + + // get the current dcb... + if(!GetCommState(fd,&dcb)) { + return -1; + } + dcb.BaudRate = baudrate; + // and write it back + if(!SetCommState(fd,&dcb)) { + return -1; + } + m_dcs.baud = baudrate; + return 0; + } + + int SerialPort::SetLineState( SerialLineState flags ) + { + BOOL ok = false; + if(flags & LinestateDtr) { + ok = EscapeCommFunction(fd,SETDTR); + // save the new state + m_rtsdtr_state |= LinestateDtr; + } + if(flags & LinestateRts) { + ok = EscapeCommFunction(fd,SETRTS); + // save the new state + m_rtsdtr_state |= LinestateRts; + } + if(!ok) return -1; + return 0; + }; + + int SerialPort::SetParityBit( bool parity ) + { + DCB dcb; + + if( ! GetCommState( fd, &dcb ) ) { + + return -1; + + } + + parity ? dcb.Parity = MARKPARITY : dcb.Parity = SPACEPARITY; + + if( ! SetCommState( fd, &dcb ) ) { + + return -2; + + } + return 0; + } + + int SerialPort::Write(char* buf,size_t len) + { + DWORD write; + if(!WriteFile(fd,buf,len,&write,&m_ov)) { + if(GetLastError() != ERROR_IO_PENDING) { + return -1; + } + else { + // VERY IMPORTANT to flush the data out of the internal + // buffer + FlushFileBuffers(fd); + // first you must call GetOverlappedResult, then you + // get the REALLY transmitted count of bytes + if(!GetOverlappedResult(fd,&m_ov,&write,TRUE)) { + // ooops... something is going wrong + return (int)write; + } + } + } + return write; + }; + +} // namespace ctb diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/timer.cpp b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/timer.cpp new file mode 100644 index 0000000000..617aa5b5ad --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/timer.cpp @@ -0,0 +1,85 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: win32/timer.cpp +// Purpose: +// Author: Joachim Buermann +// Id: $Id: timer.cpp,v 1.2 2004/11/30 12:39:17 jb Exp $ +// Copyright: (c) 2001 Joachim Buermann +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include +#include + +#ifdef WIN32 +#include +# ifndef DWORD_PTR +# define DWORD_PTR DWORD* +# endif +#endif + +#include "ctb-0.16/timer.h" + +namespace ctb { + + static void WINAPI timer_fnc(UINT uTimerID, + UINT uMsg, + DWORD_PTR dwUser, + DWORD_PTR dw1, + DWORD_PTR dw2) + { + timer_control *tc = (timer_control*)dwUser; + + if(tc->exitfnc) tc->exitfnc(NULL); + if(tc->exitflag) *tc->exitflag = 1; + tc->stop = 0; + }; + + Timer::Timer(unsigned int msecs,int* exitflag,void*(*exitfnc)(void*)) + { + control.msecs = msecs; + if(!control.msecs) control.msecs = 1; + control.exitflag = exitflag; + control.exitfnc = exitfnc; + control.stop = 0; + }; + + Timer::~Timer() + { + stop(); // stop the thread + }; + + int Timer::start() + { + stop(); + control.stop = timeSetEvent(control.msecs, + (control.msecs > 10) ? 5 : 1, + (LPTIMECALLBACK) timer_fnc, + (DWORD) &control, + TIME_ONESHOT | TIME_CALLBACK_FUNCTION); + return 0; + }; + + int Timer::stop() + { + if (control.stop) + timeKillEvent(control.stop); + control.stop = 0; + return 0; + }; + + void kill_all_timer() + { + }; + + void sleepms(unsigned int ms) + { + // set the granularity of Sleep() for the application, that + // calls it so Sleep(1) will truly sleep for just a millisecond, + // rather than the default 10! + // See: http://www.geisswerks.com/ryan/FAQS/timing.html + timeBeginPeriod(1); + SleepEx(ms,false); + timeEndPeriod(1); + }; + +} // namespace ctb From 2239dee1b79785d281cafa25f6b1dc6f7644b318 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 11:14:55 +0200 Subject: [PATCH 009/630] gsmopen: fixing libctb-0.16 include --- .../endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h index 767067d6a0..c71929f2be 100644 --- a/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/include/ctb-0.16/ctb.h @@ -7,7 +7,7 @@ #endif #include "ctb-0.16/getopt.h" #include "ctb-0.16/iobase.h" -#include "ctb-0.16/kbhit.h" +//#include "ctb-0.16/kbhit.h" #include "ctb-0.16/portscan.h" #include "ctb-0.16/serport.h" #include "ctb-0.16/serportx.h" From 51b6315e984b9c632bb6af09bbe9e9e4623709da Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 11:26:51 +0200 Subject: [PATCH 010/630] gsmopen: continue cleaning --- .../mod_gsmopen/gsmopen_protocol.cpp | 417 +----------------- 1 file changed, 3 insertions(+), 414 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index ab9bf44d16..ef80b013d6 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,46 +1,13 @@ #include "gsmopen.h" -//#include -#ifndef NO_GSMLIB -#include -#ifdef WIN32 -#include -#else -#include -#endif -#include -#include +extern int running; //FIXME +int gsmopen_dir_entry_extension = 1; //FIXME +int option_debug = 100; //FIXME - -using namespace std; -using namespace gsmlib; -#endif// NO_GSMLIB - -#ifdef ASTERISK -#define gsmopen_sleep usleep -#define gsmopen_strncpy strncpy -#define tech_pvt p -extern int gsmopen_debug; -extern char *gsmopen_console_active; -#else /* FREESWITCH */ #define gsmopen_sleep switch_sleep #define gsmopen_strncpy switch_copy_string extern switch_memory_pool_t *gsmopen_module_pool; extern switch_endpoint_interface_t *gsmopen_endpoint_interface; -#endif /* ASTERISK */ -//int samplerate_gsmopen = SAMPLERATE_GSMOPEN; - -extern int running; -int gsmopen_dir_entry_extension = 1; - -int option_debug = 100; - - -#ifdef WIN32 -#define GSMLIBGIO -#else //WIN32 -#undef GSMLIBGIO -#endif //WIN32 #ifdef WIN32 /***************/ @@ -88,327 +55,6 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz) /***************/ #endif /* WIN32 */ -#ifdef GSMOPEN_PORTAUDIO -#include "pablio.h" - -#ifndef GIOVA48 -#define SAMPLES_PER_FRAME 160 -#else // GIOVA48 -#define SAMPLES_PER_FRAME 960 -#endif // GIOVA48 - -int gsmopen_portaudio_devlist(private_t *tech_pvt) -{ - int i, numDevices; - const PaDeviceInfo *deviceInfo; - - numDevices = Pa_GetDeviceCount(); - if (numDevices < 0) { - return 0; - } - for (i = 0; i < numDevices; i++) { - deviceInfo = Pa_GetDeviceInfo(i); - NOTICA - ("Found PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, i, deviceInfo->name, deviceInfo->maxInputChannels, - deviceInfo->maxOutputChannels); - } - - return numDevices; -} - -int gsmopen_portaudio_init(private_t *tech_pvt) -{ - PaError err; - int c; - PaStreamParameters inputParameters, outputParameters; - int numdevices; - const PaDeviceInfo *deviceInfo; - -#ifndef GIOVA48 - setenv("PA_ALSA_PLUGHW", "1", 1); -#endif // GIOVA48 - - err = Pa_Initialize(); - if (err != paNoError) - return err; - - numdevices = gsmopen_portaudio_devlist(tech_pvt); - - if (tech_pvt->portaudiocindex > (numdevices - 1)) { - ERRORA("Portaudio Capture id=%d is out of range: valid id are from 0 to %d\n", - GSMOPEN_P_LOG, tech_pvt->portaudiocindex, (numdevices - 1)); - return -1; - } - - if (tech_pvt->portaudiopindex > (numdevices - 1)) { - ERRORA("Portaudio Playback id=%d is out of range: valid id are from 0 to %d\n", - GSMOPEN_P_LOG, tech_pvt->portaudiopindex, (numdevices - 1)); - return -1; - } - //inputParameters.device = 0; - if (tech_pvt->portaudiocindex != -1) { - inputParameters.device = tech_pvt->portaudiocindex; - } else { - inputParameters.device = Pa_GetDefaultInputDevice(); - } - deviceInfo = Pa_GetDeviceInfo(inputParameters.device); - NOTICA - ("Using INPUT PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - if (deviceInfo->maxInputChannels == 0) { - ERRORA - ("No INPUT channels on device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - return -1; - } - inputParameters.channelCount = 1; - inputParameters.sampleFormat = paInt16; - //inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultHighInputLatency; - inputParameters.suggestedLatency = 0.1; - inputParameters.hostApiSpecificStreamInfo = NULL; - - //outputParameters.device = 3; - if (tech_pvt->portaudiopindex != -1) { - outputParameters.device = tech_pvt->portaudiopindex; - } else { - outputParameters.device = Pa_GetDefaultOutputDevice(); - } - deviceInfo = Pa_GetDeviceInfo(outputParameters.device); - NOTICA - ("Using OUTPUT PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, outputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - if (deviceInfo->maxOutputChannels == 0) { - ERRORA - ("No OUTPUT channels on device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", - GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, - deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); - return -1; - } -#ifndef GIOVA48 - outputParameters.channelCount = 1; -#else // GIOVA48 - outputParameters.channelCount = 2; -#endif // GIOVA48 - outputParameters.sampleFormat = paInt16; - //outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultHighOutputLatency; - outputParameters.suggestedLatency = 0.1; - outputParameters.hostApiSpecificStreamInfo = NULL; - -/* build the pipe that will be polled on by pbx */ - c = pipe(tech_pvt->audiopipe); - if (c) { - ERRORA("Unable to create audio pipe\n", GSMOPEN_P_LOG); - return -1; - } - fcntl(tech_pvt->audiopipe[0], F_SETFL, O_NONBLOCK); - fcntl(tech_pvt->audiopipe[1], F_SETFL, O_NONBLOCK); - - err = -#ifndef GIOVA48 - OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 8000, - paClipOff|paDitherOff, SAMPLES_PER_FRAME, 0); - //&tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner); - -#else // GIOVA48 - OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 48000, - paDitherOff | paClipOff, SAMPLES_PER_FRAME, tech_pvt->audiopipe[1], - &tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner); - - -#endif// GIOVA48 - if (err != paNoError) { - ERRORA("Unable to open audio stream: %s\n", GSMOPEN_P_LOG, Pa_GetErrorText(err)); - return -1; - } - -/* the pipe is our audio fd for pbx to poll on */ - tech_pvt->gsmopen_sound_capt_fd = tech_pvt->audiopipe[0]; - - return 0; -} -//int gsmopen_portaudio_write(private_t *tech_pvt, struct ast_frame *f) -int gsmopen_portaudio_write(private_t * tech_pvt, short *data, int datalen) -{ - int samples; -#ifdef GIOVA48 - //short buf[GSMOPEN_FRAME_SIZE * 2]; - short buf[3840]; - short *buf2; - - //ERRORA("1 f->datalen=: %d\n", GSMOPEN_P_LOG, f->datalen); - - - - - memset(buf, '\0', GSMOPEN_FRAME_SIZE *2); - - buf2 = f->data; - - int i=0, a=0; - - for(i=0; i< f->datalen / sizeof(short); i++){ -//stereo, 2 chan 48 -> mono 8 - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - buf[a] = buf2[i]; - a++; - /* - */ - } - f->data = &buf; - f->datalen = f->datalen * 6; - //ERRORA("2 f->datalen=: %d\n", GSMOPEN_P_LOG, f->datalen); - //f->datalen = f->datalen; -#endif // GIOVA48 - - - samples = - WriteAudioStream(tech_pvt->stream, (short *) data, (int) (datalen / sizeof(short)), &tech_pvt->timer_write); - - if (samples != (int) (datalen / sizeof(short))) - ERRORA("WriteAudioStream wrote: %d of %d\n", GSMOPEN_P_LOG, samples, - (int) (datalen / sizeof(short))); - - return samples; -} -//struct ast_frame *gsmopen_portaudio_read(private_t *tech_pvt) -#define AST_FRIENDLY_OFFSET 0 -int gsmopen_portaudio_read(private_t * tech_pvt, short *data, int datalen) -{ -#if 0 - //static struct ast_frame f; - static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; - short *buf; - static short __buf2[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; - short *buf2; - int samples; - //char c; - - memset(__buf, '\0', (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); - - buf = __buf + AST_FRIENDLY_OFFSET / 2; - - memset(__buf2, '\0', (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); - - buf2 = __buf2 + AST_FRIENDLY_OFFSET / 2; - -#if 0 - f.frametype = AST_FRAME_NULL; - f.subclass = 0; - f.samples = 0; - f.datalen = 0; - -#ifdef ASTERISK_VERSION_1_6_1 - f.data.ptr = NULL; -#else - f.data = NULL; -#endif /* ASTERISK_VERSION_1_6_1 */ - f.offset = 0; - f.src = gsmopen_type; - f.mallocd = 0; - f.delivery.tv_sec = 0; - f.delivery.tv_usec = 0; -#endif //0 - - //if ((samples = ReadAudioStream(tech_pvt->stream, buf, SAMPLES_PER_FRAME)) == 0) - //if ((samples = ReadAudioStream(tech_pvt->stream, data, datalen/sizeof(short))) == 0) - if (samples = ReadAudioStream(tech_pvt->stream, (short *)data, datalen, &tech_pvt->timer_read) == 0) { - //do nothing - } else { -#ifdef GIOVA48 - int i=0, a=0; - - samples = samples / 6; - for(i=0; i< samples; i++){ - buf2[i] = buf[a]; - a = a + 6; //mono, 1 chan 48 -> 8 - } - buf = buf2; - -#if 0 - /* A real frame */ - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.samples = GSMOPEN_FRAME_SIZE/6; - f.datalen = GSMOPEN_FRAME_SIZE * 2/6; -#endif //0 -#else// GIOVA48 -#if 0 - /* A real frame */ - f.frametype = AST_FRAME_VOICE; - f.subclass = AST_FORMAT_SLINEAR; - f.samples = GSMOPEN_FRAME_SIZE; - f.datalen = GSMOPEN_FRAME_SIZE * 2; -#endif //0 -#endif// GIOVA48 - -#if 0 -#ifdef ASTERISK_VERSION_1_6_1 - f.data.ptr = buf; -#else - f.data = buf; -#endif /* ASTERISK_VERSION_1_6_1 */ - f.offset = AST_FRIENDLY_OFFSET; - f.src = gsmopen_type; - f.mallocd = 0; -#endif //0 - } - -#if 0 - read(tech_pvt->audiopipe[0], &c, 1); - - return &f; -#endif //0 -#endif //0 - - int samples; - samples = ReadAudioStream(tech_pvt->stream, (short *)data, datalen, &tech_pvt->timer_read); - //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); - - return samples; -} -int gsmopen_portaudio_shutdown(private_t *tech_pvt) -{ - PaError err; - - err = CloseAudioStream(tech_pvt->stream); - - if (err != paNoError) - ERRORA("not able to CloseAudioStream\n", GSMOPEN_P_LOG); - - Pa_Terminate(); - return 0; -} - - - - -#endif // GSMOPEN_PORTAUDIO -#ifndef GSMLIBGIO int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) { int fd; @@ -490,63 +136,6 @@ int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) } return (fd); } -#else //GSMLIBGIO -#ifdef WIN32 -int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) -#else -int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) -#endif //WIN32 -{ - int i; - string ciapa; - SMSMessageRef sms; - char content2[1000]; - int size; - -#ifdef WIN32 - Ref port = new Win32SerialPort((string) tech_pvt->controldevice_name, 38400); -#else - //Ref port = new UnixSerialPort((string)argv[1], B38400); - Ref < Port > port = new UnixSerialPort((string) tech_pvt->controldevice_name, B115200); -#endif - MeTa m(port); - - //cout << "Creating GsmAt object" << endl; - Ref gsmat = new GsmAt(m); - - //cout << "Using GsmAt object" << endl; - //cout << gsmat->chat("AT", "OK", false, false) << endl; - //cout << gsmat->chat("D3472665618;") << endl; - gsmat->putLine("AT+cgmm", true); - for (i = 0; i < 4; i++) { - ciapa = gsmat->getLine(); - //cout << "PRESO: |||" << ciapa << "|||" << endl; - NOTICA("PRESO %d |||%s|||\n", GSMOPEN_P_LOG, i, ciapa.c_str()); - //gsmopen_sleep(5000); - } - - sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 - NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - -#if 0 - size = MultiByteToWideChar(CP_OEMCP, 0, username, strlen(username)+1, UserName, 0); - UserName=(wchar_t*)GlobalAlloc(GME­ M_ZEROINIT, size); - ret = MultiByteToWideChar(CP_OEMCP, 0, username, strlen(username)+1, UserName, size); - if(ret == 0) - getError(GetLastError()); -#endif //0 - return (-1); -} - -#endif //GSMLIBGIO int gsmopen_serial_read(private_t * tech_pvt) From 11ee736da73c03837aaa0e64a3680b4cba6bf93c Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 12:01:23 +0200 Subject: [PATCH 011/630] gsmopen: cleaning from gsmlib --- .../mod_gsmopen/gsmopen_protocol.cpp | 95 ------------------- 1 file changed, 95 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index ef80b013d6..a17bce4e9e 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -172,30 +172,6 @@ int gsmopen_serial_sync(private_t * tech_pvt) int gsmopen_serial_config(private_t * tech_pvt) { -#ifndef NO_GSMLIB - SMSMessageRef sms; - char content2[1000]; - //sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 - //sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 - //sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 - sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - //sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 - //NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); - } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - - } - //NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - //NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); -#endif// NO_GSMLIB - if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_config_AT(tech_pvt); #ifdef GSMOPEN_FBUS2 @@ -1694,53 +1670,6 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u DEBUGA_GSMOPEN("2 content3=%s\n", GSMOPEN_P_LOG, content3); } } else { -#ifndef NO_GSMLIB - char content2[1000]; - SMSMessageRef sms; -//MessageType messagetype; -//Address servicecentreaddress; -//Timestamp servicecentretimestamp; -//Address sender_recipient_address; - - sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - - DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); - } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - - } - DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); - DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); - DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); - DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); - - - memset(sms_body, '\0', sizeof(sms_body)); - strncpy(sms_body, content2, sizeof(sms_body)); - DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); - strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); - strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); - strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); - strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); - strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), - sizeof(tech_pvt->sms_servicecentreaddress)); - tech_pvt->sms_messagetype = sms->messageType(); -//messagetype = sms->messageType(); -//servicecentreaddress = sms->serviceCentreAddress(); -//servicecentretimestamp = sms->serviceCentreTimestamp(); -//sender_recipient_address = sms->address(); - -#endif// NO_GSMLIB } #if 0 @@ -2843,30 +2772,6 @@ snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream) } snd_pcm_dump(handle, output); -#ifndef NO_GSMLIB - SMSMessageRef sms; - char content2[1000]; - //sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 - //sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 - //sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 - sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - //sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 - //NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); - } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - - } - //NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - //NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); -#endif// NO_GSMLIB - } if (option_debug > 1) DEBUGA_GSMOPEN("ALSA handle = %ld\n", GSMOPEN_P_LOG, (long int) handle); From 3c27c1f823f78d36de2e604c8c4d09f903133137 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 12:56:26 +0200 Subject: [PATCH 012/630] gsmopen: begin AT control with tcblib --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 ++ .../endpoints/mod_gsmopen/gsmopen_protocol.cpp | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index d740f781b8..e2e4b0f15b 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -523,6 +523,8 @@ struct private_object { switch_mutex_t *controldev_audio_lock; ctb::SerialPort* serialPort_serial_audio; + ctb::SerialPort* serialPort_serial_control; + }; typedef struct private_object private_t; diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index a17bce4e9e..5cc9ae4aed 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -57,6 +57,18 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz) int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) { + + tech_pvt->serialPort_serial_control = new ctb::SerialPort(); + + if( tech_pvt->serialPort_serial_control->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); + } else { + ERRORA("port NOT open\n", GSMOPEN_P_LOG); + } + + return 0; +#ifdef NOTDEF + int fd; int rt; struct termios tp; @@ -135,6 +147,7 @@ int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) return -1; } return (fd); +#endif// NOTDEF } @@ -393,7 +406,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG); tech_pvt->no_ucs2 = 1; } -#ifdef NOTDEF +#ifdef NOTDEF //GSMLIB? if (tech_pvt->no_ucs2) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); if (res) { From 94ca0be2969aad016a39d44d535b567a2f372909 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 14:45:49 +0200 Subject: [PATCH 013/630] gsmopen: continue AT control with tcblib, basic calls ok --- .../mod_gsmopen/gsmopen_protocol.cpp | 68 ++++++++++++------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 5cc9ae4aed..2acb275c04 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -546,7 +546,7 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u { int select_err = 1; int res; - fd_set read_fds; + //fd_set read_fds; struct timeval timeout; char tmp_answer[AT_BUFSIZ]; char tmp_answer2[AT_BUFSIZ]; @@ -557,13 +557,19 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u int la_counter = 0; int at_ack = -1; int la_read = 0; +int timeout1; + +timeout1 = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ); + +if(timeout1 != 100) + ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout1); if(!running || !tech_pvt->running){ return -1; } - FD_ZERO(&read_fds); - FD_SET(tech_pvt->controldevfd, &read_fds); + ////FD_ZERO(&read_fds); + //FD_SET(tech_pvt->controldevfd, &read_fds); //NOTICA (" INSIDE this gsmopen_serial_device %s \n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); tmp_answer_ptr = tmp_answer; @@ -574,18 +580,20 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u PUSHA_UNLOCKA(tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); - while ((!tech_pvt->controldev_dead) && ((select_err = select(tech_pvt->controldevfd + 1, &read_fds, NULL, NULL, &timeout)) > 0)) { + //while ((!tech_pvt->controldev_dead) && ((select_err = select(tech_pvt->controldevfd + 1, &read_fds, NULL, NULL, &timeout)) > 0)) { + while ( (!tech_pvt->controldev_dead) && (read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ) ) > 0) ) { char *token_ptr; timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it - read_count = read(tech_pvt->controldevfd, tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); + //cicopet read_count = read(tech_pvt->controldevfd, tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); + //cicopet read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ) ); if (read_count == 0) { ERRORA ("read 0 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); tech_pvt->controldev_dead = 1; - close(tech_pvt->controldevfd); + //cicopet close(tech_pvt->controldevfd); ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); tech_pvt->running=0; alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); @@ -1725,7 +1733,7 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u if (select_err == -1) { ERRORA("select returned -1 on %s, setting controldev_dead, error was: %s\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name, strerror(errno)); tech_pvt->controldev_dead = 1; - close(tech_pvt->controldevfd); + //cicopet close(tech_pvt->controldevfd); tech_pvt->running=0; alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead"); @@ -1796,48 +1804,54 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u return 0; } +//cicopet int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data) int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data) { int howmany; int i; int res; int count; +char *Data=(char *)data; - howmany = strlen(data); + howmany = strlen(Data); for (i = 0; i < howmany; i++) { - res = write(tech_pvt->controldevfd, &data[i], 1); + //cicopetres = write(tech_pvt->controldevfd, &data[i], 1); + res = tech_pvt->serialPort_serial_control->Write(&Data[i], 1); if (res != 1) { - DEBUGA_GSMOPEN("Error sending (%.1s): %d (%s)\n", GSMOPEN_P_LOG, &data[i], res, strerror(errno)); + DEBUGA_GSMOPEN("Error sending (%.1s): %d (%s)\n", GSMOPEN_P_LOG, &Data[i], res, strerror(errno)); gsmopen_sleep(100000); for (count = 0; count < 10; count++) { - res = write(tech_pvt->controldevfd, &data[i], 1); + //cicopet res = write(tech_pvt->controldevfd, &data[i], 1); + res = tech_pvt->serialPort_serial_control->Write(&Data[i], 1); if (res == 1) { - DEBUGA_GSMOPEN("Successfully RE-sent (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + DEBUGA_GSMOPEN("Successfully RE-sent (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); break; } else - DEBUGA_GSMOPEN("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + DEBUGA_GSMOPEN("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); gsmopen_sleep(100000); } if (res != 1) { - ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); return -1; } } if (option_debug > 1) - DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &data[i]); + DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &Data[i]); gsmopen_sleep(1000); /* release the cpu */ } - res = write(tech_pvt->controldevfd, "\r", 1); + //cicopet res = write(tech_pvt->controldevfd, "\r", 1); + res = tech_pvt->serialPort_serial_control->Write((char *)"\r", 1); if (res != 1) { DEBUGA_GSMOPEN("Error sending (carriage return): %d (%s)\n", GSMOPEN_P_LOG, res, strerror(errno)); gsmopen_sleep(100000); for (count = 0; count < 10; count++) { - res = write(tech_pvt->controldevfd, "\r", 1); + //cicopet res = write(tech_pvt->controldevfd, "\r", 1); + res = tech_pvt->serialPort_serial_control->Write((char *)"\r", 1); if (res == 1) { DEBUGA_GSMOPEN("Successfully RE-sent carriage return: %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); @@ -1865,31 +1879,34 @@ int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data) int i; int res; int count; +char *Data=(char *)data; - howmany = strlen(data); + howmany = strlen(Data); for (i = 0; i < howmany; i++) { - res = write(tech_pvt->controldevfd, &data[i], 1); + //cicopet res = write(tech_pvt->controldevfd, &data[i], 1); + res = tech_pvt->serialPort_serial_control->Write(&Data[i], 1); if (res != 1) { - DEBUGA_GSMOPEN("Error sending (%.1s): %d (%s)\n", GSMOPEN_P_LOG, &data[i], res, strerror(errno)); + DEBUGA_GSMOPEN("Error sending (%.1s): %d (%s)\n", GSMOPEN_P_LOG, &Data[i], res, strerror(errno)); gsmopen_sleep(100000); for (count = 0; count < 10; count++) { - res = write(tech_pvt->controldevfd, &data[i], 1); + //cicopet res = write(tech_pvt->controldevfd, &data[i], 1); + res = tech_pvt->serialPort_serial_control->Write(&Data[i], 1); if (res == 1) break; else - DEBUGA_GSMOPEN("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + DEBUGA_GSMOPEN("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); gsmopen_sleep(100000); } if (res != 1) { - ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); return -1; } } if (option_debug > 1) - DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &data[i]); + DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &Data[i]); gsmopen_sleep(1000); /* release the cpu */ } @@ -1932,7 +1949,8 @@ int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data) return -1; } - at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout + //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, 0, NULL, 1); // 1/10th sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); From aa78fa77b05c6a342b300a76985a94dcf3ca6b99 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 15:09:41 +0200 Subject: [PATCH 014/630] gsmopen: continue AT control with tcblib, most of the AT timeouts are now 1/10th of sec, eg: 100millisec --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 4 ++-- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index e2e4b0f15b..557ab640c9 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -585,8 +585,8 @@ int gsmopen_serial_sync_AT(private_t * tech_pvt); int gsmopen_serial_config(private_t * tech_pvt); int gsmopen_serial_config_AT(private_t * tech_pvt); -#define gsmopen_serial_write_AT_expect(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 2) -#define gsmopen_serial_write_AT_expect_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 2) +#define gsmopen_serial_write_AT_expect(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 0) +#define gsmopen_serial_write_AT_expect_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 0) #define gsmopen_serial_write_AT_expect_noexpcr_tout(P, D, S, T) gsmopen_serial_write_AT_expect1(P, D, S, 0, T) // 20.5 sec timeout, used for querying the SIM and sending SMSs #define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 20) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 2acb275c04..98a60babbf 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1994,7 +1994,7 @@ int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, cons return -1; } - at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, seconds, expected_string, expect_crlf); // minimum 1/10th sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); @@ -2011,7 +2011,8 @@ int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, if (option_debug > 1) DEBUGA_GSMOPEN("expecting: %s\n", GSMOPEN_P_LOG, expected_string); - at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs + //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, seconds, expected_string, expect_crlf); // minimum 1/10th sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); From b3903124ca6b2f67790e2e0740573bd5aa6b0882 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 15:33:13 +0200 Subject: [PATCH 015/630] gsmopen: cleaning portaudio --- .../mod_gsmopen/gsmopen_protocol.cpp | 3 - src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 191 +----------------- 2 files changed, 11 insertions(+), 183 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 98a60babbf..3943ede712 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2346,9 +2346,6 @@ int gsmopen_answer(private_t * tech_pvt) if (option_debug) DEBUGA_PBX("call answered\n", GSMOPEN_P_LOG); res = 0; -#ifdef GSMOPEN_PORTAUDIO - //speex_echo_state_reset(tech_pvt->stream->echo_state); -#endif // GSMOPEN_PORTAUDIO new_inbound_channel(tech_pvt); if (tech_pvt->owner) { diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index e89a66da4e..896c38ed7a 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -287,15 +287,6 @@ switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *s } } #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - if(tech_pvt->no_sound==0){ - if (gsmopen_portaudio_init(tech_pvt)) { - ERRORA("gsmopen_portaudio_init failed\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - - } - } -#endif// GSMOPEN_PORTAUDIO if(tech_pvt->no_sound==0){ if (serial_audio_init(tech_pvt)) { ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); @@ -633,14 +624,6 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) alsa_shutdown(tech_pvt); } #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - if(tech_pvt->no_sound==0){ - if (gsmopen_portaudio_shutdown(tech_pvt)) { - ERRORA("gsmopen_portaudio_shutdown failed\n", GSMOPEN_P_LOG); - - } - } -#endif// GSMOPEN_PORTAUDIO if(tech_pvt->no_sound==0){ serial_audio_shutdown(tech_pvt); } @@ -819,17 +802,11 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; switch_byte_t *data; -#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#if defined(GSMOPEN_ALSA) int samples; char digit_str[256]; -#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) -#ifdef GSMOPEN_PORTAUDIO -#ifdef WANT_SPEEX - spx_int16_t *speexptr; - spx_int16_t pcm2[160]; - int i; -#endif// GSMOPEN_ALSA -#endif// WANT_SPEEX +#endif // defined(GSMOPEN_ALSA) + int samples; int samples2; char digit_str[256]; @@ -856,9 +833,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch return SWITCH_STATUS_FALSE; } -#ifndef GSMOPEN_PORTAUDIO switch_core_timer_next(&tech_pvt->timer_read); -#endif// GSMOPEN_PORTAUDIO if(tech_pvt->no_sound==1){ goto cng; @@ -867,46 +842,13 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - if ((samples = gsmopen_portaudio_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) -#endif// GSMOPEN_PORTAUDIO - if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) { -#ifdef GSMOPEN_PORTAUDIO -#ifdef WANT_SPEEX - - if (tech_pvt->speexecho) { - speexptr = ((spx_int16_t *) tech_pvt->read_frame.data); - /* Perform echo cancellation */ - speex_echo_capture(tech_pvt->echo_state, speexptr, pcm2); -#ifndef GIOVA48 - for (i = 0; i < 160; i++) -#else //GIOVA48 - for (i = 0; i < 960; i++) -#endif //GIOVA48 - speexptr[i] = pcm2[i]; - } - /* Apply noise/echo residual suppression */ - if (tech_pvt->speexpreprocess) { - speex_preprocess_run(tech_pvt->preprocess, speexptr); - } - - DEBUGA_GSMOPEN("read\n", GSMOPEN_P_LOG); -#endif //WANT_SPEEX -#endif // GSMOPEN_PORTAUDIO - - - - - tech_pvt->read_frame.datalen = samples; tech_pvt->read_frame.samples = samples/2; -#ifndef GSMOPEN_PORTAUDIO tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; -#endif// GSMOPEN_PORTAUDIO *frame = &tech_pvt->read_frame; @@ -999,9 +941,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch tech_pvt->read_frame.datalen = 2; tech_pvt->read_frame.flags = SFF_CNG; *frame = &tech_pvt->read_frame; -#ifdef GSMOPEN_PORTAUDIO - //speex_echo_state_reset(tech_pvt->stream->echo_state); -#endif // GSMOPEN_PORTAUDIO return SWITCH_STATUS_SUCCESS; } @@ -1010,14 +949,10 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; -#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#if defined(GSMOPEN_ALSA) unsigned int sent; -#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) -#ifdef GSMOPEN_PORTAUDIO -#ifdef WANT_SPEEX - spx_int16_t *speexptr; -#endif// GSMOPEN_ALSA -#endif// WANT_SPEEX +#endif // defined(GSMOPEN_ALSA) + unsigned int sent; channel = switch_core_session_get_channel(session); @@ -1058,24 +993,6 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); } #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - sent = gsmopen_portaudio_write(tech_pvt, (short *) frame->data, (int) (frame->datalen)); -//DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); - - if (sent && sent != frame->datalen / 2 && sent != -1) { - DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); - } - -#ifdef WANT_SPEEX - if (tech_pvt->speexecho) { - speexptr = (spx_int16_t *) frame->data; - /* Put frame into playback buffer */ - speex_echo_playback(tech_pvt->echo_state, speexptr); - DEBUGA_GSMOPEN("write\n", GSMOPEN_P_LOG); - } -#endif //WANT_SPEEX -#endif // GSMOPEN_PORTAUDIO - sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); if (sent && sent != frame->datalen && sent != -1) { @@ -1140,7 +1057,7 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s #if defined(GSMOPEN_ALSA) int samples; short tmp_buffer[1280]; -#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#endif // defined(GSMOPEN_ALSA) channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); @@ -1166,14 +1083,6 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s //WARNINGA("read %d samples\n", GSMOPEN_P_LOG, samples); } #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - //while ((samples = gsmopen_portaudio_read(tech_pvt, tmp_buffer, tech_pvt->read_codec.implementation->samples_per_packet * 2)) > 160) { - //WARNINGA("read %d samples\n", GSMOPEN_P_LOG, samples); - //} -#ifdef WANT_SPEEX - speex_echo_state_reset(tech_pvt->echo_state); -#endif// WANT_SPEEX -#endif// GSMOPEN_PORTAUDIO break; @@ -1490,11 +1399,11 @@ static switch_status_t load_config(int reload_type) const char *alsa_capture_is_mono = "1"; const char *capture_boost = "0"; const char *playback_boost = "0"; -#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#if defined(GSMOPEN_ALSA) const char *no_sound = "0"; #else const char *no_sound = "0"; -#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#endif // defined(GSMOPEN_ALSA) const char *portaudiocindex = "1"; const char *portaudiopindex = "1"; const char *speexecho = "1"; @@ -1853,12 +1762,6 @@ static switch_status_t load_config(int reload_type) switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsapname, alsapname); #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = atoi(portaudiocindex); - globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = atoi(portaudiopindex); - globals.GSMOPEN_INTERFACES[interface_id].speexecho = atoi(speexecho); - globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = atoi(speexpreprocess); -#endif// GSMOPEN_PORTAUDIO globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio); globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause); globals.GSMOPEN_INTERFACES[interface_id].at_initial_pause = atoi(at_initial_pause); @@ -1873,11 +1776,11 @@ static switch_status_t load_config(int reload_type) #endif// GSMOPEN_ALSA globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost); globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost); -#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#if defined(GSMOPEN_ALSA) globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); #else globals.GSMOPEN_INTERFACES[interface_id].no_sound = 0; -#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#endif // defined(GSMOPEN_ALSA) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); @@ -1903,17 +1806,6 @@ static switch_status_t load_config(int reload_type) #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - //FIXME - //globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = 1; - //globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = 1; - //globals.GSMOPEN_INTERFACES[interface_id].speexecho = 1; - //globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = 1; - DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex); - DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex); - DEBUGA_GSMOPEN("speexecho=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].speexecho); - DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess); -#endif// GSMOPEN_PORTAUDIO DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); @@ -1987,31 +1879,6 @@ static switch_status_t load_config(int reload_type) } #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - if (gsmopen_portaudio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { - ERRORA("gsmopen_portaudio_init failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_portaudio_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; - continue; - - } - - if (gsmopen_portaudio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { - ERRORA("gsmopen_portaudio_shutdown failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_portaudio_shutdown failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; - continue; - - } -#endif// GSMOPEN_PORTAUDIO if (serial_audio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); @@ -2083,12 +1950,6 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsacname); DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsapname); #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].portaudiocindex); - DEBUGA_GSMOPEN("portaudiopindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].portaudiopindex); - DEBUGA_GSMOPEN("speexecho=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexecho); - DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexpreprocess); -#endif// GSMOPEN_PORTAUDIO DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); } @@ -2811,16 +2672,6 @@ SWITCH_STANDARD_API(gsmopen_dump_function) stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiocindex); - stream->write_function(stream, "portaudiocindex = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiopindex); - stream->write_function(stream, "portaudiopindex = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexecho); - stream->write_function(stream, "speexecho = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexpreprocess); - stream->write_function(stream, "speexpreprocess = %s\n", value); -#endif// GSMOPEN_PORTAUDIO snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); stream->write_function(stream, "playback_boost = %s\n", value); snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); @@ -2884,16 +2735,6 @@ SWITCH_STANDARD_API(gsmopen_dump_function) stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiocindex); - stream->write_function(stream, "portaudiocindex = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiopindex); - stream->write_function(stream, "portaudiopindex = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexecho); - stream->write_function(stream, "speexecho = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexpreprocess); - stream->write_function(stream, "speexpreprocess = %s\n", value); -#endif// GSMOPEN_PORTAUDIO snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); stream->write_function(stream, "playback_boost = %s\n", value); snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); @@ -3292,16 +3133,6 @@ int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const ch switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsacname", tech_pvt->alsacname); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsapname", tech_pvt->alsapname); #endif// GSMOPEN_ALSA -#ifdef GSMOPEN_PORTAUDIO - snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiocindex); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "portaudiocindex", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiopindex); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "portaudiopindex", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexecho); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "speexecho", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexpreprocess); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "speexpreprocess", value); -#endif// GSMOPEN_PORTAUDIO snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "playback_boost", value); snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); From d5c8fb737ee01cca9a0dcc560f1d66abe9e6ecac Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 15:34:34 +0200 Subject: [PATCH 016/630] gsmopen: cleaning portaudio --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 34 ------------------------- 1 file changed, 34 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 557ab640c9..7c72dcf651 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -90,14 +90,6 @@ #include #endif /* GSMOPEN_ALSA */ -#ifdef GSMOPEN_PORTAUDIO -#include "pablio.h" -#undef WANT_SPEEX -#ifdef WANT_SPEEX -#include "speex/speex_preprocess.h" -#include "speex/speex_echo.h" -#endif /* WANT_SPEEX */ -#endif// GSMOPEN_PORTAUDIO //#include "celliax_spandsp.h" #ifndef WIN32 @@ -491,18 +483,6 @@ struct private_object { int no_sound; -#ifdef GSMOPEN_PORTAUDIO - int speexecho; - int speexpreprocess; - int portaudiocindex; /*!< \brief Index of the Portaudio capture audio device */ - int portaudiopindex; /*!< \brief Index of the Portaudio playback audio device */ - PABLIO_Stream *stream; - -#ifdef WANT_SPEEX - SpeexPreprocessState *preprocess; - SpeexEchoState *echo_state; -#endif// WANT_SPEEX -#endif// GSMOPEN_PORTAUDIO dtmf_rx_state_t dtmf_state; int active; int home_network_registered; @@ -657,20 +637,6 @@ int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out int gsmopen_serial_getstatus_AT(private_t * tech_pvt); -#ifdef GSMOPEN_PORTAUDIO - -int gsmopen_portaudio_devlist(private_t *tech_pvt); - -int gsmopen_portaudio_init(private_t *tech_pvt); - -int gsmopen_portaudio_write(private_t * tech_pvt, short *data, int datalen); - -int gsmopen_portaudio_read(private_t * tech_pvt, short *data, int datalen); - - -int gsmopen_portaudio_shutdown(private_t *tech_pvt); - -#endif // GSMOPEN_PORTAUDIO int dump_event(private_t *tech_pvt); int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message); int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message); From 365a50182b1206c79d6cc29d9628546c097d73e4 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 15:37:46 +0200 Subject: [PATCH 017/630] gsmopen: cleaning portaudio --- src/mod/endpoints/mod_gsmopen/pa_ringbuffer.c | 275 ------- src/mod/endpoints/mod_gsmopen/pa_ringbuffer.h | 192 ----- src/mod/endpoints/mod_gsmopen/pablio.c | 720 ------------------ src/mod/endpoints/mod_gsmopen/pablio.h | 120 --- .../endpoints/mod_gsmopen/portaudio_devlist.c | 54 -- .../mod_gsmopen/Makefile | 6 - .../mod_gsmopen/filtra48down8.c | 1 - .../mod_gsmopen/filtra8up48.c | 1 - .../mod_gsmopen/gsmopen.h | 1 - .../mod_gsmopen/gsmopen_protocol.cpp | 1 - .../mod_gsmopen/mod_gsmopen.cpp | 1 - .../mod_gsmopen/pa_ringbuffer.c | 1 - .../mod_gsmopen/pa_ringbuffer.h | 1 - .../mod_gsmopen/pablio.c | 1 - .../mod_gsmopen/pablio.h | 1 - .../mod_gsmopen/portaudio_devlist.c | 1 - .../mod_gsmopen/usb-cm-108-2.txt | 1 - .../mod_gsmopen/Makefile | 6 - .../mod_gsmopen/filtra48down8.c | 1 - .../mod_gsmopen/filtra8up48.c | 1 - .../mod_gsmopen/gsmopen.h | 1 - .../mod_gsmopen/gsmopen_protocol.c | 1 - .../mod_gsmopen/mod_gsmopen.c | 1 - .../mod_gsmopen/pa_ringbuffer.c | 1 - .../mod_gsmopen/pa_ringbuffer.h | 1 - .../mod_gsmopen/pablio.c | 1 - .../mod_gsmopen/pablio.h | 1 - .../mod_gsmopen/portaudio_devlist.c | 1 - .../mod_gsmopen/usb-cm-108-2.txt | 1 - 29 files changed, 1395 deletions(-) delete mode 100644 src/mod/endpoints/mod_gsmopen/pa_ringbuffer.c delete mode 100644 src/mod/endpoints/mod_gsmopen/pa_ringbuffer.h delete mode 100644 src/mod/endpoints/mod_gsmopen/pablio.c delete mode 100644 src/mod/endpoints/mod_gsmopen/pablio.h delete mode 100644 src/mod/endpoints/mod_gsmopen/portaudio_devlist.c delete mode 100644 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/Makefile delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra48down8.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra8up48.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen.h delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen_protocol.cpp delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/mod_gsmopen.cpp delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.h delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/portaudio_devlist.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/Makefile delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra48down8.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra8up48.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen.h delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen_protocol.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/mod_gsmopen.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.h delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/portaudio_devlist.c delete mode 120000 src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt diff --git a/src/mod/endpoints/mod_gsmopen/pa_ringbuffer.c b/src/mod/endpoints/mod_gsmopen/pa_ringbuffer.c deleted file mode 100644 index b632c06084..0000000000 --- a/src/mod/endpoints/mod_gsmopen/pa_ringbuffer.c +++ /dev/null @@ -1,275 +0,0 @@ -/* - * $Id: pa_ringbuffer.c 1164 2006-12-21 15:34:50Z bjornroche $ - * Portable Audio I/O Library - * Ring Buffer utility. - * - * Author: Phil Burk, http://www.softsynth.com - * modified for SMP safety on Mac OS X by Bjorn Roche - * modified for SMP safety on Linux by Leland Lucius - * also, allowed for const where possible - * Note that this is safe only for a single-thread reader and a - * single-thread writer. - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -/** - @file - @ingroup common_src -*/ - -#include -#include -#include -#include "pa_ringbuffer.h" -#include - -/**************** - * First, we'll define some memory barrier primitives based on the system. - * right now only OS X, FreeBSD, and Linux are supported. In addition to providing - * memory barriers, these functions should ensure that data cached in registers - * is written out to cache where it can be snooped by other CPUs. (ie, the volatile - * keyword should not be required) - * - * the primitives that must be defined are: - * - * PaUtil_FullMemoryBarrier() - * PaUtil_ReadMemoryBarrier() - * PaUtil_WriteMemoryBarrier() - * - ****************/ -#define __VIA_HACK__ -#if defined(__VIA_HACK__) -#define NO_BARRIER -#endif - -#if defined(NO_BARRIER) -# define PaUtil_FullMemoryBarrier() -# define PaUtil_ReadMemoryBarrier() -# define PaUtil_WriteMemoryBarrier() -#else - -#if defined(__APPLE__) //|| defined(__FreeBSD__) -# include - /* Here are the memory barrier functions. Mac OS X and FreeBSD only provide - full memory barriers, so the three types of barriers are the same. */ -# define PaUtil_FullMemoryBarrier() OSMemoryBarrier() -# define PaUtil_ReadMemoryBarrier() OSMemoryBarrier() -# define PaUtil_WriteMemoryBarrier() OSMemoryBarrier() -#elif defined(__GNUC__) - - /* GCC understands volatile asm and "memory" to mean it - * should not reorder memory read/writes */ -# if defined( __PPC__ ) -# define PaUtil_FullMemoryBarrier() __asm__ volatile("sync":::"memory") -# define PaUtil_ReadMemoryBarrier() __asm__ volatile("sync":::"memory") -# define PaUtil_WriteMemoryBarrier() __asm__ volatile("sync":::"memory") -# elif defined( __i386__ ) || defined( __i486__ ) || defined( __i586__ ) || defined( __i686__ ) || defined(__x86_64__) -# define PaUtil_FullMemoryBarrier() __asm__ volatile("mfence":::"memory") -# define PaUtil_ReadMemoryBarrier() __asm__ volatile("lfence":::"memory") -# define PaUtil_WriteMemoryBarrier() __asm__ volatile("sfence":::"memory") -# else -# define PaUtil_FullMemoryBarrier() -# define PaUtil_ReadMemoryBarrier() -# define PaUtil_WriteMemoryBarrier() -# endif -#elif defined(_MSC_VER) -# include -# pragma intrinsic(_ReadWriteBarrier) -# pragma intrinsic(_ReadBarrier) -# pragma intrinsic(_WriteBarrier) -# define PaUtil_FullMemoryBarrier() _ReadWriteBarrier() -# define PaUtil_ReadMemoryBarrier() _ReadBarrier() -# define PaUtil_WriteMemoryBarrier() _WriteBarrier() -#else -# define PaUtil_FullMemoryBarrier() -# define PaUtil_ReadMemoryBarrier() -# define PaUtil_WriteMemoryBarrier() -#endif -#endif -/*************************************************************************** - * Initialize FIFO. - * numBytes must be power of 2, returns -1 if not. - */ -long PaUtil_InitializeRingBuffer(PaUtilRingBuffer * rbuf, long numBytes, void *dataPtr) -{ - if (((numBytes - 1) & numBytes) != 0) - return -1; /* Not Power of two. */ - rbuf->bufferSize = numBytes; - rbuf->buffer = (char *) dataPtr; - PaUtil_FlushRingBuffer(rbuf); - rbuf->bigMask = (numBytes * 2) - 1; - rbuf->smallMask = (numBytes) - 1; - return 0; -} - -/*************************************************************************** -** Return number of bytes available for reading. */ -long PaUtil_GetRingBufferReadAvailable(PaUtilRingBuffer * rbuf) -{ - PaUtil_ReadMemoryBarrier(); - return ((rbuf->writeIndex - rbuf->readIndex) & rbuf->bigMask); -} - -/*************************************************************************** -** Return number of bytes available for writing. */ -long PaUtil_GetRingBufferWriteAvailable(PaUtilRingBuffer * rbuf) -{ - /* Since we are calling PaUtil_GetRingBufferReadAvailable, we don't need an aditional MB */ - return (rbuf->bufferSize - PaUtil_GetRingBufferReadAvailable(rbuf)); -} - -/*************************************************************************** -** Clear buffer. Should only be called when buffer is NOT being read. */ -void PaUtil_FlushRingBuffer(PaUtilRingBuffer * rbuf) -{ - rbuf->writeIndex = rbuf->readIndex = 0; -} - -/*************************************************************************** -** Get address of region(s) to which we can write data. -** If the region is contiguous, size2 will be zero. -** If non-contiguous, size2 will be the size of second region. -** Returns room available to be written or numBytes, whichever is smaller. -*/ -long PaUtil_GetRingBufferWriteRegions(PaUtilRingBuffer * rbuf, long numBytes, void **dataPtr1, long *sizePtr1, void **dataPtr2, long *sizePtr2) -{ - long index; - long available = PaUtil_GetRingBufferWriteAvailable(rbuf); - if (numBytes > available) - numBytes = available; - /* Check to see if write is not contiguous. */ - index = rbuf->writeIndex & rbuf->smallMask; - if ((index + numBytes) > rbuf->bufferSize) { - /* Write data in two blocks that wrap the buffer. */ - long firstHalf = rbuf->bufferSize - index; - *dataPtr1 = &rbuf->buffer[index]; - *sizePtr1 = firstHalf; - *dataPtr2 = &rbuf->buffer[0]; - *sizePtr2 = numBytes - firstHalf; - } else { - *dataPtr1 = &rbuf->buffer[index]; - *sizePtr1 = numBytes; - *dataPtr2 = NULL; - *sizePtr2 = 0; - } - return numBytes; -} - - -/*************************************************************************** -*/ -long PaUtil_AdvanceRingBufferWriteIndex(PaUtilRingBuffer * rbuf, long numBytes) -{ - /* we need to ensure that previous writes are seen before we update the write index */ - PaUtil_WriteMemoryBarrier(); - return rbuf->writeIndex = (rbuf->writeIndex + numBytes) & rbuf->bigMask; -} - -/*************************************************************************** -** Get address of region(s) from which we can read data. -** If the region is contiguous, size2 will be zero. -** If non-contiguous, size2 will be the size of second region. -** Returns room available to be written or numBytes, whichever is smaller. -*/ -long PaUtil_GetRingBufferReadRegions(PaUtilRingBuffer * rbuf, long numBytes, void **dataPtr1, long *sizePtr1, void **dataPtr2, long *sizePtr2) -{ - long index; - long available = PaUtil_GetRingBufferReadAvailable(rbuf); - if (numBytes > available) - numBytes = available; - /* Check to see if read is not contiguous. */ - index = rbuf->readIndex & rbuf->smallMask; - if ((index + numBytes) > rbuf->bufferSize) { - /* Write data in two blocks that wrap the buffer. */ - long firstHalf = rbuf->bufferSize - index; - *dataPtr1 = &rbuf->buffer[index]; - *sizePtr1 = firstHalf; - *dataPtr2 = &rbuf->buffer[0]; - *sizePtr2 = numBytes - firstHalf; - } else { - *dataPtr1 = &rbuf->buffer[index]; - *sizePtr1 = numBytes; - *dataPtr2 = NULL; - *sizePtr2 = 0; - } - return numBytes; -} - -/*************************************************************************** -*/ -long PaUtil_AdvanceRingBufferReadIndex(PaUtilRingBuffer * rbuf, long numBytes) -{ - /* we need to ensure that previous writes are always seen before updating the index. */ - PaUtil_WriteMemoryBarrier(); - return rbuf->readIndex = (rbuf->readIndex + numBytes) & rbuf->bigMask; -} - -/*************************************************************************** -** Return bytes written. */ -long PaUtil_WriteRingBuffer(PaUtilRingBuffer * rbuf, const void *data, long numBytes) -{ - long size1, size2, numWritten; - void *data1, *data2; - numWritten = PaUtil_GetRingBufferWriteRegions(rbuf, numBytes, &data1, &size1, &data2, &size2); - if (size2 > 0) { - - memcpy(data1, data, size1); - data = ((char *) data) + size1; - memcpy(data2, data, size2); - } else { - memcpy(data1, data, size1); - } - PaUtil_AdvanceRingBufferWriteIndex(rbuf, numWritten); - return numWritten; -} - -/*************************************************************************** -** Return bytes read. */ -long PaUtil_ReadRingBuffer(PaUtilRingBuffer * rbuf, void *data, long numBytes) -{ - long size1, size2, numRead; - void *data1, *data2; - numRead = PaUtil_GetRingBufferReadRegions(rbuf, numBytes, &data1, &size1, &data2, &size2); - if (size2 > 0) { - memcpy(data, data1, size1); - data = ((char *) data) + size1; - memcpy(data, data2, size2); - } else { - memcpy(data, data1, size1); - } - PaUtil_AdvanceRingBufferReadIndex(rbuf, numRead); - return numRead; -} diff --git a/src/mod/endpoints/mod_gsmopen/pa_ringbuffer.h b/src/mod/endpoints/mod_gsmopen/pa_ringbuffer.h deleted file mode 100644 index ae026c02dd..0000000000 --- a/src/mod/endpoints/mod_gsmopen/pa_ringbuffer.h +++ /dev/null @@ -1,192 +0,0 @@ -#ifndef PA_RINGBUFFER_H -#define PA_RINGBUFFER_H -/* - * $Id: pa_ringbuffer.h 1151 2006-11-29 02:11:16Z leland_lucius $ - * Portable Audio I/O Library - * Ring Buffer utility. - * - * Author: Phil Burk, http://www.softsynth.com - * modified for SMP safety on OS X by Bjorn Roche. - * also allowed for const where possible. - * Note that this is safe only for a single-thread reader - * and a single-thread writer. - * - * This program is distributed with the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -/** @file - @ingroup common_src -*/ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - typedef struct PaUtilRingBuffer { - long bufferSize; /* Number of bytes in FIFO. Power of 2. Set by PaUtil_InitRingBuffer. */ - long writeIndex; /* Index of next writable byte. Set by PaUtil_AdvanceRingBufferWriteIndex. */ - long readIndex; /* Index of next readable byte. Set by PaUtil_AdvanceRingBufferReadIndex. */ - long bigMask; /* Used for wrapping indices with extra bit to distinguish full/empty. */ - long smallMask; /* Used for fitting indices to buffer. */ - char *buffer; - } PaUtilRingBuffer; - -/** Initialize Ring Buffer. - - @param rbuf The ring buffer. - - @param numBytes The number of bytes in the buffer and must be power of 2. - - @param dataPtr A pointer to a previously allocated area where the data - will be maintained. It must be numBytes long. - - @return -1 if numBytes is not a power of 2, otherwise 0. -*/ - long PaUtil_InitializeRingBuffer(PaUtilRingBuffer * rbuf, long numBytes, void *dataPtr); - -/** Clear buffer. Should only be called when buffer is NOT being read. - - @param rbuf The ring buffer. -*/ - void PaUtil_FlushRingBuffer(PaUtilRingBuffer * rbuf); - -/** Retrieve the number of bytes available in the ring buffer for writing. - - @param rbuf The ring buffer. - - @return The number of bytes available for writing. -*/ - long PaUtil_GetRingBufferWriteAvailable(PaUtilRingBuffer * rbuf); - -/** Retrieve the number of bytes available in the ring buffer for reading. - - @param rbuf The ring buffer. - - @return The number of bytes available for reading. -*/ - long PaUtil_GetRingBufferReadAvailable(PaUtilRingBuffer * rbuf); - -/** Write data to the ring buffer. - - @param rbuf The ring buffer. - - @param data The address of new data to write to the buffer. - - @param numBytes The number of bytes to be written. - - @return The number of bytes written. -*/ - long PaUtil_WriteRingBuffer(PaUtilRingBuffer * rbuf, const void *data, long numBytes); - -/** Read data from the ring buffer. - - @param rbuf The ring buffer. - - @param data The address where the data should be stored. - - @param numBytes The number of bytes to be read. - - @return The number of bytes read. -*/ - long PaUtil_ReadRingBuffer(PaUtilRingBuffer * rbuf, void *data, long numBytes); - -/** Get address of region(s) to which we can write data. - - @param rbuf The ring buffer. - - @param numBytes The number of bytes desired. - - @param dataPtr1 The address where the first (or only) region pointer will be - stored. - - @param sizePtr1 The address where the first (or only) region length will be - stored. - - @param dataPtr2 The address where the second region pointer will be stored if - the first region is too small to satisfy numBytes. - - @param sizePtr2 The address where the second region length will be stored if - the first region is too small to satisfy numBytes. - - @return The room available to be written or numBytes, whichever is smaller. -*/ - long PaUtil_GetRingBufferWriteRegions(PaUtilRingBuffer * rbuf, long numBytes, void **dataPtr1, long *sizePtr1, void **dataPtr2, long *sizePtr2); - -/** Advance the write index to the next location to be written. - - @param rbuf The ring buffer. - - @param numBytes The number of bytes to advance. - - @return The new position. -*/ - long PaUtil_AdvanceRingBufferWriteIndex(PaUtilRingBuffer * rbuf, long numBytes); - -/** Get address of region(s) from which we can write data. - - @param rbuf The ring buffer. - - @param numBytes The number of bytes desired. - - @param dataPtr1 The address where the first (or only) region pointer will be - stored. - - @param sizePtr1 The address where the first (or only) region length will be - stored. - - @param dataPtr2 The address where the second region pointer will be stored if - the first region is too small to satisfy numBytes. - - @param sizePtr2 The address where the second region length will be stored if - the first region is too small to satisfy numBytes. - - @return The number of bytes available for reading. -*/ - long PaUtil_GetRingBufferReadRegions(PaUtilRingBuffer * rbuf, long numBytes, void **dataPtr1, long *sizePtr1, void **dataPtr2, long *sizePtr2); - -/** Advance the read index to the next location to be read. - - @param rbuf The ring buffer. - - @param numBytes The number of bytes to advance. - - @return The new position. -*/ - long PaUtil_AdvanceRingBufferReadIndex(PaUtilRingBuffer * rbuf, long numBytes); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* PA_RINGBUFFER_H */ diff --git a/src/mod/endpoints/mod_gsmopen/pablio.c b/src/mod/endpoints/mod_gsmopen/pablio.c deleted file mode 100644 index aa54d7ae15..0000000000 --- a/src/mod/endpoints/mod_gsmopen/pablio.c +++ /dev/null @@ -1,720 +0,0 @@ -/* - * $Id: pablio.c 1151 2006-11-29 02:11:16Z leland_lucius $ - * pablio.c - * Portable Audio Blocking Input/Output utility. - * - * Author: Phil Burk, http://www.softsynth.com - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ -#define WANT_SPEEX -#include -#include -#include -#include -#include "portaudio.h" -#include "pa_ringbuffer.h" -#include "pablio.h" -#include -#include -#ifdef WANT_SPEEX -#include "speex/speex_preprocess.h" -#include "speex/speex_echo.h" - SpeexPreprocessState *preprocess; - SpeexPreprocessState *preprocess2; - SpeexEchoState *echo_state; - - int speexecho=1; - int speexpreprocess=1; -#endif// WANT_SPEEX - -/************************************************************************/ -/******** Prototypes ****************************************************/ -/************************************************************************/ - -static int iblockingIOCallback(const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData); -static int oblockingIOCallback(const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData); - -static int ioblockingIOCallback(const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData); - -static PaError PABLIO_InitFIFO(PaUtilRingBuffer * rbuf, long numFrames, long bytesPerFrame); -static PaError PABLIO_TermFIFO(PaUtilRingBuffer * rbuf); - -/************************************************************************/ -/******** Functions *****************************************************/ -/************************************************************************/ - -/* Called from PortAudio. - * Read and write data - */ -static int iblockingIOCallback(const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData) -{ - PABLIO_Stream *data = (PABLIO_Stream *) userData; - long numBytes = data->bytesPerFrame * framesPerBuffer; -#ifdef WANT_SPEEX - spx_int16_t *speexptr=NULL; - spx_int16_t pcm2[160]; - int i; -#endif// WANT_SPEEX - - /* This may get called with NULL inputBuffer during initial setup. */ - if (inputBuffer != NULL) { -#ifdef WANT_SPEEX - //FIXME speex_echo_cancellation(echo_state, inputBuffer, outputBuffer, pcm2); - //FIXME speexptr=(spx_int16_t *)inputBuffer; - //FIXME for (i = 0; i < 160; i++) - //FIXME speexptr[i] = pcm2[i]; - //FIXME speex_preprocess_run(preprocess, speexptr); -#if 1 - if (speexecho) { - speexptr = ((spx_int16_t *) inputBuffer); - - /* Perform echo cancellation */ - speex_echo_capture(echo_state, speexptr, pcm2); -#ifndef GIOVA48 - for (i = 0; i < 160; i++) -#else //GIOVA48 - for (i = 0; i < 960; i++) -#endif //GIOVA48 - speexptr[i] = pcm2[i]; - //printf("read\n"); - } - if (speexpreprocess) { - speex_preprocess_run(preprocess, speexptr); - } - /* Apply noise/echo residual suppression */ -#endif -#endif //WANT_SPEEX - - - if (PaUtil_WriteRingBuffer(&data->inFIFO, inputBuffer, numBytes) != numBytes) { - PaUtil_FlushRingBuffer(&data->inFIFO); - PaUtil_WriteRingBuffer(&data->inFIFO, inputBuffer, numBytes); - printf("HEEEEEEEEEEEj\n"); - speex_echo_state_reset(echo_state); - } - } - - return 0; -} - -static int oblockingIOCallback(const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData) -{ - PABLIO_Stream *data = (PABLIO_Stream *) userData; - long numBytes = data->bytesPerFrame * framesPerBuffer; -#ifdef WANT_SPEEX - spx_int16_t *speexptr=NULL; - //spx_int16_t pcm2[160]; - //int i; -#endif// WANT_SPEEX - - - if (outputBuffer != NULL) { - int i; - int numRead = PaUtil_ReadRingBuffer(&data->outFIFO, outputBuffer, numBytes); - /* Zero out remainder of buffer if we run out of data. */ - for (i = numRead; i < numBytes; i++) { - ((char *) outputBuffer)[i] = 0; - } - - if(numRead == 0){ - //printf("ZERO\n"); - //usleep(60000); - //speex_echo_state_reset(echo_state); - } -#ifdef WANT_SPEEX - //FIXME speexptr = (spx_int16_t *) outputBuffer; - //FIXME speex_preprocess_run(preprocess2, speexptr); -#if 1 - if (speexecho ) { - speexptr = (spx_int16_t *) outputBuffer; - if (speexpreprocess && numRead) { - //speex_preprocess_run(preprocess2, speexptr); - } - - - - /* Put frame into playback buffer */ - speex_echo_playback(echo_state, speexptr); - //printf("write\n"); - } - -#endif -#endif //WANT_SPEEX - - - } - - return 0; -} - -static int ioblockingIOCallback(const void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo * timeInfo, PaStreamCallbackFlags statusFlags, void *userData) -{ - - -//write - oblockingIOCallback(inputBuffer, outputBuffer, framesPerBuffer, timeInfo, statusFlags, userData); -//read - iblockingIOCallback(inputBuffer, outputBuffer, framesPerBuffer, timeInfo, statusFlags, userData); - - return 0; -} - -/* Allocate buffer. */ -static PaError PABLIO_InitFIFO(PaUtilRingBuffer * rbuf, long numFrames, long bytesPerFrame) -{ - long numBytes = numFrames * bytesPerFrame; - char *buffer = (char *) malloc(numBytes); - if (buffer == NULL) - return paInsufficientMemory; - memset(buffer, 0, numBytes); - return (PaError) PaUtil_InitializeRingBuffer(rbuf, numBytes, buffer); -} - -/* Free buffer. */ -static PaError PABLIO_TermFIFO(PaUtilRingBuffer * rbuf) -{ - if (rbuf->buffer) - free(rbuf->buffer); - rbuf->buffer = NULL; - return paNoError; -} - -/************************************************************ - * Write data to ring buffer. - * Will not return until all the data has been written. - */ -long WriteAudioStream(PABLIO_Stream * aStream, void *data, long numFrames, switch_timer_t *timer) -{ - long bytesWritten; - char *p = (char *) data; - long numBytes = aStream->bytesPerFrame * numFrames; - - switch_core_timer_next(timer); - - bytesWritten = PaUtil_WriteRingBuffer(&aStream->outFIFO, p, numBytes); - numBytes -= bytesWritten; - p += bytesWritten; - - if (numBytes > 0) { - PaUtil_FlushRingBuffer(&aStream->outFIFO); - printf("2HEEEEEEEEEEEj\n"); - speex_echo_state_reset(echo_state); - return 0; - } - return numFrames; -} - -/************************************************************ - * Read data from ring buffer. - * Will not return until all the data has been read. - */ -long ReadAudioStream(PABLIO_Stream * aStream, void *data, long numFrames, switch_timer_t *timer) -{ - long bytesRead = 0; - char *p = (char *) data; - long avail, totalBytes = 0, neededBytes = aStream->bytesPerFrame * numFrames; - int max = 5000; - - switch_core_timer_next(timer); - - while(totalBytes < neededBytes && --max > 0) { - - avail = PaUtil_GetRingBufferReadAvailable(&aStream->inFIFO); - //printf("AVAILABLE BYTES %ld , neededBytes %ld, pass %d\n", avail, neededBytes, 5000 - max); - if (avail >= neededBytes * 6) { - PaUtil_FlushRingBuffer(&aStream->inFIFO); - printf("3HEEEEEEEEEEEj\n"); - speex_echo_state_reset(echo_state); - avail = 0; - } else { - - bytesRead = 0; - - if (totalBytes < neededBytes && avail >= neededBytes) { - bytesRead = PaUtil_ReadRingBuffer(&aStream->inFIFO, p, neededBytes); - totalBytes += bytesRead; - } - - if (bytesRead) { - p += bytesRead; - } else { - switch_cond_next(); - } - } - } - - //printf("return=%ld\n", totalBytes / aStream->bytesPerFrame); - return totalBytes / aStream->bytesPerFrame; -} - -/************************************************************ - * Return the number of frames that could be written to the stream without - * having to wait. - */ -long GetAudioStreamWriteable(PABLIO_Stream * aStream) -{ - int bytesEmpty = PaUtil_GetRingBufferWriteAvailable(&aStream->outFIFO); - return bytesEmpty / aStream->bytesPerFrame; -} - -/************************************************************ - * Return the number of frames that are available to be read from the - * stream without having to wait. - */ -long GetAudioStreamReadable(PABLIO_Stream * aStream) -{ - int bytesFull = PaUtil_GetRingBufferReadAvailable(&aStream->inFIFO); - return bytesFull / aStream->bytesPerFrame; -} - -/***********************************************************/ -static unsigned long RoundUpToNextPowerOf2(unsigned long n) -{ - long numBits = 0; - if (((n - 1) & n) == 0) - return n; - while (n > 0) { - n = n >> 1; - numBits++; - } - return (1 << numBits); -} - - - -/************************************************************ - * Opens a PortAudio stream with default characteristics. - * Allocates PABLIO_Stream structure. - * - */ -PaError OpenAudioStream(PABLIO_Stream ** rwblPtr, - const PaStreamParameters * inputParameters, - const PaStreamParameters * outputParameters, - double sampleRate, PaStreamFlags streamFlags, - long samples_per_packet, - int do_dual) -{ - long bytesPerSample = 2; - PaError err; - PABLIO_Stream *aStream; - long numFrames; - //long numBytes; - int channels = 1; -#ifdef WANT_SPEEX - int ciapa; - float level; - int tmp; -#endif //WANT_SPEEX - - - if (!(inputParameters || outputParameters)) { - return -1; - } - - /* Allocate PABLIO_Stream structure for caller. */ - aStream = (PABLIO_Stream *) malloc(sizeof(PABLIO_Stream)); - switch_assert(aStream); - memset(aStream, 0, sizeof(PABLIO_Stream)); - - if (inputParameters) { - channels = inputParameters->channelCount; - } else if (outputParameters) { - channels = outputParameters->channelCount; - } - - numFrames = RoundUpToNextPowerOf2(samples_per_packet * 5); - aStream->bytesPerFrame = bytesPerSample; - - /* Initialize Ring Buffers */ - - if (inputParameters) { - err = PABLIO_InitFIFO(&aStream->inFIFO, numFrames, aStream->bytesPerFrame); - if (err != paNoError) { - goto error; - } - aStream-> has_in = 1; - } - - if (outputParameters) { - err = PABLIO_InitFIFO(&aStream->outFIFO, numFrames, aStream->bytesPerFrame); - if (err != paNoError) { - goto error; - } - aStream-> has_out = 1; - } -#ifdef WANT_SPEEX - /* Echo canceller with 100 ms tail length */ -#ifndef GIOVA48 - echo_state = speex_echo_state_init(160, 1600); - ciapa = 8000; -#else// GIOVA48 - echo_state = speex_echo_state_init(960, 4800); - ciapa = 48000; -#endif // GIOVA48 - speex_echo_ctl(echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &ciapa); - -#if 1 //NO MORE - /* Setup preprocessor and associate with echo canceller for residual echo suppression */ -#ifndef GIOVA48 - preprocess = speex_preprocess_state_init(160, 8000); -#else// GIOVA48 - preprocess = speex_preprocess_state_init(960, 48000); -#endif // GIOVA48 - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE, - echo_state); - -#if 0 - /* Setup preprocessor various other goodies */ - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC, &tmp); - level=8000.1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC_LEVEL, &level); - - tmp = 8000; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC_TARGET, &tmp); - - //FIXME tmp = 60; - //FIXME speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC_MAX_GAIN, &tmp); - //FIXME fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - //FIXME tmp = 40; - //FIXME speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC_INCREMENT, &tmp); - //FIXME fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - //FIXME tmp = -40; - //FIXME speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC_DECREMENT, &tmp); - //FIXME fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - -#if 0 - // Let's turn off all of the 'denoisers' (eg denoise and dereverb, and vad too) because they start automatic gain on mic input on cm108 usb, also if it (the agc on usb) disbled through mixer - tmp = 0; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 0; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_DEREVERB, &tmp); - tmp = 0; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_VAD, &tmp); -#endif - - //tmp = 0; - //speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 1; -#endif //0 - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC, &tmp); - fprintf(stderr, "AGC is: %d\n", tmp); - level = 1.0; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_LEVEL, &level); - fprintf(stderr, "AGC_LEVEL is: %f\n", level); - //tmp=1; - //speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_TARGET, &tmp); - //fprintf( stderr, "AGC_TARGET is: %d\n", tmp ); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_DENOISE, &tmp); - fprintf(stderr, "DENOISE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_DEREVERB, &tmp); - fprintf(stderr, "DEREVERB is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_VAD, &tmp); - fprintf(stderr, "VAD is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - -#if 0 - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_NOISE_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_NOISE_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE, - &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_PROB_START, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_START is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_PROB_CONTINUE, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_CONTINUE is: %d\n", tmp); -#endif //0 -#endif// 0 //NO MORE - - - - - - - - - -#if 1 //NO MORE - /* Setup preprocessor and associate with echo canceller for residual echo suppression */ -#ifndef GIOVA48 - preprocess2 = speex_preprocess_state_init(160, 8000); -#else// GIOVA48 - preprocess = speex_preprocess_state_init(960, 48000); -#endif // GIOVA48 - - /* Setup preprocessor various other goodies */ - tmp = 0; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_AGC, &tmp); - - tmp = 24000; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_AGC_TARGET, &tmp); - - //tmp = 60; - //speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_AGC_MAX_GAIN, &tmp); - tmp = 40; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_AGC_INCREMENT, &tmp); - tmp = -40; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_AGC_DECREMENT, &tmp); - -#if 0 - // Let's turn off all of the 'denoisers' (eg denoise and dereverb, and vad too) because they start automatic gain on mic input on cm108 usb, also if it (the agc on usb) disbled through mixer - tmp = 0; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 0; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_DEREVERB, &tmp); - tmp = 0; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_VAD, &tmp); -#endif - - //tmp = 0; - //speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC, &tmp); - fprintf(stderr, "AGC is: %d\n", tmp); - level = 1.0; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_LEVEL, &level); - fprintf(stderr, "AGC_LEVEL is: %f\n", level); - //tmp=1; - //speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_TARGET, &tmp); - //fprintf( stderr, "AGC_TARGET is: %d\n", tmp ); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_DENOISE, &tmp); - fprintf(stderr, "DENOISE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_DEREVERB, &tmp); - fprintf(stderr, "DEREVERB is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_VAD, &tmp); - fprintf(stderr, "VAD is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - -#if 0 - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_NOISE_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_NOISE_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE, - &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_PROB_START, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_START is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(preprocess2, SPEEX_PREPROCESS_GET_PROB_CONTINUE, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_CONTINUE is: %d\n", tmp); -#endif //0 -#endif// 0 //NO MORE - - - - -#endif // WANT_SPEEX - - - /* Open a PortAudio stream that we will use to communicate with the underlying - * audio drivers. */ - - aStream->do_dual = do_dual; - - if (aStream->do_dual) { - err = Pa_OpenStream(&aStream->istream, inputParameters, NULL, sampleRate, samples_per_packet, streamFlags, iblockingIOCallback, aStream); - if (err != paNoError) { - goto error; - } - err = Pa_OpenStream(&aStream->ostream, NULL, outputParameters, sampleRate, samples_per_packet, streamFlags, oblockingIOCallback, aStream); - if (err != paNoError) { - goto error; - } - } else { - err = Pa_OpenStream(&aStream->iostream, inputParameters, outputParameters, sampleRate, samples_per_packet, streamFlags, ioblockingIOCallback, aStream); - } - - if (err != paNoError) { - goto error; - } - - if (aStream->do_dual) { - err = Pa_StartStream(aStream->istream); - - if (err != paNoError) { - goto error; - } - - err = Pa_StartStream(aStream->ostream); - - if (err != paNoError) { - goto error; - } - - } else { - err = Pa_StartStream(aStream->iostream); - } - - if (err != paNoError) { - goto error; - } - - *rwblPtr = aStream; - - //switch_yield(500000); - - return paNoError; - - error: - - CloseAudioStream(aStream); - - *rwblPtr = NULL; - return err; -} - -/************************************************************/ -PaError CloseAudioStream(PABLIO_Stream * aStream) -{ - int bytesEmpty; - int byteSize; - - - byteSize = aStream->outFIFO.bufferSize; - - if (aStream->has_out) { - /* If we are writing data, make sure we play everything written. */ - if (byteSize > 0) { - bytesEmpty = PaUtil_GetRingBufferWriteAvailable(&aStream->outFIFO); - while (bytesEmpty < byteSize) { - Pa_Sleep(10); - bytesEmpty = PaUtil_GetRingBufferWriteAvailable(&aStream->outFIFO); - } - } - } - - if (aStream->do_dual) { - if (aStream->has_in && aStream->istream) { - if (Pa_IsStreamActive(aStream->istream)) { - Pa_StopStream(aStream->istream); - } - - Pa_CloseStream(aStream->istream); - aStream->istream = NULL; - } - - if (aStream->has_out && aStream->ostream) { - if (Pa_IsStreamActive(aStream->ostream)) { - Pa_StopStream(aStream->ostream); - } - - Pa_CloseStream(aStream->ostream); - aStream->ostream = NULL; - } - - } else { - if (aStream->iostream) { - if (Pa_IsStreamActive(aStream->iostream)) { - Pa_StopStream(aStream->iostream); - } - - Pa_CloseStream(aStream->iostream); - aStream->iostream = NULL; - } - } - - if (aStream->has_in) { - PABLIO_TermFIFO(&aStream->inFIFO); - } - - if (aStream->has_out) { - PABLIO_TermFIFO(&aStream->outFIFO); - } - - free(aStream); - //switch_yield(500000); - - return paNoError; -} - diff --git a/src/mod/endpoints/mod_gsmopen/pablio.h b/src/mod/endpoints/mod_gsmopen/pablio.h deleted file mode 100644 index c933a11426..0000000000 --- a/src/mod/endpoints/mod_gsmopen/pablio.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef _PABLIO_H -#define _PABLIO_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * $Id: pablio.h 1083 2006-08-23 07:30:49Z rossb $ - * PABLIO.h - * Portable Audio Blocking read/write utility. - * - * Author: Phil Burk, http://www.softsynth.com/portaudio/ - * - * Include file for PABLIO, the Portable Audio Blocking I/O Library. - * PABLIO is built on top of PortAudio, the Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The text above constitutes the entire PortAudio license; however, - * the PortAudio community also makes the following non-binding requests: - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. It is also - * requested that these non-binding requests be included along with the - * license above. - */ - -#include -#include -#include -#include "pa_ringbuffer.h" -#include "portaudio.h" - -#include - - typedef struct { - PaUtilRingBuffer inFIFO; - PaUtilRingBuffer outFIFO; - PaStream *istream; - PaStream *ostream; - PaStream *iostream; - int bytesPerFrame; - int do_dual; - int has_in; - int has_out; - } PABLIO_Stream; - -/* Values for flags for OpenAudioStream(). */ -#define PABLIO_READ (1<<0) -#define PABLIO_WRITE (1<<1) -#define PABLIO_READ_WRITE (PABLIO_READ|PABLIO_WRITE) -#define PABLIO_MONO (1<<2) -#define PABLIO_STEREO (1<<3) - -/************************************************************ - * Write data to ring buffer. - * Will not return until all the data has been written. - */ - long WriteAudioStream(PABLIO_Stream * aStream, void *data, long numFrames, switch_timer_t *timer); - -/************************************************************ - * Read data from ring buffer. - * Will not return until all the data has been read. - */ - long ReadAudioStream(PABLIO_Stream * aStream, void *data, long numFrames, switch_timer_t *timer); - -/************************************************************ - * Return the number of frames that could be written to the stream without - * having to wait. - */ - long GetAudioStreamWriteable(PABLIO_Stream * aStream); - -/************************************************************ - * Return the number of frames that are available to be read from the - * stream without having to wait. - */ - long GetAudioStreamReadable(PABLIO_Stream * aStream); - -/************************************************************ - * Opens a PortAudio stream with default characteristics. - * Allocates PABLIO_Stream structure. - * - * flags parameter can be an ORed combination of: - * PABLIO_READ, PABLIO_WRITE, or PABLIO_READ_WRITE, - * and either PABLIO_MONO or PABLIO_STEREO - */ - PaError OpenAudioStream(PABLIO_Stream ** rwblPtr, - const PaStreamParameters * inputParameters, - const PaStreamParameters * outputParameters, - double sampleRate, PaStreamCallbackFlags statusFlags, long samples_per_packet, int do_dual); - - PaError CloseAudioStream(PABLIO_Stream * aStream); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* _PABLIO_H */ diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_devlist.c b/src/mod/endpoints/mod_gsmopen/portaudio_devlist.c deleted file mode 100644 index 02a8160221..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_devlist.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * gcc -Wall portaudio_devlist.c -o portaudio_devlist -lportaudio - */ -#include -#include -#include - -int main(int argc, char **argv) -{ - int i, c, numDevices; - const PaDeviceInfo *deviceInfo; - PaError err; - char name[256]; - - err = Pa_Initialize(); - if (err != paNoError) - return err; - - - numDevices = Pa_GetDeviceCount(); - if (numDevices < 0) { - return 0; - } - if(argc==1){ - printf("usage: %s [input | output]\n", argv[0]); - return 1; - } - for (i = 0; i < numDevices; i++) { - deviceInfo = Pa_GetDeviceInfo(i); - memset(name, '\0', sizeof(name)); - for(c=0; cname); c++){ - if( deviceInfo->name[c] == ' ') - name[c]='_'; - else - name[c]= deviceInfo->name[c]; - } - if( !strcmp(argv[1], "input")&& deviceInfo->maxInputChannels) - { - printf("%d \"%s\" \n", - i, - name); - } - else if( !strcmp(argv[1], "output")&& deviceInfo->maxOutputChannels) - { - printf("%d \"%s\" \n", - i, - name); - } - } - - return numDevices; -} - - diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/Makefile deleted file mode 100644 index 2ffe125b8f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -MODNAME=mod_gsmopen -SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' -LOCAL_CFLAGS += $(SVNDEF) -DNO_ALSA -DGSMOPEN_PORTAUDIO -I../../../../../../libs/spandsp/src -I../../../../../..//libs/tiff-3.8.2/libtiff -LOCAL_LDFLAGS=-lportaudio -lspeex -lspeexdsp -lgsmme -L../../../../../../libs/spandsp/src -lspandsp -LOCAL_OBJS=gsmopen_protocol.o pablio.o pa_ringbuffer.o -include ../../../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra48down8.c b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra48down8.c deleted file mode 120000 index 95dcddeb47..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra48down8.c +++ /dev/null @@ -1 +0,0 @@ -../../filtra48down8.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra8up48.c b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra8up48.c deleted file mode 120000 index ab063a3388..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/filtra8up48.c +++ /dev/null @@ -1 +0,0 @@ -../../filtra8up48.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen.h deleted file mode 120000 index 663f1cbc4d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen.h +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen_protocol.cpp deleted file mode 120000 index b03564bdd9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/gsmopen_protocol.cpp +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen_protocol.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/mod_gsmopen.cpp deleted file mode 120000 index a0686ea786..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/mod_gsmopen.cpp +++ /dev/null @@ -1 +0,0 @@ -../../mod_gsmopen.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c deleted file mode 120000 index d0f4a92d6c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c +++ /dev/null @@ -1 +0,0 @@ -../../pa_ringbuffer.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h deleted file mode 120000 index 695ee41274..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../pa_ringbuffer.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.c b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.c deleted file mode 120000 index 76d569934f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.c +++ /dev/null @@ -1 +0,0 @@ -../../pablio.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.h b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.h deleted file mode 120000 index 865b997b25..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/pablio.h +++ /dev/null @@ -1 +0,0 @@ -../../pablio.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/portaudio_devlist.c b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/portaudio_devlist.c deleted file mode 120000 index 24c8da084a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/portaudio_devlist.c +++ /dev/null @@ -1 +0,0 @@ -../../portaudio_devlist.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt b/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt deleted file mode 120000 index 47c6b46e93..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_gsmlib_cplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt +++ /dev/null @@ -1 +0,0 @@ -../../usb-cm-108-2.txt \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/Makefile deleted file mode 100644 index eb5c0e9d5f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -MODNAME=mod_gsmopen -SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' -LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -DGSMOPEN_PORTAUDIO -I../../../../../../libs/spandsp/src -I../../../../../..//libs/tiff-3.8.2/libtiff -LOCAL_LDFLAGS=-lportaudio -lspeex -lspeexdsp -L../../../../../../libs/spandsp/src -lspandsp -LOCAL_OBJS=gsmopen_protocol.o pablio.o pa_ringbuffer.o -include ../../../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra48down8.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra48down8.c deleted file mode 120000 index 95dcddeb47..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra48down8.c +++ /dev/null @@ -1 +0,0 @@ -../../filtra48down8.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra8up48.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra8up48.c deleted file mode 120000 index ab063a3388..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/filtra8up48.c +++ /dev/null @@ -1 +0,0 @@ -../../filtra8up48.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen.h deleted file mode 120000 index 663f1cbc4d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen.h +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen_protocol.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen_protocol.c deleted file mode 120000 index b03564bdd9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/gsmopen_protocol.c +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen_protocol.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/mod_gsmopen.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/mod_gsmopen.c deleted file mode 120000 index a0686ea786..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/mod_gsmopen.c +++ /dev/null @@ -1 +0,0 @@ -../../mod_gsmopen.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c deleted file mode 120000 index d0f4a92d6c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.c +++ /dev/null @@ -1 +0,0 @@ -../../pa_ringbuffer.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h deleted file mode 120000 index 695ee41274..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pa_ringbuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../pa_ringbuffer.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.c deleted file mode 120000 index 76d569934f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.c +++ /dev/null @@ -1 +0,0 @@ -../../pablio.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.h b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.h deleted file mode 120000 index 865b997b25..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/pablio.h +++ /dev/null @@ -1 +0,0 @@ -../../pablio.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/portaudio_devlist.c b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/portaudio_devlist.c deleted file mode 120000 index 24c8da084a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/portaudio_devlist.c +++ /dev/null @@ -1 +0,0 @@ -../../portaudio_devlist.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt b/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt deleted file mode 120000 index 47c6b46e93..0000000000 --- a/src/mod/endpoints/mod_gsmopen/portaudio_nogsmlib_nocplusplus_noalsa/mod_gsmopen/usb-cm-108-2.txt +++ /dev/null @@ -1 +0,0 @@ -../../usb-cm-108-2.txt \ No newline at end of file From 8c94374b7d282ceeb6d7e91a0f0e86424294eaf1 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 15:38:33 +0200 Subject: [PATCH 018/630] gsmopen: cleaning gsmlib --- src/mod/endpoints/mod_gsmopen/gsmlib/README | 8 - .../gsmlib-1.10-patched-13ubuntu/ABOUT-NLS | 226 - .../gsmlib-1.10-patched-13ubuntu/AUTHORS | 0 .../gsmlib-1.10-patched-13ubuntu/COPYING | 482 - .../gsmlib-1.10-patched-13ubuntu/ChangeLog | 386 - .../gsmlib-1.10-patched-13ubuntu/INSTALL | 198 - .../gsmlib-1.10-patched-13ubuntu/Makefile.am | 24 - .../gsmlib-1.10-patched-13ubuntu/Makefile.in | 423 - .../gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS | 11 - .../gsmlib-1.10-patched-13ubuntu/README | 166 - .../gsmlib/gsmlib-1.10-patched-13ubuntu/TODO | 289 - .../gsmlib-1.10-patched-13ubuntu/acconfig.h | 33 - .../gsmlib-1.10-patched-13ubuntu/acinclude.m4 | 0 .../gsmlib-1.10-patched-13ubuntu/aclocal.m4 | 9704 --- .../apps/Makefile.am | 36 - .../apps/Makefile.in | 442 - .../apps/gsmctl.cc | 635 - .../apps/gsmpb.cc | 507 - .../apps/gsmsendsms.cc | 257 - .../apps/gsmsmsd.cc | 723 - .../apps/gsmsmsstore.cc | 434 - .../gsmlib-1.10-patched-13ubuntu/configure | 30623 -------- .../gsmlib-1.10-patched-13ubuntu/configure.in | 131 - .../contrib/gsm-utils.cron.d | 3 - .../contrib/gsm-utils.default | 13 - .../contrib/gsm-utils.init | 81 - .../contrib/gsmsmsrequeue | 48 - .../contrib/gsmsmsspool | 34 - .../debian/changelog | 284 - .../debian/compat | 1 - .../debian/control | 45 - .../debian/copyright | 34 - .../gsmlib-1.10-patched-13ubuntu/debian/dirs | 1 - .../debian/gsm-utils.cron.d | 3 - .../debian/gsm-utils.default | 18 - .../debian/gsm-utils.dirs | 11 - .../debian/gsm-utils.docs | 4 - .../debian/gsm-utils.examples | 2 - .../debian/gsm-utils.init | 87 - .../debian/gsm-utils.postinst | 28 - .../debian/gsm-utils.postrm | 43 - .../debian/gsmsiexfer.1 | 29 - .../debian/libgsmme-dev.docs | 2 - .../gsmlib-1.10-patched-13ubuntu/debian/rules | 129 - .../gsmlib-1.10-patched-13ubuntu/debian/watch | 2 - .../gsmlib-1.10-patched-13ubuntu/doc/FAQ | 101 - .../doc/Makefile.am | 33 - .../doc/Makefile.in | 412 - .../doc/README.NLS | 72 - .../doc/README.developers | 138 - .../doc/gsmctl.man | 683 - .../doc/gsminfo.man | 56 - .../doc/gsmlib.lsm | 20 - .../doc/gsmpb.man | 245 - .../doc/gsmsendsms.man | 154 - .../doc/gsmsmsd.man | 269 - .../doc/gsmsmsstore.man | 185 - .../ext/Makefile.am | 40 - .../ext/Makefile.in | 480 - .../ext/README.sieme | 75 - .../ext/gsm_sie_me.cc | 258 - .../ext/gsm_sie_me.h | 99 - .../ext/gsmsiectl.cc | 698 - .../ext/gsmsiexfer.cc | 292 - .../gsmlib-1.10-patched-13ubuntu/g41.patch | 29 - .../gsm_config.h.in | 344 - .../gsmlib-1.10.debmg/debian/gsm-utils.dirs | 11 - .../debian/gsm-utils.postinst | 28 - .../gsmlib-1.10.debmg/debian/gsm-utils.prerm | 7 - .../debian/gsm-utils.undocumented | 2 - .../gsmlib-1.10-patched-13ubuntu/gsmlib.spec | 92 - .../gsmlib/Makefile.am | 38 - .../gsmlib/Makefile.in | 461 - .../gsmlib/gsm_at.cc | 444 - .../gsmlib/gsm_at.h | 104 - .../gsmlib/gsm_cb.cc | 176 - .../gsmlib/gsm_cb.h | 106 - .../gsmlib/gsm_error.cc | 424 - .../gsmlib/gsm_error.h | 209 - .../gsmlib/gsm_event.cc | 174 - .../gsmlib/gsm_event.h | 68 - .../gsmlib/gsm_map_key.h | 128 - .../gsmlib/gsm_me_ta.cc | 1254 - .../gsmlib/gsm_me_ta.h | 402 - .../gsmlib/gsm_nls.cc | 32 - .../gsmlib/gsm_nls.h | 71 - .../gsmlib/gsm_parser.cc | 381 - .../gsmlib/gsm_parser.h | 125 - .../gsmlib/gsm_phonebook.cc | 585 - .../gsmlib/gsm_phonebook.h | 195 - .../gsmlib/gsm_port.h | 58 - .../gsmlib/gsm_sms.cc | 863 - .../gsmlib/gsm_sms.h | 480 - .../gsmlib/gsm_sms_codec.cc | 702 - .../gsmlib/gsm_sms_codec.h | 329 - .../gsmlib/gsm_sms_store.cc | 489 - .../gsmlib/gsm_sms_store.h | 295 - .../gsmlib/gsm_sorted_phonebook.cc | 503 - .../gsmlib/gsm_sorted_phonebook.h | 159 - .../gsmlib/gsm_sorted_phonebook_base.cc | 115 - .../gsmlib/gsm_sorted_phonebook_base.h | 220 - .../gsmlib/gsm_sorted_sms_store.cc | 499 - .../gsmlib/gsm_sorted_sms_store.h | 217 - .../gsmlib/gsm_sysdep.h | 83 - .../gsmlib/gsm_unix_serial.cc | 456 - .../gsmlib/gsm_unix_serial.h | 62 - .../gsmlib/gsm_util.cc | 379 - .../gsmlib/gsm_util.h | 232 - .../gsmlib/gsm_win32_serial.cc | 507 - .../gsmlib/gsm_win32_serial.h | 60 - .../intl/ChangeLog | 1086 - .../intl/Makefile | 214 - .../intl/Makefile.in | 214 - .../gsmlib-1.10-patched-13ubuntu/intl/VERSION | 1 - .../intl/bindtextdom.c | 203 - .../intl/cat-compat.c | 262 - .../intl/dcgettext.c | 624 - .../intl/dgettext.c | 59 - .../intl/explodename.c | 188 - .../intl/finddomain.c | 216 - .../intl/gettext.c | 70 - .../intl/gettext.h | 105 - .../intl/gettextP.h | 89 - .../intl/hash-string.h | 59 - .../intl/intl-compat.c | 76 - .../intl/l10nflist.c | 411 - .../intl/libgettext.h | 182 - .../intl/linux-msg.sed | 100 - .../intl/loadinfo.h | 76 - .../intl/loadmsgcat.c | 222 - .../intl/localealias.c | 424 - .../intl/po2tbl.sed.in | 102 - .../intl/textdomain.c | 108 - .../intl/xopen-msg.sed | 104 - .../po/Makefile.in.in | 250 - .../po/POTFILES.in | 19 - .../po/cat-id-tbl.c | 0 .../gsmlib-1.10-patched-13ubuntu/po/de.gmo | Bin 34591 -> 0 bytes .../gsmlib-1.10-patched-13ubuntu/po/de.po | 1758 - .../po/gsmlib.pot | 1689 - .../po/stamp-cat-id | 1 - .../scripts/Makefile.am | 15 - .../scripts/Makefile.in | 259 - .../scripts/config.guess | 1526 - .../scripts/config.rpath | 513 - .../scripts/config.sub | 1658 - .../scripts/debugconfig.sh | 3 - .../scripts/depcomp | 423 - .../scripts/install-sh | 250 - .../scripts/ltconfig | 3115 - .../scripts/ltmain.sh | 6538 -- .../scripts/missing | 336 - .../scripts/mkinstalldirs | 40 - .../gsmlib-1.10-patched-13ubuntu/stamp-h.in | 1 - .../tests/Makefile.am | 65 - .../tests/Makefile.in | 544 - .../tests/runparser.sh | 12 - .../tests/runsms.sh | 18 - .../tests/runspb.sh | 17 - .../tests/runspb2.sh | 17 - .../tests/runspbi.sh | 18 - .../tests/runssms.sh | 21 - .../gsmlib-1.10-patched-13ubuntu/tests/spb.pb | 11 - .../tests/spb2.pb | 11 - .../tests/spbi1.pb | 3 - .../tests/spbi2-orig.pb | 4 - .../tests/testcb.cc | 40 - .../tests/testgsmlib.cc | 178 - .../tests/testparser-output.txt | 22 - .../tests/testparser.cc | 200 - .../tests/testpb.cc | 52 - .../tests/testpb2.cc | 75 - .../tests/testsms-output.txt | 167 - .../tests/testsms.cc | 80 - .../tests/testsms2.cc | 89 - .../tests/testspb-output.txt | 47 - .../tests/testspb.cc | 81 - .../tests/testspb2-output.txt | 47 - .../tests/testspbi-output.txt | 8 - .../tests/testssms-output.txt | 157 - .../tests/testssms.cc | 68 - .../win32/COPYING | 5 - .../win32/Makefile.am | 17 - .../win32/Makefile.in | 259 - .../win32/README.win | 41 - .../win32/getopt.c | 185 - .../win32/getopt.h | 49 - .../win32/gsm_config.h | 169 - .../win32/gsmctl.dsp | 118 - .../win32/gsmlib.dsp | 232 - .../win32/gsmlib.dsw | 149 - .../win32/gsmpb.dsp | 118 - .../win32/gsmsendsms.dsp | 118 - .../win32/gsmsmsd.dsp | 118 - .../win32/gsmsmsstore.dsp | 119 - .../win32/testgsmlib.dsp | 101 - .../win32/testsms.dsp | 100 - .../win32/testsms2.dsp | 100 - .../mod_gsmopen/gsmlib/gsmlib_1.10-13.diff | 64915 ---------------- .../gsmlib/gsmlib_1.10.orig.tar.gz | Bin 474591 -> 0 bytes 200 files changed, 156102 deletions(-) delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/README delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/AUTHORS delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acinclude.m4 delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/cat-id-tbl.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.gmo delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.po delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.sub delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh delete mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/README b/src/mod/endpoints/mod_gsmopen/gsmlib/README deleted file mode 100644 index 709f78f2ca..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/README +++ /dev/null @@ -1,8 +0,0 @@ -For Linux distros without gsmlib (eg: CentOS): - -Here are the original (ancient) sources for gsmlib, and the patch made by Ubuntu for modern compilers. - -In the directory gsmlib-1.10-patched-13ubuntu are the patched sources, ready for (no need to patch them again): - ./configure - make - make install diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS deleted file mode 100644 index 28d38c76fd..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS +++ /dev/null @@ -1,226 +0,0 @@ -Notes on the Free Translation Project -************************************* - - Free software is going international! The Free Translation Project -is a way to get maintainers of free software, translators, and users all -together, so that will gradually become able to speak many languages. -A few packages already provide translations for their messages. - - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, -itself available at your nearest GNU archive site. But you do *not* -need to install GNU `gettext' prior to configuring, installing or using -this package with messages translated. - - Installers will find here some useful hints. These notes also -explain how users should proceed for getting the programs to use the -available translations. They tell how people wanting to contribute and -work at translations should contact the appropriate team. - - When reporting bugs in the `intl/' directory or bugs which may be -related to internationalization, you should tell about the version of -`gettext' which is used. The information can be found in the -`intl/VERSION' file, in internationalized packages. - -One advise in advance -===================== - - If you want to exploit the full power of internationalization, you -should configure it using - - ./configure --with-included-gettext - -to force usage of internationalizing routines provided within this -package, despite the existence of internationalizing capabilities in the -operating system where this package is being installed. So far, only -the `gettext' implementation in the GNU C library version 2 provides as -many features (such as locale alias or message inheritance) as the -implementation here. It is also not possible to offer this additional -functionality on top of a `catgets' implementation. Future versions of -GNU `gettext' will very likely convey even more functionality. So it -might be a good idea to change to GNU `gettext' as soon as possible. - - So you need not provide this option if you are using GNU libc 2 or -you have installed a recent copy of the GNU gettext package with the -included `libintl'. - -INSTALL Matters -=============== - - Some packages are "localizable" when properly installed; the -programs they contain can be made to speak your own native language. -Most such packages use GNU `gettext'. Other packages have their own -ways to internationalization, predating GNU `gettext'. - - By default, this package will be installed to allow translation of -messages. It will automatically detect whether the system provides -usable `catgets' (if using this is selected by the installer) or -`gettext' functions. If neither is available, the GNU `gettext' own -library will be used. This library is wholly contained within this -package, usually in the `intl/' subdirectory, so prior installation of -the GNU `gettext' package is *not* required. Installers may use -special options at configuration time for changing the default -behaviour. The commands: - - ./configure --with-included-gettext - ./configure --with-catgets - ./configure --disable-nls - -will respectively bypass any pre-existing `catgets' or `gettext' to use -the internationalizing routines provided within this package, enable -the use of the `catgets' functions (if found on the locale system), or -else, *totally* disable translation of messages. - - When you already have GNU `gettext' installed on your system and run -configure without an option for your new package, `configure' will -probably detect the previously built and installed `libintl.a' file and -will decide to use this. This might be not what is desirable. You -should use the more recent version of the GNU `gettext' library. I.e. -if the file `intl/VERSION' shows that the library which comes with this -package is more recent, you should use - - ./configure --with-included-gettext - -to prevent auto-detection. - - By default the configuration process will not test for the `catgets' -function and therefore they will not be used. The reasons are already -given above: the emulation on top of `catgets' cannot provide all the -extensions provided by the GNU `gettext' library. If you nevertheless -want to use the `catgets' functions use - - ./configure --with-catgets - -to enable the test for `catgets' (this causes no harm if `catgets' is -not available on your system). If you really select this option we -would like to hear about the reasons because we cannot think of any -good one ourself. - - Internationalized packages have usually many `po/LL.po' files, where -LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' -may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter -codes, stating which languages are allowed. - -Using This Package -================== - - As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -ISO 639 `LL' two-letter code prior to using the programs in the -package. For example, let's suppose that you speak German. At the -shell prompt, merely execute `setenv LANG de' (in `csh'), -`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This -can be done from your `.login' or `.profile' file, once and for all. - - An operating system might already offer message localization for -many of its programs, while other programs have been installed locally -with the full capabilities of GNU `gettext'. Just using `gettext' -extended syntax for `LANG' would break proper localization of already -available operating system programs. In this case, users should set -both `LANGUAGE' and `LANG' variables in their environment, as programs -using GNU `gettext' give preference to `LANGUAGE'. For example, some -Swedish users would rather read translations in German than English for -when Swedish is not available. This is easily accomplished by setting -`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'. - -Translating Teams -================= - - For the Free Translation Project to be a success, we need interested -people who like their own language and write it well, and who are also -able to synergize with other translators speaking the same language. -Each translation team has its own mailing list, courtesy of Linux -International. You may reach your translation team at the address -`LL@li.org', replacing LL by the two-letter ISO 639 code for your -language. Language codes are *not* the same as the country codes given -in ISO 3166. The following translation teams exist, as of December -1997: - - Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en', - Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian - `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja', - Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish - `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es', - Swedish `sv', and Turkish `tr'. - -For example, you may reach the Chinese translation team by writing to -`zh@li.org'. - - If you'd like to volunteer to *work* at translating messages, you -should become a member of the translating team for your own language. -The subscribing address is *not* the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: - - subscribe - - Keep in mind that team members are expected to participate -*actively* in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `translation@iro.umontreal.ca' to reach the -coordinator for all translator teams. - - The English team is special. It works at improving and uniformizing -the terminology in use. Proven linguistic skill are praised more than -programming skill, here. - -Available Packages -================== - - Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of December -1997. The matrix shows, in regard of each package, for which languages -PO files have been submitted to translation coordination. - - Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv - .----------------------------------------------------. - bash | [] [] [] | 3 - bison | [] [] [] | 3 - clisp | [] [] [] [] | 4 - cpio | [] [] [] [] [] [] | 6 - diffutils | [] [] [] [] [] | 5 - enscript | [] [] [] [] [] [] | 6 - fileutils | [] [] [] [] [] [] [] [] [] [] | 10 - findutils | [] [] [] [] [] [] [] [] [] | 9 - flex | [] [] [] [] | 4 - gcal | [] [] [] [] [] | 5 - gettext | [] [] [] [] [] [] [] [] [] [] [] | 12 - grep | [] [] [] [] [] [] [] [] [] [] | 10 - hello | [] [] [] [] [] [] [] [] [] [] [] | 11 - id-utils | [] [] [] | 3 - indent | [] [] [] [] [] | 5 - libc | [] [] [] [] [] [] [] | 7 - m4 | [] [] [] [] [] [] | 6 - make | [] [] [] [] [] [] | 6 - music | [] [] | 2 - ptx | [] [] [] [] [] [] [] [] | 8 - recode | [] [] [] [] [] [] [] [] [] | 9 - sh-utils | [] [] [] [] [] [] [] [] | 8 - sharutils | [] [] [] [] [] [] | 6 - tar | [] [] [] [] [] [] [] [] [] [] [] | 11 - texinfo | [] [] [] | 3 - textutils | [] [] [] [] [] [] [] [] [] | 9 - wdiff | [] [] [] [] [] [] [] [] | 8 - `----------------------------------------------------' - 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv - 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179 - - Some counters in the preceding matrix are higher than the number of -visible blocks let us expect. This is because a few extra PO files are -used for implementing regional variants of languages, or language -dialects. - - For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If December 1997 seems to be old, you may fetch a more recent copy -of this `ABOUT-NLS' file on most GNU archive sites. - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/AUTHORS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/AUTHORS deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING deleted file mode 100644 index bf50f20de6..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING +++ /dev/null @@ -1,482 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library 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 Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey 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 library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307 USA. - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog deleted file mode 100644 index bdd64ab61c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog +++ /dev/null @@ -1,386 +0,0 @@ -gsmlib-1.10 - - reactivated code in gsm_at to retry sending PDU after - unsolicited result code - - - added description of unicode handling to FAQ - - - compilation fixes for gcc-3.0.4 - - - added quick exit for ATZ in UnixSerialPort constructor - if phone gives ERROR - - - added fix for phones that return +CLIP: "Number not available." - instead of giving caller ID - - - added get/setCLIRPresentation() functions to MeTa (contribution by - ivan) - - - added "NO CARRIER" event to the event mechanism (contribution by - clock) - - - added Win32 port of gsmsmsd (thanks to Konstantin Forostyan) - - - further extented Win32 port of gsmsmsd to handle outgoing messages - - - fixed problem with Ericsson T39m SMS sending (zero bytes in handshake) - - - added capability to send concatenated SMSs in gsmsmsd and gsmsendsms - - - fixed unsigned/signed char problems in Unix/Win32 serial port - implementations - - - added capability to send multiple SMSs to gsmsendsms/gsmsmsd - -gsmlib-1.9 - - fixed decoding of alphanumeric addresses in gsm_sms_codec. - - - fixed bug in gsm_event when checking whether to send an - acknowledgment for a received SMS - - - More Siemens-specific patches, some extensions to the AT - command parser - - - New code to print PIN status and set the PIN in gsmctl, setPIN - function in MeTa class (Andreas Roedl ) - - - Missing virtual destructor in Port class caused destructors of - UnixSerialPort and Win32SerialPort not to be called - fixed - - - Added new code to set functionality level on or off (thanks to - David Woodhouse) - - - found bug in SMS store implementation that caused the now - obsolete _capacity member to be set to a too low value - - - Added changes contributed by Frediano Ziglio to enable compilation - on Windows - - - Added call waiting functions contributed by Ivan - -gsmlib-1.8 - - added workaround for Nokia Cellular Card Phone RPE-1 GSM900 - that reports a CDS event that actually is an CDSI and sends a spurious - CR when waiting for a PDU - - - SMS are stored without index in files now - - - tested compilation with gcc-3.0.2 - - - added workaround for gsmlib getting confused when receiving SMS - and echo cannot be switched off - echos of the AT command are - filtered out in chat() now - - - extended gsm_phonebook preload mechanism to batch-load phonebooks - where the index does not start with 1 - - - Added workaround for Motorola Timeport 260 to write back - deliver messages to the ME - - - added workaround for compilation with libstdc++-v2 - - - private members of MeTa made protected - - - new ext directory for phone-specific extensions - -gsmlib-1.7 - - fixed bug with calculation of userData length if userDataHeader - is present (octet count was subtracted, not septet count) - - - fixed problem with string erase() at end of PDU for Falcom A2-1 - - - -t/--charset option of gsmpb did not work due to missing parameter - of getopt_long, fixed - - - The SMS decoder/encoder can now handle alphanumeric addresses - in the GSM default alphabet - - - set only those SMS stores that are actually needed to perform - SMS store operation - - - Fixed signalling error 321 (Invalid memory index) when trying to - read from empty SMS store entry - - - Fixed parsing error when reading current network operator if no - network connection - - - Added capability to parse cell broadcast messages to gsmlib and - the gsmsmsd program - - - Added workaround for Motorola Timeport 260 bug that doesn't correctly - report the message status when retrieving SMS messages from the - store - - - Added workaround for Motorola Timeport 260 that allocates index - numbers to SMS messages linearly so that index number can be - be larger than capacity reported by AT command - -gsmlib-1.6 - - more fixes for the COPS=? return format - - - fixed putBack() behaviour in gsm_parser (don't put back if end-of- - stream is reached) - - - added toString() function to gsm_sms_codec's Address class - - - SMS dates and times are now output in a locale-specific manner - - - fixed bug in Parser::getEol() (_eos was accidentally set to true) - - - added gsm_win32_serial module, Win32 project (VC++), and - Option FirstFone changes contributed by Frediano Ziglio - - - - fix in COM port recognition for Win32 (gsm_util) - - - renamed library files libgsm.* to libgsmme.* (now starting with - version 1.0) because of conflict with another Debian package - - - in gsm_phonebook and gsm_store the caching of entries can now - be disabled - - - added facilities to use other character sets for phonebooks - - - fixed workaround for Ericcson SH888 (missing service centre address) - - - fixed bug in gsm_phonebook that prevented texts with the - character '@' to be written to to the phonebook - - - fixed nasty memory allocation bug in gsmpb/gsmsmsstore - (automatic MeTa variable went out of scope even though used - later) - - - fixed Y2K problem in timestamp printing - - - fixed "make dist" to include win32 files - - - added workarounds for Falcom A2-1 (autodetection and enabling by - "export GSMLIB_FALCOM_A2_1_FIX=1", zero after PDU) - - - fixed bug that caused gsmlib to abort with an assert if a malformed - PDU was read - -gsmlib-1.5 - - adapted MeTa::getCurrentOPInfo() and MeTa::getAvailableOPInfo() - to handle Nokia 8290 quirks - - - code to set line speed in gsm_unix_serial reinserted (it was - accidentally removed in previous version) - - - minor changes to initialization sequence in gsm_unix_serial - - - bugfix in gsm_unix_serial.cc: readByte() == 0 does not mean no - more bytes, but is legal value - - - additionally allowed characters "*#pwPW" and '+' at any - position in telephone numbers - - - added environment variable GSMLIB_SH888_FIX that (if set) - enables the gsmlib workaround for Ericsson SH888's broken SMS TPDUs - - - fixed command line parameter handling bug in gsmsmsstore - - - fixed %files section .spec file to correctly include manual pages - - - fixed some bugs in terminal line setup (gsm_unix_serial) regarding - software/hardware handshake - - - added new "--sca" option to SMS-related apps to set the SMS - service centre address on the command line (useful if default is not - set correctly in the phone) - - - removed tcflush() call in UnixSerialPort::putLine that broke - the event system needed for gsmsmsd - -gsmlib-1.4 - - more attempts to fix UNIX serial port access - - - allow custom backends for sorted phonebooks to be integrated - into gsmlib (eg. for RDBMS or LDAP storage). Introduced a new - module gsm_sorted_phonebook_base that contains the infrastructure for - this. - - - Now gsmlib needs at least gcc-2.95.2 to compile correctly. - - - Implemented option to open device with software handshaking (XON/XOFF). - The applications now have an -X option to turn this on. - - - gsmlib now contains a facility to interrupt ongoing activity in a - controlled way. gsm_unix_serial now blocks for one second - maximum until it checks whether it was interrupted. - - - various small bugfixes - - - added workaround for phones that omit ':' in AT command responses - - - all debugging output is now printed to stderr - - - gsm_unix_serial: new attempt to initialize modem in a more - robust way (contributed) - - - gsm_sms: fixed handling of user data header (contributed) - -gsmlib-1.3 - - fixed bug that caused gsmlib to hang if TAs don't respond - to AT inquiries for serial number etc. - - - fixed bug with handling of CB mode AT command construction in - gsm_me_ta.cc, setSMSRoutingToTA() - - - allow '+' as the first character of phonenumbers - - - implemented reading and writing from/to stdin/stdout in - gsm_sorted_[sms_store|phonebook] and gsmpb/gsmsmsstore - - - fixed (hopefully) the intermittent hangup problem in - gsm_unix_serial_port - - - Some mobile phones cannot report the status of some facility - locks. The gsmctl program now prints out "unknown" in the - corresponding result line from the FLSTAT - operation if this problem occurs (instead of terminating). - - - switched off non-blocking access to serial device - -gsmlib-1.2 - - gsmlib now also works with TAs that can not switch off echo - - - fixed bug that prevented gsmlib from copying SMS_DELIVER and - SMS_STATUS_REPORT back to the ME - - - introduced -I (--init) parameter to all command line apps to - allow for device-specific initialization - - - made SMS decoding routines more robust against bad SMS (especially - premature end of PDU) - - - New debugging feature: If compiled without NDEBUG, the - environment variable GSMLIB_DEBUG determines the verbosity of - debugging messages (0 = none, 1 = many, 2 = extreme) - -gsmlib-1.1 - - - Parse multiple COPS (operator info) lines returned by some phones - - - accept string as numeric value when interpreting COPS=? response - (Ericsson phone + GSM12 GSM module) - - - accept string as numeric value when interpreting COPS? response - (Ericsson phone + GSM12 GSM module) - - - retry when initializing TA (ATZ/ATE0 sequences) - - - Set SMS routing: - allow mode 3 (special in-band technique) when setting routing - to TA (gsmlib should not be active when phone is switched to data mode - anyway) - - - Set SMS routing: - handle buffer mode but only if it was reported by the +CNMI=? command - (the Ericsson GM12 GSM modem does not like it otherwise) - - - Determine CPMS number of parameters for CPMS command (better - compability with some mobile phones / GSM modems) - - - handle missing service centre address in incoming SMS for Ericsson - model 6050102 - - - add new RING event to gsm_event.h/.cc, gsmsmsd now handles RING - indications properly - - - defined default event handler mostly to handle unexpected RING - indications that might otherwise confuse gsmlib - - - gsmsmsd: can now be cleanly terminated using the SIGINT or SIGTERM - signals - - - gsmsmsd: now handles multiple incoming SMS messages cleanly, before - there was a chance that some SMS messages coming in rapid succession - might have been lost - - - gsmsmsd: flush option implemented that dispatches and erases - existing messages in SMS store - - - gsmsmsd: added sending of SMS messages. gsmsmsd now accepts a - spool directory options where it expects to find SMS message file in a - simple format, these are dispatched every 5 seconds - -gsmlib-1.0 - - - RPM support (spec file) - - - the "+" is at least for the Siemens S10 and S25 a valid char in - telephone numbers (inserts a pause of 3 seconds), therefore it is now - allowed as part of telephone numbers - - - fixed incorrect analysis of facility class parameters in gsmctl.cc - - - restricted call forward time to 0..30 seconds in gsm_me_ta.cc - -gsmlib-0.3 - - - implemented timeout for accessing the mobile phone in order - to avoid hangs - - - upgraded to BETA status - - - written glossary for abbreviations (gsminfo(7)) - - - implemented NLS support, added German translations - - - implemented preserving the index position of phonebook entries in - gsmpb.cc and gsm_sorted_phonebook - - - cleaned up manual pages (alphabetic ordering of options etc.) - - - gsmsmstore program and gsm_sorted_sms_store./.cc completed and - tested - - - gsmpb and gsmsmsstore now have --verbose (-V) options for detailed - progress reporting - - - now check for getopt_long in configure (can be compiled on non-GNU - systems) - - - removed asserts regarding lengths of numeric data types, put them - into configure script - - - sorted options in apps/*.cc alphabetically (--help option) - - - in gsm_sorted_sms_store compare telephone numbers more sensibly - - - introduced -v option to gsmpb and gsmsmsstore to report execution - statistics - - - tested new synchronization function in gsmpb program - - - implemented operations in the gsmctl program - - - rewrote test cases (compare output) - - - completed gsmsmsstore program - - - first changes for compilation with VC++ 6.0 on WIN32 - -gsmlib-0.2 - - - gsmsmstore program and gsm_sorted_sms_store./.cc mostly - completed but not yet much tested - - - Fixed problem with some mobiles/TAs not giving prefixes after - certain AT sequences (reported for SIEMENS S25/IrDA, Nokia - 8810/IrDA) - - - Fixed problem with Xircom REM56G.100/Nokia 6150 that give - "CABLE: GSM" instead of "OK" after ATZ - - - Mobiles that return nothing when empty phonebook entries are - requested are now handled correctly (reported for SIEMENS S25/IrDA) - - - optimizations in gsm_*_phonebook modules (less AT commands necessary) - - - new synchronization function in gsmpb program that is (hopefully) - more sensible (see man page for details) - -gsmlib-0.1 - - - Initial release diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL deleted file mode 100644 index 6242d6f388..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL +++ /dev/null @@ -1,198 +0,0 @@ -GSMLIB Installation -=================== - - This distribution uses autoconf/automake/libtool. See below - for generic installation instructions. The default commands would be: - - ./configure - make - make install - - See also the section INSTALLATION in the README file in this - directory. For questions regarding the internationalization of this - package refer to doc/README.NLS and ./ABOUT-NLS. - - Developers: See also the file doc/README.developers. - -Basic Installation -================== - - These are generic installation instructions. - - 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, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - 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 at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' 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. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. 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. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -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 must use a version of `make' that -supports the `VPATH' variable, such as 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 `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have 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. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' 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. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -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 host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -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. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--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. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am deleted file mode 100644 index daf1ea0047..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: Toplevel Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 21.5.1999 -# ************************************************************************* - -SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext - -EXTRA_DIST = gsmlib.spec - -if COMPILE_INTL -SUBDIRS = intl $(SUBDIRS_) # po - make automake happy -else -SUBDIRS = $(SUBDIRS_) # po intl - make automake happy -endif - -all: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in deleted file mode 100644 index e9676cc981..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in +++ /dev/null @@ -1,423 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 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. - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: Toplevel Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 21.5.1999 -# ************************************************************************* - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AR = @AR@ -AS = @AS@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -DATADIRNAME = @DATADIRNAME@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -GCJ = @GCJ@ -GCJFLAGS = @GCJFLAGS@ -GENCAT = @GENCAT@ -GLIBC2 = @GLIBC2@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_ASPRINTF = @HAVE_ASPRINTF@ -HAVE_LIB = @HAVE_LIB@ -HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ -HAVE_SNPRINTF = @HAVE_SNPRINTF@ -HAVE_WPRINTF = @HAVE_WPRINTF@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -RC = @RC@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ - -SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext - -EXTRA_DIST = gsmlib.spec -@COMPILE_INTL_TRUE@SUBDIRS = intl $(SUBDIRS_) # po - make automake happy -@COMPILE_INTL_FALSE@SUBDIRS = $(SUBDIRS_) # po intl - make automake happy -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = gsm_config.h -CONFIG_CLEAN_FILES = -DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ -INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ -aclocal.m4 configure configure.in gsm_config.h.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DIST_SUBDIRS = intl po gsmlib apps tests doc scripts win32 ext po \ -gsmlib apps tests doc scripts win32 ext -all: all-redirect -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): configure.in acinclude.m4 - cd $(srcdir) && $(ACLOCAL) - -config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -gsm_config.h: stamp-h - @if test ! -f $@; then \ - rm -f stamp-h; \ - $(MAKE) stamp-h; \ - else :; fi -stamp-h: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=gsm_config.h \ - $(SHELL) ./config.status - @echo timestamp > stamp-h 2> /dev/null -$(srcdir)/gsm_config.h.in: $(srcdir)/stamp-h.in - @if test ! -f $@; then \ - rm -f $(srcdir)/stamp-h.in; \ - $(MAKE) $(srcdir)/stamp-h.in; \ - else :; fi -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f gsm_config.h - -maintainer-clean-hdr: - -# 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. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - 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) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - 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: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" != "." || dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && 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) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)gsm_config.h.in$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags gsm_config.h.in $$unique $(LISP)) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(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 - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(DIST_SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: all-am -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -all-recursive-am: gsm_config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -install-exec-am: -install-exec: install-exec-recursive - -install-data-am: -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: -uninstall: uninstall-recursive -all-am: Makefile gsm_config.h -all-redirect: all-recursive-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-hdr clean-tags clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-hdr distclean-tags distclean-generic clean-am - -rm -f libtool - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -install-data-recursive uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -install-exec-am install-exec install-data-am install-data install-am \ -install uninstall-am uninstall all-redirect all-am all installdirs-am \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -all: - -# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS deleted file mode 100644 index 1efffa7d86..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS +++ /dev/null @@ -1,11 +0,0 @@ -NEWS - 9.1.2000 - - Version 1.0 - first release with RPM support and binary packages - -NEWS - 15.11.1999 - - BETA version (details see ChangeLog) - -NEWS - 16.7.1999 - - initial release diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README deleted file mode 100644 index 2f5db9eb27..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README +++ /dev/null @@ -1,166 +0,0 @@ -INTRODUCTION - - This distribution contains a library to access GSM mobile phones - through GSM modems or IrDA devices. Features include: - - * modification of phonebooks stored in the mobile phone or on the - SIM card - - * reading and writing of SMS messages stored in the mobile phone - - * sending and reception of SMS messages - - Additionally, some simple command line programs are provided to - use these functionalities. - - -REQUIREMENTS - - You need a mobile phone that conforms to the GSM - standards ETSI GSM 07.07, ETSI GSM 07.05, and others. - Non-GSM mobile phones will not work! Additionally, - to access the mobile phone from the computer you will probably need an - GSM modem (that would be a PC-CARD, usually). There might be some - mobile phones, however, that incorporate directly terminal - adapter (TA) functionality. Access via IrDA interfaces is also - reported to work. - - If you want to compile the library yourself please also read - doc/README.developers. - - -INSTALLATION - - This distribution uses autoconf/automake/libtool. See the file - INSTALL for generic installation instructions. The default - commands for installation under /usr/local would be: - - ./configure - make - make install - - If there are any problems you can generate a debug version. See - doc/README.developers for details. - - -AVAILABLE DOCUMENTATION - - For the command line tools UNIX manual pages are available in the - doc subdirectory of this distribution. These are installed by - default in the directories /usr/local/man1, man7, and man8. - - See also the files doc/README.developers, doc/README.NLS and doc/FAQ. - - -HARDWARE - - The following mobile phone/GSM modem combinations are reported to - be compatible in varying degrees with the current release: - - - Nokia 6150/Xircom REM56G.100 - - Nokia 6150/Options "GSM-Ready(R) Cellular-Only" modem - from Option International - - Nokia 6210/- (Linux IrDA serial device) - - Nokia 8810/- (Linux IrDA serial device) - - Siemens S10D/Dr Neuhaus Gipsy Card GSM - - Siemens S25/- (Linux IrDA serial device) - - Siemens S35i/- (Linux IrDA serial device) - - Siemens S45 - - Ericcson SH888/- (Linux IrDA serial device) - - Ericsson 6050102/GM 12 GSM module - - Ericsson T28s (firmware 000809 1106) - - Ericsson T20e (firmware R3A007) - - -/Siemens M20T (stand-alone GSM module) - - -/Wavecom WM02 GSM (stand-alone GSM module) - - Nokia 7110 (firware rev 4.80)/- (Linux IrDA serial device) - - Nokia 8290 (USA GSM 1900MHz)/- (Linux IrDA serial device) - - Falcom A2-1/- (stand-alone GSM module) - - Ericsson R320s/- (Linux IrDA serial device) - - Motorola Timeport 260/- (Serial cable and Linux IrDA serial device) - - Motorola Timeport 250/- (Linux IrDA serial device) - - Motorola Timeport P7389/- (Linux IrDA serial device) - - Nokia Cellular Card Phone RPE-1 GSM900 and - - Nokia Card Phone RPM-1 GSM900/1800 - - Nokia Cardphone/Compaq iPAQ - - Omnipoint technologies Redhawk 2000 GSM modem - - Ericsson T28 (but one firmware revision is reported to have problems) - - Ericcson T65 - - Ericcson T39m/Bluetooth - - Option International GlobeTrotter PCMCIA - - Note 1: Some of the mobile phones have an integrated GSM modem - that can be accessed via the Linux IrDA drivers. - - Note 2: Some of the abovementioned phones have still some glitches - with gsmlib (and I haven't tested them myself). - - For the following phones I receive a lot of errors reports: - - - Ericcson SH888: SMS function don't work with many firmware releases - - This list is not exhaustive, there are probably many other types of - phone or GSM modem that work with gsmlib. Just try it and report back - to me! - - -DISCLAIMER - - Even though care has been taken in the design and implementation - of this software it can not be excluded that this software could - destroy data in your mobile phone or may even render your mobile - phone useless (by erroneous PIN settings, for example). The - author will not be held responsible legally, financially, or in any - other form for any kind of damage that might occur from using - this software. - - This software is provided "as is" and without any expressed or implied - warranties, including, without limitation, the implied warranties of - merchantibility and fitness for any particular purpose. - - If you are not ready to accept these conditions please don't use - this software. - - -COPYING - - This software is available on the LGPL (GNU LIBRARY GENERAL - PUBLIC LICENSE), ie. it is allowed to link - the library to commercial programs. - - See the file COPYING for details on the license. - - -BUGS - - There still seem to be some problems with IrDA devices under - Linux. There have been reports of gsmlib-based applications - (eg. gsmctl) hanging upon startup after initializing the serial port - /dev/ircomm. I would be thankful for any input on this problem. - - If something does not work with your OS platform or the mobile/TA - combination please send a complete trace of the compilation or the - program execution that did fail. Make sure to compile with debugging - information enabled. Otherwise it will not be possible for me to do - much about the problem. Send bug reports to the mailing list or - to software@pxh.de. I promise not to publish telephone numbers or other - private information that might be contained in the execution traces - that you send me. - - -MAILING LISTS - - There are now two mailings lists available for announcements and - discussion of gsmlib-related issues (hosted on lists.over.net). - Refer to these pages for information on subscription procedures - and an archive of previous postings: - - http://lists.over.net/mailman/listinfo/gsmlib-announce/ - for announcements regarding GSMLIB - - http://lists.over.net/mailman/listinfo/gsmlib-devel/ - the GSMLIB development list - - -AUTHOR - - Peter Hofmann . diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO deleted file mode 100644 index 3ea3aa3fd5..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO +++ /dev/null @@ -1,289 +0,0 @@ -This is my list of TODOs for development of this software (not -necessarily in order of importance): - -("+" = DONE) - -+ handle: - > --> AT+COPS=? - > <-- - > <-- +COPS: (1,"AMENA",,"21403"),(3,"MOVISTAR",,"21407"), - > <-- (3,"E VODAFONE",,"21401"),,(0,1),(2) - > <-- - > <-- OK - > gsmctl[ERROR]: expected comma (at position 45 of string '(1,"AMENA",,"21403"),(3,"MOVISTAR",,"21407"),') - -+ extend README and web site with names of working phones (Siemens S45,...) - -+ add workaround: - > Manufacturer: Nokia Mobile Phones - > Model: 8290 - > Revision: SW5.22 - > Serial Number: 010070303406434 - > Functionality Level: 1 - > gsmctl[ERROR]: expected number, got '(2)' - -- add fork to gsmsmsd - -+ document "on" and "off" operations of gsmctl - -- Just assume full functionality and issue AT+CGMF=0 if we haven't already - done so for this MeTa. - -+ make update po - -+ add find function - -+ specify exact location of manual files in /usr/man/man* in spec - file, so that erase does not try to delete these directories - -+ update PO - -+ add option to gsmsendsms/gsmsmsd to request delivery reports - -+ Fix CBM reception in gsmsmsd, see testcb.cc program - -+ fix gsmsmsd: - --> AT+CNMI=? - <-- - <-- +CNMI: (1),(1),(0),(0),(0) - <-- - <-- OK - --> AT+CNMI=1,0,0,0,0 - <-- - <-- +CME ERROR: 003 - ./gsmsmsd[ERROR]: ME/TA error 'operation not allowed' (code 003) - -+ Wenn ich den SMS-Speicher auslesen möchte, bricht gsmlib ab, weil der - Speicherplatz 1 auf der SIM-Karte nicht belegt ist. Das kann z.B. - passieren, wenn man Nachrichten im Handy löscht. Es kommt der Fehlercode - 321 (Invalid memory index). Wie wäre es, in der Leseroutine alle - ungültigen Plätze zu ignorieren und solange zu lesen, bis die Anzahl der - vorhandenen Nachrichten im Speicher eingelesen ist? - -+ document --charset option of gsmpb - -+ Problems with PDUs with alphanumeric SCA, e.g.: - 07911497941902F00414D0E474989D769F5DE4320839001040122151820000 - -+ > 2. Ich kann mit meinem Nokia 6210 nicht den Telefon-SMS-Speicher - auslesen. Dies liegt an der Speicherwahl, die vor dem Auslesen - an das Telefon übermittelt wird. Von der gsmlib wird anscheinend - immer die Anzahl der Speicher aus dem "CPMS=?"-Befehl genommen - (z.B. "SM","SM","SM"). Notwendig ist es aber nur, die erste - Position (zum Lesen und Löschen) bzw. die ersten beiden - Positionen (zum Schreiben) zu benutzen. - Das Nokia 6210 unterstützt aber an der ritten Stelle nur "SM", - nicht "ME". So kann ich die SMS im Telefon leider nicht - auslesen :-( - -- add option to gsmpb/gsmssmstore deletion to delete ALL entries - -- recheck Solaris port - -+ cache character set settings in MeTa - -+ add documentation for new gsmctl and gsmpb charset parameters - -+ support characters sets other than GSM default alphabet for phone books - -+ create non-existent files (gsmpb and gsmsmsstore) - -+ rename libgsm to libgsmme, new major version 1 - -+ document sca/setsca operations/parameters in gsmctl - -+ document option to set SCA in SMS-related apps - -+ implement option to set SCA in SMS-related apps - -+ convert NDEBUG test output from cout to cerr - -+ test new gsm_unix_serial behaviour - -+ apply checks for telephone number in gsm_sorted_phonebook - -+ add interrupted() checks - -+ check for gcc-2.95.2 in configure - -- document custom backend options of gsmpb (and gsmsmsstore) - -- /var/lock/LCK..modem - -+ make gsmctl all continue even if there are some failures - -+ CPIN thing - -+ bring German translations up-to-date - -+ document -I parameter - -+ make chat routines robust against TAs that insist on echoing AT commands - -+ ericsson sh 888: - <-- AT+CLCK="P2",2,,1 - <-- - +CME ERROR: 4 - gsmctl[ERROR]: ME/TA error 'operation not supported' (code 4) - -+ put README etc. into gsmlib package (not only devel) - -+ make SMS decoding routines more robust against bad SMS (especially - premature end of PDU) - -+ stop gsm_sorted_sms_store.cc from copying back SMS that came from - the SC (SMS_DELIVER, SMS_STATUS_REPORT, SMS_SUBMIT_REPORT). Their - message type is ambiguous and the ME may misinterpret them. - -+ gsmsmsd: reinitialize modem every hour or so (signal termination implemented) - -+ implement store, flush and spool options of gsmsmsd, - document them in man pages - -+ test case for COPS answer numeric operator name in quotation marks - (testparser.cc) - -+ retry when initializing TA (ATZ/ATE0 sequences) - -+ correctly parse malformed SMS PDUs without SCA with Ericsson phone, - introduce Capability object for that. Ericsson ID: - Manufacturer: ERICSSON - Model: 6050102 - Revision: 990225 1852 CXC112143 - Serial Number: 520001690279310 - -+ Determine CPMS number of parameters for CPMS command (Ericsson - phone/GM12 GSM modem): - AT+CPMS? - +CPMS: "ME",0,10,"ME",0,10 - AT+CPMS=? - +CPMS: ("ME","SM"),("ME","SM") - -+ accept string as numeric value when interpreting COPS=? response - (Ericsson phone + GSM12 GSM module) - -+ accept string as numeric value when interpreting COPS? response - (Ericsson phone + GSM12 GSM module) - -+ It would be nice if it was possible to send sms:es - via gsmsmsd as well, via a spool directory or a socket (or stdin, in which - case one can put another program in front of this program and then - feed it with outgoing messages any way one wants). That way the program - could be the gateway between programs and the sms network. Now one has - to stop gsmsmsd to send an sms and that's not so elegant or write - ones own program. - -+ gsmsmsd geht davon aus, das ein platz frei ist und benutzt nur diesen.... - Wenn also eine SMS kommt, dann zieht es Sie raus, und löscht den - Speicherplatz. - Wenn aber die Karte voll ist, passiert gar nichts. Für eine automatisierte - umgebung ist das schlecht. besser wäre es, bei startup von gsmsmsd alle - Speicherplätze abzufrühstücken, und die Action aufzurufen. - -+ Ein RING bringt den gsmsmsd ziemlich heftig aus dem Tritt. Hab jetzt ´ne - Rufumleitung eingebaut. - -+ Links section in homepage - -+ AT+CNMI=? liefert bei mir folgendes zurück: - +CNMI: (0-3),(0-3),(0-2),0,(0-1) - Parameter 4 () liefert also keine Liste sondern nur ein Int zurück, du - versuchts aber ein ( zu parsen. - Was sagt die ETSI-spec. dazu ?? Ist das konform ?? - -+ give name of command at beginning of synopsis in man pages - -+ list combinations of mobiles phones/GSM modems in the README - -+ test ALARM in case of timeout when writing or reading to TA - -+ install headers in gsmlib subdirectory - -+ RPM spec file - -+ test index changes for sorted phonebook -> write second test case - -+ sort phone numbers the same way in gsm_sorted_sms_store and - gsm_sorted_phonebook - -+ write glossary for all these nice abbreviations (TA, ME, SC, SME, TE) - -+ HAVE_VSNPRINTF instead of HAVE_VPRINTF - -+ internationalization of messages with GNU gettext. Files: - +gsm_at.cc +gsm_parser.cc +gsm_sorted_phonebook.cc - +gsm_error.cc +gsm_phonebook.cc +gsm_sorted_sms_store.cc - +gsm_event.cc +gsm_sms.cc +gsm_unix_serial.cc - +gsm_me_ta.cc +gsm_sms_codec.cc +gsm_util.cc - +gsm_nls.cc +gsm_sms_store.cc - +gsmctl.cc +gsmpb.cc +gsmsendsms.cc - +gsmsmsd.cc +gsmsmsstore.cc - -+ implement indexed phonebook ops in gsmpb.cc - -+ describe phonebook file format in gsmpb.man - -+ update list of compatible hardware in README - -+ all #include must be enclosed in #ifdef's - -+ check for getopt_long in configure - -+ remove asserts regarding lengths of numeric data types, put them -into configure script -(string) - -+ sort options in apps/*.cc alphabetically - -+ in gsm_sorted_sms_store compare telephone numbers numerically - -+ introduce -v option to gsmpb and gsmsmsstore to report execution -statistics (gives a nicer feeling to users) - -+ test new synchronization function in gsmpb program - -+ implement equality operator for SMSSToreEntry - -+ test 'make install' - -+ implement operations in the gsmctl program - -+ test operations in the gsmctl program - -+ document operations in the gsmctl program - -+ rewrite test cases (compare output) - -+ write gsm_sorted_sms_store module (along the lines of gsm_sorted_phonebook) - -+ complete gsmsmsstore program (using abovementioned modules) - -TODO low priority: - -- implement SMS text mode - -- The action command of gsmsmsd would be easier to make, if the program - sent the values in environment variables instead (except the user data - which could be sent on stdin). - -+ Upgrade to latest autoheader, autoconf, libtool - -- provide German translations for manual pages - -- organize doc subdirectory for translated READMEs, manual pages - -+ Win32 port - -- test: optimization when accessing phonebooks: use size information -available via AT command to stop reading entries known to be empty (I -cannot test this with my hardware since CPBS? is not fully supported) - -- make apps accept stdin or stdout - -+ maybe strip leading and trailing whitespace from phonebook entries -when reading them from ME/TA or file? (not done, perhaps users want to -achieve special effects with white space) - -- support international character sets (8-bit, 16-bit) in phonebook -operations (I'd like to have input from users who need this) - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h deleted file mode 100644 index 14ce58fbc3..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h +++ /dev/null @@ -1,33 +0,0 @@ -/* used by libtool*/ -#define PACKAGE 0 - -/* used by libtool*/ -#define VERSION 0 - -/* Define if getopt_long() available */ -#undef HAVE_GETOPT_LONG - -/* Define if alarm() available */ -#undef HAVE_ALARM - -/* Define if netinet/in.h header available */ -#undef HAVE_NETINET_IN_H - -/* Define if string.h header available */ -#undef HAVE_STRING_H - -/* Define for NLS */ -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY - -/* Define LOCALEDIR */ -#define LOCALEDIR "/usr/share/locale" - -/* Define if libintl.h header available */ -#undef HAVE_LIBINTL_H - -/* Define if vsnprintf() function available */ -#undef HAVE_VSNPRINTF diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acinclude.m4 b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acinclude.m4 deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 deleted file mode 100644 index 8d27d03353..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 +++ /dev/null @@ -1,9704 +0,0 @@ -# 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. - -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have and nl_langinfo(CODESET).]) - fi -]) - -# gettext.m4 serial 37 (gettext-0.14.4) -dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define([gt_included_intl], ifelse([$1], [external], [no], [yes])) - define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. - gt_INTL_MACOSX - - dnl Set USE_NLS. - AM_NLS - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Some extra flags are needed during linking. - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST(INTLOBJS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([gt_GLIBC2])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([bh_C_SIGNED])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl - AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl - AC_REQUIRE([gt_TYPE_WCHAR_T])dnl - AC_REQUIRE([gt_TYPE_WINT_T])dnl - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_REQUIRE([gt_TYPE_INTMAX_T]) - AC_REQUIRE([gt_PRINTF_POSIX]) - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([gl_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - AC_REQUIRE([gl_XSIZE])dnl - AC_REQUIRE([gt_INTL_MACOSX])dnl - - AC_CHECK_TYPE([ptrdiff_t], , - [AC_DEFINE([ptrdiff_t], [long], - [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) - ]) - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -__fsetlocking]) - - dnl Use the _snprintf function only if it is declared (because on NetBSD it - dnl is defined as a weak alias of snprintf; we prefer to use the latter). - gt_CHECK_DECL(_snprintf, [#include ]) - gt_CHECK_DECL(_snwprintf, [#include ]) - - dnl Use the *_unlocked functions only if they are declared. - dnl (because some of them were defined without being declared in Solaris - dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built - dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL(feof_unlocked, [#include ]) - gt_CHECK_DECL(fgets_unlocked, [#include ]) - gt_CHECK_DECL(getc_unlocked, [#include ]) - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - AC_SUBST([HAVE_POSIX_PRINTF]) - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - AC_SUBST([HAVE_ASPRINTF]) - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - AC_SUBST([HAVE_SNPRINTF]) - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - AC_SUBST([HAVE_WPRINTF]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - gt_LC_MESSAGES - fi - - if test -n "$INTL_MACOSX_LIBS"; then - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -dnl Checks for special options needed on MacOS X. -dnl Defines INTL_MACOSX_LIBS. -AC_DEFUN([gt_INTL_MACOSX], -[ - dnl Check for API introduced in MacOS X 10.2. - AC_CACHE_CHECK([for CFPreferencesCopyAppValue], - gt_cv_func_CFPreferencesCopyAppValue, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include ], - [CFPreferencesCopyAppValue(NULL, NULL)], - [gt_cv_func_CFPreferencesCopyAppValue=yes], - [gt_cv_func_CFPreferencesCopyAppValue=no]) - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, - [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) - fi - dnl Check for API introduced in MacOS X 10.3. - AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, - [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - AC_SUBST([INTL_MACOSX_LIBS]) -]) - - -dnl gt_CHECK_DECL(FUNC, INCLUDES) -dnl Check whether a function is declared. -AC_DEFUN([gt_CHECK_DECL], -[ - AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, - [AC_TRY_COMPILE([$2], [ -#ifndef $1 - char *p = (char *) $1; -#endif -], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) - if test $ac_cv_have_decl_$1 = yes; then - gt_value=1 - else - gt_value=0 - fi - AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) - -# glibc2.m4 serial 1 -dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -# Test for the GNU C Library, version 2.0 or newer. -# From Bruno Haible. - -AC_DEFUN([gt_GLIBC2], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, - ac_cv_gnu_library_2, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ >= 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2=yes, - ac_cv_gnu_library_2=no) - ] - ) - AC_SUBST(GLIBC2) - GLIBC2="$ac_cv_gnu_library_2" - ] -) - -# glibc21.m4 serial 3 -dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([gl_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) - -# iconv.m4 serial AM4 (gettext-0.11.3) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) - -# intdiv0.m4 serial 1 (gettext-0.11.3) -dnl Copyright (C) 2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([gt_INTDIV0], -[ - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - - AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], - gt_cv_int_divbyzero_sigfpe, - [ - AC_TRY_RUN([ -#include -#include - -static void -#ifdef __cplusplus -sigfpe_handler (int sig) -#else -sigfpe_handler (sig) int sig; -#endif -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} -], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, - [ - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - ]) - ]) - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, - [Define if integer division by zero raises signal SIGFPE.]) -]) - -# intmax.m4 serial 2 (gettext-0.14.2) -dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. -dnl Test whether the system has the 'intmax_t' type, but don't attempt to -dnl find a replacement if it is lacking. - -AC_DEFUN([gt_TYPE_INTMAX_T], -[ - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, - [AC_TRY_COMPILE([ -#include -#include -#if HAVE_STDINT_H_WITH_UINTMAX -#include -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include -#endif -], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) - if test $gt_cv_c_intmax_t = yes; then - AC_DEFINE(HAVE_INTMAX_T, 1, - [Define if you have the 'intmax_t' type in or .]) - fi -]) - -# inttypes-pri.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -# Define PRI_MACROS_BROKEN if exists and defines the PRI* -# macros to non-string values. This is the case on AIX 4.3.3. - -AC_DEFUN([gt_INTTYPES_PRI], -[ - AC_REQUIRE([gt_HEADER_INTTYPES_H]) - if test $gt_cv_header_inttypes_h = yes; then - AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], - gt_cv_inttypes_pri_broken, - [ - AC_TRY_COMPILE([#include -#ifdef PRId32 -char *p = PRId32; -#endif -], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) - ]) - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, - [Define if exists and defines unusable PRI* macros.]) - fi -]) - -# inttypes.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H if exists and doesn't clash with -# . - -AC_DEFUN([gt_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, - [ - AC_TRY_COMPILE( - [#include -#include ], - [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) - ]) - if test $gt_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, - [Define if exists and doesn't clash with .]) - fi -]) - -# inttypes_h.m4 serial 6 -dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, -# doesn't clash with , and declares uintmax_t. - -AC_DEFUN([gl_AC_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - gl_cv_header_inttypes_h=yes, - gl_cv_header_inttypes_h=no)]) - if test $gl_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) - -# lcmessage.m4 serial 4 (gettext-0.14.2) -dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995. - -# Check whether LC_MESSAGES is available in . - -AC_DEFUN([gt_LC_MESSAGES], -[ - AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) - if test $gt_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your file defines LC_MESSAGES.]) - fi -]) - -# lib-ld.m4 serial 3 (gettext-0.13) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 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 -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 GCC]) - 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. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path 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(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) - -# lib-link.m4 serial 6 (gettext-0.14.3) -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_PREREQ(2.50) - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - dnl Tell automake >= 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE(rpath, - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) - -# lib-prefix.m4 serial 4 (gettext-0.14.2) -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - -# serial 47 Debian 1.5.20-2 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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - 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"} - -# 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' >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' >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 - ;; -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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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 > conftest.exp - $SED '/^$/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` - ;; - 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 - ;; - *) - # 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); */ - } - - 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_unknown|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" - 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 - LDFLAGS="$LDFLAGS $link_static_flag" - 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 > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || 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 - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - 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' - ;; - -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 - - # 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)); 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 /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -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 - 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" - ;; - -sco3.2v5*) - version_type=osf - 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 - ;; - -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.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - -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 -])# 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 - - # 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 - ;; - -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* | netbsdelf*-gnu | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=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 - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | 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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}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" - 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 - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - - -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($1) - -# Report which librarie types wil 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_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 - 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 - 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _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' - ;; - esac - fi - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _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*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _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 - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _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 - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - 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 - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC*) - # 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 - ;; - 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 - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - 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_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($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 - -# 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) - -# 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=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# 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=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# 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=$lt_sys_lib_search_path_spec - -# 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* | sysv5*) - symcode='[[BDRT]]' - ;; -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)= - ;; - 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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - ;; - 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*) - ;; - sco*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - 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 - ;; - unixware*) - ;; - 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' - ;; - - 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' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - 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* | sysv5*) - _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 - ;; - - 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 -]) - - -# 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' - ;; - linux*) - _LT_AC_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _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 - ;; - 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - 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 - _LT_AC_TAGVAR(link_all_deplibs, $1)=no - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) - 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* | sysv5*) - 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 - ;; - - 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # 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(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 - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - 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)=: - ;; - - sco3.2v5*) - _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)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - 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.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _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' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - 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 - -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 - -# -# 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) - 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 -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_MSG_RESULT([$SED]) -]) - -# longdouble.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. -dnl Test whether the compiler supports the 'long double' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_LONGDOUBLE], -[ - AC_CACHE_CHECK([for long double], gt_cv_c_long_double, - [if test "$GCC" = yes; then - gt_cv_c_long_double=yes - else - AC_TRY_COMPILE([ - /* The Stardent Vistra knows sizeof(long double), but does not support it. */ - long double foo = 0.0; - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - int array [2*(sizeof(long double) >= sizeof(double)) - 1]; - ], , - gt_cv_c_long_double=yes, gt_cv_c_long_double=no) - fi]) - if test $gt_cv_c_long_double = yes; then - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) - fi -]) - -# longlong.m4 serial 5 -dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Paul Eggert. - -# Define HAVE_LONG_LONG if 'long long' works. - -AC_DEFUN([gl_AC_TYPE_LONG_LONG], -[ - AC_CACHE_CHECK([for long long], ac_cv_type_long_long, - [AC_TRY_LINK([long long ll = 1LL; int i = 63;], - [long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll;], - ac_cv_type_long_long=yes, - ac_cv_type_long_long=no)]) - if test $ac_cv_type_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, - [Define if you have the 'long long' type.]) - fi -]) - -# nls.m4 serial 2 (gettext-0.14.3) -dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ(2.50) - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) -]) - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate it. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) - -# po.m4 serial 7 (gettext-0.14.3) -dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ(2.50) - -dnl Checks for all prerequisites of the po subdirectory. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AM_NLS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - -dnl Postprocesses a Makefile in a directory containing PO files. -AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -[ - # When this code is run, in config.status, two variables have already been - # set: - # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, - # - LINGUAS is the value of the environment variable LINGUAS at configure - # time. - -changequote(,)dnl - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - # Find a way to echo strings without interpreting backslash. - if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='echo' - else - if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='printf %s\n' - else - echo_func () { - cat < "$ac_file.tmp" - if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - cat >> "$ac_file.tmp" < /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` - cat >> "$ac_file.tmp" <> "$ac_file.tmp" < -#include -/* The string "%2$d %1$d", with dollar characters protected from the shell's - dollar expansion (possibly an autoconf bug). */ -static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -static char buf[100]; -int main () -{ - sprintf (buf, format, 33, 55); - return (strcmp (buf, "55 33") != 0); -}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, - [ - AC_EGREP_CPP(notposix, [ -#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ - notposix -#endif - ], gt_cv_func_printf_posix="guessing no", - gt_cv_func_printf_posix="guessing yes") - ]) - ]) - case $gt_cv_func_printf_posix in - *yes) - AC_DEFINE(HAVE_POSIX_PRINTF, 1, - [Define if your printf() function supports format strings with positions.]) - ;; - esac -]) - -# progtest.m4 serial 4 (gettext-0.14.2) -dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1996. - -AC_PREREQ(2.50) - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[ -# Prepare PATH_SEPARATOR. -# 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 - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) - -# signed.m4 serial 1 (gettext-0.10.40) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([bh_C_SIGNED], -[ - AC_CACHE_CHECK([for signed], bh_cv_c_signed, - [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) - if test $bh_cv_c_signed = no; then - AC_DEFINE(signed, , - [Define to empty if the C compiler doesn't support this keyword.]) - fi -]) - -# size_max.m4 serial 2 -dnl Copyright (C) 2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([gl_SIZE_MAX], -[ - AC_CHECK_HEADERS(stdint.h) - dnl First test whether the system already has SIZE_MAX. - AC_MSG_CHECKING([for SIZE_MAX]) - result= - AC_EGREP_CPP([Found it], [ -#include -#if HAVE_STDINT_H -#include -#endif -#ifdef SIZE_MAX -Found it -#endif -], result=yes) - if test -z "$result"; then - dnl Define it ourselves. Here we assume that the type 'size_t' is not wider - dnl than the type 'unsigned long'. - dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', - dnl which is guaranteed to work from LONG_MIN to LONG_MAX. - _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, - [#include ], result=?) - _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, - [#include ], result=?) - _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, - [#include ], result=?) - if test "$fits_in_uint" = 1; then - dnl Even though SIZE_MAX fits in an unsigned int, it must be of type - dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. - AC_TRY_COMPILE([#include - extern size_t foo; - extern unsigned long foo; - ], [], fits_in_uint=0) - fi - if test -z "$result"; then - if test "$fits_in_uint" = 1; then - result="$res_hi$res_lo"U - else - result="$res_hi$res_lo"UL - fi - else - dnl Shouldn't happen, but who knows... - result='~(size_t)0' - fi - fi - AC_MSG_RESULT([$result]) - if test "$result" != yes; then - AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], - [Define as the maximum value of type 'size_t', if the system doesn't define it.]) - fi -]) - -# stdint_h.m4 serial 5 -dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Paul Eggert. - -# Define HAVE_STDINT_H_WITH_UINTMAX if exists, -# doesn't clash with , and declares uintmax_t. - -AC_DEFUN([gl_AC_HEADER_STDINT_H], -[ - AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - gl_cv_header_stdint_h=yes, - gl_cv_header_stdint_h=no)]) - if test $gl_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) - -# uintmax_t.m4 serial 9 -dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Paul Eggert. - -AC_PREREQ(2.13) - -# Define uintmax_t to 'unsigned long' or 'unsigned long long' -# if it is not already defined in or . - -AC_DEFUN([gl_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then - AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to unsigned long or unsigned long long - if and don't define.]) - else - AC_DEFINE(HAVE_UINTMAX_T, 1, - [Define if you have the 'uintmax_t' type in or .]) - fi -]) - -# ulonglong.m4 serial 4 -dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Paul Eggert. - -# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. - -AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, - [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], - [unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the 'unsigned long long' type.]) - fi -]) - -# wchar_t.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. -dnl Test whether has the 'wchar_t' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_WCHAR_T], -[ - AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, - [AC_TRY_COMPILE([#include - wchar_t foo = (wchar_t)'\0';], , - gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) - if test $gt_cv_c_wchar_t = yes; then - AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) - fi -]) - -# wint_t.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2003 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. -dnl Test whether has the 'wint_t' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_WINT_T], -[ - AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, - [AC_TRY_COMPILE([#include - wint_t foo = (wchar_t)'\0';], , - gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) - if test $gt_cv_c_wint_t = yes; then - AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) - fi -]) - -# xsize.m4 serial 3 -dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -AC_DEFUN([gl_XSIZE], -[ - dnl Prerequisites of lib/xsize.h. - AC_REQUIRE([gl_SIZE_MAX]) - AC_REQUIRE([AC_C_INLINE]) - AC_CHECK_HEADERS(stdint.h) -]) - -# 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"]) -]) - -# 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 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# 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 -]) - -# 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 - -m4_include([acinclude.m4]) diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am deleted file mode 100644 index eff2f893fc..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am +++ /dev/null @@ -1,36 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: apps Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 5.6.1999 -# ************************************************************************* - -INCLUDES = -I.. - -bin_PROGRAMS = gsmsmsstore gsmctl gsmsmsd gsmpb gsmsendsms - -# build gsmsmsd from gsmsmsd.cc and libgsmme.la -gsmsmsd_SOURCES = gsmsmsd.cc -gsmsmsd_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmpb from gsmpb.cc and libgsmme.la -gsmpb_SOURCES = gsmpb.cc -gsmpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmctl from gsmctl.cc and libgsmme.la -gsmctl_SOURCES = gsmctl.cc -gsmctl_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmsendsms from gsmsendsms.cc and libgsmme.la -gsmsendsms_SOURCES = gsmsendsms.cc -gsmsendsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmsmsstore from gsmsmsstore.cc and libgsmme.la -gsmsmsstore_SOURCES = gsmsmsstore.cc -gsmsmsstore_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in deleted file mode 100644 index c18e2df06b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in +++ /dev/null @@ -1,442 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: apps Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 5.6.1999 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -INCLUDES = -I.. - -bin_PROGRAMS = gsmsmsstore gsmctl gsmsmsd gsmpb gsmsendsms - -# build gsmsmsd from gsmsmsd.cc and libgsmme.la -gsmsmsd_SOURCES = gsmsmsd.cc -gsmsmsd_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmpb from gsmpb.cc and libgsmme.la -gsmpb_SOURCES = gsmpb.cc -gsmpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmctl from gsmctl.cc and libgsmme.la -gsmctl_SOURCES = gsmctl.cc -gsmctl_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmsendsms from gsmsendsms.cc and libgsmme.la -gsmsendsms_SOURCES = gsmsendsms.cc -gsmsendsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build gsmsmsstore from gsmsmsstore.cc and libgsmme.la -gsmsmsstore_SOURCES = gsmsmsstore.cc -gsmsmsstore_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) -subdir = apps -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -bin_PROGRAMS = gsmsmsstore$(EXEEXT) gsmctl$(EXEEXT) gsmsmsd$(EXEEXT) \ - gsmpb$(EXEEXT) gsmsendsms$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) - -am_gsmctl_OBJECTS = gsmctl.$(OBJEXT) -gsmctl_OBJECTS = $(am_gsmctl_OBJECTS) -gsmctl_DEPENDENCIES = ../gsmlib/libgsmme.la -gsmctl_LDFLAGS = -am_gsmpb_OBJECTS = gsmpb.$(OBJEXT) -gsmpb_OBJECTS = $(am_gsmpb_OBJECTS) -gsmpb_DEPENDENCIES = ../gsmlib/libgsmme.la -gsmpb_LDFLAGS = -am_gsmsendsms_OBJECTS = gsmsendsms.$(OBJEXT) -gsmsendsms_OBJECTS = $(am_gsmsendsms_OBJECTS) -gsmsendsms_DEPENDENCIES = ../gsmlib/libgsmme.la -gsmsendsms_LDFLAGS = -am_gsmsmsd_OBJECTS = gsmsmsd.$(OBJEXT) -gsmsmsd_OBJECTS = $(am_gsmsmsd_OBJECTS) -gsmsmsd_DEPENDENCIES = ../gsmlib/libgsmme.la -gsmsmsd_LDFLAGS = -am_gsmsmsstore_OBJECTS = gsmsmsstore.$(OBJEXT) -gsmsmsstore_OBJECTS = $(am_gsmsmsstore_OBJECTS) -gsmsmsstore_DEPENDENCIES = ../gsmlib/libgsmme.la -gsmsmsstore_LDFLAGS = - -DEFS = @DEFS@ -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsmctl.Po ./$(DEPDIR)/gsmpb.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsmsendsms.Po ./$(DEPDIR)/gsmsmsd.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsmsmsstore.Po -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CXXFLAGS = @CXXFLAGS@ -DIST_SOURCES = $(gsmctl_SOURCES) $(gsmpb_SOURCES) $(gsmsendsms_SOURCES) \ - $(gsmsmsd_SOURCES) $(gsmsmsstore_SOURCES) -DIST_COMMON = Makefile.am Makefile.in -SOURCES = $(gsmctl_SOURCES) $(gsmpb_SOURCES) $(gsmsendsms_SOURCES) $(gsmsmsd_SOURCES) $(gsmsmsstore_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu apps/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_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 $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ - rm -f $(DESTDIR)$(bindir)/$$f; \ - done - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -gsmctl$(EXEEXT): $(gsmctl_OBJECTS) $(gsmctl_DEPENDENCIES) - @rm -f gsmctl$(EXEEXT) - $(CXXLINK) $(gsmctl_LDFLAGS) $(gsmctl_OBJECTS) $(gsmctl_LDADD) $(LIBS) -gsmpb$(EXEEXT): $(gsmpb_OBJECTS) $(gsmpb_DEPENDENCIES) - @rm -f gsmpb$(EXEEXT) - $(CXXLINK) $(gsmpb_LDFLAGS) $(gsmpb_OBJECTS) $(gsmpb_LDADD) $(LIBS) -gsmsendsms$(EXEEXT): $(gsmsendsms_OBJECTS) $(gsmsendsms_DEPENDENCIES) - @rm -f gsmsendsms$(EXEEXT) - $(CXXLINK) $(gsmsendsms_LDFLAGS) $(gsmsendsms_OBJECTS) $(gsmsendsms_LDADD) $(LIBS) -gsmsmsd$(EXEEXT): $(gsmsmsd_OBJECTS) $(gsmsmsd_DEPENDENCIES) - @rm -f gsmsmsd$(EXEEXT) - $(CXXLINK) $(gsmsmsd_LDFLAGS) $(gsmsmsd_OBJECTS) $(gsmsmsd_LDADD) $(LIBS) -gsmsmsstore$(EXEEXT): $(gsmsmsstore_OBJECTS) $(gsmsmsstore_DEPENDENCIES) - @rm -f gsmsmsstore$(EXEEXT) - $(CXXLINK) $(gsmsmsstore_LDFLAGS) $(gsmsmsstore_OBJECTS) $(gsmsmsstore_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmctl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmpb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsendsms.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsmsd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsmsstore.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.cc.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -.cc.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `cygpath -w $<` - -.cc.lo: -@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< -CXXDEPMODE = @CXXDEPMODE@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 $(PROGRAMS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(bindir) - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-binPROGRAMS - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am - -.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool distclean distclean-compile \ - distclean-depend distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-binPROGRAMS 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 tags uninstall uninstall-am \ - uninstall-binPROGRAMS 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc deleted file mode 100644 index df6fd28e1d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc +++ /dev/null @@ -1,635 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmctl.cc -// * -// * Purpose: GSM mobile phone control program -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 11.7.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#include - -using namespace std; -using namespace gsmlib; - -// my ME - -static MeTa *m; - -// information parameters - -enum InfoParameter {AllInfo, // print all info - MeInfo, // MeInfo must be first! - FunctionalityInfo, - OperatorInfo, - CurrentOperatorInfo, - FacilityLockStateInfo, - FacilityLockCapabilityInfo, - PasswordInfo, - PINInfo, - CLIPInfo, - CallForwardingInfo, - BatteryInfo, - BitErrorInfo, - SCAInfo, - CharSetInfo, - SignalInfo}; // SignalInfo must be last! - -// operation parameters - -// FIXME operations not implemented yet - -// options - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"operation", required_argument, (int*)NULL, 'o'}, - {"device", required_argument, (int*)NULL, 'd'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -// helper function, prints forwarding info - -void printForwardReason(string s, ForwardInfo &info) -{ - cout << s << " " - << (info._active ? _("active ") : _("inactive ")) - << _("number: ") << info._number - << _(" subaddr: ") << info._subAddr - << _(" time: ") << info._time << endl; -} - -// print information - -static void printInfo(InfoParameter ip) -{ - switch (ip) - { - case MeInfo: - { - MEInfo mei = m->getMEInfo(); - cout << _(" Manufacturer: ") << mei._manufacturer << endl - << _(" Model: ") << mei._model << endl - << _(" Revision: ") << mei._revision << endl - << _(" Serial Number: ") << mei._serialNumber << endl; - break; - } - case FunctionalityInfo: - { - try { - int fun; - fun = m->getFunctionalityLevel(); - cout << _(" Functionality Level: ") << fun << endl; - } catch (GsmException &x) { - cout << _(" Functionality Level: ") << _("unsupported") << endl; - } - break; - } - case OperatorInfo: - { - int count = 0; - vector opis = m->getAvailableOPInfo(); - for (vector::iterator i = opis.begin(); i != opis.end(); ++i) - { - cout << " Status: "); - switch (i->_status) - { - case UnknownOPStatus: cout << _("unknown"); break; - case CurrentOPStatus: cout << _("current"); break; - case AvailableOPStatus: cout << _("available"); break; - case ForbiddenOPStatus: cout << _("forbidden"); break; - } - cout << _(" Long name: '") << i->_longName << "' " - << _(" Short name: '") << i->_shortName << "' " - << _(" Numeric name: ") << i->_numericName << endl; - ++count; - } - break; - } - case CurrentOperatorInfo: - { - OPInfo opi = m->getCurrentOPInfo(); - cout << "" - << _(" Long name: '") << opi._longName << "' " - << _(" Short name: '") << opi._shortName << "' " - << _(" Numeric name: ") << opi._numericName - << _(" Mode: "); - switch (opi._mode) - { - case AutomaticOPMode: cout << _("automatic"); break; - case ManualOPMode: cout << _("manual"); break; - case DeregisterOPMode: cout << _("deregister"); break; - case ManualAutomaticOPMode: cout << _("manual/automatic"); break; - } - cout << endl; - break; - } - case FacilityLockStateInfo: - { - int count = 0; - vector fclc = m->getFacilityLockCapabilities(); - for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) - if (*i != "AB" && *i != "AG" && *i != "AC") - { - cout << " '" << *i << "'"; - try - { - if (m->getFacilityLockStatus(*i, VoiceFacility)) - cout << _(" Voice"); - } - catch (GsmException &e) - { - cout << _(" unknown"); - } - try - { - if (m->getFacilityLockStatus(*i, DataFacility)) - cout << _(" Data"); - } - catch (GsmException &e) - { - cout << _(" unknown"); - } - try - { - if (m->getFacilityLockStatus(*i, FaxFacility)) - cout << _(" Fax"); - } - catch (GsmException &e) - { - cout << _(" unknown"); - } - cout << endl; - ++count; - } - break; - } - case FacilityLockCapabilityInfo: - { - cout << " "; - vector fclc = m->getFacilityLockCapabilities(); - for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) - cout << "'" << *i << "' "; - cout << endl; - break; - } - case PasswordInfo: - { - vector pwi = m->getPasswords(); - int count = 0; - for (vector::iterator i = pwi.begin(); i != pwi.end(); ++i) - { - cout << " '" - << i->_facility << "' " << i->_maxPasswdLen << endl; - ++count; - } - break; - } - case PINInfo: - { - cout << " " << m->getPINStatus() << endl; - break; - } - case CLIPInfo: - { - cout << " " << (m->getNetworkCLIP() ? _("on") : _("off")) << endl; - break; - } - case CallForwardingInfo: - { - for (int r = 0; r < 4; ++r) - { - string text; - switch (r) - { - case 0: text = _("UnconditionalReason"); break; - case 1: text = _("MobileBusyReason"); break; - case 2: text = _("NoReplyReason"); break; - case 3: text = _("NotReachableReason"); break; - } - ForwardInfo voice, fax, data; - m->getCallForwardInfo((ForwardReason)r, voice, fax, data); - cout << " " + text + _(" Voice"), voice); - cout << " " + text + _(" Data"), data); - cout << " " + text + _(" Fax"), fax); - } - break; - } - case BatteryInfo: - { - cout << " "; - int bcs = m->getBatteryChargeStatus(); - switch (bcs) - { - case 0: cout << _("0 ME is powered by the battery") << endl; break; - case 1: cout << _("1 ME has a battery connected, but is not powered by it") - << endl; break; - case 2: cout << _("2 ME does not have a battery connected") << endl; break; - case 3: - cout << _("3 Recognized power fault, calls inhibited") << endl; - break; - } - cout << " " << m->getBatteryCharge() << endl; - break; - } - case BitErrorInfo: - { - cout << " " << m->getBitErrorRate() << endl; - break; - } - case SCAInfo: - { - cout << " " << m->getServiceCentreAddress() << endl; - break; - } - case CharSetInfo: - { - cout << " "; - vector cs = m->getSupportedCharSets(); - for (vector::iterator i = cs.begin(); i != cs.end(); ++i) - cout << "'" << *i << "' "; - cout << endl; - cout << " '" << m->getCurrentCharSet() << "'" << endl; - break; - } - case SignalInfo: - { - cout << " " << m->getSignalStrength() << endl; - break; - } - default: - assert(0); - break; - } -} - -// convert facility class string of the form "", "all", or any combination -// of "v" (voice), "d" (data), or "f" (fax) to numeric form - -FacilityClass strToFacilityClass(string facilityClassS) -{ - facilityClassS = lowercase(facilityClassS); - FacilityClass facilityClass = (FacilityClass)0; - if (facilityClassS == "all" || facilityClassS == "") - return (FacilityClass)ALL_FACILITIES; - - // OR in facility class bits - for (unsigned int i = 0; i < facilityClassS.length(); ++i) - if (facilityClassS[i] == 'v') - facilityClass = (FacilityClass)(facilityClass | VoiceFacility); - else if (facilityClassS[i] == 'd') - facilityClass = (FacilityClass)(facilityClass | DataFacility); - else if (facilityClassS[i] == 'f') - facilityClass = (FacilityClass)(facilityClass | FaxFacility); - else - throw GsmException( - stringPrintf(_("unknown facility class parameter '%c'"), - facilityClassS[i]), ParameterError); - - return facilityClass; -} - -// check if argc - optind is in range min..max -// throw exception otherwise - -void checkParamCount(int optind, int argc, int min, int max) -{ - int paramCount = argc - optind; - if (paramCount < min) - throw GsmException(stringPrintf(_("not enough parameters, minimum number " - "of parameters is %d"), min), - ParameterError); - else if (paramCount > max) - throw GsmException(stringPrintf(_("too many parameters, maximum number " - "of parameters is %d"), max), - ParameterError); -} - -// *** main program - -int main(int argc, char *argv[]) -{ - try - { - // handle command line options - string device = "/dev/mobilephone"; - string operation; - string baudrate; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "I:o:d:b:hvX", longOpts, &dummy)) - != -1) - switch (opt) - { - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 'd': - device = optarg; - break; - case 'o': - operation = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-b baudrate][-d device][-h]" - "[-I init string][-o operation]\n" - " [-v][-X]{parameters}") << endl - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -d, --device sets the destination device to " - "connect to") << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl - << _(" -o, --operation operation to perform on the mobile \n" - " phone with the specified parameters") - << endl - << _(" -v, --version prints version and exits") << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << endl - << _(" parameters parameters to use for the operation\n" - " (if an operation is given) or\n" - " a specification which kind of\n" - " information to read from the mobile " - "phone") - << endl << endl - << _("Refer to gsmctl(1) for details on the available parameters" - " and operations.") - << endl << endl; - exit(0); - break; - case '?': - throw GsmException(_("unknown option"), ParameterError); - break; - } - - // open the port and ME/TA - m = new MeTa(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (device, - baudrate == "" ? - DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), - initString, swHandshake)); - - if (operation == "") - { // process info parameters - for (int i = optind; i < argc; ++i) - { - string param = lowercase(argv[i]); - if (param == "all") - for (int ip = MeInfo; ip <= SignalInfo; ++ip) - printInfo((InfoParameter)ip); - else if (param == "me") - printInfo(MeInfo); - else if (param == "fun") - printInfo(FunctionalityInfo); - else if (param == "op") - printInfo(OperatorInfo); - else if (param == "currop") - printInfo(CurrentOperatorInfo); - else if (param == "flstat") - printInfo(FacilityLockStateInfo); - else if (param == "flcap") - printInfo(FacilityLockCapabilityInfo); - else if (param == "pw") - printInfo(PasswordInfo); - else if (param == "pin") - printInfo(PINInfo); - else if (param == "clip") - printInfo(CLIPInfo); - else if (param == "forw") - printInfo(CallForwardingInfo); - else if (param == "batt") - printInfo(BatteryInfo); - else if (param == "biterr") - printInfo(BitErrorInfo); - else if (param == "sig") - printInfo(SignalInfo); - else if (param == "sca") - printInfo(SCAInfo); - else if (param == "cset") - printInfo(CharSetInfo); - else - throw GsmException( - stringPrintf(_("unknown information parameter '%s'"), - param.c_str()), - ParameterError); - } - } - else - { // process operation - operation = lowercase(operation); - if (operation == "dial") - { - // dial: number - checkParamCount(optind, argc, 1, 1); - - m->dial(argv[optind]); - - // wait for keypress from stdin - char c; - read(1, &c, 1); - } - else if (operation == "on") - { - m->setFunctionalityLevel(1); - } - else if (operation == "off") - { - m->setFunctionalityLevel(0); - } - else if (operation == "pin") - { - // pin: PIN - checkParamCount(optind, argc, 1, 1); - - m->setPIN(argv[optind]); - } - else if (operation == "setop") - { - // setop: opmode numeric FIXME allow long and numeric too - checkParamCount(optind, argc, 2, 2); - string opmodeS = lowercase(argv[optind]); - OPModes opmode; - if (opmodeS == "automatic") - opmode = AutomaticOPMode; - else if (opmodeS == "manual") - opmode = ManualOPMode; - else if (opmodeS == "deregister") - opmode = DeregisterOPMode; - else if (opmodeS == "manualautomatic") - opmode = ManualAutomaticOPMode; - else - throw GsmException(stringPrintf(_("unknown opmode parameter '%s'"), - opmodeS.c_str()), ParameterError); - - m->setCurrentOPInfo(opmode, "" , "", checkNumber(argv[optind + 1])); - } - else if (operation == "lock") - { - // lock: facility [facilityclass] [passwd] - checkParamCount(optind, argc, 1, 3); - string passwd = (argc - optind == 3) ? - (string)argv[optind + 2] : (string)""; - - m->lockFacility(argv[optind], - (argc - optind >= 2) ? - strToFacilityClass(argv[optind + 1]) : - (FacilityClass)ALL_FACILITIES, - passwd); - } - else if (operation == "unlock") - { - // unlock: facility [facilityclass] [passwd] - checkParamCount(optind, argc, 1, 3); - string passwd = argc - optind == 3 ? argv[optind + 2] : ""; - - m->unlockFacility(argv[optind], - (argc - optind >= 2) ? - strToFacilityClass(argv[optind + 1]) : - (FacilityClass)ALL_FACILITIES, - passwd); - } - else if (operation == "setpw") - { - // set password: facility oldpasswd newpasswd - checkParamCount(optind, argc, 1, 3); - string oldPasswd = argc - optind >= 2 ? argv[optind + 1] : ""; - string newPasswd = argc - optind == 3 ? argv[optind + 2] : ""; - - m->setPassword(argv[optind], oldPasswd, newPasswd); - } - else if (operation == "forw") - { - // call forwarding: mode reason number [facilityclass] [forwardtime] - checkParamCount(optind, argc, 2, 5); - - // get optional parameters facility class and forwardtime - int forwardTime = argc - optind == 5 ? checkNumber(argv[optind + 4]) : - NOT_SET; - FacilityClass facilityClass = - argc - optind >= 4 ? strToFacilityClass(argv[optind + 3]) : - (FacilityClass)ALL_FACILITIES; - - // get forward reason - string reasonS = lowercase(argv[optind + 1]); - ForwardReason reason; - if (reasonS == "unconditional") - reason = UnconditionalReason; - else if (reasonS == "mobilebusy") - reason = MobileBusyReason; - else if (reasonS == "noreply") - reason = NoReplyReason; - else if (reasonS == "notreachable") - reason = NotReachableReason; - else if (reasonS == "all") - reason = AllReasons; - else if (reasonS == "allconditional") - reason = AllConditionalReasons; - else - throw GsmException( - stringPrintf(_("unknown forward reason parameter '%s'"), - reasonS.c_str()), ParameterError); - - // get mode - string modeS = lowercase(argv[optind]); - ForwardMode mode; - if (modeS == "disable") - mode = DisableMode; - else if (modeS == "enable") - mode = EnableMode; - else if (modeS == "register") - mode = RegistrationMode; - else if (modeS == "erase") - mode = ErasureMode; - else - throw GsmException( - stringPrintf(_("unknown forward mode parameter '%s'"), - modeS.c_str()), ParameterError); - - m->setCallForwarding(reason, mode, - (argc - optind >= 3) ? argv[optind + 2] : "", - "", // subaddr - facilityClass, forwardTime); - } - else if (operation == "setsca") - { - // set sca: number - checkParamCount(optind, argc, 1, 1); - m->setServiceCentreAddress(argv[optind]); - } - else if (operation == "cset") - { - // set charset: string - checkParamCount(optind, argc, 1, 1); - m->setCharSet(argv[optind]); - } - else - throw GsmException(stringPrintf(_("unknown operation '%s'"), - operation.c_str()), ParameterError); - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc deleted file mode 100644 index 6196b717c2..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc +++ /dev/null @@ -1,507 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmpb.cc -// * -// * Purpose: phonebook management program -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 24.6.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"phonebook", required_argument, (int*)NULL, 'p'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"destination", required_argument, (int*)NULL, 'd'}, - {"source", required_argument, (int*)NULL, 's'}, - {"destination-backend", required_argument, (int*)NULL, 'D'}, - {"source-backend", required_argument, (int*)NULL, 'S'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"charset", required_argument, (int*)NULL, 't'}, - {"copy", no_argument, (int*)NULL, 'c'}, - {"synchronize", no_argument, (int*)NULL, 'y'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {"verbose", no_argument, (int*)NULL, 'V'}, - {"indexed", no_argument, (int*)NULL, 'i'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -// insert those entries from sourcePhonebook into destPhonebook -// that are not already present in destPhonebook - -void insertNotPresent(SortedPhonebookRef sourcePhonebook, - SortedPhonebookRef destPhonebook, - bool indexed, bool verbose) -{ - for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); - i != sourcePhonebook->end(); ++i) - { - pair range; - if (indexed) - { - int index = i->index(); - range = destPhonebook->equal_range(index); - } - else - { - string text = i->text(); - range = destPhonebook->equal_range(text); - } - - // do nothing if the entry is already present in the destination - bool alreadyPresent = false; - for (SortedPhonebookBase::iterator j = range.first; - j != range.second; ++j) - { - i->setUseIndex(indexed); - if (i->telephone() == j->telephone()) - { - alreadyPresent = true; - break; - } - } - // ... else insert it - if (! alreadyPresent) - { - if (verbose) - { - cout << stringPrintf(_("inserting '%s' tel# %s"), - i->text().c_str(), i->telephone().c_str()); - if (indexed) - cout << stringPrintf(_(" (index #%d)"), i->index()); - cout << endl; - } - i->setUseIndex(indexed); - destPhonebook->insert(*i); // insert - } - } -} - -// update those entries in destPhonebook, that -// - have the same name as one entry in destPhonebook -// - but have a different telephone number -// this is only done if the name in question is unique in the destPhonebook -// the case of several entries having the same in the sourcePhonebook -// is handled - only the first is considered for updating - -void updateEntries(SortedPhonebookRef sourcePhonebook, - SortedPhonebookRef destPhonebook, - bool verbose) -{ - bool firstLoop = true; - string lastText; - - for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); - i != sourcePhonebook->end(); ++i) - { - string text = i->text(); - if (! firstLoop && text != lastText) - { - pair range = - destPhonebook->equal_range(text); - - SortedPhonebookBase::iterator first = range.first; - if (first != destPhonebook->end() && range.second == ++first) - { // just one text in the destPhonebook - if (! (*range.first == *i)) // overwrite if different in destination - { - if (verbose) - cout << stringPrintf(_("updating '%s' tel# %s to new tel# %s"), - range.first->text().c_str(), - range.first->telephone().c_str(), - i->telephone().c_str()) - << endl; - - *range.first = *i; - } - } - lastText = text; - } - firstLoop = false; - } -} - -// the same but for indexed phonebooks - -void updateEntriesIndexed(SortedPhonebookRef sourcePhonebook, - SortedPhonebookRef destPhonebook, - bool verbose) -{ - for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); - i != sourcePhonebook->end(); ++i) - { - int index = i->index(); - - SortedPhonebookBase::iterator j = destPhonebook->find(index); - - if (j != destPhonebook->end()) - { // index present in the destPhonebook - if (! (*j == *i)) // overwrite if different in destination - { - if (verbose) - cout << stringPrintf(_("updating '%s' tel# %s to new tel# %s" - "(index %d)"), - j->text().c_str(), - j->telephone().c_str(), - i->telephone().c_str(), i->index()) - << endl; - - *j = *i; - } - } - } -} - -// delete those entries from destPhonebook, that are not present -// in sourcePhonebook - -void deleteNotPresent(SortedPhonebookRef sourcePhonebook, - SortedPhonebookRef destPhonebook, - bool indexed, bool verbose) -{ - for (SortedPhonebookBase::iterator i = destPhonebook->begin(); - i != destPhonebook->end(); ++i) - { - pair range; - if (indexed) - { - int index = i->index(); - range = sourcePhonebook->equal_range(index); - } - else - { - string text = i->text(); - range = sourcePhonebook->equal_range(text); - } - - bool found = false; - for (SortedPhonebookBase::iterator j = range.first; - j != range.second; ++j) - { - i->setUseIndex(indexed); - if (j->telephone() == i->telephone()) - { - found = true; - break; - } - } - if (! found) - { - if (verbose) - { - cout << stringPrintf(_("deleting '%s' tel# %s"), - i->text().c_str(), i->telephone().c_str()); - if (indexed) - cout << stringPrintf(_(" (index #%d)"), i->index()); - cout << endl; - } - destPhonebook->erase(i); -#ifdef BUGGY_MAP_ERASE - deleteNotPresent(sourcePhonebook, destPhonebook, indexed, verbose); - return; -#endif - } - } -} - -// *** main program - -int main(int argc, char *argv[]) -{ - try - { - // handle command line options - string destination; - string source; - string destinationBackend; - string sourceBackend; - string baudrate; - bool doSynchronize = true; - string phonebook; - SortedPhonebookRef sourcePhonebook, destPhonebook; - bool verbose = false; - bool indexed = false; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - string charSet; - Ref sourceMeTa, destMeTa; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "I:p:s:d:b:cyhvViD:S:Xt:", longOpts, - &dummy)) - != -1) - switch (opt) - { - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 'V': - verbose = true; - break; - case 'p': - phonebook = optarg; - break; - case 'd': - destination = optarg; - break; - case 's': - source = optarg; - break; - case 'D': - destinationBackend = optarg; - break; - case 'S': - sourceBackend = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 't': - charSet = optarg; - break; - case 'c': - doSynchronize = false; - break; - case 'i': - indexed = true; - break; - case 'y': - doSynchronize = true; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-b baudrate][-c][-d device or file][-h]" - "[-I init string]\n" - " [-p phonebook name][-s device or file]" - "[-t charset][-v]" - "[-V][-y][-X]") << endl - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -c, --copy copy source entries to destination") - << endl - << _(" -d, --destination sets the destination device to " - "connect \n" - " to, or the file to write") << endl - << _(" -D, --destination-backend sets the destination backend") - << endl - << _(" -h, --help prints this message") << endl - << _(" -i, --index takes index positions into account") - << endl - << _(" -I, --init device AT init sequence") << endl - << _(" -p, --phonebook name of phonebook to use") << endl - << _(" -s, --source sets the source device to connect to,\n" - " or the file to read") << endl - << _(" -t, --charset sets the character set to use for\n" - " phonebook entries") << endl - << _(" -S, --source-backend sets the source backend") - << endl - << _(" -v, --version prints version and exits") << endl - << _(" -V, --verbose print detailed progress messages") - << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << _(" -y, --synchronize synchronize destination with source\n" - " entries (destination is overwritten)\n" - " (see gsmpb(1) for details)") - << endl << endl; - exit(0); - break; - case '?': - throw GsmException(_("unknown option"), ParameterError); - break; - } - - // check if all parameters all present - if (destination == "" || source == "") - throw GsmException(_("both source and destination must be given"), - ParameterError); - - // start accessing source mobile phone or file - if (sourceBackend != "") - sourcePhonebook = - CustomPhonebookRegistry::createPhonebook(sourceBackend, source); - else if (source == "-") - sourcePhonebook = new SortedPhonebook(true, indexed); - else if (isFile(source)) - sourcePhonebook = new SortedPhonebook(source, indexed); - else - { - if (phonebook == "") - throw GsmException(_("phonebook name must be given"), ParameterError); - - sourceMeTa = new MeTa(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (source, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), initString, - swHandshake)); - if (charSet != "") - sourceMeTa->setCharSet(charSet); - sourcePhonebook = - new SortedPhonebook(sourceMeTa->getPhonebook(phonebook)); - } - - // make sure destination.c_str file exists - if (destination != "") - { - try - { - ofstream f(destination.c_str(), ios::out | ios::app); - } - catch (exception) - { - } - } - - // start accessing destination mobile phone or file - if (destinationBackend != "") - destPhonebook = - CustomPhonebookRegistry::createPhonebook(destinationBackend, - destination); - else if (destination == "-") - destPhonebook = new SortedPhonebook(false, indexed); - else if (isFile(destination)) - destPhonebook = new SortedPhonebook(destination, indexed); - else - { - if (phonebook == "") - throw GsmException(_("phonebook name must be given"), ParameterError); - - destMeTa = new MeTa(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (destination, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), initString, - swHandshake)); - if (charSet != "") - destMeTa->setCharSet(charSet); - PhonebookRef destPb = destMeTa->getPhonebook(phonebook); - - // check maximum lengths of source text and phonenumber when writing to - // mobile phone - unsigned int maxTextLen = destPb->getMaxTextLen(); - unsigned int maxTelLen = destPb->getMaxTelephoneLen(); - - for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); - i != sourcePhonebook->end(); ++i) - if (i->text().length() > maxTextLen) - throw GsmException( - stringPrintf(_("text '%s' is too large to fit into destination " - "(maximum size %d characters)"), - i->text().c_str(), maxTextLen), - ParameterError); - else if (i->telephone().length() > maxTelLen) - throw GsmException( - stringPrintf(_("phone number '%s' is too large to fit into " - "destination (maximum size %d characters)"), - i->telephone().c_str(), maxTelLen), - ParameterError); - - // read phonebook - destPhonebook = new SortedPhonebook(destPb); - } - - // now do the actual work - if (doSynchronize) - { // synchronizing - if (indexed) - { - sourcePhonebook->setSortOrder(ByIndex); - destPhonebook->setSortOrder(ByIndex); - // for an explanation see below - updateEntriesIndexed(sourcePhonebook, destPhonebook, verbose); - deleteNotPresent(sourcePhonebook, destPhonebook, true, verbose); - insertNotPresent(sourcePhonebook, destPhonebook, true, verbose); - } - else - { - sourcePhonebook->setSortOrder(ByText); - destPhonebook->setSortOrder(ByText); - // the following is done to avoid superfluous writes to the TA - // (that takes time) and keep updated (ie. telephone number changed) - // entries at the same place - // 1. update entries in place where just the number changed - updateEntries(sourcePhonebook, destPhonebook, verbose); - // 2. delete those that are not present anymore - deleteNotPresent(sourcePhonebook, destPhonebook, false, verbose); - // 3. insert the new ones - insertNotPresent(sourcePhonebook, destPhonebook, false, verbose); - } - } - else - { // copying - destPhonebook->clear(); - for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); - i != sourcePhonebook->end(); ++i) - { - if (verbose) - { - cout << stringPrintf(_("inserting '%s' tel# %s"), - i->text().c_str(), i->telephone().c_str()); - if (indexed) - cout << stringPrintf(_(" (index #%d)"), i->index()); - cout << endl; - } - destPhonebook->insert(*i); - } - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc deleted file mode 100644 index f6418842ac..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc +++ /dev/null @@ -1,257 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmsendsms.cc -// * -// * Purpose: GSM sms send program -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 16.7.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// options - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"requeststat", no_argument, (int*)NULL, 'r'}, - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"sca", required_argument, (int*)NULL, 'C'}, - {"device", required_argument, (int*)NULL, 'd'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"concatenate", required_argument, (int*)NULL, 'c'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"test", no_argument, (int*)NULL, 't'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -// convert /r and /n to CR and LF - -static string unescapeString(char *line) -{ - string result; - bool escaped = false; - int index = 0; - - while (line[index] != 0 && - line[index] != CR && line[index] != LF) - { - if (escaped) - { - escaped = false; - if (line[index] == 'r') - result += CR; - else if (line[index] == 'n') - result += LF; - else if (line[index] == '\\') - result += '\\'; - else - result += line[index]; - } - else - if (line[index] == '\\') - escaped = true; - else - result += line[index]; - - ++index; - } - return result; -} - -// *** main program - -int main(int argc, char *argv[]) -{ - try - { - // handle command line options - string device = "/dev/mobilephone"; - bool test = false; - string baudrate; - Ref at; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - bool requestStatusReport = false; - // service centre address (set on command line) - string serviceCentreAddress; - MeTa *m = NULL; - string concatenatedMessageIdStr; - int concatenatedMessageId = -1; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "c:C:I:d:b:thvXr", longOpts, &dummy)) - != -1) - switch (opt) - { - case 'c': - concatenatedMessageIdStr = optarg; - break; - case 'C': - serviceCentreAddress = optarg; - break; - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 'd': - device = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 't': - test = true; - break; - case 'r': - requestStatusReport = true; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-b baudrate][-c concatenatedID]" - "[-C sca][-d device][-h][-I init string]\n" - " [-t][-v][-X] phonenumber [text]") << endl - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -c, --concatenate ID for concatenated SMS messages") - << endl - << _(" -C, --sca SMS service centre address") << endl - << _(" -d, --device sets the destination device to connect " - "to") << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl - << _(" -r, --requeststat request SMS status report") << endl - << _(" -t, --test convert text to GSM alphabet and " - "vice\n" - " versa, no SMS message is sent") << endl - << _(" -v, --version prints version and exits") - << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << endl - << _(" phonenumber recipient's phone number") << endl - << _(" text optional text of the SMS message\n" - " if omitted: read from stdin") - << endl << endl; - exit(0); - break; - case '?': - throw GsmException(_("unknown option"), ParameterError); - break; - } - - if (! test) - { - // open the port and ME/TA - Ref port = new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (device, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), - initString, swHandshake); - // switch message service level to 1 - // this enables acknowledgement PDUs - m = new MeTa(port); - m->setMessageService(1); - - at = new GsmAt(*m); - } - - // check parameters - if (optind == argc) - throw GsmException(_("phone number and text missing"), ParameterError); - - if (optind + 2 < argc) - throw GsmException(_("more than two parameters given"), ParameterError); - - if (concatenatedMessageIdStr != "") - concatenatedMessageId = checkNumber(concatenatedMessageIdStr); - - // get phone number - string phoneNumber = argv[optind]; - - // get text - string text; - if (optind + 1 == argc) - { // read from stdin - char s[1000]; - cin.get(s, 1000); - text = unescapeString(s); - if (text.length() > 160) - throw GsmException(_("text is larger than 160 characters"), - ParameterError); - } - else - text = argv[optind + 1]; - - if (test) - cout << gsmToLatin1(latin1ToGsm(text)) << endl; - else - { - // send SMS - Ref submitSMS = new SMSSubmitMessage(); - // set service centre address in new submit PDU if requested by user - if (serviceCentreAddress != "") - { - Address sca(serviceCentreAddress); - submitSMS->setServiceCentreAddress(sca); - } - submitSMS->setStatusReportRequest(requestStatusReport); - Address destAddr(phoneNumber); - submitSMS->setDestinationAddress(destAddr); - if (concatenatedMessageId == -1) - m->sendSMSs(submitSMS, text, true); - else - m->sendSMSs(submitSMS, text, false, concatenatedMessageId); - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc deleted file mode 100644 index ffb2db0739..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc +++ /dev/null @@ -1,723 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmsmsd.cc -// * -// * Purpose: SMS receiver daemon -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 5.6.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include - -#ifdef WIN32 -#include -#include -#include -#define popen _popen -#define pclose _pclose -#else -#include -#include -#include -#include -#endif -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"requeststat", no_argument, (int*)NULL, 'r'}, - {"direct", no_argument, (int*)NULL, 'D'}, - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"store", required_argument, (int*)NULL, 't'}, - {"device", required_argument, (int*)NULL, 'd'}, - {"spool", required_argument, (int*)NULL, 's'}, - {"sent", required_argument, (int*)NULL, 'S'}, - {"failed", required_argument, (int*)NULL, 'F'}, - {"priorities", required_argument, (int*)NULL, 'P'}, -#ifndef WIN32 - {"syslog", no_argument, (int*)NULL, 'L'}, -#endif - {"sca", required_argument, (int*)NULL, 'C'}, - {"flush", no_argument, (int*)NULL, 'f'}, - {"concatenate", required_argument, (int*)NULL, 'c'}, - {"action", required_argument, (int*)NULL, 'a'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -// my ME - -static MeTa *me = NULL; -string receiveStoreName; // store name for received SMSs - -// service centre address (set on command line) - -static string serviceCentreAddress; - -// ID if concatenated messages should be sent - -static int concatenatedMessageId = -1; - -// signal handler for terminate signal - -bool terminateSent = false; - -void terminateHandler(int signum) -{ - terminateSent = true; -} - -// local class to handle SMS events - -struct IncomingMessage -{ - // used if new message is put into store - int _index; // -1 means message want send directly - string _storeName; - // used if SMS message was sent directly to TA - SMSMessageRef _newSMSMessage; - // used if CB message was sent directly to TA - CBMessageRef _newCBMessage; - // used in both cases - GsmEvent::SMSMessageType _messageType; - - IncomingMessage() : _index(-1) {} -}; - -vector newMessages; - -class EventHandler : public GsmEvent -{ -public: - // inherited from GsmEvent - void SMSReception(SMSMessageRef newMessage, - SMSMessageType messageType); - void CBReception(CBMessageRef newMessage); - void SMSReceptionIndication(string storeName, unsigned int index, - SMSMessageType messageType); - - virtual ~EventHandler() {} -}; - -void EventHandler::SMSReception(SMSMessageRef newMessage, - SMSMessageType messageType) -{ - IncomingMessage m; - m._messageType = messageType; - m._newSMSMessage = newMessage; - newMessages.push_back(m); -} - -void EventHandler::CBReception(CBMessageRef newMessage) -{ - IncomingMessage m; - m._messageType = GsmEvent::CellBroadcastSMS; - m._newCBMessage = newMessage; - newMessages.push_back(m); -} - -void EventHandler::SMSReceptionIndication(string storeName, unsigned int index, - SMSMessageType messageType) -{ - IncomingMessage m; - m._index = index; - - if (receiveStoreName != "" && ( storeName == "MT" || storeName == "mt")) - m._storeName = receiveStoreName; - else - m._storeName = storeName; - - m._messageType = messageType; - newMessages.push_back(m); -} - -// execute action on string - -void doAction(string action, string result) -{ - if (action != "") - { - FILE *fd = popen(action.c_str(), "w"); - if (fd == NULL) - throw GsmException(stringPrintf(_("could not execute '%s'"), - action.c_str()), OSError); - fputs(result.c_str(), fd); - if (ferror(fd)) - throw GsmException(stringPrintf(_("error writing to '%s'"), - action.c_str()), OSError); - pclose(fd); - } - else - // default if no action: output on stdout - cout << result << endl; -} - -// send all SMS messages in spool dir - -bool requestStatusReport = false; - -void sendSMS(string spoolDirBase, string sentDirBase, string failedDirBase, - unsigned int priority, bool enableSyslog, Ref at) -{ - string spoolDir = spoolDirBase; - string sentDir = sentDirBase; - string failedDir = failedDirBase; - if ( priority >= 1 ) - { - spoolDir = spoolDirBase + stringPrintf(_("%d"),priority); - sentDir = sentDirBase + stringPrintf(_("%d"),priority); - failedDir = failedDirBase + stringPrintf(_("%d"),priority); - } - if ( priority > 1 ) - sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); - if (spoolDirBase != "") - { - // look into spoolDir for any outgoing SMS that should be sent -#ifdef WIN32 - struct _finddata_t fileInfo; - long fileHandle; - string pattern = spoolDir + "\\*"; - fileHandle = _findfirst(pattern.c_str(), &fileInfo); - bool moreFiles = fileHandle != -1L; -#else - DIR *dir = opendir(spoolDir.c_str()); - if (dir == (DIR*)NULL) - throw GsmException( - stringPrintf(_("error when calling opendir('%s')" - "(errno: %d/%s)"), - spoolDir.c_str(), errno, strerror(errno)), - OSError); -#endif - -#ifdef WIN32 - while (moreFiles) - { - if (strcmp(fileInfo.name, ".") != 0 && - strcmp(fileInfo.name, "..") != 0) -#else - struct dirent *entry; - while ((entry = readdir(dir)) != (struct dirent*)NULL) - if (strcmp(entry->d_name, ".") != 0 && - strcmp(entry->d_name, "..") != 0) -#endif - { - if ( priority > 1 ) - sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); - // read in file - // the first line is interpreted as the phone number - // the rest is the message -#ifdef WIN32 - string filename = spoolDir + "\\" + fileInfo.name; -#else - string filename = spoolDir + "/" + entry->d_name; -#endif - ifstream ifs(filename.c_str()); - if (! ifs) -#ifndef WIN32 - if (enableSyslog) - { - syslog(LOG_WARNING, "Could not open SMS spool file %s", - filename.c_str()); - if (failedDirBase != "") { - string failedfilename = failedDir + "/" + entry->d_name; - rename(filename.c_str(),failedfilename.c_str()); - } - continue; - } - else -#endif - throw GsmException( - stringPrintf(_("count not open SMS spool file %s"), - filename.c_str()), ParameterError); - char phoneBuf[1001]; - ifs.getline(phoneBuf, 1000); - for(int i=0;i<1000;i++) - if(phoneBuf[i]=='\t' || phoneBuf[i]==0) - { // ignore everything after a in the phone number - phoneBuf[i]=0; - break; - } - string text; - while (! ifs.eof()) - { - char c; - ifs.get(c); - text += c; - } - ifs.close(); - - // remove trailing newline/linefeed - while (text[text.length() - 1] == '\n' || - text[text.length() - 1] == '\r') - text = text.substr(0, text.length() - 1); - - // send the message - string phoneNumber(phoneBuf); - Ref submitSMS = new SMSSubmitMessage(); - // set service centre address in new submit PDU if requested by user - if (serviceCentreAddress != "") - { - Address sca(serviceCentreAddress); - submitSMS->setServiceCentreAddress(sca); - } - submitSMS->setStatusReportRequest(requestStatusReport); - Address destAddr(phoneNumber); - submitSMS->setDestinationAddress(destAddr); - try - { - if (concatenatedMessageId == -1) - me->sendSMSs(submitSMS, text, true); - else - { - // maximum for concatenatedMessageId is 255 - if (concatenatedMessageId > 256) - concatenatedMessageId = 0; - me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); - } -#ifndef WIN32 - if (enableSyslog) - syslog(LOG_NOTICE, "Sent SMS to %s from file %s", phoneBuf, filename.c_str()); -#endif - if (sentDirBase != "") { -#ifdef WIN32 - string sentfilename = sentDir + "\\" + fileInfo.name; -#else - string sentfilename = sentDir + "/" + entry->d_name; -#endif - rename(filename.c_str(),sentfilename.c_str()); - } else { - unlink(filename.c_str()); - } - } - catch (GsmException &me) - { -#ifndef WIN32 - if (enableSyslog) - syslog(LOG_WARNING, "Failed sending SMS to %s from file %s: %s", phoneBuf, - filename.c_str(), me.what()); - else -#endif - cerr << "Failed sending SMS to " << phoneBuf << " from " - << filename << ": " << me.what() << endl; - if (failedDirBase != "") { -#ifdef WIN32 - string failedfilename = failedDir + "\\" + fileInfo.name; -#else - string failedfilename = failedDir + "/" + entry->d_name; -#endif - rename(filename.c_str(),failedfilename.c_str()); - } - } -#ifdef WIN32 - } - moreFiles = _findnext(fileHandle, &fileInfo) == 0; -#endif - } -#ifdef WIN32 - _findclose(fileHandle); -#else - closedir(dir); -#endif - } -} - -#ifndef WIN32 -void syslogExit(int exitcode, int *dummy) -{ - syslog(LOG_NOTICE, "exited (exit %d)",exitcode); -} -#endif - -// *** main program - -int main(int argc, char *argv[]) -{ - bool enableSyslog = false; - try - { - string device = "/dev/mobilephone"; - string action; - string baudrate; - bool enableSMS = true; - bool enableCB = true; - bool enableStat = true; - bool flushSMS = false; - bool onlyReceptionIndication = true; - string spoolDir; - string sentDir = ""; - string failedDir = ""; - unsigned int priorities = 0; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - string concatenatedMessageIdStr; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:S:F:P:LXDr", - longOpts, &dummy)) != -1) - switch (opt) - { - case 'c': - concatenatedMessageIdStr = optarg; - break; - case 'r': - requestStatusReport = true; - break; - case 'D': - onlyReceptionIndication = false; - break; - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 't': - receiveStoreName = optarg; - break; - case 'd': - device = optarg; - break; - case 'C': - serviceCentreAddress = optarg; - break; - case 's': - spoolDir = optarg; - break; - case 'L': - enableSyslog = true; - break; - case 'S': - sentDir = optarg; - break; - case 'F': - failedDir = optarg; - break; - case 'P': - priorities = abs(atoi(optarg)); - break; - case 'f': - flushSMS = true; - break; - case 'a': - action = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-a action][-b baudrate][-C sca][-d device]" - "[-f][-h][-I init string]\n" - " [-s spool dir][-t][-v]{sms_type}") - << endl << endl - << _(" -a, --action the action to execute when an SMS " - "arrives\n" - " (SMS is send to stdin of action)") - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -c, --concatenate start ID for concatenated SMS messages") - << endl - << _(" -C, --sca SMS service centre address") << endl - << _(" -d, --device sets the device to connect to") << endl - << _(" -D, --direct enable direct routing of SMSs") << endl - << _(" -f, --flush flush SMS from store") << endl - << _(" -F, --failed directory to move failed SMS to,") << endl - << _(" if unset, the SMS will be deleted") << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl -#ifndef WIN32 - << _(" -L, --syslog log errors and information to syslog") - << endl -#endif - << _(" -P, --priorities number of priority levels to use,") << endl - << _(" (default: none)") << endl - << _(" -r, --requeststat request SMS status report") << endl - << _(" -s, --spool spool directory for outgoing SMS") - << endl - << _(" -S, --sent directory to move sent SMS to,") << endl - << _(" if unset, the SMS will be deleted") << endl - << _(" -t, --store name of SMS store to use for flush\n" - " and/or temporary SMS storage") << endl - << endl - << _(" -v, --version prints version and exits") << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << endl - << _(" sms_type may be any combination of") << endl << endl - << _(" sms, no_sms controls reception of normal SMS") - << endl - << _(" cb, no_cb controls reception of cell broadcast" - " messages") << endl - << _(" stat, no_stat controls reception of status reports") - << endl << endl - << _(" default is \"sms cb stat\"") << endl << endl - << _("If no action is given, the SMS is printed to stdout") - << endl << endl - << _("If -P is given, it activates the priority system and sets the") << endl - << _("number or levels to use. For every level, there must be directories") << endl - << _("named +.") << endl - << _("For example \"-P 2 -s queue -S send -F failed\" needs the following") <getSMSStore(receiveStoreName); - - for (SMSStore::iterator s = store->begin(); s != store->end(); ++s) - if (! s->empty()) - { - string result = _("Type of message: "); - switch (s->message()->messageType()) - { - case SMSMessage::SMS_DELIVER: - result += _("SMS message\n"); - break; - case SMSMessage::SMS_SUBMIT_REPORT: - result += _("submit report message\n"); - break; - case SMSMessage::SMS_STATUS_REPORT: - result += _("status report message\n"); - break; - } - result += s->message()->toString(); - doAction(action, result); - store->erase(s); - } - } - - // set default SMS store if -t option was given or - // read from ME otherwise - if (receiveStoreName == "") - { - string dummy1, dummy2; - me->getSMSStore(dummy1, dummy2, receiveStoreName ); - } - else - me->setSMSStore(receiveStoreName, 3); - - // switch message service level to 1 - // this enables SMS routing to TA - me->setMessageService(1); - - // switch on SMS routing - me->setSMSRoutingToTA(enableSMS, enableCB, enableStat, - onlyReceptionIndication); - - // register event handler to handle routed SMSs, CBMs, and status reports - me->setEventHandler(new EventHandler()); - - // wait for new messages - bool exitScheduled = false; - while (1) - { -#ifdef WIN32 - ::timeval timeoutVal; - timeoutVal.tv_sec = 5; - timeoutVal.tv_usec = 0; - me->waitEvent((gsmlib::timeval *)&timeoutVal); -#else - struct timeval timeoutVal; - timeoutVal.tv_sec = 5; - timeoutVal.tv_usec = 0; - me->waitEvent(&timeoutVal); -#endif - // if it returns, there was an event or a timeout - while (newMessages.size() > 0) - { - // get first new message and remove it from the vector - SMSMessageRef newSMSMessage = newMessages.begin()->_newSMSMessage; - CBMessageRef newCBMessage = newMessages.begin()->_newCBMessage; - GsmEvent::SMSMessageType messageType = - newMessages.begin()->_messageType; - int index = newMessages.begin()->_index; - string storeName = newMessages.begin()->_storeName; - newMessages.erase(newMessages.begin()); - - // process the new message - string result = _("Type of message: "); - switch (messageType) - { - case GsmEvent::NormalSMS: - result += _("SMS message\n"); - break; - case GsmEvent::CellBroadcastSMS: - result += _("cell broadcast message\n"); - break; - case GsmEvent::StatusReportSMS: - result += _("status report message\n"); - break; - } - if (! newSMSMessage.isnull()) - result += newSMSMessage->toString(); - else if (! newCBMessage.isnull()) - result += newCBMessage->toString(); - else - { - SMSStoreRef store = me->getSMSStore(storeName); - store->setCaching(false); - - if (messageType == GsmEvent::CellBroadcastSMS) - result += (*store.getptr())[index].cbMessage()->toString(); - else - result += (*store.getptr())[index].message()->toString(); - - store->erase(store->begin() + index); - } - - // call the action - doAction(action, result); - } - - // if no new SMS came in and program exit was scheduled, then exit - if (exitScheduled) - exit(0); - - // handle terminate signal - if (terminateSent) - { - exitScheduled = true; - // switch off SMS routing - try - { - me->setSMSRoutingToTA(false, false, false); - } - catch (GsmException &ge) - { - // some phones (e.g. Motorola Timeport 260) don't allow to switch - // off SMS routing which results in an error. Just ignore this. - } - // the AT sequences involved in switching of SMS routing - // may yield more SMS events, so go round the loop one more time - } - - // send spooled SMS - if (! terminateSent) - sendSMS(spoolDir, sentDir, failedDir, priorities, enableSyslog, me->getAt()); - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - if (ge.getErrorClass() == MeTaCapabilityError) - cerr << argv[0] << _("[ERROR]: ") - << _("(try setting sms_type, please refer to gsmsmsd manpage)") - << endl; - // switch off message routing, so that following invocations of gsmsmd - // are not swamped with message deliveries while they start up - if (me != NULL) - { - try - { - me->setSMSRoutingToTA(false, false, false); - } - catch (GsmException &ge) - { - // some phones (e.g. Motorola Timeport 260) don't allow to switch - // off SMS routing which results in an error. Just ignore this. - } - } - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc deleted file mode 100644 index 2bb50a0c76..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc +++ /dev/null @@ -1,434 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmsmsstore.cc -// * -// * Purpose: SMS store management program -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.8.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"store", required_argument, (int*)NULL, 't'}, - {"erase", no_argument, (int*)NULL, 'e'}, - {"add", no_argument, (int*)NULL, 'a'}, - {"list", no_argument, (int*)NULL, 'l'}, - {"destination", required_argument, (int*)NULL, 'd'}, - {"source", required_argument, (int*)NULL, 's'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"sca", required_argument, (int*)NULL, 'C'}, - {"copy", no_argument, (int*)NULL, 'c'}, - {"delete", no_argument, (int*)NULL, 'x'}, - {"backup", no_argument, (int*)NULL, 'k'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {"verbose", no_argument, (int*)NULL, 'V'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -bool verbose = false; // true if --verbose option given - -// type of operation to perform - -enum Operation {CopyOp = 'c', BackupOp = 'k', DeleteOp = 'x', - AddOp = 'a', ListOp = 'l', NoOp = 0}; - -// aux function, insert entry only if not already present in dest - -void backup(SortedSMSStoreRef destStore, SMSStoreEntry &entry) -{ - // the following only works because we know that the default sort order - // is by date - assert(destStore->sortOrder() == ByDate); - - Timestamp date = entry.message()->serviceCentreTimestamp(); - pair range = - destStore->equal_range(date); - - for (SortedSMSStore::iterator j = range.first; - j != range.second; ++j) - if (entry == *j) - // do nothing if the entry is already present in the destination - return; - - if (verbose) - cout << stringPrintf(_("inserting entry #%d from source into destination"), - entry.index()) << endl - << entry.message()->toString(); - destStore->insert(entry); // insert -} - -// aux function, throw exception if operation != NoOp - -void checkNoOp(Operation operation, int opt) -{ - if (operation != NoOp) - throw GsmException(stringPrintf(_("incompatible options '%c' and '%c'"), - (char)operation, (char)opt), - ParameterError); -} - -// *** main program - -int main(int argc, char *argv[]) -{ - try - { - // handle command line options - string destination; - string source; - string baudrate; - string storeName; - char operation = NoOp; - SortedSMSStoreRef sourceStore, destStore; - bool useIndices = false; // use indices in delete, copy, backup op - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - // service centre address (set on command line) - string serviceCentreAddress; - Ref sourceMeTa, destMeTa; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "I:t:s:d:b:cxlakhvVXC:", - longOpts, &dummy)) - != -1) - switch (opt) - { - case 'C': - serviceCentreAddress = optarg; - break; - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 'V': - verbose = true; - break; - case 't': - storeName = optarg; - break; - case 'd': - destination = optarg; - break; - case 's': - source = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 'c': - checkNoOp((Operation)operation, opt); - operation = CopyOp; - break; - case 'x': - checkNoOp((Operation)operation, opt); - operation = DeleteOp; - break; - case 'l': - checkNoOp((Operation)operation, opt); - operation = ListOp; - break; - case 'a': - checkNoOp((Operation)operation, opt); - operation = AddOp; - break; - case 'k': - checkNoOp((Operation)operation, opt); - operation = BackupOp; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-a][-b baudrate][-c][-C sca]" - "[-d device or file]\n" - " [-h][-I init string][-k][-l]" - "[-s device or file]" - "[-t SMS store name]\n [-v][-V][-x][-X]" - "{indices}|[phonenumber text]") << endl - << endl - << _(" -a, --add add new SMS submit message\n" - " (phonenumber and text) to destination") - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -c, --copy copy source entries to destination\n" - " (if indices are given, " - "copy only these entries)") << endl - << _(" -C, --sca SMS service centre address") << endl - << _(" -d, --destination sets the destination device to\n" - " connect to, or the file to write to") - << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl - << _(" -k, --backup backup new entries to destination\n" - " (if indices are given, " - "copy only these entries)") << endl - << _(" -l, --list list source to stdout") << endl - << _(" -s, --source sets the source device to connect to,\n" - " or the file to read") << endl - << _(" -t, --store name of SMS store to use") << endl - << _(" -v, --version prints version and exits") << endl - << _(" -V, --verbose print detailed progress messages") - << endl - << _(" -x, --delete delete entries denoted by indices") - << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << endl; - exit(0); - break; - case '?': - throw GsmException(_("unknown option"), ParameterError); - break; - } - - // check if parameters are complete - if (operation == NoOp) - throw GsmException(_("no operation option given"), ParameterError); - if (operation == BackupOp || operation == CopyOp) - if (destination.length() == 0 || source.length() == 0) - throw GsmException(_("both source and destination required"), - ParameterError); - if (operation == ListOp) - { - if (destination.length() != 0) - throw GsmException(_("destination must not be given"), ParameterError); - if (source.length() == 0) - throw GsmException(_("source required"), ParameterError); - } - if (operation == AddOp || operation == DeleteOp) - { - if (source.length() != 0) - throw GsmException(_("source must not be given"), ParameterError); - if (destination.length() == 0) - throw GsmException(_("destination required"), ParameterError); - } - if (operation == CopyOp || operation == DeleteOp || operation == BackupOp) - { - // check if all indices are numbers - for (int i = optind; i < argc; ++i) - for (char *pp = argv[i]; *pp != 0; ++pp) - if (! isdigit(*pp)) - throw GsmException(stringPrintf(_("expected number, got '%s'"), - argv[i]), ParameterError); - useIndices = optind != argc; - } - else if (operation == AddOp) - { - if (optind + 2 < argc) - throw GsmException(_("more than two parameters given"), - ParameterError); - if (optind + 2 > argc) - throw GsmException(_("not enough parameters given"), - ParameterError); - } - else - if (optind != argc) - throw GsmException(_("unexpected parameters"), ParameterError); - - // start accessing source store or file if required by operation - if (operation == CopyOp || operation == BackupOp || operation == ListOp) - if (source == "-") - sourceStore = new SortedSMSStore(true); - else if (isFile(source)) - sourceStore = new SortedSMSStore(source); - else - { - if (storeName == "") - throw GsmException(_("store name must be given"), ParameterError); - - sourceMeTa = new MeTa(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (source, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), initString, - swHandshake)); - sourceStore = new SortedSMSStore(sourceMeTa->getSMSStore(storeName)); - } - - // make sure destination file exists if specified - // Use isFile() for its exception-throwing properties, and discard - // return value cos we don't care (yet) whether it's a device or a - // regular file. - if (destination != "") - isFile(destination); - - // start accessing destination store or file - if (operation == CopyOp || operation == BackupOp || operation == AddOp || - operation == DeleteOp) - if (destination == "-") - destStore = new SortedSMSStore(false); - else if (isFile(destination)) - destStore = new SortedSMSStore(destination); - else - { - if (storeName == "") - throw GsmException(_("store name must be given"), ParameterError); - - destMeTa = new MeTa(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (destination, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), initString, - swHandshake)); - destStore = new SortedSMSStore(destMeTa->getSMSStore(storeName)); - } - - // now do the actual work - switch (operation) - { - case BackupOp: - { - sourceStore->setSortOrder(ByIndex); // needed in loop - - if (useIndices) - for (int i = optind; i < argc; ++i) - { - SortedSMSStore::iterator j = sourceStore->find(atoi(argv[i])); - if (j == sourceStore->end()) - throw GsmException(stringPrintf(_("no index '%s' in source"), - argv[i]), ParameterError); - backup(destStore, *j); - } - else - for (SortedSMSStore::iterator i = sourceStore->begin(); - i != sourceStore->end(); ++i) - backup(destStore, *i); - break; - } - case CopyOp: - { - destStore->clear(); - if (! useIndices) // copy all entries - { - for (SortedSMSStore::iterator i = sourceStore->begin(); - i != sourceStore->end(); ++i) - { - if (verbose) - cout << stringPrintf(_("inserting entry #%d from source " - "into destination"), i->index()) << endl - << i->message()->toString(); - destStore->insert(*i); - } - } - else // copy indexed entries - { - sourceStore->setSortOrder(ByIndex); // needed in loop - - for (int i = optind; i < argc; ++i) - { - SortedSMSStore::iterator j = sourceStore->find(atoi(argv[i])); - if (j == sourceStore->end()) - throw GsmException(stringPrintf(_("no index '%s' in source"), - argv[i]), ParameterError); - if (verbose) - cout << stringPrintf(_("inserting entry #%d from source into " - "destination"), j->index()) << endl - << j->message()->toString(); - destStore->insert(*j); - } - } - break; - } - case ListOp: - { - for (SortedSMSStore::iterator i = sourceStore->begin(); - i != sourceStore->end(); ++i) - cout << stringPrintf(_("index #%d"), i->index()) << endl - << i->message()->toString(); - break; - } - case AddOp: - { - SMSMessageRef sms = new SMSSubmitMessage(argv[optind + 1], argv[optind]); - // set service centre address in new submit PDU if requested by user - if (serviceCentreAddress != "") - { - Address sca(serviceCentreAddress); - sms->setServiceCentreAddress(sca); - } - if (verbose) - cout << _("inserting new entry into destination") << endl - << sms->toString(); - destStore->insert(sms); - break; - } - case DeleteOp: - { - destStore->setSortOrder(ByIndex); - for (int i = optind; i < argc; ++i) - { - int index = atoi(argv[i]); - if (verbose) - { - SortedSMSStore::iterator e = destStore->find(index); - if (e != destStore->end()) - cout << stringPrintf(_("deleting entry #%d from destination"), - index) << endl - << e->message()->toString(); - } - if (destStore->erase(index) != 1) - throw GsmException(stringPrintf(_("no index '%s' in destination"), - argv[i]), ParameterError); - } - break; - } - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure deleted file mode 100755 index 5918af81fb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure +++ /dev/null @@ -1,30623 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# 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. -## --------------------- ## -## 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= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="gsmlib/gsm_error.h" -# 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_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 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT 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 DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ALLOCA GSM_VERSION MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE GLIBC2 GLIBC21 INTL_MACOSX_LIBS HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB COMPILE_INTL_TRUE COMPILE_INTL_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 this package 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 - - 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) - --disable-nls do not use Native Language Support - --disable-rpath do not hardcode runtime library paths - -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-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-included-gettext use the GNU gettext library included here - --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - -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. - -_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 - -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 $as_me, 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 - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in scripts $srcdir/scripts; 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 scripts $srcdir/scripts" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&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' - - -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 - - - -echo "$as_me:$LINENO: checking for textdomain in -lintl" >&5 -echo $ECHO_N "checking for textdomain in -lintl... $ECHO_C" >&6 -if test "${ac_cv_lib_intl_textdomain+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $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 textdomain (); -int -main () -{ -textdomain (); - ; - 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_intl_textdomain=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_intl_textdomain=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_intl_textdomain" >&5 -echo "${ECHO_T}$ac_cv_lib_intl_textdomain" >&6 -if test $ac_cv_lib_intl_textdomain = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBINTL 1 -_ACEOF - - LIBS="-lintl $LIBS" - -fi - - - ac_config_headers="$ac_config_headers gsm_config.h" - - -am__api_version="1.9" -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 - -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 - - - -# 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=gsmlib - VERSION=1.10 - - -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 -' - - - - -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 - - - - -# 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; - - -if test "$CXXFLAGS" = ""; then - CXXFLAGS="-O2" -fi - - - -if test x"`egrep _REENTRANT /usr/include/features.h`" != x; then - CXXFLAGS="-D_REENTRANT $CXXFLAGS" - CFLAGS="-D_REENTRANT $CFLAGS" -fi - -CXXFLAGS="-Wall $CXXFLAGS" - -# 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 -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 - -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 - - - -# 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='$CC -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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}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" - 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 - ;; - -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* | netbsdelf*-gnu | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=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 - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | 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"} - -# 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 3740 "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 - ;; - -esac - -need_locks="$enable_libtool_lock" - - -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 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 - - - -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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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:5311:" \ - "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` - ;; - 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 - ;; - *) - # 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* | sysv5*) - symcode='[BDRT]' - ;; -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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - 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=no -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"} - -# 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' >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' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* - - -# -# Check for any special shared library compilation flags. -# -lt_prog_cc_shlib= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - lt_prog_cc_shlib='-belf' - ;; - esac -fi -if test -n "$lt_prog_cc_shlib"; then - { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 -echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} - if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : - else - { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 -echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} - lt_cv_prog_cc_can_build_shared=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static 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_prog_compiler_static" - 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 > conftest.exp - $SED '/^$/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 - - - - -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:6407: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:6411: \$? = $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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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' - ;; - - 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' - ;; - - sco3.2v5*) - lt_prog_compiler_pic='-Kpic' - lt_prog_compiler_static='-dn' - ;; - - 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* | sysv5*) - 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 - ;; - - 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:6669: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:6673: \$? = $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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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 - -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:6731: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:6735: \$? = $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 > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || 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 - ;; - 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - 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 - link_all_deplibs=no - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) - 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* | sysv5*) - 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 - ;; - - 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec=' ' - 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*|ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) - archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - ia64*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=no - hardcode_shlibpath_var=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - *) - 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 - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - 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=: - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - 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.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - 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' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; - - 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 - -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 - -# -# 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 - 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 - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - 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' - ;; - -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 - - # 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)); 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 /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -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 - 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" - ;; - -sco3.2v5*) - version_type=osf - 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 - ;; - -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.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - -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 - -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" - 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); */ - } - - 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_unknown|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 - LDFLAGS="$LDFLAGS $link_static_flag" - 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); */ - } - - 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_unknown|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 librarie types wil 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 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 - -# A language-specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU C compiler? -with_gcc=$GCC - -# 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=$lt_predep_objects - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects - -# 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=$lt_compiler_lib_search_path - -# 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=$lt_sys_lib_search_path_spec - -# 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 - - # 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_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"} - -# 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' >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' >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 - 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 - 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_CXX=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX=' ' - 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 - case $host_cpu in - hppa*64*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_CXX='+b $libdir' - hardcode_libdir_separator_CXX=: - ;; - ia64*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - *) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - 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*|ia64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - 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 - ia64*|hppa*64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - 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 - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - 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 - ;; - sco*) - archive_cmds_need_lc_CXX=no - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - 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 - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - archive_cmds_need_lc_CXX=no - ;; - 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 -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= - ;; - 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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - ;; - 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*) - ;; - sco*) - case $cc_basename in - CC*) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - *) - ;; - esac - ;; - 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 - ;; - unixware*) - ;; - 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:11334: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:11338: \$? = $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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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 - -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:11396: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:11400: \$? = $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 > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || 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' - ;; - linux*) - link_all_deplibs_CXX=no - ;; - *) - 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 - -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 - -# -# 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 - 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 - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - 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' - ;; - -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 - - # 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)); 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 /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -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 - 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" - ;; - -sco3.2v5*) - version_type=osf - 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 - ;; - -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.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - -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 - -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 - -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_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 - 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_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 - 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_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 - 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_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 - 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_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 - 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_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 - 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_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 - 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" - 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); */ - } - - 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_unknown|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 - LDFLAGS="$LDFLAGS $link_static_flag" - 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); */ - } - - 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_unknown|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 - - -# 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 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 - -# A language-specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_CXX - -# 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=$lt_predep_objects_CXX - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_CXX - -# 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=$lt_compiler_lib_search_path_CXX - -# 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=$lt_sys_lib_search_path_spec - -# 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"} - -# 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' >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' >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 - -test "$ld_shlibs_F77" = no && can_build_shared=no - -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' - ;; - - 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' - ;; - - sco3.2v5*) - lt_prog_compiler_pic_F77='-Kpic' - lt_prog_compiler_static_F77='-dn' - ;; - - 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* | sysv5*) - 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 - ;; - - 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:13764: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:13768: \$? = $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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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 - -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:13826: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:13830: \$? = $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 > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || 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 - ;; - 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs_F77=no - fi - ;; - - 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 - link_all_deplibs_F77=no - else - ld_shlibs_F77=no - fi - ;; - - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) - 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* | sysv5*) - 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 - ;; - - 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_F77=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_F77=' ' - 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*|ia64*) - archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) - archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_F77='+b $libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - ;; - ia64*) - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - ;; - *) - 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 - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - 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=: - ;; - - sco3.2v5*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - export_dynamic_flag_spec_F77='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - 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.2uw2*) - archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_minus_L_F77=no - hardcode_shlibpath_var_F77=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_F77='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_F77=no - ;; - - sysv5*) - no_undefined_flag_F77=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - 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' - hardcode_libdir_flag_spec_F77= - hardcode_shlibpath_var_F77=no - runpath_var='LD_RUN_PATH' - ;; - - 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 - -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 - -# -# 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 - 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 - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - 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' - ;; - -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 - - # 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)); 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 /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -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 - 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" - ;; - -sco3.2v5*) - version_type=osf - 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 - ;; - -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.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - -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 - -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 - -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 - - - -# 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 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 - -# A language-specific compiler. -CC=$lt_compiler_F77 - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_F77 - -# 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=$lt_predep_objects_F77 - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_F77 - -# 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=$lt_compiler_lib_search_path_F77 - -# 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=$lt_sys_lib_search_path_spec - -# 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"} - -# 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' >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' >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:15967: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:15971: \$? = $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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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' - ;; - - 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' - ;; - - sco3.2v5*) - lt_prog_compiler_pic_GCJ='-Kpic' - lt_prog_compiler_static_GCJ='-dn' - ;; - - 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* | sysv5*) - 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 - ;; - - 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:16229: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:16233: \$? = $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 >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || 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 - -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:16291: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:16295: \$? = $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 > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || 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 - ;; - 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs_GCJ=no - fi - ;; - - 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 - link_all_deplibs_GCJ=no - else - ld_shlibs_GCJ=no - fi - ;; - - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) - 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* | sysv5*) - 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 - ;; - - 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_GCJ=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_GCJ=' ' - 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*|ia64*) - archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) - archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - ;; - ia64*) - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - ;; - *) - 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 - ;; - 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* | netbsdelf*-gnu | knetbsd*-gnu) - 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=: - ;; - - sco3.2v5*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - export_dynamic_flag_spec_GCJ='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - 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.2uw2*) - archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=no - hardcode_shlibpath_var_GCJ=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_GCJ='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_GCJ=no - ;; - - sysv5*) - no_undefined_flag_GCJ=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - 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' - hardcode_libdir_flag_spec_GCJ= - hardcode_shlibpath_var_GCJ=no - runpath_var='LD_RUN_PATH' - ;; - - 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 - -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 - -# -# 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 - 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 - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - 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' - ;; - -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 - - # 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)); 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 /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -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 - 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" - ;; - -sco3.2v5*) - version_type=osf - 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 - ;; - -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.2uw2* | sysv4.3* | sysv5*) - 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 - ;; - -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 - -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 - -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" - 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); */ - } - - 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_unknown|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 - LDFLAGS="$LDFLAGS $link_static_flag" - 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); */ - } - - 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_unknown|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 - - -# 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 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 - -# A language-specific compiler. -CC=$lt_compiler_GCJ - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_GCJ - -# 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=$lt_predep_objects_GCJ - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_GCJ - -# 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=$lt_compiler_lib_search_path_GCJ - -# 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=$lt_sys_lib_search_path_spec - -# 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"} - -# 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' >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' >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 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 - -# A language-specific compiler. -CC=$lt_compiler_RC - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_RC - -# 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=$lt_predep_objects_RC - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_RC - -# 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=$lt_compiler_lib_search_path_RC - -# 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=$lt_sys_lib_search_path_spec - -# 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 - - - - - - - - - - - - - - - - - - - - - -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 - -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=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 - -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 "$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. */ - -#include -main() -{ -#if defined(__GNUC__) && \ - ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) - return 1; -#endif - 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 - : -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 "need at least gcc 2.95 to compile correctly" -exit 1 -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 -if test "${ac_cv_working_alloca_h+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 -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - ; - 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_working_alloca_h=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_working_alloca_h=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 -if test $ac_cv_working_alloca_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 -if test "${ac_cv_func_alloca_works+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. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - ; - 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_alloca_works=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_alloca_works=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 - -if test $ac_cv_func_alloca_works = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF - -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. - -ALLOCA=alloca.$ac_objext - -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF - - -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 -if test "${ac_cv_os_cray+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. */ -#if defined(CRAY) && ! defined(CRAY2) -webecray -#else -wenotbecray -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then - ac_cv_os_cray=yes -else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* 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 $ac_func (); -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - 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 - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 -if test "${ac_cv_c_stack_direction+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -find_stack_direction () -{ - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; -} - -int -main () -{ - exit (find_stack_direction () < 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_c_stack_direction=1 -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_stack_direction=-1 -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 - -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - - -echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 -echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_getopt_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $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 getopt_long (); -int -main () -{ -getopt_long (); - ; - 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_c_getopt_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_c_getopt_long=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_c_getopt_long" >&5 -echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 -if test $ac_cv_lib_c_getopt_long = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_GETOPT_LONG 1 -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking for alarm in -lc" >&5 -echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 -if test "${ac_cv_lib_c_alarm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $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 alarm (); -int -main () -{ -alarm (); - ; - 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_c_alarm=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_c_alarm=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_c_alarm" >&5 -echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 -if test $ac_cv_lib_c_alarm = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_ALARM 1 -_ACEOF - -fi - - - -for ac_header in netinet/in.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - - -for ac_header in string.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - - -for ac_header in libintl.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - -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 - - -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 "vsnprintf" >/dev/null 2>&1; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_VSNPRINTF 1 -_ACEOF - -fi -rm -f conftest* - - -echo "$as_me:$LINENO: checking for unsigned short int" >&5 -echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 -if test "${ac_cv_type_unsigned_short_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 ((unsigned short int *) 0) - return 0; -if (sizeof (unsigned short 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_unsigned_short_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_unsigned_short_int=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 - -echo "$as_me:$LINENO: checking size of unsigned short int" >&5 -echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_unsigned_short_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 (unsigned short 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 (unsigned short 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 (unsigned short 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 (unsigned short 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 (unsigned short 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_unsigned_short_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (unsigned short 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: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&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 (unsigned short int)); } -unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (unsigned short int))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (unsigned short int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (unsigned short 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_unsigned_short_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 (unsigned short int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (unsigned short 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_unsigned_short_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int -_ACEOF - - -echo "$as_me:$LINENO: checking for unsigned long int" >&5 -echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 -if test "${ac_cv_type_unsigned_long_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 ((unsigned long int *) 0) - return 0; -if (sizeof (unsigned long 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_unsigned_long_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_unsigned_long_int=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 - -echo "$as_me:$LINENO: checking size of unsigned long int" >&5 -echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_unsigned_long_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 (unsigned long 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 (unsigned long 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 (unsigned long 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 (unsigned long 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 (unsigned long 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_unsigned_long_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (unsigned long 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: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&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 (unsigned long int)); } -unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (unsigned long int))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (unsigned long int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (unsigned long 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_unsigned_long_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 (unsigned long int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (unsigned long 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_unsigned_long_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int -_ACEOF - - -echo "$as_me:$LINENO: checking for unsigned int" >&5 -echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 -if test "${ac_cv_type_unsigned_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 ((unsigned int *) 0) - return 0; -if (sizeof (unsigned 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_unsigned_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_unsigned_int=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 - -echo "$as_me:$LINENO: checking size of unsigned int" >&5 -echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_unsigned_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_unsigned_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 (unsigned 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 (unsigned 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 (unsigned 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 (unsigned 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 (unsigned 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_unsigned_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (unsigned 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: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&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 (unsigned int)); } -unsigned long ulongval () { return (long) (sizeof (unsigned int)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (unsigned int))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (unsigned int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (unsigned 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_unsigned_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 (unsigned int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (unsigned 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_unsigned_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -_ACEOF - - - -GSM_VERSION="1:4:0" - - -LINGUAS="de" -ALL_LINGUAS=$LINGUAS - - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -if test "${enable_nls+set}" = set; then - enableval="$enable_nls" - USE_NLS=$enableval -else - USE_NLS=yes -fi; - echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6 - - - - - - -# Prepare PATH_SEPARATOR. -# 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 - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; 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_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT - -if test -n "$GMSGFMT"; then - echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - -# Prepare PATH_SEPARATOR. -# 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 - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; 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_XGETTEXT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - rm -f messages.po - - -# Prepare PATH_SEPARATOR. -# 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 - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; 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_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-1" - - - - echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2 or newer" >&5 -echo $ECHO_N "checking whether we are using the GNU C Library 2 or newer... $ECHO_C" >&6 -if test "${ac_cv_gnu_library_2+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 -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ >= 2) - Lucky GNU user - #endif -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Lucky GNU user" >/dev/null 2>&1; then - ac_cv_gnu_library_2=yes -else - ac_cv_gnu_library_2=no -fi -rm -f conftest* - - - -fi -echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2" >&5 -echo "${ECHO_T}$ac_cv_gnu_library_2" >&6 - - GLIBC2="$ac_cv_gnu_library_2" - - -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 - -echo "$as_me:$LINENO: checking for library containing strerror" >&5 -echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 -if test "${ac_cv_search_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_strerror=no -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 strerror (); -int -main () -{ -strerror (); - ; - 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_search_strerror="none required" -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 "$ac_cv_search_strerror" = no; then - for ac_lib in cposix; do - LIBS="-l$ac_lib $ac_func_search_save_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 strerror (); -int -main () -{ -strerror (); - ; - 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_search_strerror="-l$ac_lib" -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_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 -echo "${ECHO_T}$ac_cv_search_strerror" >&6 -if test "$ac_cv_search_strerror" != no; then - test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" - -fi - - - echo "$as_me:$LINENO: checking for signed" >&5 -echo $ECHO_N "checking for signed... $ECHO_C" >&6 -if test "${bh_cv_c_signed+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 () -{ -signed char x; - ; - 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 - bh_cv_c_signed=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -bh_cv_c_signed=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5 -echo "${ECHO_T}$bh_cv_c_signed" >&6 - if test $bh_cv_c_signed = no; then - -cat >>confdefs.h <<\_ACEOF -#define signed -_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 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 long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_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. */ -long long ll = 1LL; int i = 63; -int -main () -{ -long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll; - ; - 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_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long_long=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 - if test $ac_cv_type_long_long = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_LONG 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for long double" >&5 -echo $ECHO_N "checking for long double... $ECHO_C" >&6 -if test "${gt_cv_c_long_double+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$GCC" = yes; then - gt_cv_c_long_double=yes - else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - /* The Stardent Vistra knows sizeof(long double), but does not support it. */ - long double foo = 0.0; - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - int array [2*(sizeof(long double) >= sizeof(double)) - 1]; - -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 - gt_cv_c_long_double=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_c_long_double=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi -fi -echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5 -echo "${ECHO_T}$gt_cv_c_long_double" >&6 - if test $gt_cv_c_long_double = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_DOUBLE 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for wchar_t" >&5 -echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 -if test "${gt_cv_c_wchar_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. */ -#include - wchar_t foo = (wchar_t)'\0'; -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 - gt_cv_c_wchar_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_c_wchar_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5 -echo "${ECHO_T}$gt_cv_c_wchar_t" >&6 - if test $gt_cv_c_wchar_t = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WCHAR_T 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for wint_t" >&5 -echo $ECHO_N "checking for wint_t... $ECHO_C" >&6 -if test "${gt_cv_c_wint_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. */ -#include - wint_t foo = (wchar_t)'\0'; -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 - gt_cv_c_wint_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_c_wint_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5 -echo "${ECHO_T}$gt_cv_c_wint_t" >&6 - if test $gt_cv_c_wint_t = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_WINT_T 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for inttypes.h" >&5 -echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 -if test "${gl_cv_header_inttypes_h+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 -int -main () -{ -uintmax_t i = (uintmax_t) -1; - ; - 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 - gl_cv_header_inttypes_h=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gl_cv_header_inttypes_h=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6 - if test $gl_cv_header_inttypes_h = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H_WITH_UINTMAX 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for stdint.h" >&5 -echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 -if test "${gl_cv_header_stdint_h+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 -int -main () -{ -uintmax_t i = (uintmax_t) -1; - ; - 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 - gl_cv_header_stdint_h=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gl_cv_header_stdint_h=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5 -echo "${ECHO_T}$gl_cv_header_stdint_h" >&6 - if test $gl_cv_header_stdint_h = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H_WITH_UINTMAX 1 -_ACEOF - - fi - - - - - echo "$as_me:$LINENO: checking for intmax_t" >&5 -echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 -if test "${gt_cv_c_intmax_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. */ - -#include -#include -#if HAVE_STDINT_H_WITH_UINTMAX -#include -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include -#endif - -int -main () -{ -intmax_t x = -1; - ; - 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 - gt_cv_c_intmax_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_c_intmax_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5 -echo "${ECHO_T}$gt_cv_c_intmax_t" >&6 - if test $gt_cv_c_intmax_t = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_INTMAX_T 1 -_ACEOF - - fi - - - - echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5 -echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6 -if test "${gt_cv_func_printf_posix+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - if test "$cross_compiling" = yes; then - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ - notposix -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "notposix" >/dev/null 2>&1; then - gt_cv_func_printf_posix="guessing no" -else - gt_cv_func_printf_posix="guessing yes" -fi -rm -f conftest* - - -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 -/* The string "%2$d %1$d", with dollar characters protected from the shell's - dollar expansion (possibly an autoconf bug). */ -static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -static char buf[100]; -int main () -{ - sprintf (buf, format, 33, 55); - return (strcmp (buf, "55 33") != 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 - gt_cv_func_printf_posix=yes -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 ) -gt_cv_func_printf_posix=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5 -echo "${ECHO_T}$gt_cv_func_printf_posix" >&6 - case $gt_cv_func_printf_posix in - *yes) - -cat >>confdefs.h <<\_ACEOF -#define HAVE_POSIX_PRINTF 1 -_ACEOF - - ;; - esac - - - -for ac_header in stdlib.h unistd.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - -for ac_func in getpagesize -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* 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 $ac_func (); -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - 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 - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -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 -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include -#include - -#if !STDC_HEADERS && !HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#if !HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# if !HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# if HAVE_SYS_PARAM_H -# include -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - exit (1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - exit (1); - if (write (fd, data, pagesize) != pagesize) - exit (1); - close (fd); - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - exit (1); - data2 = (char *) malloc (2 * pagesize); - if (!data2) - exit (1); - data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit (1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit (1); - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - exit (1); - if (read (fd, data3, pagesize) != pagesize) - exit (1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit (1); - close (fd); - 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 - ac_cv_func_mmap_fixed_mapped=yes -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_func_mmap_fixed_mapped=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MMAP 1 -_ACEOF - -fi -rm -f conftest.mmap - - - echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 -echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 -if test "${ac_cv_gnu_library_2_1+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 -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Lucky GNU user" >/dev/null 2>&1; then - ac_cv_gnu_library_2_1=yes -else - ac_cv_gnu_library_2_1=no -fi -rm -f conftest* - - - -fi -echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 -echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 - - GLIBC21="$ac_cv_gnu_library_2_1" - - - - - echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 -echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 -if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - if test "$cross_compiling" = yes; then - - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i3456786 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - -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 - -static void -#ifdef __cplusplus -sigfpe_handler (int sig) -#else -sigfpe_handler (sig) int sig; -#endif -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (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 - gt_cv_int_divbyzero_sigfpe=yes -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 ) -gt_cv_int_divbyzero_sigfpe=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 -echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - -cat >>confdefs.h <<_ACEOF -#define INTDIV0_RAISES_SIGFPE $value -_ACEOF - - - - echo "$as_me:$LINENO: checking for unsigned long long" >&5 -echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 -if test "${ac_cv_type_unsigned_long_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. */ -unsigned long long ull = 1ULL; int i = 63; -int -main () -{ -unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull; - ; - 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_type_unsigned_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_unsigned_long_long=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 - if test $ac_cv_type_unsigned_long_long = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_UNSIGNED_LONG_LONG 1 -_ACEOF - - fi - - - - - if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then - - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - -cat >>confdefs.h <<_ACEOF -#define uintmax_t $ac_type -_ACEOF - - else - -cat >>confdefs.h <<\_ACEOF -#define HAVE_UINTMAX_T 1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for inttypes.h" >&5 -echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 -if test "${gt_cv_header_inttypes_h+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 -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 - gt_cv_header_inttypes_h=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_header_inttypes_h=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 -echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 - if test $gt_cv_header_inttypes_h = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H 1 -_ACEOF - - fi - - - - if test $gt_cv_header_inttypes_h = yes; then - echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 -echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 -if test "${gt_cv_inttypes_pri_broken+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 -#ifdef PRId32 -char *p = PRId32; -#endif - -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 - gt_cv_inttypes_pri_broken=no -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_inttypes_pri_broken=yes -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 -echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - -cat >>confdefs.h <<_ACEOF -#define PRI_MACROS_BROKEN 1 -_ACEOF - - fi - - - -for ac_header in stdint.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - echo "$as_me:$LINENO: checking for SIZE_MAX" >&5 -echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6 - result= - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#include -#if HAVE_STDINT_H -#include -#endif -#ifdef SIZE_MAX -Found it -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Found it" >/dev/null 2>&1; then - result=yes -fi -rm -f conftest* - - if test -z "$result"; then - 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 / 10) < 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $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 -?*) res_hi=$ac_lo;; -'') result=? ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ -#include -long longval () { return ~(size_t)0 / 10; } -unsigned long ulongval () { return ~(size_t)0 / 10; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if ((~(size_t)0 / 10) < 0) - { - long i = longval (); - if (i != (~(size_t)0 / 10)) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != (~(size_t)0 / 10)) - 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 - res_hi=`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 ) -result=? -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val - 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 % 10) < 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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 -?*) res_lo=$ac_lo;; -'') result=? ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ -#include -long longval () { return ~(size_t)0 % 10; } -unsigned long ulongval () { return ~(size_t)0 % 10; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if ((~(size_t)0 % 10) < 0) - { - long i = longval (); - if (i != (~(size_t)0 % 10)) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != (~(size_t)0 % 10)) - 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 - res_lo=`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 ) -result=? -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val - 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ -#include -int -main () -{ -static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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 -?*) fits_in_uint=$ac_lo;; -'') result=? ;; -esac -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ -#include -long longval () { return sizeof (size_t) <= sizeof (unsigned int); } -unsigned long ulongval () { return sizeof (size_t) <= sizeof (unsigned int); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if ((sizeof (size_t) <= sizeof (unsigned int)) < 0) - { - long i = longval (); - if (i != (sizeof (size_t) <= sizeof (unsigned int))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != (sizeof (size_t) <= sizeof (unsigned 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 - fits_in_uint=`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 ) -result=? -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val - if test "$fits_in_uint" = 1; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - extern size_t foo; - extern unsigned long foo; - -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 - fits_in_uint=0 -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 - fi - if test -z "$result"; then - if test "$fits_in_uint" = 1; then - result="$res_hi$res_lo"U - else - result="$res_hi$res_lo"UL - fi - else - result='~(size_t)0' - fi - fi - echo "$as_me:$LINENO: result: $result" >&5 -echo "${ECHO_T}$result" >&6 - if test "$result" != yes; then - -cat >>confdefs.h <<_ACEOF -#define SIZE_MAX $result -_ACEOF - - fi - - - - - -for ac_header in stdint.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - - - echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 -echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 -if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - 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 - gt_cv_func_CFPreferencesCopyAppValue=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 -_ACEOF - - fi - echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 -echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 -if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - 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 - gt_cv_func_CFLocaleCopyCurrent=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CFLOCALECOPYCURRENT 1 -_ACEOF - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - - -# 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; -# Prepare PATH_SEPARATOR. -# 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 -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 GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $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. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path 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 "${acl_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&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 "${acl_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 ld's only accept -v. -case `$LD -v 2>&1 &5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - - echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 -if test "${acl_cv_rpath+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6 - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath or --disable-rpath was given. -if test "${enable_rpath+set}" = set; then - enableval="$enable_rpath" - : -else - enable_rpath=yes -fi; - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then - withval="$with_libiconv_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 -if test "${ac_cv_type_ptrdiff_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 ((ptrdiff_t *) 0) - return 0; -if (sizeof (ptrdiff_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_ptrdiff_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_ptrdiff_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -if test $ac_cv_type_ptrdiff_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define ptrdiff_t long -_ACEOF - - -fi - - - - - - - - - - - -for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.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 the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_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 - - - - - - - - - - - - - - - - - - - - - - - - -for ac_func in asprintf fwprintf getcwd getegid geteuid getgid getuid \ -mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -__fsetlocking -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* 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 $ac_func (); -/* 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - 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 - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5 -echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl__snprintf+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 -int -main () -{ - -#ifndef _snprintf - char *p = (char *) _snprintf; -#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_have_decl__snprintf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl__snprintf=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5 -echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6 - if test $ac_cv_have_decl__snprintf = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SNPRINTF $gt_value -_ACEOF - - - - echo "$as_me:$LINENO: checking whether _snwprintf is declared" >&5 -echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl__snwprintf+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 -int -main () -{ - -#ifndef _snwprintf - char *p = (char *) _snwprintf; -#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_have_decl__snwprintf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl__snwprintf=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5 -echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6 - if test $ac_cv_have_decl__snwprintf = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SNWPRINTF $gt_value -_ACEOF - - - - - echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 -echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_feof_unlocked+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 -int -main () -{ - -#ifndef feof_unlocked - char *p = (char *) feof_unlocked; -#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_have_decl_feof_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_feof_unlocked=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6 - if test $ac_cv_have_decl_feof_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FEOF_UNLOCKED $gt_value -_ACEOF - - - - echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 -echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_fgets_unlocked+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 -int -main () -{ - -#ifndef fgets_unlocked - char *p = (char *) fgets_unlocked; -#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_have_decl_fgets_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_fgets_unlocked=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6 - if test $ac_cv_have_decl_fgets_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FGETS_UNLOCKED $gt_value -_ACEOF - - - - echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 -echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_getc_unlocked+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 -int -main () -{ - -#ifndef getc_unlocked - char *p = (char *) getc_unlocked; -#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_have_decl_getc_unlocked=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_getc_unlocked=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 -echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 - if test $ac_cv_have_decl_getc_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_GETC_UNLOCKED $gt_value -_ACEOF - - - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - - - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6 -if test "${am_cv_func_iconv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - 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 () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - 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 - am_cv_func_iconv=yes -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 "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - 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 () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - 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 - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -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 - LIBS="$am_save_LIBS" - fi - -fi -echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6 - if test "$am_cv_func_iconv" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ICONV 1 -_ACEOF - - fi - if test "$am_cv_lib_iconv" = yes; then - echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6 - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - if test "$am_cv_func_iconv" = yes; then - echo "$as_me:$LINENO: checking for iconv declaration" >&5 -echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 - if test "${am_cv_proto_iconv+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 -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif - -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 - am_cv_proto_iconv_arg1="" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -am_cv_proto_iconv_arg1="const" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" -fi - - am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - echo "$as_me:$LINENO: result: ${ac_t:- - }$am_cv_proto_iconv" >&5 -echo "${ECHO_T}${ac_t:- - }$am_cv_proto_iconv" >&6 - -cat >>confdefs.h <<_ACEOF -#define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF - - fi - - - echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 -echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 -if test "${am_cv_langinfo_codeset+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 -int -main () -{ -char* cs = nl_langinfo(CODESET); - ; - 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 - am_cv_langinfo_codeset=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -am_cv_langinfo_codeset=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 - if test $am_cv_langinfo_codeset = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LANGINFO_CODESET 1 -_ACEOF - - fi - - if test $ac_cv_header_locale_h = yes; then - - echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 -echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 -if test "${gt_cv_val_LC_MESSAGES+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 -int -main () -{ -return LC_MESSAGES - ; - 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 - gt_cv_val_LC_MESSAGES=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_val_LC_MESSAGES=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5 -echo "${ECHO_T}$gt_cv_val_LC_MESSAGES" >&6 - if test $gt_cv_val_LC_MESSAGES = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LC_MESSAGES 1 -_ACEOF - - fi - - fi - - if test -n "$INTL_MACOSX_LIBS"; then - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - fi - - for ac_prog in bison -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_INTLBISON+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$INTLBISON"; then - ac_cv_prog_INTLBISON="$INTLBISON" # 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_INTLBISON="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -INTLBISON=$ac_cv_prog_INTLBISON -if test -n "$INTLBISON"; then - echo "$as_me:$LINENO: result: $INTLBISON" >&5 -echo "${ECHO_T}$INTLBISON" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$INTLBISON" && break -done - - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - echo "$as_me:$LINENO: checking version of bison" >&5 -echo $ECHO_N "checking version of bison... $ECHO_C" >&6 - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -echo "${ECHO_T}$ac_prog_version" >&6 - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi - - - - - - - - - - - - - - - - - echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 -echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 -if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - 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 - gt_cv_func_CFPreferencesCopyAppValue=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 -_ACEOF - - fi - echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 -echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 -if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" - gt_save_LIBS="$LIBS" - LIBS="$LIBS -framework CoreFoundation" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - 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 - gt_cv_func_CFLocaleCopyCurrent=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CFLOCALECOPYCURRENT 1 -_ACEOF - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -if test "${enable_nls+set}" = set; then - enableval="$enable_nls" - USE_NLS=$enableval -else - USE_NLS=yes -fi; - echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6 - - - - - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 -echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 - -# Check whether --with-included-gettext or --without-included-gettext was given. -if test "${with_included_gettext+set}" = set; then - withval="$with_included_gettext" - nls_cv_force_use_gnu_gettext=$withval -else - nls_cv_force_use_gnu_gettext=no -fi; - echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 -echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - - - - - - - echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libc+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 -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - 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 - gt_cv_func_gnugettext1_libc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_gnugettext1_libc=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libintl-prefix or --without-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then - withval="$with_libintl_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" - ;; - esac - done - fi - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - 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 - gt_cv_func_gnugettext1_libintl=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_gnugettext1_libintl=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - 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 - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - -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 - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" - LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - CATOBJEXT=.gmo - fi - - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_NLS 1 -_ACEOF - - else - USE_NLS=no - fi - fi - - echo "$as_me:$LINENO: checking whether to use NLS" >&5 -echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6 - if test "$USE_NLS" = "yes"; then - echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - echo "$as_me:$LINENO: result: $gt_source" >&5 -echo "${ECHO_T}$gt_source" >&6 - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6 - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETTEXT 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DCGETTEXT 1 -_ACEOF - - fi - - POSUB=po - fi - - - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - - - - - nls_cv_header_intl= - nls_cv_header_libgt= - - DATADIRNAME=share - - - INSTOBJEXT=.mo - - - GENCAT=gencat - - - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - - - INTL_LIBTOOL_SUFFIX_PREFIX= - - - - INTLLIBS="$LIBINTL" - - - - - - - -_localedir=`eval "echo $datadir/locale"` -if test "$_localedir" = "NONE/share/locale"; then - cat >>confdefs.h <<_ACEOF -#define LOCALEDIR "/usr/local/share/locale" -_ACEOF - -else - _localedir=`echo \"$_localedir\"` - cat >>confdefs.h <<_ACEOF -#define LOCALEDIR $_localedir -_ACEOF - -fi - - - -if test x$USE_INCLUDED_LIBINTL = xyes; then - COMPILE_INTL_TRUE= - COMPILE_INTL_FALSE='#' -else - COMPILE_INTL_TRUE='#' - COMPILE_INTL_FALSE= -fi - - - ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" - ac_config_commands="$ac_config_commands default" -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 "${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 "${COMPILE_INTL_TRUE}" && test -z "${COMPILE_INTL_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"COMPILE_INTL\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"COMPILE_INTL\" 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 $as_me, 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="\\ -config.status -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" -# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - -_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" ;; - "gsmlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsmlib/Makefile" ;; - "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "apps/Makefile" ) CONFIG_FILES="$CONFIG_FILES apps/Makefile" ;; - "win32/Makefile" ) CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; - "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; - "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "ext/Makefile" ) CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - "gsm_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS gsm_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,@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,@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,@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,@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,@EGREP@,$EGREP,;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,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@CPP@,$CPP,;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,@ALLOCA@,$ALLOCA,;t t -s,@GSM_VERSION@,$GSM_VERSION,;t t -s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t -s,@USE_NLS@,$USE_NLS,;t t -s,@MSGFMT@,$MSGFMT,;t t -s,@GMSGFMT@,$GMSGFMT,;t t -s,@XGETTEXT@,$XGETTEXT,;t t -s,@MSGMERGE@,$MSGMERGE,;t t -s,@GLIBC2@,$GLIBC2,;t t -s,@GLIBC21@,$GLIBC21,;t t -s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t -s,@HAVE_POSIX_PRINTF@,$HAVE_POSIX_PRINTF,;t t -s,@HAVE_ASPRINTF@,$HAVE_ASPRINTF,;t t -s,@HAVE_SNPRINTF@,$HAVE_SNPRINTF,;t t -s,@HAVE_WPRINTF@,$HAVE_WPRINTF,;t t -s,@LIBICONV@,$LIBICONV,;t t -s,@LTLIBICONV@,$LTLIBICONV,;t t -s,@INTLBISON@,$INTLBISON,;t t -s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t -s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t -s,@CATOBJEXT@,$CATOBJEXT,;t t -s,@DATADIRNAME@,$DATADIRNAME,;t t -s,@INSTOBJEXT@,$INSTOBJEXT,;t t -s,@GENCAT@,$GENCAT,;t t -s,@INTLOBJS@,$INTLOBJS,;t t -s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t -s,@INTLLIBS@,$INTLLIBS,;t t -s,@LIBINTL@,$LIBINTL,;t t -s,@LTLIBINTL@,$LTLIBINTL,;t t -s,@POSUB@,$POSUB,;t t -s,@COMPILE_INTL_TRUE@,$COMPILE_INTL_TRUE,;t t -s,@COMPILE_INTL_FALSE@,$COMPILE_INTL_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 - - # 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; } - - 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 -_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-1 ) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - default ) echo timestamp > stamp-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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in deleted file mode 100644 index d586c4e35d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in +++ /dev/null @@ -1,131 +0,0 @@ -dnl ************************************************************************* -dnl * GSM TA/ME library -dnl * -dnl * File: configure.in -dnl * -dnl * Purpose: autoconf configure script template -dnl * -dnl * Author: Peter Hofmann (software@pxh.de) -dnl * -dnl * Created: 11.11.1999 -dnl ************************************************************************* - -dnl Process this file with autoconf to produce a configure script. -AC_INIT(gsmlib/gsm_error.h) - -dnl Other -AC_CONFIG_AUX_DIR(scripts) -AC_PROG_INSTALL - -dnl check for libintl -AC_CHECK_LIB(intl, textdomain) - -dnl use config header -AM_CONFIG_HEADER(gsm_config.h) - -dnl use automake -AM_INIT_AUTOMAKE(gsmlib, 1.10) - -dnl change to no if you want no shared libraries for debugging purposes -AM_ENABLE_SHARED(yes) - -dnl use -O2 optimization by default -if test "$CXXFLAGS" = ""; then - CXXFLAGS="-O2" -fi - -dnl comment out this line to get extensive debugging output and asserts -dnl CXXFLAGS="-DNDEBUG $CXXFLAGS" - -dnl uncomment to get translations without installing gsmlib -dnl CXXFLAGS="-DLOCAL_TRANSLATIONS $CXXFLAGS" - -dnl check _REENTRANT in header files -if test x"`egrep _REENTRANT /usr/include/features.h`" != x; then - CXXFLAGS="-D_REENTRANT $CXXFLAGS" - CFLAGS="-D_REENTRANT $CFLAGS" -fi - -dnl output all warnings -CXXFLAGS="-Wall $CXXFLAGS" - -dnl use libtool -AM_PROG_LIBTOOL - -dnl Checks for programs. -AC_PROG_CPP -AC_PROG_CXX - -dnl check for gcc 2.95.x -AC_TRY_RUN([ -#include -main() -{ -#if defined(__GNUC__) && \ - ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) - return 1; -#endif - return 0; -} -],, -[echo "need at least gcc 2.95 to compile correctly" -exit 1]) - -dnl check for alloca -AC_FUNC_ALLOCA - -dnl check for getopt_long in the C library -AC_CHECK_LIB(c, getopt_long, AC_DEFINE(HAVE_GETOPT_LONG)) - -dnl check for alarm in the C library -AC_CHECK_LIB(c, alarm, AC_DEFINE(HAVE_ALARM)) - -dnl check for netinet/in.h header -AC_CHECK_HEADERS(netinet/in.h) - -dnl check for string.h header -AC_CHECK_HEADERS(string.h) - -dnl check for libintl.h header -AC_CHECK_HEADERS(libintl.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST - -dnl check for vsnprintf() -dnl AC_FUNC_VPRINTF -AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF)) - -dnl checks for builtin data type sizes -AC_CHECK_SIZEOF(unsigned short int, 2) -AC_CHECK_SIZEOF(unsigned long int, 4) -AC_CHECK_SIZEOF(unsigned int, 4) - -dnl Project-specific settings -GSM_VERSION="1:4:0" -AC_SUBST(GSM_VERSION) - -dnl national language support (NLS) -LINGUAS="de" -ALL_LINGUAS=$LINGUAS -AM_GNU_GETTEXT - -dnl set locale dir (FIXME there must be a better way) -_localedir=`eval "echo $datadir/locale"` -if test "$_localedir" = "NONE/share/locale"; then - AC_DEFINE_UNQUOTED(LOCALEDIR, "/usr/local/share/locale") -else - _localedir=`echo \"$_localedir\"` - AC_DEFINE_UNQUOTED(LOCALEDIR, $_localedir) -fi - -dnl whether to compile the intl directory -AM_CONDITIONAL(COMPILE_INTL, test x$USE_INCLUDED_LIBINTL = xyes) - -AC_OUTPUT(Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile - doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in - ext/Makefile, - echo timestamp > stamp-h) - -dnl repair Makefile in po subdir -dnl sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d deleted file mode 100644 index 7974513ccc..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d +++ /dev/null @@ -1,3 +0,0 @@ -# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils - -*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default deleted file mode 100644 index 8ab73a9530..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default +++ /dev/null @@ -1,13 +0,0 @@ -PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -BAUDRATE=9600 -PIN="" # or 1234 - -SPOOLDIR=/var/spool/sms -PRIORITIES=3 - -SMSADMIN=root -SUBJECT="SMS delivery report:" - -SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor - -do_accounting () { true; } # it's your turn diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init deleted file mode 100644 index 7bb3ac0cd1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: gsm-utils -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start daemon at boot time -# Description: Enable service provided by daemon. -### END INIT INFO -# -# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon -# -# written by Matthias Goebl - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/bin/gsmsmsd -NAME=gsmsmsd -DESC="GSM SMS send daemon" - -test -x $DAEMON || exit 0 - -PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -BAUDRATE=9600 -PIN="" # or 1234 -SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -SPOOLDIR=/var/spool/sms -PRIORITIES=3 -STARTOPTS="" -SMSUSER="gsmsms:gsmsms" -test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters - -OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" -OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" -test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" -test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" -test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS - -case "$1" in - start) - echo -n "Starting $DESC: " - if [ -n "$PIN" ];then - echo -n "entering PIN.. " - ( - # This is ugly.. But if the PIN is already entered, the ME returns - # "ERROR" and makes gsmctl retrying.. - /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & - PID=$! - sleep 3 - kill $PID 2>/dev/null - ) >/dev/null 2>&1 - fi - echo -n "$NAME" - start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME " - start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --exec $DAEMON - sleep 5 - echo "." - ;; - restart|force-reload) - echo -n "Restarting $DESC: $NAME" - start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS - sleep 5 - start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --make-pidfile --background --exec $DAEMON -- $OPTIONS - echo "." - ;; - *) - N=/etc/init.d/gsm-utils - echo "Usage: $N {start|stop|restart|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue deleted file mode 100644 index 88b65c15bf..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue +++ /dev/null @@ -1,48 +0,0 @@ -#! /bin/bash -# -# /usr/bin/gsmsmsrequeue: Re-queues failed SMS -# -# written by Matthias Goebl - -SPOOLDIR=/var/spool/sms -PRIORITIES=3 -SMSADMIN=root -SUBJECT="SMS delivery report:" - -send_notify() -{ - tmpfile="$SPOOLDIR/tmp/"`basename "$1"` - status="$2" - if mv "$1" "$tmpfile" 2>/dev/null; then - # extract the first tab-separated field after the phone number as - # email-address to send the notification to - mailto=` cat "$tmpfile" | sed -ne '1s/^[^ ]* \([^ ]*\).*/\1/p' ` - test -z "$mailto" && mailto="$SMSADMIN" - cat "$tmpfile" | mail -s "$SUBJECT $status" "$mailto" - rm "$tmpfile" - fi -} -do_accounting() -{ - true; -} - -test -r /etc/default/gsm-utils && . /etc/default/gsm-utils - -for p in `seq 1 $PRIORITIES`; do - ls "$SPOOLDIR/failed$p" | while read file; do - if expr "$file" : ".*rrrrrrrrrrrr" >/dev/null; then - send_notify "$SPOOLDIR/failed$p/$file" "failed" - else - # re-queue SMS - mv "$SPOOLDIR/failed$p/$file" "$SPOOLDIR/queue$p/${file}r" 2>/dev/null - fi - done -done - -for p in `seq 1 $PRIORITIES`; do - ls "$SPOOLDIR/sent$p" | while read file; do - do_accounting "$SPOOLDIR/sent$p/$file" "sent" - send_notify "$SPOOLDIR/sent$p/$file" "sent" - done -done diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool deleted file mode 100644 index 75bc1f9b79..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool +++ /dev/null @@ -1,34 +0,0 @@ -#! /bin/bash -# -# /usr/bin/gsmsmsspool: Queues SMS for sending -# -# written by Matthias Goebl - -SPOOLDIR=/var/spool/sms -PRIORITIES=3 -test -r /etc/default/gsm-utils && . /etc/default/gsm-utils - -if [ -z "$1" ]; then - echo "Usage: gsmsmsspool NUMBER [MESSAGE]" - exit 1 -fi - -priority=$PRIORITIES # default priority -test -n "$GSMSMS_PRIORITY" && priority="$GSMSMS_PRIORITY" -mailto=`id -un` -test -n "$GSMSMS_NOTIFY" && mailto="$GSMSMS_NOTIFY" - -tmpfile="$SPOOLDIR/tmp/`date +%s`.$$" -umask 022 -echo "$1 $mailto" > "$tmpfile" -if [ -n "$2" ]; then - echo "$2" | head -c 160 >> "$tmpfile" -else - head -c 160 >> "$tmpfile" -fi - -if [ "`id -un`" = "root" ]; then - chown gsmsms:gsmsms "$tmpfile" -fi - -mv "$tmpfile" "$SPOOLDIR/queue$priority/" diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog deleted file mode 100644 index 86bca0b277..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog +++ /dev/null @@ -1,284 +0,0 @@ -gsmlib (1.10-13) unstable; urgency=low - - * Ack NMU, Thanks Michael, Christoph & Petter - * debian/control add Homepage: - * Update debian/copyright; gsm-lib/COPYING actually specifies LGPL: - - fixes lintian:copyright-without-copyright-notice - * Update manpages fixes lintian:hyphen-used-as-minus-sign - * Update debian/gsm-utils.init - - fixes lintian:init.d-script-missing-lsb-short-description - * Bug fixes from ubuntu - - Don't install contrib/gsm-utils.init dh_installinit debian/gsm-utils.init - - Create /var/run/gsm-utils - * Add case 'L' to apps/gsmsmsd.cc - thks to Andrew Suffield - - syslog support does not work (Closes: #346240) - * gsm-utils.init really call restart with --stop first - - init script calls --start twice (Closes: #377448) - * Explictly set /bin/bash: gsmsmsspool & gsmsmsrequeue - - bashism in /bin/sh script (Closes: #464981) - - gsmsmsrequeue contains bashism or function error (Closes: #459396) - * Patch apps/gsmsmsstore.cc - thks Isaac Wilcox - - gsmsmsstore device existence check causes problems with RFCOMM - devices (Closes: #340179) - * Only start gsmsmsd if set in /etc/default/gsm-utils. crontab -> examples - - gsmsmsd should be optional / start only if told so in - /etc/default/gsm-utils (Closes: #474093) - * Apply patch from Stefan Katerkamp & Jacob Nevins - - Gsmsendsms fails with SonyEricsson W880 (fix included) (Closes: - #413341) - - -- Mark Purcell Mon, 06 Oct 2008 15:01:49 +1100 - -gsmlib (1.10-12.5) unstable; urgency=low - - * Non-maintainer upload. - * Yet another bashism that was later on reported on the old bug report, thus - again closes: #464981 - * Also found a shell related problem in debian/rules and fixed it. - * Bumped standard to 3.7.3. - - -- Michael Meskes Mon, 14 Apr 2008 10:48:19 +0200 - -gsmlib (1.10-12.4) unstable; urgency=low - - * Non-maintainer upload. - * Argh, somehow I mananged to upload without fixing the bug completely, - sorry. Added those missing braces, closes: #464981. - - -- Michael Meskes Wed, 09 Apr 2008 14:46:08 +0200 - -gsmlib (1.10-12.3) unstable; urgency=high - - * Non-maintainer upload. - * Removed bashism in contrib/gsmsmsrequeue (Closes: #464981). - - -- Michael Meskes Sun, 06 Apr 2008 15:37:35 +0200 - -gsmlib (1.10-12.2) unstable; urgency=low - - * Non-maintainer upload. - * Fix FTBFS with GCC 4.3: 'strerror' was not declared in this scope, thanks - to Cyril Brulebois for the patch (Closes: #455402). - - -- Christoph Berg Fri, 04 Apr 2008 18:01:05 +0200 - -gsmlib (1.10-12.1) unstable; urgency=low - - * Non-maintainer upload to solve release goal. - * Add LSB dependency header to init.d scripts (Closes: #464061). - - -- Petter Reinholdtsen Fri, 28 Mar 2008 11:39:20 +0100 - -gsmlib (1.10-12) unstable; urgency=low - - * addgroup --system gsmsms works better. Thanks Jon - * only delete gsmsms on purge - - gsm-utils: deletes and recreates the gsmsms user on each upgrade - (Closes: #346238) - - gsm-utils fails installation / addgroup: The user gsmsms; does - not exist (Closes: #445404) - * lintian cleanup: debian-rules-ignores-make-clean-error substvar- - source-version-is-deprecated - * Scripts are installed +x - - gsm-utils: uselessly installs non-executable scripts into /usr/bin - (Closes: #346230) - * Remove bogus symlink - - gsm-utils: wrong symlink for manpage gsmsiectl.1 (Closes: #322382) - - gsm-utils: gsmsiectl.1 dangling symlink (Closes: #399582) - * debian/gsm-utils.init reload/restart was not calling --stop. Thanks - Barry - - init script calls --start twice (Closes: #377448) - - -- Mark Purcell Mon, 08 Oct 2007 21:44:00 +0100 - -gsmlib (1.10-11) unstable; urgency=low - - * Create system group gsmsms - Thanks Emmanuel - - gsm-utils: creates group in non-system gid range (Closes: #353967) - - gsm-utils: postinst should create system grp gsmsms (Closes: - #390266) - * Upgrade to compat 4 - * Apply gcc-4.3 patch from Martin - - FTBFS with GCC 4.3: missing #includes (Closes: #417222) - - -- Mark Purcell Sat, 29 Sep 2007 18:22:56 +0100 - -gsmlib (1.10-10) unstable; urgency=low - - * FTBFS with G++ 4.1: extra qualifications (Closes: #356109) - - -- Mark Purcell Sat, 20 May 2006 21:54:42 +0100 - -gsmlib (1.10-9) unstable; urgency=low - - * library package needs to be renamed (libstdc++ allocator change) - (Closes: #339179) - - -- Mark Purcell Mon, 21 Nov 2005 21:19:51 +0000 - -gsmlib (1.10-8) unstable; urgency=low - - * removal of automake1.6 (Closes: #335123) - * fails with dash [bashisms in scripts] (Closes: #309834) - * Update libtool Fixes: gsmlib(GNU/k*BSD): FTBFS: out of date libtool scripts (Closes: - #319688) - * [INTL:de] German PO file corrections (Closes: #314060) - * Fix: old-fsf-address-in-copyright-file - - -- Mark Purcell Thu, 3 Nov 2005 22:40:19 +0000 - -gsmlib (1.10-7) unstable; urgency=low - - * C++ 4.0 transition - * Closes: #315864: Missing manpages - * gsm-utils: maintainer-script-needs-depends-on-adduser postinst - - -- Mark Purcell Sat, 23 Jul 2005 00:46:31 +1000 - -gsmlib (1.10-6) unstable; urgency=low - - * Rebuild for invalid dependancies - * Closes: #258056: libgsmme 99% cpu usage - - Patch from Emard - * Closes: #274382: FTBFS with gcc-3.4: template-id `operator< - <>' for `bool gsmlib::operator<(const - gsmlib::MapKey<gsmlib::SortedPhonebookBase>&, const - gsmlib::MapKey<gsmlib::SortedPhonebookBase>&)' does not - match any template declaration - - Patch from Andreas Jochens - * Closes: #294251: FTBFS (amd64/gcc-4.0): explicit qualification in - declaration of `bool gsmlib::operator<(const - gsmlib::MapKey<SortedStore>&, const - gsmlib::MapKey<SortedStore>&)' - - Patch from Andreas Jochens - * Closes: #200189: Patch and contribution - + Added multi-queue-priority-system and syslog patch (Matthias Goebl) - + Included init, spool and requeue scripts for gsmsmsd (Matthias Goebl) - + gsmsmsd runs with own user and group (gsmsms:gsmsms) (Matthias Goebl) - - -- Mark Purcell Tue, 17 May 2005 11:34:45 +0100 - -gsmlib (1.10-5) unstable; urgency=low - - * Change Section: libdevel - * gsm_unix_serial.cc patch from Daniel Schepler to fix g++-3.3 - compliation. Thanks. (Closes: Bug#195151) - - -- Mark Purcell Sat, 19 Jul 2003 15:57:28 +1000 - -gsmlib (1.10-4) unstable; urgency=low - - * Include file descriptor leak patch from Edd Dumbill (Closes: - Bug#168475) - * lintian cleanup: description-synopsis-might-not-be-phrased-properly - * lintian cleanup: configure-generated-file-in-source - - -- Mark Purcell Sun, 9 Feb 2003 14:04:54 +1100 - -gsmlib (1.10-3) unstable; urgency=low - - * New Maintainer (Closes: Bug#180061). Thanks Mikael for your work. - - -- Mark Purcell Sat, 8 Feb 2003 16:55:26 +1100 - -gsmlib (1.10-2) unstable; urgency=low - - * Rebuild to use the new c++ ABI (GCC 3.2) - - -- Mikael Hedin Thu, 23 Jan 2003 20:57:50 +0100 - -gsmlib (1.10-1) unstable; urgency=low - - * New upstrem release. - - -- Mikael Hedin Wed, 6 Nov 2002 17:44:17 +0100 - -gsmlib (1.9-2) unstable; urgency=low - - * Made new rules for the config.guess/sub update thing (closes: #146865, - #146867). - - -- Mikael Hedin Tue, 14 May 2002 09:28:03 +0200 - -gsmlib (1.9-1) unstable; urgency=low - - * New upstream version. - * Use chrpath to get rid of rpaths. - * Add mini-manpage for gsmsiexfer. - * Remove b-d on auto-stuff, we don't use them. - - -- Mikael Hedin Mon, 13 May 2002 22:10:28 +0200 - -gsmlib (1.8-2) unstable; urgency=low - - * Removed b-d on gcc 3.0, as they are no longer nessecary. - - -- Mikael Hedin Thu, 24 Jan 2002 12:59:07 +0100 - -gsmlib (1.8-1) unstable; urgency=low - - * New upstream version. - * Revert the arch hack, now it should compile with either g++. - * Include the new lib in libgsmme1. Run dh_makeshlibs -V because of this. - * Added info for gsmsiectl in gsmctl(1). - - -- Mikael Hedin Wed, 9 Jan 2002 22:38:45 +0100 - -gsmlib (1.7-2) unstable; urgency=low - - * gsm-utils: Added shlibs:Depends (closes: #126127). - * Spelling correction (closes: #124705, #124972) - * Rm libgsmme1.postins, and let dh_makeshlibs take care of ldconfig. - * Made explicit arch list without sparc and arm, they cannot use g++-3.0 - right now. - - -- Mikael Hedin Sat, 22 Dec 2001 20:27:54 +0100 - -gsmlib (1.7-1) unstable; urgency=low - - * New upstream - * Use gcc-3.0 and g++-3.0, 2.95 doesn't compile. - - -- Mikael Hedin Thu, 1 Nov 2001 10:24:33 +0100 - -gsmlib (1.6-5) unstable; urgency=low - - * Updated manpage (closes: #110973) - * Corrected problem with OP status (closes: #110970) - - -- Mikael Hedin Sat, 8 Sep 2001 18:12:17 +0200 - -gsmlib (1.6-4) unstable; urgency=low - - * Support DEB_BUILD_OPTIONS - * Changed libgsmme-dev to section devel. - * Reran libtoolize. - * Lots of small patches to compile with g++-3.0. (Closes: #104411) - * Removed dh_testversion. - - -- Mikael Hedin Thu, 12 Jul 2001 16:06:23 +0200 - -gsmlib (1.6-3) unstable; urgency=low - - * Various minor corrections. - - -- Mikael Hedin Thu, 8 Mar 2001 16:24:07 +0100 - -gsmlib (1.6-2) unstable; urgency=low - - * Dont install INSTALL. Correct indentation for libgsmme1 description. - - -- Mikael Hedin Tue, 6 Mar 2001 14:55:05 +0100 - -gsmlib (1.6-1) unstable; urgency=low - - * New upstream version. - - -- Mikael Hedin Mon, 29 Jan 2001 17:57:21 +0100 - -gsmlib (1.5-1) unstable; urgency=low - - * Initial Release. - - -- Mikael Hedin Thu, 14 Dec 2000 01:06:40 +0100 - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat deleted file mode 100644 index b8626c4cff..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat +++ /dev/null @@ -1 +0,0 @@ -4 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control deleted file mode 100644 index b230b8b838..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control +++ /dev/null @@ -1,45 +0,0 @@ -Source: gsmlib -Section: comm -Priority: extra -Maintainer: Mark Purcell -Build-Depends: debhelper (>= 3.0.0), chrpath -Standards-Version: 3.7.3 -Homepage: http://www.pxh.de/fs/gsmlib/ - -Package: libgsmme-dev -Section: libdevel -Architecture: any -Depends: libgsmme1c2a (= ${binary:Version}), libc6-dev -Description: Header files and static libraries for gsmlib - Headers and static libraries for use when compiling programs with - gsmlib. - . - gsmlib is a library for access to a GSM mobile phone using the - standards ETSI GSM 07.07, ETSI GSM 07.05, and others. - -Package: libgsmme1c2a -Conflicts: libgsmme1, libgsmme1c102, libgsmme1c2 -Replaces: libgsmme1c102, libgsmme1c2 -Section: libs -Architecture: any -Depends: ${shlibs:Depends} -Description: GSM mobile phone access library - Library to access GSM mobile phones through GSM modems or IrDA devices. - Features include: - . - * modification of phone books stored in the mobile phone or on the - SIM card - * reading and writing of SMS messages stored in the mobile phone - * sending and reception of SMS messages - . - gsmlib uses standard ETSI GSM 07.07, ETSI GSM 07.05, and others. - -Package: gsm-utils -Section: comm -Architecture: any -Depends: ${shlibs:Depends}, adduser -Description: GSM mobile phone access applications - Some simple command line programs to access a GSM mobile phone via - GSM modem or IrDA. Functions include: modification of phone books and - reading, writing, sending and receiving SMS messages. Uses the GSM - standards ETSI GSM 07.07, ETSI GSM 07.05, and others. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright deleted file mode 100644 index dcb44c32cd..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright +++ /dev/null @@ -1,34 +0,0 @@ -This package was debianized by Mikael Hedin on -Thu, 14 Dec 2000 01:06:40 +0100. - -It was downloaded from http://www.pxh.de/fs/gsmlib/index.html - -Upstream Author: Peter Hofmann - -ext/gsmsiexfer.cc:// * Author: Christian W. Zuckschwerdt - -Copyright: - - Copyright (C) 1999-2002 Peter Hofmann - -License: - - This package is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This package 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU Lesser General -Public License can be found in `/usr/share/common-licenses/LGPL'. - -The Debian packaging is (C) 2000, Mikael Hedin and -is licensed under the GPL, see `/usr/share/common-licenses/GPL'. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs deleted file mode 100644 index a39a14c5cf..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs +++ /dev/null @@ -1 +0,0 @@ -/var/run/gsm-utils diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d deleted file mode 100644 index 7974513ccc..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d +++ /dev/null @@ -1,3 +0,0 @@ -# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils - -*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default deleted file mode 100644 index 11901da54a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default +++ /dev/null @@ -1,18 +0,0 @@ -PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -BAUDRATE=9600 -PIN="" # or 1234 - -# RUNGSMSMS: If set to anything other that 'yes', the asterisk init.d script -# will not run. The default is 'yes'. -# You should probaly also install the crontab from /usr/share/doc/gsm-utils/examples -RUNGSMSMS=no - -SPOOLDIR=/var/spool/sms -PRIORITIES=3 - -SMSADMIN=root -SUBJECT="SMS delivery report:" - -SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor - -do_accounting () { true; } # it's your turn diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs deleted file mode 100644 index 7bc765edd6..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs +++ /dev/null @@ -1,11 +0,0 @@ -var/spool/sms/queue1 -var/spool/sms/queue2 -var/spool/sms/queue3 -var/spool/sms/sent1 -var/spool/sms/sent2 -var/spool/sms/sent3 -var/spool/sms/failed1 -var/spool/sms/failed2 -var/spool/sms/failed3 -var/spool/sms/tmp -var/run/gsm-utils diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs deleted file mode 100644 index d4f3801ab1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs +++ /dev/null @@ -1,4 +0,0 @@ -NEWS -README -TODO -doc/FAQ diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples deleted file mode 100644 index bd892f97be..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples +++ /dev/null @@ -1,2 +0,0 @@ -contrib/gsm-utils.cron.d -contrib/gsm-utils.init diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init deleted file mode 100644 index bc51002f65..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init +++ /dev/null @@ -1,87 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: gsm-utils -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start daemon at boot time -# Description: Enable service provided by daemon. -### END INIT INFO -# -# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon -# -# written by Matthias Goebl - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/bin/gsmsmsd -NAME=gsmsmsd -DESC="GSM SMS send daemon" - -test -x $DAEMON || exit 0 - -if [ "$RUNGSMSMS" != "yes" ];then - echo "GSM SMS deamon not yet configured. Edit /etc/default/gsm-utils first." - exit 0 -fi - - -PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -BAUDRATE=9600 -PIN="" # or 1234 -SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -SPOOLDIR=/var/spool/sms -PRIORITIES=3 -STARTOPTS="" -SMSUSER="gsmsms:gsmsms" -test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters - -OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" -OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" -test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" -test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" -test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS - -case "$1" in - start) - echo -n "Starting $DESC: " - if [ -n "$PIN" ];then - echo -n "entering PIN.. " - ( - # This is ugly.. But if the PIN is already entered, the ME returns - # "ERROR" and makes gsmctl retrying.. - /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & - PID=$! - sleep 3 - kill $PID 2>/dev/null - ) >/dev/null 2>&1 - fi - echo -n "$NAME" - start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME " - start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --exec $DAEMON - sleep 5 - echo "." - ;; - restart|force-reload) - echo -n "Restarting $DESC: $NAME" - start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --make-pidfile --background --exec $DAEMON -- $OPTIONS - sleep 5 - start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ - --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS - echo "." - ;; - *) - N=/etc/init.d/gsm-utils - echo "Usage: $N {start|stop|restart|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst deleted file mode 100644 index 2954c4a400..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -e - -# create gsmsms group if necessary. -if ! grep -q ^gsmsms: /etc/group; then -# echo Adding system group: gsmsms. - addgroup --system gsmsms -fi - -# create gsmsms user if necessary. -if ! grep -q ^gsmsms: /etc/passwd; then -# echo Adding system user: gsmsms. - adduser --system --ingroup gsmsms \ - --no-create-home --home /var/spool/sms gsmsms -fi - -# allow gsmsms to use serial lines -if ! groups gsmsms | grep -q dialout ; then - adduser gsmsms dialout -fi - -# echo Updating spool directory structure: /var/spool/sms -chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils -chmod 700 /var/spool/sms/* -chmod 750 /var/spool/sms -chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp - -# Add the rest automatically.. -#DEBHELPER# diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm deleted file mode 100644 index cba60a894c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -# postrm script for #PACKAGE# -# -# see: dh_installdeb(1) - -set -e - -# summary of how this script can be called: -# * `remove' -# * `purge' -# * `upgrade' -# * `failed-upgrade' -# * `abort-install' -# * `abort-install' -# * `abort-upgrade' -# * `disappear' -# -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package - - -case "$1" in - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - ;; - - purge) - deluser gsmsms - ;; - - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - -#DEBHELPER# - -exit 0 - - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 deleted file mode 100644 index 4dc996578a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 +++ /dev/null @@ -1,29 +0,0 @@ -.\" -*- eval: (nroff-mode) -*- -.de TQ -.br -.ns -.TP \\$1 -.. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -.TH GSMSIEXFER 1 "" "gsmsiexfer" -.SH NAME -gsmsiexfer \- Siemens ME file transfer program for Siemens phones S25, S35, S45, ME45, SL45 -.SH SYNOPSIS -.B gsmsiexfer \-\-help -.PP -.SH DESCRIPTION -\fIgsmsiexer\fP comes with no man page. Try gsmsiexfer \-\-help, or -read the source. -.PP -.SH "SEE ALSO" -.BR gsminfo(7), -.BR gsmctl(1), -.BR gsmsendsms(1), -.BR gsmsmsd(8), -.BR gsmsmsstore(1). - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs deleted file mode 100644 index 8c378905c5..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs +++ /dev/null @@ -1,2 +0,0 @@ -doc/README.developers -doc/README.NLS diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules deleted file mode 100644 index a615ea02d4..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# shared library versions, option 1 -#version=2.0.5 -#major=2 -# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so -me_version=`ls gsmlib/.libs/libgsmme*.so.* | \ - awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -me_major=`ls gsmlib/.libs/libgsmme*.so.* | \ - awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` -ex_version=`ls ext/.libs/libgsmext*.so.* | \ - awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -ex_major=`ls ext/.libs/libgsmext*.so.* | \ - awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` - - -export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - - -# FOR AUTOCONF 2.13 ONLY -ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) - confflags += $(DEB_HOST_GNU_TYPE) -else - confflags += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE) -endif - -ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) -CFLAGS += -g -CXXFLAGS += -g -endif - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" INSTALL_PROGRAM=$(INSTALL_PROGRAM) \ - ./configure $(confflags) --prefix=/usr --mandir=\$${prefix}/share/man \ - --infodir=\$${prefix}/share/info - - touch configure-stamp - -build: configure-stamp build-stamp -build-stamp: - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - - touch build-stamp - -clean: - dh_testdir - dh_testroot - - # Add here commands to clean up after the build process. - [ ! -f Makefile ] || $(MAKE) distclean - rm -f build-stamp configure-stamp config.log config.status po/de.gmo - - -test -r /usr/share/misc/config.sub && \ - cp -f /usr/share/misc/config.sub scripts/config.sub - -test -r /usr/share/misc/config.guess && \ - cp -f /usr/share/misc/config.guess scripts/config.guess - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - dh_installdirs -pgsm-utils - - # Add here commands to install the package into debian/gsmlib. - $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp - chrpath -d debian/tmp/usr/bin/* - cp contrib/gsmsmsspool contrib/gsmsmsrequeue debian/tmp/usr/bin - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - # - # build libgsmlib${major} package by moving files from gsmlib-dev - # - dh_movefiles -plibgsmme$(me_major)c2a \ - usr/lib/libgsmme.so.$(me_major) \ - usr/lib/libgsmme.so.$(me_version) \ - usr/lib/libgsmext.so.$(ex_major) \ - usr/lib/libgsmext.so.$(ex_version) \ - usr/share/locale - - dh_movefiles -plibgsmme-dev \ - usr/include \ - usr/lib - - dh_movefiles -pgsm-utils \ - usr/bin - - - dh_installdocs - dh_installexamples - dh_installmenu - dh_installinit - dh_installcron - dh_installman -pgsm-utils debian/*.1 debian/tmp/usr/share/man/man*/* - dh_installinfo - dh_installchangelogs ChangeLog - dh_link - dh_strip - dh_compress - dh_fixperms - dh_makeshlibs -V - dh_installdeb - dh_shlibdeps -ldebian/libgsmme1c2a/usr/lib - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch deleted file mode 100644 index 530c7916ca..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch +++ /dev/null @@ -1,2 +0,0 @@ -version=2 -http://www.pxh.de/fs/gsmlib/download/content.html gsmlib-(.*)\.tar\.gz diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ deleted file mode 100644 index 303ab14555..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ +++ /dev/null @@ -1,101 +0,0 @@ -*** 1. I get the error - /usr/local/bin/gsmsmsd [ERROR]: cannot route status report message to TE - -Some phones/modems cannot route all kinds of SMS to the TE -(computer). Please try - - gsmsmsd no_stat - -This is documented in the gsmsmsd manual page. - - -*** 2. Siemens M20T expects an initial PIN. - -For the Siemens M20T an initial PIN must be send once (probably when -it is switched on or the computer is powered on). This PIN is used for -all subsequent invocations of gsmlib-based programs. The trick is to -issue the following program (eg. in the rc-scripts of the operating system): - - gsmctl -I "+cpin=" - - -*** 3. Sending SMS with or retrieving SMS from my Ericsson SH888 does -not work. - -Set the environment variable GSMLIB_SH888_FIX: - -export GSMLIB_SH888_FIX=1 (bash) -setenv GSMLIB_SH888_FIX 1 (tcsh) - -If it works now, I need your model number. You could just enter -"AT+CGMM" in a terminal program and send me the results. Alternatively -set the environment variable GSMLIB_DEBUG=2 and me the dump. - -*** 4. I get the error "ME/TA error 'Unidentified subscriber' (code -28)" when trying to send SMS using gsmsendsms or gsmsmsd. - -The SMS service centre address (SCA, the phone number of the centre that is -accepting SMS for delivery) is not set correctly in your phone. There -are three ways to correct this: - -1. set the default SCA (example is for Germany T-D1): - - gsmctl -o setsca "+491710760000" - -2. Use the menus of your phone to set the SMS SCA. - -3. Use the option "--sca 1234567" for the gsmsmsd, gsmsmsstore, and -gsmsendsms programs. This tries to set the SCA in the SMS itself (does -not change default SCA) and might not work with all phones. - -*** 5. gsmlib works unreliably with my phone. - -Try another baudrate, even higher baudrates sometimes work better then -lower ones. - -*** 6. On Win32 accessing the COM device fails. - -Use COMx: (x is the number of the COM device) instead of the UNIX -device name. If this doesn't work use "\\.\COMx:". - -*** 7. Windows 2000 Does Not Support Mapping Virtual COM Ports to - Infrared Ports. - -Windows 2000 users should follow the instructions in -support.microsoft.com article Q252795 in order to connect with their -mobile. - -*** 8. gcc-compiled shared C++ libraries do not work properly on some - commercial UNIX systems and with older version of gcc. - -The symptoms may be that the program dumps core on exceptions (AIX) or that -global constructors are not called (Solaris). - -Try to compile gsmlib with - - ./configure --disable-shared --enable-static - -if you encounter strange problems. - -*** 9. How to support unicode? - -You need 6 steps: - -1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET - -2. set your locale correctly, for example, my locale, china. - setlocale(LC_ALL, "chs"); - -3. translate MBCS(multiple byte character set) string to unicode string. - wchar_t wstr[ 1000 ]; - memset(wstr, 0, 2000); - mbstowcs(wstr, data.c_str(), data.length()); - -4. get unicode string length. - int wcs_len = wcslen(wstr); - -5. change unicode string to net order. - for (int i = 0; i < wcs_len; i++) - wstr[ i ] = htons(wstr[ i ]); - -6. put unicode string into pdu. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am deleted file mode 100644 index f194f8d496..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: doc Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 11.6.1999 -# ************************************************************************* - -man_MANS = gsmsmsd.8 gsmctl.1 gsmpb.1 gsmsendsms.1 gsmsmsstore.1 gsminfo.7 - -EXTRA_DIST = gsmsmsd.man gsmctl.man gsmpb.man gsmsendsms.man \ - gsmsmsstore.man gsmlib.lsm gsminfo.man \ - README.NLS README.developers FAQ - -%.1: %.man - sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ - $< > $@ - -%.7: %.man - sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ - $< > $@ - -%.8: %.man - sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ - $< > $@ - -clean-local: - rm -f *.1 *.7 *.8 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in deleted file mode 100644 index f0f33528e3..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in +++ /dev/null @@ -1,412 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: doc Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 11.6.1999 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -man_MANS = gsmsmsd.8 gsmctl.1 gsmpb.1 gsmsendsms.1 gsmsmsstore.1 gsminfo.7 - -EXTRA_DIST = gsmsmsd.man gsmctl.man gsmpb.man gsmsendsms.man \ - gsmsmsstore.man gsmlib.lsm gsminfo.man \ - README.NLS README.developers FAQ - -subdir = doc -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = - -NROFF = nroff -MANS = $(man_MANS) -DIST_COMMON = Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -man1dir = $(mandir)/man1 -install-man1: $(man1_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man1dir) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 1*) ;; \ - *) ext='1' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ - done -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ - rm -f $(DESTDIR)$(man1dir)/$$inst; \ - done - -man7dir = $(mandir)/man7 -install-man7: $(man7_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man7dir) - @list='$(man7_MANS) $(dist_man7_MANS) $(nodist_man7_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.7*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 7*) ;; \ - *) ext='7' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man7dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man7dir)/$$inst; \ - done -uninstall-man7: - @$(NORMAL_UNINSTALL) - @list='$(man7_MANS) $(dist_man7_MANS) $(nodist_man7_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.7*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man7dir)/$$inst"; \ - rm -f $(DESTDIR)$(man7dir)/$$inst; \ - done - -man8dir = $(mandir)/man8 -install-man8: $(man8_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(man8dir) - @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - case "$$ext" in \ - 8*) ;; \ - *) ext='8' ;; \ - esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ - done -uninstall-man8: - @$(NORMAL_UNINSTALL) - @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ - inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ - rm -f $(DESTDIR)$(man8dir)/$$inst; \ - done -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 $(MANS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man7dir) $(DESTDIR)$(man8dir) - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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-local mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic distclean-libtool - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-exec-am: - -install-info: install-info-am - -install-man: install-man1 install-man7 install-man8 - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -uninstall-am: uninstall-info-am uninstall-man - -uninstall-man: uninstall-man1 uninstall-man7 uninstall-man8 - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - clean-local distclean distclean-generic distclean-libtool \ - distdir dvi dvi-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-man1 install-man7 \ - install-man8 install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool uninstall \ - uninstall-am uninstall-info-am uninstall-man uninstall-man1 \ - uninstall-man7 uninstall-man8 - - -%.1: %.man - sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ - $< > $@ - -%.7: %.man - sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ - $< > $@ - -%.8: %.man - sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ - $< > $@ - -clean-local: - rm -f *.1 *.7 *.8 -# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS deleted file mode 100644 index a5381f6104..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS +++ /dev/null @@ -1,72 +0,0 @@ -0 Introduction --------------- - -This version of gsmlib contains national language support (NLS) using -the GNU (or OS-supplied) gettext library. gettext eases the handling -of translations of (usually english) output messages to other -languages by introducing the concept of message catalogs. - -Message catalogs can exist in various formats. The human-readable and --editable format is the PO file format. I have written a PO-file for -the german language (de.po). These human-readable files are then -translated to MO files which can be used by the gettext library. - -Please refer to the GNU gettext documentation (at the time of this -writing gettext-0.10) for further details. - - -1 Compiling gsmlib with localized messages ------------------------------------------- - -Gsmlib is compiled by default with NLS enabled. If you don't want -NLS invoke configure with the option - -./configure --disable-nls - - -2 Adding new message dialogs ----------------------------- - -1. Edit the ALL_LINGUAS line in "source/configure.in" and add your - language, eg. French: - - ALL_LINGUAS="de fr" - -2. Execute "autoconf" to create a new "configure" script (possible - problem: incompatible "autoconf") - -3. Now issue "./configure" in the "sources" directory. - -4. go to the "po" subdirectory - -5. do a "touch fr.po" to create an initially empty PO-file. - -6. do a "make update-po". This extracts all the strings from the files - listed in "POTFILES" and puts them with empty translations into "fr.po" - (it also updates existing po-Files such as "de.po"). - -7. Now use the editor of your choice to provide translations in - "fr.po". There is an emacs major mode (po-mode) that eases this - process. - -8. now issue "make". This causes an "fr.mo" to be created. - - -3 Adding new strings to gsmlib source code ------------------------------------------- - -1. If you add new strings to the gsmlib source code that need - translation enclose them with "_(" and ")" (see gettext documentation - for special cases). - -2. go to the "po" directory. - -3. do a "make update-po". This updates all existing PO-files (removing - obsolete translations, providing new, emptry entries). - -4. Provide translations for the new, empty entries (ideally using - emacs po-mode) - -5. now issue "make". This causes up-to-date MO-files to be created. - - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers deleted file mode 100644 index 7fdcc11940..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers +++ /dev/null @@ -1,138 +0,0 @@ -OVERVIEW - - The GSM library is written in C++ and uses the latest C++ - features: namespaces, exceptions, the standard template library. - - The actual library source code is in the gsmlib subdirectory of - this distribution. The following modules are available: - - gsm_alloca.h OS-specific alloca defines - gsm_at.h Utility classes for AT command sequence handling - gsm_error.h Error codes and error handling functions - gsm_event.h Event handler interface - gsm_me_ta.h Mobile Equipment/Terminal Adapter and SMS functions - (ETSI GSM 07.07 and 07.05) - gsm_parser.h Parser to parse MA/TA result strings - gsm_phonebook.h Phonebook management functions - gsm_port.h Abstract port definition - gsm_sms.h SMS functions (ETSI GSM 07.05) - gsm_sms_codec.h Coder and Encoder for SMS TPDUs - gsm_sms_store.h SMS functions, SMS store (ETSI GSM 07.05) - gsm_sorted_phonebook.h Alphabetically sorted phonebook - (residing in files or in the ME) - gsm_sorted_sms_store.h Sorted SMS store - (sorted by address, time or type) - (residing in files or in the ME) - gsm_unix_serial.h UNIX serial port implementation - gsm_util.h Various utilities - - -REQUIREMENTS - - I have used egcs-1.1.2 and libstdc++.so.2.8.0 for compiling the - library and all programs. Older probably don't work because of - missing features. - - -AVAILABLE DOCUMENTATION - - If you want to do your own programming using the GSM library please - refer to the extensively documented header files or to the example - programs in the test or apps subdirectory. - - I have used the following documentation to develop this software: - - gts_gsm_02.30_v5.2.0.pdf - gts_gsm_03.40_v5.3.0.pdf - gts_gsm_04.11_v5.1.0.pdf - gts_gsm_02.82_v5.0.0.pdf - gts_gsm_03.41_v5.2.0.pdf - gts_gsm_07.05_v5.3.0.pdf - gts_gsm_03.38_v5.3.0.pdf - gts_gsm_04.08_v5.1.0.pdf - gts_gsm_07.07_v5.0.0.pdf - - Due to copyright reasons I cannot include this documentation in - this distribution. You can download it from the ETSI website - (www.etsi.org) for free, though. - - -COMPILATION - - The code is automatically compiled without debugging code enabled - (mostly assert()'s). - - If there are any problems you can generate a debug version - by issuing - - CXXFLAGS="-g" ./configure --disable-shared - - To switch on asserts and additional debugging output change the line - - CXXFLAGS="-DNEBUG $CXXFLAGS" - - in configure.in do - - dnl CXXFLAGS="-DNEBUG $CXXFLAGS" - - Then regenerate configure by executing autoconf. - - You must use at least gcc-2.95.2 to compile gsmlib successfully. - - -TESTS - - The tests directory contains a number of software tests. Two kinds - of test programs are provided: Those, that run without a mobile - phone and those that require a mobile phone to be connected to a - serial port. - - No access to mobile phone needed: - runparser.sh Test the parser for AT responses - runsms.sh Test SMS message encoding and decoding routines - runspb.sh Test sorted phonebook module - runssms.sh Test sorted SMS store module - - Give mobile phone device as argument: - testsms2 Manipulate SMS store in the mobile phone (read/write) - testgsmlib Test the gsm_me_ta module (readonly) - testpb Dump all phonebooks in the mobile phone to the stdout - (readonly) - testpb2 Manipulate phonebook in the mobile phone (read/write) - - The tests that do not require a mobile phone can be executed by - issuing "make check" in the tests subdirectory. The others must be - invoked manually. WARNING: These tests alter the contents of the - mobile phone's phonebook or SMS message memory!!! Make sure, that - you understand what the test does and be prepared for loss of data in - the mobile phone. - -HINTS - - - By default gsmlib is compiled with NDEBUG set. There are lots - of assert()s all over the library that may help to find problems - in programs that use the library. Disable NDEBUG to get best - debugging support. - -CUSTOM BACKENDS - - gsmlib now allows custom backends to be defined for sorted phonebooks - and sorted SMS stores. This can be used to store phonebook entries in - relational databases or LDAP servers. The interfaces are defined in - gsm_sorted_phonebook_base.h and gsm_sorted_sms_store_base.h, - respectively. - - To register a custom backend (eg. for sorted phonebooks) follow - these steps: - - 1. Define a subclass of CustomPhonebookFactory. - - 2. Define a static initializer class in your module that uses the - interface CustomPhonebookRegistry::registerCustomPhonebookFactory() - to make your custom backend available. - - 3. Link your module to any application that should use your custom - backend. The gsmpb and gsmsmsstore programs are prepared to use the - CustomPhonebookRegistry class to obtain your custom backend - objects. - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man deleted file mode 100644 index fdd48d3377..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man +++ /dev/null @@ -1,683 +0,0 @@ -.TH GSMCTL 8 "##DATE##" "gsmctl v##VERSION##" -.SH NAME -gsmctl, gsmsiectl \- GSM mobile phone control program -.SH SYNOPSIS -.B gsmctl -.RB [\| \-b -.IR baudrate \|] -.RB [\| \-\-baudrate -.IR baudrate\| ] -.RB [ \|\-d -.IR device\| ] -.RB [ \|\-\-device -.IR device\fP ] -.RB [ \|\-h\| ] -.RB [ \|\-\-help\| ] -.RB [ \|\-I -.IR "init string" \|] -.RB [ \|\-\-init -.IR "init string" \|] -.RB [ \|\-v\| ] -.RB [ \|\-\-version\| ] -.RB [ \|\-X\| ] -.RB [ \|\-\-xonxoff\| ] -.BI \-o \ operation -.RB | \ \-\-operation -.IR operation \ | -.I parameters -.PP -.B gsmsiectl -.RB [\| \-b -.IR baudrate \|] -.RB [\| \-\-baudrate -.IR baudrate\| ] -.RB [ \|\-d -.IR device\| ] -.RB [ \|\-\-device -.IR device\fP ] -.RB [ \|\-h\| ] -.RB [ \|\-\-help\| ] -.RB [ \|\-I -.IR "init string" \|] -.RB [ \|\-\-init -.IR "init string" \|] -.RB [ \|\-v\| ] -.RB [ \|\-\-version\| ] -.RB [ \|\-X\| ] -.RB [ \|\-\-xonxoff\| ] -.BI \-o \ operation -.RB | \ \-\-operation -.IR operation \ | -.I parameters -.SH DESCRIPTION -.B gsmctl -can request information from or perform operations on an GSM mobile -phone. -.PP -.B gsmctl -attaches itself to the -.I device -given on the command line (usually an GSM modem) using the specified -.IR baudrate . -If no -.I device -is given, the device -.I /dev/mobilephone -is used. If no -.I baudrate -is given, a default baud rate of 38400 is used. -.PP -.B gsmctl -can be used in to modes: If no -.B \-\-operation -option is given the -.I parameters -specify the status information to be retrieved from -the mobile phone. See the section -.B STATUS INFORMATION -for more details. If an -.B \-\-operation -option is given the requested -.I operation -is performed on the mobile using the -.IR parameters . -See the section -.B OPERATIONS -for more details. -.PP -.B gsmsiectl -is the same program with some extension for Siemens mobile phones. -Some extra -.B OPERATIONS -are available in this case. -.PP -Error messages are printed to the standard error output. If the -program terminates on error the error code 1 is returned. -.SH OPTIONS -.TP -.BI \-b\ baudrate ,\ \-\-baudrate\ baudrate -The baud rate to use. Defaults to 38400. -.TP -.BI \-d\ device ,\ \-\-device\ device -The device to which the GSM modem is connected. The default is -.IR /dev/mobilephone . -.TP -.B \-h,\ \-\-help -Prints an option summary. -.TP -.BI \-I\ "init string" ,\ \-\-init\ "init string" -Initialization string to send to the TA (default: "E0"). Note that the -sequence "ATZ" is sent first. -.TP -.BI \-o\ operation ,\ \-\-operation\ operation -This option is used to perform an operation on the mobile phone. Refer -to the section -.B OPERATIONS -for more information on the available -operations and the -.I parameters -required for each operation. -.TP -.B \-v,\ \-\-version -Prints the program version. -.TP -.B \-X,\ \-\-xonxoff -Uses software handshaking (XON/XOFF) for accessing the device. -.SH STATUS INFORMATION -If called without the -.B \-\-operation -option -.B gsmctl -prints out default mobile phone status information as specified by the -.I parameters -described below: -.TP 7 -.B ALL -Prints all available information. -.TP 7 -.B BATT -Prints out information about the current battery status. Two lines of -the form " text" and " charge" are printed. Text may be -of "0 ME is powered by the battery", "1 ME has a battery connected, -but is not powered by it", "2 ME does not have a battery connected", -or "3 Recognized power fault, calls inhibited". Charge is a number in -the range 0..100 where 0 means that the battery is empty or not -connected and 100 means full charge. -.TP 7 -.B BITERR -Prints information about the current bit error rate. The output is of -form " value" where value can be of 0..7, 99 (99 means not -available or not detectable). -.TP 7 -.B CLIP -This option prints a line of the form " on" if caller line -identification is turned on in the network, " off" otherwise. -.TP 7 -.B CSET -Display info about charsets. The output is in the form " -available" and " current", which describes the charsets -available and which is current. -.TP 7 -.B CURROP -Prints information about the current operator. The output line has the -form " Long name: \'xxxx\' Short name: \'yyyy\' Numeric Name: zzzz". -.TP 7 -.B FLCAP -Prints out the two-letter names of available facility locks. The -meaning of standardized facility lock names is as follows: -.RS -.TP 3 -.I CS -Lock control surface (eg. phone keyboard) -.TP 3 -.I PS -Lock phone to SIM card (mobile phone asks password when other than -current SIM card inserted) -.TP 3 -.I SC -Lock SIM card (SIM asks password in mobile phone power-up and when -this lock command issued) -.TP 3 -.I AO -Barr all outgoing calls -.TP 3 -.I OI -Barr outgoing international calls -.TP 3 -.I OX -Barr outgoing international calls except to home country -.TP 3 -.I AI -Barr all incoming calls -.TP 3 -.I IR -Barr incoming calls when roaming outside the home country -.TP 3 -.I NT -Barr incoming calls from numbers not stored to TA memory -.TP 3 -.I NM -Barr incoming calls from numbers not stored to mobile phone memory -.TP 3 -.I NS -Barr incoming calls from numbers not stored to SIM memory -.TP 3 -.I NA -Barr incoming calls from numbers not stored in Any memory -.TP 3 -.I AB -All Barring services (FIXME) -.TP 3 -.I AG -All outGoing barring services (FIXME) -.TP 3 -.I AC -All inComing barring services (FIXME) -.TP 3 -.I FD -SIM fixed dialling memory feature (if PIN2 authentication has not been -done during the current session, PIN2 is required as ) -.PP -Note that mobile phones may implement facility locks not documented -here. -.RE -.TP 7 -.B FLSTAT -Prints information about the status of facility locking in the mobile -phone. For each facility a line of the form " \'facilityname\' -classes" is printed. The classes may be "Voice", "Data", and/or "Fax" -depending on the class for which the facility is enabled. If "unknown" -is printed out this means that the TA is not able to report the -status. If the facility is not enabled for any class, no class -identifier is printed. See -.B FLCAP -for information about the available two-letter names of facility -locks. -.TP 7 -.B FORW -Prints information about call forwarding enabled in the mobile -phone. For each combination of reason (UnconditionalReason, -MobileBusyReason, NoReplyReason, and NotReachableReason) and class -(Voice, Data, and Fax) a line of the form " reason class -number: xxx subaddr: yyy time: zzz" is printed. The time is the number -of seconds to wait before forwarding in case of NoReplyReason. -.TP 7 -.B ME -Prints manufacturer, model, revision, and serial number of -the mobile phone (ME = mobile equipment). Output lines are numbered from -"" to "". -.TP 7 -.B OP -Prints information about the currently available mobile network -operators. For each operator an output line of the form " status -Long name: \'xxxx\' Short name: \'yyyy\' Numeric name: zzz" is returned -where status may be of: -.RS -.TP 10 -.I unknown -The status of the operator is unknown. -.TP -.I current -This is the currently selected operator. -.TP -.I available -This operator is available for selection. -.TP -.I forbidden -This operator is not available for selection, ie. not -accessible with this SIM card. -.RE -.TP 7 -.B PIN -Prints information about the current PIN status. The output is of -form " status". Where status can be one of the following lines: -.RS -.TP 10 -.I READY -ME is not pending for any password. -.TP -.I SIM PIN -ME is waiting SIM PIN to be given. -.TP -.I SIM PUK -ME is waiting SIM PUK to be given. -.TP -.I PH\-SIM PIN -ME is waiting phone/-to/-SIM card password to be given. -.TP -.I PH/-FSIM PIN -ME is waiting phone/-to/-very first SIM card password to be given. -.TP -.I PH/-FSIM PUK -ME is waiting phone/-to/-very first SIM card unblocking password to be -given. -.TP -.I SIM PIN2 -ME is waiting SIM PIN2 to be given. -.TP -.I SIM PUK2 -ME is waiting SIM PUK2 to be given. -.TP -.I PH/-NET PIN -ME is waiting network personalisation password to be given. -.TP -.I PH/-NET PUK -ME is waiting network personalisation unblocking password to be given. -.TP -.I PH/-NETSUB PIN -ME is waiting network subset personalisation password to be given. -.RE -.TP 7 -.B PW -Facilities in the mobile phone may be protected by passwords (ie. PINs -or PUKs). This option prints out lines of the form " -\'facilityname\' len" for each facility for which a facility lock -password exists. See -.B FLCAP -for information about the available two-letter names of facility -locks. -.TP 7 -.B SCA -Reports the default SMS service centre address currently set in the -mobile phone. -.TP 7 -.B SIG -Prints information about the current network signal -strength. The output is of the form " value". Following values -are possible: -.TP -.po +7 -.I 0 --113 dBm or less -.TP -.I 1 --111 dBm -.TP -.I 2...30 --109... -53 dBm (in steps of 2 dBm) -.TP -.I 31 --51 dBm or greater -.TP -.I 99 -not known or not detectable -.PP -.po -.SH OPERATIONS -.TP -.BI dial\ number -Dials -.IR number . -After dialling -.B gsmctl -waits for a keypress to terminate. -.PP -.B forw -.IR mode\ reason\ number\ [\| facilityclass\| ]\ [ forwardtime ] -.RS -Changes the call forwarding behaviour in the network. -.I mode -can be any of: -.RS 3 -.I disable -Call forwarding is disabled. -.PP -.I enable -Call forwarding is enabled. The call forwarding reason, number, and -(optionally) forwardtime must be registered beforehand. -.PP -.I register -This registers the call forwarding reason, number, and forwardtime in -the network. -.PP -.I erase -This is the counterpart to register. It erase the call forwarding info -in the network. -.RE -.PP -.I reason -can be any of: -.RS 3 -.I unconditional -This applies to every call. -.PP -.I mobilebusy -The mobile phone is busy. -.PP -.I noreply -The call is not answered in \fIforwardtime\fP seconds. -.PP -.I notreachable -Mobile phone cannot be reached (ie. switched off). -.PP -.I all -This refers to all forwarding reasons. -.PP -.I allconditional -This refers to all conditional forward reasons -.RI ( mobilebusy ,\ noreply ,\ notreachable ). -.RE -.PP -.I number -is the number the incoming call is forwarded to. See the explanation -for -.I lock -operation for the meaning of -.IR facilityclass . -The default for -.I forwardtime -is 20 seconds if omitted. -.I forwardtime -can be in the range 1..30. -.RE -.PP -.TP -.BI off -Sets functionality level of the phone to 0 (low functionality). The -effects of this command depend on the phone (eg. sets low power -consumption). -.PP -.TP -.BI on -Sets functionality level of the phone to 1 (high functionality). The -effects of this command depend on the phone. -.PP -.TP -.BI pin\ pin -Sets PIN code. Use -.BI gsmctl\ pin -to get the current pin status. -.PP -.B lock -.IR facility\ [\| facilityclass \|]\ [\| passwd \|] -.RS -Locks the named facility. Use -.BI gsmctl\ flcap -to get a list of supported facilities. The -.I facilityclass -can be any of: -.RS 3 -.I all -Voice, data, and fax. -.PP -.I v\ vf\ vd\ f\ fd\ d -Any combination of voice, data and fax. -.RE -.PP -The default is \fIall\fP if \fIfacilityclass\fP is omitted. The -\fIpasswd\fP is password for the facility. If no password is given -this parameter can be omitted. -.RE -.PP -.BI setop\ opmode\ numericname -.RS -Sets the current operator to -.IR numericname . -Use -.BI gsmctl\ op -to get a list of operators with their numeric codes. -.I opmode -can be any of: -.RS 3 -.I automatic -.PP -.I manual -.PP -.I deregister -Deregister from network. -.PP -.I manualautomatic -If manual selection fails, automatic mode is entered. -.RE -.RE -.PP -.B setpw -.IR facility\ [\| oldpasswd\| ]\ [\| newpasswd\| ] -.RS -Sets the password for the facility. If one of the passwords is omitted -this means that the facility has no password protection. Passwords are -PIN1, PIN2, PUK etc. -.RE -.TP -.BI setsca\ service\ centre\ address -Sets the default SMS service centre address. -.PP -.B unlock -.IR facility\ [\| facilityclass\| ]\ [ \|passwd\| ] -.RS -This is the reverse operation to \fBlock\fP. See above for a -description of the parameters. -.RE -.PP -.B Extra operators for gsmsiectl: -.PP -.B cset -.RS -Charset info. -.RE -.PP -.B pbook -.RS -Phone book info. -.RE -.PP -.B signal -.RS -Signal tone info. -.RE -.PP -.B ring -.RS -Ringing tone info. -.RE -.PP -.B binary -.RS -Binary info. -.RE -.SH EXAMPLES -The following invocation of -.I gsmctl -prints out all available status information for the mobile phone -connected to -.B /dev/mobilephone -.PP -.nf -.IP "" 3 -gsmctl all -.fi -.PP -The output could look like (lines edited to fit): -.RS 3 -.PP -.PD 0 - Manufacturer: SIEMENS -.HP - Model: S10 -.HP - Revision: 06 -.HP - Serial Number: 448058511817585 -.HP - Status: available Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 -.HP - Status: forbidden Long name: 'D2 PRIVAT' Short name: '' Numeric name: 26202 -.HP - Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic -.HP - 'CS' -.HP - 'PS' -.HP - 'SC' Voice Data Fax -.HP - 'AO' -.HP - 'OI' -.HP - 'OX' -.HP - 'AI' -.HP - 'IR' -.HP - 'CS' 'PS' 'SC' 'AO' 'OI' 'OX' 'AI' 'IR' 'AB' 'AG' 'AC' -.HP - 'PS' 8 -.HP - 'SC' 8 -.HP - 'AO' 4 -.HP - 'OI' 4 -.HP - 'OX' 4 -.HP - 'AI' 4 -.HP - 'IR' 4 -.HP - 'AB' 4 -.HP - 'AG' 4 -.HP - 'AC' 4 -.HP - on -.HP - UnconditionalReason Voice inactive number: subaddr: time: -1 -.HP - UnconditionalReason Data inactive number: subaddr: time: -1 -.HP - UnconditionalReason Fax inactive number: subaddr: time: -1 -.HP - MobileBusyReason Voice active number: +494012345678 subaddr: time: -1 -.HP - MobileBusyReason Data inactive number: subaddr: time: -1 -.HP - MobileBusyReason Fax inactive number: subaddr: time: -1 -.HP - NoReplyReason Voice active number: +494012345678 subaddr: time: 20 -.HP - NoReplyReason Data inactive number: subaddr: time: -1 -.HP - NoReplyReason Fax inactive number: subaddr: time: -1 -.HP - NotReachableReason Voice active number: +494012345678 subaddr: time: -1 -.HP - NotReachableReason Data inactive number: subaddr: time: -1 -.HP - NotReachableReason Fax inactive number: subaddr: time: -1 -.HP - 0 ME is powered by the battery -.HP - 100 -.HP - 0 -.HP - 19 -.RE -.PD -.PP -The following locks the keys on the mobile phone: -.nf -.IP "" 3 -gsmctl -o lock cs -.fi -.PP -This changes the SIM card PIN from 1234 to 2345: -.nf -.IP "" 3 -gsmctl -o setpw sc 1234 2345 -.fi -.PP -Switch off all call forwarding (actually erase the numbers): -.nf -.IP "" 3 -gsmctl -o forw erase all -.fi -.PP -Switch on call forwarding to German D1 voice box: -.nf -.IP "" 3 -gsmctl -o forw register notreachable 3313 -gsmctl -o forw enable notreachable -.fi -.PP -.SH FILES -.TP -.B /dev/mobilephone -Default mobile phone device. -.SH AUTHOR -Peter Hofmann -.SH BUGS -Report bugs to software@pxh.de. Include a complete, self-ncontained -example that will allow the bug to be reproduced, and say which -version of \fIgsmctl\fP you are using. -.SH COPYRIGHT -Copyright \(co 1999 Peter Hofmann -.PP -.B gsmctl -is free software; you can redistribute it and/or modify it under the -terms of the GNU Library General Public License as published by the -Free Software Foundation; either version 2, or (at your option) any -later version. -.PP -.B gsmctl -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 Library General Public -License for more details. -.PP -You should have received a copy of the GNU Library General Public -License along with -.BR gsmctl ; -see the file COPYING. If not, write to the Free Software Foundation, -675 Mass Ave, Cambridge, MA 02139, USA. -.SH "SEE ALSO" -.BR gsminfo (7), -.BR gsmpb (1), -.BR gsmsendsms (1), -.BR gsmsmsd (8), -.BR gsmsmsstore (1). - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man deleted file mode 100644 index 7939502779..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man +++ /dev/null @@ -1,56 +0,0 @@ -.\" -*- eval: (nroff-mode) -*- -.de TQ -.br -.ns -.TP \\$1 -.. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -.TH GSMINFO 7 "##DATE##" "gsmctl v##VERSION##" -.PP -.SH NAME -gsminfo \- GSM general information -.PP -.SH DESCRIPTION -\fIgsmlib\fP is a library to access GSM mobile phones through GSM -modems or via IrDA devices. In the \fIgsmlib\fP documentation and error -messages the following abbreviations are used: -.TP .7i -\fBME\fP -Mobile Equipment. The mobile phone, usually. -.TP .7i -\fBSC\fP -Service Centre. In the context of this documentation, the center -responsible for sending and relaying SMs. -.TP .7i -\fBSM\fP -Short Message. -.TP .7i -\fBSME\fP -Short Message Equipment. Usually the mobile phone. -.TP .7i -\fBTA\fP -Terminal Adapter. This can be a GSM modem PC card or it can be -integrated into the ME. -.TP .7i -\fBTE\fP -Terminal Equipment. This is the device to which the TA is connected, -usually the computer. -.PP -.SH AUTHOR -Peter Hofmann -.PP -.SH COPYRIGHT -Copyright \(co 1999 Peter Hofmann -.PP -.SH "SEE ALSO" -.BR gsmctl(1), -.BR gsmpb(1), -.BR gsmsendsms(1), -.BR gsmsmsd(8), -.BR gsmsmsstore(1). - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm deleted file mode 100644 index 6056b88eed..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm +++ /dev/null @@ -1,20 +0,0 @@ -Begin3 -Title: gsmlib -Version: 1.0 -Entered-date: 29JUL99 -Description: This distribution contains a library to access - GSM mobile phones through GSM modems. Features include: - * modification of phonebooks stored in the - mobile phone or on the SIM card - * reading and writing of SMS messages stored in - the mobile phone - * sending and reception of SMS messages - Additionally, some simple command line programs are - provided to use these functionalities. -Keywords: gsm mobile phone modem sms -Author: Peter Hofmann -Maintained-by: Peter Hofmann -Primary-site: http://www.pxh.de/fs/gsmlib/ -Platforms: Linux -Copying-policy: LGPL -End diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man deleted file mode 100644 index fef171e0aa..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man +++ /dev/null @@ -1,245 +0,0 @@ -.\" -*- eval: (nroff-mode) -*- -.de TQ -.br -.ns -.TP \\$1 -.. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -.TH GSMPB 8 "##DATE##" "gsmpb v##VERSION##" -.SH NAME -gsmpb \- GSM mobile phone phonebook manipulation program -.SH SYNOPSIS -.B gsmpb -[ \fB\-b\fP \fIbaudrate\fP ] -[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -[ \fB\-c\fP ] -[ \fB\-\-copy\fP ] -[ \fB\-d\fP \fIdestination device or file\fP ] -[ \fB\-\-destination\fP \fIdestination device or file\fP ] -[ \fB\-h\fP ] -[ \fB\-\-help\fP ] -[ \fB\-i\fP ] -[ \fB\-\-index\fP ] -[ \fB\-I\fP \fIinit string\fP ] -[ \fB\-\-init\fP \fIinit string\fP ] -[ \fB\-p\fP \fIphonebook name\fP ] -[ \fB\-\-phonebook\fP \fIphonebook name\fP ] -[ \fB\-s\fP \fIsource device or file\fP ] -[ \fB\-\-source\fP \fIsource device or file\fP ] -[ \fB\-t\fP \fIcharacter set\fP ] -[ \fB\-\-charset\fP \fIcharacter set\fP ] -[ \fB\-v\fP ] -[ \fB\-\-version\fP ] -[ \fB\-V\fP ] -[ \fB\-\-verbose\fP ] -[ \fB\-X\fP ] -[ \fB\-\-xonxoff\fP ] -[ \fB\-y\fP ] -[ \fB\-\-synchronize\fP ] -.PP -.SH DESCRIPTION -\fIgsmpb\fP can store or retrieve phonebook entries residing in a GSM -mobile phone's phonebook to or from a file. A synchronization mode is -also available. -.PP -\fIgsmpb\fP reads entries from the source which can be a mobile phone -(if a serial device file is given) or a file (if a file name is -given). The source is never modified. \fIgsmpb\fP writes phonebook -entries to a destination file or device. Depending on the mode the -source is copied to the destination file, thus overwriting the -destination, or the destination is synchronized with regard to the -source which is the default (details see below). -.PP -If "\-" is given as the parameter for the \fB\-\-source\fP or -\fB\-\-destination\fP options, the phonebook is read from standard input -and/or written to standard output, respectively. -.PP -Phonebook entries names are encoded using the GSM default alphabet in -the mobile phone, whereas they are stored using the Latin\-1 encoding -in phonebook files. When reading phonebook entries from a mobile phone -entry names are converted from the GSM default to Latin\-1. Characters -that can not be converted to Latin\-1 are encoded as character code -172 (Latin\-1 boolean "not"). When writing file-based phonebook entries -to a mobile phone a conversion to the GSM default alphabet takes -place. Characters that can not be converted are encoded as GSM delta -(code 16). If the default character set has been changed using the -\fB\-\-charset\fP option no conversion takes place. -.PP -Error messages are printed to the standard error output. If the program -terminates on error the error code 1 is returned. -.PP -.SH OPTIONS -.TP .7i -\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP -The baud rate to use. The default baudrate is 38400. -.TP .7i -\fB\-c\fP, \fB\-\-copy\fP -This causes the contents of the source to be copied to the -destination. After this operation the destination has exactly the same -contents as the source. -.TP .7i -\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP -The destination device or file. -.TP .7i -\fB\-h\fP, \fB\-\-help\fP -Prints an option summary. -.TP .7i -\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP -Initialization string to send to the TA (default: "E0"). Note that the -sequence "ATZ" is sent first. -.TP .7i -\fB\-i\fP, \fB\-\-index\fP -If the index position is given, \fIgsmpb\fP preserves the assignment -of entries to memory slots in the mobile phone's phonebook. This can -be used to backup phonebook entries with their position into a -phonebook file or to change the position of entries by editing a -phonebook file and writing them back to the mobile phone. -If this option is given the phonebook file used as the source -must contain indices for every entry. Additionally, these indices must -be unique, ie. it is not allowed to assign one entry twice to a -specific position in the mobile phone's phonebook. -.TP .7i -\fB\-p\fP \fIphonebook\fP, \fB\-\-phonebook\fP \fIphonebook\fP -The name of the phonebook to read from or write to. This is only used -for device sources and destinations. Commonly available phonebooks -are: -.TP .3i -.po +0.7i -.ll 5.8i -\fIFD\fP -SIM fixdialling\-phonebook -.TP .3i -\fILD\fP -SIM last\-dialling\-phonebook -.TP .3i -\fIME\fP -ME phonebook -.TP .3i -\fIMT\fP -combined ME and SIM phonebook -.TP .3i -\fISM\fP -SIM phonebook -.TP .3i -\fITA\fP -TA phonebook -.TP .7i -.po -0.7i -.ll 6.5i -\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP -The source device or file. -.TP -\fB\-t\fP \fIcharacter set\fP, \fB\-\-charset\fP \fIcharacter set\fP -Set the character set to use for phonebook operations (default is the -GSM default alphabet). -.TP -\fB\-v\fP, \fB\-\-version\fP -Prints the program version. -.TP .7i -\fB\-V\fP, \fB\-\-verbose\fP -Prints out a detailed progress report. -.TP .7i -\fB\-X\fP, \fB\-\-xonxoff\fP -Uses software handshaking (XON/XOFF) for accessing the device. -.TP .7i -\fB\-y\fP, \fB\-\-synchronize\fP -This causes the contents of the source to be synchronized with the -destination (default). Synchronization in this context means: -.TP .2i -.po +0.7i -.ll 5.8i -\- -If the source contains an entry with a name that does not exist in the -destination this entry is added to the destination. -.TP .2i -\- -If the source contains an entry with a name that can also be found in -the destination, the entry in the destination is overwritten (ie. the -telephone number is updated). Exception: More then one entry with the -name exists in the destination. In this case the new entry ist just added. -.TP .2i -\- -Entries in the destination that do not exist in the source are -deleted. -.PP -Note that synchronization has the following properties that differ -from copying: This algorithm does not change the location of unchanged -entries in the destination phonebook. The synchronization function -is not case-sensitive when comparing names. -.PP -.po -0.7i -.ll 6.5i -.SH PHONEBOOK FILE FORMAT -Phonebook entries are stored in phonebook files that are meant to be -human-readable and -editable. There is one phonebook entry per line, -and each line has the format: -.PP -.nf -index|text|phone number -.fi -.PP -The fields have the following meanings: -.TP .7i -\fIindex\fP -The index of the entry which must be a positive number. The index may -also be empty. Indices can be used in conjunction with the -\fB\-\-index\fP option to store the entry into a specific position in -the mobile phone. -.TP .7i -\fItext\fP -Descriptive text for the entry. The text may contain the special -characters '\\', '|', carriage return (ASCII code 13), or line feed -(ASCII code 10). These must be written "\\\\", "\\|", "\\r", "\\n", -respectively. The text should only contain characters that can be -encoded using the GSM default alphabet (see comments above). -.TP .7i -\fIphone number\fP -Phone numbers can only contains the digits 0\-9 and the '+' sign. A '+' -sign denotes an international number. -.PP -.SH EXAMPLES -The following invocation of \fIgsmpb\fP synchronizes the mobile phone's -SIM phonebook with the file $HOME/.phonebook: -.PP -.nf -gsmpb \-\-synchronize \-b 19200 \-d /dev/mobilephone \\ - \-s $HOME/.phonebook \-p "SM" -.fi -.PP -.SH AUTHOR -Peter Hofmann -.PP -.SH BUGS -Report bugs to software@pxh.de. Include a complete, self-contained -example that will allow the bug to be reproduced, and say which -version of \fIgsmpb\fP you are using. -.PP -.SH COPYRIGHT -Copyright \(co 1999 Peter Hofmann -.LP -\fIgsmpb\fP is free software; you can redistribute it and/or modify it under -the terms of the GNU Library General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. -.LP -\fIgsmpb\fP 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 Library General Public License -for more details. -.LP -You should have received a copy of the GNU Library General Public License along -with \fIgsmpb\fP; see the file COPYING. If not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -.PP -.SH "SEE ALSO" -.BR gsminfo(7), -.BR gsmctl(1), -.BR gsmsendsms(1), -.BR gsmsmsd(8), -.BR gsmsmsstore(1). - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man deleted file mode 100644 index d3c8a9c395..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man +++ /dev/null @@ -1,154 +0,0 @@ -.\" -*- eval: (nroff-mode) -*- -.de TQ -.br -.ns -.TP \\$1 -.. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -.TH GSMSENDSMS 8 "##DATE##" "gsmsendsms v##VERSION##" -.PP -.SH NAME -gsmsendsms \- SMS message sender utility -.PP -.SH SYNOPSIS -.B gsmsendsms -[ \fB\-b\fP \fIbaudrate\fP ] -[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -[ \fB\-c\fP \fIconcatenatedID\fP ] -[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] -[ \fB\-C\fP \fIservice centre address\fP ] -[ \fB\-\-sca\fP \fIservice centre address\fP ] -[ \fB\-d\fP \fIdevice\fP ] -[ \fB\-\-device\fP \fIdevice\fP ] -[ \fB\-h\fP ] -[ \fB\-\-help\fP ] -[ \fB\-I\fP \fIinit string\fP ] -[ \fB\-\-init\fP \fIinit string\fP ] -[ \fB\-r\fP ] -[ \fB\-\-requeststat\fP ] -[ \fB\-t\fP ] -[ \fB\-\-test\fP ] -[ \fB\-v\fP ] -[ \fB\-\-version\fP ] -[ \fB\-X\fP ] -[ \fB\-\-xonxoff\fP ] -\fIphonenumber\fP -[ \fItext\fP ] -.PP -.SH DESCRIPTION -\fIgsmsendsms\fP sends SMS short messages using an GSM mobile phone. -.PP -\fIgsmsendsms\fP attaches itself to the \fIdevice\fP given on the command -line (usually an GSM modem) using the specified \fIbaudrate\fP. If no -\fIdevice\fP is given, the device \fI/dev/mobilephone\fP is used. If -no \fIbaudrate\fP is given, a default baud rate of 38400 is used. -.PP -\fIgsmsendsms\fP accepts a phone number (recipient address) and the -short message text as parameters. The text may have a maximum length -of 160 characters which is the maximum SMS message length. The GSM -default alphabet is used for encoding. ASCII and Latin\-1 characters -that can not be encoded using the GSM default alphabet are converted -to the GSM delta character (GSM code 16). -.PP -Error messages are printed to the standard error output. If the program -terminates on error the error code 1 is returned. -.PP -.SH OPTIONS -.TP -\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP -The baud rate to use. -.TP -\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP -If an ID is given, large SMSs are split into several, concatenated -SMSs. All SMSs have the same ID and are numbered consecutively so that -the receiving phone can assemble them in the correct order. IDs must -be in the range 0..255. Not all receiving phones will support -concatenated SMSs (and display them as separate SMSs), -since all the numbering and ID information is -carried in the user data header element at the beginning of the SMS -user data. This information may show up as garbage in such phones. -.TP -\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP -Sets the service centre address to use for all SUBMIT SMSs (may not -work with some phones). -.TP -\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP -The device to which the GSM modem is connected. The default is -\fI/dev/mobilephone\fP. -.TP -\fB\-h\fP, \fB\-\-help\fP -Prints an option summary. -.TP -\fB-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP -Initialization string to send to the TA (default: "E0"). Note that the -sequence "ATZ" is sent first. -.TP -\fB\-r\fP, \fB\-\-requeststat\fP -Request status reports for sent SMS. -.TP -\fB\-t\fP, \fB\-\-test\fP -If this option is given the text is converted -to the GSM default alphabet and back to Latin\-1. This option can be -used to find out how ASCII or Latin\-1 texts are converted to the GSM -default alphabet. Characters that can not be converted to the GSM default -alphabet are reported as ASCII code 172 (Latin\-1 boolean "not") -after this double conversion. No SMS messages are sent, a connection -to a mobile phone is not established. -.TP -\fB\-v\fP, \fB\-\-version\fP -Prints the program version. -.TP -\fB\-X\fP, \fB\-\-xonxoff\fP -Uses software handshaking (XON/XOFF) for accessing the device. -.PP -.SH EXAMPLES -The following two invocations of \fIgsmsendsms\fP each send the same -SMS message to the number "1234": -.PP -.nf -gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 "This is a test." -echo "This is a test." | gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 -.fi -.PP -.SH FILES -.TP 1.4i -.B /dev/mobilephone -Default mobile phone device. -.PP -.SH AUTHOR -Peter Hofmann -.PP -.SH BUGS -Report bugs to software@pxh.de. Include a complete, self-contained -example that will allow the bug to be reproduced, and say which -version of \fIgsmsendsms\fP you are using. -.PP -.SH COPYRIGHT -Copyright \(co 1999 Peter Hofmann -.LP -\fIgsmsendsms\fP is free software; you can redistribute it and/or modify it under -the terms of the GNU Library General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. -.LP -\fIgsmsendsms\fP 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 -Library General Public License for more details. -.LP -You should have received a copy of the GNU Library General Public License along -with \fIgsmsendsms\fP; see the file COPYING. If not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -.PP -.SH "SEE ALSO" -.BR gsminfo(7), -.BR gsmpb(1), -.BR gsmctl(1), -.BR gsmsmsd(8), -.BR gsmsmsstore(1). - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man deleted file mode 100644 index 89e9c95f39..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man +++ /dev/null @@ -1,269 +0,0 @@ -.\" -*- eval: (nroff-mode) -*- -.de TQ -.br -.ns -.TP \\$1 -.. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -.TH GSMSMSD 8 "##DATE##" "gsmsmsd v##VERSION##" -.PP -.SH NAME -gsmsmsd \- SMS message reception daemon -.PP -.SH SYNOPSIS -.B gsmsmsd -[ \fB\-a\fP \fIaction\fP ] -[ \fB\-\-action\fP \fIaction\fP ] -[ \fB\-b\fP \fIbaudrate\fP ] -[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -[ \fB\-c\fP \fIconcatenatedID\fP ] -[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] -[ \fB\-C\fP \fIservice centre address\fP ] -[ \fB\-\-sca\fP \fIservice centre address\fP ] -[ \fB\-d\fP \fIdevice\fP ] -[ \fB\-\-device\fP \fIdevice\fP ] -[ \fB\-D\fP ] -[ \fB\-\-direct\fP ] -[ \fB\-f\fP ] -[ \fB\-\-flush\fP ] -[ \fB\-h\fP ] -[ \fB\-\-help\fP ] -[ \fB\-I\fP \fIinit string\fP ] -[ \fB\-\-init\fP \fIinit string\fP ] -[ \fB\-r\fP ] -[ \fB\-\-requeststat\fP ] -[ \fB\-s\fP \fIspool directory\fP ] -[ \fB\-\-spool\fP \fIspool directory\fP ] -[ \fB\-t\fP \fISMS store name\fP ] -[ \fB\-\-store\fP \fISMS store name\fP ] -[ \fB\-v\fP ] -[ \fB\-\-version\fP ] -[ \fB\-X\fP ] -[ \fB\-\-xonxoff\fP ] -{ \fIsms_type\fP } -.PP -.SH DESCRIPTION -\fIgsmsmsd\fP reads new incoming SMS from the mobile phone and -dispatches them to a user-defined action. Additionally it can send SMS -message that it reads from a spooldir. -.PP -\fIgsmsmsd\fP attaches itself to the \fIdevice\fP given on the command -line (usually an GSM modem) using the specified \fIbaudrate\fP and -waits for incoming SMS messages. If no \fIdevice\fP is given, the -device \fI/dev/mobilephone\fP is used. If no \fIbaudrate\fP is given, a -default baud rate of 38400 is used. -.PP -If no action is given, the SMS message is printed to the standard -output. If an \fIaction\fP is specified the \fIaction\fP is excecuted using the -shell and the SMS message is written to the standard input of the action. -.PP -\fIgsmsmsd\fP needs one empty storage slot for SMS messages in the -mobile phone, otherwise SMS reception will not work. The SMS store to -use for temporary storage of incoming SMS can be selected using the -\fB\-\-store\fP option, otherwise the ME default store is used. -.PP -To terminate \fIgsmsmsd\fP cleanly (without losing SMS messages) one -should send either SIGINT (CTRL\-C on the command line) or SIGTERM to -the process. -.PP -Error messages are printed to the standard error output. If the program -terminates on error the error code 1 is returned. -.PP -\fIsms_type\fP may be any combination of: -.TP -\fIsms\fP, \fIno_sms\fP -Controls reception of normal SMS messages. -.TP -\fIcb\fP, \fIno_cb\fP -Controls reception of cell broadcast messages. -.TP -\fIstat\fP, \fIno_stat\fP -Controls reception of status reports. -.PP -The default is \fIsms\fP, \fIcb\fP, and \fIstat\fP. -.PP -.SH OPTIONS -.TP -\fB\-a\fP \fIaction\fP, \fB\-\-action\fP \fIaction\fP -The action to execute for each incoming SMS message. If no action -is given the SMS is written to the standard output. -.TP -\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP -The baud rate to use. -.TP -\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP -If an ID is given, large SMSs are split into several, concatenated -SMSs. All SMSs have the same ID and are numbered consecutively so that -the receiving phone can assemble them in the correct order. IDs must -be in the range 0..255. This number is increased by one for every -outgoing concatenated SMS and wraps around after 255. -Not all receiving phones will support -concatenated SMSs (and display them as separate SMSs), -since all the numbering and ID information is -carried in the user data header element at the beginning of the SMS -user data. This information may show up as garbage in such phones. -.TP -\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP -Sets the service centre address to use for all SUBMIT SMSs (may not -work with some phones). -.TP -\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP -The device to which the GSM modem is connected. The default is -\fI/dev/mobilephone\fP. -.TP -\fB\-D\fP, \fB\-\-direct\fP -Enables direct routing of incoming SMS messages to the TE. This is not -supported by many mobile phone/GSM modem combinations. Therefore, the -default is to store incoming SMS temporarily before processing them in -the indicated store. -.TP -\fB\-f\fP, \fB\-\-flush\fP -This option causes \fIgsmsmsd\fP to flush (ie. read and erase) -existing SMS messages from -the SMS store selected by the \fB\-\-store\fP option. The action given -by the \fB\-\-action\fP option is executed on each of the flushed -SMS. This option should be used to ensure that enough space is -available in the SMS store for temporary storage of incoming SMS, -otherwise incoming SMS might be ignored silently by the ME. -.TP -\fB\-h\fP, \fB\-\-help\fP -Prints an option summary. -.TP -\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP -Initialization string to send to the TA (default: "E0"). Note that the -sequence "ATZ" is sent first. -.TP -\fB\-r\fP, \fB\-\-requeststat\fP -Request status reports for sent SMS. Note: This option only makes -sense if the phone supports routing of status reports to the -TE. Otherwise the status reports might show on the phone's display or -get lost. -.TP -\fB\-s\fP \fIspool directory\fP, \fB\-\-spool\fP \fIspool directory\fP -This option sets the spool directory where \fIgsmsmsd\fP expects SMS -messages to send. The format of SMS files is very simple: The first -line contains the phone number of the recipient. Everything else after -the first line is interpreted as the SMS text. Please refer to -.BR gsmsendsms(1) -for details on the SMS text character set and maximum length. -\fIgsmsmsd\fP polls the spool directory every 5 seconds. Sent -SMS message files are removed. -.TP -\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP -The name of the SMS store to read from (for the \fB\-\-flush\fP option) -or write to (for temporary SMS storage). This option must -be must be used in conjunction with the \fB\-\-flush\fP option. If this -option is omitted the ME uses it's default SMS store for temporary -storage of incoming SMS. A commonly available message -store is "SM" (SIM card). -.TP -\fB\-v\fP, \fB\-\-version\fP -Prints the program version. -.TP -\fB\-X\fP, \fB\-\-xonxoff\fP -Uses software handshaking (XON/XOFF) for accessing the device. -.PP -.SH EXAMPLES -The following invocation of \fIgsmsmsd\fP sends each incoming SMS message -as a mail to the user "smsadmin": -.PP -.nf -gsmsmsd \-d /dev/ttyS2 \-b 19200 \-a "mail smsadmin" -.fi -.PP -This is the format of SMS deliver messages as output from \fIgsmsmsd\fP: -.PP -.nf ----------------------------------------------------------------- -Message type: SMS\-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '01805000102' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 17.12.98 14:10:55(+0100) -User data length: 159 -User data header: 0x -User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung lauft -noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen -Sie Ihren Teiln.-Gutschein an 0180/5000 056' ----------------------------------------------------------------- -.fi -.PP -This is the format of SMS status report messages as output from \fIgsmsmsd\fP: -.PP -.nf ----------------------------------------------------------------- -Message type: SMS\-STATUS\-REPORT -SC address: '' -More messages to send: 0 -Status report qualifier: 0 -Message reference: 0 -Recipient address: '' -SC timestamp: 00.00.00 00:00:00(+0000) -Discharge time: 00.00.00 00:00:00(+0000) -Status: 0x0 'Short message received by the SME' ----------------------------------------------------------------- -.fi -.PP -The following invocation of \fIgsmsmsd\fP flushes all existing -messages from the "SM" SMS store and looks in the "/tmp/spooldir" -directory for SMS to send: -.PP -.nf -gsmsmsd \-d /dev/ttyS2 \-\-spool /tmp/spooldir \-f \-\-store sm \\ -\-\-action 'mail smsadmin' -.fi -.PP -.SH FILES -.TP 1.4i -.B /dev/mobilephone -Default mobile phone device. -.PP -.SH AUTHOR -Peter Hofmann -.PP -.SH BUGS -Cell broadcast SMS message reception has not been tested, but it has -been enabled in the \fIgsmsmsd\fP daemon. -.PP -The mobile phone device is blocked when the \fIgsmsmsd\fP daemon is -running, ie. it cannot be used for data transfer or from the other -programs of this suite (\fIgsmpb\fP, \fIgsmsms\fP). -.PP -Report bugs to software@pxh.de. Include a complete, self-contained -example that will allow the bug to be reproduced, and say which -version of \fIgsmsmsd\fP you are using. -.PP -.SH COPYRIGHT -Copyright \(co 1999 Peter Hofmann -.LP -\fIgsmsmsd\fP is free software; you can redistribute it and/or modify it under -the terms of the GNU Library General Public License as published by the Free -Software Foundation; either version 2, or (at your option) any later -version. -.LP -\fIgsmsmsd\fP 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 -Library General Public License for more details. -.LP -You should have received a copy of the GNU Library General Public License along -with \fIgsmsmsd\fP; see the file COPYING. If not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -.PP -.SH "SEE ALSO" -.BR gsminfo(7), -.BR gsmpb(1), -.BR gsmctl(1), -.BR gsmsendsms(1), -.BR gsmsmsstore(1). - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man deleted file mode 100644 index fb3fb9bc7f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man +++ /dev/null @@ -1,185 +0,0 @@ -.\" -*- eval: (nroff-mode) -*- -.de TQ -.br -.ns -.TP \\$1 -.. -.\" Like TP, but if specified indent is more than half -.\" the current line-length - indent, use the default indent. -.de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" -.. -.TH GSMSMSSTORE 8 "##DATE##" "gsmsmsstore v##VERSION##" -.SH NAME -gsmsmsstore \- SMS store manipulation program -.SH SYNOPSIS -.B gsmsmsstore -[ \fB\-a\fP ] -[ \fB\-\-add\fP ] -[ \fB\-b\fP \fIbaudrate\fP ] -[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -[ \fB\-c\fP ] -[ \fB\-\-copy\fP ] -[ \fB\-C\fP \fIservice centre address\fP ] -[ \fB\-\-sca\fP \fIservice centre address\fP ] -[ \fB\-d\fP \fIdestination device or file\fP ] -[ \fB\-\-destination\fP \fIdestination device or file\fP ] -[ \fB\-h\fP ] -[ \fB\-\-help\fP ] -[ \fB\-I\fP \fIinit string\fP ] -[ \fB\-\-init\fP \fIinit string\fP ] -[ \fB\-k\fP ] -[ \fB\-\-backup\fP ] -[ \fB\-l\fP ] -[ \fB\-\-list\fP ] -[ \fB\-s\fP \fIsource device or file\fP ] -[ \fB\-\-source\fP \fIsource device or file\fP ] -[ \fB\-t\fP \fISMS store name\fP ] -[ \fB\-\-store\fP \fISMS store name\fP ] -[ \fB\-v\fP ] -[ \fB\-\-version\fP ] -[ \fB\-V\fP ] -[ \fB\-\-verbose\fP ] -[ \fB\-x\fP ] -[ \fB\-\-delete\fP ] -[ \fB\-X\fP ] -[ \fB\-\-xonxoff\fP ] -{ \fIindices\fP } -[ \fIphonenumber\fP \fItext\fP ] -.PP -.SH DESCRIPTION -\fIgsmsmsstore\fP can store or retrieve SMS messages entries residing -in a GSM mobile phone's SMS store to or from a file, add SMS messages -to a store, or list the store's contents. Additionally, it is possible -to add SMS submit messages to a store. -.PP -\fIgsmsmsstore\fP reads entries from the source which can be a mobile -phone (if a serial device file is given) or a file (if a file name is -given). The source is never modified. \fIgsmsmsstore\fP writes SMS -messages to a destination file or device in the case of \fB\-\-copy\fP, -\fB\-\-backup\fP, and \fB\-\-add\fP. -.PP -The \fB\-\-list\fP option does not change any file but just lists the -contents to standard output. -.PP -The \fB\-\-backup\fP and \fB\-\-copy\fP options require both source and -destination files or devices. The \fB\-\-list\fP option requires a -source. The \fB\-\-add\fP and \fB\-\-delete\fP options require a -destination file or device. -.PP -If "\-" is given as the parameter for the \fB\-\-source\fP or -\fB\-\-destination\fP options, the SMS store is read from standard input -and/or written to standard output, respectively. -.PP -SMS message files are not human-readable. -.PP -Error messages are printed to the standard error output. If the program -terminates on error the error code 1 is returned. -.PP -.SH OPTIONS -.TP -\fB\-a\fP, \fB\-\-add\fP -Adds an SMS submit message with recipient address \fIphonenumber\fP and -text \fItext\fP to the destination. -.TP -\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP -The baud rate to use. The default baudrate is 38400. -.TP -\fB\-c\fP, \fB\-\-copy\fP -This causes the contents of the source to be copied to the -destination. After this operation the destination has exactly the same -contents as the source. If \fIindices\fP are given on the command -line only those SMS messages denoted by the indices are copied to the -destination. -.TP -\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP -Sets the service centre address to use for all SUBMIT SMSs (may not -work with some phones). -.TP -\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP -The destination device or file. -.TP -\fB\-h\fP, \fB\-\-help\fP -Prints an option summary. -.TP -\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP -Initialization string to send to the TA (default: "E0"). Note that the -sequence "ATZ" is sent first. -.TP -\fB\-k\fP, \fB\-\-backup\fP -This causes those entries to be added from the source to the -destination that are not already present in the destination. If -\fIindices\fP are given on the command line only those SMS messages -denoted by the indices are backed up (ie. added) to the destination. -.TP -\fB\-l\fP, \fB\-\-list\fP -Prints out the entire contents of the source in human-readable form. -.TP -\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP -The source device or file. -.TP -\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP -The name of the SMS store to read from or write to. This information is -only used for device sources and destinations. A commonly available message -store is "SM" (SIM card). -.TP -\fB\-v\fP, \fB\-\-version\fP -Prints the program version. -.TP -\fB\-V\fP, \fB\-\-verbose\fP -Prints out a detailed progress report. -.TP -\fB\-x\fP, \fB\-\-delete\fP -Delete the SMS messages as denoted by the \fIindices\fP from the destination. -.TP -\fB\-X\fP, \fB\-\-xonxoff\fP -Uses software handshaking (XON/XOFF) for accessing the device. -.PP -.SH EXAMPLES -The following command lists all entries in the mobile phone connected -to \fI/dev/mobilephone\fP to the standard output: -.PP -.nf -gsmsmsstore \-b 19200 \-s /dev/mobilephone \-t SM \-l -.fi -.PP -The following adds entries 4, 7, and 10 from the device -\fI/dev/mobilephone\fP to the file \fIsmsstore\fP: -.PP -.nf -gsmsmsstore \-s /dev/mobilephone \-d /home/fred/smsstore - \-t SM \-b 4 7 10 -.fi -.PP -.SH AUTHOR -Peter Hofmann -.PP -.SH BUGS -Report bugs to software@pxh.de. Include a complete, self-contained -example that will allow the bug to be reproduced, and say which -version of \fIgsmsmsstore\fP you are using. -.PP -.SH COPYRIGHT -Copyright \(co 1999 Peter Hofmann -.LP -\fIgsmsmsstore\fP is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2, or (at -your option) any later version. -.LP -\fIgsmsmsstore\fP 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 -Library General Public License for more details. -.LP -You should have received a copy of the GNU Library General Public License -along with \fIgsmsmsstore\fP; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -.PP -.SH "SEE ALSO" -.BR gsminfo(7), -.BR gsmctl(1), -.BR gsmpb(1), -.BR gsmsendsms(1), -.BR gsmsmsd(8). diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am deleted file mode 100644 index 1c1d2fc3ce..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: Makefile for phone-specific extensions -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 16.12.2001 -# ************************************************************************* - -INCLUDES = -I.. - -EXTRA_DIST = README.sieme - -# build addon library -lib_LTLIBRARIES = libgsmext.la - -libgsmext_la_SOURCES = gsm_sie_me.cc - -libgsmext_la_LDFLAGS = -version-info $(GSM_VERSION) - -gsmincludedir = $(includedir)/gsmlib - -gsminclude_HEADERS = gsm_sie_me.h - -# build programs -bin_PROGRAMS = gsmsiectl gsmsiexfer - -# build gsmsiectl from gsmsiectl.cc and libgsmme.la -gsmsiectl_SOURCES = gsmsiectl.cc -gsmsiectl_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) - -# build gsmsiexfer from gsmsiexfer.cc and libgsmme.la -gsmsiexfer_SOURCES = gsmsiexfer.cc -gsmsiexfer_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) - - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in deleted file mode 100644 index 42240fb530..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in +++ /dev/null @@ -1,480 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: Makefile for phone-specific extensions -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 16.12.2001 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -INCLUDES = -I.. - -EXTRA_DIST = README.sieme - -# build addon library -lib_LTLIBRARIES = libgsmext.la - -libgsmext_la_SOURCES = gsm_sie_me.cc - -libgsmext_la_LDFLAGS = -version-info $(GSM_VERSION) - -gsmincludedir = $(includedir)/gsmlib - -gsminclude_HEADERS = gsm_sie_me.h - -# build programs -bin_PROGRAMS = gsmsiectl gsmsiexfer - -# build gsmsiectl from gsmsiectl.cc and libgsmme.la -gsmsiectl_SOURCES = gsmsiectl.cc -gsmsiectl_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) - -# build gsmsiexfer from gsmsiexfer.cc and libgsmme.la -gsmsiexfer_SOURCES = gsmsiexfer.cc -gsmsiexfer_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) -subdir = ext -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -LTLIBRARIES = $(lib_LTLIBRARIES) - -libgsmext_la_LIBADD = -am_libgsmext_la_OBJECTS = gsm_sie_me.lo -libgsmext_la_OBJECTS = $(am_libgsmext_la_OBJECTS) -bin_PROGRAMS = gsmsiectl$(EXEEXT) gsmsiexfer$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) - -am_gsmsiectl_OBJECTS = gsmsiectl.$(OBJEXT) -gsmsiectl_OBJECTS = $(am_gsmsiectl_OBJECTS) -gsmsiectl_DEPENDENCIES = ../gsmlib/libgsmme.la libgsmext.la -gsmsiectl_LDFLAGS = -am_gsmsiexfer_OBJECTS = gsmsiexfer.$(OBJEXT) -gsmsiexfer_OBJECTS = $(am_gsmsiexfer_OBJECTS) -gsmsiexfer_DEPENDENCIES = ../gsmlib/libgsmme.la libgsmext.la -gsmsiexfer_LDFLAGS = - -DEFS = @DEFS@ -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsm_sie_me.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsmsiectl.Po ./$(DEPDIR)/gsmsiexfer.Po -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CXXFLAGS = @CXXFLAGS@ -DIST_SOURCES = $(libgsmext_la_SOURCES) $(gsmsiectl_SOURCES) \ - $(gsmsiexfer_SOURCES) -HEADERS = $(gsminclude_HEADERS) - -DIST_COMMON = $(gsminclude_HEADERS) Makefile.am Makefile.in -SOURCES = $(libgsmext_la_SOURCES) $(gsmsiectl_SOURCES) $(gsmsiexfer_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu ext/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -libLTLIBRARIES_INSTALL = $(INSTALL) -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test -z "$dir" && dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgsmext.la: $(libgsmext_la_OBJECTS) $(libgsmext_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libgsmext_la_LDFLAGS) $(libgsmext_la_OBJECTS) $(libgsmext_la_LIBADD) $(LIBS) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_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 $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ - rm -f $(DESTDIR)$(bindir)/$$f; \ - done - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -gsmsiectl$(EXEEXT): $(gsmsiectl_OBJECTS) $(gsmsiectl_DEPENDENCIES) - @rm -f gsmsiectl$(EXEEXT) - $(CXXLINK) $(gsmsiectl_LDFLAGS) $(gsmsiectl_OBJECTS) $(gsmsiectl_LDADD) $(LIBS) -gsmsiexfer$(EXEEXT): $(gsmsiexfer_OBJECTS) $(gsmsiexfer_DEPENDENCIES) - @rm -f gsmsiexfer$(EXEEXT) - $(CXXLINK) $(gsmsiexfer_LDFLAGS) $(gsmsiexfer_OBJECTS) $(gsmsiexfer_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sie_me.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsiectl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsiexfer.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.cc.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -.cc.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `cygpath -w $<` - -.cc.lo: -@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< -CXXDEPMODE = @CXXDEPMODE@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: -gsmincludeHEADERS_INSTALL = $(INSTALL_HEADER) -install-gsmincludeHEADERS: $(gsminclude_HEADERS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(gsmincludedir) - @list='$(gsminclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f"; \ - $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f; \ - done - -uninstall-gsmincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(gsminclude_HEADERS)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(gsmincludedir)/$$f"; \ - rm -f $(DESTDIR)$(gsmincludedir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) -install-binPROGRAMS: install-libLTLIBRARIES - - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(gsmincludedir) - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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-binPROGRAMS clean-generic clean-libLTLIBRARIES \ - clean-libtool mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: install-gsmincludeHEADERS - -install-exec-am: install-binPROGRAMS install-libLTLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -uninstall-am: uninstall-binPROGRAMS uninstall-gsmincludeHEADERS \ - uninstall-info-am uninstall-libLTLIBRARIES - -.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libLTLIBRARIES clean-libtool distclean \ - distclean-compile distclean-depend distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am info \ - info-am install install-am install-binPROGRAMS install-data \ - install-data-am install-exec install-exec-am \ - install-gsmincludeHEADERS install-info install-info-am \ - install-libLTLIBRARIES install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool tags uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-gsmincludeHEADERS \ - uninstall-info-am uninstall-libLTLIBRARIES - -# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme deleted file mode 100644 index 4305ae33a2..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme +++ /dev/null @@ -1,75 +0,0 @@ -Extended support for Siemens mobile phones via gsmlib ------------------------------------------------------ - -* Hardware: - -Supported phones: S25, S35, S45, ME45, SL45 -Tested phones: S45, ME45 - -* Feature list: - - - ACM: Output ACM (accumulated call meter) and ACMmax => maybe not - - - BNR/BNW: Binary read and write => yes, xfer - - - CID: Output card ID => maybe - - - CKS: Output SIM card status => maybe - - - CNI: Output call number information => maybe - - - DBR: Database Read => yes, phonebook - - - DLD: Delete the "last number redial" memory => maybe dangerous? - - - GAUTH: Select Type of Authentication for PPP => no - - - ICO: Icon control => no - - - LCK: Switch locks on and off => yes, lock/unlock - - - LNG: Language settings => maybe - - - MGL: List SMS => no - - - MGO: SMS overflow indicator => no - - - MGR: Read SMS (same as AT+CMGR) => no - - - MSO: Switch device off => maybe not - - - NFS: Select NF hardware => maybe - - - NFV: Set the volume => maybe - - - PBC: Seek in telephone book => no - - - PBG: Sorted telephone book => yes - - - PBS: Select a telephone book => yes - - - PIC: Output PIN counter => maybe - - - PLM: Read the PLMN list => yes - - - PLR/PLW: read/write preferred-operator list => yes - - - PST: Play Signal Tone => yes - - - PWD: Change password to a lock => maybe - - - RTC: Set the ringing tone => yes - - - STK: SIM toolkit => no - - -* Additional References - -http://www.s45-world.net/vissie.htm - - -* Author and contact - -Christian W. Zuckschwerdt -http://triq.net/gsm.html - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc deleted file mode 100644 index fb22260836..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc +++ /dev/null @@ -1,258 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sie_me.cc -// * -// * Purpose: Mobile Equipment/Terminal Adapter and SMS functions -// * (According to "AT command set for S45 Siemens mobile phones" -// * v1.8, 26. July 2001 - Common AT prefix is "^S") -// * -// * Author: Christian W. Zuckschwerdt -// * -// * Created: 2001-12-15 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// SieMe members - -void SieMe::init() throw(GsmException) -{ -} - -SieMe::SieMe(Ref port) throw(GsmException) : MeTa::MeTa(port) -{ - // initialize Siemens ME - - init(); -} - -vector SieMe::getSupportedPhonebooks() throw(GsmException) -{ - Parser p(_at->chat("^SPBS=?", "^SPBS:")); - return p.parseStringList(); -} - -string SieMe::getCurrentPhonebook() throw(GsmException) -{ - if (_lastPhonebookName == "") - { - Parser p(_at->chat("^SPBS?", "^SPBS:")); - // answer is e.g. ^SPBS: "SM",41,250 - _lastPhonebookName = p.parseString(); - p.parseComma(); - int _currentNumberOfEntries = p.parseInt(); - p.parseComma(); - int _maxNumberOfEntries = p.parseInt(); - } - return _lastPhonebookName; -} - -void SieMe::setPhonebook(string phonebookName) throw(GsmException) -{ - if (phonebookName != _lastPhonebookName) - { - _at->chat("^SPBS=\"" + phonebookName + "\""); - _lastPhonebookName = phonebookName; - } -} - - -IntRange SieMe:: getSupportedSignalTones() throw(GsmException) -{ - Parser p(_at->chat("^SPST=?", "^SPST:")); - // ^SPST: (0-4),(0,1) - IntRange typeRange = p.parseRange(); - p.parseComma(); - vector volumeList = p.parseIntList(); - return typeRange; -} - -void SieMe:: playSignalTone(int tone) throw(GsmException) -{ - _at->chat("^SPST=" + intToStr(tone) + ",1"); -} - -void SieMe:: stopSignalTone(int tone) throw(GsmException) -{ - _at->chat("^SPST=" + intToStr(tone) + ",0"); -} - - -IntRange SieMe::getSupportedRingingTones() throw(GsmException) // (AT^SRTC=?) -{ - Parser p(_at->chat("^SRTC=?", "^SRTC:")); - // ^SRTC: (0-42),(1-5) - IntRange typeRange = p.parseRange(); - p.parseComma(); - IntRange volumeRange = p.parseRange(); - return typeRange; -} - -int SieMe::getCurrentRingingTone() throw(GsmException) // (AT^SRTC?) -{ - Parser p(_at->chat("^SRTC?", "^SRTC:")); - // ^SRTC: 41,2,0 - int type = p.parseInt(); - p.parseComma(); - int volume = p.parseInt(); - p.parseComma(); - int ringing = p.parseInt(); - return type; -} - -void SieMe::setRingingTone(int tone, int volume) throw(GsmException) -{ - _at->chat("^SRTC=" + intToStr(tone) + "," + intToStr(volume)); -} - -void SieMe:: playRingingTone() throw(GsmException) -{ - // get ringing bool - Parser p(_at->chat("^SRTC?", "^SRTC:")); - // ^SRTC: 41,2,0 - int type = p.parseInt(); - p.parseComma(); - int volume = p.parseInt(); - p.parseComma(); - int ringing = p.parseInt(); - - if (ringing == 0) - toggleRingingTone(); -} - -void SieMe::stopRingingTone() throw(GsmException) -{ - // get ringing bool - Parser p(_at->chat("^SRTC?", "^SRTC:")); - // ^SRTC: 41,2,0 - int type = p.parseInt(); - p.parseComma(); - int volume = p.parseInt(); - p.parseComma(); - int ringing = p.parseInt(); - - if (ringing == 1) - toggleRingingTone(); -} - -void SieMe::toggleRingingTone() throw(GsmException) // (AT^SRTC) -{ - _at->chat("^SRTC"); -} - -// Siemens get supported binary read -vector SieMe::getSupportedBinaryReads() throw(GsmException) -{ - Parser p(_at->chat("^SBNR=?", "^SBNR:")); - // ^SBNR: ("bmp",(0-3)),("mid",(0-4)),("vcf",(0-500)),("vcs",(0-50)) - - return p.parseParameterRangeList(); -} - -// Siemens get supported binary write -vector SieMe::getSupportedBinaryWrites() throw(GsmException) -{ - Parser p(_at->chat("^SBNW=?", "^SBNW:")); - // ^SBNW: ("bmp",(0-3)),("mid",(0-4)),("vcf",(0-500)),("vcs",(0-50)),("t9d",(0)) - - return p.parseParameterRangeList(); -} - -// Siemens Binary Read -BinaryObject SieMe::getBinary(string type, int subtype) throw(GsmException) -{ - // expect several response lines - vector result; - result = _at->chatv("^SBNR=\"" + type + "\"," + intToStr(subtype), "^SBNR:"); - // "bmp",0,1,5 pdu "bmp",0,2,5 ... - // most likely to be PDUs of 382 chars (191 * 2) - string pdu; - int fragmentCount = 0; - for (vector::iterator i = result.begin(); i != result.end(); ++i) - { - ++fragmentCount; - // parse header - Parser p(*i); - string fragmentType = p.parseString(); - if (fragmentType != type) - throw GsmException(_("bad PDU type"), ChatError); - p.parseComma(); - int fragmentSubtype = p.parseInt(); - if (fragmentSubtype != subtype) - throw GsmException(_("bad PDU subtype"), ChatError); - p.parseComma(); - int fragmentNumber = p.parseInt(); - if (fragmentNumber != fragmentCount) - throw GsmException(_("bad PDU number"), ChatError); - p.parseComma(); - int numberOfFragments = p.parseInt(); - if (fragmentNumber > numberOfFragments) - throw GsmException(_("bad PDU number"), ChatError); - - // concat pdu fragment - ++i; - pdu += *i; - } - - BinaryObject bnr; - bnr._type = type; - bnr._subtype = subtype; - bnr._size = pdu.length() / 2; - bnr._data = new unsigned char[pdu.length() / 2]; - if (! hexToBuf(pdu, bnr._data)) - throw GsmException(_("bad hexadecimal PDU format"), ChatError); - - return bnr; -} - -// Siemens Binary Write -void SieMe::setBinary(string type, int subtype, BinaryObject obj) - throw(GsmException) -{ - if (obj._size <= 0) - throw GsmException(_("bad object"), ParameterError); - - // Limitation: The maximum pdu size is 176 bytes (or 352 characters) - // this should be a configurable field - int maxPDUsize = 176; - int numberOfPDUs = (obj._size + maxPDUsize - 1) / maxPDUsize; - unsigned char *p = obj._data; - - for (int i = 1; i <= numberOfPDUs; ++i) - { - // construct pdu - int size = maxPDUsize; - if (i == numberOfPDUs) - size = obj._size - (numberOfPDUs - 1) * maxPDUsize; - string pdu = bufToHex(p, size); - p += size; - - cout << "processing " << i << " of " << numberOfPDUs - << " of " << size << " bytes." << endl; - cout << "^SBNW=\"" + type + "\"," + intToStr(subtype) + "," - + intToStr(i) + "," + intToStr(numberOfPDUs) << endl; - cout << pdu << endl; - - _at->sendPdu("^SBNW=\"" + type + "\"," + intToStr(subtype) + "," - + intToStr(i) + "," + intToStr(numberOfPDUs), "", - pdu, true); - cout << "OK" << endl; - } -} - - - - - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h deleted file mode 100644 index 2c827a0379..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h +++ /dev/null @@ -1,99 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sie_me.h -// * -// * Purpose: Mobile Equipment/Terminal Adapter and SMS functions -// * (According to "AT command set for S45 Siemens mobile phones" -// * v1.8, 26. July 2001 - Common AT prefix is "^S") -// * -// * Author: Christian W. Zuckschwerdt -// * -// * Created: 2001-12-15 -// ************************************************************************* - -#ifndef GSM_SIE_ME_H -#define GSM_SIE_ME_H - -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // *** Siemens mobile phone binary objects (bitmap, midi, vcal, vcard) - - struct BinaryObject - { - string _type; // Object type - int _subtype; // Object subtype (storage number) - unsigned char *_data; // Object binary data - int _size; // Object data size - }; - - // *** this class allows extended access to Siemens moblie phones - - class SieMe : public MeTa - { - private: - // init ME/TA to sensible defaults - void init() throw(GsmException); - - public: - // initialize a new MeTa object given the port - SieMe(Ref port) throw(GsmException); - - - // get the current phonebook in the Siemens ME - vector getSupportedPhonebooks() throw(GsmException);// (AT^SPBS=?) - - // get the current phonebook in the Siemens ME - string getCurrentPhonebook() throw(GsmException); // (AT^SPBS?) - - // set the current phonebook in the Siemens ME - // remember the last phonebook set for optimisation - void setPhonebook(string phonebookName) throw(GsmException); // (AT^SPBS=) - - - // Siemens get supported signal tones - IntRange getSupportedSignalTones() throw(GsmException); // (AT^SPST=?) - - // Siemens set ringing tone - void playSignalTone(int tone) throw(GsmException); // (AT^SRTC=x,1) - - // Siemens set ringing tone - void stopSignalTone(int tone) throw(GsmException); // (AT^SRTC=x,0) - - - // Siemens get ringing tone - IntRange getSupportedRingingTones() throw(GsmException); // (AT^SRTC=?) - // Siemens get ringing tone - int getCurrentRingingTone() throw(GsmException); // (AT^SRTC?) - // Siemens set ringing tone - void setRingingTone(int tone, int volume) throw(GsmException);// (AT^SRTC=) - // Siemens set ringing tone on - void playRingingTone() throw(GsmException); - // Siemens set ringing tone of - void stopRingingTone() throw(GsmException); - // Siemens toggle ringing tone - void toggleRingingTone() throw(GsmException); // (AT^SRTC) - - // Siemens get supported binary read - vector getSupportedBinaryReads() throw(GsmException); - - // Siemens get supported binary write - vector getSupportedBinaryWrites() throw(GsmException); - - // Siemens Binary Read - BinaryObject getBinary(string type, int subtype) throw(GsmException); - - // Siemens Binary Write - void setBinary(string type, int subtype, BinaryObject obj) - throw(GsmException); - }; -}; - -#endif // GSM_ME_TA_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc deleted file mode 100644 index 4ea92edfea..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc +++ /dev/null @@ -1,698 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmsiectl.cc -// * -// * Purpose: GSM Siemens mobile phone control program -// * -// * Author: Christian W. Zuckschwerdt -// * -// * Created: 2001-12-15 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#include - -using namespace std; -using namespace gsmlib; - -// my ME - -static SieMe *m; - -// information parameters - -enum InfoParameter {AllInfo, // print all info - MeInfo, // MeInfo must be first! - OperatorInfo, - CurrentOperatorInfo, - FacilityLockStateInfo, - FacilityLockCapabilityInfo, - PasswordInfo, - CLIPInfo, - CallForwardingInfo, - BatteryInfo, - BitErrorInfo, - SCAInfo, - CharSetInfo, - PhonebookInfo, // extended Siemens info - SignalToneInfo, - RingingToneInfo, - BinaryInfo, - SignalInfo}; // SignalInfo must be last! - -// operation parameters - -// FIXME operations not implemented yet - -// options - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"operation", required_argument, (int*)NULL, 'o'}, - {"device", required_argument, (int*)NULL, 'd'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -// helper function, prints forwarding info - -void printForwardReason(string s, ForwardInfo &info) -{ - cout << s << " " - << (info._active ? _("active ") : _("inactive ")) - << _("number: ") << info._number - << _(" subaddr: ") << info._subAddr - << _(" time: ") << info._time << endl; -} - -// helper function, prints integer range - -void printIntRange(IntRange ir) -{ - cout << "(" << ir._low; - if (ir._high != NOT_SET) - cout << "-" << ir._high; - cout << ")"; -} - -// helper function, prints parameter range - -void printParameterRange(ParameterRange pr) -{ - cout << "(\"" << pr._parameter << "\","; - printIntRange(pr._range); - cout << ")"; -} - -// print information - -static void printInfo(InfoParameter ip) -{ - switch (ip) - { - case MeInfo: - { - MEInfo mei = m->getMEInfo(); - cout << _(" Manufacturer: ") << mei._manufacturer << endl - << _(" Model: ") << mei._model << endl - << _(" Revision: ") << mei._revision << endl - << _(" Serial Number: ") << mei._serialNumber << endl; - break; - } - case OperatorInfo: - { - int count = 0; - vector opis = m->getAvailableOPInfo(); - for (vector::iterator i = opis.begin(); i != opis.end(); ++i) - { - cout << " Status: "); - switch (i->_status) - { - case UnknownOPStatus: cout << _("unknown"); break; - case CurrentOPStatus: cout << _("current"); break; - case AvailableOPStatus: cout << _("available"); break; - case ForbiddenOPStatus: cout << _("forbidden"); break; - } - cout << _(" Long name: '") << i->_longName << "' " - << _(" Short name: '") << i->_shortName << "' " - << _(" Numeric name: ") << i->_numericName << endl; - ++count; - } - break; - } - case CurrentOperatorInfo: - { - OPInfo opi = m->getCurrentOPInfo(); - cout << "" - << _(" Long name: '") << opi._longName << "' " - << _(" Short name: '") << opi._shortName << "' " - << _(" Numeric name: ") << opi._numericName - << _(" Mode: "); - switch (opi._mode) - { - case AutomaticOPMode: cout << _("automatic"); break; - case ManualOPMode: cout << _("manual"); break; - case DeregisterOPMode: cout << _("deregister"); break; - case ManualAutomaticOPMode: cout << _("manual/automatic"); break; - } - cout << endl; - break; - } - case FacilityLockStateInfo: - { - int count = 0; - vector fclc = m->getFacilityLockCapabilities(); - for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) - if (*i != "AB" && *i != "AG" && *i != "AC") - { - cout << " '" << *i << "'"; - try - { - if (m->getFacilityLockStatus(*i, VoiceFacility)) - cout << _(" Voice"); - } - catch (GsmException &e) - { - cout << _(" unknown"); - } - try - { - if (m->getFacilityLockStatus(*i, DataFacility)) - cout << _(" Data"); - } - catch (GsmException &e) - { - cout << _(" unknown"); - } - try - { - if (m->getFacilityLockStatus(*i, FaxFacility)) - cout << _(" Fax"); - } - catch (GsmException &e) - { - cout << _(" unknown"); - } - cout << endl; - ++count; - } - break; - } - case FacilityLockCapabilityInfo: - { - cout << " "; - vector fclc = m->getFacilityLockCapabilities(); - for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) - cout << "'" << *i << "' "; - cout << endl; - break; - } - case PasswordInfo: - { - vector pwi = m->getPasswords(); - int count = 0; - for (vector::iterator i = pwi.begin(); i != pwi.end(); ++i) - { - cout << " '" - << i->_facility << "' " << i->_maxPasswdLen << endl; - ++count; - } - break; - } - case CLIPInfo: - { - cout << " " << (m->getNetworkCLIP() ? _("on") : _("off")) << endl; - break; - } - case CallForwardingInfo: - { - for (int r = 0; r < 4; ++r) - { - string text; - switch (r) - { - case 0: text = _("UnconditionalReason"); break; - case 1: text = _("MobileBusyReason"); break; - case 2: text = _("NoReplyReason"); break; - case 3: text = _("NotReachableReason"); break; - } - ForwardInfo voice, fax, data; - m->getCallForwardInfo((ForwardReason)r, voice, fax, data); - cout << " " + text + _(" Voice"), voice); - cout << " " + text + _(" Data"), data); - cout << " " + text + _(" Fax"), fax); - } - break; - } - case BatteryInfo: - { - cout << " "; - int bcs = m->getBatteryChargeStatus(); - switch (bcs) - { - case 0: cout << _("0 ME is powered by the battery") << endl; break; - case 1: cout << _("1 ME has a battery connected, but is not powered by it") - << endl; break; - case 2: cout << _("2 ME does not have a battery connected") << endl; break; - case 3: - cout << _("3 Recognized power fault, calls inhibited") << endl; - break; - } - cout << " " << m->getBatteryCharge() << endl; - break; - } - case BitErrorInfo: - { - cout << " " << m->getBitErrorRate() << endl; - break; - } - case SCAInfo: - { - cout << " " << m->getServiceCentreAddress() << endl; - break; - } - case CharSetInfo: - { - cout << " "; - vector cs = m->getSupportedCharSets(); - for (vector::iterator i = cs.begin(); i != cs.end(); ++i) - cout << "'" << *i << "' "; - cout << endl; - cout << " '" << m->getCurrentCharSet() << "'" << endl; - break; - } - case SignalInfo: - { - cout << " " << m->getSignalStrength() << endl; - break; - } - case PhonebookInfo: - { - cout << " "; - vector pb = m->getSupportedPhonebooks(); - for (vector::iterator i = pb.begin(); i != pb.end(); ++i) - cout << "'" << *i << "' "; - cout << endl; - cout << " '" << m->getCurrentPhonebook() << "'" << endl; - break; - } - case SignalToneInfo: - { - cout << " "; - IntRange st = m->getSupportedSignalTones(); - printIntRange(st); - cout << endl; -// cout << " '" << m->getCurrentSignalTone() << "'" << endl; - break; - } - case RingingToneInfo: - { - cout << " "; - IntRange rt = m->getSupportedRingingTones(); - printIntRange(rt); - cout << endl; - cout << " " << m->getCurrentRingingTone() << endl; - break; - } - case BinaryInfo: - { - cout << " "; - vector bnr = m->getSupportedBinaryReads(); - for (vector::iterator i = bnr.begin(); i != bnr.end(); ++i) - { - printParameterRange(*i); - cout << " "; - } - cout << endl; - cout << " "; - vector bnw = m->getSupportedBinaryWrites(); - for (vector::iterator i = bnw.begin(); i != bnw.end(); ++i) - { - printParameterRange(*i); - cout << " "; - } - cout << endl; - break; - } - default: - assert(0); - break; - } -} - -// convert facility class string of the form "", "all", or any combination -// of "v" (voice), "d" (data), or "f" (fax) to numeric form - -FacilityClass strToFacilityClass(string facilityClassS) -{ - facilityClassS = lowercase(facilityClassS); - FacilityClass facilityClass = (FacilityClass)0; - if (facilityClassS == "all" || facilityClassS == "") - return (FacilityClass)ALL_FACILITIES; - - // OR in facility class bits - for (unsigned int i = 0; i < facilityClassS.length(); ++i) - if (facilityClassS[i] == 'v') - facilityClass = (FacilityClass)(facilityClass | VoiceFacility); - else if (facilityClassS[i] == 'd') - facilityClass = (FacilityClass)(facilityClass | DataFacility); - else if (facilityClassS[i] == 'f') - facilityClass = (FacilityClass)(facilityClass | FaxFacility); - else - throw GsmException( - stringPrintf(_("unknown facility class parameter '%c'"), - facilityClassS[i]), ParameterError); - - return facilityClass; -} - -// check if argc - optind is in range min..max -// throw exception otherwise - -void checkParamCount(int optind, int argc, int min, int max) -{ - int paramCount = argc - optind; - if (paramCount < min) - throw GsmException(stringPrintf(_("not enough parameters, minimum number " - "of parameters is %d"), min), - ParameterError); - else if (paramCount > max) - throw GsmException(stringPrintf(_("too many parameters, maximum number " - "of parameters is %d"), max), - ParameterError); -} - -// *** main program - -int main(int argc, char *argv[]) -{ - try - { - // handle command line options - string device = "/dev/mobilephone"; - string operation; - string baudrate; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "I:o:d:b:hvX", longOpts, &dummy)) - != -1) - switch (opt) - { - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 'd': - device = optarg; - break; - case 'o': - operation = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-b baudrate][-d device][-h]" - "[-I init string][-o operation]\n" - " [-v][-X]{parameters}") << endl - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -d, --device sets the destination device to " - "connect to") << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl - << _(" -o, --operation operation to perform on the mobile \n" - " phone with the specified parameters") - << endl - << _(" -v, --version prints version and exits") << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << endl - << _(" parameters parameters to use for the operation\n" - " (if an operation is given) or\n" - " a specification which kind of\n" - " information to read from the mobile " - "phone") - << endl << endl - << _("Refer to gsmctl(1) for details on the available parameters" - " and operations.") - << endl << endl; - exit(0); - break; - case '?': - throw GsmException(_("unknown option"), ParameterError); - break; - } - - // open the port and ME/TA - m = new SieMe(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (device, - baudrate == "" ? - DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), - initString, swHandshake)); - - if (operation == "") - { // process info parameters - for (int i = optind; i < argc; ++i) - { - string param = lowercase(argv[i]); - if (param == "all") - for (int ip = MeInfo; ip <= SignalInfo; ++ip) - printInfo((InfoParameter)ip); - else if (param == "me") - printInfo(MeInfo); - else if (param == "op") - printInfo(OperatorInfo); - else if (param == "currop") - printInfo(CurrentOperatorInfo); - else if (param == "flstat") - printInfo(FacilityLockStateInfo); - else if (param == "flcap") - printInfo(FacilityLockCapabilityInfo); - else if (param == "pw") - printInfo(PasswordInfo); - else if (param == "clip") - printInfo(CLIPInfo); - else if (param == "forw") - printInfo(CallForwardingInfo); - else if (param == "batt") - printInfo(BatteryInfo); - else if (param == "biterr") - printInfo(BitErrorInfo); - else if (param == "sig") - printInfo(SignalInfo); - else if (param == "sca") - printInfo(SCAInfo); - else if (param == "cset") - printInfo(CharSetInfo); - else if (param == "pbook") - printInfo(PhonebookInfo); - else if (param == "signal") - printInfo(SignalToneInfo); - else if (param == "ring") - printInfo(RingingToneInfo); - else if (param == "binary") - printInfo(BinaryInfo); - else - throw GsmException( - stringPrintf(_("unknown information parameter '%s'"), - param.c_str()), - ParameterError); - } - } - else - { // process operation - operation = lowercase(operation); - if (operation == "dial") - { - // dial: number - checkParamCount(optind, argc, 1, 1); - - m->dial(argv[optind]); - - // wait for keypress from stdin - char c; - read(1, &c, 1); - } - else if (operation == "setop") - { - // setop: opmode numeric FIXME allow long and numeric too - checkParamCount(optind, argc, 2, 2); - string opmodeS = lowercase(argv[optind]); - OPModes opmode; - if (opmodeS == "automatic") - opmode = AutomaticOPMode; - else if (opmodeS == "manual") - opmode = ManualOPMode; - else if (opmodeS == "deregister") - opmode = DeregisterOPMode; - else if (opmodeS == "manualautomatic") - opmode = ManualAutomaticOPMode; - else - throw GsmException(stringPrintf(_("unknown opmode parameter '%s'"), - opmodeS.c_str()), ParameterError); - - m->setCurrentOPInfo(opmode, "" , "", checkNumber(argv[optind + 1])); - } - else if (operation == "lock") - { - // lock: facility [facilityclass] [passwd] - checkParamCount(optind, argc, 1, 3); - string passwd = (argc - optind == 3) ? - (string)argv[optind + 2] : (string)""; - - m->lockFacility(argv[optind], - (argc - optind >= 2) ? - strToFacilityClass(argv[optind + 1]) : - (FacilityClass)ALL_FACILITIES, - passwd); - } - else if (operation == "unlock") - { - // unlock: facility [facilityclass] [passwd] - checkParamCount(optind, argc, 1, 3); - string passwd = argc - optind == 3 ? argv[optind + 2] : ""; - - m->unlockFacility(argv[optind], - (argc - optind >= 2) ? - strToFacilityClass(argv[optind + 1]) : - (FacilityClass)ALL_FACILITIES, - passwd); - } - else if (operation == "setpw") - { - // set password: facility oldpasswd newpasswd - checkParamCount(optind, argc, 1, 3); - string oldPasswd = argc - optind >= 2 ? argv[optind + 1] : ""; - string newPasswd = argc - optind == 3 ? argv[optind + 2] : ""; - - m->setPassword(argv[optind], oldPasswd, newPasswd); - } - else if (operation == "forw") - { - // call forwarding: mode reason number [facilityclass] [forwardtime] - checkParamCount(optind, argc, 2, 5); - - // get optional parameters facility class and forwardtime - int forwardTime = argc - optind == 5 ? checkNumber(argv[optind + 4]) : - NOT_SET; - FacilityClass facilityClass = - argc - optind >= 4 ? strToFacilityClass(argv[optind + 3]) : - (FacilityClass)ALL_FACILITIES; - - // get forward reason - string reasonS = lowercase(argv[optind + 1]); - ForwardReason reason; - if (reasonS == "unconditional") - reason = UnconditionalReason; - else if (reasonS == "mobilebusy") - reason = MobileBusyReason; - else if (reasonS == "noreply") - reason = NoReplyReason; - else if (reasonS == "notreachable") - reason = NotReachableReason; - else if (reasonS == "all") - reason = AllReasons; - else if (reasonS == "allconditional") - reason = AllConditionalReasons; - else - throw GsmException( - stringPrintf(_("unknown forward reason parameter '%s'"), - reasonS.c_str()), ParameterError); - - // get mode - string modeS = lowercase(argv[optind]); - ForwardMode mode; - if (modeS == "disable") - mode = DisableMode; - else if (modeS == "enable") - mode = EnableMode; - else if (modeS == "register") - mode = RegistrationMode; - else if (modeS == "erase") - mode = ErasureMode; - else - throw GsmException( - stringPrintf(_("unknown forward mode parameter '%s'"), - modeS.c_str()), ParameterError); - - m->setCallForwarding(reason, mode, - (argc - optind >= 3) ? argv[optind + 2] : "", - "", // subaddr - facilityClass, forwardTime); - } - else if (operation == "setsca") - { - // set sca: number - checkParamCount(optind, argc, 1, 1); - m->setServiceCentreAddress(argv[optind]); - } - else if (operation == "cset") - { - // set charset: string - checkParamCount(optind, argc, 1, 1); - m->setCharSet(argv[optind]); - } - else if (operation == "signal") - { - // play signal tone: int - checkParamCount(optind, argc, 1, 1); - int tone = atoi(argv[optind]); - m->playSignalTone(tone); - } - else if (operation == "setrt") - { - // set ringing tone: int int - checkParamCount(optind, argc, 2, 2); - int tone = atoi(argv[optind]); - int volume = atoi(argv[optind + 1]); - m->setRingingTone(tone, volume); - } - else if (operation == "playrt") - { - // play/stop ringing tone - m->toggleRingingTone(); - } - else - throw GsmException(stringPrintf(_("unknown operation '%s'"), - operation.c_str()), ParameterError); - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc deleted file mode 100644 index 90fce1f471..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc +++ /dev/null @@ -1,292 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsmsiexfer.cc -// * -// * Purpose: Siemens ME file transfer program -// * -// * Author: Christian W. Zuckschwerdt -// * -// * Created: 2001-12-16 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#if defined(HAVE_GETOPT_LONG) || defined(WIN32) -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -#ifdef HAVE_GETOPT_LONG -static struct option longOpts[] = -{ - {"xonxoff", no_argument, (int*)NULL, 'X'}, - {"init", required_argument, (int*)NULL, 'I'}, - {"destination", required_argument, (int*)NULL, 'd'}, - {"source", required_argument, (int*)NULL, 's'}, - {"baudrate", required_argument, (int*)NULL, 'b'}, - {"type", required_argument, (int*)NULL, 't'}, - {"subtype", required_argument, (int*)NULL, 'i'}, - {"help", no_argument, (int*)NULL, 'h'}, - {"version", no_argument, (int*)NULL, 'v'}, - {"verbose", no_argument, (int*)NULL, 'V'}, - {(char*)NULL, 0, (int*)NULL, 0} -}; -#else -#define getopt_long(argc, argv, options, longopts, indexptr) \ - getopt(argc, argv, options) -#endif - -// I f*ck up this file IO thing. - -// read binary object from stdin -BinaryObject readBinaryFile(istream &ifs, string filename) -{ - size_t size = 10000; // Bad coder, no biscuits! - BinaryObject bnr; - bnr._data = new unsigned char[size]; - ifs.read((char*)bnr._data, size); - bnr._size = ifs.gcount(); - return bnr; -} - -// read binary object from file -BinaryObject readFile(string filename) -{ - // open the file - ifstream ifs(filename.c_str()); - if (ifs.bad()) - throw GsmException(stringPrintf(_("cannot open file '%s'"), - filename.c_str()), - OSError); - // and read the file - return readBinaryFile(ifs, filename); -} - -// read binary object from stdin -BinaryObject readFile(bool fromStdin) -{ - // read from stdin -// if (fromStdin) - return readBinaryFile(cin, (string)_("")); -} - -// write binary object to file -void writeBinaryFile(ostream &ofs, string filename, BinaryObject bnw) -{ - // well just dump the data - ofs.write((char*)bnw._data, bnw._size); -} - -// write binary object -void writeFile(string filename, BinaryObject obj) -{ - // open the file - ofstream ofs(filename.c_str()); - if (ofs.bad()) - throw GsmException(stringPrintf(_("cannot open file '%s'"), - filename.c_str()), - OSError); - // and read the file - writeBinaryFile(ofs, filename, obj); -} - -// write binary object to stdout -void writeFile(bool toStdout, BinaryObject obj) -{ -// if (toStdout) - writeBinaryFile(cout, (string)_(""), obj); -} - -// *** main program - -int main(int argc, char *argv[]) -{ - try - { - // handle command line options - string destination; - string source; - string baudrate; - string type; - string subtype; - int subtypeN; - bool verbose = false; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - Ref sourceMeTa, destMeTa; - BinaryObject sourceObject; - - int opt; - int dummy; - while((opt = getopt_long(argc, argv, "XI:s:d:b:hvVt:i:", longOpts, - &dummy)) - != -1) - switch (opt) - { - case 'X': - swHandshake = true; - break; - case 'I': - initString = optarg; - break; - case 'V': - verbose = true; - break; - case 't': - type = optarg; - break; - case 'i': - subtype = optarg; - subtypeN = atoi(optarg); - break; - case 'd': - destination = optarg; - break; - case 's': - source = optarg; - break; - case 'b': - baudrate = optarg; - break; - case 'v': - cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), - VERSION, __DATE__) << endl; - exit(0); - break; - case 'h': - cerr << argv[0] << _(": [-b baudrate][-c][-d device or file][-h]" - "[-I init string]\n" - " [-p phonebook name][-s device or file]" - "[-t charset][-v]" - "[-V][-y][-X]") << endl - << endl - << _(" -b, --baudrate baudrate to use for device " - "(default: 38400)") - << endl - << _(" -c, --copy copy source entries to destination") - << endl - << _(" -d, --destination sets the destination device to " - "connect \n" - " to, or the file to write") << endl - << _(" -D, --destination-backend sets the destination backend") - << endl - << _(" -h, --help prints this message") << endl - << _(" -i, --index takes index positions into account") - << endl - << _(" -I, --init device AT init sequence") << endl - << _(" -p, --phonebook name of phonebook to use") << endl - << _(" -s, --source sets the source device to connect to,\n" - " or the file to read") << endl - << _(" -t, --charset sets the character set to use for\n" - " phonebook entries") << endl - << _(" -S, --source-backend sets the source backend") - << endl - << _(" -v, --version prints version and exits") << endl - << _(" -V, --verbose print detailed progress messages") - << endl - << _(" -X, --xonxoff switch on software handshake") << endl - << _(" -y, --synchronize synchronize destination with source\n" - " entries (destination is overwritten)\n" - " (see gsmpb(1) for details)") - << endl << endl; - exit(0); - break; - case '?': - throw GsmException(_("unknown option"), ParameterError); - break; - } - - // check if all parameters all present - if (destination == "" || source == "") - throw GsmException(_("both source and destination must be given"), - ParameterError); - - // start accessing source mobile phone or file - if (source == "-") - sourceObject = readFile(true); - else if (isFile(source)) - sourceObject = readFile(source); - else - { - if (type == "") - throw GsmException(_("type be given"), ParameterError); - if (subtype == "") - throw GsmException(_("subtype be given"), ParameterError); - - sourceMeTa = new SieMe(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (source, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), initString, - swHandshake)); - sourceObject = sourceMeTa->getBinary(type, subtypeN); - } - - // make sure destination.c_str file exists - if (destination != "") - { - try - { - ofstream f(destination.c_str(), ios::out | ios::app); - } - catch (exception) - { - } - } - - // start accessing destination mobile phone or file - if (destination == "-") - writeFile(true, sourceObject); - else if (isFile(destination)) - writeFile(destination, sourceObject); - else - { - if (type == "") - throw GsmException(_("type must be given"), ParameterError); - if (subtype == "") - throw GsmException(_("subtype must be given"), ParameterError); - - destMeTa = new SieMe(new -#ifdef WIN32 - Win32SerialPort -#else - UnixSerialPort -#endif - (destination, - baudrate == "" ? DEFAULT_BAUD_RATE : - baudRateStrToSpeed(baudrate), initString, - swHandshake)); - destMeTa->setBinary(type, subtypeN, sourceObject); - } - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch deleted file mode 100644 index 4c33e6a7d2..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- ./gsmlib/gsm_me_ta.h~ 2006-03-09 19:15:59.000000000 +0000 -+++ ./gsmlib/gsm_me_ta.h 2006-03-09 19:16:31.000000000 +0000 -@@ -291,8 +291,8 @@ - // 3 disable phone receive RF circuits only - // 4 disable phone both transmit and receive RF circuits - // 5...127 implementation-defined -- int MeTa::getFunctionalityLevel() throw(GsmException); -- void MeTa::setFunctionalityLevel(int level) throw(GsmException); -+ int getFunctionalityLevel() throw(GsmException); -+ void setFunctionalityLevel(int level) throw(GsmException); - - // return battery charge status (+CBC): - // 0 ME is powered by the battery -@@ -386,13 +386,13 @@ - void setCallWaitingLockStatus(FacilityClass cl, - bool lock)throw(GsmException); - -- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); -+ void setCLIRPresentation(bool enable) throw(GsmException); - //(+CLIR) - - // 0:according to the subscription of the CLIR service - // 1:CLIR invocation - // 2:CLIR suppression -- int MeTa::getCLIRPresentation() throw(GsmException); -+ int getCLIRPresentation() throw(GsmException); - - friend class Phonebook; - friend class SMSStore; diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in deleted file mode 100644 index 4ed31e1464..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in +++ /dev/null @@ -1,344 +0,0 @@ -/* gsm_config.h.in. Generated from configure.in by autoheader. */ -/* used by libtool*/ -#define PACKAGE 0 - -/* used by libtool*/ -#define VERSION 0 - -/* Define if getopt_long() available */ -#undef HAVE_GETOPT_LONG - -/* Define if alarm() available */ -#undef HAVE_ALARM - -/* Define if netinet/in.h header available */ -#undef HAVE_NETINET_IN_H - -/* Define if string.h header available */ -#undef HAVE_STRING_H - -/* Define for NLS */ -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY - -/* Define LOCALEDIR */ -#define LOCALEDIR "/usr/share/locale" - -/* Define if libintl.h header available */ -#undef HAVE_LIBINTL_H - -/* Define if vsnprintf() function available */ -#undef HAVE_VSNPRINTF - -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -#undef CRAY_STACKSEG_END - -/* Define to 1 if using `alloca.c'. */ -#undef C_ALLOCA - -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -#undef ENABLE_NLS - -/* Define to 1 if you have `alloca', as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define to 1 if you have and it should be used (not on Ultrix). - */ -#undef HAVE_ALLOCA_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_ARGZ_H - -/* Define to 1 if you have the `asprintf' function. */ -#undef HAVE_ASPRINTF - -/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -#undef HAVE_CFLOCALECOPYCURRENT - -/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in - the CoreFoundation framework. */ -#undef HAVE_CFPREFERENCESCOPYAPPVALUE - -/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -#undef HAVE_DCGETTEXT - -/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you - don't. */ -#undef HAVE_DECL_FEOF_UNLOCKED - -/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if - you don't. */ -#undef HAVE_DECL_FGETS_UNLOCKED - -/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you - don't. */ -#undef HAVE_DECL_GETC_UNLOCKED - -/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you - don't. */ -#undef HAVE_DECL__SNPRINTF - -/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you - don't. */ -#undef HAVE_DECL__SNWPRINTF - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `fwprintf' function. */ -#undef HAVE_FWPRINTF - -/* Define to 1 if you have the `getcwd' function. */ -#undef HAVE_GETCWD - -/* Define to 1 if you have the `getegid' function. */ -#undef HAVE_GETEGID - -/* Define to 1 if you have the `geteuid' function. */ -#undef HAVE_GETEUID - -/* Define to 1 if you have the `getgid' function. */ -#undef HAVE_GETGID - -/* Define to 1 if you have the `getpagesize' function. */ -#undef HAVE_GETPAGESIZE - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#undef HAVE_GETTEXT - -/* Define to 1 if you have the `getuid' function. */ -#undef HAVE_GETUID - -/* Define if you have the iconv() function. */ -#undef HAVE_ICONV - -/* Define if you have the 'intmax_t' type in or . */ -#undef HAVE_INTMAX_T - -/* Define if exists and doesn't clash with . */ -#undef HAVE_INTTYPES_H - -/* Define if exists, doesn't clash with , and - declares uintmax_t. */ -#undef HAVE_INTTYPES_H_WITH_UINTMAX - -/* Define if you have and nl_langinfo(CODESET). */ -#undef HAVE_LANGINFO_CODESET - -/* Define if your file defines LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - -/* Define to 1 if you have the `intl' library (-lintl). */ -#undef HAVE_LIBINTL - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBINTL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have the 'long double' type. */ -#undef HAVE_LONG_DOUBLE - -/* Define if you have the 'long long' type. */ -#undef HAVE_LONG_LONG - -/* Define to 1 if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `mempcpy' function. */ -#undef HAVE_MEMPCPY - -/* Define to 1 if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define to 1 if you have the `munmap' function. */ -#undef HAVE_MUNMAP - -/* Define to 1 if you have the header file. */ -#undef HAVE_NETINET_IN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_NL_TYPES_H - -/* Define if your printf() function supports format strings with positions. */ -#undef HAVE_POSIX_PRINTF - -/* Define to 1 if you have the `putenv' function. */ -#undef HAVE_PUTENV - -/* Define to 1 if you have the `setenv' function. */ -#undef HAVE_SETENV - -/* Define to 1 if you have the `setlocale' function. */ -#undef HAVE_SETLOCALE - -/* Define to 1 if you have the `snprintf' function. */ -#undef HAVE_SNPRINTF - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDDEF_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define if exists, doesn't clash with , and declares - uintmax_t. */ -#undef HAVE_STDINT_H_WITH_UINTMAX - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `stpcpy' function. */ -#undef HAVE_STPCPY - -/* Define to 1 if you have the `strcasecmp' function. */ -#undef HAVE_STRCASECMP - -/* Define to 1 if you have the `strdup' function. */ -#undef HAVE_STRDUP - -/* 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 `strtoul' function. */ -#undef HAVE_STRTOUL - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_PARAM_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 you have the `tsearch' function. */ -#undef HAVE_TSEARCH - -/* Define if you have the 'uintmax_t' type in or . */ -#undef HAVE_UINTMAX_T - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the 'unsigned long long' type. */ -#undef HAVE_UNSIGNED_LONG_LONG - -/* Define if you have the 'wchar_t' type. */ -#undef HAVE_WCHAR_T - -/* Define to 1 if you have the `wcslen' function. */ -#undef HAVE_WCSLEN - -/* Define if you have the 'wint_t' type. */ -#undef HAVE_WINT_T - -/* Define to 1 if you have the `__argz_count' function. */ -#undef HAVE___ARGZ_COUNT - -/* Define to 1 if you have the `__argz_next' function. */ -#undef HAVE___ARGZ_NEXT - -/* Define to 1 if you have the `__argz_stringify' function. */ -#undef HAVE___ARGZ_STRINGIFY - -/* Define to 1 if you have the `__fsetlocking' function. */ -#undef HAVE___FSETLOCKING - -/* Define as const if the declaration of iconv() needs const. */ -#undef ICONV_CONST - -/* Define if integer division by zero raises signal SIGFPE. */ -#undef INTDIV0_RAISES_SIGFPE - -/* 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 - -/* Define if exists and defines unusable PRI* macros. */ -#undef PRI_MACROS_BROKEN - -/* The size of a `unsigned int', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_INT - -/* The size of a `unsigned long int', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_LONG_INT - -/* The size of a `unsigned short int', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_SHORT_INT - -/* Define as the maximum value of type 'size_t', if the system doesn't define - it. */ -#undef SIZE_MAX - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -#undef STACK_DIRECTION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION - -/* 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 as the type of the result of subtracting two pointers, if the system - doesn't define it. */ -#undef ptrdiff_t - -/* Define to empty if the C compiler doesn't support this keyword. */ -#undef signed - -/* Define to `unsigned' if does not define. */ -#undef size_t - -/* Define to unsigned long or unsigned long long if and - don't define. */ -#undef uintmax_t diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs deleted file mode 100644 index 7bc765edd6..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs +++ /dev/null @@ -1,11 +0,0 @@ -var/spool/sms/queue1 -var/spool/sms/queue2 -var/spool/sms/queue3 -var/spool/sms/sent1 -var/spool/sms/sent2 -var/spool/sms/sent3 -var/spool/sms/failed1 -var/spool/sms/failed2 -var/spool/sms/failed3 -var/spool/sms/tmp -var/run/gsm-utils diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst deleted file mode 100644 index cc623b611b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -e - -# create gsmsms group if necessary. -if ! grep -q ^gsmsms: /etc/group; then -# echo Adding system group: gsmsms. - addgroup gsmsms -fi - -# create gsmsms user if necessary. -if ! grep -q ^gsmsms: /etc/passwd; then -# echo Adding system user: gsmsms. - adduser --system --ingroup gsmsms \ - --no-create-home --home /var/spool/sms gsmsms -fi - -# allow gsmsms to use serial lines -if ! groups gsmsms | grep -q dialout ; then - adduser gsmsms dialout -fi - -# echo Updating spool directory structure: /var/spool/sms -chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils -chmod 700 /var/spool/sms/* -chmod 750 /var/spool/sms -chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp - -# Add the rest automatically.. -#DEBHELPER# diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm deleted file mode 100644 index 34c947e93e..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -e - -deluser gsmsms || true -delgroup gsmsms || true - -# Add the rest automatically.. -#DEBHELPER# diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented deleted file mode 100644 index 62d096021d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented +++ /dev/null @@ -1,2 +0,0 @@ -gsmsmsspool.1 -gsmsmsrequeue.8 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec deleted file mode 100644 index c262954cc5..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec +++ /dev/null @@ -1,92 +0,0 @@ -%define LIBVER 1.0.4 -Summary: Library to access GSM mobile phones through GSM modems -Name: gsmlib -Version: 1.10 -Release: 1 -Source: gsmlib-%{version}.tar.gz -Group: System Environment/Libraries -Copyright: GNU LIBRARY GENERAL PUBLIC LICENSE -URL: http://www.pxh.de/fs/gsmlib/ -Vendor: Peter Hofmann -Buildroot: /var/tmp/gsmlib-root - -%package devel -Summary: Development tools for programs which will use the gsmlib library. -Group: Development/Libraries -Requires: gsmlib - -%package ext -Summary: Extensions to gsmlib to support non-standard phone features. -Group: Development/Libraries -Requires: gsmlib - -%description -This distribution contains a library to access -GSM mobile phones through GSM modems. Features include: - * modification of phonebooks stored in the - mobile phone or on the SIM card - * reading and writing of SMS messages stored in - the mobile phone - * sending and reception of SMS messages -Additionally, some simple command line programs are -provided to use these functionalities. - -%description devel -The gsmlib-devel package includes the header files and static libraries -necessary for developing programs which use the gsmlib library. - -%description ext -The extension package of gsmlib contains programs, libraries, and -documentation to support non-standard features of GSM phones. The -following phones/phone types are currently supported: - * Siemens GSM phones - -%prep -%setup - -%build -CXXFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr -make - -%install -make DESTDIR="$RPM_BUILD_ROOT" install - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -/usr/lib/libgsmme.so -/usr/lib/libgsmme.so.%{LIBVER} -/usr/bin/gsmsmsstore -/usr/bin/gsmctl -/usr/bin/gsmsmsd -/usr/bin/gsmpb -/usr/bin/gsmsendsms -/usr/man/man1/gsmctl.1.gz -/usr/man/man7/gsminfo.7.gz -/usr/man/man1/gsmpb.1.gz -/usr/man/man1/gsmsendsms.1.gz -/usr/man/man8/gsmsmsd.8.gz -/usr/man/man1/gsmsmsstore.1.gz -/usr/share/locale/de/LC_MESSAGES/gsmlib.mo - -%doc README INSTALL ABOUT-NLS AUTHORS COPYING NEWS TODO -%doc doc/README.NLS doc/README.developers doc/FAQ ChangeLog - -%files devel -%defattr(-,root,root) -/usr/lib/libgsmme.a -/usr/include/gsmlib - -%files ext -/usr/bin/gsmsiectl -/usr/bin/gsmsiexfer -/usr/lib/libgsmext.so -/usr/lib/libgsmext.so.%{LIBVER} - -%doc ext/README.sieme diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am deleted file mode 100644 index 12d6948c52..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am +++ /dev/null @@ -1,38 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: GSM library Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 5.5.1999 -# ************************************************************************* - -INCLUDES = -I.. - -lib_LTLIBRARIES = libgsmme.la - -libgsmme_la_SOURCES = gsm_phonebook.cc gsm_util.cc gsm_unix_serial.cc \ - gsm_me_ta.cc gsm_at.cc gsm_error.cc gsm_parser.cc \ - gsm_sms.cc gsm_sms_codec.cc gsm_sms_store.cc \ - gsm_event.cc gsm_sorted_phonebook.cc \ - gsm_sorted_sms_store.cc gsm_nls.cc \ - gsm_sorted_phonebook_base.cc gsm_cb.cc - -gsmincludedir = $(includedir)/gsmlib - -gsminclude_HEADERS = gsm_at.h gsm_parser.h gsm_sms.h gsm_unix_serial.h \ - gsm_error.h gsm_phonebook.h gsm_sms_codec.h \ - gsm_util.h gsm_me_ta.h gsm_port.h gsm_sms_store.h \ - gsm_event.h gsm_sorted_phonebook.h \ - gsm_sorted_sms_store.h gsm_map_key.h \ - gsm_sorted_phonebook_base.h gsm_cb.h - -noinst_HEADERS = gsm_nls.h gsm_sysdep.h - -libgsmme_la_LDFLAGS = -version-info $(GSM_VERSION) - -EXTRA_DIST = gsm_win32_serial.h gsm_win32_serial.cc diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in deleted file mode 100644 index 5e1f2477cb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in +++ /dev/null @@ -1,461 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: GSM library Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 5.5.1999 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -INCLUDES = -I.. - -lib_LTLIBRARIES = libgsmme.la - -libgsmme_la_SOURCES = gsm_phonebook.cc gsm_util.cc gsm_unix_serial.cc \ - gsm_me_ta.cc gsm_at.cc gsm_error.cc gsm_parser.cc \ - gsm_sms.cc gsm_sms_codec.cc gsm_sms_store.cc \ - gsm_event.cc gsm_sorted_phonebook.cc \ - gsm_sorted_sms_store.cc gsm_nls.cc \ - gsm_sorted_phonebook_base.cc gsm_cb.cc - - -gsmincludedir = $(includedir)/gsmlib - -gsminclude_HEADERS = gsm_at.h gsm_parser.h gsm_sms.h gsm_unix_serial.h \ - gsm_error.h gsm_phonebook.h gsm_sms_codec.h \ - gsm_util.h gsm_me_ta.h gsm_port.h gsm_sms_store.h \ - gsm_event.h gsm_sorted_phonebook.h \ - gsm_sorted_sms_store.h gsm_map_key.h \ - gsm_sorted_phonebook_base.h gsm_cb.h - - -noinst_HEADERS = gsm_nls.h gsm_sysdep.h - -libgsmme_la_LDFLAGS = -version-info $(GSM_VERSION) - -EXTRA_DIST = gsm_win32_serial.h gsm_win32_serial.cc -subdir = gsmlib -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -LTLIBRARIES = $(lib_LTLIBRARIES) - -libgsmme_la_LIBADD = -am_libgsmme_la_OBJECTS = gsm_phonebook.lo gsm_util.lo gsm_unix_serial.lo \ - gsm_me_ta.lo gsm_at.lo gsm_error.lo gsm_parser.lo gsm_sms.lo \ - gsm_sms_codec.lo gsm_sms_store.lo gsm_event.lo \ - gsm_sorted_phonebook.lo gsm_sorted_sms_store.lo gsm_nls.lo \ - gsm_sorted_phonebook_base.lo gsm_cb.lo -libgsmme_la_OBJECTS = $(am_libgsmme_la_OBJECTS) - -DEFS = @DEFS@ -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsm_at.Plo ./$(DEPDIR)/gsm_cb.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_error.Plo ./$(DEPDIR)/gsm_event.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_me_ta.Plo ./$(DEPDIR)/gsm_nls.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_parser.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_phonebook.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sms.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sms_codec.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sms_store.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sorted_phonebook.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sorted_phonebook_base.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sorted_sms_store.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_unix_serial.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/gsm_util.Plo -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CXXFLAGS = @CXXFLAGS@ -DIST_SOURCES = $(libgsmme_la_SOURCES) -HEADERS = $(gsminclude_HEADERS) $(noinst_HEADERS) - -DIST_COMMON = $(gsminclude_HEADERS) $(noinst_HEADERS) Makefile.am \ - Makefile.in -SOURCES = $(libgsmme_la_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu gsmlib/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) -libLTLIBRARIES_INSTALL = $(INSTALL) -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test -z "$dir" && dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgsmme.la: $(libgsmme_la_OBJECTS) $(libgsmme_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libgsmme_la_LDFLAGS) $(libgsmme_la_OBJECTS) $(libgsmme_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_at.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_cb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_event.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_me_ta.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_nls.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_parser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_phonebook.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sms.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sms_codec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sms_store.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sorted_phonebook.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sorted_phonebook_base.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sorted_sms_store.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_unix_serial.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_util.Plo@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.cc.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -.cc.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `cygpath -w $<` - -.cc.lo: -@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< -CXXDEPMODE = @CXXDEPMODE@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: -gsmincludeHEADERS_INSTALL = $(INSTALL_HEADER) -install-gsmincludeHEADERS: $(gsminclude_HEADERS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(gsmincludedir) - @list='$(gsminclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f"; \ - $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f; \ - done - -uninstall-gsmincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(gsminclude_HEADERS)'; for p in $$list; do \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " rm -f $(DESTDIR)$(gsmincludedir)/$$f"; \ - rm -f $(DESTDIR)$(gsmincludedir)/$$f; \ - done - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 $(LTLIBRARIES) $(HEADERS) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(gsmincludedir) - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: install-gsmincludeHEADERS - -install-exec-am: install-libLTLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -uninstall-am: uninstall-gsmincludeHEADERS uninstall-info-am \ - uninstall-libLTLIBRARIES - -.PHONY: GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool distclean distclean-compile \ - distclean-depend distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-exec \ - install-exec-am install-gsmincludeHEADERS install-info \ - install-info-am install-libLTLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - tags uninstall uninstall-am uninstall-gsmincludeHEADERS \ - uninstall-info-am uninstall-libLTLIBRARIES - -# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc deleted file mode 100644 index 1c163d06e1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc +++ /dev/null @@ -1,444 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_at.cc -// * -// * Purpose: Utility classes for AT command sequence handling -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// GsmAt members - -bool GsmAt::matchResponse(string answer, string responseToMatch) -{ - if (answer.substr(0, responseToMatch.length()) == responseToMatch) - return true; - else - // some TAs omit the ':' at the end of the response - if (_meTa.getCapabilities()._omitsColon && - responseToMatch[responseToMatch.length() - 1] == ':' && - answer.substr(0, responseToMatch.length() - 1) == - responseToMatch.substr(0, responseToMatch.length() - 1)) - return true; - return false; -} - -string GsmAt::cutResponse(string answer, string responseToMatch) -{ - if (answer.substr(0, responseToMatch.length()) == responseToMatch) - return normalize(answer.substr(responseToMatch.length(), - answer.length() - - responseToMatch.length())); - else - // some TAs omit the ':' at the end of the response - if (_meTa.getCapabilities()._omitsColon && - responseToMatch[responseToMatch.length() - 1] == ':' && - answer.substr(0, responseToMatch.length() - 1) == - responseToMatch.substr(0, responseToMatch.length() - 1)) - return normalize(answer.substr(responseToMatch.length() - 1, - answer.length() - - responseToMatch.length() + 1)); - assert(0); - return ""; -} - -void GsmAt::throwCmeException(string s) throw(GsmException) -{ - if (matchResponse(s, "ERROR")) - throw GsmException(_("unspecified ME/TA error"), ChatError); - - bool meError = matchResponse(s, "+CME ERROR:"); - if (meError) - s = cutResponse(s, "+CME ERROR:"); - else - s = cutResponse(s, "+CMS ERROR:"); - istrstream is(s.c_str()); - int error; - is >> error; - throw GsmException(_("ME/TA error '") + - (meError ? getMEErrorText(error) : - getSMSErrorText(error)) + - "' " + - stringPrintf(_("(code %s)"), s.c_str()), - ChatError, error); -} - -GsmAt::GsmAt(MeTa &meTa) : - _meTa(meTa), _port(meTa.getPort()), _eventHandler(NULL) -{ -} - -string GsmAt::chat(string atCommand, string response, - bool ignoreErrors, bool acceptEmptyResponse) - throw(GsmException) -{ - string dummy; - return chat(atCommand, response, dummy, ignoreErrors, false, - acceptEmptyResponse); -} - -string GsmAt::chat(string atCommand, string response, string &pdu, - bool ignoreErrors, bool expectPdu, - bool acceptEmptyResponse) throw(GsmException) -{ - string s; - bool gotOk = false; // special handling for empty SMS entries - - // send AT command - putLine("AT" + atCommand); - // and gobble up CR/LF (and possibly echoed characters if echo can't be - // switched off) - // Also, some mobiles (e.g., Sony Ericsson K800i) respond to commands - // like "at+cmgf=0" with "+CMGF: 0" on success as well as the "OK" - // status -- so gobble that (but not if that sort of response was expected) - // FIXME: this is a gross hack, should be done via capabilities or sth - #include - string::size_type loc = atCommand.find( "=", 1 ); - string expect; - if (loc != string::npos) { - expect = atCommand; - expect.replace(loc, 1, " "); - expect.insert(loc, ":"); - } else { - expect = ""; - } - do - { - s = normalize(getLine()); - } - while (s.length() == 0 || s == "AT" + atCommand || - ((response.length() == 0 || !matchResponse(s, response)) && - (expect.length() > 0 && matchResponse(s, expect)))); - - // handle errors - if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) - if (ignoreErrors) - return ""; - else - throwCmeException(s); - if (matchResponse(s, "ERROR")) - if (ignoreErrors) - return ""; - else - throw GsmException(_("ME/TA error '' (code not known)"), - ChatError, -1); - - // return if response is "OK" and caller says this is OK - if (acceptEmptyResponse && s == "OK") - return ""; - - // handle PDU if one is expected - if (expectPdu) - { - string ps; - do - { - ps = normalize(getLine()); - } - while (ps.length() == 0 && ps != "OK"); - if (ps == "OK") - gotOk = true; - else - { - pdu = ps; - // remove trailing zero added by some devices (e.g. Falcom A2-1) - if (pdu.length() > 0 && pdu[pdu.length() - 1] == 0) - pdu.erase(pdu.length() - 1); - } - } - - // handle expected response - if (response.length() == 0) // no response expected - { - if (s == "OK") return ""; - // else fall through to error - } - else - { - string result; - // some TA/TEs don't prefix their response with the response string - // as proscribed by the standard: just handle either case - if (matchResponse(s, response)) - result = cutResponse(s, response); - else - result = s; - - if (gotOk) - return result; - else - { - // get the final "OK" - do - { - s = normalize(getLine()); - } - while (s.length() == 0); - - if (s == "OK") return result; - // else fall through to error - } - } - throw GsmException( - stringPrintf(_("unexpected response '%s' when sending 'AT%s'"), - s.c_str(), atCommand.c_str()), - ChatError); -} - -vector GsmAt::chatv(string atCommand, string response, - bool ignoreErrors) throw(GsmException) -{ - string s; - vector result; - - // send AT command - putLine("AT" + atCommand); - // and gobble up CR/LF (and possibly echoed characters if echo can't be - // switched off) - do - { - s = normalize(getLine()); - } - while (s.length() == 0 || s == "AT" + atCommand); - - // handle errors - if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) - if (ignoreErrors) - return result; - else - throwCmeException(s); - if (matchResponse(s, "ERROR")) - if (ignoreErrors) - return result; - else - throw GsmException(_("ME/TA error '' (code not known)"), - ChatError, -1); - - // push all lines that are not empty - // cut response prefix if it is there - // stop when an OK line is read - while (1) - { - if (s == "OK") - return result; - // some TA/TEs don't prefix their response with the response string - // as proscribed by the standard: just handle either case - if (response.length() != 0 && matchResponse(s, response)) - result.push_back(cutResponse(s, response)); - else - result.push_back(s); - // get next line - do - { - s = normalize(getLine()); - } - while (s.length() == 0); - reportProgress(); - } - - // never reached - assert(0); - return result; -} - -string GsmAt::normalize(string s) -{ - size_t start = 0, end = s.length(); - bool changed = true; - - while (start < end && changed) - { - changed = false; - if (isspace(s[start])) - { - ++start; - changed = true; - } - else - if (isspace(s[end - 1])) - { - --end; - changed = true; - } - } - return s.substr(start, end - start); -} - -string GsmAt::sendPdu(string atCommand, string response, string pdu, - bool acceptEmptyResponse) throw(GsmException) -{ - string s; - bool errorCondition; - bool retry = false; - int tries = 5; // How many error conditions do we accept - - int c; - do - { - errorCondition = false; - putLine("AT" + atCommand); - do - { - retry = false; - try - { - do - { - // read first of two bytes "> " - c = readByte(); - } - // there have been reports that some phones give spurious CRs - // LF separates CDSI messages if there are more than one - while (c == CR || c == LF); - } - catch (GsmException &e) - { - c = '-'; - errorCondition = true; // TA does not expect PDU anymore, retry - } - - if (c == '+' || c == 'E') // error or unsolicited result code - { - _port->putBack(c); - s = normalize(getLine()); - errorCondition = (s != ""); - - retry = ! errorCondition; - } - } - while (retry); - } - while (errorCondition && tries--); - - if (! errorCondition) - { - - if (c != '>' || readByte() != ' ') - throw GsmException(_("unexpected character in PDU handshake"), - ChatError); - - putLine(pdu + "\032", false); // write pdu followed by CTRL-Z - - // some phones (Ericcson T68, T39) send spurious zero characters after - // accepting the PDU - c = readByte(); - if (c != 0) - _port->putBack(c); - - // loop while empty lines (maybe with a zero, Ericsson T39m) - // or an echo of the pdu (with or without CTRL-Z) - // is read - do - { - s = normalize(getLine()); - } - while (s.length() == 0 || s == pdu || s == (pdu + "\032") || - (s.length() == 1 && s[0] == 0)); - } - - // handle errors - if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) - throwCmeException(s); - if (matchResponse(s, "ERROR")) - throw GsmException(_("ME/TA error '' (code not known)"), - ChatError, -1); - - // return if response is "OK" and caller says this is OK - if (acceptEmptyResponse && s == "OK") - return ""; - - if (matchResponse(s, response)) - { - string result = cutResponse(s, response); - // get the final "OK" - do - { - s = normalize(getLine()); - } - while (s.length() == 0); - - if (s == "OK") return result; - // else fall through to error - } - throw GsmException( - stringPrintf(_("unexpected response '%s' when sending 'AT%s'"), - s.c_str(), atCommand.c_str()), - ChatError); -} - -string GsmAt::getLine() throw(GsmException) -{ - if (_eventHandler == (GsmEvent*)NULL) - return _port->getLine(); - else - { - bool eventOccurred; - string result; - do - { - eventOccurred = false; - result = _port->getLine(); - string s = normalize(result); - if (matchResponse(s, "+CMT:") || - matchResponse(s, "+CBM:") || - matchResponse(s, "+CDS:") || - matchResponse(s, "+CMTI:") || - matchResponse(s, "+CBMI:") || - matchResponse(s, "+CDSI:") || - matchResponse(s, "RING") || - matchResponse(s, "NO CARRIER") || - // hack: the +CLIP? sequence returns +CLIP: n,m - // which is NOT an unsolicited result code - (matchResponse(s, "+CLIP:") && s.length() > 10)) - { - _eventHandler->dispatch(s, *this); - eventOccurred = true; - } - } - while (eventOccurred); - return result; - } -} - -void GsmAt::putLine(string line, - bool carriageReturn) throw(GsmException) -{ - _port->putLine(line, carriageReturn); - // remove empty echo line - if (carriageReturn) - getLine(); -} - -bool GsmAt::wait(GsmTime timeout) throw(GsmException) -{ - return _port->wait(timeout); -} - -int GsmAt::readByte() throw(GsmException) -{ - return _port->readByte(); -} - -GsmEvent *GsmAt::setEventHandler(GsmEvent *newHandler) -{ - GsmEvent *result = _eventHandler; - _eventHandler = newHandler; - return result; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h deleted file mode 100644 index 96c3359425..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h +++ /dev/null @@ -1,104 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_at.h -// * -// * Purpose: Utility classes for AT command sequence handling -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.5.1999 -// ************************************************************************* - -#ifndef GSM_AT_H -#define GSM_AT_H - -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // forward declarations - - class GsmEvent; - class MeTa; - - // utiliy class to handle AT sequences - - class GsmAt : public RefBase - { - protected: - MeTa &_meTa; - Ref _port; - GsmEvent *_eventHandler; - - // return true if response matches - bool matchResponse(string answer, string responseToMatch); - - // cut response and normalize - string cutResponse(string answer, string responseToMatch); - - // parse CME error contained in string and throw MeTaException - void throwCmeException(string s) throw(GsmException); - - public: - GsmAt(MeTa &meTa); - - // return MeTa object for this AT object - MeTa &getMeTa() {return _meTa;} - - // the following sequence functions recognize asynchronous messages - // from the TA and return the appropriate event - - // send AT command, wait for response response, returns response line - // without response match - // if response == "" only an OK is expected - // white space at beginning or end are removed - // +CME ERROR or ERROR raises exception (if ignoreErrors == true) - // additionally, accept empty responses (just an OK) - // if acceptEmptyResponse == true - // in this case an empty string is returned - string chat(string atCommand = "", - string response = "", - bool ignoreErrors = false, - bool acceptEmptyResponse = false) throw(GsmException); - - // same as chat() above but also get pdu if expectPdu == true - string chat(string atCommand, - string response, - string &pdu, - bool ignoreErrors = false, - bool expectPdu = true, - bool acceptEmptyResponse = false) throw(GsmException); - - // same as above, but expect several response lines - vector chatv(string atCommand = "", - string response = "", - bool ignoreErrors = false) - throw(GsmException); - - // removes whitespace at beginning and end of string - string normalize(string s); - - // send pdu (wait for and send - // at the end - // return text after response - string sendPdu(string atCommand, string response, string pdu, - bool acceptEmptyResponse = false) throw(GsmException); - - // functions from class Port - string getLine() throw(GsmException); - void putLine(string line, - bool carriageReturn = true) throw(GsmException); - bool wait(GsmTime timeout) throw(GsmException); - int readByte() throw(GsmException); - - // set event handler class, return old one - GsmEvent *setEventHandler(GsmEvent *newHandler); - }; -}; - -#endif // GSM_AT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc deleted file mode 100644 index 37c0e4aae7..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc +++ /dev/null @@ -1,176 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_cb.cc -// * -// * Purpose: Cell Broadcast Message Implementation -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.8.2001 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// local constants - -static const string dashes = -"---------------------------------------------------------------------------"; - -// CBDataCodingScheme members - -CBDataCodingScheme::CBDataCodingScheme(unsigned char dcs) : _dcs(dcs) -{ - if ((_dcs & 0xf0) <= 0x30) // bits 7..4 in the range 0000..0011 - if ((_dcs & 0x30) == 0) - _language = (Language)_dcs; - else - _language = Unknown; -} - -string CBDataCodingScheme::toString() const -{ - string result; - if (compressed()) result += _("compressed "); - switch (getLanguage()) - { - case German: - result += _("German"); - break; - case English: - result += _("English"); - break; - case Italian: - result += _("Italian"); - break; - case French: - result += _("French"); - break; - case Spanish: - result += _("Spanish"); - break; - case Dutch: - result += _("Dutch"); - break; - case Swedish: - result += _("Swedish"); - break; - case Danish: - result += _("Danish"); - break; - case Portuguese: - result += _("Portuguese"); - break; - case Finnish: - result += _("Finnish"); - break; - case Norwegian: - result += _("Norwegian"); - break; - case Greek: - result += _("Greek"); - break; - case Turkish: - result += _("Turkish"); - break; - } - result += " "; - switch (getAlphabet()) - { - case DCS_DEFAULT_ALPHABET: - result += _("default alphabet"); - break; - case DCS_EIGHT_BIT_ALPHABET: - result += _("8-bit alphabet"); - break; - case DCS_SIXTEEN_BIT_ALPHABET: - result += _("16-bit alphabet"); - break; - case DCS_RESERVED_ALPHABET: - result += _("reserved alphabet"); - break; - } - return result; -} - -// CBMessage members - -CBMessage::CBMessage(string pdu) throw(GsmException) -{ - SMSDecoder d(pdu); - _messageCode = d.getInteger(6) << 4; - _geographicalScope = (GeographicalScope)d.get2Bits(); - _updateNumber = d.getInteger(4); - _messageCode |= d.getInteger(4); - _messageIdentifier = d.getInteger(8) << 8; - _messageIdentifier |= d.getInteger(8); - _dataCodingScheme = CBDataCodingScheme(d.getOctet()); - _totalPageNumber = d.getInteger(4); - _currentPageNumber = d.getInteger(4); - - // the values 82 and 93 come from ETSI GSM 03.41, section 9.3 - d.markSeptet(); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - { - _data = d.getString(93); - _data = gsmToLatin1(_data); - } - else - { - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * 82); - d.getOctets(s, 82); - _data.assign((char*)s, (unsigned int)82); - } -} - -string CBMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: CB") << endl - << _("Geographical scope: "); - switch (_geographicalScope) - { - case CellWide: - os << "Cell wide" << endl; - break; - case PLMNWide: - os << "PLMN wide" << endl; - break; - case LocationAreaWide: - os << "Location area wide" << endl; - break; - case CellWide2: - os << "Cell wide (2)" << endl; - break; - } - // remove trailing \r characters for output - string data = _data; - string::iterator i; - for (i = data.end(); i > data.begin() && *(i - 1) == '\r'; - --i); - data.erase(i, data.end()); - - os << _("Message Code: ") << _messageCode << endl - << _("Update Number: ") << _updateNumber << endl - << _("Message Identifer: ") << _messageIdentifier << endl - << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl - << _("Total page number: ") << _totalPageNumber << endl - << _("Current page number: ") << _currentPageNumber << endl - << _("Data: '") << data << "'" << endl - << dashes << endl << endl << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h deleted file mode 100644 index 3457c8105c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h +++ /dev/null @@ -1,106 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_cb.h -// * -// * Purpose: Cell Broadcast Message Implementation -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.8.2001 -// ************************************************************************* - -#ifndef GSM_CB_H -#define GSM_CB_H - -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // representation of DataCodingScheme - // The data coding scheme is described in detail in ETSI GSM 03.38, section 5 - // This class reuses the DCS_* constants from DataCodingScheme in - // gsm_sms_codec - - class CBDataCodingScheme - { - public: - enum Language {German = 0, English = 1, Italian = 2, French = 3, - Spanish = 4, Dutch = 5, Swedish = 6, Danish = 7, - Portuguese = 8, Finnish = 9, Norwegian = 10, Greek = 11, - Turkish = 12, Unknown = 1000}; - - private: - unsigned char _dcs; - Language _language; - - public: - // initialize with data coding scheme octet - CBDataCodingScheme(unsigned char dcs); - - // default constructor - CBDataCodingScheme() : _dcs(DCS_DEFAULT_ALPHABET), _language(English) {} - - // return language of CBM - Language getLanguage() const {return _language;} - - // return compression level (if language == Unknown) - bool compressed() const {return (_dcs & DCS_COMPRESSED) == DCS_COMPRESSED;} - - // return type of alphabet used - // (DCS_DEFAULT_ALPHABET, DCS_EIGHT_BIT_ALPHABET, DCS_SIXTEEN_BIT_ALPHABET, - // DCS_RESERVED_ALPHABET) - unsigned char getAlphabet() const - {return _language == Unknown ? _dcs & (3 << 2) : DCS_DEFAULT_ALPHABET;} - - // create textual representation of CB data coding scheme - string toString() const; - }; - - // representation of Cell Broadcast message (CBM) - // The CBM format is described in detail in ETSI GSM 03.41, section 9.3 - - class CBMessage : public RefBase - { - public: - enum GeographicalScope {CellWide, PLMNWide, LocationAreaWide, - CellWide2}; - - private: - // fields parsed from the CB TPDU - GeographicalScope _geographicalScope; - int _messageCode; - int _updateNumber; - int _messageIdentifier; - CBDataCodingScheme _dataCodingScheme; - int _totalPageNumber; - int _currentPageNumber; - string _data; - - public: - // constructor with given pdu - CBMessage(string pdu) throw(GsmException); - - // accessor functions - GeographicalScope getGeographicalScope() const {return _geographicalScope;} - int getMessageCode() const {return _messageCode;} - int getUpdateNumber() const {return _updateNumber;} - int getMessageIdentifier() const {return _messageIdentifier;} - CBDataCodingScheme getDataCodingScheme() const {return _dataCodingScheme;} - int getTotalPageNumber() const {return _totalPageNumber;} - int getCurrentPageNumber() const {return _currentPageNumber;} - string getData() const {return _data;} - - // create textual representation of CBM - string toString() const; - }; - - // some useful typdefs - typedef Ref CBMessageRef; -}; - -#endif // GSM_CB_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc deleted file mode 100644 index 2cf9179ede..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc +++ /dev/null @@ -1,424 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_error.cc -// * -// * Purpose: Error codes and error handling functions -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 11.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -string gsmlib::getMEErrorText(const int errorCode) throw(GsmException) -{ - switch (errorCode) - { - case ME_PHONE_FAILURE: - return _("phone failure"); - break; - case ME_NO_CONNECTION_TO_PHONE: - return _("no connection to phone"); - break; - case ME_PHONE_ADAPTOR_LINK_RESERVED: - return _("phone adaptor link reserved"); - break; - case ME_OPERATION_NOT_ALLOWED: - return _("operation not allowed"); - break; - case ME_OPERATION_NOT_SUPPORTED: - return _("operation not supported"); - break; - case ME_PH_SIM_PIN_REQUIRED: - return _("ph SIM PIN required"); - break; - case ME_SIM_NOT_INSERTED: - return _("SIM not inserted"); - break; - case ME_SIM_PIN_REQUIRED: - return _("SIM PIN required"); - break; - case ME_SIM_PUK_REQUIRED: - return _("SIM PUK required"); - break; - case ME_SIM_FAILURE: - return _("SIM failure"); - break; - case ME_SIM_BUSY: - return _("SIM busy"); - break; - case ME_SIM_WRONG: - return _("SIM wrong"); - break; - case ME_INCORRECT_PASSWORD: - return _("incorrect password"); - break; - case ME_SIM_PIN2_REQUIRED: - return _("SIM PIN2 required"); - break; - case ME_SIM_PUK2_REQUIRED: - return _("SIM PUK2 required"); - break; - case ME_MEMORY_FULL: - return _("memory full"); - break; - case ME_INVALID_INDEX: - return _("invalid index"); - break; - case ME_NOT_FOUND: - return _("not found"); - break; - case ME_MEMORY_FAILURE: - return _("memory failure"); - break; - case ME_TEXT_STRING_TOO_LONG: - return _("text string too long"); - break; - case ME_INVALID_CHARACTERS_IN_TEXT_STRING: - return _("invalid characters in text string"); - break; - case ME_DIAL_STRING_TOO_LONG: - return _("dial string too long"); - break; - case ME_INVALID_CHARACTERS_IN_DIAL_STRING: - return _("invalid characters in dial string"); - break; - case ME_NO_NETWORK_SERVICE: - return _("no network service"); - break; - case ME_NETWORK_TIMEOUT: - return _("network timeout"); - break; - case ME_UNKNOWN: - return _("unknown"); - break; - default: - throw GsmException(stringPrintf(_("invalid ME error %d"), errorCode), - OtherError); - } -} - -string gsmlib::getSMSErrorText(const int errorCode) throw(GsmException) -{ - switch (errorCode) - { - case SMS_UNASSIGNED_OR_UNALLOCATED_NUMBER: - return _("Unassigned (unallocated) number"); - break; - case SMS_OPERATOR_DETERMINED_BARRING: - return _("Operator determined barring"); - break; - case SMS_CALL_BARRED: - return _("Call barred"); - break; - case SMS_NETWORK_FAILURE: - return _("Network failure"); - break; - case SMS_SHORT_MESSAGE_TRANSFER_REJECTED: - return _("Short message transfer rejected"); - break; - case SMS_CONGESTION: - case SMS_CONGESTION2: - return _("Congestion"); - break; - case SMS_DESTINATION_OUT_OF_SERVICE: - return _("Destination out of service"); - break; - case SMS_UNIDENTIFIED_SUBSCRIBER: - return _("Unidentified subscriber"); - break; - case SMS_FACILITY_REJECTED: - return _("Facility rejected"); - break; - case SMS_UNKNOWN_SUBSCRIBER: - return _("Unknown subscriber"); - break; - case SMS_NETWORK_OUT_OF_ORDER: - return _("Network out of order"); - break; - case SMS_TEMPORARY_FAILURE: - return _("Temporary failure"); - break; - case SMS_RESOURCES_UNAVAILABLE_UNSPECIFIED: - return _("Resources unavailable, unspecified"); - break; - case SMS_REQUESTED_FACILITY_NOT_SUBSCRIBED: - return _("Requested facility not subscribed"); - break; - case SMS_REQUESTED_FACILITY_NOT_IMPLEMENTED: - return _("Requested facility not implemented"); - break; - case SMS_INVALID_TRANSACTION_IDENTIFIER: - return _("Invalid Transaction Identifier"); - break; - case SMS_SEMANTICALLY_INCORRECT_MESSAGE: - return _("Semantically incorrect message"); - break; - case SMS_INVALID_MANDATORY_INFORMATION: - return _("Invalid mandatory information"); - break; - case SMS_MESSAGE_TYPE_NONEXISTENT_OR_NOT_IMPLEMENTED: - return _("Message type non-existent or not implemented"); - break; - case SMS_MESSAGE_NOT_COMPATIBLE_WITH_SHORT_MESSAGE_PROTOCOL_STATE: - return _("Message not compatible with short message protocol state"); - break; - case SMS_INFORMATION_ELEMENT_NONEXISTENT_OR_NOT_IMPLEMENTED: - return _("Information element non-existent or not implemented"); - break; - case SMS_UNSPECIFIED_PROTOCOL_ERROR: - return _("Protocol error, unspecified"); - break; - case SMS_UNSPECIFIED_INTERWORKING_ERROR: - return _("Interworking, unspecified"); - break; - case SMS_TELEMATIC_INTERWORKING_NOT_SUPPORTED: - return _("Telematic interworking not supported"); - break; - case SMS_SHORT_MESSAGE_TYPE_0_NOT_SUPPORTED: - return _("Short message Type 0 not supported"); - break; - case SMS_CANNOT_REPLACE_SHORT_MESSAGE: - return _("Cannot replace short message"); - break; - case SMS_UNSPECIFIED_TP_PID_ERROR: - return _("Unspecified TP-PID error"); - break; - case SMS_DATA_CODING_SCHEME_NOT_SUPPORTED: - return _("Data coding scheme (alphabet) not supported"); - break; - case SMS_MESSAGE_CLASS_NOT_SUPPORTED: - return _("Message class not supported"); - break; - case SMS_UNSPECIFIEC_TP_DCS_ERROR: - return _("Unspecifiec TP-DCS error"); - break; - case SMS_COMMAND_CANNOT_BE_ACTIONED: - return _("Command cannot be actioned"); - break; - case SMS_COMMAND_UNSUPPORTED: - return _("Command unsupported"); - break; - case SMS_UNSPECIFIED_TP_COMMAND_ERROR: - return _("Unspecified TP-Command error"); - break; - case SMS_TPDU_NOT_SUPPORTED: - return _("TPDU not supported"); - break; - case SMS_SC_BUSY: - return _("SC busy"); - break; - case SMS_NO_SC_SUBSCRIPTION: - return _("No SC subscription"); - break; - case SMS_SC_SYSTEM_FAILURE: - return _("SC system failure"); - break; - case SMS_INVALID_SME_ADDRESS: - return _("Invalid SME address"); - break; - case SMS_DESTINATION_SME_BARRED: - return _("Destination SME barred"); - break; - case SMS_SM_REJECTED_DUPLICATED_SM: - return _("SM Rejected-Duplicated SM"); - break; - case SMS_SIM_SMS_STORAGE_FULL: - return _("SIM SMS storage full"); - break; - case SMS_NO_SMS_STORAGE_CAPABILITY_IN_SIM: - return _("No SMS storage capability in SIM"); - break; - case SMS_ERROR_IN_MS: - return _("Error in MS"); - break; - case SMS_MEMORY_CAPACITY_EXCEED: - return _("Memory Capacity Exceed"); - break; - case SMS_UNSPECIFIED_ERROR_CAUSE: - return _("Unspecified error cause"); - break; - case SMS_ME_FAILURE: - return _("ME failure"); - break; - case SMS_SMS_SERVICE_OF_ME_RESERVED: - return _("SMS service of ME reserved"); - break; - case SMS_OPERATION_NOT_ALLOWED: - return _("operation not allowed"); - break; - case SMS_OPERATION_NOT_SUPPORTED: - return _("operation not supported"); - break; - case SMS_INVALID_PDU_MODE_PARAMETER: - return _("invalid PDU mode parameter"); - break; - case SMS_INVALID_TEXT_MODE_PARAMETER: - return _("invalid text mode parameter"); - break; - case SMS_SIM_NOT_INSERTED: - return _("SIM not inserted"); - break; - case SMS_SIM_PIN_REQUIRED: - return _("SIM PIN required"); - break; - case SMS_PH_SIM_PIN_REQUIRED: - return _("PH-SIM PIN required"); - break; - case SMS_SIM_FAILURE: - return _("SIM failure"); - break; - case SMS_SIM_BUSY: - return _("SIM busy"); - break; - case SMS_SIM_WRONG: - return _("SIM wrong"); - break; - case SMS_SIM_PUK_REQUIRED: - return _("SIM PUK required"); - break; - case SMS_SIM_PIN2_REQUIRED: - return _("SIM PIN2 required"); - break; - case SMS_SIM_PUK2_REQUIRED: - return _("SIM PUK2 required"); - break; - case SMS_MEMORY_FAILURE: - return _("memory failure"); - break; - case SMS_INVALID_MEMORY_INDEX: - return _("invalid memory index"); - break; - case SMS_MEMORY_FULL: - return _("memory full"); - break; - case SMS_SMSC_ADDRESS_UNKNOWN: - return _("SMSC address unknown"); - break; - case SMS_NO_NETWORK_SERVICE: - return _("no network service"); - break; - case SMS_NETWORK_TIMEOUT: - return _("network timeout"); - break; - case SMS_NO_CNMA_ACKNOWLEDGEMENT_EXPECTED: - return _("no +CNMA acknowledgement expected"); - break; - case SMS_UNKNOWN_ERROR: - return _("unknown error"); - break; - default: - throw GsmException(stringPrintf(_("invalid SMS error %d"), errorCode), - OtherError); - } -} - -string gsmlib::getSMSStatusString(unsigned char status) -{ - string result; - if (status < SMS_STATUS_TEMPORARY_BIT) - { - switch (status) - { - case SMS_STATUS_RECEIVED: - result = _("Short message received by the SME"); - break; - case SMS_STATUS_FORWARDED: - result = _("Short message forwarded by the SC to the SME but the SC " - "is unable to confirm delivery"); - break; - case SMS_STATUS_SM_REPLACES: - result = _("Short message replaced by the SC"); - break; - default: - result = _("reserved"); - break; - } - return result; - } - else if (status & SMS_STATUS_TEMPORARY_BIT) - { - switch (status & ~(SMS_STATUS_TEMPORARY_BIT | SMS_STATUS_PERMANENT_BIT)) - { - case SMS_STATUS_CONGESTION: - result = _("Congestion"); - break; - case SMS_STATUS_SME_BUSY: - result = _("SME busy"); - break; - case SMS_STATUS_NO_RESPONSE_FROM_SME: - result = _("No response from SME"); - break; - case SMS_STATUS_SERVICE_REJECTED: - result = _("Service rejected"); - break; - case SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE: - result = _("Quality of service not available"); - break; - case SMS_STATUS_ERROR_IN_SME: - result = _("Error in SME"); - break; - default: - result = _("reserved"); - break; - } - if (status & SMS_STATUS_PERMANENT_BIT) - return result + _(" (Temporary error, SC is not making any " - "more transfer attempts)"); - else - return result + _(" (Temporary error, SC still trying to " - "transfer SM)"); - } - else - { - switch (status & ~SMS_STATUS_PERMANENT_BIT) - { - case SMS_STATUS_REMOTE_PROCECURE_ERROR: - result = _("Remote Procedure Error"); - break; - case SMS_STATUS_INCOMPATIBLE_DESTINATION: - result = _("Incompatible destination"); - break; - case SMS_STATUS_CONNECTION_REJECTED_BY_SME: - result = _("Connection rejected by SME"); - break; - case SMS_STATUS_NOT_OBTAINABLE: - result = _("Not obtainable"); - break; - case SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE: - result = _("Quality of service not available"); - break; - case SMS_STATUS_NO_INTERWORKING_AVAILABLE: - result = _("No interworking available"); - break; - case SMS_STATUS_SM_VALIDITY_PERDIOD_EXPIRED: - result = _("SM validity period expired"); - break; - case SMS_STATUS_SM_DELETED_BY_ORIGINATING_SME: - result = _("SM deleted by originating SME"); - break; - case SMS_STATUS_SM_DELETED_BY_ADMINISTRATION: - result = _("SM deleted by SC administration"); - break; - case SMS_STATUS_SM_DOES_NOT_EXIST: - result = _("SM does not exit"); - break; - default: - result = _("reserved"); - break; - } - return result + _(" (Permanent Error, SC is not making any " - "more transfer attempts)"); - } -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h deleted file mode 100644 index 5dc96538e3..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h +++ /dev/null @@ -1,209 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_error.h -// * -// * Purpose: Error codes and error handling functions -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.5.1999 -// ************************************************************************* - -#ifndef GSM_ERROR_H -#define GSM_ERROR_H - -#include -#include - -using namespace std; - -namespace gsmlib -{ - // different classes of GSM errors - enum GsmErrorClass{OSError, // error caused by OS call (eg. file handling) - ParserError, // error when parsing AT response - ChatError, // error in chat sequence (ME/TA/SMS error) - ParameterError, // gsmlib function called with bad params - NotImplementedError, // feature not implemented - MeTaCapabilityError, // non-existent capability in ME - SMSFormatError, // SMS format error - InterruptException, // gsmlib was interrupted() - OtherError}; // all other errors - - // all gsmlib exceptions - - class GsmException : public runtime_error - { - private: - GsmErrorClass _errorClass; - int _errorCode; - - public: - GsmException(string errorText, GsmErrorClass errorClass) : - runtime_error(errorText), _errorClass(errorClass), _errorCode(-1) {} - - GsmException(string errorText, GsmErrorClass errorClass, int errorCode) : - runtime_error(errorText), _errorClass(errorClass), - _errorCode(errorCode) {} - - int getErrorCode() const {return _errorCode;} - - GsmErrorClass getErrorClass() const {return _errorClass;} - }; - - // error codes returned by TA/ME (+CMEE) - - const int ME_PHONE_FAILURE = 0; - const int ME_NO_CONNECTION_TO_PHONE = 1; - const int ME_PHONE_ADAPTOR_LINK_RESERVED = 2; - const int ME_OPERATION_NOT_ALLOWED = 3; - const int ME_OPERATION_NOT_SUPPORTED = 4; - const int ME_PH_SIM_PIN_REQUIRED = 5; - const int ME_SIM_NOT_INSERTED = 10; - const int ME_SIM_PIN_REQUIRED = 11; - const int ME_SIM_PUK_REQUIRED = 12; - const int ME_SIM_FAILURE = 13; - const int ME_SIM_BUSY = 14; - const int ME_SIM_WRONG = 15; - const int ME_INCORRECT_PASSWORD = 16; - const int ME_SIM_PIN2_REQUIRED = 17; - const int ME_SIM_PUK2_REQUIRED = 18; - const int ME_MEMORY_FULL = 20; - const int ME_INVALID_INDEX = 21; - const int ME_NOT_FOUND = 22; - const int ME_MEMORY_FAILURE = 23; - const int ME_TEXT_STRING_TOO_LONG = 24; - const int ME_INVALID_CHARACTERS_IN_TEXT_STRING = 25; - const int ME_DIAL_STRING_TOO_LONG = 26; - const int ME_INVALID_CHARACTERS_IN_DIAL_STRING = 27; - const int ME_NO_NETWORK_SERVICE = 30; - const int ME_NETWORK_TIMEOUT = 31; - const int ME_UNKNOWN = 100; - - // return descriptive text for the given error code - // the text is already translated - extern string getMEErrorText(const int errorCode) throw(GsmException); - - // SMS error codes - - // error codes from ETSI GSM 04.11, Annex E - const int SMS_UNASSIGNED_OR_UNALLOCATED_NUMBER = 1; - const int SMS_OPERATOR_DETERMINED_BARRING = 8; - const int SMS_CALL_BARRED = 10; - const int SMS_NETWORK_FAILURE = 17; - const int SMS_SHORT_MESSAGE_TRANSFER_REJECTED = 21; - const int SMS_CONGESTION = 22; - const int SMS_DESTINATION_OUT_OF_SERVICE = 27; - const int SMS_UNIDENTIFIED_SUBSCRIBER = 28; - const int SMS_FACILITY_REJECTED = 29; - const int SMS_UNKNOWN_SUBSCRIBER = 30; - const int SMS_NETWORK_OUT_OF_ORDER = 38; - const int SMS_TEMPORARY_FAILURE = 41; - const int SMS_CONGESTION2 = 42; - const int SMS_RESOURCES_UNAVAILABLE_UNSPECIFIED = 47; - const int SMS_REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; - const int SMS_REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; - const int SMS_INVALID_TRANSACTION_IDENTIFIER = 81; - const int SMS_SEMANTICALLY_INCORRECT_MESSAGE = 95; - const int SMS_INVALID_MANDATORY_INFORMATION = 96; - const int SMS_MESSAGE_TYPE_NONEXISTENT_OR_NOT_IMPLEMENTED = 97; - const int SMS_MESSAGE_NOT_COMPATIBLE_WITH_SHORT_MESSAGE_PROTOCOL_STATE = 98; - const int SMS_INFORMATION_ELEMENT_NONEXISTENT_OR_NOT_IMPLEMENTED = 99; - const int SMS_UNSPECIFIED_PROTOCOL_ERROR = 111; - const int SMS_UNSPECIFIED_INTERWORKING_ERROR = 127; - - // error codes from ETSI GSM 03.40, section 9.2.3.22 - const int SMS_TELEMATIC_INTERWORKING_NOT_SUPPORTED = 0x80; - const int SMS_SHORT_MESSAGE_TYPE_0_NOT_SUPPORTED = 0x81; - const int SMS_CANNOT_REPLACE_SHORT_MESSAGE = 0x82; - const int SMS_UNSPECIFIED_TP_PID_ERROR = 0x8f; - const int SMS_DATA_CODING_SCHEME_NOT_SUPPORTED = 0x90; - const int SMS_MESSAGE_CLASS_NOT_SUPPORTED = 0x91; - const int SMS_UNSPECIFIEC_TP_DCS_ERROR = 0x9f; - const int SMS_COMMAND_CANNOT_BE_ACTIONED = 0xa0; - const int SMS_COMMAND_UNSUPPORTED = 0xa1; - const int SMS_UNSPECIFIED_TP_COMMAND_ERROR = 0xaf; - const int SMS_TPDU_NOT_SUPPORTED = 0xb0; - const int SMS_SC_BUSY = 0xc0; - const int SMS_NO_SC_SUBSCRIPTION = 0xc1; - const int SMS_SC_SYSTEM_FAILURE = 0xc2; - const int SMS_INVALID_SME_ADDRESS = 0xc3; - const int SMS_DESTINATION_SME_BARRED = 0xc4; - const int SMS_SM_REJECTED_DUPLICATED_SM = 0xc5; - const int SMS_SIM_SMS_STORAGE_FULL = 0xd0; - const int SMS_NO_SMS_STORAGE_CAPABILITY_IN_SIM = 0xd1; - const int SMS_ERROR_IN_MS = 0xd2; - const int SMS_MEMORY_CAPACITY_EXCEED = 0xd3; - const int SMS_UNSPECIFIED_ERROR_CAUSE = 0xff; - - // error codes from ETSI GSM 07.05, section 3.2.5 - const int SMS_ME_FAILURE = 300; - const int SMS_SMS_SERVICE_OF_ME_RESERVED = 301; - const int SMS_OPERATION_NOT_ALLOWED = 302; - const int SMS_OPERATION_NOT_SUPPORTED = 303; - const int SMS_INVALID_PDU_MODE_PARAMETER = 304; - const int SMS_INVALID_TEXT_MODE_PARAMETER = 305; - const int SMS_SIM_NOT_INSERTED = 310; - const int SMS_SIM_PIN_REQUIRED = 311; - const int SMS_PH_SIM_PIN_REQUIRED = 312; - const int SMS_SIM_FAILURE = 313; - const int SMS_SIM_BUSY = 314; - const int SMS_SIM_WRONG = 315; - const int SMS_SIM_PUK_REQUIRED = 316; - const int SMS_SIM_PIN2_REQUIRED = 317; - const int SMS_SIM_PUK2_REQUIRED = 318; - const int SMS_MEMORY_FAILURE = 320; - const int SMS_INVALID_MEMORY_INDEX = 321; - const int SMS_MEMORY_FULL = 322; - const int SMS_SMSC_ADDRESS_UNKNOWN = 330; - const int SMS_NO_NETWORK_SERVICE = 331; - const int SMS_NETWORK_TIMEOUT = 332; - const int SMS_NO_CNMA_ACKNOWLEDGEMENT_EXPECTED = 340; - const int SMS_UNKNOWN_ERROR = 500; - - // return descriptive text for the given error code - // the text is already translated - extern string getSMSErrorText(const int errorCode) throw(GsmException); - - // SMS status handling - // success codes - const int SMS_STATUS_RECEIVED = 0; - const int SMS_STATUS_FORWARDED = 1; - const int SMS_STATUS_SM_REPLACES = 2; - - // if this bit is set, the error is only temporary and - // the SC is still trying to transfer the SM - const int SMS_STATUS_TEMPORARY_BIT = 32; - - // if this bit is set, the error is only temporary and - // the SC is still trying to transfer the SM - const int SMS_STATUS_PERMANENT_BIT = 64; - // both bits may be set at once - - // temporary errors (both bits may be set) - const int SMS_STATUS_CONGESTION = 0; - const int SMS_STATUS_SME_BUSY = 1; - const int SMS_STATUS_NO_RESPONSE_FROM_SME = 2; - const int SMS_STATUS_SERVICE_REJECTED = 3; - const int SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE = 4; - const int SMS_STATUS_ERROR_IN_SME = 5; - - // permanent errors (SMS_STATUS_PERMANENT_BIT is set) - const int SMS_STATUS_REMOTE_PROCECURE_ERROR = 0; - const int SMS_STATUS_INCOMPATIBLE_DESTINATION = 1; - const int SMS_STATUS_CONNECTION_REJECTED_BY_SME = 2; - const int SMS_STATUS_NOT_OBTAINABLE = 3; - // const int SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE = 4; - const int SMS_STATUS_NO_INTERWORKING_AVAILABLE = 5; - const int SMS_STATUS_SM_VALIDITY_PERDIOD_EXPIRED = 6; - const int SMS_STATUS_SM_DELETED_BY_ORIGINATING_SME = 7; - const int SMS_STATUS_SM_DELETED_BY_ADMINISTRATION = 8; - const int SMS_STATUS_SM_DOES_NOT_EXIST = 9; - - // return text for SMS status code - // the text is already translated - string getSMSStatusString(unsigned char status); -}; - -#endif // GSM_ERROR_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc deleted file mode 100644 index a608b04f62..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc +++ /dev/null @@ -1,174 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_event.cc -// * -// * Purpose: Event handler interface -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 7.6.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// GsmEvent members - -void GsmEvent::dispatch(string s, GsmAt &at) throw(GsmException) -{ - SMSMessageType messageType; - bool indication = false; - if (s.substr(0, 5) == "+CMT:") - messageType = NormalSMS; - else if (s.substr(0, 5) == "+CBM:") - messageType = CellBroadcastSMS; - else if (s.substr(0, 5) == "+CDS:") - { - // workaround for phones that report CDS when they actually mean CDSI - indication = at.getMeTa().getCapabilities()._CDSmeansCDSI; - messageType = StatusReportSMS; - } - else if (s.substr(0, 6) == "+CMTI:") - { - indication = true; - messageType = NormalSMS; - } - else if (s.substr(0, 6) == "+CBMI:") - { - indication = true; - messageType = CellBroadcastSMS; - } - else if (s.substr(0, 6) == "+CDSI:") - { - indication = true; - messageType = StatusReportSMS; - } - else if (s.substr(0, 4) == "RING") - { - ringIndication(); - return; - } - // handling NO CARRIER - else if (s.substr(0, 10) == "NO CARRIER") - { - noAnswer(); - return; - } - - else if (s.substr(0, 6) == "+CLIP:") - { - // ,[,,[,]] - s = s.substr(6); - Parser p(s); - string num = p.parseString(); - if (p.parseComma(true)) - { - unsigned int numberFormat; - if ((numberFormat = p.parseInt()) == InternationalNumberFormat) - num = "+" + num; - else if (numberFormat != UnknownNumberFormat) - throw GsmException(stringPrintf(_("unexpected number format %d"), - numberFormat), OtherError); - } - string subAddr; - string alpha; - if (p.parseComma(true)) - { - subAddr = p.parseString(true); - p.parseComma(); - p.parseInt(true); // FIXME subaddr type ignored - - if (p.parseComma(true)) - alpha = p.parseString(true); - } - - // call the event handler - callerLineID(num, subAddr, alpha); - return; - } - else - throw GsmException(stringPrintf(_("unexpected unsolicited event '%s'"), - s.c_str()), OtherError); - - if (indication) - { - // handle SMS storage indication - s = s.substr(6); - Parser p(s); - string storeName = p.parseString(); - p.parseComma(); - unsigned int index = p.parseInt(); - SMSReceptionIndication(storeName, index - 1, messageType); - } - else - if (messageType == CellBroadcastSMS) - { - // handle CB message - string pdu = at.getLine(); - - CBMessageRef cb = new CBMessage(pdu); - - // call the event handler - CBReception(cb); - } - else - { - // handle SMS - string pdu = at.getLine(); - - // add missing service centre address if required by ME - if (! at.getMeTa().getCapabilities()._hasSMSSCAprefix) - pdu = "00" + pdu; - - SMSMessageRef sms = SMSMessage::decode(pdu); - - // send acknowledgement if necessary - if (at.getMeTa().getCapabilities()._sendAck) - at.chat("+CNMA"); - - // call the event handler - SMSReception(sms, messageType); - } -} - -void GsmEvent::callerLineID(string number, string subAddr, string alpha) -{ - // ignore event -} - -void GsmEvent::SMSReception(SMSMessageRef newMessage, - SMSMessageType messageType) -{ - // ignore event -} - -void GsmEvent::CBReception(CBMessageRef newMessage) -{ - // ignore event -} - -void GsmEvent::SMSReceptionIndication(string storeName, unsigned int index, - SMSMessageType messageType) -{ - // ignore event -} - -void GsmEvent::ringIndication() -{ - // ignore event -} - -void GsmEvent::noAnswer() -{ - // ignore event -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h deleted file mode 100644 index b2b986cd15..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h +++ /dev/null @@ -1,68 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_event.h -// * -// * Purpose: Event handler interface -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 7.6.1999 -// ************************************************************************* - -#ifndef GSM_EVENT_H -#define GSM_EVENT_H - -#include -#include - -using namespace std; - -namespace gsmlib -{ - // forward declarations - - class GsmAt; - - // event handler interface - - class GsmEvent - { - private: - // dispatch CMT/CBR/CDS/CLIP etc. - void dispatch(string s, GsmAt &at) throw(GsmException); - - public: - // for SMSReception, type of SMS - enum SMSMessageType {NormalSMS, CellBroadcastSMS, StatusReportSMS}; - - // caller line identification presentation - // only called if setCLIPEvent(true) is set - virtual void callerLineID(string number, string subAddr, string alpha); - - // called if the string NO CARRIER is read - virtual void noAnswer(); - - // SMS reception - // only called if setSMSReceptionEvent(...true...) is set - virtual void SMSReception(SMSMessageRef newMessage, - SMSMessageType messageType); - - // CB reception - // only called if setSMSReceptionEvent(...true...) is set - // storage of CBM in ME is not supported by the standard - virtual void CBReception(CBMessageRef newMessage); - - // SMS reception indication (called when SMS is not delivered to TE - // but stored in ME memory) - virtual void SMSReceptionIndication(string storeName, unsigned int index, - SMSMessageType messageType); - - // RING indication - virtual void ringIndication(); - - friend class gsmlib::GsmAt; - }; -}; - -#endif // GSM_EVENT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h deleted file mode 100644 index d47b7e0cd9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h +++ /dev/null @@ -1,128 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_map_key.h -// * -// * Purpose: Common MapKey implementation for the multimaps in -// * gsm_sorted_sms_store and gsm_sorted_phonebook -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 5.11.1999 -// ************************************************************************* - -#ifndef GSM_MAP_KEY_H -#define GSM_MAP_KEY_H - -#include - -namespace gsmlib -{ - // sort order for MapKeys - - enum SortOrder {ByText = 0, ByTelephone = 1, ByIndex = 2, ByDate = 3, - ByType = 4, ByAddress = 5}; - - // wrapper for map key, can access Sortedtore to get sortOrder() - - template class MapKey - { - public: - SortedStore &_myStore; // my store - // different type keys - Address _addressKey; - Timestamp _timeKey; - int _intKey; - string _strKey; - - public: - // constructors for the different sort keys - MapKey(SortedStore &myStore, Address key) : - _myStore(myStore), _addressKey(key) {} - MapKey(SortedStore &myStore, Timestamp key) : - _myStore(myStore), _timeKey(key) {} - MapKey(SortedStore &myStore, int key) : - _myStore(myStore), _intKey(key) {} - MapKey(SortedStore &myStore, string key) : - _myStore(myStore), _strKey(key) {} - -/* - friend - bool operator< -#ifndef WIN32 - <> -#endif - (const MapKey &x, - const MapKey &y); - friend - bool operator== -#ifndef WIN32 - <> -#endif - (const MapKey &x, - const MapKey &y); -*/ - }; - - // compare two keys - template - extern bool operator<(const MapKey &x, - const MapKey &y); - template - extern bool operator==(const MapKey &x, - const MapKey &y); - - // MapKey members - - template - bool operator<(const MapKey &x, - const MapKey &y) - { - assert(&x._myStore == &y._myStore); - - switch (x._myStore.sortOrder()) - { - case ByDate: - return x._timeKey < y._timeKey; - case ByAddress: - return x._addressKey < y._addressKey; - case ByIndex: - case ByType: - return x._intKey < y._intKey; - case ByTelephone: - return Address(x._strKey) < Address(y._strKey); - case ByText: - return x._strKey < y._strKey; - default: - assert(0); - return true; - } - } - - template - bool operator==(const MapKey &x, - const MapKey &y) - { - assert(&x._myStore == &y._myStore); - - switch (x._myStore.sortOrder()) - { - case ByDate: - return x._timeKey == y._timeKey; - case ByAddress: - return x._addressKey == y._addressKey; - case ByIndex: - case ByType: - return x._intKey == y._intKey; - case ByTelephone: - return Address(x._strKey) == Address(y._strKey); - case ByText: - return x._strKey == y._strKey; - default: - assert(0); - return true; - } - } -}; - -#endif // GSM_MAP_KEY_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc deleted file mode 100644 index 1f9e84581a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc +++ /dev/null @@ -1,1254 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_me_ta.cc -// * -// * Purpose: Mobile Equipment/Terminal Adapter functions -// * (ETSI GSM 07.07) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 10.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -#include - -using namespace std; -using namespace gsmlib; - -// Capabilities members - -Capabilities::Capabilities() : - _hasSMSSCAprefix(true), - _cpmsParamCount(-1), // initialize to -1, must be set later by - // setSMSStore() function - _omitsColon(true), // FIXME - _veryShortCOPSanswer(false), // Falcom A2-1 - _wrongSMSStatusCode(false), // Motorola Timeport 260 - _CDSmeansCDSI(false), // Nokia Cellular Card Phone RPE-1 GSM900 and - // Nokia Card Phone RPM-1 GSM900/1800 - _sendAck(false) // send ack for directly routed SMS -{ -} - -// MeTa members - -void MeTa::init() throw(GsmException) -{ - // switch on extended error codes - // caution: may be ignored by some TAs, so allow it to fail - _at->chat("+CMEE=1", "", true, true); - - // select SMS pdu mode - _at->chat("+CMGF=0"); - - // now fill in capability object - MEInfo info = getMEInfo(); - - // Ericsson model 6050102 - if ((info._manufacturer == "ERICSSON" && - (info._model == "1100801" || - info._model == "1140801")) || - getenv("GSMLIB_SH888_FIX") != NULL) - { - // the Ericsson leaves out the service centre address - _capabilities._hasSMSSCAprefix = false; - } - - // handle Falcom strangeness - if ((info._manufacturer == "Funkanlagen Leipoldt OHG" && - info._revision == "01.95.F2") || - getenv("GSMLIB_FALCOM_A2_1_FIX") != NULL) - { - _capabilities._veryShortCOPSanswer = true; - } - - // handle Motorola SMS store bug - wrong status code - if ((info._manufacturer == "Motorola" && - info._model == "L Series")) - { - _capabilities._wrongSMSStatusCode = true; - } - - // handle Nokia Cellular Card Phone RPE-1 GSM900 and - // Nokia Card Phone RPM-1 GSM900/1800 bug - CDS means CDSI - if ((info._manufacturer == "Nokia Mobile Phones" && - (info._model == "Nokia Cellular Card Phone RPE-1 GSM900" || - info._model == "Nokia Card Phone RPM-1 GSM900/1800"))) - { - _capabilities._CDSmeansCDSI = true; - } - - // find out whether we are supposed to send an acknowledgment - Parser p(_at->chat("+CSMS?", "+CSMS:")); - _capabilities._sendAck = p.parseInt() >= 1; - - // set GSM default character set - try - { - setCharSet("GSM"); - } - catch (GsmException) - { - // ignore errors, some devices don't support this - } - - // set default event handler - // necessary to handle at least RING indications that might - // otherwise confuse gsmlib - _at->setEventHandler(&_defaultEventHandler); -} - -MeTa::MeTa(Ref port) throw(GsmException) : _port(port) -{ - // initialize AT handling - _at = new GsmAt(*this); - - init(); -} - -// MeTa::MeTa(Ref at) throw(GsmException) : -// _at(at) -// { -// init(); -// } - -void MeTa::setPIN(string pin) throw(GsmException) -{ - _at->chat("+CPIN=\"" + pin + "\""); -} - -string MeTa::getPINStatus() throw(GsmException) -{ - Parser p(_at->chat("+CPIN?", "+CPIN:")); - return p.parseString(); -} - -void MeTa::setPhonebook(string phonebookName) throw(GsmException) -{ - if (phonebookName != _lastPhonebookName) - { - _at->chat("+CPBS=\"" + phonebookName + "\""); - _lastPhonebookName = phonebookName; - } -} - -string MeTa::setSMSStore(string smsStore, int storeTypes, bool needResultCode) - throw(GsmException) -{ - if (_capabilities._cpmsParamCount == -1) - { - // count the number of parameters for the CPMS AT sequences - _capabilities._cpmsParamCount = 1; - Parser p(_at->chat("+CPMS=?", "+CPMS:")); - p.parseStringList(); - while (p.parseComma(true)) - { - ++_capabilities._cpmsParamCount; - p.parseStringList(); - } - } - - // optimatization: only set current SMS store if different from last call - // or the result code is needed - if (needResultCode || _lastSMSStoreName != smsStore) - { - _lastSMSStoreName = smsStore; - - // build chat string - string chatString = "+CPMS=\"" + smsStore + "\""; - for (int i = 1; i < min(_capabilities._cpmsParamCount, storeTypes); ++i) - chatString += ",\"" + smsStore + "\""; - - return _at->chat(chatString, "+CPMS:"); - } - return ""; -} - -void MeTa::getSMSStore(string &readDeleteStore, - string &writeSendStore, - string &receiveStore) throw(GsmException) -{ - Parser p(_at->chat("+CPMS?", "+CPMS:")); - writeSendStore = receiveStore = ""; - readDeleteStore = p.parseString(); - p.parseComma(); - p.parseInt(); - p.parseComma(); - p.parseInt(); - if (p.parseComma(true)) - { - writeSendStore = p.parseString(); - p.parseComma(); - p.parseInt(); - p.parseComma(); - p.parseInt(); - if (p.parseComma(true)) - { - receiveStore = p.parseString(); - } - } -} - -void MeTa::waitEvent(GsmTime timeout) throw(GsmException) -{ - if (_at->wait(timeout)) - _at->chat(); // send AT, wait for OK, handle events -} - -// aux function for MeTa::getMEInfo() - -static string stringVectorToString(const vector& v, - char separator = '\n') -{ - if (v.empty()) - return ""; - - // concatenate string in vector as rows - string result; - for (vector::const_iterator i = v.begin();;) - { - string s = *i; - // remove leading and trailing "s - if (s.length() > 0 && s[0] == '"') - s.erase(s.begin()); - if (s.length() > 0 && s[s.length() - 1] == '"') - s.erase(s.end() - 1); - - result += s; - // don't add end line to last - if ( ++i == v.end() || !separator) - break; - result += separator; - } - return result; -} - -MEInfo MeTa::getMEInfo() throw(GsmException) -{ - MEInfo result; - // some TAs just return OK and no info line - // leave the info empty in this case - // some TAs return multirows with info like address, firmware version - result._manufacturer = - stringVectorToString(_at->chatv("+CGMI", "+CGMI:", false)); - result._model = stringVectorToString(_at->chatv("+CGMM", "+CGMM:", false)); - result._revision = - stringVectorToString(_at->chatv("+CGMR", "+CGMR:", false)); - result._serialNumber = - stringVectorToString(_at->chatv("+CGSN", "+CGSN:", false),0); - return result; -} - -vector MeTa::getSupportedCharSets() throw(GsmException) -{ - Parser p(_at->chat("+CSCS=?", "+CSCS:")); - return p.parseStringList(); -} - -string MeTa::getCurrentCharSet() throw(GsmException) -{ - if (_lastCharSet == "") - { - Parser p(_at->chat("+CSCS?", "+CSCS:")); - _lastCharSet = p.parseString(); - } - return _lastCharSet; -} - -void MeTa::setCharSet(string charSetName) throw(GsmException) -{ - _at->chat("+CSCS=\"" + charSetName + "\""); - _lastCharSet = ""; -} - -string MeTa::getExtendedErrorReport() throw(GsmException) -{ - return _at->chat("+CEER", "+CEER:"); -} - -void MeTa::dial(string number) throw(GsmException) -{ - _at->chat("D" + number + ";"); -} - -void MeTa::answer() throw(GsmException) -{ - _at->chat("A"); -} - -void MeTa::hangup() throw(GsmException) -{ - _at->chat("H"); - -} - -vector MeTa::getAvailableOPInfo() throw(GsmException) -{ - vector result; - vector responses = _at->chatv("+COPS=?", "+COPS:"); - - // special treatment for Falcom A2-1, answer looks like - // responses.push_back("(1,29341),(3,29340)"); - if (_capabilities._veryShortCOPSanswer) - { - if (responses.size() == 1) - { - Parser p(responses[0]); - while (p.parseChar('(', true)) - { - OPInfo opi; - opi._status = (OPStatus)p.parseInt(); - p.parseComma(); - opi._numericName = p.parseInt(); - p.parseChar(')'); - p.parseComma(true); - result.push_back(opi); - } - } - } - else - // some formats I have encountered... - //responses.push_back("2,,,31017,,(0,1),(2)"); - //responses.push_back("(3,\"UK CELLNET\",\"CLNET\",\"23410\")," - // "(3,\"ONE2 ONE\",\"ONE2ONE\",\"23430\")," - // "(3,\"ORANGE\",\"ORANGE\",\"23433\")"); - //responses.push_back("(2,\"D1-TELEKOM\",,26201)," - // "(3,\"D2 PRIVAT\",,26202),,(0,1,3,4),(0,2)"); - // some phones arbitrarily split the response into several lines - //responses.push_back("(1,\"AMENA\",,\"21403\")," - // "(3,\"MOVISTAR\",,\"21407\"),"); - //responses.push_back("(3,\"E VODAFONE\",,\"21401\"),,(0,1),(2)"); - - // GSM modems might return - // 1. quadruplets of info enclosed in brackets separated by comma - // 2. several lines of quadruplets of info enclosed in brackets - // 3. several lines of quadruplets without brackets and additional - // info at EOL (e.g. Nokia 8290) - for (vector::iterator i = responses.begin(); - i != responses.end(); ++i) - { -// while (i->length() > 0 && ! isprint((*i)[i->length() - 1])) -// i->erase(i->length() - 1, 1); - - bool expectClosingBracket = false; - Parser p(*i); - while (1) - { - OPInfo opi; - expectClosingBracket = p.parseChar('(', true); - int status = p.parseInt(true); - opi._status = (status == NOT_SET ? UnknownOPStatus : (OPStatus)status); - p.parseComma(); - opi._longName = p.parseString(true); - p.parseComma(); - opi._shortName = p.parseString(true); - p.parseComma(); - try - { - opi._numericName = p.parseInt(true); - } - catch (GsmException &e) - { - if (e.getErrorClass() == ParserError) - { - // the Ericsson GM12 GSM modem returns the numeric ID as string - string s = p.parseString(); - opi._numericName = checkNumber(s); - } - else - throw e; - } - if (expectClosingBracket) p.parseChar(')'); - result.push_back(opi); - if (! p.parseComma(true)) break; - // two commas ",," mean the list is finished - if (p.getEol() == "" || p.parseComma(true)) break; - } - // without brackets, the ME/TA must use format 3. - if (! expectClosingBracket) break; - } - return result; -} - -OPInfo MeTa::getCurrentOPInfo() throw(GsmException) -{ - OPInfo result; - - // 1. This exception thing is necessary because not all ME/TA combinations - // might support all the formats and then return "ERROR". - // 2. Additionally some modems return "ERROR" for all "COPS=3,n" command - // and report only one format with the "COPS?" command (e.g. Nokia 8290). - - // get long format - try - { - try - { - _at->chat("+COPS=3,0"); - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - Parser p(_at->chat("+COPS?", "+COPS:")); - result._mode = (OPModes)p.parseInt(); - // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0" - // if no network connection - if (p.parseComma(true)) - { - if (p.parseInt() == 0) - { - p.parseComma(); - result._longName = p.parseString(); - } - } - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - - // get short format - try - { - try - { - _at->chat("+COPS=3,1"); - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - Parser p(_at->chat("+COPS?", "+COPS:")); - result._mode = (OPModes)p.parseInt(); - // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0" - // if no network connection - if (p.parseComma(true)) - { - if (p.parseInt() == 1) - { - p.parseComma(); - result._shortName = p.parseString(); - } - } - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - - // get numeric format - try - { - try - { - _at->chat("+COPS=3,2"); - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - Parser p(_at->chat("+COPS?", "+COPS:")); - result._mode = (OPModes)p.parseInt(); - // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0" - // if no network connection - if (p.parseComma(true)) - { - if (p.parseInt() == 2) - { - p.parseComma(); - try - { - result._numericName = p.parseInt(); - } - catch (GsmException &e) - { - if (e.getErrorClass() == ParserError) - { - // the Ericsson GM12 GSM modem returns the numeric ID as string - string s = p.parseString(); - result._numericName = checkNumber(s); - } - else - throw e; - } - } - } - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - return result; -} - -void MeTa::setCurrentOPInfo(OPModes mode, - string longName, - string shortName, - int numericName) throw(GsmException) -{ - bool done = false; - if (longName != "") - { - try - { - _at->chat("+COPS=" + intToStr((int)mode) + ",0,\"" + longName + "\""); - done = true; - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - } - if (shortName != "" && ! done) - { - try - { - _at->chat("+COPS=" + intToStr((int)mode) + ",1,\"" + shortName + "\""); - done = true; - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - } - if (numericName != NOT_SET && ! done) - { - try - { - _at->chat("+COPS=" + intToStr((int)mode) + ",2," + - intToStr(numericName)); - done = true; - } - catch (GsmException &e) - { - if (e.getErrorClass() != ChatError) throw; - } - } - if (! done) - throw GsmException(_("unable to set operator"), OtherError); -} - -vector MeTa::getFacilityLockCapabilities() throw(GsmException) -{ - string locks = _at->chat("+CLCK=?", "+CLCK:"); - // some TA don't add '(' and ')' (Option FirstFone) - if (locks.length() && locks[0] != '(') - { - locks.insert(locks.begin(),'('); - locks += ')'; - } - Parser p(locks); - return p.parseStringList(); -} - -bool MeTa::getFacilityLockStatus(string facility, FacilityClass cl) - throw(GsmException) -{ - // some TA return always multiline response with all classes - // (Option FirstFone) - // !!! errors handling is correct (responses.empty() true) ? - vector responses = - _at->chatv("+CLCK=\"" + facility + "\",2,," + intToStr((int)cl),"+CLCK:",true); - for (vector::iterator i = responses.begin(); - i != responses.end(); ++i) - { - Parser p(*i); - int enabled = p.parseInt(); - - // if the first time and there is no comma this - // return direct state of classes - // else return all classes - if (i == responses.begin()) - { - if (!p.parseComma(true)) - return enabled == 1; - } - else - p.parseComma(); - - if ( p.parseInt() == (int)cl ) - return enabled == 1; - } - return false; - -// Parser p(_at->chat("+CLCK=\"" + facility + "\",2,," + intToStr((int)cl), -// "+CLCK:")); -// return p.parseInt() == 1; -} - -void MeTa::lockFacility(string facility, FacilityClass cl, string passwd) - throw(GsmException) -{ - if (passwd == "") - _at->chat("+CLCK=\"" + facility + "\",1,," + intToStr((int)cl)); - else - _at->chat("+CLCK=\"" + facility + "\",1,\"" + passwd + "\"," - + intToStr((int)cl)); -} - -void MeTa::unlockFacility(string facility, FacilityClass cl, string passwd) - throw(GsmException) -{ - if (passwd == "") - _at->chat("+CLCK=\"" + facility + "\",0,," + intToStr((int)cl)); - else - _at->chat("+CLCK=\"" + facility + "\",0,\"" + passwd + "\"," - + intToStr((int)cl)); -} - -vector MeTa::getPasswords() throw(GsmException) -{ - vector result; - Parser p(_at->chat("+CPWD=?", "+CPWD:")); - while (1) - { - PWInfo pwi; - if (!p.parseChar('(', true)) break; // exit if no new tuple - pwi._facility = p.parseString(); - p.parseComma(); - pwi._maxPasswdLen = p.parseInt(); - p.parseChar(')'); - p.parseComma(true); - result.push_back(pwi); - } - return result; -} - -void MeTa::setPassword(string facility, string oldPasswd, string newPasswd) - throw(GsmException) -{ - _at->chat("+CPWD=\"" + facility + "\",\"" + oldPasswd + "\",\"" + - newPasswd + "\""); -} - -bool MeTa::getNetworkCLIP() throw(GsmException) -{ - Parser p(_at->chat("+CLIP?", "+CLIP:")); - p.parseInt(); // ignore result code presentation - p.parseComma(); - return p.parseInt() == 1; -} - -void MeTa::setCLIPPresentation(bool enable) throw(GsmException) -{ - if (enable) - _at->chat("+CLIP=1"); - else - _at->chat("+CLIP=0"); -} - -bool MeTa::getCLIPPresentation() throw(GsmException) -{ - Parser p(_at->chat("+CLIP?", "+CLIP:")); - return p.parseInt() == 1; // ignore rest of line -} - -void MeTa::setCallForwarding(ForwardReason reason, - ForwardMode mode, - string number, - string subaddr, - FacilityClass cl, - int forwardTime) throw(GsmException) -{ - // FIXME subaddr is currently ignored - if (forwardTime != NOT_SET && (forwardTime < 0 || forwardTime > 30)) - throw GsmException(_("call forward time must be in the range 0..30"), - ParameterError); - - int numberType; - number = removeWhiteSpace(number); - if (number.length() > 0 && number[0] == '+') - { - numberType = InternationalNumberFormat; - number = number.substr(1); // skip the '+' at the beginning - } - else - numberType = UnknownNumberFormat; - _at->chat("+CCFC=" + intToStr(reason) + "," + intToStr(mode) + "," - "\"" + number + "\"," + - (number.length() > 0 ? intToStr(numberType) : "") + - "," + intToStr(cl) + - // FIXME subaddr and type - (forwardTime == NOT_SET ? "" : - (",,," + intToStr(forwardTime)))); -} - -void MeTa::getCallForwardInfo(ForwardReason reason, - ForwardInfo &voice, - ForwardInfo &fax, - ForwardInfo &data) throw(GsmException) -{ - // Initialize to some sensible values: - voice._active = false; - voice._cl = VoiceFacility; - voice._time = -1; - voice._reason = NoReason; - data._active = false; - data._cl = DataFacility; - data._time = -1; - data._reason = NoReason; - fax._active = false; - fax._cl = FaxFacility; - fax._time = -1; - fax._reason = NoReason; - - vector responses = - _at->chatv("+CCFC=" + intToStr(reason) + ",2", "+CCFC:"); - if (responses.size() == 1) - { - // only one line was returned. We have to ask for all three classes - // (voice, data, fax) separately - responses.clear(); - responses.push_back(_at->chat("+CCFC=" + intToStr(reason) + - ",2,,,1", "+CCFC:")); - responses.push_back(_at->chat("+CCFC=" + intToStr(reason) + - ",2,,,2", "+CCFC:")); - responses.push_back(_at->chat("+CCFC=" + intToStr(reason) + - ",2,,,4", "+CCFC:")); - } - - for (vector::iterator i = responses.begin(); - i != responses.end(); ++i) - { - Parser p(*i); - int status = p.parseInt(); - p.parseComma(); - FacilityClass cl = (FacilityClass)p.parseInt(); - string number; - string subAddr; - int forwardTime = NOT_SET; - - // parse number - if (p.parseComma(true)) - { - number = p.parseString(); - p.parseComma(); - unsigned int numberType = p.parseInt(); - if (numberType == InternationalNumberFormat) number = "+" + number; - - // parse subaddr - if (p.parseComma(true)) - { - // FIXME subaddr type not handled - subAddr = p.parseString(true); - p.parseComma(); - p.parseInt(true); - - // parse forwardTime - if (p.parseComma(true)) - { - forwardTime = p.parseInt(); - } - } - } - switch (cl) - { - case VoiceFacility: - voice._active = (status == 1); - voice._cl = VoiceFacility; - voice._number = number; - voice._subAddr = subAddr; - voice._time = forwardTime; - voice._reason = reason; - break; - case DataFacility: - data._active = (status == 1); - data._cl = DataFacility; - data._number = number; - data._subAddr = subAddr; - data._time = forwardTime; - data._reason = reason; - break; - case FaxFacility: - fax._active = (status == 1); - fax._cl = FaxFacility; - fax._number = number; - fax._subAddr = subAddr; - fax._time = forwardTime; - fax._reason = reason; - break; - } - } -} - -int MeTa::getBatteryChargeStatus() throw(GsmException) -{ - Parser p(_at->chat("+CBC", "+CBC:")); - return p.parseInt(); -} - -int MeTa::getBatteryCharge() throw(GsmException) -{ - Parser p(_at->chat("+CBC", "+CBC:")); - p.parseInt(); - p.parseComma(); - return p.parseInt(); -} - -int MeTa::getFunctionalityLevel() throw(GsmException) -{ - try { - Parser p(_at->chat("+CFUN?", "+CFUN:")); - // some phones return functionality level like "(2)" - bool expectClosingParen = p.parseChar('(', true); - int result = p.parseInt(); - if (expectClosingParen) - p.parseChar(')'); - return result; - } - catch (GsmException &x) - { - if (x.getErrorClass() == ChatError) - { - throw GsmException(_("Functionality Level commands not supported by ME"), - MeTaCapabilityError); - } else { - throw; - } - } -} - -void MeTa::setFunctionalityLevel(int level) throw(GsmException) -{ - try { - Parser p(_at->chat("+CFUN=" + intToStr(level))); - } catch (GsmException &x) { - if (x.getErrorClass() == ChatError) - { - // If the command AT+CFUN commands really aren't supported by the ME, - // then this will throw an appropriate exception for us. - getFunctionalityLevel(); - // If the number was just out of range, we get here. - throw GsmException(_("Requested Functionality Level out of range"), - ParameterError); - } - throw; - } -} - -int MeTa::getSignalStrength() throw(GsmException) -{ - Parser p(_at->chat("+CSQ", "+CSQ:")); - return p.parseInt(); -} - -int MeTa::getBitErrorRate() throw(GsmException) -{ - Parser p(_at->chat("+CSQ", "+CSQ:")); - p.parseInt(); - p.parseComma(); - return p.parseInt(); -} - -vector MeTa::getPhoneBookStrings() throw(GsmException) -{ - Parser p(_at->chat("+CPBS=?", "+CPBS:")); - return p.parseStringList(); -} - -PhonebookRef MeTa::getPhonebook(string phonebookString, - bool preload) throw(GsmException) -{ - for (PhonebookVector::iterator i = _phonebookCache.begin(); - i != _phonebookCache.end(); ++i) - { - if ((*i)->name() == phonebookString) - return *i; - } - PhonebookRef newPb(new Phonebook(phonebookString, _at, *this, preload)); - _phonebookCache.push_back(newPb); - return newPb; -} - -string MeTa::getServiceCentreAddress() throw(GsmException) -{ - Parser p(_at->chat("+CSCA?", "+CSCA:")); - return p.parseString(); -} - -void MeTa::setServiceCentreAddress(string sca) throw(GsmException) -{ - int type; - sca = removeWhiteSpace(sca); - if (sca.length() > 0 && sca[0] == '+') - { - type = InternationalNumberFormat; - sca = sca.substr(1, sca.length() - 1); - } - else - type = UnknownNumberFormat; - Parser p(_at->chat("+CSCA=\"" + sca + "\"," + intToStr(type))); -} - -vector MeTa::getSMSStoreNames() throw(GsmException) -{ - Parser p(_at->chat("+CPMS=?", "+CPMS:")); - // only return values - return p.parseStringList(); -} - -SMSStoreRef MeTa::getSMSStore(string storeName) throw(GsmException) -{ - for (SMSStoreVector::iterator i = _smsStoreCache.begin(); - i != _smsStoreCache.end(); ++i) - { - if ((*i)->name() == storeName) - return *i; - } - SMSStoreRef newSs(new SMSStore(storeName, _at, *this)); - _smsStoreCache.push_back(newSs); - return newSs; -} - -void MeTa::sendSMS(Ref smsMessage) throw(GsmException) -{ - smsMessage->setAt(_at); - smsMessage->send(); -} - -void MeTa::sendSMSs(Ref smsTemplate, string text, - bool oneSMS, - int concatenatedMessageId) - throw(GsmException) -{ - assert(! smsTemplate.isnull()); - - // compute maximum text length for normal SMSs and concatenated SMSs - unsigned int maxTextLength, concMaxTextLength; - switch (smsTemplate->dataCodingScheme().getAlphabet()) - { - case DCS_DEFAULT_ALPHABET: - maxTextLength = 160; - concMaxTextLength = 152; - break; - case DCS_EIGHT_BIT_ALPHABET: - maxTextLength = 140; - concMaxTextLength = 134; - break; - case DCS_SIXTEEN_BIT_ALPHABET: - maxTextLength = 70; - concMaxTextLength = 67; - break; - default: - throw GsmException(_("unsupported alphabet for SMS"), - ParameterError); - break; - } - - // simple case, only send one SMS - if (oneSMS || text.length() <= maxTextLength) - { - if (text.length() > maxTextLength) - throw GsmException(_("SMS text is larger than allowed"), - ParameterError); - smsTemplate->setUserData(text); - sendSMS(smsTemplate); - } - else // send multiple SMSs - { - if (concatenatedMessageId != -1) - maxTextLength = concMaxTextLength; - - int numMessages = (text.length() + maxTextLength - 1) / maxTextLength; - if (numMessages > 255) - throw GsmException(_("not more than 255 concatenated SMSs allowed"), - ParameterError); - unsigned char numMessage = 0; - while (true) - { - if (concatenatedMessageId != -1) - { - unsigned char udhs[] = {0x00, 0x03, concatenatedMessageId, - numMessages, ++numMessage}; - UserDataHeader udh(string((char*)udhs, 5)); - smsTemplate->setUserDataHeader(udh); - } - smsTemplate->setUserData(text.substr(0, maxTextLength)); - sendSMS(smsTemplate); - if (text.length() < maxTextLength) - break; - text.erase(0, maxTextLength); - } - } -} - -void MeTa::setMessageService(int serviceLevel) throw(GsmException) -{ - string s; - switch (serviceLevel) - { - case 0: - s = "0"; - break; - case 1: - s = "1"; - break; - default: - throw GsmException(_("only serviceLevel 0 or 1 supported"), - ParameterError); - } - // some devices (eg. Origo 900) don't support service level setting - _at->chat("+CSMS=" + s, "+CSMS:", true); -} - -unsigned int MeTa::getMessageService() throw(GsmException) -{ - Parser p(_at->chat("+CSMS?", "+CSMS:")); - return p.parseInt(); -} - -void MeTa::getSMSRoutingToTA(bool &smsRouted, - bool &cbsRouted, - bool &statusReportsRouted) throw(GsmException) -{ - Parser p(_at->chat("+CNMI?", "+CNMI:")); - p.parseInt(); - int smsMode = 0; - int cbsMode = 0; - int statMode = 0; - int bufferMode = 0; - - if (p.parseComma(true)) - { - smsMode = p.parseInt(); - if (p.parseComma(true)) - { - cbsMode = p.parseInt(); - if (p.parseComma(true)) - { - statMode = p.parseInt(); - if (p.parseComma(true)) - { - bufferMode = p.parseInt(); - } - } - } - } - - smsRouted = (smsMode == 2) || (smsMode == 3); - cbsRouted = (cbsMode == 2) || (cbsMode == 3); - statusReportsRouted = (statMode == 1); -} - -void MeTa::setSMSRoutingToTA(bool enableSMS, bool enableCBS, - bool enableStatReport, - bool onlyReceptionIndication) - throw(GsmException) -{ - bool smsModesSet = false; - bool cbsModesSet = false; - bool statModesSet = false; - bool bufferModesSet = false; - - // find out capabilities - Parser p(_at->chat("+CNMI=?", "+CNMI:")); - vector modes = p.parseIntList(); - vector smsModes(1); - vector cbsModes(1); - vector statModes(1); - vector bufferModes(1); - if (p.parseComma(true)) - { - smsModes = p.parseIntList(); - smsModesSet = true; - if (p.parseComma(true)) - { - cbsModes = p.parseIntList(); - cbsModesSet = true; - if (p.parseComma(true)) - { - statModes = p.parseIntList(); - statModesSet = true; - if (p.parseComma(true)) - { - bufferModes = p.parseIntList(); - bufferModesSet = true; - } - } - } - } - - // now set the mode vectors to the default if not set - if (! smsModesSet) smsModes[0] = true; - if (! cbsModesSet) cbsModes[0] = true; - if (! statModesSet) statModes[0] = true; - if (! bufferModesSet) bufferModes[0] = true; - - string chatString; - - // now try to set some optimal combination depending on - // ME/TA's capabilities - - // handle modes - if (isSet(modes, 2)) - chatString = "2"; - else if (isSet(modes, 1)) - chatString = "1"; - else if (isSet(modes, 0)) - chatString = "0"; - else if (isSet(modes, 3)) - chatString = "3"; - - if (onlyReceptionIndication) - { - // handle sms mode - if (enableSMS) - { - if (isSet(smsModes, 1)) - chatString += ",1"; - else - throw GsmException(_("cannot route SMS messages to TE"), - MeTaCapabilityError); - } - else - chatString += ",0"; - - // handle cbs mode - if (enableCBS) - { - if (isSet(cbsModes, 1)) - chatString += ",1"; - else if (isSet(cbsModes, 2)) - chatString += ",2"; - else - throw GsmException(_("cannot route cell broadcast messages to TE"), - MeTaCapabilityError); - } - else - chatString += ",0"; - - // handle stat mode - if (enableStatReport) - { - if (isSet(statModes, 2)) - chatString += ",2"; - else - throw GsmException(_("cannot route status reports messages to TE"), - MeTaCapabilityError); - } - else - chatString += ",0"; - } - else - { - // handle sms mode - if (enableSMS) - { - if (isSet(smsModes, 2)) - chatString += ",2"; - else if (isSet(smsModes, 3)) - chatString += ",3"; - else - throw GsmException(_("cannot route SMS messages to TE"), - MeTaCapabilityError); - } - else - chatString += ",0"; - - // handle cbs mode - if (enableCBS) - { - if (isSet(cbsModes, 2)) - chatString += ",2"; - else if (isSet(cbsModes, 3)) - chatString += ",3"; - else - throw GsmException(_("cannot route cell broadcast messages to TE"), - MeTaCapabilityError); - } - else - chatString += ",0"; - - // handle stat mode - if (enableStatReport) - { - if (isSet(statModes, 1)) - chatString += ",1"; - else if (isSet(statModes, 2)) - chatString += ",2"; - else - throw GsmException(_("cannot route status report messages to TE"), - MeTaCapabilityError); - } - else - chatString += ",0"; - } - - // handle buffer mode but only if it was reported by the +CNMI=? command - // the Ericsson GM12 GSM modem does not like it otherwise - if (bufferModesSet) - if (isSet(bufferModes, 1)) - chatString += ",1"; - else - chatString += ",0"; - - _at->chat("+CNMI=" + chatString); -} - -bool MeTa::getCallWaitingLockStatus(FacilityClass cl) - throw(GsmException) -{ - // some TA return always multiline response with all classes - // (Option FirstFone) - // !!! errors handling is correct (responses.empty() true) ? - vector responses = - _at->chatv("+CCWA=0,2," + intToStr((int)cl),"+CCWA:",true); - for (vector::iterator i = responses.begin(); - i != responses.end(); ++i) - { - Parser p(*i); - int enabled = p.parseInt(); - - // if the first time and there is no comma this - // return direct state of classes - // else return all classes - if (i == responses.begin()) - { - if (! p.parseComma(true)) - return enabled == 1; - } - else - p.parseComma(); - - if (p.parseInt() == (int)cl) - return enabled == 1; - } - return false; - -} -void MeTa::setCallWaitingLockStatus(FacilityClass cl, bool lock) - throw(GsmException) -{ - if(lock) - _at->chat("+CCWA=0,1," + intToStr((int)cl)); - else - _at->chat("+CCWA=0,0," + intToStr((int)cl)); -} - -void MeTa::setCLIRPresentation(bool enable) throw(GsmException) -{ - if (enable) - _at->chat("+CLIR=1"); - else - _at->chat("+CLIR=0"); -} - -int MeTa::getCLIRPresentation() throw(GsmException) -{ - // 0:according to the subscription of the CLIR service - // 1:CLIR invocation - // 2:CLIR suppression - Parser p(_at->chat("+CLIR?", "+CLIR:")); - return p.parseInt(); -} - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h deleted file mode 100644 index f397e84695..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h +++ /dev/null @@ -1,402 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_me_ta.h -// * -// * Purpose: Mobile Equipment/Terminal Adapter and SMS functions -// * (ETSI GSM 07.07 and 07.05) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.5.1999 -// ************************************************************************* - -#ifndef GSM_ME_TA_H -#define GSM_ME_TA_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // *** phone capability description (you could also call it phone quirks) - - struct Capabilities - { - bool _hasSMSSCAprefix; // SMS have service centre address prefix - int _cpmsParamCount; // number of SMS store parameters to - // CPMS command - bool _omitsColon; // omits trailing ':' in AT responses - bool _veryShortCOPSanswer; // Falcom A2-1 - bool _wrongSMSStatusCode; // Motorola Timeport 260 - bool _CDSmeansCDSI; // Nokia Cellular Card Phone RPE-1 GSM900 - bool _sendAck; // send ack for directly routed SMS - Capabilities(); // constructor, set default behaviours - }; - - // *** auxiliary structs - - // Static ME information (AT command sequences given in brackets) - struct MEInfo - { - string _manufacturer; // (+CGMI) - string _model; // (+CGMM) - string _revision; // (+CGMR) - string _serialNumber; // (+CGSN), IMEI - }; - - // modes for network operation selection - enum OPModes {AutomaticOPMode = 0, ManualOPMode = 1, - DeregisterOPMode = 2, ManualAutomaticOPMode = 4}; - - // status codes or network operaton selection - enum OPStatus {UnknownOPStatus = 0, AvailableOPStatus = 1, - CurrentOPStatus = 2, ForbiddenOPStatus = 3}; - - // network operator info - struct OPInfo - { - OPModes _mode; - OPStatus _status; - string _longName; - string _shortName; - int _numericName; // may be NOT_SET - - OPInfo() : _status(UnknownOPStatus), _numericName(NOT_SET) {} - }; - - // facility classes - enum FacilityClass {VoiceFacility = 1, DataFacility = 2, FaxFacility = 4}; - const int ALL_FACILITIES = VoiceFacility | DataFacility | FaxFacility; - - // struct to hold password info - struct PWInfo - { - string _facility; - int _maxPasswdLen; - }; - - // call forward reasons - // AllReasons encompasses 0..3 - // AllConditionalReasons encompasses 1..3 - enum ForwardReason {UnconditionalReason = 0, MobileBusyReason = 1, - NoReplyReason = 2, NotReachableReason = 3, - AllReasons = 4, AllConditionalReasons = 5, NoReason = 6}; - - // call forward modes - enum ForwardMode {DisableMode = 0, EnableMode = 1, - RegistrationMode = 3, ErasureMode = 4}; - - // call forward info - struct ForwardInfo - { - bool _active; // status in the network - FacilityClass _cl; // voice, fax, or data - string _number; // telephone number - string _subAddr; // subaddress - int _time; // time in the range 1..30 (for NoReplyReason) - ForwardReason _reason; // reason for the forwarding - }; - - // SMS types - typedef Ref SMSStoreRef; - typedef vector SMSStoreVector; - - // this class allows access to all functions of a ME/TA as described - // in sections 5-8 of ETSI GSM 07.07 - // Note: If the ME is changed (ie. disconnected an another one connected - // to the TA), a new ME object must be created - // (Mobile equipment = ME, terminal adapter = TA) - class MeTa : public RefBase - { - protected: - Ref _port; // port the ME/TA is connected to - Ref _at; // chat object for the port - PhonebookVector _phonebookCache; // cache of all used phonebooks - SMSStoreVector _smsStoreCache; // cache of all used phonebooks - string _lastPhonebookName; // remember last phonebook set on ME/TA - string _lastSMSStoreName; // remember last SMS store set on ME/TA - Capabilities _capabilities; // ME/TA quirks - GsmEvent _defaultEventHandler; // default event handler - // see comments in MeTa::init() - string _lastCharSet; // remember last character set - - // init ME/TA to sensible defaults - void init() throw(GsmException); - - public: - // initialize a new MeTa object given the port - MeTa(Ref port) throw(GsmException); - - // initialize a new MeTa object given the AT handler - //MeTa(Ref at) throw(GsmException); - - // set the current phonebook in the ME - // remember the last phonebook set for optimisation - void setPhonebook(string phonebookName) throw(GsmException); - - // set the current SMS store in the ME - // set storeTypes to - // 1 to set store for reading and deleting - // 2 to set store for writing and sending (includes type 1) - // 3 to preferred store for receiving SMS (includes types 1 and 2) - // remember the last SMS store set for optimisation - // if needResultCode is set this optimisation is not done - string setSMSStore(string smsStore, int storeTypes, - bool needResultCode = false) - throw(GsmException); - - // get current SMS store settings - void getSMSStore(string &readDeleteStore, - string &writeSendStore, - string &receiveStore) throw(GsmException); - - // get capabilities of this ME/TA - Capabilities getCapabilities() const {return _capabilities;} - - // return my port - Ref getPort() {return _port;} - - // return my at handler - Ref getAt() {return _at;} - - // set event handler for unsolicited result codes - GsmEvent *setEventHandler(GsmEvent *newHandler) - {return _at->setEventHandler(newHandler);} - - // wait for an event - void waitEvent(GsmTime timeout) throw(GsmException); - - // *** ETSI GSM 07.07 Section 5: "General Commands" - - // return ME information - MEInfo getMEInfo() throw(GsmException); - - // return available character sets - vector getSupportedCharSets() throw(GsmException);// (+CSCS=?) - - // return current character set (default: GSM) - string getCurrentCharSet() throw(GsmException);// (+CSCS?) - - // set character set to use - void setCharSet(string charSetName) throw(GsmException);// (+CSCS=) - - // *** ETSI GSM 07.07 Section 6: "Call control commands and methods" - - // get extended error report - string getExtendedErrorReport() throw(GsmException);// (+CEER) - - // dial a number, CLI presentation as defined in network - void dial(string number) throw(GsmException);// (ATD) - - // answer - void answer() throw(GsmException); // (ATA) - - // hangup - void hangup() throw(GsmException); // (ATH) - - // set Personal Identification Number - void setPIN(string number) throw(GsmException);// (+CPIN) - - // get PIN Status - string getPINStatus() throw(GsmException);// (+CPIN?) - - // *** ETSI GSM 07.07 Section 7: "Network service related commands" - - // return available network operators - // this fills in all fields of OPInfo with the exception of _mode - vector getAvailableOPInfo() throw(GsmException); // (+COPS=?) - - // return current network operators - // this fills in all the fields of OPInfo with the exception of _status - OPInfo getCurrentOPInfo() throw(GsmException); - - // set network operator - // caller must fill in ALL names it has read from previous calls - // of getCurrentOPInfo() or getAvailableOPInfo() - // (because ME/TA might not implement all names) - void setCurrentOPInfo(OPModes mode, - string longName = "", - string shortName = "", - int numericName = NOT_SET) throw(GsmException); - - // get facility lock capabilities (+CLCK) - vector getFacilityLockCapabilities() throw(GsmException); - - // query facility lock status for named facility - bool getFacilityLockStatus(string facility, FacilityClass cl) - throw(GsmException); - - // lock facility - void lockFacility(string facility, FacilityClass cl, string passwd = "") - throw(GsmException); - - // unlock facility - void unlockFacility(string facility, FacilityClass cl, string passwd = "") - throw(GsmException); - - // return names of facility for which a password can be set - // and the maximum length of the respective password - vector getPasswords() throw(GsmException);// (+CPWD=?) - - // set password for the given facility - void setPassword(string facility, string oldPasswd, string newPasswd) - throw(GsmException); - // (+CPWD=) - - // get CLIP (caller line identification presentation) in the network - bool getNetworkCLIP() throw(GsmException);// (+CLIP?) - - // set CLIP presentation on or off - // enables GsmEvent::callerLineID - void setCLIPPresentation(bool enable) throw(GsmException);// (+CLIP=) - - // returns if the above is enable - bool getCLIPPresentation() throw(GsmException);// (+CLIP?) - - // set call forwarding - void setCallForwarding(ForwardReason reason, - ForwardMode mode, - string number, - string subaddr, - FacilityClass cl = (FacilityClass)ALL_FACILITIES, - int forwardTime = NOT_SET) - throw(GsmException); // (+CCFC=) - - // get Information of currently set CF in the network - // the caller must give the reason to query - void getCallForwardInfo(ForwardReason reason, - ForwardInfo &voice, - ForwardInfo &fax, - ForwardInfo &data) - throw(GsmException); // (+CCFC=) - - - // *** ETSI GSM 07.07 Section 8: "Mobile Equipment control - // and status commands" - - // return/set ME functionality level (+CFUN): - // 0 Minimum functionality - // 1 full functionality - // 2 disable phone transmit RF circuits only - // 3 disable phone receive RF circuits only - // 4 disable phone both transmit and receive RF circuits - // 5...127 implementation-defined - int getFunctionalityLevel() throw(GsmException); - void setFunctionalityLevel(int level) throw(GsmException); - - // return battery charge status (+CBC): - // 0 ME is powered by the battery - // 1 ME has a battery connected, but is not powered by it - // 2 ME does not have a battery connected - // 3 Recognized power fault, calls inhibited - int getBatteryChargeStatus() throw(GsmException); - - // return battery charge (range 0..100) (+CBC) - int getBatteryCharge() throw(GsmException); - - // get signal strength indication (+CSQ): - // 0 -113 dBm or less - // 1 -111 dBm - // 2...30 -109... -53 dBm - // 31 -51 dBm or greater - // 99 not known or not detectable - int getSignalStrength() throw(GsmException); - - // get channel bit error rate (+CSQ): - // 0...7 as RXQUAL values in the table in GSM 05.08 [20] subclause 8.2.4 - // 99 not known or not detectable - int getBitErrorRate() throw(GsmException); - - // get available phone book memory storage strings (+CPBS=?) - vector getPhoneBookStrings() throw(GsmException); - - // get phone book given the phone book memory storage string - PhonebookRef getPhonebook(string phonebookString, - bool preload = false) throw(GsmException); - - - // *** ETSI GSM 07.05 SMS functions - - // return service centre address (+CSCA?) - string getServiceCentreAddress() throw(GsmException); - - // set service centre address (+CSCA=) - void setServiceCentreAddress(string sca) throw(GsmException); - - // return names of available message stores (, +CPMS=?) - vector getSMSStoreNames() throw(GsmException); - - // return SMS store given the name - SMSStoreRef getSMSStore(string storeName) throw(GsmException); - - // send a single SMS message - void sendSMS(Ref smsMessage) throw(GsmException); - - // send one or several (concatenated) SMS messages - // The SUBMIT message template must have all options set, only - // the userData and the userDataHeader are changed. - // If oneSMS is true, only one SMS is sent. Otherwise several SMSs - // are sent. If concatenatedMessageId is != -1 this is used as the message - // ID for concatenated SMS (for this a user data header as defined in - // GSM GTS 3.40 is used, the old UDH in the template is overwritten). - void sendSMSs(Ref smsTemplate, string text, - bool oneSMS = false, - int concatenatedMessageId = -1) - throw(GsmException); - - // set SMS service level - // if set to 1 send commands return ACK PDU, 0 is the default - void setMessageService(int serviceLevel) throw(GsmException); - - // return SMS service level - unsigned int getMessageService() throw(GsmException); - - // return true if any of the thre message types GsmEvent::SMSMessageType - // is routed directly to the TA and not stored in the ME - void getSMSRoutingToTA(bool &smsRouted, // (+CNMI?) - bool &cbsRouted, - bool &statusReportsRouted) throw(GsmException); - - // sets routing of SMS to TA to true for all supported SMSMessageTypes - // if onlyReceptionIndication is set to true - // only GsmEvent::SMSReceptionIndication is called - // this has two reasons: GSM 07.05 section 3.4.1 does not recommend - // direct routing of new SMS to the TA - // I cannot test direct routing of SMS because it does not work with - // my hardware - void setSMSRoutingToTA(bool enableSMS, bool enableCBS, - bool enableStatReport, - bool onlyReceptionIndication = true) - throw(GsmException); - // (+CNMI=) - - bool getCallWaitingLockStatus(FacilityClass cl) - throw(GsmException); - - void setCallWaitingLockStatus(FacilityClass cl, - bool lock)throw(GsmException); - - void setCLIRPresentation(bool enable) throw(GsmException); - //(+CLIR) - - // 0:according to the subscription of the CLIR service - // 1:CLIR invocation - // 2:CLIR suppression - int getCLIRPresentation() throw(GsmException); - - friend class Phonebook; - friend class SMSStore; - }; -}; - -#endif // GSM_ME_TA_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc deleted file mode 100644 index 5eb205bf81..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc +++ /dev/null @@ -1,32 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_nls.cc -// * -// * Purpose: Groups macros, initialization and includes -// * for National Language Support (NLS) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.11.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include - -using namespace std; - -#ifdef ENABLE_NLS - -using namespace gsmlib; - -#ifdef HAVE_LOCALE_H -#include -#endif - -bool InitNLS::initialized = false; - -#endif // ENABLE_NLS diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h deleted file mode 100644 index 6bfa6eb2f7..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h +++ /dev/null @@ -1,71 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_nls.h -// * -// * Purpose: Groups macros, initialization and includes -// * for National Language Support (NLS) -// * -// * Warning: Only include this header from gsmlib .cc-files -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.11.1999 -// ************************************************************************* - -#ifndef GSM_NLS_H -#define GSM_NLS_H - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef ENABLE_NLS - -#ifdef HAVE_LIBINTL_H -#include -#else -#include "../intl/libintl.h" -#endif -#ifdef HAVE_LOCALE_H -#include -#endif - -#define _(String) dgettext(PACKAGE, String) - -// this causes automatic NLS initialization if one file of the library -// includes gsm_nls.h - -namespace gsmlib -{ - const class InitNLS - { - static bool initialized; - - public: - InitNLS() - { - if (! initialized) // do only once - { - setlocale(LC_ALL, ""); -#ifdef LOCAL_TRANSLATIONS - bindtextdomain(PACKAGE, "../po"); -#else - bindtextdomain(PACKAGE, LOCALEDIR); -#endif - textdomain(PACKAGE); - initialized = true; - } - } - } initNLS; -}; - -#else - -#define _(String) (String) - -#endif // ENABLE_NLS - -#define N_(String) (String) - -#endif // GSM_NLS_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc deleted file mode 100644 index 38a21cd515..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc +++ /dev/null @@ -1,381 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_parser.cc -// * -// * Purpose: Parser to parse MA/TA result strings -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 13.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// Parser members - -int Parser::nextChar(bool skipWhiteSpace) -{ - if (skipWhiteSpace) - while (_i < _s.length() && isspace(_s[_i])) ++_i; - - if (_i == _s.length()) - { - _eos = true; - return -1; - } - - return _s[_i++]; -} - -bool Parser::checkEmptyParameter(bool allowNoParameter) throw(GsmException) -{ - int c = nextChar(); - if (c == ',' || c == -1) - if (allowNoParameter) - { - putBackChar(); - return true; - } - else - throwParseException(_("expected parameter")); - - putBackChar(); - return false; -} - -string Parser::parseString2(bool stringWithQuotationMarks) - throw(GsmException) -{ - int c; - string result; - if (parseChar('"', true)) // OK, string starts and ends with quotation mark - if (stringWithQuotationMarks) - { - // read till end of line - while ((c = nextChar(false)) != -1) - result += c; - - // check for """ at end of line - if (result.length() == 0 || result[result.length() - 1] != '"') - throwParseException(_("expected '\"'")); - - // remove """ at the end - result.resize(result.length() - 1); - } - else - { - // read till next """ - while ((c = nextChar(false)) != '"') - if (c == -1) - throwParseException(); - else - result += c; - } - else // string ends with "," or EOL - { - c = nextChar(false); - while (c != ',' && c != -1) - { - result += c; - c = nextChar(false); - } - if (c == ',') putBackChar(); - } - - return result; -} - -int Parser::parseInt2() throw(GsmException) -{ - string s; - int c; - int result; - - while (isdigit(c = nextChar())) s += c; - - putBackChar(); - if (s.length() == 0) - throwParseException(_("expected number")); - - istrstream is(s.c_str()); - is >> result; - return result; -} - -void Parser::throwParseException(string message) throw(GsmException) -{ - ostrstream os; - if (message.length() == 0) - throw GsmException(stringPrintf(_("unexpected end of string '%s'"), - _s.c_str()), ParserError); - else - throw GsmException(message + - stringPrintf(_(" (at position %d of string '%s')"), _i, - _s.c_str()), ParserError); -} - -Parser::Parser(string s) : _i(0), _s(s), _eos(false) -{ -} - -bool Parser::parseChar(char c, bool allowNoChar) throw(GsmException) -{ - if (nextChar() != c) - if (allowNoChar) - { - putBackChar(); - return false; - } - else - throwParseException(stringPrintf(_("expected '%c'"), c)); - return true; -} - -vector Parser::parseStringList(bool allowNoList) - throw(GsmException) -{ - // handle case of empty parameter - vector result; - if (checkEmptyParameter(allowNoList)) return result; - - parseChar('('); - if (nextChar() != ')') - { - putBackChar(); - while (1) - { - result.push_back(parseString()); - int c = nextChar(); - if (c == ')') - break; - if (c == -1) - throwParseException(); - if (c != ',') - throwParseException(_("expected ')' or ','")); - } - } - - return result; -} - -vector Parser::parseIntList(bool allowNoList) - throw(GsmException) -{ - // handle case of empty parameter - bool isRange = false; - vector result; - int resultCapacity = 0; - unsigned int saveI = _i; - - if (checkEmptyParameter(allowNoList)) return result; - - // check for the case of a integer list consisting of only one parameter - // some TAs omit the parentheses in this case - if (isdigit(nextChar())) - { - putBackChar(); - int num = parseInt(); - result.resize(num + 1, false); - result[num] = true; - return result; - } - putBackChar(); - - // run in two passes - // pass 0: find capacity needed for result - // pass 1: resize result and fill it in - for (int pass = 0; pass < 2; ++pass) - { - if (pass == 1) - { - _i = saveI; - result.resize(resultCapacity + 1, false); - } - - parseChar('('); - if (nextChar() != ')') - { - putBackChar(); - int lastInt = -1; - while (1) - { - int thisInt = parseInt(); - - if (isRange) - { - assert(lastInt != -1); - if (lastInt <= thisInt) - for (int i = lastInt; i < thisInt; ++i) - { - if (i > resultCapacity) - resultCapacity = i; - if (pass == 1) - result[i] = true; - } - else - for (int i = thisInt; i < lastInt; ++i) - { - if (i > resultCapacity) - resultCapacity = i; - if (pass == 1) - result[i] = true; - } - isRange = false; - } - - if (thisInt > resultCapacity) - resultCapacity = thisInt; - if (pass == 1) - result[thisInt] = true; - lastInt = thisInt; - - int c = nextChar(); - if (c == ')') - break; - - if (c == -1) - throwParseException(); - - if (c != ',' && c != '-') - throwParseException(_("expected ')', ',' or '-'")); - - if (c == ',') - isRange = false; - else // is '-' - if (isRange) - throwParseException(_("range of the form a-b-c not allowed")); - else - isRange = true; - } - } - } - if (isRange) - throwParseException(_("range of the form a- no allowed")); - return result; -} - -vector Parser::parseParameterRangeList(bool allowNoList) - throw(GsmException) -{ - // handle case of empty parameter - vector result; - if (checkEmptyParameter(allowNoList)) return result; - - result.push_back(parseParameterRange()); - while (parseComma(true)) - { - result.push_back(parseParameterRange()); - } - - return result; -} - -ParameterRange Parser::parseParameterRange(bool allowNoParameterRange) - throw(GsmException) -{ - // handle case of empty parameter - ParameterRange result; - if (checkEmptyParameter(allowNoParameterRange)) return result; - - parseChar('('); - result._parameter = parseString(); - parseComma(); - result._range = parseRange(false, true); - parseChar(')'); - - return result; -} - -IntRange Parser::parseRange(bool allowNoRange, bool allowNonRange) - throw(GsmException) -{ - // handle case of empty parameter - IntRange result; - if (checkEmptyParameter(allowNoRange)) return result; - - parseChar('('); - result._low = parseInt(); - // allow non-ranges is allowNonRange == true - if (parseChar('-', allowNonRange)) - result._high = parseInt(); - parseChar(')'); - - return result; -} - -int Parser::parseInt(bool allowNoInt) throw(GsmException) -{ - // handle case of empty parameter - int result = NOT_SET; - if (checkEmptyParameter(allowNoInt)) return result; - - result = parseInt2(); - - return result; -} - -string Parser::parseString(bool allowNoString, - bool stringWithQuotationMarks) - throw(GsmException) -{ - // handle case of empty parameter - string result; - if (checkEmptyParameter(allowNoString)) return result; - - result = parseString2(stringWithQuotationMarks); - - return result; -} - -bool Parser::parseComma(bool allowNoComma) throw(GsmException) -{ - if (nextChar() != ',') - if(allowNoComma) - { - putBackChar(); - return false; - } - else - throwParseException(_("expected comma")); - return true; -} - -string Parser::parseEol() throw(GsmException) -{ - string result; - int c; - while ((c = nextChar()) != -1) result += c; - return result; -} - -void Parser::checkEol() throw(GsmException) -{ - if (nextChar() != -1) - { - putBackChar(); - throwParseException(_("expected end of line")); - } -} - -string Parser::getEol() -{ - string result; - int c; - unsigned int saveI = _i; - bool saveEos = _eos; - while ((c = nextChar()) != -1) result += c; - _i = saveI; - _eos = saveEos; - return result; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h deleted file mode 100644 index 8404f9f1cb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h +++ /dev/null @@ -1,125 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_parser.h -// * -// * Purpose: Parser to parse MA/TA result strings -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 13.5.1999 -// ************************************************************************* - -#ifndef GSM_PARSER_H -#define GSM_PARSER_H - -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - class Parser : public RefBase - { - private: - unsigned int _i; // index into _s, next character - string _s; // string to parse - bool _eos; // true if end-of-string reached in nextChar() - - // return next character or -1 if end of string - int nextChar(bool skipWhiteSpace = true); - - // "puts back" a character - void putBackChar() {if (! _eos) --_i;} - - // check for empty parameter (ie. "," or end of string) - // skips white space - // returns true if no parameter - // or throw an GsmException if allowNoParameter == false - bool checkEmptyParameter(bool allowNoParameter) throw(GsmException); - - // parse a string (like "string") - // throw an exception if not well-formed - string parseString2(bool stringWithQuotationMarks) throw(GsmException); - - // parse a int (like 1234) - // throw an exception if not well-formed - int parseInt2() throw(GsmException); - - // throw a parser exception - void throwParseException(string message = "") throw(GsmException); - - public: - Parser(string s); - - // the following functions skip white space - // parse a character, if absent throw a GsmException - // return false if allowNoChar == true and character not encountered - bool parseChar(char c, bool allowNoChar = false) throw(GsmException); - - // parse a list of the form "("ABC", DEF")" - // the list can be empty (ie. == "" ) if allowNoList == true - vector parseStringList(bool allowNoList = false) - throw(GsmException); - - // parse a list of the form "(12, 14)" or "(1-4, 10)" - // the result is returned as a bit vector where for each integer - // in the list and/or range(s) a bit is set - // the list can be empty (ie. == "") if allowNoList == true - vector parseIntList(bool allowNoList = false) - throw(GsmException); - - // parse a list of parameter ranges (see below) - // the list can be empty (ie. == "" ) if allowNoList == true - vector parseParameterRangeList(bool allowNoList = false) - throw(GsmException); - - // parse a string plus its valid integer range of the - // form "("string",(1-125))" - // the parameter range may be absent if allowNoParameterRange == true - ParameterRange parseParameterRange(bool allowNoParameterRange = false) - throw(GsmException); - - // parse an integer range of the form "(1-125)" - // the range may be absent if allowNoRange == true - // then IntRange::_high and _low are set to NOT_SET - // the range may be short if allowNonRange == true - // then IntRange::_high is set to NOT_SET - IntRange parseRange(bool allowNoRange = false, bool allowNonRange = false) - throw(GsmException); - - // parse an integer of the form "1234" - // allow absent int if allowNoInt == true - // then it returns NOT_SET - int parseInt(bool allowNoInt = false) throw(GsmException); - - // parse a string of the form ""string"" - // allow absent string if allowNoString == true - // then it returns "" - // if stringWithQuotationMarks == true the string may contain """ - // the string is then parsed till the end of the line - string parseString(bool allowNoString = false, - bool stringWithQuotationMarks = false) - throw(GsmException); - - // parse a single "," - // the comma may be absent if allowNoComma == true - // returns true if there was a comma - bool parseComma(bool allowNoComma = false) throw(GsmException); - - // parse till end of line, return result without whitespace - string parseEol() throw(GsmException); - - // check that end of line is reached - void checkEol() throw(GsmException); - - // return string till end of line without whitespace - // (does not change internal state) - string getEol(); - }; -}; - -#endif // GSM_PARSER_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc deleted file mode 100644 index 24d89e805d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc +++ /dev/null @@ -1,585 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_phonebook.cc -// * -// * Purpose: Phonebook management functions -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 6.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// PhonebookEntry members - -PhonebookEntry::PhonebookEntry(const PhonebookEntryBase &e) - throw(GsmException) : _cached(true), _myPhonebook(NULL) -{ - set(e.telephone(), e.text(), e.index(), e.useIndex()); -} - -void PhonebookEntry::set(string telephone, string text, int index, - bool useIndex) - throw(GsmException) -{ - checkTextAndTelephone(text, telephone); - - if (_myPhonebook != NULL) - { - if (text.length() > _myPhonebook->getMaxTextLen()) - throw GsmException( - stringPrintf(_("length of text '%s' exceeds maximum text " - "length (%d characters) of phonebook '%s'"), - text.c_str(), _myPhonebook->getMaxTextLen(), - _myPhonebook->name().c_str()), - ParameterError); - - if (telephone.length() > _myPhonebook->getMaxTelephoneLen()) - throw GsmException( - stringPrintf(_("length of telephone number '%s' " - "exceeds maximum telephone number " - "length (%d characters) of phonebook '%s'"), - telephone.c_str(), _myPhonebook->getMaxTelephoneLen(), - _myPhonebook->name().c_str()), - ParameterError); - - _myPhonebook->writeEntry(_index, telephone, text); - } - else - _index = index; - - _useIndex = useIndex; - _cached = true; - _telephone = telephone; - _text = text; - _changed = true; -} - -string PhonebookEntry::text() const throw(GsmException) -{ - if (! cached()) - { - assert(_myPhonebook != NULL); - // these operations are at least "logically const" - PhonebookEntry *thisEntry = const_cast(this); - _myPhonebook->readEntry(_index, thisEntry->_telephone, thisEntry->_text); - thisEntry->_cached = true; - } - return _text; -} - -string PhonebookEntry::telephone() const throw(GsmException) -{ - if (! cached()) - { - assert(_myPhonebook != NULL); - // these operations are at least "logically const" - PhonebookEntry *thisEntry = const_cast(this); - _myPhonebook->readEntry(_index, thisEntry->_telephone, thisEntry->_text); - thisEntry->_cached = true; - } - return _telephone; -} - -bool PhonebookEntry::cached() const -{ - if (_myPhonebook == NULL) - return _cached; - else - return _cached && _myPhonebook->_useCache; -} - -PhonebookEntry::PhonebookEntry(const PhonebookEntry &e) throw(GsmException) -{ - set(e._telephone, e._text, e._index, e._useIndex); -} - -PhonebookEntry &PhonebookEntry::operator=(const PhonebookEntry &e) - throw(GsmException) -{ - set(e._telephone, e._text, e._index, e._useIndex); - return *this; -} - -// Phonebook members - -int Phonebook::parsePhonebookEntry(string response, - string &telephone, string &text) -{ - // this is a workaround for a bug that occurs with my ME/TA combination - // some texts are truncated and don't have a trailing " - if (response.length() > 0 && response[response.length() - 1] != '"') - response += '"'; - Parser p(response); - - int index = p.parseInt(); - p.parseComma(); - - // handle case of empty entry - if (p.getEol().substr(0, 5) == "EMPTY") - { - telephone = ""; - text = ""; - return index; - } - - telephone = p.parseString(); - p.parseComma(); - unsigned int numberFormat = p.parseInt(); - if (numberFormat != UnknownNumberFormat && - numberFormat != InternationalNumberFormat) - cerr << "*** GSMLIB WARNING: Unexpected number format when reading from " - << "phonebook: " << numberFormat << " ***" << endl; - p.parseComma(); - text = p.parseString(false, true); - if (lowercase(_myMeTa.getCurrentCharSet()) == "gsm") - text = gsmToLatin1(text); - if (numberFormat == InternationalNumberFormat) - { - // skip leading "+" signs that may already exist - while (telephone.length() > 0 && telephone[0] == '+') - telephone = telephone.substr(1); - telephone = "+" + telephone; - } - - return index; -} - -void Phonebook::readEntry(int index, string &telephone, string &text) - throw(GsmException) -{ - // select phonebook - _myMeTa.setPhonebook(_phonebookName); - - // read entry - string response = _at->chat("+CPBR=" + intToStr(index), "+CPBR:", - false, // dont't ignore errors - true); // but accept empty responses - // (the latter is necessary for some mobile phones that return nothing - // if the entry is empty) - - if (response.length() == 0) // OK phone returned empty response - { - telephone = text = ""; // then the entry is empty as well - } - else - parsePhonebookEntry(response, telephone, text); - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Reading PB entry " << index << " number " << telephone - << " text " << text << endl; -#endif -} - -void Phonebook::findEntry(string text, int &index, string &telephone) - throw(GsmException) -{ - // select phonebook - _myMeTa.setPhonebook(_phonebookName); - - // read entry - string response = _at->chat("+CPBF=\"" + text + "\"", "+CPBF:", - false, // dont't ignore errors - true); // but accept empty responses - // (the latter is necessary for some mobile phones that return nothing - // if the entry is empty) - - if (response.length() == 0) // OK phone returned empty response - { - telephone = ""; // then the entry is empty as well - index = 0; - } - else - index=parsePhonebookEntry(response, telephone, text); - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Finding PB entry " << text << " number " << telephone - << " index " << index << endl; -#endif -} - -void Phonebook::writeEntry(int index, string telephone, string text) - throw(GsmException) -{ -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Writing PB entry #" << index << " number '" << telephone - << "' text '" << text << "'" << endl; -#endif - // select phonebook - _myMeTa.setPhonebook(_phonebookName); - - // write entry - string s; - if (telephone == "" && text == "") - { - ostrstream os; - os << "+CPBW=" << index; - os << ends; - char *ss = os.str(); - s = string(ss); - delete[] ss; - } - else - { - int type; - if (telephone.find('+') == string::npos) - type = UnknownNumberFormat; - else - type = InternationalNumberFormat; - string gsmText = text; - if (lowercase(_myMeTa.getCurrentCharSet()) == "gsm") - gsmText = latin1ToGsm(gsmText); - ostrstream os; - os << "+CPBW=" << index << ",\"" << telephone << "\"," << type - << ",\""; - os << ends; - char *ss = os.str(); - s = string(ss); - delete[] ss; - // this cannot be added with ostrstream because the gsmText can - // contain a zero (GSM default alphabet for '@') - s += gsmText + "\""; - } - _at->chat(s); -} - -Phonebook::iterator Phonebook::insertFirstEmpty(string telephone, string text) - throw(GsmException) -{ - for (int i = 0; i < _maxSize; i++) - if (_phonebook[i].empty()) - { - _phonebook[i].set(telephone, text); - adjustSize(1); - return begin() + i; - } - throw GsmException(_("phonebook full"), OtherError); -} - -Phonebook::iterator Phonebook::insert(const string telephone, - const string text, - const int index) -{ - for (int i = 0; i < _maxSize; i++) - if (_phonebook[i].index() == index) - if (_phonebook[i].empty()) - { - _phonebook[i].set(telephone, text); - adjustSize(1); - return begin() + i; - } - else - throw GsmException(_("attempt to overwrite phonebook entry"), - OtherError); - return end(); -} - -Phonebook::Phonebook(string phonebookName, Ref at, MeTa &myMeTa, - bool preload) throw(GsmException) : - _phonebookName(phonebookName), _at(at), _myMeTa(myMeTa), _useCache(true) -{ - // select phonebook - _myMeTa.setPhonebook(_phonebookName); - - // query size and maximum capacity of phonebook - _size = -1; // -1 means not known yet - _maxSize = -1; - Parser q(_at->chat("+CPBS?", "+CPBS:")); - string dummy = q.parseString(); - if (q.parseComma(true)) // this means that - { // used and total result is supported by ME - _size = q.parseInt(); - q.parseComma(); - _maxSize = q.parseInt(); - } - - // get basic phonebook info from ME - Parser p(_at->chat("+CPBR=?", "+CPBR:")); - - // get index of actually available entries in the phonebook - vector availablePositions = p.parseIntList(); - p.parseComma(); - _maxNumberLength = p.parseInt(); - p.parseComma(); - _maxTextLength = p.parseInt(); - - // find out capacity of phonebook in ME - // Note: The phonebook in the ME may be sparse, eg. the range of - // allowed index numbers may be something like (3-4, 20-100, 120). - // The standard allows this, even though it is unlikely to be - // implemented like that by anyone. - // In memory we store only phonebook entries that may actually be - // used, ie. the phonebook in memory is not sparse. - // Each entry has a member _index that corresponds to the index in the ME. - if (_maxSize == -1) - { - _maxSize = 0; - for (vector::iterator i = availablePositions.begin(); - i != availablePositions.end(); ++i) - if (*i) ++_maxSize; - } - - // for use with preload below - int *meToPhonebookIndexMap = - (int*)alloca(sizeof(int) * (availablePositions.size() + 1)); - - // initialize phone book entries - if (_maxSize == 0) - _phonebook = NULL; - else - _phonebook = new PhonebookEntry[_maxSize]; - int nextAvailableIndex = 0; - int i; - for (i = 0; i < _maxSize; i++) - { - while (! availablePositions[nextAvailableIndex]) - nextAvailableIndex++; - _phonebook[i]._index = nextAvailableIndex; - _phonebook[i]._cached = false; - _phonebook[i]._myPhonebook = this; - meToPhonebookIndexMap[nextAvailableIndex++] = i; - } - - // find out first index number of phonebook - int firstIndex = -1; - for (i = 0; i < _maxSize; i++) - if (availablePositions[i]) - { - firstIndex = i; - break; - } - - // preload phonebook - // Note: this contains a workaround for the bug that - // some MEs can not return the entire phonebook with one AT command - // To detect this condition, _size must be known - // also, this code only handles non-sparse phonebooks - if (preload && _size != -1 && - (int)availablePositions.size() == _maxSize + firstIndex) - { - int entriesRead = 0; - int startIndex = firstIndex; - - while (entriesRead < _size) - { - reportProgress(0, _maxSize); // chatv also calls reportProgress() - vector responses = - _at->chatv("+CPBR=" + intToStr(startIndex) + - "," + intToStr(_maxSize + firstIndex - 1), - "+CPBR:", true); - - // this means that we have read nothing even though not all - // entries have been retrieved (entriesRead < _size) - // this could be due to a malfunction of the ME... - // anyway, missing entries can be read later by readEntry() - if (responses.size() == 0) - { -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** error when preloading phonebook: " - "not all entries returned" << endl; -#endif - break; - } - - for (vector::iterator i = responses.begin(); - i != responses.end(); ++i) - { - string telephone, text; - int meIndex = parsePhonebookEntry(*i, telephone, text); - _phonebook[meToPhonebookIndexMap[meIndex]]._cached = true; - _phonebook[meToPhonebookIndexMap[meIndex]]._telephone = telephone; - _phonebook[meToPhonebookIndexMap[meIndex]]._text = text; - assert(_phonebook[meToPhonebookIndexMap[meIndex]]._index == meIndex); - - ++entriesRead; - startIndex = meIndex + 1; -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Preloading PB entry " << meIndex - << " number " << telephone - << " text " << text << endl; -#endif - } - } - } -} - -Phonebook::iterator Phonebook::begin() -{ - return &_phonebook[0]; -} - -Phonebook::const_iterator Phonebook::begin() const -{ - return &_phonebook[0]; -} - -Phonebook::iterator Phonebook::end() -{ - return &_phonebook[_maxSize]; -} - -Phonebook::const_iterator Phonebook::end() const -{ - return &_phonebook[_maxSize]; -} - -Phonebook::reference Phonebook::operator[](int n) -{ - return _phonebook[n]; -} - -Phonebook::const_reference Phonebook::operator[](int n) const -{ - return _phonebook[n]; -} - -Phonebook::reference Phonebook::front() -{ - return _phonebook[0]; -} - -Phonebook::const_reference Phonebook::front() const -{ - return _phonebook[0]; -} - -Phonebook::reference Phonebook::back() -{ - return _phonebook[_maxSize - 1]; -} - -Phonebook::const_reference Phonebook::back() const -{ - return _phonebook[_maxSize - 1]; -} - -int Phonebook::size() const throw(GsmException) -{ - if (_size != -1) - return _size; - else - { - int result = 0; - for (int i = 0; i < _maxSize; i++) - if (! _phonebook[i].empty()) - result++; - Phonebook *thisPhonebook = const_cast(this); - thisPhonebook->_size = result; - return result; - } -} - -Phonebook::iterator Phonebook::insert(iterator position, - const PhonebookEntry& x) - throw(GsmException) -{ - if (x.useIndex() && x.index() != -1) - return insert(x.telephone(), x.text(), x.index()); - else - return insertFirstEmpty(x.telephone(), x.text()); -} - -void Phonebook::insert (iterator pos, int n, const PhonebookEntry& x) - throw(GsmException) -{ - for (int i = 0; i < n; i++) - if (x.useIndex() && x.index() != -1) - insert(x.telephone(), x.text(), x.index()); - else - insertFirstEmpty(x.telephone(), x.text()); -} - -void Phonebook::insert (iterator pos, long n, const PhonebookEntry& x) - throw(GsmException) -{ - for (long i = 0; i < n; i++) - if (x.useIndex() && x.index() != -1) - insert(x.telephone(), x.text(), x.index()); - else - insertFirstEmpty(x.telephone(), x.text()); -} - -Phonebook::iterator Phonebook::erase(iterator position) - throw(GsmException) -{ - if (! position->empty()) - { - position->set("", ""); - adjustSize(-1); - } - return position + 1; -} - -Phonebook::iterator Phonebook::erase(iterator first, iterator last) - throw(GsmException) -{ - iterator i; - for (i = first; i != last; ++i) - erase(i); - return i; -} - -void Phonebook::clear() throw(GsmException) -{ - for (iterator i = begin(); i != end(); ++i) - erase(i); -} - -Phonebook::iterator Phonebook::find(string text) throw(GsmException) -{ - int index; - string telephone; - - int i; - for (i = 0; i < _maxSize; i++) - if (_phonebook[i].text() == text) - return begin() + i; - - findEntry(text, index, telephone); - - for (i = 0; i < _maxSize; i++) - if (_phonebook[i].index() == index) - if (_phonebook[i].cached()) - { - // if entry was already (= cached) and is now different - // the SIM card or it's contents were changed - if (_phonebook[i]._telephone != telephone || - _phonebook[i]._text != text) - throw GsmException(_("SIM card changed while accessing phonebook"), - OtherError); - } - else - { - _phonebook[i]._cached = true; - _phonebook[i]._telephone = telephone; - _phonebook[i]._text = text; - return begin() + i; - } - return end(); -} - -Phonebook::~Phonebook() -{ - delete []_phonebook; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h deleted file mode 100644 index 4999da532e..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h +++ /dev/null @@ -1,195 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_phonebook.h -// * -// * Purpose: Phonebook management functions -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.5.1999 -// ************************************************************************* - -#ifndef GSM_PHONEBOOK_H -#define GSM_PHONEBOOK_H - -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // forward declarations - class Phonebook; - - // a single entry in the phonebook that corresponds to an ME entry - - class PhonebookEntry : public PhonebookEntryBase - { - private: - // this constructor is only used by Phonebook - PhonebookEntry() {} - bool _cached; // true, if this entry corresponds to info - // in the ME - Phonebook *_myPhonebook; - - public: - PhonebookEntry(string telephone, string text) : - PhonebookEntryBase(telephone, text), - _cached(true), _myPhonebook(NULL) {} - PhonebookEntry(const PhonebookEntryBase &e) throw(GsmException); - - // accessor functions, inherited from PhonebookEntryBase - // set() does not use the index argument - void set(string telephone, string text, int index = -1, - bool useIndex = false) - throw(GsmException); - string text() const throw(GsmException); - string telephone() const throw(GsmException); - - // return true if entry is cached (and caching is enabled) - bool cached() const; - - PhonebookEntry(const PhonebookEntry &e) throw(GsmException); - PhonebookEntry &operator=(const PhonebookEntry &e) throw(GsmException); - - virtual ~PhonebookEntry() {} - - friend class Phonebook; - }; - - // this class corresponds to a phonebook in the ME - // all functions directly update storage in the ME - // if the ME is exchanged, the storage may become corrupted because - // of internal buffering in the Phonebook class - - class Phonebook : public RefBase, public NoCopy - { - public: - // iterator defs - typedef PhonebookEntry *iterator; - typedef const PhonebookEntry *const_iterator; - typedef PhonebookEntry &reference; - typedef const PhonebookEntry &const_reference; - - private: - PhonebookEntry *_phonebook; // array of size _maxSize of entries - int _maxSize; // maximum size of pb (-1 == not known yet) - int _size; // current size of pb (-1 == not known yet) - string _phonebookName; // name of the phonebook, 2-byte like "ME" - unsigned int _maxNumberLength; // maximum length of telephone number - unsigned int _maxTextLength; // maximum length of descriptive text - Ref _at; // my GsmAt class - vector _positionMap; // maps in-memory index to ME index - MeTa &_myMeTa; // the MeTa object that created this Phonebook - bool _useCache; // true if entries should be cached - - // helper function, parse phonebook response returned by ME/TA - // returns index of entry - int parsePhonebookEntry(string response, string &telephone, string &text); - - // internal access functions - // read/write/find entry from/to ME - void readEntry(int index, string &telephone, string &text) - throw(GsmException); - void writeEntry(int index, string telephone, string text) - throw(GsmException); - void findEntry(string text, int &index, string &telephone) - throw(GsmException); - - // adjust size only if it was set once - void adjustSize(int sizeAdjust) - { - if (_size != -1) _size += sizeAdjust; - } - - // insert into first empty position and return position where inserted - iterator insertFirstEmpty(const string telephone, const string text) - throw(GsmException); - - // insert into specified index position - iterator insert(const string telephone, const string text, - const int index); - - // used my class MeTa - // load phonebook name phonebookName, use AT handler at - // preload entire phonebook if preload == true - Phonebook(string phonebookName, Ref at, - MeTa &myMeTa, bool preload = false) throw(GsmException); - - public: - // set cache mode on or off - void setCaching(bool useCache) {_useCache = useCache;} - - // return name of this phonebook (2-character string) - string name() const {return _phonebookName;} - - // return maximum telephone number length - unsigned int getMaxTelephoneLen() const {return _maxNumberLength;} - - // return maximum entry description length - unsigned int getMaxTextLen() const { return _maxTextLength;} - - // phonebook traversal commands - // these are suitable to use stdc++ lib algorithms and iterators - // ME have fixed storage space implemented as memory slots - // that may either be empty or used - - // traversal commands - iterator begin(); - const_iterator begin() const; - iterator end(); - const_iterator end() const; - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - reference operator[](int n); - const_reference operator[](int n) const; - - // the size macros return the number of used entries - int size() const throw(GsmException); - int max_size() const {return _maxSize;} - int capacity() const {return _maxSize;} - bool empty() const throw(GsmException) {return size() == 0;} - - // insert iterators insert into the first empty cell regardless of position - // - existing iterators are not invalidated after an insert operation - // - return position where it was actually inserted (may be != position) - // - insert only writes to available positions - // - throw an exception if size() == max_size() (ie. not empty slots) - iterator insert(iterator position, const PhonebookEntry& x) - throw(GsmException); - - // insert n times, same procedure as above - void insert(iterator pos, int n, const PhonebookEntry& x) - throw(GsmException); - void insert(iterator pos, long n, const PhonebookEntry& x) - throw(GsmException); - - // erase operators set used slots to "empty" - iterator erase(iterator position) throw(GsmException); - iterator erase(iterator first, iterator last) throw(GsmException); - void clear() throw(GsmException); - - // finds an entry given the text - iterator find(string text) throw(GsmException); - - // destructor - virtual ~Phonebook(); - - friend class PhonebookEntry; - friend class MeTa; - }; - - // useful phonebook types - typedef Ref PhonebookRef; - typedef vector PhonebookVector; -}; - -#endif // GSM_PHONEBOOK_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h deleted file mode 100644 index 83c4edf60e..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h +++ /dev/null @@ -1,58 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_port.h -// * -// * Purpose: Abstract port definition -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.5.1999 -// ************************************************************************* - -#ifndef GSM_PORT_H -#define GSM_PORT_H - -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // TA defaults - const int TIMEOUT_SECS = 60; - const char DEFAULT_INIT_STRING[] = "E0"; - const int DEFAULT_BAUD_RATE = 38400; - - class Port : public RefBase - { - public: - // read line from port(including eol characters) - virtual string getLine() throw(GsmException) =0; - - // write line to port - virtual void putLine(string line, - bool carriageReturn = true) throw(GsmException) =0; - - // wait for new data to become available, return after timeout - // if timeout == 0, wait forever - // return true if data available - virtual bool wait(GsmTime timeout) throw(GsmException) =0; - - // put back one byte that can be read by a subsequent call to readByte() - virtual void putBack(unsigned char c) =0; - - // read a single byte, return -1 if error or file closed - virtual int readByte() throw(GsmException) =0; - - // set timeout for the readByte(), getLine(), and putLine() functions - // (globally for ALL ports) - virtual void setTimeOut(unsigned int timeout) =0; - - virtual ~Port() {} - }; -}; - -#endif // GSM_PORT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc deleted file mode 100644 index e150423add..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc +++ /dev/null @@ -1,863 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sms.cc -// * -// * Purpose: SMS functions -// * (ETSI GSM 07.05) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 16.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// local constants - -static const string dashes = -"---------------------------------------------------------------------------"; - -// SMSMessage members - -Ref SMSMessage::decode(string pdu, - bool SCtoMEdirection, - GsmAt *at) throw(GsmException) -{ - Ref result; - SMSDecoder d(pdu); - d.getAddress(true); - MessageType messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - if (SCtoMEdirection) - // TPDUs from SC to ME - switch (messageTypeIndicator) - { - case SMS_DELIVER: - result = new SMSDeliverMessage(pdu); - break; - - case SMS_STATUS_REPORT: - result = new SMSStatusReportMessage(pdu); - break; - - case SMS_SUBMIT_REPORT: - // observed with Motorola Timeport 260, the SCtoMEdirection can - // be wrong in this case - if (at != NULL && at->getMeTa().getCapabilities()._wrongSMSStatusCode) - result = new SMSSubmitMessage(pdu); - else - result = new SMSSubmitReportMessage(pdu); - break; - - default: - throw GsmException(_("unhandled SMS TPDU type"), OtherError); - } - else - // TPDUs from ME to SC - switch (messageTypeIndicator) - { - case SMS_SUBMIT: - result = new SMSSubmitMessage(pdu); - break; - - case SMS_DELIVER_REPORT: - result = new SMSDeliverReportMessage(pdu); - break; - - case SMS_COMMAND: - result = new SMSCommandMessage(pdu); - break; - - default: - throw GsmException(_("unhandled SMS TPDU type"), OtherError); - } - result->_at = at; - return result; -} - -Ref SMSMessage::decode(istream& s) throw(gsmlib::GsmException) -{ - string pdu; - unsigned char ScToMe; - - s >> ScToMe; - s >> pdu; - - return decode(pdu,ScToMe=='S'); -} - -unsigned char SMSMessage::send(Ref &ackPdu) - throw(GsmException) -{ - if (_messageTypeIndicator != SMS_SUBMIT && - _messageTypeIndicator != SMS_COMMAND) - throw GsmException(_("can only send SMS-SUBMIT and SMS-COMMAND TPDUs"), - ParameterError); - - if (_at.isnull()) - throw GsmException(_("no device given for sending SMS"), ParameterError); - - string pdu = encode(); - Parser p(_at->sendPdu("+CMGS=" + - intToStr(pdu.length() / 2 - getSCAddressLen()), - "+CMGS:", pdu)); - unsigned char messageReference = p.parseInt(); - - if (p.parseComma(true)) - { - string pdu = p.parseEol(); - - // add missing service centre address if required by ME - if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix) - pdu = "00" + pdu; - - ackPdu = SMSMessage::decode(pdu); - } - else - ackPdu = SMSMessageRef(); - - return messageReference; -} - -unsigned char SMSMessage::send() throw(GsmException) -{ - SMSMessageRef mref; - return send(mref); -} - -unsigned int SMSMessage::getSCAddressLen() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - return e.getLength(); -} - -unsigned char SMSMessage::userDataLength() const -{ - unsigned int udhl = _userDataHeader.length(); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - return _userData.length() + (udhl ? ((1 + udhl) * 8 + 6) / 7 : 0); - else - return _userData.length() + (udhl ? (1 + udhl) : 0); -} - -ostream& SMSMessage::operator<<(ostream& s) -{ - unsigned char ScToMe; - - if (dynamic_cast(this) || - dynamic_cast(this) || - dynamic_cast(this)) - { - ScToMe = 'S'; - } - else if (dynamic_cast(this) || - dynamic_cast(this) || - dynamic_cast(this)) - { - ScToMe = 'M'; - } - else - { - throw GsmException(_("unhandled SMS TPDU type"), OtherError); - } - - s << ScToMe; - return s << encode(); -} - -// SMSMessage::SMSMessage(SMSMessage &m) -// { -// _at = m._at; - -// } - -// SMSMessage &SMSMessage::operator=(SMSMessage &m) -// { -// } - -SMSMessage::~SMSMessage() {} - -// SMSDeliverMessage members - -void SMSDeliverMessage::init() -{ - _messageTypeIndicator = SMS_DELIVER; - _moreMessagesToSend = false; - _replyPath = false; - _statusReportIndication = false; - _protocolIdentifier = 0; -} - -SMSDeliverMessage::SMSDeliverMessage() -{ - init(); -} - -SMSDeliverMessage::SMSDeliverMessage(string pdu) throw(GsmException) -{ - SMSDecoder d(pdu); - _serviceCentreAddress = d.getAddress(true); - _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - assert(_messageTypeIndicator == SMS_DELIVER); - _moreMessagesToSend = d.getBit(); // bit 2 - d.getBit(); // bit 3 - d.getBit(); // bit 4 - _statusReportIndication = d.getBit(); // bit 5 - bool userDataHeaderIndicator = d.getBit(); // bit 6 - _replyPath = d.getBit(); // bit 7 - _originatingAddress = d.getAddress(); - _protocolIdentifier = d.getOctet(); - _dataCodingScheme = d.getOctet(); - _serviceCentreTimestamp = d.getTimestamp(); - unsigned char userDataLength = d.getOctet(); - d.markSeptet(); - - if (userDataHeaderIndicator) - { - _userDataHeader.decode(d); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - userDataLength -= ((_userDataHeader.length() + 1) * 8 + 6) / 7; - else - userDataLength -= ((string)_userDataHeader).length() + 1; - } - else - _userDataHeader = UserDataHeader(); - - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - { // userDataLength is length in septets - _userData = d.getString(userDataLength); - _userData = gsmToLatin1(_userData); - } - else - { // userDataLength is length in octets - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); - d.getOctets(s, userDataLength); - _userData.assign((char*)s, (unsigned int)userDataLength); - } -} - -string SMSDeliverMessage::encode() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - e.set2Bits(_messageTypeIndicator); // bits 0..1 - e.setBit(_moreMessagesToSend); // bit 2 - e.setBit(); // bit 3 - e.setBit(); // bit 4 - e.setBit(_statusReportIndication); // bit 5 - e.setBit(_userDataHeader.length() != 0); // bit 6 - e.setBit(_replyPath); // bit 7 - e.setAddress(_originatingAddress); - e.setOctet(_protocolIdentifier); - e.setOctet(_dataCodingScheme); - e.setTimestamp(_serviceCentreTimestamp); - e.setOctet(userDataLength()); - e.markSeptet(); - if (_userDataHeader.length()) _userDataHeader.encode(e); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - e.setString(latin1ToGsm(_userData)); - else - e.setOctets((unsigned char*)_userData.data(), _userData.length()); - return e.getHexString(); -} - -string SMSDeliverMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: SMS-DELIVER") << endl - << _("SC address: '") << _serviceCentreAddress._number << "'" << endl - << _("More messages to send: ") << _moreMessagesToSend << endl - << _("Reply path: ") << _replyPath << endl - << _("User data header indicator: ") - << (_userDataHeader.length()!=0) << endl - << _("Status report indication: ") << _statusReportIndication << endl - << _("Originating address: '") << _originatingAddress._number - << "'" << endl - << _("Protocol identifier: 0x") << hex - << (unsigned int)_protocolIdentifier << dec << endl - << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl - << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl - << _("User data length: ") << (int)userDataLength() << endl - << _("User data header: 0x") - << bufToHex((unsigned char*) - ((string)_userDataHeader).data(), - ((string)_userDataHeader).length()) - << endl - << _("User data: '") << _userData << "'" << endl - << dashes << endl << endl - << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -Address SMSDeliverMessage::address() const -{ - return _originatingAddress; -} - -Ref SMSDeliverMessage::clone() -{ - Ref result = new SMSDeliverMessage(*this); - return result; -} - -// SMSSubmitMessage members - -void SMSSubmitMessage::init() -{ - // set everything to sensible default values - _messageTypeIndicator = SMS_SUBMIT; - _validityPeriodFormat = TimePeriod::Relative; - _validityPeriod._format = TimePeriod::Relative; - _validityPeriod._relativeTime = 168; // 2 days - _statusReportRequest = false; - _replyPath = false; - _rejectDuplicates = true; - _messageReference = 0; - _protocolIdentifier = 0; -} - -SMSSubmitMessage::SMSSubmitMessage() -{ - init(); -} - -SMSSubmitMessage::SMSSubmitMessage(string pdu) throw(GsmException) -{ - SMSDecoder d(pdu); - _serviceCentreAddress = d.getAddress(true); - _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - assert(_messageTypeIndicator == SMS_SUBMIT); - _rejectDuplicates = d.getBit(); // bit 2 - _validityPeriodFormat = (TimePeriod::Format)d.get2Bits(); // bits 3..4 - _statusReportRequest = d.getBit(); // bit 5 - bool userDataHeaderIndicator = d.getBit(); // bit 6 - _replyPath = d.getBit(); // bit 7 - _messageReference = d.getOctet(); - _destinationAddress = d.getAddress(); - _protocolIdentifier = d.getOctet(); - _dataCodingScheme = d.getOctet(); - if (_validityPeriodFormat != TimePeriod::NotPresent) - _validityPeriod = d.getTimePeriod(_validityPeriodFormat); - unsigned char userDataLength = d.getOctet(); - d.markSeptet(); - - if (userDataHeaderIndicator) - { - _userDataHeader.decode(d); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - userDataLength -= ((_userDataHeader.length() + 1) * 8 + 6) / 7; - else - userDataLength -= ((string)_userDataHeader).length() + 1; - } - else - _userDataHeader = UserDataHeader(); - - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - { // userDataLength is length in septets - _userData = d.getString(userDataLength); - _userData = gsmToLatin1(_userData); - } - else - { // _userDataLength is length in octets - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); - d.getOctets(s, userDataLength); - _userData.assign((char*)s, userDataLength); - } -} - -SMSSubmitMessage::SMSSubmitMessage(string text, string number) -{ - init(); - _destinationAddress = Address(number); - _userData = text; -} - -string SMSSubmitMessage::encode() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - e.set2Bits(_messageTypeIndicator); // bits 0..1 - e.setBit(_rejectDuplicates); // bit 2 - e.set2Bits(_validityPeriodFormat); // bits 3..4 - e.setBit(_statusReportRequest); // bit 5 - bool userDataHeaderIndicator = _userDataHeader.length() != 0; - e.setBit(userDataHeaderIndicator); // bit 6 - e.setBit(_replyPath); // bit 7 - e.setOctet(_messageReference); - e.setAddress(_destinationAddress); - e.setOctet(_protocolIdentifier); - e.setOctet(_dataCodingScheme); - e.setTimePeriod(_validityPeriod); - e.setOctet(userDataLength()); - e.markSeptet(); - if (userDataHeaderIndicator) _userDataHeader.encode(e); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - e.setString(latin1ToGsm(_userData)); - else - e.setOctets((unsigned char*)_userData.data(), _userData.length()); - return e.getHexString(); -} - -string SMSSubmitMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: SMS-SUBMIT") << endl - << _("SC address: '") << _serviceCentreAddress._number << "'" << endl - << _("Reject duplicates: ") << _rejectDuplicates << endl - << _("Validity period format: "); - switch (_validityPeriodFormat) - { - case TimePeriod::NotPresent: - os << _("not present"); - break; - case TimePeriod::Relative: - os << _("relative"); - break; - case TimePeriod::Absolute: - os << _("absolute"); - break; - default: - os << _("unknown"); - break; - } - os << endl - << _("Reply path: ") << _replyPath << endl - << _("User data header indicator: ") - << (_userDataHeader.length()!=0) << endl - << _("Status report request: ") << _statusReportRequest << endl - << _("Message reference: ") << (unsigned int)_messageReference << endl - << _("Destination address: '") << _destinationAddress._number - << "'" << endl - << _("Protocol identifier: 0x") << hex - << (unsigned int)_protocolIdentifier << dec << endl - << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl - << _("Validity period: ") << _validityPeriod.toString() << endl - << _("User data length: ") << (int)userDataLength() << endl - << _("User data header: 0x") << bufToHex((unsigned char*) - ((string)_userDataHeader).data(), - _userDataHeader.length()) - << endl - << _("User data: '") << _userData << "'" << endl - << dashes << endl << endl - << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -Address SMSSubmitMessage::address() const -{ - return _destinationAddress; -} - -Ref SMSSubmitMessage::clone() -{ - Ref result = new SMSSubmitMessage(*this); - return result; -} - -// SMSStatusReportMessage members - -void SMSStatusReportMessage::init() -{ - _messageTypeIndicator = SMS_STATUS_REPORT; - _moreMessagesToSend = false; - _statusReportQualifier = false; - _messageReference = 0; - _status = SMS_STATUS_RECEIVED; -} - -SMSStatusReportMessage::SMSStatusReportMessage(string pdu) throw(GsmException) -{ - SMSDecoder d(pdu); - _serviceCentreAddress = d.getAddress(true); - _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - assert(_messageTypeIndicator == SMS_STATUS_REPORT); - _moreMessagesToSend = d.getBit(); // bit 2 - d.getBit(); // bit 3 - d.getBit(); // bit 4 - _statusReportQualifier = d.getBit(); // bit 5 - _messageReference = d.getOctet(); - _recipientAddress = d.getAddress(); - _serviceCentreTimestamp = d.getTimestamp(); - _dischargeTime = d.getTimestamp(); - _status = d.getOctet(); -} - -string SMSStatusReportMessage::encode() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - e.set2Bits(_messageTypeIndicator); // bits 0..1 - e.setBit(_moreMessagesToSend); // bit 2 - e.setBit(); // bit 3 - e.setBit(); // bit 4 - e.setBit(_statusReportQualifier); // bit 5 - e.setOctet(_messageReference); - e.setAddress(_recipientAddress); - e.setTimestamp(_serviceCentreTimestamp); - e.setTimestamp(_dischargeTime); - e.setOctet(_status); - return e.getHexString(); -} - -string SMSStatusReportMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: SMS-STATUS-REPORT") << endl - << _("SC address: '") << _serviceCentreAddress._number << "'" << endl - << _("More messages to send: ") << _moreMessagesToSend << endl - << _("Status report qualifier: ") << _statusReportQualifier << endl - << _("Message reference: ") << (unsigned int)_messageReference << endl - << _("Recipient address: '") << _recipientAddress._number << "'" << endl - << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl - << _("Discharge time: ") << _dischargeTime.toString() << endl - << _("Status: 0x") << hex << (unsigned int)_status << dec - << " '" << getSMSStatusString(_status) << "'" << endl - << dashes << endl << endl - << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -Address SMSStatusReportMessage::address() const -{ - return _recipientAddress; -} - -Ref SMSStatusReportMessage::clone() -{ - Ref result = new SMSStatusReportMessage(*this); - return result; -} - -// SMSCommandMessage members - -void SMSCommandMessage::init() -{ - _messageTypeIndicator = SMS_COMMAND; - _messageReference = 0; - _statusReportRequest = true; - _protocolIdentifier = 0; - _commandType = EnquireSM; - _messageNumber = 0; - _commandDataLength = 0; -} - -SMSCommandMessage::SMSCommandMessage(string pdu) throw(GsmException) -{ - SMSDecoder d(pdu); - _serviceCentreAddress = d.getAddress(true); - _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - assert(_messageTypeIndicator == SMS_COMMAND); - d.getBit(); // bit 2 - d.getBit(); // bit 3 - d.getBit(); // bit 4 - _statusReportRequest = d.getBit(); // bit 5 - _messageReference = d.getOctet(); - _protocolIdentifier = d.getOctet(); - _commandType = d.getOctet(); - _messageNumber = d.getOctet(); - _destinationAddress = d.getAddress(); - _commandDataLength = d.getOctet(); - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * _commandDataLength); - d.getOctets(s, _commandDataLength); -} - -string SMSCommandMessage::encode() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - e.set2Bits(_messageTypeIndicator); // bits 0..1 - e.setBit(); // bit 2 - e.setBit(); // bit 3 - e.setBit(); // bit 4 - e.setBit(_statusReportRequest); // bit 5 - e.setOctet(_messageReference); - e.setOctet(_protocolIdentifier); - e.setOctet(_commandType); - e.setOctet(_messageNumber); - e.setAddress(_destinationAddress); - e.setOctet(_commandData.length()); - e.setOctets((const unsigned char*)_commandData.data(), - (short unsigned int)_commandData.length()); - return e.getHexString(); -} - -string SMSCommandMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: SMS-COMMAND") << endl - << _("SC address: '") << _serviceCentreAddress._number << "'" << endl - << _("Message reference: ") << (unsigned int)_messageReference << endl - << _("Status report request: ") << _statusReportRequest << endl - << _("Protocol identifier: 0x") << hex - << (unsigned int)_protocolIdentifier << dec << endl - << _("Command type: 0x") << hex << (unsigned int)_commandType - << dec << endl - << _("Message number: ") << (unsigned int)_messageNumber << endl - << _("Destination address: '") << _destinationAddress._number - << "'" << endl - << _("Command data length: ") << (unsigned int)_commandDataLength << endl - << _("Command data: '") << _commandData << "'" << endl - << dashes << endl << endl - << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -Address SMSCommandMessage::address() const -{ - return _destinationAddress; -} - -Ref SMSCommandMessage::clone() -{ - Ref result = new SMSCommandMessage(*this); - return result; -} - -// SMSDeliverReportMessage members - -void SMSDeliverReportMessage::init() -{ - _messageTypeIndicator = SMS_DELIVER_REPORT; - _protocolIdentifierPresent = false; - _dataCodingSchemePresent = false; - _userDataLengthPresent = false; -} - -SMSDeliverReportMessage::SMSDeliverReportMessage(string pdu) - throw(GsmException) -{ - SMSDecoder d(pdu); - _serviceCentreAddress = d.getAddress(true); - _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - assert(_messageTypeIndicator == SMS_DELIVER_REPORT); - d.alignOctet(); // skip to parameter indicator - _protocolIdentifierPresent = d.getBit(); // bit 0 - _dataCodingSchemePresent = d.getBit(); // bit 1 - _userDataLengthPresent = d.getBit(); // bit 2 - if (_protocolIdentifierPresent) - _protocolIdentifier = d.getOctet(); - if (_dataCodingSchemePresent) - _dataCodingScheme = d.getOctet(); - if (_userDataLengthPresent) - { - unsigned char userDataLength = d.getOctet(); - d.markSeptet(); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - { - _userData = d.getString(userDataLength); - _userData = gsmToLatin1(_userData); - } - else - { // userDataLength is length in octets - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); - d.getOctets(s, userDataLength); - _userData.assign((char*)s, userDataLength); - } - } -} - -string SMSDeliverReportMessage::encode() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - e.set2Bits(_messageTypeIndicator); // bits 0..1 - e.alignOctet(); // skip to parameter indicator - e.setBit(_protocolIdentifierPresent); // bit 0 - e.setBit(_dataCodingSchemePresent); // bit 1 - e.setBit(_userDataLengthPresent); // bit 2 - if (_protocolIdentifierPresent) - e.setOctet(_protocolIdentifier); - if (_dataCodingSchemePresent) - e.setOctet(_dataCodingScheme); - if (_userDataLengthPresent) - { - unsigned char userDataLength = _userData.length(); - e.setOctet(userDataLength); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - e.setString(latin1ToGsm(_userData)); - else - e.setOctets((unsigned char*)_userData.data(), userDataLength); - } - return e.getHexString(); -} - -string SMSDeliverReportMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: SMS-DELIVER-REPORT") << endl - << _("SC address: '") << _serviceCentreAddress._number << "'" << endl - << _("Protocol identifier present: ") << _protocolIdentifierPresent - << endl - << _("Data coding scheme present: ") << _dataCodingSchemePresent << endl - << _("User data length present: ") << _userDataLengthPresent << endl; - if (_protocolIdentifierPresent) - os << _("Protocol identifier: 0x") << hex - << (unsigned int)_protocolIdentifier - << dec << endl; - if (_dataCodingSchemePresent) - os << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl; - if (_userDataLengthPresent) - os << _("User data length: ") << (int)userDataLength() << endl - << _("User data: '") << _userData << "'" << endl; - os << dashes << endl << endl - << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -Address SMSDeliverReportMessage::address() const -{ - assert(0); // not address, should not be in SMS store - return Address(); -} - -Ref SMSDeliverReportMessage::clone() -{ - Ref result = new SMSDeliverReportMessage(*this); - return result; -} - -// SMSSubmitReportMessage members - -void SMSSubmitReportMessage::init() -{ - _messageTypeIndicator = SMS_SUBMIT_REPORT; - _protocolIdentifierPresent = false; - _dataCodingSchemePresent = false; - _userDataLengthPresent = false; -} - -SMSSubmitReportMessage::SMSSubmitReportMessage(string pdu) throw(GsmException) -{ - SMSDecoder d(pdu); - _serviceCentreAddress = d.getAddress(true); - _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 - assert(_messageTypeIndicator == SMS_SUBMIT_REPORT); - _serviceCentreTimestamp = d.getTimestamp(); - _protocolIdentifierPresent = d.getBit(); // bit 0 - _dataCodingSchemePresent = d.getBit(); // bit 1 - _userDataLengthPresent = d.getBit(); // bit 2 - if (_protocolIdentifierPresent) - _protocolIdentifier = d.getOctet(); - if (_dataCodingSchemePresent) - _dataCodingScheme = d.getOctet(); - if (_userDataLengthPresent) - { - unsigned char userDataLength = d.getOctet(); - d.markSeptet(); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - { - _userData = d.getString(userDataLength); - _userData = gsmToLatin1(_userData); - } - else - { // _userDataLength is length in octets - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); - d.getOctets(s, userDataLength); - _userData.assign((char*)s, userDataLength); - } - } -} - -string SMSSubmitReportMessage::encode() -{ - SMSEncoder e; - e.setAddress(_serviceCentreAddress, true); - e.set2Bits(_messageTypeIndicator); // bits 0..1 - e.setTimestamp(_serviceCentreTimestamp); - e.setBit(_protocolIdentifierPresent); // bit 0 - e.setBit(_dataCodingSchemePresent); // bit 1 - e.setBit(_userDataLengthPresent); // bit 2 - if (_protocolIdentifierPresent) - e.setOctet(_protocolIdentifier); - if (_dataCodingSchemePresent) - e.setOctet(_dataCodingScheme); - if (_userDataLengthPresent) - { - e.setOctet(userDataLength()); - if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) - e.setString(latin1ToGsm(_userData)); - else - e.setOctets((unsigned char*)_userData.data(), _userData.length()); - } - return e.getHexString(); -} - -string SMSSubmitReportMessage::toString() const -{ - ostrstream os; - os << dashes << endl - << _("Message type: SMS-SUBMIT-REPORT") << endl - << _("SC address: '") << _serviceCentreAddress._number << "'" << endl - << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl - << _("Protocol identifier present: ") << _protocolIdentifierPresent - << endl - << _("Data coding scheme present: ") << _dataCodingSchemePresent << endl - << _("User data length present: ") << _userDataLengthPresent << endl; - if (_protocolIdentifierPresent) - os << _("Protocol identifier: 0x") << hex - << (unsigned int)_protocolIdentifier - << dec << endl; - if (_dataCodingSchemePresent) - os << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl; - if (_userDataLengthPresent) - os << _("User data length: ") << (int)userDataLength() << endl - << _("User data: '") << _userData << "'" << endl; - os << dashes << endl << endl - << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -Address SMSSubmitReportMessage::address() const -{ - assert(0); // not address, should not be in SMS store - return Address(); -} - -Ref SMSSubmitReportMessage::clone() -{ - Ref result = new SMSSubmitReportMessage(*this); - return result; -} - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h deleted file mode 100644 index bd871391bb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h +++ /dev/null @@ -1,480 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sms.h -// * -// * Purpose: SMS functions -// * (ETSI GSM 07.05) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 16.5.1999 -// ************************************************************************* - -#ifndef GSM_SMS_H -#define GSM_SMS_H - -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // forward declarations - class SMSStore; - class SMSMessage; - - // this class represents a single SMS message - class SMSMessage : public RefBase - { - private: - Ref _at; // connection to the device - - public: - // possible values for message type indicator - enum MessageType {SMS_DELIVER = 0, SMS_DELIVER_REPORT = 0, - SMS_STATUS_REPORT = 2, SMS_COMMAND = 2, - SMS_SUBMIT = 1, SMS_SUBMIT_REPORT = 1}; - - protected: - // fields of the different TPDUs - // all PDUs - string _userData; - UserDataHeader _userDataHeader; - Address _serviceCentreAddress; - MessageType _messageTypeIndicator;// 2 bits - DataCodingScheme _dataCodingScheme; - - public: - // decode hexadecimal pdu string - // return SMSMessage of the appropriate type - // differentiate between SMS transfer directions SC to ME, ME to SC - // also give GsmAt object for send() - static Ref decode(string pdu, - bool SCtoMEdirection = true, - GsmAt *at = NULL) - throw(GsmException); - - static Ref decode(istream& s) throw(GsmException); - - // encode pdu, return hexadecimal pdu string - virtual string encode() = 0; - - // send this PDU - // returns message reference and ACK-PDU (if requested) - // only applicate to SMS-SUBMIT and SMS-COMMAND - unsigned char send(Ref &ackPdu) throw(GsmException); - - // same as above, but ACK-PDU is discarded - unsigned char send() throw(GsmException); - - // create textual representation of SMS - virtual string toString() const = 0; - - // return deep copy of this message - virtual Ref clone() = 0; - - // return length of SC address when encoded - unsigned int getSCAddressLen(); - - // accessor functions - MessageType messageType() const {return _messageTypeIndicator;} - Address serviceCentreAddress() const {return _serviceCentreAddress;} - - // provided for sorting messages by timestamp - virtual Timestamp serviceCentreTimestamp() const {return Timestamp();} - - // return recipient, destination etc. address (for sorting by address) - virtual Address address() const = 0; - - virtual void setUserData(string x) {_userData = x;} - virtual string userData() const {return _userData;} - - // return the size of user data (including user data header) - unsigned char userDataLength() const; - - // accessor functions - virtual void setUserDataHeader(UserDataHeader x) {_userDataHeader = x;} - virtual UserDataHeader userDataHeader() const {return _userDataHeader;} - - virtual DataCodingScheme dataCodingScheme() const - {return _dataCodingScheme;} - virtual void setDataCodingScheme(DataCodingScheme x) - {_dataCodingScheme = x;} - - void setServiceCentreAddress(Address &x) {_serviceCentreAddress = x;} - void setAt(Ref at) {_at = at;} - - virtual ~SMSMessage(); - - // print ASCII hex representation of message - ostream& operator<<(ostream& s); - - // copy constructor and assignment -// SMSMessage(SMSMessage &m); -// SMSMessage &operator=(SMSMessage &m); - - friend class SMSStore; - }; - - // SMS-DELIVER TPDU - class SMSDeliverMessage : public SMSMessage - { - private: - // SMS-DELIVER PDU members (see GSM 03.40 section 9.2.2.1) - bool _moreMessagesToSend; - bool _replyPath; - bool _statusReportIndication; - Address _originatingAddress; - unsigned char _protocolIdentifier; // octet - Timestamp _serviceCentreTimestamp; - - // initialize members to sensible values - void init(); - - public: - // constructor, sets sensible default values - SMSDeliverMessage(); - - // constructor with given pdu - SMSDeliverMessage(string pdu) throw(GsmException); - - // encode pdu, return hexadecimal pdu string - virtual string encode(); - - // create textual representation of SMS - virtual string toString() const; - - // inherited from SMSMessage - Address address() const; - Ref clone(); - - // accessor functions - bool moreMessagesToSend() const {return _moreMessagesToSend;} - bool replyPath() const {return _replyPath;} - bool statusReportIndication() const {return _statusReportIndication;} - Address originatingAddress() const {return _originatingAddress;} - unsigned char protocolIdentifier() const {return _protocolIdentifier;} - Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;} - - void setMoreMessagesToSend(bool x) {_moreMessagesToSend = x;} - void setReplyPath(bool x) {_replyPath = x;} - void setStatusReportIndication(bool x) {_statusReportIndication = x;} - void setOriginatingAddress(Address &x) {_originatingAddress = x;} - void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;} - void setServiceCentreTimestamp(Timestamp &x) {_serviceCentreTimestamp = x;} - - virtual ~SMSDeliverMessage() {} - }; - - // SMS-SUBMIT TPDU - class SMSSubmitMessage : public SMSMessage - { - private: - // SMS-SUBMIT PDU (see GSM 03.40 section 9.2.2.2) - bool _rejectDuplicates; - TimePeriod::Format _validityPeriodFormat; // 2 bits - bool _replyPath; - bool _statusReportRequest; - unsigned char _messageReference; // integer - Address _destinationAddress; - unsigned char _protocolIdentifier; - TimePeriod _validityPeriod; - - // initialize members to sensible values - void init(); - - public: - // constructor, sets sensible default values - SMSSubmitMessage(); - - // constructor with given pdu - SMSSubmitMessage(string pdu) throw(GsmException); - - // convenience constructor - // given the text and recipient telephone number - SMSSubmitMessage(string text, string number); - - // encode pdu, return hexadecimal pdu string - virtual string encode(); - - // create textual representation of SMS - virtual string toString() const; - - // inherited from SMSMessage - Address address() const; - Ref clone(); - - // accessor functions - bool rejectDuplicates() const {return _rejectDuplicates;} - TimePeriod::Format validityPeriodFormat() const - {return _validityPeriodFormat;} - bool replyPath() const {return _replyPath;} - bool statusReportRequest() const {return _statusReportRequest;} - unsigned char messageReference() const {return _messageReference;} - Address destinationAddress() const {return _destinationAddress;} - unsigned char protocolIdentifier() const {return _protocolIdentifier;} - TimePeriod validityPeriod() const {return _validityPeriod;} - - void setRejectDuplicates(bool x) {_rejectDuplicates = x;} - void setValidityPeriodFormat(TimePeriod::Format &x) - {_validityPeriodFormat = x;} - void setReplyPath(bool x) {_replyPath = x;} - void setStatusReportRequest(bool x) {_statusReportRequest = x;} - void setMessageReference(unsigned char x) {_messageReference = x;} - void setDestinationAddress(Address &x) {_destinationAddress = x;} - void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;} - void setValidityPeriod(TimePeriod &x) {_validityPeriod = x;} - - virtual ~SMSSubmitMessage() {} - }; - - // SMS-STATUS-REPORT TPDU - class SMSStatusReportMessage : public SMSMessage - { - private: - // SMS-STATUS-REPORT PDU (see GSM 03.40 section 9.2.2.3) - bool _moreMessagesToSend; - bool _statusReportQualifier; - unsigned char _messageReference; - Address _recipientAddress; - Timestamp _serviceCentreTimestamp; - Timestamp _dischargeTime; - unsigned char _status; // octet - - // initialize members to sensible values - void init(); - - public: - // constructor, sets sensible default values - SMSStatusReportMessage() {init();} - - // constructor with given pdu - SMSStatusReportMessage(string pdu) throw(GsmException); - - // encode pdu, return hexadecimal pdu string - virtual string encode(); - - // create textual representation of SMS - virtual string toString() const; - - // inherited from SMSMessage - Address address() const; - Ref clone(); - - // accessor functions - bool moreMessagesToSend() const {return _moreMessagesToSend;} - bool statusReportQualifier() const {return _statusReportQualifier;} - unsigned char messageReference() const {return _messageReference;} - Address recipientAddress() const {return _recipientAddress;} - Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;} - Timestamp dischargeTime() const {return _dischargeTime;} - unsigned char status() const {return _status;} - - void setMoreMessagesToSend(bool x) {_moreMessagesToSend = x;} - void setStatusReportQualifier(bool x) {_statusReportQualifier = x;} - void setMessageReference(unsigned char x) {_messageReference = x;} - void setRecipientAddress(Address x) {_recipientAddress = x;} - void setServiceCentreTimestamp(Timestamp x) {_serviceCentreTimestamp = x;} - void setDischargeTime(Timestamp x) {_serviceCentreTimestamp = x;} - void setStatus(unsigned char x) {_status = x;} - - virtual ~SMSStatusReportMessage() {} - }; - - // SMS-COMMAND TPDU - class SMSCommandMessage : public SMSMessage - { - public: - // command types, other values are reserved or SC-specific - enum CommandType {EnquireSM = 0, CancelStatusReportRequest = 1, - DeleteSubmittedSM = 2, EnalbeStatusReportRequest = 3}; - - private: - // SMS-COMMAND PDU (see GSM 03.40 section 9.2.2.4) - unsigned char _messageReference; - bool _statusReportRequest; - unsigned char _protocolIdentifier; - unsigned char _commandType; - unsigned char _messageNumber; - Address _destinationAddress; - unsigned char _commandDataLength; - string _commandData; - - // initialize members to sensible values - void init(); - - public: - // constructor, sets sensible default values - SMSCommandMessage() {init();} - - // constructor with given pdu - SMSCommandMessage(string pdu) throw(GsmException); - - // encode pdu, return hexadecimal pdu string - virtual string encode(); - - // create textual representation of SMS - virtual string toString() const; - - // inherited from SMSMessage - Address address() const; - Ref clone(); - - // accessor functions - unsigned char messageReference() const {return _messageReference;} - bool statusReportRequest() const {return _statusReportRequest;} - unsigned char protocolIdentifier() const {return _protocolIdentifier;} - unsigned char commandType() const {return _commandType;} - unsigned char messageNumber() const {return _messageNumber;} - Address destinationAddress() const {return _destinationAddress;} - unsigned char commandDataLength() const {return _commandDataLength;} - string commandData() const {return _commandData;} - - void setMessageReference(unsigned char x) {_messageReference = x;} - void setStatusReportRequest(bool x) {_statusReportRequest = x;} - void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;} - void setCommandType(unsigned char x) {_commandType = x;} - void setMessageNumber(unsigned char x) {_messageNumber = x;} - void setDestinationAddress(Address &x) {_destinationAddress = x;} - void setCommandDataLength(unsigned char x) {_commandDataLength = x;} - void setCommandData(string x) {_commandData = x;} - - virtual ~SMSCommandMessage() {} - }; - - // SMS-DELIVER-REPORT TPDU for RP-ACK - class SMSDeliverReportMessage : public SMSMessage - { - private: - // SMS-DELIVER-REPORT PDU (see GSM 03.40 section 9.2.2.1a (II)) - bool _protocolIdentifierPresent; // parameter indicator - bool _dataCodingSchemePresent; - bool _userDataLengthPresent; - unsigned char _protocolIdentifier; - - // initialize members to sensible values - void init(); - - public: - // constructor, sets sensible default values - SMSDeliverReportMessage() {init();} - - // constructor with given pdu - SMSDeliverReportMessage(string pdu) throw(GsmException); - - // encode pdu, return hexadecimal pdu string - virtual string encode(); - - // create textual representation of SMS - virtual string toString() const; - - // inherited from SMSMessage - Address address() const; - Ref clone(); - - // accessor functions - bool protocolIdentifierPresent() const {return _protocolIdentifierPresent;} - bool dataCodingSchemePresent() const {return _dataCodingSchemePresent;} - bool userDataLengthPresent() const {return _userDataLengthPresent;} - unsigned char protocolIdentifier() const - {assert(_protocolIdentifierPresent); return _protocolIdentifier;} - DataCodingScheme dataCodingScheme() const - {assert(_dataCodingSchemePresent); return _dataCodingScheme;} - UserDataHeader userDataHeader() const - {assert(_userDataLengthPresent); return _userDataHeader;} - string userData() const - {assert(_userDataLengthPresent); return _userData;} - - void setProtocolIdentifier(unsigned char x) - {_protocolIdentifierPresent = true; _protocolIdentifier = x;} - void setDataCodingScheme(DataCodingScheme x) - {_dataCodingSchemePresent = true; _dataCodingScheme = x;} - void setUserDataHeader(UserDataHeader x) - { - _userDataLengthPresent = true; - _userDataHeader = x; - } - void setUserData(string x) - { - _userDataLengthPresent = true; - _userData = x; - } - - virtual ~SMSDeliverReportMessage() {} - }; - - // SMS-SUBMIT-REPORT TPDU for RP-ACK - class SMSSubmitReportMessage : public SMSMessage - { - private: - // SMS-SUBMIT-REPORT PDU (see GSM 03.40 section 9.2.2.2a (II)) - Timestamp _serviceCentreTimestamp; - bool _protocolIdentifierPresent; // parameter indicator - bool _dataCodingSchemePresent; - bool _userDataLengthPresent; - unsigned char _protocolIdentifier; - DataCodingScheme _dataCodingScheme; - - // initialize members to sensible values - void init(); - - public: - // constructor, sets sensible default values - SMSSubmitReportMessage() {init();} - - // constructor with given pdu - SMSSubmitReportMessage(string pdu) throw(GsmException); - - // encode pdu, return hexadecimal pdu string - virtual string encode(); - - // create textual representation of SMS - virtual string toString() const; - - // inherited from SMSMessage - Address address() const; - Ref clone(); - - // accessor functions - Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;} - bool protocolIdentifierPresent() const {return _protocolIdentifierPresent;} - bool dataCodingSchemePresent() const {return _dataCodingSchemePresent;} - bool userDataLengthPresent() const {return _userDataLengthPresent;} - unsigned char protocolIdentifier() const - {assert(_protocolIdentifierPresent); return _protocolIdentifier;} - DataCodingScheme dataCodingScheme() const - {assert(_dataCodingSchemePresent); return _dataCodingScheme;} - UserDataHeader userDataHeader() const - {assert(_userDataLengthPresent); return _userDataHeader;} - string userData() const - {assert(_userDataLengthPresent); return _userData;} - - void setServiceCentreTimestamp(Timestamp &x) {_serviceCentreTimestamp = x;} - void setProtocolIdentifier(unsigned char x) - {_protocolIdentifierPresent = true; _protocolIdentifier = x;} - void setDataCodingScheme(DataCodingScheme x) - {_dataCodingSchemePresent = true; _dataCodingScheme = x;} - void setUserDataHeader(UserDataHeader x) - { - _userDataLengthPresent = true; - _userDataHeader = x; - } - void setUserData(string x) - { - _userDataLengthPresent = true; - _userData = x; - } - virtual ~SMSSubmitReportMessage() {} - }; - - // some useful typdefs - typedef Ref SMSMessageRef; -}; - -#endif // GSM_SMS_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc deleted file mode 100644 index cdcb0032bc..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc +++ /dev/null @@ -1,702 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sms_codec.cc -// * -// * Purpose: Coder and Encoder for SMS TPDUs -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 17.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_STRING_H -#include -#endif -#include -#include -using namespace std; -using namespace gsmlib; - -// Address members - -Address::Address(string number) : _plan(ISDN_Telephone) -{ - number = removeWhiteSpace(number); - if (number.length() > 0 && number[0] == '+') - { - _type = International; - _number = number.substr(1, number.length() - 1); - } - else - { - _type = Unknown; - _number = number; - } -} - -string Address::toString() const -{ - if (_type == International) - return "+" + _number; - else - return _number; -} - -bool gsmlib::operator<(const Address &x, const Address &y) -{ - // normalize numbers according to the following two rules: - // - prepend "+" if international number - // - append 0s to the shorter number so that both numbers have equal length - string xnumber = x._number; - string ynumber = y._number; - static string twenty0s = "00000000000000000000"; - - if (x._type == Address::International) xnumber = "+" + xnumber; - if (y._type == Address::International) ynumber = "+" + ynumber; - - while (xnumber.length() != ynumber.length()) - if (xnumber.length() < ynumber.length()) - { - int diff = ynumber.length() - xnumber.length(); - xnumber += twenty0s.substr(0, (diff > 20 ? 20 : diff)); - } - else - { - int diff = xnumber.length() - ynumber.length(); - ynumber += twenty0s.substr(0, (diff > 20 ? 20 : diff)); - } - - return xnumber < ynumber; -} - -bool gsmlib::operator==(const Address &x, const Address &y) -{ - return x._number == y._number && x._plan == y._plan; -} - -// Timestamp members - -bool Timestamp::empty() const -{ - return _year == 0 && _month == 0 && _day == 0 && _hour == 0 && - _minute == 0 && _seconds == 0 && _timeZoneMinutes == 0; -} - -string Timestamp::toString(bool appendTimeZone) const -{ - short timeZoneMinutes = _timeZoneMinutes; - short timeZoneHours = timeZoneMinutes / 60; - timeZoneMinutes %= 60; - - // format date and time in a locale-specific way - struct tm t; - t.tm_sec = _seconds; - t.tm_min = _minute; - t.tm_hour = _hour; - t.tm_mon = _month - 1; - // year 2000 heuristics, SMSs cannot be older than start of GSM network - t.tm_year = _year < 80 ? _year + 100 : _year; - t.tm_mday = _day; - t.tm_isdst = -1; - t.tm_yday = 0; - t.tm_wday = 0; - -#ifdef BROKEN_STRFTIME - char formattedTime[1024]; - strftime(formattedTime, 1024, "%x %X", &t); -#else - int formattedTimeSize = strftime(NULL, INT_MAX, "%x %X", &t) + 1; - char *formattedTime = (char*)alloca(sizeof(char) * formattedTimeSize); - strftime(formattedTime, formattedTimeSize, "%x %X", &t); -#endif - - if (! appendTimeZone) - return formattedTime; - - ostrstream os; - os << formattedTime << " (" << (_negativeTimeZone ? '-' : '+') - << setfill('0') << setw(2) << timeZoneHours - << setw(2) << timeZoneMinutes << ')' << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; -} - -bool gsmlib::operator<(const Timestamp &x, const Timestamp &y) -{ - // we don't take time zone info into account because - // - it's more complicated to compute - // - it might confuse the user for whom it's also too complicated - if (x._year < y._year) - return true; - else if (x._year > y._year) - return false; - - if (x._month < y._month) - return true; - else if (x._month > y._month) - return false; - - if (x._day < y._day) - return true; - else if (x._day > y._day) - return false; - - if (x._hour < y._hour) - return true; - else if (x._hour > y._hour) - return false; - - if (x._minute < y._minute) - return true; - else if (x._minute > y._minute) - return false; - - return x._seconds < y._seconds; -} - -bool gsmlib::operator==(const Timestamp &x, const Timestamp &y) -{ - // we don't take time zone info in order to be consistent with operator< - return x._year == y._year && x._month == y._month && x._day == y._day && - x._hour == y._hour && x._minute == y._minute && x._seconds == y._seconds; -} - -// TimePeriod members - -string TimePeriod::toString() const -{ - switch (_format) - { - case NotPresent: - return _("not present"); - case Relative: - { - ostrstream os; - if (_relativeTime <= 143) - os << ((int)_relativeTime + 1) * 5 << _(" minutes"); - else if (_relativeTime <= 167) - os << 12 * 60 + ((int)_relativeTime - 143) * 30 << _(" minutes"); - else if (_relativeTime <= 196) - os << (int)_relativeTime - 166 << _(" days"); - else if (_relativeTime <= 143) - os << (int)_relativeTime - 192 << _(" weeks"); - os << ends; - char *ss = os.str(); - string result(ss); - delete[] ss; - return result; - } - case Absolute: - return _absoluteTime.toString(); - default: - return _("unknown"); - } -} - -// DataCodingScheme members - -string DataCodingScheme::toString() const -{ - string result; - if (compressed()) result += _("compressed "); - if (messageWaitingIndication()) - switch (getMessageWaitingType()) - { - case DCS_VOICEMAIL_MESSAGE_WAITING: - result += _("voicemail message waiting"); - break; - case DCS_FAX_MESSAGE_WAITING: - result += _("fax message waiting"); - break; - case DCS_ELECTRONIC_MAIL_MESSAGE_WAITING: - result += _("electronic mail message waiting"); - break; - case DCS_OTHER_MESSAGE_WAITING: - result += _("other message waiting"); - break; - } - else - switch (getAlphabet()) - { - case DCS_DEFAULT_ALPHABET: - result += _("default alphabet"); - break; - case DCS_EIGHT_BIT_ALPHABET: - result += _("8-bit alphabet"); - break; - case DCS_SIXTEEN_BIT_ALPHABET: - result += _("16-bit alphabet"); - break; - case DCS_RESERVED_ALPHABET: - result += _("reserved alphabet"); - break; - } - return result; -} - -// SMSDecoder members - -SMSDecoder::SMSDecoder(string pdu) : _bi(0), _septetStart(NULL) -{ - _p = new unsigned char[pdu.length() / 2]; - _op = _p; - if (! hexToBuf(pdu, _p)) - throw GsmException(_("bad hexadecimal PDU format"), SMSFormatError); - _maxop = _op + pdu.length() / 2; -} - -void SMSDecoder::alignOctet() -{ - if (_bi != 0) - { - _bi = 0; - ++_op; - } -} - -void SMSDecoder::alignSeptet() -{ - assert(_septetStart != NULL); - while (((_op - _septetStart) * 8 + _bi) % 7 != 0) getBit(); -} - -unsigned char SMSDecoder::get2Bits() -{ - unsigned char result = getBit(); - return result | (getBit() << 1); -} - -unsigned char SMSDecoder::getOctet() -{ - alignOctet(); - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - return *_op++; -} - -void SMSDecoder::getOctets(unsigned char* octets, unsigned short length) -{ - alignOctet(); - for (unsigned short i = 0; i < length; ++i) - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - *octets++ = *_op++; - } -} - -string SMSDecoder::getSemiOctets(unsigned short length) -{ - string result; - result.reserve(length); - alignOctet(); - for (unsigned short i = 0; i < length; ++i) - { - if (_bi == 0) - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - // bits 0..3 are most significant - result += '0' + (*_op & 0xf); - _bi = 4; - } - else - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - // bits 4..7 are least significant, skip 0xf digit - if ((*_op & 0xf0) != 0xf0) - result += '0' + (*_op >> 4); - _bi = 0; - ++_op; - } - } - alignOctet(); - return result; -} - -unsigned long SMSDecoder::getSemiOctetsInteger(unsigned short length) -{ - unsigned long result = 0; - alignOctet(); - for (unsigned short i = 0; i < length; ++i) - { - if (_bi == 0) - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - // bits 0..3 are most significant - result = result * 10 + (*_op & 0xf); - _bi = 4; - } - else - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - // bits 4..7 are least significant, skip 0xf digit - if ((*_op & 0xf0) != 0xf0) - result = result * 10 + (*_op >> 4); - _bi = 0; - ++_op; - } - } - alignOctet(); - return result; -} - -unsigned long SMSDecoder::getTimeZone(bool &negativeTimeZone) -{ - unsigned long result = 0; - alignOctet(); - for (unsigned short i = 0; i < 2; ++i) - { - if (_bi == 0) - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - // bits 0..3 are most significant - if (i == 0) - { // get sign - result = result * 10 + (*_op & 0x7); - negativeTimeZone = (*_op & 0x8 == 0); - } - else - result = result * 10 + (*_op & 0xf); - _bi = 4; - } - else - { - if (_op >= _maxop) - throw GsmException(_("premature end of PDU"), SMSFormatError); - // bits 4..7 are least significant - result = result * 10 + (*_op >> 4); - _bi = 0; - ++_op; - } - } - alignOctet(); - return result * 15; // compute minutes -} - -unsigned long SMSDecoder::getInteger(unsigned short length) -{ - unsigned long result = 0; - for (unsigned short i = 0; i < length; ++i) - result |= (getBit() << i); - return result; -} - -string SMSDecoder::getString(unsigned short length) -{ - string result; - alignSeptet(); - for (unsigned short i = 0; i < length; ++i) - { - unsigned char c = 0; - for (unsigned short j = 0; j < 7; ++j) - c |= getBit() << j; - result += c; - } - return result; -} - -Address SMSDecoder::getAddress(bool scAddressFormat) -{ - Address result; - alignOctet(); - - unsigned char addressLength = getOctet(); - if (addressLength == 0 && scAddressFormat) - return result; // special case for SUBMIT-PDUs - - // parse Type-of-Address - result._plan = (Address::NumberingPlan)getInteger(4); - result._type = (Address::Type)getInteger(3); - - // get address - if (result._type == Address::Alphanumeric) - { - markSeptet(); - // addressLength is number of semi-octets - // (addressLength / 2) * 8 is number of available bits - // divided by 7 is number of 7-bit characters - result._number = gsmToLatin1(getString(addressLength * 4 / 7)); - alignOctet(); - } - else - result._number = getSemiOctets(scAddressFormat ? - (addressLength - 1) * 2 : addressLength); - return result; -} - -Timestamp SMSDecoder::getTimestamp() -{ - Timestamp result; - - result._year = getSemiOctetsInteger(2); - result._month = getSemiOctetsInteger(2); - result._day = getSemiOctetsInteger(2); - result._hour = getSemiOctetsInteger(2); - result._minute = getSemiOctetsInteger(2); - result._seconds = getSemiOctetsInteger(2); - result._timeZoneMinutes = getTimeZone(result._negativeTimeZone); - return result; -} - -TimePeriod SMSDecoder::getTimePeriod(TimePeriod::Format format) -{ - TimePeriod result; - result._format = format; - switch (format) - { - case TimePeriod::NotPresent: - break; - case TimePeriod::Relative: - result._relativeTime = getOctet(); - break; - case TimePeriod::Absolute: - result._absoluteTime = getTimestamp(); - break; - default: - throw GsmException(_("unknown time period format"), SMSFormatError); - break; - } - return result; -} - -SMSDecoder::~SMSDecoder() -{ - delete _p; -} - -// SMSEncoder members - -SMSEncoder::SMSEncoder() : _bi(0), _op(_p) -{ - memset((void*)_p, 0, sizeof(_p)); -} - -void SMSEncoder::alignOctet() -{ - if (_bi != 0) - { - _bi = 0; - ++_op; - } -} - -void SMSEncoder::alignSeptet() -{ - while (((_op - _septetStart) * 8 + _bi) % 7 != 0) setBit(); -} - -void SMSEncoder::set2Bits(unsigned char twoBits) -{ - setBit(twoBits & 1); - setBit((twoBits & 2) == 2); -} - -void SMSEncoder::setOctet(unsigned char octet) -{ - alignOctet(); - *_op++ = octet; -} - -void SMSEncoder::setOctets(const unsigned char* octets, unsigned short length) -{ - alignOctet(); - for (unsigned short i = 0; i < length; ++i) - *_op++ = octets[i]; -} - -void SMSEncoder::setSemiOctets(string semiOctets) -{ - alignOctet(); - for (unsigned int i = 0; i < semiOctets.length(); ++i) - { - if (_bi == 0) - { - *_op = semiOctets[i] - '0'; - _bi = 4; - } - else - { - *_op++ |= (semiOctets[i] - '0') << 4; - _bi = 0; - } - } - if (_bi == 4) - *_op++ |= 0xf0; - _bi = 0; -} - -void SMSEncoder::setSemiOctetsInteger(unsigned long intValue, - unsigned short length) -{ - ostrstream os; - os << intValue << ends; - char *ss = os.str(); - string s(ss); - delete[] ss; - assert(s.length() <= length); - while (s.length() < length) s = '0' + s; - setSemiOctets(s); -} - -void SMSEncoder::setTimeZone(bool negativeTimeZone, unsigned long timeZone) -{ - setSemiOctetsInteger(timeZone / 15, 2); - if (!negativeTimeZone) - *(_op - 1) |= 8; -} - -void SMSEncoder::setInteger(unsigned long intvalue, unsigned short length) -{ - for (unsigned short i = 0; i < length; ++i) - setBit((intvalue & (1 << i)) != 0); -} - -void SMSEncoder::setString(string stringValue) -{ - alignSeptet(); - for (unsigned int i = 0; i < stringValue.length(); ++i) - { - unsigned char c = stringValue[i]; - for (unsigned short j = 0; j < 7; ++j) - setBit(((1 << j) & c) != 0); - } -} - -void SMSEncoder::setAddress(Address &address, bool scAddressFormat) -{ - alignOctet(); - if (scAddressFormat) - { - unsigned int numberLen = address._number.length(); - if (numberLen == 0) - { - setOctet(0); // special case: use default SC address - return; // (set by +CSCA=) - } - setOctet(numberLen / 2 + numberLen % 2 + 1); - // not supported for SCA format - assert(address._type != Address::Alphanumeric); - } - else - if (address._type == Address::Alphanumeric) - // address in GSM default encoding, see also comment in getAddress() - setOctet((address._number.length() * 7 + 6) / 8 * 2); - else - setOctet(address._number.length()); - - setInteger(address._plan, 4); - setInteger(address._type, 3); - setBit(1); - - if (address._number.length() > 0) - if (address._type == Address::Alphanumeric) - { - markSeptet(); - setString(latin1ToGsm(address._number)); - } - else - setSemiOctets(address._number); - alignOctet(); -} - -void SMSEncoder::setTimestamp(Timestamp timestamp) -{ - setSemiOctetsInteger(timestamp._year, 2); - setSemiOctetsInteger(timestamp._month, 2); - setSemiOctetsInteger(timestamp._day, 2); - setSemiOctetsInteger(timestamp._hour, 2); - setSemiOctetsInteger(timestamp._minute, 2); - setSemiOctetsInteger(timestamp._seconds, 2); - setTimeZone(timestamp._negativeTimeZone, timestamp._timeZoneMinutes); -} - -void SMSEncoder::setTimePeriod(TimePeriod period) -{ - switch (period._format) - { - case TimePeriod::NotPresent: - break; - case TimePeriod::Relative: - setOctet(period._relativeTime); - break; - case TimePeriod::Absolute: - setTimestamp(period._absoluteTime); - break; - default: - assert(0); - break; - } -} - -string SMSEncoder::getHexString() -{ - short bi = _bi; - unsigned char *op = _op; - alignOctet(); - string result = bufToHex(_p, _op - _p); - _bi = bi; - _op = op; - return result; -} - -unsigned int SMSEncoder::getLength() -{ - short bi = _bi; - unsigned char *op = _op; - alignOctet(); - unsigned int result = _op - _p; - _bi = bi; - _op = op; - return result; -} - -// UserDataHeader members - -void UserDataHeader::encode(SMSEncoder &e) -{ - e.setOctet(_udh.length()); - e.setOctets((unsigned char*)_udh.data(), _udh.length()); -} - -void UserDataHeader::decode(SMSDecoder &d) -{ - unsigned char udhLen = d.getOctet(); - unsigned char *s = - (unsigned char*)alloca(sizeof(unsigned char) * udhLen); - d.getOctets(s, udhLen); - string ss((char*)s, (unsigned int)udhLen); - _udh = ss; -} - -string UserDataHeader::getIE(unsigned char id) -{ - int udhl, pos = 0; - - udhl = _udh.length(); - while (pos < udhl) - { - unsigned char iei = _udh[pos++]; - unsigned char ieidl = _udh[pos++]; - if (iei == id) return _udh.substr(pos, ieidl); - pos += ieidl; - } - return ""; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h deleted file mode 100644 index 692b424561..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h +++ /dev/null @@ -1,329 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sms_codec.h -// * -// * Purpose: Coder and Encoder for SMS TPDUs -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 16.5.1999 -// ************************************************************************* - -#ifndef GSM_SMS_CODEC_H -#define GSM_SMS_CODEC_H - -#include -#include - -using namespace std; - -namespace gsmlib -{ - // this struct represents a telephone number - // usually _type == Unknown or International - // and _number == ISDN_Telephone - struct Address - { - enum Type {Unknown = 0, International = 1, National = 2, - NetworkSpecific = 3, Subscriber = 4, - Alphanumeric = 5, Abbreviated = 6, Reserved = 7}; - enum NumberingPlan {UnknownPlan = 0, ISDN_Telephone = 1, - Data = 3, Telex = 4, NationalPlan = 8, - PrivatePlan = 9, Ermes = 10, ReservedPlan = 15}; - Type _type; - NumberingPlan _plan; - string _number; - - Address() : _type(Unknown), _plan(UnknownPlan) {} - // the constructor sets _type and _plan to defaults - // _plan == ISDN_Telephone - // _type == International if number starts with "+" - // _type == unknown otherwise - // number must be of the form "+123456" or "123456" - Address(string number); - - // return string representation - string toString() const; - - friend bool operator<(const Address &x, const Address &y); - friend bool operator==(const Address &x, const Address &y); - }; - - // compare two addresses - extern bool operator<(const Address &x, const Address &y); - extern bool operator==(const Address &x, const Address &y); - - // representation of a SMS timestamp - struct Timestamp - { - short _year, _month, _day, _hour, _minute, _seconds, _timeZoneMinutes; - bool _negativeTimeZone; - - Timestamp() : _year(0), _month(0), _day(0), _hour(0), - _minute(0), _seconds(0), _timeZoneMinutes(0), _negativeTimeZone(false) {} - - // return true if the time stamp is empty (ie. contains only zeroes) - bool empty() const; - - // return string representation - string toString(bool appendTimeZone = true) const; - - friend bool operator<(const Timestamp &x, const Timestamp &y); - friend bool operator==(const Timestamp &x, const Timestamp &y); - }; - - // compare two timestamps - extern bool operator<(const Timestamp &x, const Timestamp &y); - extern bool operator==(const Timestamp &x, const Timestamp &y); - - // representation of time period - struct TimePeriod - { - // possible values for validity period format - enum Format {NotPresent = 0, Relative = 2, Absolute = 3}; - Format _format; - Timestamp _absoluteTime; - unsigned char _relativeTime; - - TimePeriod() : _format(NotPresent), _relativeTime(0) {} - - // return string representation (already translated) - string toString() const; - }; - - // representation of DataCodingScheme - // the data coding scheme is described in detail in ETSI GSM 03.38, section 4 - const unsigned char DCS_COMPRESSED = 0x20; // bit 5 - - const unsigned char DCS_DEFAULT_ALPHABET = 0 << 2; // bit 2..3 == 0 - const unsigned char DCS_EIGHT_BIT_ALPHABET = 1 << 2; // bit 2..3 == 01 - const unsigned char DCS_SIXTEEN_BIT_ALPHABET = 2 << 2; // bit 2..3 == 10 - const unsigned char DCS_RESERVED_ALPHABET = 3 << 2; // bit 2..3 == 11 - - const unsigned char DCS_MESSAGE_WAITING_INDICATION = 0xc0; // bit 7..6 == 11 - const unsigned char DCS_VOICEMAIL_MESSAGE_WAITING = 0; - const unsigned char DCS_FAX_MESSAGE_WAITING = 1; - const unsigned char DCS_ELECTRONIC_MAIL_MESSAGE_WAITING = 2; - const unsigned char DCS_OTHER_MESSAGE_WAITING = 3; - - class DataCodingScheme - { - private: - unsigned char _dcs; - - public: - // initialize with data coding scheme octet - DataCodingScheme(unsigned char dcs) : _dcs(dcs) {} - - // set to default values (no message waiting, no message class indication, - // default 7-bit alphabet) - DataCodingScheme() : _dcs(DCS_DEFAULT_ALPHABET) {} - - // return type of alphabet used (if messageWaitingIndication == false) - unsigned char getAlphabet() const {return _dcs & (3 << 2);} - - // return true if message compressed - // (if messageWaitingIndication == false) - bool compressed() const {return _dcs & DCS_COMPRESSED == DCS_COMPRESSED;} - - // return true if message waiting indication - bool messageWaitingIndication() const - {return _dcs & DCS_MESSAGE_WAITING_INDICATION == - DCS_MESSAGE_WAITING_INDICATION;} - - // return type of waiting message (if messageWaitingIndication == true) - unsigned char getMessageWaitingType() const {return _dcs & 3;} - - // return string representation (already translated) - string toString() const; - - operator unsigned char() const {return _dcs;} - }; - - // utility class facilitate SMS TPDU decoding - class SMSDecoder - { - private: - unsigned char *_p; // buffer to hold pdu - short _bi; // bit index (0..7) - unsigned char *_op; // current octet pointer - unsigned char *_septetStart; // start of septet string - - unsigned char *_maxop; // pointer to last byte after _p - - public: - // initialize with a hexadecimal octet string containing SMS TPDU - SMSDecoder(string pdu); - - // align to octet border - void alignOctet(); - - // remember starting point of septets (important for alignSeptet()) - void markSeptet() {alignOctet(); _septetStart = _op;} - - // align to septet border - void alignSeptet(); - - // get single bit - bool getBit() - { - assert(_op < _maxop); - bool result = ((*_op >> _bi) & 1); - if (_bi == 7) - { - _bi = 0; - ++_op; - } - else - ++_bi; - return result; - } - - // get two bits - unsigned char get2Bits(); - - // get one octet - unsigned char getOctet(); - - // get string of octets of specified length - void getOctets(unsigned char* octets, unsigned short length); - - // get length semi-octets (bcd-coded number) as ASCII string of numbers - string getSemiOctets(unsigned short length); - - // get length semi-octets (bcd-coded number) as integer - unsigned long getSemiOctetsInteger(unsigned short length); - - // get time zone (in minutes) and time zone sign - unsigned long getTimeZone(bool &negativeTimeZone); - - // get integer with length number of bits - unsigned long getInteger(unsigned short length); - - // get length number of alphanumeric 7-bit characters - // markSeptet() must be called before this function - string getString(unsigned short length); - - // get address/telephone number - // service centre address has special format - Address getAddress(bool scAddressFormat = false); - - // get Timestamp - Timestamp getTimestamp(); - - // get TimePeriod of given format - TimePeriod getTimePeriod(TimePeriod::Format format); - - // destructor - ~SMSDecoder(); - }; - - // utility class for SMS TPDU encoding - class SMSEncoder - { - private: - unsigned char _p[2000]; // buffer to hold pdu (2000 should be enough) - short _bi; // bit index (0..7) - unsigned char *_op; // current octet pointer - unsigned char *_septetStart; // start of septet string - - public: - // constructor - SMSEncoder(); - - // align to octet border - void alignOctet(); - - // remember starting point of septets (important for alignSeptet()) - void markSeptet() {alignOctet(); _septetStart = _op;} - - // align to septet border - void alignSeptet(); - - // set single bit - void setBit(bool bit = false) - { - if (bit) - *_op |= (1 << _bi); - if (_bi == 7) - { - _bi = 0; - ++_op; - } - else - ++_bi; - } - - // set two bits - void set2Bits(unsigned char twoBits); - - // set one octet - void setOctet(unsigned char octet); - - // set string of octets of specified length - void setOctets(const unsigned char* octets, unsigned short length); - - // set semi-octets semiOctets (given as ASCII string of numbers) - void setSemiOctets(string semiOctets); - - // set semi-octets (given as integer) - void setSemiOctetsInteger(unsigned long intValue, unsigned short length); - - // set time zone (in minutes) and time zone sign - void setTimeZone(bool negativeTimeZone, unsigned long timeZone); - - // set integer with length number of bits - void setInteger(unsigned long intvalue, unsigned short length); - - // set alphanumeric 7-bit characters - void setString(string stringValue); - - // set address/telephone number - // service centre address has special format - void setAddress(Address &address, bool scAddressFormat = false); - - // set Timestamp - void setTimestamp(Timestamp timestamp); - - // set TimePeriod - void setTimePeriod(TimePeriod period); - - // return constructed TPDU as hex-encoded string - string getHexString(); - - // return current length of TPDU - unsigned int getLength(); - }; - - // class to handle user data header - class UserDataHeader - { - private: - string _udh; - - public: - // empty user data header - UserDataHeader() {} - - // initialize with user data header - UserDataHeader (string udh) : _udh(udh) {} - - // encode header - void encode(SMSEncoder &e); - - // decode header - void decode(SMSDecoder &d); - - // return a given information element, if present, or an empty string - string getIE(unsigned char id); - - // return the size of the header - unsigned int length() const {return _udh.length();} - - // return user data header as octet string - operator string() const {return _udh;} - }; -}; - -#endif // GSM_SMS_CODEC_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc deleted file mode 100644 index 91e15ce3a8..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc +++ /dev/null @@ -1,489 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sms_store.cc -// * -// * Purpose: SMS functions, SMS store -// * (ETSI GSM 07.05) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 20.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// SMSStoreEntry members - -SMSStoreEntry::SMSStoreEntry() : - _status(Unknown), _cached(false), _mySMSStore(NULL), _index(0) -{ -} - - -SMSMessageRef SMSStoreEntry::message() const throw(GsmException) -{ - if (! cached()) - { - assert(_mySMSStore != NULL); - // these operations are at least "logically const" - SMSStoreEntry *thisEntry = const_cast(this); - _mySMSStore->readEntry(_index, thisEntry->_message, thisEntry->_status); - thisEntry->_cached = true; - } - return _message; -} - -CBMessageRef SMSStoreEntry::cbMessage() const throw(GsmException) -{ - assert(_mySMSStore != NULL); - - // these operations are at least "logically const" - SMSStoreEntry *thisEntry = const_cast(this); - // don't cache CB message for now - thisEntry->_cached = false; - - CBMessageRef result; - _mySMSStore->readEntry(_index, result); - return result; -} - -SMSStoreEntry::SMSMemoryStatus SMSStoreEntry::status() const - throw(GsmException) -{ - if (! cached()) - { - assert(_mySMSStore != NULL); - // these operations are at least "logically const" - SMSStoreEntry *thisEntry = const_cast(this); - _mySMSStore->readEntry(_index, thisEntry->_message, thisEntry->_status); - thisEntry->_cached = true; - } - return _status; -} - -bool SMSStoreEntry::empty() const throw(GsmException) -{ - return message().isnull(); -} - -unsigned char SMSStoreEntry::send(Ref &ackPdu) - throw(GsmException) -{ - return _mySMSStore->send(_index, ackPdu); -} - -unsigned char SMSStoreEntry::send() throw(GsmException) -{ - SMSMessageRef mref; - return send(mref); -} - -bool SMSStoreEntry::cached() const -{ - if (_mySMSStore == NULL) - return _cached; - else - return _cached && _mySMSStore->_useCache; -} - -Ref SMSStoreEntry::clone() -{ - Ref result = new SMSStoreEntry(_message->clone()); - result->_status = _status; - result->_index = _index; - return result; -} - -bool SMSStoreEntry::operator==(const SMSStoreEntry &e) const -{ - if (_message.isnull() || e._message.isnull()) - return _message.isnull() && e._message.isnull(); - else - return _message->encode() == e._message->encode(); -} - -SMSStoreEntry::SMSStoreEntry(const SMSStoreEntry &e) -{ - _message = e._message; - _status = e._status; - _cached = e._cached; - _mySMSStore = e._mySMSStore; - _index = e._index; -} - -SMSStoreEntry &SMSStoreEntry::operator=(const SMSStoreEntry &e) -{ - _message = e._message; - _status = e._status; - _cached = e._cached; - _mySMSStore = e._mySMSStore; - _index = e._index; - return *this; -} - -// iterator members - -SMSStoreEntry &SMSStoreIterator::operator*() -{ - return (*_store)[_index]; -} - -SMSStoreEntry *SMSStoreIterator::operator->() -{ - return &(*_store)[_index]; -} - -SMSStoreIterator::operator SMSStoreEntry*() -{ - return &(*_store)[_index]; -} - -SMSStoreIterator &SMSStoreIterator::operator=(const SMSStoreIterator &i) -{ - _index = i._index; - _store = i._store; - return *this; -} - -const SMSStoreEntry &SMSStoreConstIterator::operator*() -{ - return (*_store)[_index]; -} - -const SMSStoreEntry *SMSStoreConstIterator::operator->() -{ - return &(*_store)[_index]; -} - -// SMSStore members - -void SMSStore::readEntry(int index, SMSMessageRef &message, - SMSStoreEntry::SMSMemoryStatus &status) - throw(GsmException) -{ - // select SMS store - _meTa.setSMSStore(_storeName, 1); - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Reading SMS entry " << index << endl; -#endif // NDEBUG - - string pdu; - Ref p; - try - { - p = new Parser(_at->chat("+CMGR=" + intToStr(index + 1), "+CMGR:", - pdu, false, true, true)); - } - catch (GsmException &ge) - { - if (ge.getErrorCode() != SMS_INVALID_MEMORY_INDEX) - throw ge; - else - { - message = SMSMessageRef(); - status = SMSStoreEntry::Unknown; - return; - } - } - - if (pdu.length() == 0) - { - message = SMSMessageRef(); - status = SMSStoreEntry::Unknown; - } - else - { - // add missing service centre address if required by ME - if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix) - pdu = "00" + pdu; - - status = (SMSStoreEntry::SMSMemoryStatus)p->parseInt(); - - // ignore the rest of the line - message = SMSMessageRef( - SMSMessage::decode(pdu, - !(status == SMSStoreEntry::StoredUnsent || - status == SMSStoreEntry::StoredSent), - _at.getptr())); - } -} - -void SMSStore::readEntry(int index, CBMessageRef &message) - throw(GsmException) -{ - // select SMS store - _meTa.setSMSStore(_storeName, 1); - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Reading CB entry " << index << endl; -#endif // NDEBUG - - string pdu; - Ref p; - try - { - // this is just one row splitted in two part - // (msvc6 fail with internal compiler error) - string s = _at->chat("+CMGR=" + intToStr(index + 1), "+CMGR:", - pdu, false, true, true); - p = new Parser(s); - } - catch (GsmException &ge) - { - if (ge.getErrorCode() != SMS_INVALID_MEMORY_INDEX) - throw ge; - else - { - message = CBMessageRef(); - return; - } - } - - if (pdu.length() == 0) - message = CBMessageRef(); - else - message = CBMessageRef(new CBMessage(pdu)); -} - -void SMSStore::writeEntry(int &index, SMSMessageRef message) - throw(GsmException) -{ - // select SMS store - _meTa.setSMSStore(_storeName, 2); - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Writing SMS entry " << index << endl; -#endif - - // compute length of pdu - string pdu = message->encode(); - - // set message status to "RECEIVED READ" for SMS_DELIVER, SMS_STATUS_REPORT - string statusString; - - // Normally the ",1" sets the message status to "REC READ" (received read) - // which is appropriate for all non-submit messages - // Motorola Timeport 260 does not like this code, though - // DELIVER messages are magically recognized anyway - if (message->messageType() != SMSMessage::SMS_SUBMIT && - ! _at->getMeTa().getCapabilities()._wrongSMSStatusCode) - statusString = ",1"; - - Parser p(_at->sendPdu("+CMGW=" + - intToStr(pdu.length() / 2 - - message->getSCAddressLen()) + statusString, - "+CMGW:", pdu)); - index = p.parseInt() - 1; -} - -void SMSStore::eraseEntry(int index) throw(GsmException) -{ - // Select SMS store - _meTa.setSMSStore(_storeName, 1); - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "*** Erasing SMS entry " << index << endl; -#endif - - _at->chat("+CMGD=" + intToStr(index + 1)); -} - -unsigned char SMSStore::send(int index, Ref &ackPdu) - throw(GsmException) -{ - Parser p(_at->chat("+CMSS=" + intToStr(index + 1), "+CMSS:")); - unsigned char messageReference = p.parseInt(); - - if (p.parseComma(true)) - { - string pdu = p.parseEol(); - - // add missing service centre address if required by ME - if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix) - pdu = "00" + pdu; - - ackPdu = SMSMessage::decode(pdu); - } - else - ackPdu = SMSMessageRef(); - - return messageReference; -} - -int SMSStore::doInsert(SMSMessageRef message) - throw(GsmException) -{ - int index; - writeEntry(index, message); - // it is safer to force reading back the SMS from the ME - resizeStore(index + 1); - _store[index]->_cached = false; - return index; -} - -SMSStore::SMSStore(string storeName, Ref at, MeTa &meTa) - throw(GsmException) : - _storeName(storeName), _at(at), _meTa(meTa), _useCache(true) -{ - // select SMS store - Parser p(_meTa.setSMSStore(_storeName, true, true)); - - p.parseInt(); // skip number of used mems - p.parseComma(); - - resizeStore(p.parseInt()); // ignore rest of line -} - -void SMSStore::resizeStore(int newSize) -{ - int oldSize = _store.size(); - if (newSize > oldSize) - { - // cout << "*** Resizing from " << oldSize << " to " << newSize << endl; - _store.resize(newSize); - - // initialize store entries - for (int i = oldSize; i < newSize; i++) - { - _store[i] = new SMSStoreEntry(); - _store[i]->_index = i; - _store[i]->_cached = false; - _store[i]->_mySMSStore = this; - } - } -} - -SMSStore::iterator SMSStore::begin() -{ - return SMSStoreIterator(0, this); -} - -SMSStore::const_iterator SMSStore::begin() const -{ - return SMSStoreConstIterator(0, this); -} - -SMSStore::iterator SMSStore::end() -{ - return SMSStoreIterator(_store.size(), this); -} - -SMSStore::const_iterator SMSStore::end() const -{ - return SMSStoreConstIterator(_store.size(), this); -} - -SMSStore::reference SMSStore::operator[](int n) -{ - resizeStore(n + 1); - return *_store[n]; -} - -SMSStore::const_reference SMSStore::operator[](int n) const -{ - const_cast(this)->resizeStore(n + 1); - return *_store[n]; -} - -SMSStore::reference SMSStore::front() -{ - return *_store[0]; -} - -SMSStore::const_reference SMSStore::front() const -{ - return *_store[0]; -} - -SMSStore::reference SMSStore::back() -{ - return *_store.back(); -} - -SMSStore::const_reference SMSStore::back() const -{ - return *_store.back(); -} - -int SMSStore::size() const throw(GsmException) -{ - // select SMS store - Parser p(_meTa.setSMSStore(_storeName, 1, true)); - - return p.parseInt(); -} - -SMSStore::iterator SMSStore::insert(iterator position, - const SMSStoreEntry& x) - throw(GsmException) -{ - int index = doInsert(x.message()); - return SMSStoreIterator(index, this); -} - -SMSStore::iterator SMSStore::insert(const SMSStoreEntry& x) - throw(GsmException) -{ - int index = doInsert(x.message()); - return SMSStoreIterator(index, this); -} - -void SMSStore::insert (iterator pos, int n, const SMSStoreEntry& x) - throw(GsmException) -{ - for (int i = 0; i < n; i++) - doInsert(x.message()); -} - -void SMSStore::insert (iterator pos, long n, const SMSStoreEntry& x) - throw(GsmException) -{ - for (long i = 0; i < n; i++) - doInsert(x.message()); -} - -SMSStore::iterator SMSStore::erase(iterator position) - throw(GsmException) -{ - eraseEntry(position->_index); - position->_cached = false; - return position + 1; -} - -SMSStore::iterator SMSStore::erase(iterator first, iterator last) - throw(GsmException) -{ - iterator i(0, this); - for (i = first; i != last; ++i) - erase(i); - return i; -} - -void SMSStore::clear() throw(GsmException) -{ - for (iterator i = begin(); i != end(); ++i) - erase(i); -} - -SMSStore::~SMSStore() -{ - for (vector::iterator i = _store.begin(); - i != _store.end(); ++i) - delete *i; -} - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h deleted file mode 100644 index 59d0ec8eac..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h +++ /dev/null @@ -1,295 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sms_store.h -// * -// * Purpose: SMS functions, SMS store -// * (ETSI GSM 07.05) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 20.5.1999 -// ************************************************************************* - -#ifndef GSM_SMS_STORE_H -#define GSM_SMS_STORE_H - -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // forward declarations - class SMSStore; - class MeTa; - - // a single entry in the SMS store - - class SMSStoreEntry : public RefBase - { - public: - // status in ME memory - enum SMSMemoryStatus {ReceivedUnread = 0, ReceivedRead = 1, - StoredUnsent = 2, StoredSent = 3, - All = 4, Unknown = 5}; - - private: - SMSMessageRef _message; - SMSMemoryStatus _status; - bool _cached; - SMSStore *_mySMSStore; - int _index; - - public: - // this constructor is only used by SMSStore - SMSStoreEntry(); - - // create new entry given a SMS message - SMSStoreEntry(SMSMessageRef message) : - _message(message), _status(Unknown), _cached(true), _mySMSStore(NULL), - _index(0) {} - - // create new entry given a SMS message and an index - // only to be used for file-based stores (see gsm_sorted_sms_store) - SMSStoreEntry(SMSMessageRef message, int index) : - _message(message), _status(Unknown), _cached(true), _mySMSStore(NULL), - _index(index) {} - - // clear cached flag - void clearCached() { _cached = false; } - - // return SMS message stored in the entry - SMSMessageRef message() const throw(GsmException); - - // return CB message stored in the entry - CBMessageRef cbMessage() const throw(GsmException); - - // return message status in store - SMSMemoryStatus status() const throw(GsmException); - - // return true if empty, ie. no SMS in this entry - bool empty() const throw(GsmException); - - // send this PDU from store - // returns message reference and ACK-PDU (if requested) - // only applicate to SMS-SUBMIT and SMS-COMMAND - unsigned char send(Ref &ackPdu) throw(GsmException); - - // same as above, but ACK-PDU is discarded - unsigned char send() throw(GsmException); - - // return index (guaranteed to be unique, - // can be used for identification in store) - int index() const {return _index;} - - // return true if entry is cached (and caching is enabled) - bool cached() const; - - // return deep copy of this entry - Ref clone(); - - // equality operator - bool operator==(const SMSStoreEntry &e) const; - - // return store reference - SMSStore *getStore() {return _mySMSStore;} - - // copy constructor and assignment - SMSStoreEntry(const SMSStoreEntry &e); - SMSStoreEntry &operator=(const SMSStoreEntry &e); - - friend class SMSStore; - }; - - // iterator for the SMSStore class - -#if __GNUC__ == 2 && __GNUC_MINOR__ == 95 - class SMSStoreIterator : public random_access_iterator -#else - class SMSStoreIterator : public iterator -#endif - { - int _index; - SMSStore *_store; - - SMSStoreIterator(int index, SMSStore *store) : - _index(index), _store(store) {} - - public: - SMSStoreIterator(SMSStoreEntry *entry) : - _index(entry->index()), _store(entry->getStore()) {} - - SMSStoreEntry &operator*(); - SMSStoreEntry *operator->(); - SMSStoreIterator &operator+(int i) - {_index += i; return *this;} - operator SMSStoreEntry*(); - SMSStoreIterator &operator=(const SMSStoreIterator &i); - SMSStoreIterator &operator++() - {++_index; return *this;} - SMSStoreIterator &operator--() - {--_index; return *this;} - SMSStoreIterator &operator++(int i) - {_index += i; return *this;} - SMSStoreIterator &operator--(int i) - {_index -= i; return *this;} - bool operator<(SMSStoreIterator &i) - {return _index < i._index;} - bool operator==(const SMSStoreIterator &i) const - {return _index == i._index;} - bool operator!=(const SMSStoreIterator &i) const - {return _index != i._index;} - - friend class SMSStore; - }; - -#if __GNUC__ == 2 && __GNUC_MINOR__ == 95 - class SMSStoreConstIterator : public random_access_iterator -#else - class SMSStoreConstIterator : public iterator -#endif - { - int _index; - const SMSStore *_store; - - SMSStoreConstIterator(int index, const SMSStore *store) : - _index(index), _store(store) {} - - public: - const SMSStoreEntry &operator*(); - const SMSStoreEntry *operator->(); - SMSStoreConstIterator &operator++() - {++_index; return *this;} - SMSStoreConstIterator &operator--() - {--_index; return *this;} - SMSStoreConstIterator &operator++(int i) - {_index += i; return *this;} - SMSStoreConstIterator &operator--(int i) - {_index -= i; return *this;} - bool operator<(SMSStoreConstIterator &i) - {return _index < i._index;} - bool operator==(const SMSStoreConstIterator &i) const - {return _index == i._index;} - - friend class SMSStore; - }; - - // this class corresponds to a SMS store in the ME - // all functions directly update storage in the ME - // if the ME is exchanged, the storage may become corrupted because - // of internal buffering in the SMSStore class - - class SMSStore : public RefBase, public NoCopy - { - private: - vector _store; // vector of store entries - string _storeName; // name of the store, 2-byte like "SM" - Ref _at; // my GsmAt class - MeTa &_meTa; // my MeTa class - bool _useCache; // true if entries should be cached - - // internal access functions - // read/write entry from/to ME - void readEntry(int index, SMSMessageRef &message, - SMSStoreEntry::SMSMemoryStatus &status) throw(GsmException); - void readEntry(int index, CBMessageRef &message) throw(GsmException); - void writeEntry(int &index, SMSMessageRef message) - throw(GsmException); - // erase entry - void eraseEntry(int index) throw(GsmException); - // send PDU index from store - // returns message reference and ACK-PDU (if requested) - // only applicate to SMS-SUBMIT and SMS-COMMAND - unsigned char send(int index, Ref &ackPdu) throw(GsmException); - - - // do the actual insertion, return index of new element - int doInsert(SMSMessageRef message) throw(GsmException); - - // used by class MeTa - SMSStore(string storeName, Ref at, MeTa &meTa) throw(GsmException); - - // resize store entry vector if necessary - void resizeStore(int newSize); - - public: - // iterator defs - typedef SMSStoreIterator iterator; - typedef SMSStoreConstIterator const_iterator; - typedef SMSStoreEntry &reference; - typedef const SMSStoreEntry &const_reference; - - // set cache mode on or off - void setCaching(bool useCache) {_useCache = useCache;} - - // return name of this store (2-character string) - string name() const {return _storeName;} - - // SMS store traversal commands - // these are suitable to use stdc++ lib algorithms and iterators - // ME have fixed storage space implemented as memory slots - // that may either be empty or used - - // traversal commands - iterator begin(); - const_iterator begin() const; - iterator end(); - const_iterator end() const; - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - reference operator[](int n); - const_reference operator[](int n) const; - - // The size macros return the number of used entries - // Warning: indices may be _larger_ than size() because of this - // (perhaps this should be changed, because it is unexpected behavior) - - int size() const throw(GsmException); - int max_size() const {return _store.size();} - int capacity() const {return _store.size();} - bool empty() const throw(GsmException) {return size() == 0;} - - // insert iterators insert into the first empty cell regardless of position - // existing iterators may be invalidated after an insert operation - // return position - // insert only writes to available positions - // warning: insert fails silently if size() == max_size() - iterator insert(iterator position, const SMSStoreEntry& x) - throw(GsmException); - iterator insert(const SMSStoreEntry& x) throw(GsmException); - - // insert n times, same procedure as above - void insert (iterator pos, int n, const SMSStoreEntry& x) - throw(GsmException); - void insert (iterator pos, long n, const SMSStoreEntry& x) - throw(GsmException); - - // erase operators set used slots to "empty" - iterator erase(iterator position) throw(GsmException); - iterator erase(iterator first, iterator last) throw(GsmException); - void clear() throw(GsmException); - - // destructor - ~SMSStore(); - - friend class SMSStoreEntry; - friend class MeTa; - }; - - typedef Ref SMSStoreRef; - -}; - -#endif // GSM_SMS_STORE_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc deleted file mode 100644 index e1b265c3f7..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc +++ /dev/null @@ -1,503 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sorted_phonebook.cc -// * -// * Purpose: Alphabetically sorted phonebook -// * (residing in files or in the ME) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 25.6.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -const int MAX_LINE_SIZE = 1000; - -using namespace std; -using namespace gsmlib; - -string SortedPhonebook::escapeString(string s) -{ - string result; - - for (const char *pp = s.c_str(); *pp != 0; ++pp) - { - if (*pp == CR) - result += "\\r"; - else if (*pp == LF) - result += "\\n"; - else if (*pp == '\\') - result += "\\\\"; - else if (*pp == '|') - result += "\\|"; - else - result += *pp; - } - return result; -} - -string SortedPhonebook::unescapeString(char *line, unsigned int &pos) -{ - string result; - bool escaped = false; - - while (! (line[pos] == '|' && ! escaped) && line[pos] != 0 && - line[pos] != CR && line[pos] != LF) - { - if (escaped) - { - escaped = false; - if (line[pos] == 'r') - result += CR; - else if (line[pos] == 'n') - result += LF; - else if (line[pos] == '\\') - result += '\\'; - else if (line[pos] == '|') - result += '|'; - else - result += line[pos]; - } - else - if (line[pos] == '\\') - escaped = true; - else - result += line[pos]; - - ++pos; - } - return result; -} - -void SortedPhonebook::readPhonebookFile(istream &pbs, string filename) - throw(GsmException) -{ - // read entries - while (! pbs.eof()) - { - char line[MAX_LINE_SIZE]; - pbs.getline(line, MAX_LINE_SIZE); - - if (strlen(line) == 0) - continue; // skip empty lines - - if (pbs.bad()) - throw GsmException(stringPrintf(_("error reading from file '%s"), - filename.c_str()), - OSError); - - // convert line to newEntry (line format : [index] '|' text '|' number - string text, telephone; - unsigned int pos = 0; - - // parse index - string indexS = unescapeString(line, pos); - int index = -1; - if (indexS.length() == 0) - { - if (_useIndices) - throw GsmException(stringPrintf(_("entry '%s' lacks index"), line), - ParserError); - } - else - { - index = checkNumber(indexS); - _useIndices = true; - } - if (line[pos++] != '|') - throw GsmException(stringPrintf(_("line '%s' has invalid format"), line), - ParserError); - - // parse text - text = unescapeString(line, pos); - if (line[pos++] != '|') - throw GsmException(stringPrintf(_("line '%s' has invalid format"), line), - ParserError); - - // parse telephone number - telephone = unescapeString(line, pos); - - insert(PhonebookEntryBase(telephone, text, index)); - } -} - -void SortedPhonebook::sync(bool fromDestructor) throw(GsmException) -{ - // if not in file it already is stored in ME/TA - if (! _fromFile) return; - - // if writing to stdout and not called from destructor ignore - // (avoids writing to stdout multiple times) - if (_filename == "" && ! fromDestructor) return; - - // find out if any of the entries have been updated - if (! _changed) // only look if we're not writing the file anyway - for (iterator i = begin(); i != end(); i++) - if (i->changed()) - { - _changed = true; - break; - } - - if (_changed) - { - checkReadonly(); - // create backup file - but only once - if (! _madeBackupFile && _filename != "") // don't make backup of stdout - { - renameToBackupFile(_filename); - _madeBackupFile = true; - } - - // open stream - ostream *pbs = NULL; - try - { - if (_filename == "") - pbs = &cout; - else - pbs = new ofstream(_filename.c_str()); - - if (pbs->bad()) - throw GsmException( - stringPrintf(_("error opening file '%s' for writing"), - (_filename == "" ? _("") : - _filename.c_str())), - OSError); - - // and write the entries - for (PhonebookMap::iterator i = _sortedPhonebook.begin(); - i != _sortedPhonebook.end(); ++i) - { - // convert entry to output line - string line = - (_useIndices ? intToStr(i->second->index()) : "") + "|" + - escapeString(i->second->text()) + "|" + - escapeString(i->second->telephone()); - - // write out the line - *pbs << line << endl; - if (pbs->bad()) - throw GsmException( - stringPrintf(_("error writing to file '%s'"), - (_filename == "" ? _("") : - _filename.c_str())), - OSError); - } - } - catch(GsmException &e) - { - if (pbs != &cout) delete pbs; - throw; - } - // close file - if (pbs != &cout) delete pbs; - - // reset all changed states - _changed = false; - for (iterator j = begin(); j != end(); j++) - j->resetChanged(); - } -} - -void SortedPhonebook::checkReadonly() throw(GsmException) -{ - if (_readonly) throw GsmException( - _("attempt to change phonebook read from "), - ParameterError); -} - -SortedPhonebook::SortedPhonebook(string filename, bool useIndices) - throw(GsmException) : - _changed(false), _fromFile(true), _madeBackupFile(false), - _sortOrder(ByIndex), _useIndices(useIndices), _readonly(false), - _filename(filename) -{ - // open the file - ifstream pbs(filename.c_str()); - if (pbs.bad()) - throw GsmException(stringPrintf(_("cannot open file '%s'"), - filename.c_str()), - OSError); - // and read the file - readPhonebookFile(pbs, filename); -} - -SortedPhonebook::SortedPhonebook(bool fromStdin, bool useIndices) - throw(GsmException) : - _changed(false), _fromFile(true), _madeBackupFile(false), - _sortOrder(ByIndex), _useIndices(useIndices), _readonly(fromStdin) - // _filename is "" - this means stdout -{ - // read from stdin - if (fromStdin) - readPhonebookFile(cin, (string)_("")); -} - -SortedPhonebook::SortedPhonebook(PhonebookRef mePhonebook) - throw(GsmException) : - _changed(false), _fromFile(false), _madeBackupFile(false), - _sortOrder(ByIndex), _readonly(false), _mePhonebook(mePhonebook) -{ - int entriesRead = 0; - reportProgress(0, _mePhonebook->end() - _mePhonebook->begin()); - - for (Phonebook::iterator i = _mePhonebook->begin(); - i != _mePhonebook->end(); ++i) - { - if (! i->empty()) - { - _sortedPhonebook.insert( - PhonebookMap::value_type(PhoneMapKey(*this, lowercase(i->text())), i)); - ++entriesRead; - if (entriesRead == _mePhonebook->size()) - return; // ready - } - reportProgress(i - _mePhonebook->begin()); - } -} - -void SortedPhonebook::setSortOrder(SortOrder newOrder) -{ - if (newOrder == _sortOrder) return; // nothing to do - - PhonebookMap savedPhonebook = _sortedPhonebook; // save phonebook - _sortedPhonebook = PhonebookMap(); // empty old phonebook - _sortOrder = newOrder; - - // re-insert entries - switch (newOrder) - { - case ByTelephone: - { - for (PhonebookMap::iterator i = savedPhonebook.begin(); - i != savedPhonebook.end(); ++i) - _sortedPhonebook. - insert(PhonebookMap::value_type( - PhoneMapKey(*this, lowercase(i->second->telephone())), i->second)); - break; - } - case ByText: - { - for (PhonebookMap::iterator i = savedPhonebook.begin(); - i != savedPhonebook.end(); ++i) - _sortedPhonebook. - insert(PhonebookMap::value_type( - PhoneMapKey(*this, lowercase(i->second->text())), i->second)); - break; - } - case ByIndex: - { - for (PhonebookMap::iterator i = savedPhonebook.begin(); - i != savedPhonebook.end(); ++i) - _sortedPhonebook. - insert(PhonebookMap::value_type( - PhoneMapKey(*this, i->second->index()), i->second)); - break; - } - default: - assert(0); - break; - } -} - -unsigned int SortedPhonebook::getMaxTelephoneLen() const -{ - if (_fromFile) - return UINT_MAX; - else - return _mePhonebook->getMaxTelephoneLen(); -} - -unsigned int SortedPhonebook::getMaxTextLen() const -{ - if (_fromFile) - return UINT_MAX; - else - return _mePhonebook->getMaxTextLen(); -} - -int SortedPhonebook::max_size() const -{ - if (_fromFile) - return _sortedPhonebook.max_size(); - else - return _mePhonebook->max_size(); -} - -int SortedPhonebook::capacity() const -{ - if (_fromFile) - return _sortedPhonebook.max_size(); - else - return _mePhonebook->capacity(); -} - -SortedPhonebook::iterator -SortedPhonebook::insert(const PhonebookEntryBase& x) throw(GsmException) -{ - checkReadonly(); - _changed = true; - PhonebookEntryBase *newEntry; - - if (_fromFile) - if (_useIndices) - { - if (x.index() != -1) // check that index is unique - { - for (PhonebookMap::iterator i = _sortedPhonebook.begin(); - i != _sortedPhonebook.end(); ++i) - if (i->second->index() == x.index()) - throw GsmException(_("indices must be unique in phonebook"), - ParameterError); - newEntry = new PhonebookEntryBase(x); - } - else // set index - { - SortOrder saveSortOrder = _sortOrder; - setSortOrder(ByIndex); - int index = 0; - for (PhonebookMap::iterator i = _sortedPhonebook.begin(); - i != _sortedPhonebook.end(); ++i, ++index) - if (i->second->index() != index) - break; - setSortOrder(saveSortOrder); - newEntry = new PhonebookEntryBase(); - newEntry->set(x.telephone(), x.text(), index, true); - } - } - else // index info in x is ignored - newEntry = new PhonebookEntryBase(x); - else - { - PhonebookEntry newMEEntry(x); - newEntry = _mePhonebook->insert((PhonebookEntry*)NULL, newMEEntry); - } - switch (_sortOrder) - { - case ByTelephone: - return - _sortedPhonebook. - insert(PhonebookMap::value_type( - PhoneMapKey(*this, lowercase(newEntry->telephone())), newEntry)); - case ByText: - return - _sortedPhonebook. - insert(PhonebookMap::value_type( - PhoneMapKey(*this, lowercase(newEntry->text())), newEntry)); - case ByIndex: - return - _sortedPhonebook. - insert(PhonebookMap::value_type( - PhoneMapKey(*this, newEntry->index()), newEntry)); - default: - assert(0); - break; - } - return SortedPhonebook::iterator(); -} - -SortedPhonebook::iterator -SortedPhonebook::insert(iterator position, const PhonebookEntryBase& x) - throw(GsmException) -{ - return insert(x); -} - -SortedPhonebook::size_type SortedPhonebook::erase(string &key) - throw(GsmException) -{ - // deallocate memory or remove from underlying ME phonebook - for (PhonebookMap::iterator i = - _sortedPhonebook.find(PhoneMapKey(*this, lowercase(key))); - i != _sortedPhonebook.end() && - i->first == PhoneMapKey(*this, lowercase(key)); - ++i) - { - checkReadonly(); - _changed = true; - if (_fromFile) - delete i->second; - else - _mePhonebook->erase((Phonebook::iterator)i->second); - } - - return _sortedPhonebook.erase(PhoneMapKey(*this, lowercase(key))); -} - -SortedPhonebook::size_type SortedPhonebook::erase(int key) - throw(GsmException) -{ - // deallocate memory or remove from underlying ME phonebook - for (PhonebookMap::iterator i = - _sortedPhonebook.find(PhoneMapKey(*this, key)); - i != _sortedPhonebook.end() && i->first == PhoneMapKey(*this, key); - ++i) - { - checkReadonly(); - _changed = true; - if (_fromFile) - delete i->second; - else - _mePhonebook->erase((Phonebook::iterator)i->second); - } - - return _sortedPhonebook.erase(PhoneMapKey(*this, key)); -} - -void SortedPhonebook::erase(iterator position) - throw(GsmException) -{ - checkReadonly(); - _changed = true; - // deallocate memory or remove from underlying ME phonebook - if (_fromFile) - delete ((PhonebookMap::iterator)position)->second; - else - _mePhonebook->erase((Phonebook::iterator) - ((PhonebookMap::iterator)position)->second); - _sortedPhonebook.erase(position); -} - -void SortedPhonebook::erase(iterator first, iterator last) - throw(GsmException) -{ - checkReadonly(); - _changed = true; - for (PhonebookMap::iterator i = first; i != last; ++i) - if (_fromFile) - delete i->second; - else - _mePhonebook->erase((Phonebook::iterator)i->second); - _sortedPhonebook.erase(first, last); -} - -void SortedPhonebook::clear() throw(GsmException) -{ - checkReadonly(); - _changed = true; - for (iterator i = begin(); i != end(); i++) - erase(i); -} - -SortedPhonebook::~SortedPhonebook() -{ - if (_fromFile) - { - sync(true); - for (PhonebookMap::iterator i = _sortedPhonebook.begin(); - i != _sortedPhonebook.end(); ++i) - delete i->second; - } -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h deleted file mode 100644 index c0d3b787fe..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h +++ /dev/null @@ -1,159 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sorted_phonebook.h -// * -// * Purpose: Alphabetically sorted phonebook -// * (residing in files or in the ME) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 25.6.1999 -// ************************************************************************* - -#ifndef GSM_SORTED_PHONEBOOK_H -#define GSM_SORTED_PHONEBOOK_H - -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - - // The class SortedPhonebook makes the phonebook more manageable: - // - empty slots in the ME phonebook are hidden by the API - // - the class transparently handles phonebooks that reside in files - - class SortedPhonebook : public SortedPhonebookBase - { - private: - bool _changed; // true if file has changed after last save - bool _fromFile; // true if phonebook read from file - bool _madeBackupFile; // true if backup file was created - SortOrder _sortOrder; // sort order for the phonebook - bool _useIndices; // if phonebook from file: input file had - // indices; will write indices, too - bool _readonly; // =true if read from stdin - string _filename; // name of the file if phonebook from file - PhonebookMap _sortedPhonebook; // phonebook from file - PhonebookRef _mePhonebook; // phonebook if from ME - - // convert CR and LF in string to "\r" and "\n" respectively - string escapeString(string s); - - // convert "\r" and "\n" to CR and LF respectively - // start parsing with pos, stop when CR, LF, 0, or '|' is encountered - string unescapeString(char *line, unsigned int &pos); - - // initial read of phonebook file - void readPhonebookFile(istream &pbs, string filename) throw(GsmException); - - // synchronize SortedPhonebook with file (no action if in ME) - void sync(bool fromDestructor) throw(GsmException); - - // throw an exception if _readonly is set - void checkReadonly() throw(GsmException); - - public: - // iterator defs - typedef SortedPhonebookIterator iterator; - typedef PhonebookMap::size_type size_type; - - // constructor for file-based phonebook - // expect indices in file if useIndices == true - // read from file - SortedPhonebook(string filename, bool useIndices) - throw(GsmException); - // read from stdin or start empty and write to stdout - SortedPhonebook(bool fromStdin, bool useIndices) - throw(GsmException); - - // constructor for ME-based phonebook - SortedPhonebook(PhonebookRef mePhonebook) throw(GsmException); - - // return maximum telephone number length - unsigned int getMaxTelephoneLen() const; - - // return maximum entry description length - unsigned int getMaxTextLen() const; - - // handle sorting - void setSortOrder(SortOrder newOrder); - SortOrder sortOrder() const {return _sortOrder;} - - // phonebook traversal commands - // these are suitable to use stdc++ lib algorithms and iterators - // ME have fixed storage space implemented as memory slots - // that may either be empty or used - - // traversal commands - iterator begin() {return _sortedPhonebook.begin();} - iterator end() {return _sortedPhonebook.end();} - - // the size macros return the number of used entries - int size() const {return _sortedPhonebook.size();} - int max_size() const; - int capacity() const; - bool empty() const throw(GsmException) {return size() == 0;} - - // existing iterators remain valid after an insert or erase operation - // note: inserting many entries in indexed mode is inefficient - // if the sort order is not set to indexed before - - // return position - // insert only writes to available positions - // warning: insert fails silently if size() == max_size() - iterator insert(const PhonebookEntryBase& x) throw(GsmException); - iterator insert(iterator position, const PhonebookEntryBase& x) - throw(GsmException); - - PhonebookMap::size_type count(string &key) - {return _sortedPhonebook.count(PhoneMapKey(*this, lowercase(key)));} - iterator find(string &key) - {return _sortedPhonebook.find(PhoneMapKey(*this, lowercase(key)));} - iterator lower_bound(string &key) - {return _sortedPhonebook.lower_bound(PhoneMapKey(*this, - lowercase(key)));} - iterator upper_bound(string &key) - {return _sortedPhonebook.upper_bound(PhoneMapKey(*this, - lowercase(key)));} - pair equal_range(string &key) - {return _sortedPhonebook.equal_range(PhoneMapKey(*this, - lowercase(key)));} - - PhonebookMap::size_type count(int key) - {return _sortedPhonebook.count(PhoneMapKey(*this, key));} - iterator find(int key) - {return _sortedPhonebook.find(PhoneMapKey(*this, key));} - iterator lower_bound(int key) - {return _sortedPhonebook.lower_bound(PhoneMapKey(*this, key));} - iterator upper_bound(int key) - {return _sortedPhonebook.upper_bound(PhoneMapKey(*this, key));} - pair equal_range(int key) - {return _sortedPhonebook.equal_range(PhoneMapKey(*this, key));} - - size_type erase(string &key) throw(GsmException); - size_type erase(int key) throw(GsmException); - void erase(iterator position) throw(GsmException); - void erase(iterator first, iterator last) throw(GsmException); - void clear() throw(GsmException); - - // synchronize SortedPhonebook with file (no action if in ME) - void sync() throw(GsmException) {sync(false);} - - // destructor - // writes back change to file if phonebook is in file - virtual ~SortedPhonebook(); - }; - - // typedef Ref SortedPhonebookRef; -}; - -#endif // GSM_SORTED_PHONEBOOK_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc deleted file mode 100644 index 1061dc60b9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc +++ /dev/null @@ -1,115 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sorted_phonebook_base.cc -// * -// * Purpose: Virtual base class for alphabetically sorted phonebook -// * The infrastructure in this module allows custom backends for -// * storing phonebook entries to be integrated into gsmlib -// * (eg. LDAP- or RDBMS-based phonebook stores). -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 5.6.2000 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -#include - -using namespace std; -using namespace gsmlib; - -// PhonebookEntryBase members - -void PhonebookEntryBase::set(string telephone, string text, int index, - bool useIndex) - throw(GsmException) -{ - checkTextAndTelephone(text, telephone); - - _changed = true; - _telephone = telephone; - _text = text; - _useIndex = useIndex; - if (index != -1) - _index = index; -} - -bool PhonebookEntryBase::operator==(const PhonebookEntryBase &e) const -{ - assert(! ((_useIndex || e._useIndex) && - (_index == -1 || e._index == -1))); - return _telephone == e._telephone && _text == e._text && - (! (_useIndex || e._useIndex) || _index == e._index); -} - -string PhonebookEntryBase::text() const throw(GsmException) -{ - return _text; -} - -string PhonebookEntryBase::telephone() const throw(GsmException) -{ - return _telephone; -} - -bool PhonebookEntryBase::empty() const throw(GsmException) -{ - return (text() == "") && (telephone() == ""); -} - -Ref PhonebookEntryBase::clone() -{ - Ref result = new PhonebookEntryBase(*this); - return result; -} - -PhonebookEntryBase::PhonebookEntryBase(const PhonebookEntryBase &e) - throw(GsmException) -{ - set(e._telephone, e._text, e._index, e._useIndex); -} - -PhonebookEntryBase &PhonebookEntryBase::operator=(const PhonebookEntryBase &e) - throw(GsmException) -{ - set(e._telephone, e._text, e._index, e._useIndex); - return *this; -} - -// CustomPhonebookRegistry members - -map -*CustomPhonebookRegistry::_factoryList = NULL; - -void CustomPhonebookRegistry:: -registerCustomPhonebookFactory(string backendName, - CustomPhonebookFactory *factory) - throw(GsmException) -{ - if (_factoryList == NULL) - _factoryList = new map; - backendName = lowercase(backendName); - if (_factoryList->find(backendName) != _factoryList->end()) - throw GsmException(stringPrintf(_("backend '%s' already registered"), - backendName.c_str()), ParameterError); -} - -SortedPhonebookRef CustomPhonebookRegistry:: -createPhonebook(string backendName, string source) throw(GsmException) -{ - if (_factoryList == NULL) - _factoryList = new map; - backendName = lowercase(backendName); - if (_factoryList->find(backendName) == _factoryList->end()) - throw GsmException(stringPrintf(_("backend '%s' not registered"), - backendName.c_str()), ParameterError); - return (*_factoryList)[backendName]->createPhonebook(source); -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h deleted file mode 100644 index 166f81f45a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h +++ /dev/null @@ -1,220 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sorted_phonebook_base.h -// * -// * Purpose: Virtual base class for alphabetically sorted phonebook -// * The infrastructure in this module allows custom backends for -// * storing phonebook entries to be integrated into gsmlib -// * (eg. LDAP- or RDBMS-based phonebook stores). -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 5.6.2000 -// ************************************************************************* - -#ifndef GSM_SORTED_PHONEBOOK_BASE_H -#define GSM_SORTED_PHONEBOOK_BASE_H - -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // a single entry in a phonebook - - class PhonebookEntryBase : public RefBase - { - protected: - bool _changed; // set to true if _telephone or _text changed - string _telephone; - string _text; - int _index; // my position in the phonebook - // == -1 if not used (can only happen if - // phonebook is read from file) - bool _useIndex; // compare indices in operator==, - // use _index for inserting into - // Phonebook - - public: - PhonebookEntryBase() : - _changed(false), _index(-1), _useIndex(false) {} - - // convenience constructor - PhonebookEntryBase(string telephone, string text, int index = -1) : - _changed(false), _telephone(telephone), _text(text), - _index(index), _useIndex(false) {} - - // accessor functions - virtual void set(string telephone, string text, int index = -1, - bool useIndex = false) - throw(GsmException); - virtual string text() const throw(GsmException); - virtual string telephone() const throw(GsmException); - - // return true if both telephone and text are empty - bool empty() const throw(GsmException); - - // set to true if operator== should compare the _index as well - void setUseIndex(bool useIndex) - {_useIndex = useIndex;} - bool useIndex() const {return _useIndex;} - - // equality operator - // if one of the operands has _useIndex == true - // takes _index and e._index into account - bool operator==(const PhonebookEntryBase &e) const; - - // return index - int index() const {return _index;} - - // return true if entry changed - bool changed() const {return _changed;} - - // reset the changed status (ie. if synced to file) - void resetChanged() {_changed = false;} - - // return deep copy of this entry - virtual Ref clone(); - - PhonebookEntryBase(const PhonebookEntryBase &e) throw(GsmException); - PhonebookEntryBase &operator=(const PhonebookEntryBase &e) - throw(GsmException); - - virtual ~PhonebookEntryBase() {} - }; - - // MapKey for sortedPhonebook - - class SortedPhonebookBase; - typedef MapKey PhoneMapKey; - - // maps text or telephone to entry - - typedef multimap PhonebookMap; - - // iterator for SortedPhonebook that hides the "second" member of the map - - typedef PhonebookMap::iterator PhonebookMapIterator; - class SortedPhonebookIterator : public PhonebookMapIterator - { - public: - SortedPhonebookIterator() {} - SortedPhonebookIterator(PhonebookMap::iterator i) : - PhonebookMapIterator(i) {} - - PhonebookEntryBase &operator*() - {return *((PhonebookMap::iterator)*this)->second;} - - PhonebookEntryBase *operator->() - {return ((PhonebookMap::iterator)*this)->second;} - }; - - // virtual base class for sorted phonebooks - - class SortedPhonebookBase : public RefBase, public NoCopy - { - public: - // iterator defs - typedef SortedPhonebookIterator iterator; - typedef PhonebookMap::size_type size_type; - - // return maximum telephone number length - virtual unsigned int getMaxTelephoneLen() const = 0; - - // return maximum entry description length - virtual unsigned int getMaxTextLen() const = 0; - - // handle sorting - virtual void setSortOrder(SortOrder newOrder) = 0; - virtual SortOrder sortOrder() const = 0; - - // phonebook traversal commands - // these are suitable to use stdc++ lib algorithms and iterators - - // traversal commands - virtual iterator begin() = 0; - virtual iterator end() = 0; - - // the size macros return the number of used entries - virtual int size() const = 0; - virtual int max_size() const = 0; - virtual int capacity() const = 0; - virtual bool empty() const throw(GsmException) = 0; - - // existing iterators remain valid after an insert or erase operation - - // return position - // insert only writes to available positions - // warning: insert fails silently if size() == max_size() - virtual iterator insert(const PhonebookEntryBase& x) throw(GsmException) - = 0; - virtual iterator insert(iterator position, const PhonebookEntryBase& x) - throw(GsmException) = 0; - - virtual PhonebookMap::size_type count(string &key) = 0; - virtual iterator find(string &key) = 0; - virtual iterator lower_bound(string &key) = 0; - virtual iterator upper_bound(string &key) = 0; - virtual pair equal_range(string &key) = 0; - - virtual PhonebookMap::size_type count(int key) = 0; - virtual iterator find(int key) = 0; - virtual iterator lower_bound(int key) = 0; - virtual iterator upper_bound(int key) = 0; - virtual pair equal_range(int key) = 0; - - virtual size_type erase(string &key) throw(GsmException) = 0; - virtual size_type erase(int key) throw(GsmException) = 0; - virtual void erase(iterator position) throw(GsmException) = 0; - virtual void erase(iterator first, iterator last) throw(GsmException) = 0; - virtual void clear() throw(GsmException) = 0; - - // synchronize SortedPhonebookBase with storage - virtual void sync() throw(GsmException) = 0; - - virtual ~SortedPhonebookBase() {} - }; - - typedef Ref SortedPhonebookRef; - - - // base factory class for custom backends - class CustomPhonebookFactory - { - public: - // return sorted phonebook object given the source specification - // (eg. database name, URL, etc.) - virtual SortedPhonebookRef createPhonebook(string source) - throw(GsmException) = 0; - }; - - // registry for custom backends - - class CustomPhonebookRegistry - { - // registered factories - static map *_factoryList; - - public: - // register a factory class for a specific backend - // (case does not matter for backend name) - static void registerCustomPhonebookFactory(string backendName, - CustomPhonebookFactory *factory) - throw(GsmException); - - - // return a phonebook object given the backend name and the source - // specification - static SortedPhonebookRef - createPhonebook(string backendName, string source) throw(GsmException); - }; - -}; - -#endif // GSM_SORTED_PHONEBOOK_BASE_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc deleted file mode 100644 index 7ca9f9f160..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc +++ /dev/null @@ -1,499 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sorted_sms_store.cc -// * -// * Purpose: Sorted SMS store (residing in files or in the ME) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 14.8.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#ifdef HAVE_NETINET_IN_H -#include -#endif - -using namespace std; -using namespace gsmlib; - -// SMS message file format: -// version number of file format, unsigned short int, 2 bytes in network byte -// order -// then comes the message: -// 1. length of PDU (see 4. below): unsigned short int, -// 2 bytes in network byte order -// 2. index of message, unique for this file: unsigned long, -// 4 bytes in network byte order -// 3. MessageType (1 byte), any of: -// 0 SMS_DELIVER -// 1 SMS_SUBMIT -// 2 SMS_STATUS_REPORT -// 4. PDU in hexadecimal format - -static const unsigned short int SMS_STORE_FILE_FORMAT_VERSION = 1; - -// SortedSMSStore members - -// aux function read bytes with error handling -// return false if EOF -static bool readnbytes(string &filename, - istream &is, int len, char *buf, - bool eofIsError = true) throw(GsmException) -{ - is.read(buf, len); - if (is.bad() || (is.eof() && eofIsError)) - throw GsmException(stringPrintf(_("error reading from file '%s'"), - (filename == "" ? _("") : - filename.c_str())), OSError); - return ! is.eof(); -} - -// aux function write bytes with error handling -static void writenbytes(string &filename, ostream &os, - int len, const char *buf) throw(GsmException) -{ - os.write(buf, len); - if (os.bad()) - throw GsmException(stringPrintf(_("error writing to file '%s'"), - (filename == "" ? _("") : - filename.c_str())), OSError); -} - -void SortedSMSStore::readSMSFile(istream &pbs, string filename) - throw(GsmException) -{ - char numberBuf[4]; - - // check the version - try - { - readnbytes(filename, pbs, 2, numberBuf); - } - catch (GsmException &ge) - { - // ignore error, file might be empty initially - } - unsigned_int_2 version = ntohs(*((unsigned_int_2*)numberBuf)); - if (! pbs.eof() && version != SMS_STORE_FILE_FORMAT_VERSION) - throw GsmException(stringPrintf(_("file '%s' has wrong version"), - filename.c_str()), ParameterError); - - // read entries - while (1) - { - // read PDU length and exit loop if EOF - if (! readnbytes(filename, pbs, 2, numberBuf, false)) - break; - - unsigned_int_2 pduLen = ntohs(*((unsigned_int_2*)numberBuf)); - if (pduLen > 500) - throw GsmException(stringPrintf(_("corrupt SMS store file '%s'"), - filename.c_str()), ParameterError); - - // read reserved integer field of message (was formerly index) - readnbytes(filename, pbs, 4, numberBuf); - //unsigned_int_4 reserved = ntohl(*((unsigned_int_4*)numberBuf)); - - // read message type - readnbytes(filename, pbs, 1, numberBuf); - SMSMessage::MessageType messageType = - (SMSMessage::MessageType)numberBuf[0]; - if (messageType > 2) - throw GsmException(stringPrintf(_("corrupt SMS store file '%s'"), - filename.c_str()), ParameterError); - - char *pduBuf = (char*)alloca(sizeof(char) * pduLen); - - // read pdu - readnbytes(filename, pbs, pduLen, pduBuf); - SMSMessageRef message = - SMSMessage::decode(string(pduBuf, pduLen), - (messageType != SMSMessage::SMS_SUBMIT)); - - SMSStoreEntry *newEntry = new SMSStoreEntry(message, _nextIndex++); - _sortedSMSStore.insert( - SMSStoreMap::value_type( - SMSMapKey(*this, message->serviceCentreTimestamp()), - newEntry) - ); - } -} - -void SortedSMSStore::sync(bool fromDestructor) throw(GsmException) -{ - if (_fromFile && _changed) - { - checkReadonly(); - - // if writing to stdout and not called from destructor ignore - // (avoids writing to stdout multiple times) - if (_filename == "" && ! fromDestructor) return; - - // create backup file - but only once - if (! _madeBackupFile && _filename != "") // don't make backup of stdout - { - renameToBackupFile(_filename); - _madeBackupFile = true; - } - - // open stream - ostream *pbs = NULL; - try - { - if (_filename == "") - pbs = &cout; - else - pbs = new ofstream(_filename.c_str(), ios::out | ios::binary); - - if (pbs->bad()) - throw GsmException( - stringPrintf(_("error opening file '%s' for writing"), - (_filename == "" ? _("") : - _filename.c_str())), - OSError); - - // write version number - unsigned_int_2 version = htons(SMS_STORE_FILE_FORMAT_VERSION); - writenbytes(_filename, *pbs, 2, (char*)&version); - - // and write the entries - for (SMSStoreMap::iterator i = _sortedSMSStore.begin(); - i != _sortedSMSStore.end(); ++i) - { - // create PDU and write length - string pdu = i->second->message()->encode(); - unsigned_int_2 pduLen = htons(pdu.length()); - writenbytes(_filename, *pbs, 2, (char*)&pduLen); - - // write reserved field (was formerly index) - unsigned_int_4 reserved = htonl(0); - writenbytes(_filename, *pbs, 4, (char*)&reserved); - - // write message type - char messageType = i->second->message()->messageType(); - writenbytes(_filename, *pbs, 1, (char*)&messageType); - - // write PDU - writenbytes(_filename, *pbs, pdu.length(), pdu.data()); - } - } - catch(GsmException &e) - { - if (pbs != &cout) delete pbs; - throw; - } - // close file - if (pbs != &cout) delete pbs; - - _changed = false; - } -} - -void SortedSMSStore::checkReadonly() throw(GsmException) -{ - if (_readonly) throw GsmException( - _("attempt to change SMS store read from "), - ParameterError); -} - -SortedSMSStore::SortedSMSStore(string filename) throw(GsmException) : - _changed(false), _fromFile(true), _madeBackupFile(false), - _sortOrder(ByDate), _readonly(false), _filename(filename), _nextIndex(0) -{ - // open the file - ifstream pbs(filename.c_str(), ios::in | ios::binary); - if (pbs.bad()) - throw GsmException(stringPrintf(_("cannot open file '%s'"), - filename.c_str()), OSError); - // and read the file - readSMSFile(pbs, filename); -} - -SortedSMSStore::SortedSMSStore(bool fromStdin) throw(GsmException) : - _changed(false), _fromFile(true), _madeBackupFile(false), - _sortOrder(ByDate), _readonly(fromStdin), _nextIndex(0) - // _filename is "" - this means stdout -{ - // read from stdin - if (fromStdin) - readSMSFile(cin, (string)_("")); -} - -SortedSMSStore::SortedSMSStore(SMSStoreRef meSMSStore) - throw(GsmException) : - _changed(false), _fromFile(false), _madeBackupFile(false), - _sortOrder(ByDate), _readonly(false), _meSMSStore(meSMSStore) -{ - // It is necessary to count the entries read because - // the maximum index into the SMS store may be larger than smsStore.size() - int entriesRead = 0; - reportProgress(0, _meSMSStore->size()); - - for (int i = 0;; ++i) - { - if (entriesRead == _meSMSStore->size()) - break; // ready - if (! _meSMSStore()[i].empty()) - { - _sortedSMSStore.insert( - SMSStoreMap::value_type( - SMSMapKey(*this, - _meSMSStore()[i].message()->serviceCentreTimestamp()), - &_meSMSStore()[i]) - ); - ++entriesRead; - reportProgress(entriesRead); - } - } -} - -void SortedSMSStore::setSortOrder(SortOrder newOrder) -{ - if (_sortOrder == newOrder) return; // nothing to be done - - SMSStoreMap savedSMSStore = _sortedSMSStore; - _sortedSMSStore = SMSStoreMap(); - _sortOrder = newOrder; - - switch (newOrder) - { - case ByIndex: - { - for (SMSStoreMap::iterator i = savedSMSStore.begin(); - i != savedSMSStore.end(); ++i) - _sortedSMSStore.insert( - SMSStoreMap::value_type(SMSMapKey(*this, (i->second->index())), - i->second)); - break; - } - case ByDate: - { - for (SMSStoreMap::iterator i = savedSMSStore.begin(); - i != savedSMSStore.end(); ++i) - _sortedSMSStore.insert( - SMSStoreMap::value_type( - SMSMapKey(*this, (i->second->message()->serviceCentreTimestamp())), - i->second)); - break; - } - case ByAddress: - { - for (SMSStoreMap::iterator i = savedSMSStore.begin(); - i != savedSMSStore.end(); ++i) - _sortedSMSStore.insert( - SMSStoreMap::value_type( - SMSMapKey(*this, (i->second->message()->address())), - i->second)); - break; - } - case ByType: - { - for (SMSStoreMap::iterator i = savedSMSStore.begin(); - i != savedSMSStore.end(); ++i) - _sortedSMSStore.insert( - SMSStoreMap::value_type( - SMSMapKey(*this, (i->second->message()->messageType())), - i->second)); - break; - } - default: - assert(0); - break; - } -} - -int SortedSMSStore::max_size() const -{ - if (_fromFile) - return _sortedSMSStore.max_size(); - else - return _meSMSStore->max_size(); -} - -int SortedSMSStore::capacity() const -{ - if (_fromFile) - return _sortedSMSStore.max_size(); - else - return _meSMSStore->capacity(); -} - -SortedSMSStore::iterator -SortedSMSStore::insert(const SMSStoreEntry& x) throw(GsmException) -{ - checkReadonly(); - _changed = true; - SMSStoreEntry *newEntry; - - if (_fromFile) - newEntry = new SMSStoreEntry(x.message(), _nextIndex++); - else - { - SMSStoreEntry newMEEntry(x.message()); - newEntry = _meSMSStore->insert(newMEEntry); - } - - switch (_sortOrder) - { - case ByIndex: - return - _sortedSMSStore. - insert(SMSStoreMap::value_type(SMSMapKey(*this, newEntry->index()), - newEntry)); - break; - case ByDate: - return - _sortedSMSStore. - insert(SMSStoreMap::value_type( - SMSMapKey(*this, newEntry->message()->serviceCentreTimestamp()), - newEntry)); - break; - case ByAddress: - return - _sortedSMSStore. - insert(SMSStoreMap::value_type( - SMSMapKey(*this, newEntry->message()->address()), - newEntry)); - break; - case ByType: - return - _sortedSMSStore. - insert(SMSStoreMap::value_type( - SMSMapKey(*this, newEntry->message()->messageType()), - newEntry)); - break; - default: - assert(0); - break; - } - return SortedSMSStore::iterator(); -} - -SortedSMSStore::iterator -SortedSMSStore::insert(iterator position, const SMSStoreEntry& x) - throw(GsmException) -{ - return insert(x); -} - -SortedSMSStore::size_type SortedSMSStore::erase(Address &key) - throw(GsmException) -{ - assert(_sortOrder == ByAddress); - - SMSMapKey mapKey(*this, key); - - // deallocate memory or remove from underlying ME SMS store - for (SMSStoreMap::iterator i = _sortedSMSStore.find(mapKey); - i != _sortedSMSStore.end() && i->first == mapKey; ++i) - { - checkReadonly(); - _changed = true; - if (_fromFile) - delete i->second; - else - _meSMSStore->erase((SMSStore::iterator)i->second); - } - - return _sortedSMSStore.erase(mapKey); -} - -SortedSMSStore::size_type SortedSMSStore::erase(int key) - throw(GsmException) -{ - assert(_sortOrder == ByIndex || _sortOrder == ByType); - - SMSMapKey mapKey(*this, key); - - // deallocate memory or remove from underlying ME SMS store - for (SMSStoreMap::iterator i = _sortedSMSStore.find(mapKey); - i != _sortedSMSStore.end() && i->first == mapKey; ++i) - { - checkReadonly(); - _changed = true; - if (_fromFile) - delete i->second; - else - _meSMSStore->erase((SMSStore::iterator)i->second); - } - - return _sortedSMSStore.erase(mapKey); -} - -SortedSMSStore::size_type SortedSMSStore::erase(Timestamp &key) - throw(GsmException) -{ - assert(_sortOrder == ByDate); - - SMSMapKey mapKey(*this, key); - - // deallocate memory or remove from underlying ME SMS store - for (SMSStoreMap::iterator i = _sortedSMSStore.find(mapKey); - i != _sortedSMSStore.end() && i->first == mapKey; ++i) - { - checkReadonly(); - _changed = true; - if (_fromFile) - delete i->second; - else - _meSMSStore->erase((SMSStore::iterator)i->second); - } - - return _sortedSMSStore.erase(mapKey); -} - -void SortedSMSStore::erase(iterator position) - throw(GsmException) -{ - checkReadonly(); - _changed = true; - // deallocate memory or remove from underlying ME SMS store - if (_fromFile) - delete ((SMSStoreMap::iterator)position)->second; - else - _meSMSStore->erase((SMSStore::iterator) - ((SMSStoreMap::iterator)position)->second); - _sortedSMSStore.erase(position); -} - -void SortedSMSStore::erase(iterator first, iterator last) - throw(GsmException) -{ - checkReadonly(); - _changed = true; - for (SMSStoreMap::iterator i = first; i != last; ++i) - if (_fromFile) - delete i->second; - else - _meSMSStore->erase((SMSStore::iterator)i->second); - _sortedSMSStore.erase(first, last); -} - -void SortedSMSStore::clear() throw(GsmException) -{ - checkReadonly(); - _changed = true; - for (iterator i = begin(); i != end(); i++) - erase(i); -} - -SortedSMSStore::~SortedSMSStore() -{ - if (_fromFile) - { - sync(true); - for (SMSStoreMap::iterator i = _sortedSMSStore.begin(); - i != _sortedSMSStore.end(); ++i) - delete i->second; - } -} - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h deleted file mode 100644 index 126c5856bd..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h +++ /dev/null @@ -1,217 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sorted_sms_store.h -// * -// * Purpose: Sorted SMS store (residing in files or in the ME) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 14.8.1999 -// ************************************************************************* - -#ifndef GSM_SORTED_SMS_STORE_H -#define GSM_SORTED_SMS_STORE_H - -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - // MapKey for SortedSMSStore - - class SortedSMSStore; - typedef MapKey SMSMapKey; - - // maps key (see SortedSMSStore::SortOrder) to entry - - typedef multimap SMSStoreMap; - - // iterator for SortedSMSStore that hides the "second" member of the map - - typedef SMSStoreMap::iterator SMSStoreMapIterator; - class SortedSMSStoreIterator : public SMSStoreMapIterator - { - public: - SortedSMSStoreIterator() {} - SortedSMSStoreIterator(SMSStoreMap::iterator i) : - SMSStoreMapIterator(i) {} - - SMSStoreEntry &operator*() - {return *((SMSStoreMap::iterator)*this)->second;} - - SMSStoreEntry *operator->() - {return ((SMSStoreMap::iterator)*this)->second;} - }; - - // The class SortedSMSStore makes the SMS store more manageable: - // - empty slots in the ME phonebook are hidden by the API - // - the class transparently handles stores that reside in files - - class SortedSMSStore : public RefBase, public NoCopy - { - private: - - bool _changed; // true if file has changed after last save - bool _fromFile; // true if store read from file - bool _madeBackupFile; // true if backup file was created - SortOrder _sortOrder; // sort order of the _sortedSMSStore - // (default is ByDate) - bool _readonly; // =true if read from stdin - string _filename; // name of the file if store from file - SMSStoreMap _sortedSMSStore; // store from file - SMSStoreRef _meSMSStore; // store if from ME - - unsigned int _nextIndex; // next index to use for file-based store - - // initial read of SMS file - void readSMSFile(istream &pbs, string filename) throw(GsmException); - - // synchronize SortedSMSStore with file (no action if in ME) - void sync(bool fromDestructor) throw(GsmException); - - // throw an exception if _readonly is set - void checkReadonly() throw(GsmException); - - public: - // iterator defs - typedef SortedSMSStoreIterator iterator; - typedef SMSStoreMap::size_type size_type; - - // constructor for file-based store - // read from file - SortedSMSStore(string filename) throw(GsmException); - // read from stdin or start empty and write to stdout - SortedSMSStore(bool fromStdin) throw(GsmException); - - // constructor for ME-based store - SortedSMSStore(SMSStoreRef meSMSStore) throw(GsmException); - - // handle sorting - void setSortOrder(SortOrder newOrder); - SortOrder sortOrder() const {return _sortOrder;} - - // store traversal commands - // these are suitable to use stdc++ lib algorithms and iterators - - // traversal commands - iterator begin() {return _sortedSMSStore.begin();} - iterator end() {return _sortedSMSStore.end();} - - // the size macros return the number of used entries - int size() const {return _sortedSMSStore.size();} - int max_size() const; - int capacity() const; - bool empty() const throw(GsmException) {return size() == 0;} - - // existing iterators may be invalidated after an insert operation - // return position - // insert only writes to available positions - // warning: insert fails silently if size() == max_size() - iterator insert(const SMSStoreEntry& x) throw(GsmException); - iterator insert(iterator position, const SMSStoreEntry& x) - throw(GsmException); - - SMSStoreMap::size_type count(Address &key) - { - assert(_sortOrder == ByAddress); - return _sortedSMSStore.count(SMSMapKey(*this, key)); - } - iterator find(Address &key) - { - assert(_sortOrder == ByAddress); - return _sortedSMSStore.find(SMSMapKey(*this, key)); - } - iterator lower_bound(Address &key) - { - assert(_sortOrder == ByAddress); - return _sortedSMSStore.lower_bound(SMSMapKey(*this, key)); - } - iterator upper_bound(Address &key) - { - assert(_sortOrder == ByAddress); - return _sortedSMSStore.upper_bound(SMSMapKey(*this, key)); - } - pair equal_range(Address &key) - { - assert(_sortOrder == ByAddress); - return _sortedSMSStore.equal_range(SMSMapKey(*this, key)); - } - - SMSStoreMap::size_type count(Timestamp &key) - { - assert(_sortOrder == ByDate); - return _sortedSMSStore.count(SMSMapKey(*this, key)); - } - iterator find(Timestamp &key) - { - assert(_sortOrder == ByDate); - return _sortedSMSStore.find(SMSMapKey(*this, key)); - } - iterator lower_bound(Timestamp &key) - { - assert(_sortOrder == ByDate); - return _sortedSMSStore.lower_bound(SMSMapKey(*this, key)); - } - iterator upper_bound(Timestamp &key) - { - assert(_sortOrder == ByDate); - return _sortedSMSStore.upper_bound(SMSMapKey(*this, key)); - } - pair equal_range(Timestamp &key) - { - assert(_sortOrder == ByDate); - return _sortedSMSStore.equal_range(SMSMapKey(*this, key)); - } - - SMSStoreMap::size_type count(int key) - { - assert(_sortOrder == ByIndex || _sortOrder == ByType); - return _sortedSMSStore.count(SMSMapKey(*this, key)); - } - iterator find(int key) - { - assert(_sortOrder == ByIndex || _sortOrder == ByType); - return _sortedSMSStore.find(SMSMapKey(*this, key)); - } - iterator lower_bound(int key) - { - assert(_sortOrder == ByIndex || _sortOrder == ByType); - return _sortedSMSStore.lower_bound(SMSMapKey(*this, key)); - } - iterator upper_bound(int key) - { - assert(_sortOrder == ByIndex || _sortOrder == ByType); - return _sortedSMSStore.upper_bound(SMSMapKey(*this, key)); - } - pair equal_range(int key) - { - assert(_sortOrder == ByIndex || _sortOrder == ByType); - return _sortedSMSStore.equal_range(SMSMapKey(*this, key)); - } - - size_type erase(Address &key) throw(GsmException); - size_type erase(int key) throw(GsmException); - size_type erase(Timestamp &key) throw(GsmException); - void erase(iterator position) throw(GsmException); - void erase(iterator first, iterator last) throw(GsmException); - void clear() throw(GsmException); - - // synchronize SortedPhonebook with file (no action if in ME) - void sync() throw(GsmException) {sync(false);} - - // destructor - // writes back change to file if store is in file - ~SortedSMSStore(); - }; - - typedef Ref SortedSMSStoreRef; -}; - -#endif // GSM_SORTED_SMS_STORE_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h deleted file mode 100644 index 864fcf99ff..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h +++ /dev/null @@ -1,83 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_sysdep.h -// * -// * Purpose: Some magic to make alloca work on different platforms plus -// * other system-dependent stuff -// * -// * Warning: Only include this header from gsmlib .cc-files -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 28.10.1999 -// ************************************************************************* - -#ifndef GSM_SYSDEP_H -#define GSM_SYSDEP_H - -#ifdef HAVE_CONFIG_H -#include -#endif - -extern "C" { - - // this is mostly taken from the autoconf documentation (WIN32 added) - -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifdef WIN32 -# include -# define alloca _alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -# endif -#endif - -} - -// Windows-specific stuff -#if defined(WIN32) && ! defined(__GNUC__) -#define NOMINMAX -#include -#include - -#ifdef _MSC_VER -#define min __min -#endif - -#define S_ISREG(mode) (((mode) & _S_IFREG) == _S_IFREG) -#define S_ISCHR(mode) (((mode) & _S_IFCHR) == _S_IFCHR) - -#define read _read -#endif - -// define common data types with fixed sizes - -#if SIZEOF_UNSIGNED_SHORT_INT == 2 - typedef unsigned short int unsigned_int_2; -#else -#error "no suitable 2 byte unsigned int available" -#endif -#if SIZEOF_UNSIGNED_LONG_INT == 4 - typedef unsigned long int unsigned_int_4; -#else -#if SIZEOF_UNSIGNED_INT == 4 - typedef unsigned int unsigned_int_4; -#else -#error "no suitable 4 byte unsigned int available" -#endif -#endif - -#endif // GSM_SYSDEP_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc deleted file mode 100644 index feea2a24d9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc +++ /dev/null @@ -1,456 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_unix_port.cc -// * -// * Purpose: UNIX serial port implementation -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 10.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -static const int holdoff[] = {2000000, 1000000, 400000}; -static const int holdoffArraySize = sizeof(holdoff)/sizeof(int); - -// alarm handling for socket read/write -// the timerMtx is necessary since several threads cannot use the -// timer indepently of each other - -static pthread_mutex_t timerMtx = PTHREAD_MUTEX_INITIALIZER; - -// for non-GNU systems, define alarm() -#ifndef HAVE_ALARM -unsigned int alarm(unsigned int seconds) -{ - struct itimerval old, newt; - newt.it_interval.tv_usec = 0; - newt.it_interval.tv_sec = 0; - newt.it_value.tv_usec = 0; - newt.it_value.tv_sec = (long int)seconds; - if (setitimer(ITIMER_REAL, &newt, &old) < 0) - return 0; - else - return old.it_value.tv_sec; -} -#endif - -// this routine is called in case of a timeout -static void catchAlarm(int) -{ - // do nothing -} - -// start timer -static void startTimer() -{ - pthread_mutex_lock(&timerMtx); - struct sigaction newAction; - newAction.sa_handler = catchAlarm; - newAction.sa_flags = 0; - sigaction(SIGALRM, &newAction, NULL); - alarm(1); -} - -// reset timer -static void stopTimer() -{ - alarm(0); - sigaction(SIGALRM, NULL, NULL); - pthread_mutex_unlock(&timerMtx); -} - -// UnixSerialPort members - -void UnixSerialPort::throwModemException(string message) throw(GsmException) -{ - ostrstream os; - os << message << " (errno: " << errno << "/" << strerror(errno) << ")" - << ends; - char *ss = os.str(); - string s(ss); - delete[] ss; - throw GsmException(s, OSError, errno); -} - -void UnixSerialPort::putBack(unsigned char c) -{ - assert(_oldChar == -1); - _oldChar = c; -} - -int UnixSerialPort::readByte() throw(GsmException) -{ - if (_oldChar != -1) - { - int result = _oldChar; - _oldChar = -1; - return result; - } - - unsigned char c; - int timeElapsed = 0; - struct timeval oneSecond; - bool readDone = false; - - while (! readDone && timeElapsed < _timeoutVal) - { - if (interrupted()) - throwModemException(_("interrupted when reading from TA")); - - // setup fd_set data structure for select() - fd_set fdSet; - oneSecond.tv_sec = 1; - oneSecond.tv_usec = 0; - FD_ZERO(&fdSet); - FD_SET(_fd, &fdSet); - - switch (select(FD_SETSIZE, &fdSet, NULL, NULL, &oneSecond)) - { - case 1: - { - int res = read(_fd, &c, 1); - if (res != 1) - throwModemException(_("end of file when reading from TA")); - else - readDone = true; - break; - } - case 0: - ++timeElapsed; - break; - default: - if (errno != EINTR) - throwModemException(_("reading from TA")); - break; - } - } - if (! readDone) - throwModemException(_("timeout when reading from TA")); - -#ifndef NDEBUG - if (debugLevel() >= 2) - { - // some useful debugging code - if (c == LF) - cerr << ""; - else if (c == CR) - cerr << ""; - else cerr << "<'" << (char) c << "'>"; - cerr.flush(); - } -#endif - return c; -} - -UnixSerialPort::UnixSerialPort(string device, speed_t lineSpeed, - string initString, bool swHandshake) - throw(GsmException) : - _oldChar(-1), _timeoutVal(TIMEOUT_SECS) -{ - struct termios t; - - // open device - _fd = open(device.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK); - if (_fd == -1) - throwModemException(stringPrintf(_("opening device '%s'"), - device.c_str())); - - // switch off non-blocking mode - int fdFlags; - if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) { - close(_fd); - throwModemException(_("getting file status flags failed")); - } - fdFlags &= ~O_NONBLOCK; - if (fcntl(_fd, F_SETFL, fdFlags) == -1) { - close(_fd); - throwModemException(_("switching of non-blocking mode failed")); - } - - long int saveTimeoutVal = _timeoutVal; - _timeoutVal = 3; - int initTries = holdoffArraySize; - while (initTries-- > 0) - { - // flush all pending output - tcflush(_fd, TCOFLUSH); - - // toggle DTR to reset modem - int mctl = TIOCM_DTR; - if (ioctl(_fd, TIOCMBIC, &mctl) < 0) { - close(_fd); - throwModemException(_("clearing DTR failed")); - } - // the waiting time for DTR toggling is increased with each loop - usleep(holdoff[initTries]); - if (ioctl(_fd, TIOCMBIS, &mctl) < 0) { - close(_fd); - throwModemException(_("setting DTR failed")); - } - // get line modes - if (tcgetattr(_fd, &t) < 0) { - close(_fd); - throwModemException(stringPrintf(_("tcgetattr device '%s'"), - device.c_str())); - } - - // set line speed - cfsetispeed(&t, lineSpeed); - cfsetospeed(&t, lineSpeed); - - // set the device to a sane state - t.c_iflag |= IGNPAR | (swHandshake ? IXON | IXOFF : 0); - t.c_iflag &= ~(INPCK | ISTRIP | IMAXBEL | - (swHandshake ? 0 : IXON | IXOFF) - | IXANY | IGNCR | ICRNL | IMAXBEL | INLCR | IGNBRK); - t.c_oflag &= ~(OPOST); - // be careful, only touch "known" flags - t.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | - (swHandshake ? CRTSCTS : 0 )); - t.c_cflag |= CS8 | CREAD | HUPCL | (swHandshake ? 0 : CRTSCTS) | CLOCAL; - t.c_lflag &= ~(ECHO | ECHOE | ECHOPRT | ECHOK | ECHOKE | ECHONL | - ECHOCTL | ISIG | IEXTEN | TOSTOP | FLUSHO | ICANON); - t.c_lflag |= NOFLSH; - t.c_cc[VMIN] = 1; - t.c_cc[VTIME] = 0; - - t.c_cc[VSUSP] = 0; - - // write back - if(tcsetattr (_fd, TCSANOW, &t) < 0) { - close(_fd); - throwModemException(stringPrintf(_("tcsetattr device '%s'"), - device.c_str())); - } - // the waiting time for writing to the ME/TA is increased with each loop - usleep(holdoff[initTries]); - - // flush all pending input - tcflush(_fd, TCIFLUSH); - - try - { - // reset modem - putLine("ATZ"); - bool foundOK = false; - int readTries = 5; - while (readTries-- > 0) - { - // for the first call getLine() waits only 3 seconds - // because of _timeoutVal = 3 - string s = getLine(); - if (s.find("OK") != string::npos || - s.find("CABLE: GSM") != string::npos) - { - foundOK = true; - readTries = 0; // found OK, exit loop - } - else if (s.find("ERROR") != string::npos) - readTries = 0; // error, exit loop - } - - // set getLine/putLine timeout back to old value - _timeoutVal = saveTimeoutVal; - - if (foundOK) - { - // init modem - readTries = 5; - putLine("AT" + initString); - while (readTries-- > 0) - { - string s = getLine(); - if (s.find("OK") != string::npos || - s.find("CABLE: GSM") != string::npos) - return; // found OK, return - } - } - } - catch (GsmException &e) - { - _timeoutVal = saveTimeoutVal; - if (initTries == 0) { - close(_fd); - throw e; - } - } - } - // no response after 3 tries - close(_fd); - throw GsmException(stringPrintf(_("reset modem failed '%s'"), - device.c_str()), OtherError); -} - -string UnixSerialPort::getLine() throw(GsmException) -{ - string result; - int c; - while ((c = readByte()) >= 0) - { - while (c == CR) - { - c = readByte(); - } - if (c == LF) - break; - result += c; - } - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "<-- " << result << endl; -#endif - - return result; -} - -void UnixSerialPort::putLine(string line, - bool carriageReturn) throw(GsmException) -{ -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "--> " << line << endl; -#endif - - if (carriageReturn) line += CR; - const char *l = line.c_str(); - - int timeElapsed = 0; - struct timeval oneSecond; - - ssize_t bytesWritten = 0; - while (bytesWritten < (ssize_t)line.length() && timeElapsed < _timeoutVal) - { - if (interrupted()) - throwModemException(_("interrupted when writing to TA")); - - // setup fd_set data structure for select() - fd_set fdSet; - oneSecond.tv_sec = 1; - oneSecond.tv_usec = 0; - FD_ZERO(&fdSet); - FD_SET(_fd, &fdSet); - - switch (select(FD_SETSIZE, NULL, &fdSet, NULL, &oneSecond)) - { - case 1: - { - ssize_t bw = write(_fd, l + bytesWritten, line.length() - bytesWritten); - if (bw < 0) - throwModemException(_("writing to TA")); - bytesWritten += bw; - break; - } - case 0: - ++timeElapsed; - break; - default: - if (errno != EINTR) - throwModemException(_("writing to TA")); - break; - } - } - - while (timeElapsed < _timeoutVal) - { - if (interrupted()) - throwModemException(_("interrupted when writing to TA")); - startTimer(); - int res = tcdrain(_fd); // wait for output to be read by TA - stopTimer(); - if (res == 0) - break; - else - { - assert(errno == EINTR); - ++timeElapsed; - } - } - if (timeElapsed >= _timeoutVal) - throwModemException(_("timeout when writing to TA")); - - // echo CR LF must be removed by higher layer functions in gsm_at because - // in order to properly handle unsolicited result codes from the ME/TA -} - -bool UnixSerialPort::wait(GsmTime timeout) throw(GsmException) -{ - fd_set fds; - FD_ZERO(&fds); - FD_SET(_fd, &fds); - return select(FD_SETSIZE, &fds, NULL, NULL, timeout) != 0; -} - -// set timeout for read or write in seconds. -void UnixSerialPort::setTimeOut(unsigned int timeout) -{ - _timeoutVal = timeout; -} - -UnixSerialPort::~UnixSerialPort() -{ - if (_fd != -1) - close(_fd); -} - -speed_t gsmlib::baudRateStrToSpeed(string baudrate) throw(GsmException) -{ - if (baudrate == "300") - return B300; - else if (baudrate == "600") - return B600; - else if (baudrate == "1200") - return B1200; - else if (baudrate == "2400") - return B2400; - else if (baudrate == "4800") - return B4800; - else if (baudrate == "9600") - return B9600; - else if (baudrate == "19200") - return B19200; - else if (baudrate == "38400") - return B38400; -#ifdef B57600 - else if (baudrate == "57600") - return B57600; -#endif -#ifdef B115200 - else if (baudrate == "115200") - return B115200; -#endif -#ifdef B230400 - else if (baudrate == "230400") - return B230400; -#endif -#ifdef B460800 - else if (baudrate == "460800") - return B460800; -#endif - else - throw GsmException(stringPrintf(_("unknown baudrate '%s'"), - baudrate.c_str()), ParameterError); -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h deleted file mode 100644 index 29b1800b6c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h +++ /dev/null @@ -1,62 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_unix_port.h -// * -// * Purpose: UNIX serial port implementation -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.5.1999 -// ************************************************************************* - -#ifndef GSM_UNIX_SERIAL_H -#define GSM_UNIX_SERIAL_H - -#include -#include -#include -#include -#include -#include - -using namespace std; - -namespace gsmlib -{ - class UnixSerialPort : public Port - { - private: - int _fd; // file descriptor for device - int _debug; // debug level (set by environment variable - // GSM_DEBUG - int _oldChar; // character set by putBack() (-1 == none) - long int _timeoutVal; // timeout for getLine/readByte - - // throw GsmException include UNIX errno - void throwModemException(string message) throw(GsmException); - - public: - // create Port given the UNIX device name - UnixSerialPort(string device, speed_t lineSpeed = DEFAULT_BAUD_RATE, - string initString = DEFAULT_INIT_STRING, - bool swHandshake = false) - throw(GsmException); - - // inherited from Port - void putBack(unsigned char c); - int readByte() throw(GsmException); - string getLine() throw(GsmException); - void putLine(string line, - bool carriageReturn = true) throw(GsmException); - bool wait(GsmTime timeout) throw(GsmException); - void setTimeOut(unsigned int timeout); - - virtual ~UnixSerialPort(); - }; - - // convert baudrate string ("300" .. "460800") to speed_t - extern speed_t baudRateStrToSpeed(string baudrate) throw(GsmException); -}; - -#endif // GSM_UNIX_SERIAL_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc deleted file mode 100644 index 3958908df7..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc +++ /dev/null @@ -1,379 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_util.h -// * -// * Purpose: Various utilities -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if !defined(HAVE_CONFIG_H) || defined(HAVE_UNISTD_H) -#include -#endif -#if !defined(HAVE_CONFIG_H) || defined(HAVE_MALLOC_H) -#include -#endif -#include -#ifdef HAVE_VSNPRINTF -// switch on vsnprintf() prototype in stdio.h -#define __USE_GNU -#define _GNU_SOURCE -#endif -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -// Latin-1 undefined character (code 172 (Latin-1 boolean not, "¬")) -const int NOP = 172; - -// GSM undefined character (code 16 (GSM Delta)) -const int GSM_NOP = 16; - -// conversion tables, Latin1 to GSM and GSM to Latin1 - -static unsigned char gsmToLatin1Table[] = -{ - // 0 '@', '£', '$', '¥', 'è', 'é', 'ù', 'ì', - '@', 163, '$', 165, 232, 233, 249, 236, - // 8 'ò', 'Ç', LF, 'Ø', 'ø', CR, 'Å', 'å', - 242, 199, 10, 216, 248, 13, 197, 229, - // 16 '¬', '_', '¬', '¬', '¬', '¬', '¬', '¬', - NOP, '_', NOP, NOP, NOP, NOP, NOP, NOP, - // 24 '¬', '¬', '¬', '¬', 'Æ', 'æ', 'ß', 'É', - NOP, NOP, NOP, NOP, 198, 230, 223, 201, - // 32 ' ', '!', '"', '#', '¤', '%', '&', ''', - ' ', '!', '"', '#', 164, '%', '&', '\'', - // 40 '(', ')', '*', '+', ',', '-', '.', '/', - '(', ')', '*', '+', ',', '-', '.', '/', - // 48 '0', '1', '2', '3', '4', '5', '6', '7', - '0', '1', '2', '3', '4', '5', '6', '7', - // 56 '8', '9', ':', ';', '<', '=', '>', '?', - '8', '9', ':', ';', '<', '=', '>', '?', - // 64 '¡', 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 161, 'A', 'B', 'C', 'D', 'E', 'F', 'G', - // 72 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - // 80 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', - // 88 'X', 'Y', 'Z', 'Ä', 'Ö', 'Ñ', 'Ü', '§', - 'X', 'Y', 'Z', 196, 214, 209, 220, 167, - // 96 '¿', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 191, 'a', 'b', 'c', 'd', 'e', 'f', 'g', - // 104 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', - // 112 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', - 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', - // 120 'x', 'y', 'z', 'ä', 'ö', 'ñ', 'ü', 'à', - 'x', 'y', 'z', 228, 246, 241, 252, 224 -}; - -static unsigned char latin1ToGsmTable[256]; - -static class Latin1ToGsmTableInit -{ -public: - Latin1ToGsmTableInit() - { - memset((void*)latin1ToGsmTable, GSM_NOP, 256); - for (int i = 0; i < 128; i++) - if (gsmToLatin1Table[i] != NOP) - latin1ToGsmTable[gsmToLatin1Table[i]] = i; - } -} latin1ToGsmTableInit; - -string gsmlib::gsmToLatin1(string s) -{ - string result(s.length(), 0); - for (string::size_type i = 0; i < s.length(); i++) - result[i] = (unsigned char)s[i] > 127 ? NOP : gsmToLatin1Table[s[i]]; - return result; -} - -string gsmlib::latin1ToGsm(string s) -{ - string result(s.length(), 0); - for (string::size_type i = 0; i < s.length(); i++) - result[i] = latin1ToGsmTable[(unsigned char)s[i]]; - return result; -} - -static unsigned char byteToHex[] = -{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'A', 'B', 'C', 'D', 'E', 'F'}; - -string gsmlib::bufToHex(const unsigned char *buf, unsigned long length) -{ - const unsigned char *bb = buf; - string result; - result.reserve(length * 2); - - for (unsigned long i = 0; i < length; ++i) - { - result += byteToHex[*bb >> 4]; - result += byteToHex[*bb++ & 0xf]; - } - return result; -} - -bool gsmlib::hexToBuf(const string &hexString, unsigned char *buf) -{ - if (hexString.length() % 2 != 0) - return false; - - unsigned char *bb = buf; - for (unsigned int i = 0; i < hexString.length(); i += 2) - { - unsigned char c = hexString[i]; - if (! isdigit(c) && ! ('a' <= c && c <= 'f') && ! ('A' <= c && c <= 'F')) - return false; - *bb = (isdigit(c) ? c - '0' : - ((('a' <= c && c <= 'f') ? c - 'a' : c - 'A')) + 10) << 4; - c = hexString[i + 1]; - if (! isdigit(c) && ! ('a' <= c && c <= 'f') && ! ('A' <= c && c <= 'F')) - return false; - *bb++ |= isdigit(c) ? c - '0' : - ((('a' <= c && c <= 'f') ? c - 'a' : c - 'A') + 10); - } - return true; -} - -string gsmlib::intToStr(int i) -{ - ostrstream os; - os << i << ends; - char *ss = os.str(); - string s(ss); - delete[] ss; - return s; -} - -string gsmlib::removeWhiteSpace(string s) -{ - string result; - for (unsigned int i = 0; i < s.length(); ++i) - if (! isspace(s[i])) - result += s[i]; - return result; -} - -#ifdef WIN32 - -// helper routine, find out whether filename starts with "COM" -static bool isCom(string filename) -{ - filename = removeWhiteSpace(lowercase(filename)); - // remove UNC begin - if ( filename.compare(0, 4, "\\\\.\\") == 0 ) - filename.erase(0, 4); - return filename.length() < 3 || filename.substr(0, 3) == "com"; -} -#endif - -bool gsmlib::isFile(string filename) -{ -#ifdef WIN32 - // stat does not work reliably under Win32 to indicate devices - if (isCom(filename)) - return false; -#endif - - struct stat statBuf; - int retries = 0; - - while (retries < 10) - { - if (stat(filename.c_str(), &statBuf) != 0) - throw GsmException( - stringPrintf(_("error when calling stat('%s') (errno: %d/%s)"), - filename.c_str(), errno, strerror(errno)), - OSError); - -#ifndef WIN32 - if (S_ISLNK(statBuf.st_mode)) - { - int size = 100; - while (1) - { - char *buffer = (char*)malloc(size); - int nchars = readlink(filename.c_str(), buffer, size); - if (nchars < size) - { - filename.assign(buffer, nchars); - free(buffer); - break; - } - free(buffer); - size *= 2; - } - ++retries; - } - else if (S_ISCHR(statBuf.st_mode)) - return false; - else -#endif - if (S_ISREG(statBuf.st_mode)) - return true; - else - throw GsmException( - stringPrintf(_("file '%s' is neither file nor character device"), - filename.c_str()), - ParameterError); - } - throw GsmException(_("maxmimum number of symbolic links exceeded"), - ParameterError); -} - -void gsmlib::renameToBackupFile(string filename) throw(GsmException) -{ - string backupFilename = filename + "~"; - unlink(backupFilename.c_str()); - if (rename(filename.c_str(), backupFilename.c_str()) < 0) - throw GsmException( - stringPrintf(_("error renaming '%s' to '%s'"), - filename.c_str(), backupFilename.c_str()), - OSError, errno); -} - -// NoCopy members - -#ifndef NDEBUG - -NoCopy::NoCopy(NoCopy &n) -{ - cerr << "ABORT: NoCopy copy constructor used" << endl; - abort(); -} - -NoCopy &NoCopy::operator=(NoCopy &n) -{ - cerr << "ABORT: NoCopy::operator= used" << endl; - abort(); -} - -#endif // NDEBUG - -string gsmlib::lowercase(string s) -{ - string result; - for (unsigned int i = 0; i < s.length(); ++i) - result += tolower(s[i]); - return result; -} - -int gsmlib::checkNumber(string s) throw(GsmException) -{ - for (unsigned int i = 0; i < s.length(); ++i) - if (! isdigit(s[i])) - throw GsmException(stringPrintf(_("expected number, got '%s'"), - s.c_str()), ParameterError); - int result; - istrstream is(s.c_str()); - is >> result; - return result; -} - -#ifdef HAVE_VSNPRINTF -string gsmlib::stringPrintf(const char *format, ...) -{ - va_list args; - va_start(args, format); - int size = 1024; - while (1) - { - char *buf = (char*)alloca(sizeof(char) * size); - int nchars = vsnprintf(buf, size, format, args); - if (nchars < size) - { - va_end(args); - return string(buf, nchars); - } - size *= 2; - } - return ""; -} - -#else -char gsmlib::__s[20000]; // buffer for the replacement macro -#endif // HAVE_VSNPRINTF - -#ifndef NDEBUG -int gsmlib::debugLevel() -{ - char *s = getenv("GSMLIB_DEBUG"); - if (s == NULL) return 0; - return checkNumber(s); -} -#endif - -// interrupt interface - -namespace gsmlib -{ - static InterruptBase *interruptObject = NULL; -} - -void gsmlib::setInterruptObject(InterruptBase *intObject) -{ - interruptObject = intObject; -} - -bool gsmlib::interrupted() -{ - return interruptObject != NULL && interruptObject->interrupted(); -} - -void gsmlib::checkTextAndTelephone(string text, string telephone) - throw(GsmException) -{ - if (text.find('"') != string::npos) - throw GsmException( - stringPrintf(_("text '%s' contains illegal character '\"'"), - text.c_str()), - ParameterError); - - for (unsigned int i = 0; i < telephone.length(); ++i) - if (! isdigit(telephone[i]) && ! (telephone[i] == '+') && - ! (telephone[i] == '*') && ! (telephone[i] == '#') && - ! (telephone[i] == 'p') && ! (telephone[i] == 'w') && - ! (telephone[i] == 'P') && ! (telephone[i] == 'W')) - throw GsmException( - stringPrintf(_("illegal character in telephone number '%s'"), - telephone.c_str()), ParameterError); -} - -// progress interface - -namespace gsmlib -{ - static ProgressBase *progressObject = NULL; -} - -void gsmlib::setProgressObject(ProgressBase *progObject) -{ - progressObject = progObject; -} - -void gsmlib::reportProgress(int part, int total) -{ - if (progressObject != NULL) - progressObject->reportProgress(part, total); -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h deleted file mode 100644 index 127ef05ce6..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h +++ /dev/null @@ -1,232 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_util.h -// * -// * Purpose: Various utilities -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 4.5.1999 -// ************************************************************************* - -#ifndef GSM_UTIL_H -#define GSM_UTIL_H - -#include -#include -#include -#ifndef WIN32 -#include -#endif -#include - -using namespace std; - -namespace gsmlib -{ - // time type - typedef struct timeval *GsmTime; - - // some constants - const char CR = 13; // ASCII carriage return - const char LF = 10; // ASCII line feed - - // common number formats - const unsigned int UnknownNumberFormat = 129; - const unsigned int InternationalNumberFormat = 145; - - // convert gsm to Latin-1 - // characters that have no counterpart in Latin-1 are converted to - // code 172 (Latin-1 boolean not, "¬") - string gsmToLatin1(string s); - - // convert Latin-1 to gsm - // characters that have no counterpart in GSM are converted to - // code 16 (GSM Delta) - string latin1ToGsm(string s); - - // convert byte buffer of length to hexadecimal string - string bufToHex(const unsigned char *buf, unsigned long length); - - // convert hexString to byte buffer, return false if no hexString - bool hexToBuf(const string &hexString, unsigned char *buf); - - // indicate that a value is not set - const int NOT_SET = -1; - - // An integer range - struct IntRange - { - int _high, _low; - - IntRange() : _high(NOT_SET), _low(NOT_SET) {} - }; - - // A valid integer range for a given parameter - struct ParameterRange - { - string _parameter; - IntRange _range; - }; - - // *** general-purpose pointer wrapper with reference counting - - class RefBase - { - private: - int _refCount; - - public: - RefBase() : _refCount(0) {} - int ref() {return _refCount++;} - int unref() {return --_refCount;} - int refCount() const {return _refCount;} - }; - - template - class Ref - { - private: - T *_rep; - public: - T *operator->() const {return _rep;} - T &operator()() {return *_rep;} - T *getptr() {return _rep;} - bool isnull() const {return _rep == (T*)NULL;} - Ref() : _rep((T*)NULL) {} - Ref(T *pp) : _rep(pp) {if (pp != (T*)NULL) pp->ref();} - Ref(const Ref &r); - Ref &operator=(const Ref &r); - ~Ref(); - bool operator==(const Ref &r) const - { - return _rep == r._rep; - } - }; - - template - Ref::Ref(const Ref &r) : _rep(r._rep) - { - if (_rep != (T*)NULL) _rep->ref(); - } - - template - Ref &Ref::operator=(const Ref &r) - { - if (r._rep != (T*)NULL) r._rep->ref(); - if (_rep != (T*)NULL && _rep->unref() == 0) delete _rep; - _rep = r._rep; - return *this; - } - - template - Ref::~Ref() - { - if (_rep != (T*)NULL && _rep->unref() == 0) delete _rep; - } - - // utility function return string given an int - string intToStr(int i); - - // remove white space from the string - string removeWhiteSpace(string s); - - // return true if bit is set in vector - inline bool isSet(vector &b, unsigned int bit) - { - return b.size() > bit && b[bit]; - } - - // return true if filename refers to a file - // throws exception if filename is neither file nor device - bool isFile(string filename); - - // make backup file adequate for this operating system - void renameToBackupFile(string filename) throw(GsmException); - - // Base class for class for which copying is not allow - // only used for debugging - - class NoCopy - { - public: - NoCopy() {} - -#ifndef NDEBUG - NoCopy(NoCopy &n); - - NoCopy &operator=(NoCopy &n); -#endif - }; - - // convert string to lower case - string lowercase(string s); - - // convert string to number and check for all digits - int checkNumber(string s) throw(GsmException); - - // like printf, but return C++ string -#ifdef HAVE_VSNPRINTF - string stringPrintf(const char *format, ...) -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) - __attribute__((format (printf, 1, 2))) -#endif - ; -#else - // WARNING: This replacement code is - // - not threadsafe - // - subject to buffer overruns -#define stringPrintf(format, args...) \ - (sprintf(__s, format, ## args), string(__s)) - - extern char __s[]; -#endif // HAVE_VSNPRINTF - - // return debug level -#ifndef NDEBUG - extern int debugLevel(); -#endif - - // interface for interrupting gsmlib activity - - class InterruptBase - { - public: - // this member should return true if gsmlib is to be interrupted - virtual bool interrupted() = 0; - }; - - // set global interrupt object - extern void setInterruptObject(InterruptBase *intObject); - - // return true if interrupted - extern bool interrupted(); - - // interface for reporting progress - - class ProgressBase - { - public: - // override this to receive progress reports - virtual void reportProgress(int part, int total) = 0; - }; - - // set global progress object - extern void setProgressObject(ProgressBase *progObject); - - // report progress (part/total * 100 is meant to be the percentage) - // this function is called by - // - GsmAt::chatv() without arguments, used by Phonebook::Phonebook() - // - Phonebook::Phonebook() - // - SortedPhonebook::SortedPhonebook() - // - SortedSMSStore::SortedSMSStore() - extern void reportProgress(int part = -1, int total = -1); - - // check for valid text and telephone number - // throw exception if error - extern void checkTextAndTelephone(string text, string telephone) - throw(GsmException); -}; - -#endif // GSM_UTIL_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc deleted file mode 100644 index dda1d74587..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc +++ /dev/null @@ -1,507 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_win32_port.cc -// * -// * Purpose: WIN32 serial port implementation -// * -// * Author: Frediano Ziglio (freddy77@angelfire.com) -// * -// * Created: 25.10.2000 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -static long int timeoutVal = TIMEOUT_SECS; - -struct ExceptionSafeOverlapped: public OVERLAPPED -{ - ExceptionSafeOverlapped() - { - memset((OVERLAPPED*)this,0,sizeof(OVERLAPPED)); - hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); - if (hEvent == INVALID_HANDLE_VALUE) - throw GsmException(_("error creating event"),OSError,GetLastError()); - } - ~ExceptionSafeOverlapped() - { CloseHandle(hEvent); } -}; - -typedef BOOL (WINAPI *TCancelIoProc)(HANDLE file); -TCancelIoProc CancelIoProc = NULL; -BOOL CancelIoHook(HANDLE file) -{ - if (CancelIoProc) - return CancelIoProc(file); - - HMODULE hmodule = GetModuleHandle("KERNEL32"); - if (hmodule) - { - CancelIoProc = (TCancelIoProc)GetProcAddress(hmodule,"CancelIo"); - if (CancelIoProc) - return CancelIoProc(file); - } - - return TRUE; -} -#define CancelIo CancelIoHook - -// Win32SerialPort members - -void Win32SerialPort::throwModemException(string message) throw(GsmException) -{ - ostrstream os; - os << message << " (errno: " << errno << "/" << strerror(errno) << ")" - << ends; - char *ss = os.str(); - string s(ss); - delete[] ss; - throw GsmException(s, OSError, errno); -} - -void Win32SerialPort::putBack(unsigned char c) -{ - assert(_oldChar == -1); - _oldChar = c; -} - -int Win32SerialPort::readByte() throw(GsmException) -{ - if (_oldChar != -1) - { - int result = _oldChar; - _oldChar = -1; - return result; - } - - unsigned char c; - int timeElapsed = 0; - bool readDone = true; - ExceptionSafeOverlapped over; - - DWORD initTime = GetTickCount(); - DWORD dwReaded; - if (!ReadFile(_file,&c,1,&dwReaded,&over)) - { - readDone = false; - if (GetLastError() != ERROR_IO_PENDING) - { - throwModemException(_("reading from TA")); - } - - while(!readDone) - { - if (interrupted()) - throwModemException(_("interrupted when reading from TA")); - - // wait another second - switch(WaitForSingleObject(over.hEvent,1000)) - { - case WAIT_TIMEOUT: - break; - case WAIT_OBJECT_0: - case WAIT_ABANDONED: - // !!! do a infinite loop if (bytesWritten < lenght) ? - GetOverlappedResult(_file,&over,&dwReaded,TRUE); - readDone = true; - break; - case WAIT_FAILED: - throwModemException(_("reading from TA")); - } - - timeElapsed = (GetTickCount() - initTime)/1000U; - - // timeout elapsed ? - if (timeElapsed >= timeoutVal) - { - CancelIo(_file); - break; - } - - } - } - - if (! readDone) - throwModemException(_("timeout when reading from TA")); - -#ifndef NDEBUG - if (debugLevel() >= 2) - { - // some useful debugging code - if (c == LF) - cerr << ""; - else if (c == CR) - cerr << ""; - else cerr << "<'" << (char) c << "'>"; - cerr.flush(); - } -#endif - return c; -} - -Win32SerialPort::Win32SerialPort(string device, int lineSpeed, - string initString, bool swHandshake) - throw(GsmException) : - _oldChar(-1) -{ - try - { - int holdoff[] = {2000, 1000, 400}; - - // open device - _file = CreateFile(device.c_str(),GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL ); - if (_file == INVALID_HANDLE_VALUE) - throwModemException(stringPrintf(_("opening device '%s'"), - device.c_str())); - - int initTries = 3; - while (initTries-- > 0) - { - // flush all pending output - FlushFileBuffers(_file); - - // toggle DTR to reset modem - if (!EscapeCommFunction(_file,CLRDTR)) - throwModemException(_("clearing DTR failed")); - Sleep(holdoff[initTries]); - if (!EscapeCommFunction(_file,SETDTR)) - throwModemException(_("setting DTR failed")); - - DCB dcb; - // get line modes - if (!GetCommState(_file,&dcb)) - throwModemException(stringPrintf(_("GetCommState device '%s'"), - device.c_str())); - -// if (tcgetattr(_fd, &t) < 0) -// throwModemException(stringPrintf(_("tcgetattr device '%s'"), -// device.c_str())); - - // set the device to a sane state - dcb.fBinary = TRUE; - dcb.BaudRate = lineSpeed; - - // n,8,1 - dcb.fParity = FALSE; - dcb.Parity = 0; - dcb.ByteSize = 8; - dcb.StopBits = 0; - - if (!swHandshake) - { - dcb.fInX = FALSE; - dcb.fOutX = FALSE; - dcb.fOutxDsrFlow = FALSE; - dcb.fOutxCtsFlow = FALSE; - } - else - { - dcb.fInX = TRUE; - dcb.fOutX = TRUE; - dcb.fOutxDsrFlow = FALSE; - dcb.fOutxCtsFlow = FALSE; - } - dcb.fDtrControl = DTR_CONTROL_ENABLE; - dcb.fRtsControl = RTS_CONTROL_ENABLE; - -// t.c_iflag |= IGNPAR; -// t.c_iflag &= ~(INPCK | ISTRIP | IMAXBEL | -// (swHandshake ? CRTSCTS : IXON | IXOFF) -// | IXANY | IGNCR | ICRNL | IMAXBEL | INLCR | IGNBRK); -// t.c_oflag &= ~(OPOST); -// // be careful, only touch "known" flags -// t.c_cflag&= ~(CSIZE | CSTOPB | PARENB | PARODD); -// t.c_cflag|= CS8 | CREAD | HUPCL | -// (swHandshake ? IXON | IXOFF : CRTSCTS) | -// CLOCAL; -// t.c_lflag &= ~(ECHO | ECHOE | ECHOPRT | ECHOK | ECHOKE | ECHONL | -// ECHOCTL | ISIG | IEXTEN | TOSTOP | FLUSHO | ICANON); -// t.c_lflag |= NOFLSH; -// -// t.c_cc[VMIN] = 1; -// t.c_cc[VTIME] = 0; -// -// t.c_cc[VSUSP] = 0; - - // write back - if (!SetCommState(_file,&dcb)) - throwModemException(stringPrintf(_("SetCommState device '%s'"), - device.c_str())); - - Sleep(holdoff[initTries]); - - if (!SetupComm(_file,1024,1024)) - throwModemException(stringPrintf(_("SetupComm device '%s'"), - device.c_str())); - - - // flush all pending input - PurgeComm(_file,PURGE_RXABORT|PURGE_RXCLEAR); - - try - { - // reset modem - putLine("ATZ"); - bool foundOK = false; - int readTries = 5; - while (readTries-- > 0) - { - string s = getLine(); - if (s.find("OK") != string::npos || - s.find("CABLE: GSM") != string::npos) - { - foundOK = true; - readTries = 0; // found OK, exit loop - } - } - - if (foundOK) - { - // init modem - readTries = 5; - // !!! no not declare this in loop, compiler error on Visual C++ - // (without SP and with SP4) - string s; - putLine("AT" + initString); - do - { - s = getLine(); - if (s.find("OK") != string::npos || - s.find("CABLE: GSM") != string::npos) - return; // found OK, return - } while(--readTries); - } - } - catch (GsmException &e) - { - if (initTries == 0) - throw e; - } - } - // no response after 3 tries - throw GsmException(stringPrintf(_("reset modem failed '%s'"), - device.c_str()), OtherError); - } - catch (GsmException &e) - { - if ( _file != INVALID_HANDLE_VALUE) - CloseHandle(_file); - throw e; - } -} - -string Win32SerialPort::getLine() throw(GsmException) -{ - string result; - int c; - while ((c = readByte()) > 0) - { - while (c == CR) - { - c = readByte(); - } - if (c == LF) - break; - result += c; - } - -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "<-- " << result << endl; -#endif - - return result; -} - -void Win32SerialPort::putLine(string line, - bool carriageReturn) throw(GsmException) -{ -#ifndef NDEBUG - if (debugLevel() >= 1) - cerr << "--> " << line << endl; -#endif - - if (carriageReturn) line += CR; - // !!! BUG, mantain this pointer isn't corrent, use iterator !!! - const char *l = line.c_str(); - - FlushFileBuffers(_file); // flush all pending input and output - - int timeElapsed = 0; - - DWORD bytesWritten = 0; - - ExceptionSafeOverlapped over; - - DWORD initTime = GetTickCount(); - if (!WriteFile(_file,l,line.length(),&bytesWritten,&over)) - { - if (GetLastError() != ERROR_IO_PENDING) - { - throwModemException(_("writing to TA")); - } - - while(bytesWritten < (DWORD)line.length()) - { - if (interrupted()) - throwModemException(_("interrupted when writing to TA")); - - // wait another second - switch(WaitForSingleObject(over.hEvent,1000)) - { - case WAIT_TIMEOUT: - break; - case WAIT_OBJECT_0: - case WAIT_ABANDONED: - // !!! do a infinite loop if (bytesWritten < lenght) ? - GetOverlappedResult(_file,&over,&bytesWritten,TRUE); - break; - case WAIT_FAILED: - throwModemException(_("writing to TA")); - } - - timeElapsed = (GetTickCount() - initTime)/1000U; - - // timeout elapsed ? - if (timeElapsed >= timeoutVal) - { - CancelIo(_file); - throwModemException(_("timeout when writing to TA")); - } - - } - } - - return; -/* - // empty buffer - SetCommMask(_file,EV_TXEMPTY); - DWORD dwEvent; - ResetEvent(over.hEvent); - if( WaitCommEvent(_file,&dwEvent,&over) ) - return; // already empty - - // check true errors - if (GetLastError() != ERROR_IO_PENDING) - throwModemException(_("error comm waiting")); - - while(timeElapsed < timeoutVal) - { - if (interrupted()) - throwModemException(_("interrupted when flushing to TA")); - - switch( WaitForSingleObject( over.hEvent, 1000 ) ) - { - case WAIT_TIMEOUT: - break; - - // successfully flushed - case WAIT_ABANDONED: - case WAIT_OBJECT_0: - return; - - default: - throwModemException(_("error waiting")); - } - timeElapsed = (GetTickCount() - initTime)/1000U; - } - - CancelIo(_file); - throwModemException(_("timeout when writing to TA")); -*/ - - // echo CR LF must be removed by higher layer functions in gsm_at because - // in order to properly handle unsolicited result codes from the ME/TA -} - -bool Win32SerialPort::wait(GsmTime timeout) throw(GsmException) -{ - // See differences from UNIX - // Why do I use Windows ? - DWORD dwEvent; - SetCommMask(_file,EV_RXCHAR); - if (!timeout) - { - if( !WaitCommEvent(_file,&dwEvent,NULL) ) - throwModemException(_("error comm waiting")); - return true; - } - - ExceptionSafeOverlapped over; - if( !WaitCommEvent(_file,&dwEvent,&over) ) - { - // check true errors - if (GetLastError() != ERROR_IO_PENDING) - throwModemException(_("error comm waiting")); - - switch( WaitForSingleObject( over.hEvent, timeout->tv_sec*1000U+(timeout->tv_usec/1000U) ) ) - { - case WAIT_TIMEOUT: - CancelIo(_file); - return false; - - case WAIT_ABANDONED: - case WAIT_OBJECT_0: - return true; - - default: - throwModemException(_("error waiting")); - } - } - - return true; -} - -void Win32SerialPort::setTimeOut(unsigned int timeout) -{ - timeoutVal = timeout; -} - -Win32SerialPort::~Win32SerialPort() -{ - if ( _file != INVALID_HANDLE_VALUE) - CloseHandle(_file); -} - -int gsmlib::baudRateStrToSpeed(string baudrate) throw(GsmException) -{ - if (baudrate == "300") - return 300; - else if (baudrate == "600") - return 600; - else if (baudrate == "1200") - return 1200; - else if (baudrate == "2400") - return 2400; - else if (baudrate == "4800") - return 4800; - else if (baudrate == "9600") - return 9600; - else if (baudrate == "19200") - return 19200; - else if (baudrate == "38400") - return 38400; - else if (baudrate == "57600") - return 57600; - else if (baudrate == "115200") - return 115200; - else - throw GsmException(stringPrintf(_("unknown baudrate '%s'"), - baudrate.c_str()), ParameterError); -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h deleted file mode 100644 index 627bd09354..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h +++ /dev/null @@ -1,60 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: gsm_win32_port.h -// * -// * Purpose: WIN32 serial port implementation -// * -// * Author: Frediano Ziglio (freddy77@angelfire.com) -// * -// * Created: 25.10.2000 -// ************************************************************************* - -#ifndef GSM_WIN32_SERIAL_H -#define GSM_WIN32_SERIAL_H - -#include -#include -#include -#include -#define WIN32_MEAN_AND_LEAN -#include - -using namespace std; - -namespace gsmlib -{ - class Win32SerialPort : public Port - { - private: - HANDLE _file; // file handle for device - int _oldChar; // character set by putBack() (-1 == none) -// OVERLAPPED _overIn; // overlapped structure for wait - - // throw GsmException include UNIX errno - void throwModemException(string message) throw(GsmException); - - public: - // create Port given the UNIX device name - Win32SerialPort(string device, int lineSpeed = DEFAULT_BAUD_RATE, - string initString = DEFAULT_INIT_STRING, - bool swHandshake = false) - throw(GsmException); - - // inherited from Port - void putBack(unsigned char c); - int readByte() throw(GsmException); - string getLine() throw(GsmException); - void putLine(string line, - bool carriageReturn = true) throw(GsmException); - bool wait(GsmTime timeout) throw(GsmException); - void setTimeOut(unsigned int timeout); - - virtual ~Win32SerialPort(); - }; - - // convert baudrate string ("300" .. "460800") to speed_t - extern int baudRateStrToSpeed(string baudrate) throw(GsmException); -}; - -#endif // GSM_UNIX_SERIAL_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog deleted file mode 100644 index 198950159d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog +++ /dev/null @@ -1,1086 +0,0 @@ -1998-04-29 Ulrich Drepper - - * intl/localealias.c (read_alias_file): Use unsigned char for - local variables. Remove unused variable tp. - * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * - for type of codeset. For loosing Solaris systems. - * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. - * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable - len if not needed. - Patches by Jim Meyering. - -1998-04-28 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if - mmap is not supported. - - * hash-string.h: Don't include . - -1998-04-27 Ulrich Drepper - - * textdomain.c: Use strdup is available. - - * localealias.c: Define HAVE_MEMPCPY so that we can use this - function. Define and use semapahores to protect modfication of - global objects when compiling for glibc. Add code to allow - freeing alias table. - - * l10nflist.c: Don't assume stpcpy not being a macro. - - * gettextP.h: Define internal_function macri if not already done. - Use glibc byte-swap macros instead of defining SWAP when compiled - for glibc. - (struct loaded_domain): Add elements to allow unloading. - - * Makefile.in (distclean): Don't remove libintl.h here. - - * bindtextdomain.c: Carry over changes from glibc. Use strdup if - available. - - * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal - functions. Add memory freeing code for glibc. - - * dgettext.c: Update copyright. - - * explodename.c: Include stdlib.h and string.h only if they exist. - Use strings.h eventually. - - * finddomain.c: Mark internal functions. Use strdup if available. - Add memory freeing code for glibc. - -1997-10-10 20:00 Ulrich Drepper - - * libgettext.h: Fix dummy textdomain and bindtextdomain macros. - They should return reasonable values. - Reported by Tom Tromey . - -1997-09-16 03:33 Ulrich Drepper - - * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. - * intlh.inst.in: Likewise. - Reported by Jean-Marc Lasgouttes . - - * libintl.glibc: Update from current glibc version. - -1997-09-06 02:10 Ulrich Drepper - - * intlh.inst.in: Reformat copyright. - -1997-08-19 15:22 Ulrich Drepper - - * dcgettext.c (DCGETTEXT): Remove wrong comment. - -1997-08-16 00:13 Ulrich Drepper - - * Makefile.in (install-data): Don't change directory to install. - -1997-08-01 14:30 Ulrich Drepper - - * cat-compat.c: Fix copyright. - - * localealias.c: Don't define strchr unless !HAVE_STRCHR. - - * loadmsgcat.c: Update copyright. Fix typos. - - * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. - (_nl_make_l10nflist): Handle sponsor and revision correctly. - - * gettext.c: Update copyright. - * gettext.h: Likewise. - * hash-string.h: Likewise. - - * finddomain.c: Remoave dead code. Define strchr only if - !HAVE_STRCHR. - - * explodename.c: Include . - - * explodename.c: Reformat copyright text. - (_nl_explode_name): Fix typo. - - * dcgettext.c: Define and use __set_errno. - (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is - not defined. - - * bindtextdom.c: Pretty printing. - -1997-05-01 02:25 Ulrich Drepper - - * dcgettext.c (guess_category_value): Don't depend on - HAVE_LC_MESSAGES. We don't need the macro here. - Patch by Bruno Haible . - - * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL - macro. Instead use HAVE_LOCALE_NULL and define it when using - glibc, as in dcgettext.c. - Patch by Bruno Haible . - - * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois - Pinard. - -Mon Mar 10 06:51:17 1997 Ulrich Drepper - - * Makefile.in: Implement handling of libtool. - - * gettextP.h: Change data structures for use of generic lowlevel - i18n file handling. - -Wed Dec 4 20:21:18 1996 Ulrich Drepper - - * textdomain.c: Put parentheses around arguments of memcpy macro - definition. - * localealias.c: Likewise. - * l10nflist.c: Likewise. - * finddomain.c: Likewise. - * bindtextdom.c: Likewise. - Reported by Thomas Esken. - -Mon Nov 25 22:57:51 1996 Ulrich Drepper - - * textdomain.c: Move definition of `memcpy` macro to right - position. - -Fri Nov 22 04:01:58 1996 Ulrich Drepper - - * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using - bcopy if not already defined. Reported by Thomas Esken. - * bindtextdom.c: Likewise. - * l10nflist.c: Likewise. - * localealias.c: Likewise. - * textdomain.c: Likewise. - -Tue Oct 29 11:10:27 1996 Ulrich Drepper - - * Makefile.in (libdir): Change to use exec_prefix instead of - prefix. Reported by Knut-HåvardAksnes . - -Sat Aug 31 03:07:09 1996 Ulrich Drepper - - * l10nflist.c (_nl_normalize_codeset): We convert to lower case, - so don't prepend uppercase `ISO' for only numeric arg. - -Fri Jul 19 00:15:46 1996 Ulrich Drepper - - * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after - definition of _GNU_SOURCE. Patch by Roland McGrath. - - * Makefile.in (uninstall): Fix another bug with `for' loop and - empty arguments. Patch by Jim Meyering. Correct name os - uninstalled files: no intl- prefix anymore. - - * Makefile.in (install-data): Again work around shells which - cannot handle mpty for list. Reported by Jim Meyering. - -Sat Jul 13 18:11:35 1996 Ulrich Drepper - - * Makefile.in (install): Split goal. Now depend on install-exec - and install-data. - (install-exec, install-data): New goals. Created from former - install goal. - Reported by Karl Berry. - -Sat Jun 22 04:58:14 1996 Ulrich Drepper - - * Makefile.in (MKINSTALLDIRS): New variable. Path to - mkinstalldirs script. - (install): use MKINSTALLDIRS variable or if the script is not present - try to find it in the $top_scrdir). - -Wed Jun 19 02:56:56 1996 Ulrich Drepper - - * l10nflist.c: Linux libc *partly* includes the argz_* functions. - Grr. Work around by renaming the static version and use macros - for renaming. - -Tue Jun 18 20:11:17 1996 Ulrich Drepper - - * l10nflist.c: Correct presence test macros of __argz_* functions. - - * l10nflist.c: Include based on test of it instead when - __argz_* functions are available. - Reported by Andreas Schwab. - -Thu Jun 13 15:17:44 1996 Ulrich Drepper - - * explodename.c, l10nflist.c: Define NULL for dumb systems. - -Tue Jun 11 17:05:13 1996 Ulrich Drepper - - * intlh.inst.in, libgettext.h (dcgettext): Rename local variable - result to __result to prevent name clash. - - * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to - get prototype for stpcpy and strcasecmp. - - * intlh.inst.in, libgettext.h: Move declaration of - `_nl_msg_cat_cntr' outside __extension__ block to prevent warning - from gcc's -Wnested-extern option. - -Fri Jun 7 01:58:00 1996 Ulrich Drepper - - * Makefile.in (install): Remove comment. - -Thu Jun 6 17:28:17 1996 Ulrich Drepper - - * Makefile.in (install): Work around for another Buglix stupidity. - Always use an `else' close for `if's. Reported by Nelson Beebe. - - * Makefile.in (intlh.inst): Correct typo in phony rule. - Reported by Nelson Beebe. - -Thu Jun 6 01:49:52 1996 Ulrich Drepper - - * dcgettext.c (read_alias_file): Rename variable alloca_list to - block_list as the macro calls assume. - Patch by Eric Backus. - - * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using - malloc. - (read_alias_file): Rename varriabe alloca_list to block_list as the - macro calls assume. - Patch by Eric Backus. - - * l10nflist.c: Correct conditional for inclusion. - Reported by Roland McGrath. - - * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not - all-@USE_NLS@. - - * Makefile.in (install): intlh.inst comes from local dir, not - $(srcdir). - - * Makefile.in (intlh.inst): Special handling of this goal. If - used in gettext, this is really a rul to construct this file. If - used in any other package it is defined as a .PHONY rule with - empty body. - - * finddomain.c: Extract locale file information handling into - l10nfile.c. Rename local stpcpy__ function to stpcpy. - - * dcgettext.c (stpcpy): Add local definition. - - * l10nflist.c: Solve some portability problems. Patches partly by - Thomas Esken. Add local definition of stpcpy. - -Tue Jun 4 02:47:49 1996 Ulrich Drepper - - * intlh.inst.in: Don't depend including on - HAVE_LOCALE_H. Instead configure must rewrite this fiile - depending on the result of the configure run. - - * Makefile.in (install): libintl.inst is now called intlh.inst. - Add rules for updating intlh.inst from intlh.inst.in. - - * libintl.inst: Renamed to intlh.inst.in. - - * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 - because gcc has __buitlin_alloca. - Reported by Roland McGrath. - -Mon Jun 3 00:32:16 1996 Ulrich Drepper - - * Makefile.in (installcheck): New goal to fulfill needs of - automake's distcheck. - - * Makefile.in (install): Reorder commands so that VERSION is - found. - - * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in - @datadir@/gettext. - (COMSRCS): Add l10nfile.c. - (OBJECTS): Add l10nfile.o. - (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). - (DISTFILE.gettext): Remove $(DISTFILES.common). - (all-gettext): Remove goal. - (install): If $(PACKAGE) = gettext install, otherwose do nothing. No - package but gettext itself should install libintl.h + headers. - (dist): Extend goal to work for gettext, too. - (dist-gettext): Remove goal. - - * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. - -Sun Jun 2 17:33:06 1996 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Parameter is now comes from - find_l10nfile. - -Sat Jun 1 02:23:03 1996 Ulrich Drepper - - * l10nflist.c (__argz_next): Add definition. - - * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca - code. Use new l10nfile handling. - - * localealias.c [!HAVE_ALLOCA]: Add code for handling missing - alloca code. - - * l10nflist.c: Initial revision. - -Tue Apr 2 18:51:18 1996 Ulrich Drepper - - * Makefile.in (all-gettext): New goal. Same as all-yes. - -Thu Mar 28 23:01:22 1996 Karl Eichwalder - - * Makefile.in (gettextsrcdir): Define using @datadir@. - -Tue Mar 26 12:39:14 1996 Ulrich Drepper - - * finddomain.c: Include . Reported by Roland McGrath. - -Sat Mar 23 02:00:35 1996 Ulrich Drepper - - * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing - with external declaration. - -Sat Mar 2 00:47:09 1996 Ulrich Drepper - - * Makefile.in (all-no): Rename from all_no. - -Sat Feb 17 00:25:59 1996 Ulrich Drepper - - * gettextP.h [loaded_domain]: Array `successor' must now contain up - to 63 elements (because of codeset name normalization). - - * finddomain.c: Implement codeset name normalization. - -Thu Feb 15 04:39:09 1996 Ulrich Drepper - - * Makefile.in (all): Define to `all-@USE_NLS@'. - (all-yes, all_no): New goals. `all-no' is noop, `all-yes' - is former all. - -Mon Jan 15 21:46:01 1996 Howard Gayle - - * localealias.c (alias_compare): Increment string pointers in loop - of strcasecmp replacement. - -Fri Dec 29 21:16:34 1995 Ulrich Drepper - - * Makefile.in (install-src): Who commented this goal out ? :-) - -Fri Dec 29 15:08:16 1995 Ulrich Drepper - - * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls - should not effect it because a missing catalog is no error. - Reported by Harald Knig . - -Tue Dec 19 22:09:13 1995 Ulrich Drepper - - * Makefile.in (Makefile): Explicitly use $(SHELL) for running - shell scripts. - -Fri Dec 15 17:34:59 1995 Andreas Schwab - - * Makefile.in (install-src): Only install library and header when - we use the own implementation. Don't do it when using the - system's gettext or catgets functions. - - * dcgettext.c (find_msg): Must not swap domain->hash_size here. - -Sat Dec 9 16:24:37 1995 Ulrich Drepper - - * localealias.c, libintl.inst, libgettext.h, hash-string.h, - gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: - Use PARAMS instead of __P. Suggested by Roland McGrath. - -Tue Dec 5 11:39:14 1995 Larry Schwimmer - - * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if - !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. - -Mon Dec 4 15:42:07 1995 Ulrich Drepper - - * Makefile.in (install-src): - Install libintl.inst instead of libintl.h.install. - -Sat Dec 2 22:51:38 1995 Marcus Daniels - - * cat-compat.c (textdomain): - Reverse order in which files are tried you load. First - try local file, when this failed absolute path. - -Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe - - * cat-compat.c (bindtextdomain): Add missing { }. - -Sun Nov 26 18:21:41 1995 Ulrich Drepper - - * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. - - * Makefile.in: - Add dummy `all' and `dvi' goals. Reported by Tom Tromey. - -Sat Nov 25 16:12:01 1995 Franc,ois Pinard - - * hash-string.h: Capitalize arguments of macros. - -Sat Nov 25 12:01:36 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): Prevent files names longer than 13 - characters. libintl.h.glibc->libintl.glibc, - libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. - -Sat Nov 25 11:31:12 1995 Eric Backus - - * dcgettext.c: Fix bug in preprocessor conditionals. - -Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe - - * libgettext.h: Solaris cc does not understand - #if !SYMBOL1 && !SYMBOL2. Sad but true. - -Thu Nov 23 16:22:14 1995 Ulrich Drepper - - * hash-string.h (hash_string): - Fix for machine with >32 bit `unsigned long's. - - * dcgettext.c (DCGETTEXT): - Fix horrible bug in loop for alternative translation. - -Thu Nov 23 01:45:29 1995 Ulrich Drepper - - * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: - Some further simplifications in message number generation. - -Mon Nov 20 21:08:43 1995 Ulrich Drepper - - * libintl.h.glibc: Use __const instead of const in prototypes. - - * Makefile.in (install-src): - Install libintl.h.install instead of libintl.h. This - is a stripped-down version. Suggested by Peter Miller. - - * libintl.h.install, libintl.h.glibc: Initial revision. - - * localealias.c (_nl_expand_alias, read_alias_file): - Protect prototypes in type casts by __P. - -Tue Nov 14 16:43:58 1995 Ulrich Drepper - - * hash-string.h: Correct prototype for hash_string. - -Sun Nov 12 12:42:30 1995 Ulrich Drepper - - * hash-string.h (hash_string): Add prototype. - - * gettextP.h: Fix copyright. - (SWAP): Add prototype. - -Wed Nov 8 22:56:33 1995 Ulrich Drepper - - * localealias.c (read_alias_file): Forgot sizeof. - Avoid calling *printf function. This introduces a big overhead. - Patch by Roland McGrath. - -Tue Nov 7 14:21:08 1995 Ulrich Drepper - - * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. - - * finddomain.c (stpcpy): - Define substitution function local. The macro was to flaky. - - * cat-compat.c: Fix typo. - - * xopen-msg.sed, linux-msg.sed: - While bringing message number to right place only accept digits. - - * linux-msg.sed, xopen-msg.sed: Now that the counter does not have - leading 0s we don't need to remove them. Reported by Marcus - Daniels. - - * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in - dependency. Reported by Marcus Daniels. - - * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. - Generally cleanup using #if instead of #ifndef. - - * Makefile.in: Correct typos in comment. By Franc,ois Pinard. - -Mon Nov 6 00:27:02 1995 Ulrich Drepper - - * Makefile.in (install-src): Don't install libintl.h and libintl.a - if we use an available gettext implementation. - -Sun Nov 5 22:02:08 1995 Ulrich Drepper - - * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported - by Franc,ois Pinard. - - * libgettext.h: Use #if instead of #ifdef/#ifndef. - - * finddomain.c: - Comments describing what has to be done should start with FIXME. - -Sun Nov 5 19:38:01 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. - DISTFILES.common names the files common to both dist goals. - DISTFILES.gettext are the files only distributed in GNU gettext. - -Sun Nov 5 17:32:54 1995 Ulrich Drepper - - * dcgettext.c (DCGETTEXT): Correct searching in derived locales. - This was necessary since a change in _nl_find_msg several weeks - ago. I really don't know this is still not fixed. - -Sun Nov 5 12:43:12 1995 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This - might mark a special condition. - - * finddomain.c (make_entry_rec): Don't make illegal entry as decided. - - * Makefile.in (dist): Suppress error message when ln failed. - Get files from $(srcdir) explicitly. - - * libgettext.h (gettext_const): Rename to gettext_noop. - -Fri Nov 3 07:36:50 1995 Ulrich Drepper - - * finddomain.c (make_entry_rec): - Protect against wrong locale names by testing mask. - - * libgettext.h (gettext_const): Add macro definition. - Capitalize macro arguments. - -Thu Nov 2 23:15:51 1995 Ulrich Drepper - - * finddomain.c (_nl_find_domain): - Test for pointer != NULL before accessing value. - Reported by Tom Tromey. - - * gettext.c (NULL): - Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. - -Mon Oct 30 21:28:52 1995 Ulrich Drepper - - * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. - -Sat Oct 28 23:20:47 1995 Ulrich Drepper - - * libgettext.h: Disable dcgettext optimization for Solaris 2.3. - - * localealias.c (alias_compare): - Peter Miller reported that tolower in some systems is - even dumber than I thought. Protect call by `isupper'. - -Fri Oct 27 22:22:51 1995 Ulrich Drepper - - * Makefile.in (libdir, includedir): New variables. - (install-src): Install libintl.a and libintl.h in correct dirs. - -Fri Oct 27 22:07:29 1995 Ulrich Drepper - - * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. - - * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. - - * localealias.c: - Fix typo and superflous test. Reported by Christian von Roques. - -Fri Oct 6 11:52:05 1995 Ulrich Drepper - - * finddomain.c (_nl_find_domain): - Correct some remainder from the pre-CEN syntax. Now - we don't have a constant number of successors anymore. - -Wed Sep 27 21:41:13 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): Add libintl.h.glibc. - - * Makefile.in (dist-libc): Add goal for packing sources for glibc. - (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. - - * loadmsgcat.c: Forget to continue #if line. - - * localealias.c: - [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name - space clean. - - * dcgettext.c, finddomain.c: Better comment to last change. - - * loadmsgcat.c: - [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to - __fstat, __open, __close, __read, __mmap, and __munmap resp - to keep ANSI C name space clean. - - * finddomain.c: - [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. - - * dcgettext.c: - [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to - keep ANSI C name space clean. - - * libgettext.h: - Include sys/types.h for those old SysV systems out there. - Reported by Francesco Potorti`. - - * loadmsgcat.c (use_mmap): Define if compiled for glibc. - - * bindtextdom.c: Include all those standard headers - unconditionally if _LIBC is defined. - - * finddomain.c: Fix 2 times defiend -> defined. - - * textdomain.c: Include libintl.h instead of libgettext.h when - compiling for glibc. Include all those standard headers - unconditionally if _LIBC is defined. - - * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. - - * gettext.c: - Include libintl.h instead of libgettext.h when compiling for glibc. - Get NULL from stddef.h if we compile for glibc. - - * finddomain.c: Include libintl.h instead of libgettext.h when - compiling for glibc. Include all those standard headers - unconditionally if _LIBC is defined. - - * dcgettext.c: Include all those standard headers unconditionally - if _LIBC is defined. - - * dgettext.c: If compiled in glibc include libintl.h instead of - libgettext.h. - (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. - - * dcgettext.c: If compiled in glibc include libintl.h instead of - libgettext.h. - (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. - - * bindtextdom.c: - If compiled in glibc include libintl.h instead of libgettext.h. - -Mon Sep 25 22:23:06 1995 Ulrich Drepper - - * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. - Reported by Marcus Daniels. - - * cat-compat.c (bindtextdomain): - String used in putenv must not be recycled. - Reported by Marcus Daniels. - - * libgettext.h (__USE_GNU_GETTEXT): - Additional symbol to signal that we use GNU gettext - library. - - * cat-compat.c (bindtextdomain): - Fix bug with the strange stpcpy replacement. - Reported by Nelson Beebe. - -Sat Sep 23 08:23:51 1995 Ulrich Drepper - - * cat-compat.c: Include for stpcpy prototype. - - * localealias.c (read_alias_file): - While expand strdup code temporary variable `cp' hided - higher level variable with same name. Rename to `tp'. - - * textdomain.c (textdomain): - Avoid warning by using temporary variable in strdup code. - - * finddomain.c (_nl_find_domain): Remove unused variable `application'. - -Thu Sep 21 15:51:44 1995 Ulrich Drepper - - * localealias.c (alias_compare): - Use strcasecmp() only if available. Else use - implementation in place. - - * intl-compat.c: - Wrapper functions now call *__ functions instead of __*. - - * libgettext.h: Declare prototypes for *__ functions instead for __*. - - * cat-compat.c, loadmsgcat.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - - * bindtextdom.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - Rename to bindtextdomain__ if not used in GNU C Library. - - * dgettext.c: - Rename function to dgettext__ if not used in GNU C Library. - - * gettext.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - Functions now called gettext__ if not used in GNU C Library. - - * dcgettext.c, localealias.c, textdomain.c, finddomain.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - -Sun Sep 17 23:14:49 1995 Ulrich Drepper - - * finddomain.c: Correct some bugs in handling of CEN standard - locale definitions. - -Thu Sep 7 01:49:28 1995 Ulrich Drepper - - * finddomain.c: Implement CEN syntax. - - * gettextP.h (loaded_domain): Extend number of successors to 31. - -Sat Aug 19 19:25:29 1995 Ulrich Drepper - - * Makefile.in (aliaspath): Remove path to X11 locale dir. - - * Makefile.in: Make install-src depend on install. This helps - gettext to install the sources and other packages can use the - install goal. - -Sat Aug 19 15:19:33 1995 Ulrich Drepper - - * Makefile.in (uninstall): Remove stuff installed by install-src. - -Tue Aug 15 13:13:53 1995 Ulrich Drepper - - * VERSION.in: Initial revision. - - * Makefile.in (DISTFILES): - Add VERSION file. This is not necessary for gettext, but - for other packages using this library. - -Tue Aug 15 06:16:44 1995 Ulrich Drepper - - * gettextP.h (_nl_find_domain): - New prototype after changing search strategy. - - * finddomain.c (_nl_find_domain): - We now try only to find a specified catalog. Fall back to other - catalogs listed in the locale list is now done in __dcgettext. - - * dcgettext.c (__dcgettext): - Now we provide message fall back even to different languages. - I.e. if a message is not available in one language all the other - in the locale list a tried. Formerly fall back was only possible - within one language. Implemented by moving one loop from - _nl_find_domain to here. - -Mon Aug 14 23:45:50 1995 Ulrich Drepper - - * Makefile.in (gettextsrcdir): - Directory where source of GNU gettext library are made - available. - (INSTALL, INSTALL_DATA): Programs used for installing sources. - (gettext-src): New. Rule to install GNU gettext sources for use in - gettextize shell script. - -Sun Aug 13 14:40:48 1995 Ulrich Drepper - - * loadmsgcat.c (_nl_load_domain): - Use mmap for loading only when munmap function is - also available. - - * Makefile.in (install): Depend on `all' goal. - -Wed Aug 9 11:04:33 1995 Ulrich Drepper - - * localealias.c (read_alias_file): - Do not overwrite '\n' when terminating alias value string. - - * localealias.c (read_alias_file): - Handle long lines. Ignore the rest not fitting in - the buffer after the initial `fgets' call. - -Wed Aug 9 00:54:29 1995 Ulrich Drepper - - * gettextP.h (_nl_load_domain): - Add prototype, replacing prototype for _nl_load_msg_cat. - - * finddomain.c (_nl_find_domain): - Remove unneeded variable filename and filename_len. - (expand_alias): Remove prototype because functions does not - exist anymore. - - * localealias.c (read_alias_file): - Change type of fname_len parameter to int. - (xmalloc): Add prototype. - - * loadmsgcat.c: Better prototypes for xmalloc. - -Tue Aug 8 22:30:39 1995 Ulrich Drepper - - * finddomain.c (_nl_find_domain): - Allow alias name to be constructed from the four components. - - * Makefile.in (aliaspath): New variable. Set to preliminary value. - (SOURCES): Add localealias.c. - (OBJECTS): Add localealias.o. - - * gettextP.h: Add prototype for _nl_expand_alias. - - * finddomain.c: Aliasing handled in intl/localealias.c. - - * localealias.c: Aliasing for locale names. - - * bindtextdom.c: Better prototypes for xmalloc and xstrdup. - -Mon Aug 7 23:47:42 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): gettext.perl is now found in misc/. - - * cat-compat.c (bindtextdomain): - Correct implementation. dirname parameter was not used. - Reported by Marcus Daniels. - - * gettextP.h (loaded_domain): - New fields `successor' and `decided' for oo, lazy - message handling implementation. - - * dcgettext.c: - Adopt for oo, lazy message handliing. - Now we can inherit translations from less specific locales. - (find_msg): New function. - - * loadmsgcat.c, finddomain.c: - Complete rewrite. Implement oo, lazy message handling :-). - We now have an additional environment variable `LANGUAGE' with - a higher priority than LC_ALL for the LC_MESSAGE locale. - Here we can set a colon separated list of specifications each - of the form `language[_territory[.codeset]][@modifier]'. - -Sat Aug 5 09:55:42 1995 Ulrich Drepper - - * finddomain.c (unistd.h): - Include to get _PC_PATH_MAX defined on system having it. - -Fri Aug 4 22:42:00 1995 Ulrich Drepper - - * finddomain.c (stpcpy): Include prototype. - - * Makefile.in (dist): Remove `copying instead' message. - -Wed Aug 2 18:52:03 1995 Ulrich Drepper - - * Makefile.in (ID, TAGS): Do not use $^. - -Tue Aug 1 20:07:11 1995 Ulrich Drepper - - * Makefile.in (TAGS, ID): Use $^ as command argument. - (TAGS): Give etags -o option t write to current directory, - not $(srcdir). - (ID): Use $(srcdir) instead os $(top_srcdir)/src. - (distclean): Remove ID. - -Sun Jul 30 11:51:46 1995 Ulrich Drepper - - * Makefile.in (gnulocaledir): - New variable, always using share/ for data directory. - (DEFS): Add GNULOCALEDIR, used in finddomain.c. - - * finddomain.c (_nl_default_dirname): - Set to GNULOCALEDIR, because it always has to point - to the directory where GNU gettext Library writes it to. - - * intl-compat.c (textdomain, bindtextdomain): - Undefine macros before function definition. - -Sat Jul 22 01:10:02 1995 Ulrich Drepper - - * libgettext.h (_LIBINTL_H): - Protect definition in case where this file is included as - libgettext.h on Solaris machines. Add comment about this. - -Wed Jul 19 02:36:42 1995 Ulrich Drepper - - * intl-compat.c (textdomain): Correct typo. - -Wed Jul 19 01:51:35 1995 Ulrich Drepper - - * dcgettext.c (dcgettext): Function now called __dcgettext. - - * dgettext.c (dgettext): Now called __dgettext and calls - __dcgettext. - - * gettext.c (gettext): - Function now called __gettext and calls __dgettext. - - * textdomain.c (textdomain): Function now called __textdomain. - - * bindtextdom.c (bindtextdomain): Function now called - __bindtextdomain. - - * intl-compat.c: Initial revision. - - * Makefile.in (SOURCES): Add intl-compat.c. - (OBJECTS): We always compile the GNU gettext library functions. - OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, - and intl-compat.o. - (GETTOBJS): Contains now only intl-compat.o. - - * libgettext.h: - Re-include protection matches dualistic character of libgettext.h. - For all functions in GNU gettext library define __ counter part. - - * finddomain.c (strchr): Define as index if not found in C library. - (_nl_find_domain): For relative paths paste / in between. - -Tue Jul 18 16:37:45 1995 Ulrich Drepper - - * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. - - * xopen-msg.sed: Fix bug with `msgstr ""' lines. - A little bit better comments. - -Tue Jul 18 01:18:27 1995 Ulrich Drepper - - * Makefile.in: - po-mode.el, makelinks, combine-sh are now found in ../misc. - - * po-mode.el, makelinks, combine-sh, elisp-comp: - Moved to ../misc/. - - * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. - -Sun Jul 16 22:33:02 1995 Ulrich Drepper - - * Makefile.in (INSTALL, INSTALL_DATA): New variables. - (install-data, uninstall): Install/uninstall .elc file. - - * po-mode.el (Installation comment): - Add .pox as possible extension of .po files. - -Sun Jul 16 13:23:27 1995 Ulrich Drepper - - * elisp-comp: Complete new version by Franc,ois: This does not - fail when not compiling in the source directory. - -Sun Jul 16 00:12:17 1995 Ulrich Drepper - - * Makefile.in (../po/cat-id-tbl.o): - Use $(MAKE) instead of make for recursive make. - - * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. - (install-exec): Add missing dummy goal. - (install-data, uninstall): @ in multi-line shell command at - beginning, not in front of echo. Reported by Eric Backus. - -Sat Jul 15 00:21:28 1995 Ulrich Drepper - - * Makefile.in (DISTFILES): - Rename libgettext.perl to gettext.perl to fit in 14 chars - file systems. - - * gettext.perl: - Rename to gettext.perl to fit in 14 chars file systems. - -Thu Jul 13 23:17:20 1995 Ulrich Drepper - - * cat-compat.c: If !STDC_HEADERS try to include malloc.h. - -Thu Jul 13 20:55:02 1995 Ulrich Drepper - - * po2tbl.sed.in: Pretty printing. - - * linux-msg.sed, xopen-msg.sed: - Correct bugs with handling substitute flags in branches. - - * hash-string.h (hash_string): - Old K&R compilers don't under stand `unsigned char'. - - * gettext.h (nls_uint32): - Some old K&R compilers (eg HP) don't understand `unsigned int'. - - * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. - -Thu Jul 13 01:34:33 1995 Ulrich Drepper - - * Makefile.in (ELCFILES): New variable. - (DISTFILES): Add elisp-comp. - Add implicit rule for .el -> .elc compilation. - (install-data): install $ELCFILES - (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. - - * elisp-comp: Initial revision - -Wed Jul 12 16:14:52 1995 Ulrich Drepper - - * Makefile.in: - cat-id-tbl.c is now found in po/. This enables us to use an identical - intl/ directory in all packages. - - * dcgettext.c (dcgettext): hashing does not work for table size <= 2. - - * textdomain.c: fix typo (#if def -> #if defined) - -Tue Jul 11 18:44:43 1995 Ulrich Drepper - - * Makefile.in (stamp-cat-id): use top_srcdir to address source files - (DISTFILES,distclean): move tupdate.perl to src/ - - * po-to-tbl.sed.in: - add additional jump to clear change flag to recognize multiline strings - -Tue Jul 11 01:32:50 1995 Ulrich Drepper - - * textdomain.c: Protect inclusion of stdlib.h and string.h. - - * loadmsgcat.c: Protect inclusion of stdlib.h. - - * libgettext.h: Protect inclusion of locale.h. - Allow use in C++ programs. - Define NULL is not happened already. - - * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of - po-to-tbl.sed. - (distclean): remove po-to-tbl.sed and tupdate.perl. - - * tupdate.perl.in: Substitute Perl path even in exec line. - Don't include entries without translation from old .po file. - -Tue Jul 4 00:41:51 1995 Ulrich Drepper - - * tupdate.perl.in: use "Updated: " in msgid "". - - * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). - Define getenv if !__STDC__. - - * bindtextdom.c: Protect stdlib.h and string.h inclusion. - Define free if !__STDC__. - - * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. - Define free if !__STDC__. - - * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. - -Mon Jul 3 23:56:30 1995 Ulrich Drepper - - * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. - Remove unneeded $(srcdir) from Makefile.in dependency. - - * makelinks: Add copyright and short description. - - * po-mode.el: Last version for 0.7. - - * tupdate.perl.in: Fix die message. - - * dcgettext.c: Protect include of string.h. - - * gettext.c: Protect include of stdlib.h and further tries to get NULL. - - * finddomain.c: Some corrections in includes. - - * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. - - * po-to-tbl.sed: Adopt for new .po file format. - - * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. - -Sun Jul 2 23:55:03 1995 Ulrich Drepper - - * tupdate.perl.in: Complete rewrite for new .po file format. - -Sun Jul 2 02:06:50 1995 Ulrich Drepper - - * First official release. This directory contains all the code - needed to internationalize own packages. It provides functions - which allow to use the X/Open catgets function with an interface - like the Uniforum gettext function. For system which does not - have neither of those a complete implementation is provided. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile deleted file mode 100644 index 37585e769e..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile +++ /dev/null @@ -1,214 +0,0 @@ -# Makefile for directory with message catalog handling in GNU NLS Utilities. -# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -PACKAGE = gsmlib -VERSION = 1.10 - -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. -top_builddir = .. - - -prefix = /usr -exec_prefix = ${prefix} -transform = s,x,x, -libdir = $(exec_prefix)/lib -includedir = $(prefix)/include -datadir = $(prefix)/share -localedir = $(datadir)/locale -gnulocaledir = $(prefix)/share/locale -gettextsrcdir = ${prefix}/share/gettext/intl -aliaspath = $(localedir):. -subdir = intl - -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = $(top_builddir)/scripts/mkinstalldirs - -l = @l@ - -AR = ar -CC = i486-linux-gnu-gcc -LIBTOOL = $(SHELL) $(top_builddir)/libtool -RANLIB = ranlib - -DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ --DLOCALE_ALIAS_PATH=\"$(aliaspath)\" -DHAVE_CONFIG_H -CPPFLAGS = -CFLAGS = -D_REENTRANT -g -O2 -LDFLAGS = - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -HEADERS = $(COMHDRS) libgettext.h loadinfo.h -COMHDRS = gettext.h gettextP.h hash-string.h -SOURCES = $(COMSRCS) intl-compat.c cat-compat.c -COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ -finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ -explodename.c -OBJECTS = bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ -finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ -explodename.$lo -CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo -GETTOBJS = intl-compat.$lo -DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ -xopen-msg.sed $(HEADERS) $(SOURCES) -DISTFILES.normal = VERSION -DISTFILES.gettext = libintl.glibc intlh.inst.in - -.SUFFIXES: -.SUFFIXES: .c .o .lo -.c.o: - $(COMPILE) $< -.c.lo: - $(LIBTOOL) --mode=compile $(COMPILE) $< - -INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib - -all: all-no - -all-yes: libintl.$la intlh.inst -all-no: - -libintl.a: $(OBJECTS) - rm -f $@ - $(AR) cru $@ $(OBJECTS) - $(RANLIB) $@ - -libintl.la: $(OBJECTS) - $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ - -version-info 1:0 -rpath $(libdir) - -../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot - cd ../po && $(MAKE) cat-id-tbl.$lo - -check: all - -# This installation goal is only used in GNU gettext. Packages which -# only use the library should use install instead. - -# We must not install the libintl.h/libintl.a files if we are on a -# system which has the gettext() function in its C library or in a -# separate library or use the catgets interface. A special case is -# where configure found a previously installed GNU gettext library. -# If you want to use the one which comes with this version of the -# package, you have to use `configure --with-included-gettext'. -install: install-exec install-data -install-exec: all - if test "$(PACKAGE)" = "gettext" \ - && test '' = '$(GETTOBJS)'; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(libdir) $(includedir); \ - else \ - $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ - fi; \ - $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ - $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ - else \ - : ; \ - fi -install-data: all - if test "$(PACKAGE)" = "gettext"; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(gettextsrcdir); \ - else \ - $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ - fi; \ - $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ - dists="$(DISTFILES.common)"; \ - for file in $$dists; do \ - $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - dists="$(DISTFILES.common)"; \ - for file in $$dists; do \ - rm -f $(gettextsrcdir)/$$file; \ - done - -info dvi: - -$(OBJECTS): ../gsm_config.h libgettext.h -bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h - -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) - -id: ID - -ID: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) - - -mostlyclean: - rm -f *.a *.o *.lo core core.* - -clean: mostlyclean - -distclean: clean - rm -f Makefile ID TAGS po2msg.sed po2tbl.sed - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - - -# GNU gettext needs not contain the file `VERSION' but contains some -# other files which should not be distributed in other packages. -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: Makefile $(DISTFILES) - if test "$(PACKAGE)" = gettext; then \ - additional="$(DISTFILES.gettext)"; \ - else \ - additional="$(DISTFILES.normal)"; \ - fi; \ - for file in $(DISTFILES.common) $$additional; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir); \ - done - -dist-libc: - tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc - -Makefile: Makefile.in ../config.status - cd .. \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -# The dependency for intlh.inst is different in gettext and all other -# packages. Because we cannot you GNU make features we have to solve -# the problem while rewriting Makefile.in. -@GT_YES@intlh.inst: intlh.inst.in ../config.status -@GT_YES@ cd .. \ -@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ -@GT_YES@ $(SHELL) ./config.status -@GT_NO@.PHONY: intlh.inst -@GT_NO@intlh.inst: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in deleted file mode 100644 index fc1e9e3ff1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in +++ /dev/null @@ -1,214 +0,0 @@ -# Makefile for directory with message catalog handling in GNU NLS Utilities. -# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -top_builddir = .. -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -transform = @program_transform_name@ -libdir = $(exec_prefix)/lib -includedir = $(prefix)/include -datadir = $(prefix)/@DATADIRNAME@ -localedir = $(datadir)/locale -gnulocaledir = $(prefix)/share/locale -gettextsrcdir = @datadir@/gettext/intl -aliaspath = $(localedir):. -subdir = intl - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ - -l = @l@ - -AR = ar -CC = @CC@ -LIBTOOL = @LIBTOOL@ -RANLIB = @RANLIB@ - -DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ --DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -HEADERS = $(COMHDRS) libgettext.h loadinfo.h -COMHDRS = gettext.h gettextP.h hash-string.h -SOURCES = $(COMSRCS) intl-compat.c cat-compat.c -COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ -finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ -explodename.c -OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ -finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ -explodename.$lo -CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo -GETTOBJS = intl-compat.$lo -DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ -xopen-msg.sed $(HEADERS) $(SOURCES) -DISTFILES.normal = VERSION -DISTFILES.gettext = libintl.glibc intlh.inst.in - -.SUFFIXES: -.SUFFIXES: .c .o .lo -.c.o: - $(COMPILE) $< -.c.lo: - $(LIBTOOL) --mode=compile $(COMPILE) $< - -INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib - -all: all-@USE_INCLUDED_LIBINTL@ - -all-yes: libintl.$la intlh.inst -all-no: - -libintl.a: $(OBJECTS) - rm -f $@ - $(AR) cru $@ $(OBJECTS) - $(RANLIB) $@ - -libintl.la: $(OBJECTS) - $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ - -version-info 1:0 -rpath $(libdir) - -../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot - cd ../po && $(MAKE) cat-id-tbl.$lo - -check: all - -# This installation goal is only used in GNU gettext. Packages which -# only use the library should use install instead. - -# We must not install the libintl.h/libintl.a files if we are on a -# system which has the gettext() function in its C library or in a -# separate library or use the catgets interface. A special case is -# where configure found a previously installed GNU gettext library. -# If you want to use the one which comes with this version of the -# package, you have to use `configure --with-included-gettext'. -install: install-exec install-data -install-exec: all - if test "$(PACKAGE)" = "gettext" \ - && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(libdir) $(includedir); \ - else \ - $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ - fi; \ - $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ - $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ - else \ - : ; \ - fi -install-data: all - if test "$(PACKAGE)" = "gettext"; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(gettextsrcdir); \ - else \ - $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ - fi; \ - $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ - dists="$(DISTFILES.common)"; \ - for file in $$dists; do \ - $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - dists="$(DISTFILES.common)"; \ - for file in $$dists; do \ - rm -f $(gettextsrcdir)/$$file; \ - done - -info dvi: - -$(OBJECTS): ../gsm_config.h libgettext.h -bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h - -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) - -id: ID - -ID: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) - - -mostlyclean: - rm -f *.a *.o *.lo core core.* - -clean: mostlyclean - -distclean: clean - rm -f Makefile ID TAGS po2msg.sed po2tbl.sed - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - - -# GNU gettext needs not contain the file `VERSION' but contains some -# other files which should not be distributed in other packages. -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: Makefile $(DISTFILES) - if test "$(PACKAGE)" = gettext; then \ - additional="$(DISTFILES.gettext)"; \ - else \ - additional="$(DISTFILES.normal)"; \ - fi; \ - for file in $(DISTFILES.common) $$additional; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir); \ - done - -dist-libc: - tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc - -Makefile: Makefile.in ../config.status - cd .. \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -# The dependency for intlh.inst is different in gettext and all other -# packages. Because we cannot you GNU make features we have to solve -# the problem while rewriting Makefile.in. -@GT_YES@intlh.inst: intlh.inst.in ../config.status -@GT_YES@ cd .. \ -@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ -@GT_YES@ $(SHELL) ./config.status -@GT_NO@.PHONY: intlh.inst -@GT_NO@intlh.inst: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION deleted file mode 100644 index ee66b0612b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION +++ /dev/null @@ -1 +0,0 @@ -GNU gettext library from gettext-0.10.35 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c deleted file mode 100644 index 42b11aaddb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c +++ /dev/null @@ -1,203 +0,0 @@ -/* Implementation of the bindtextdomain(3) function - Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include -#else -# ifdef HAVE_MALLOC_H -# include -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# include -#else -# include -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif - -#ifdef _LIBC -# include -#else -# include "libgettext.h" -#endif -#include "gettext.h" -#include "gettextP.h" - -/* @@ end of prolog @@ */ - -/* Contains the default location of the message catalogs. */ -extern const char _nl_default_dirname[]; - -/* List with bindings of specific domains. */ -extern struct binding *_nl_domain_bindings; - - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define BINDTEXTDOMAIN __bindtextdomain -# ifndef strdup -# define strdup(str) __strdup (str) -# endif -#else -# define BINDTEXTDOMAIN bindtextdomain__ -#endif - -/* Specify that the DOMAINNAME message catalog will be found - in DIRNAME rather than in the system locale data base. */ -char * -BINDTEXTDOMAIN (domainname, dirname) - const char *domainname; - const char *dirname; -{ - struct binding *binding; - - /* Some sanity checks. */ - if (domainname == NULL || domainname[0] == '\0') - return NULL; - - for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) - { - int compare = strcmp (domainname, binding->domainname); - if (compare == 0) - /* We found it! */ - break; - if (compare < 0) - { - /* It is not in the list. */ - binding = NULL; - break; - } - } - - if (dirname == NULL) - /* The current binding has be to returned. */ - return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; - - if (binding != NULL) - { - /* The domain is already bound. If the new value and the old - one are equal we simply do nothing. Otherwise replace the - old binding. */ - if (strcmp (dirname, binding->dirname) != 0) - { - char *new_dirname; - - if (strcmp (dirname, _nl_default_dirname) == 0) - new_dirname = (char *) _nl_default_dirname; - else - { -#if defined _LIBC || defined HAVE_STRDUP - new_dirname = strdup (dirname); - if (new_dirname == NULL) - return NULL; -#else - size_t len = strlen (dirname) + 1; - new_dirname = (char *) malloc (len); - if (new_dirname == NULL) - return NULL; - - memcpy (new_dirname, dirname, len); -#endif - } - - if (binding->dirname != _nl_default_dirname) - free (binding->dirname); - - binding->dirname = new_dirname; - } - } - else - { - /* We have to create a new binding. */ -#if !defined _LIBC && !defined HAVE_STRDUP - size_t len; -#endif - struct binding *new_binding = - (struct binding *) malloc (sizeof (*new_binding)); - - if (new_binding == NULL) - return NULL; - -#if defined _LIBC || defined HAVE_STRDUP - new_binding->domainname = strdup (domainname); - if (new_binding->domainname == NULL) - return NULL; -#else - len = strlen (domainname) + 1; - new_binding->domainname = (char *) malloc (len); - if (new_binding->domainname == NULL) - return NULL; - memcpy (new_binding->domainname, domainname, len); -#endif - - if (strcmp (dirname, _nl_default_dirname) == 0) - new_binding->dirname = (char *) _nl_default_dirname; - else - { -#if defined _LIBC || defined HAVE_STRDUP - new_binding->dirname = strdup (dirname); - if (new_binding->dirname == NULL) - return NULL; -#else - len = strlen (dirname) + 1; - new_binding->dirname = (char *) malloc (len); - if (new_binding->dirname == NULL) - return NULL; - memcpy (new_binding->dirname, dirname, len); -#endif - } - - /* Now enqueue it. */ - if (_nl_domain_bindings == NULL - || strcmp (domainname, _nl_domain_bindings->domainname) < 0) - { - new_binding->next = _nl_domain_bindings; - _nl_domain_bindings = new_binding; - } - else - { - binding = _nl_domain_bindings; - while (binding->next != NULL - && strcmp (domainname, binding->next->domainname) > 0) - binding = binding->next; - - new_binding->next = binding->next; - binding->next = new_binding; - } - - binding = new_binding; - } - - return binding->dirname; -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__bindtextdomain, bindtextdomain); -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c deleted file mode 100644 index 4eb0e068f1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c +++ /dev/null @@ -1,262 +0,0 @@ -/* Compatibility code for gettext-using-catgets interface. - Copyright (C) 1995, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#ifdef STDC_HEADERS -# include -# include -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include -# endif -#endif - -#ifdef HAVE_NL_TYPES_H -# include -#endif - -#include "libgettext.h" - -/* @@ end of prolog @@ */ - -/* XPG3 defines the result of `setlocale (category, NULL)' as: - ``Directs `setlocale()' to query `category' and return the current - setting of `local'.'' - However it does not specify the exact format. And even worse: POSIX - defines this not at all. So we can use this feature only on selected - system (e.g. those using GNU C Library). */ -#ifdef _LIBC -# define HAVE_LOCALE_NULL -#endif - -/* The catalog descriptor. */ -static nl_catd catalog = (nl_catd) -1; - -/* Name of the default catalog. */ -static const char default_catalog_name[] = "messages"; - -/* Name of currently used catalog. */ -static const char *catalog_name = default_catalog_name; - -/* Get ID for given string. If not found return -1. */ -static int msg_to_cat_id PARAMS ((const char *msg)); - -/* Substitution for systems lacking this function in their C library. */ -#if !_LIBC && !HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -#endif - - -/* Set currently used domain/catalog. */ -char * -textdomain (domainname) - const char *domainname; -{ - nl_catd new_catalog; - char *new_name; - size_t new_name_len; - char *lang; - -#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \ - && defined HAVE_LOCALE_NULL - lang = setlocale (LC_MESSAGES, NULL); -#else - lang = getenv ("LC_ALL"); - if (lang == NULL || lang[0] == '\0') - { - lang = getenv ("LC_MESSAGES"); - if (lang == NULL || lang[0] == '\0') - lang = getenv ("LANG"); - } -#endif - if (lang == NULL || lang[0] == '\0') - lang = "C"; - - /* See whether name of currently used domain is asked. */ - if (domainname == NULL) - return (char *) catalog_name; - - if (domainname[0] == '\0') - domainname = default_catalog_name; - - /* Compute length of added path element. */ - new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) - + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 - + sizeof (".cat"); - - new_name = (char *) malloc (new_name_len); - if (new_name == NULL) - return NULL; - - strcpy (new_name, PACKAGE); - new_catalog = catopen (new_name, 0); - - if (new_catalog == (nl_catd) -1) - { - /* NLSPATH search didn't work, try absolute path */ - sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, - PACKAGE); - new_catalog = catopen (new_name, 0); - - if (new_catalog == (nl_catd) -1) - { - free (new_name); - return (char *) catalog_name; - } - } - - /* Close old catalog. */ - if (catalog != (nl_catd) -1) - catclose (catalog); - if (catalog_name != default_catalog_name) - free ((char *) catalog_name); - - catalog = new_catalog; - catalog_name = new_name; - - return (char *) catalog_name; -} - -char * -bindtextdomain (domainname, dirname) - const char *domainname; - const char *dirname; -{ -#if HAVE_SETENV || HAVE_PUTENV - char *old_val, *new_val, *cp; - size_t new_val_len; - - /* This does not make much sense here but to be compatible do it. */ - if (domainname == NULL) - return NULL; - - /* Compute length of added path element. If we use setenv we don't need - the first byts for NLSPATH=, but why complicate the code for this - peanuts. */ - new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) - + sizeof ("/%L/LC_MESSAGES/%N.cat"); - - old_val = getenv ("NLSPATH"); - if (old_val == NULL || old_val[0] == '\0') - { - old_val = NULL; - new_val_len += 1 + sizeof (LOCALEDIR) - 1 - + sizeof ("/%L/LC_MESSAGES/%N.cat"); - } - else - new_val_len += strlen (old_val); - - new_val = (char *) malloc (new_val_len); - if (new_val == NULL) - return NULL; - -# if HAVE_SETENV - cp = new_val; -# else - cp = stpcpy (new_val, "NLSPATH="); -# endif - - cp = stpcpy (cp, dirname); - cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); - - if (old_val == NULL) - { -# if __STDC__ - stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); -# else - - cp = stpcpy (cp, LOCALEDIR); - stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); -# endif - } - else - stpcpy (cp, old_val); - -# if HAVE_SETENV - setenv ("NLSPATH", new_val, 1); - free (new_val); -# else - putenv (new_val); - /* Do *not* free the environment entry we just entered. It is used - from now on. */ -# endif - -#endif - - return (char *) domainname; -} - -#undef gettext -char * -gettext (msg) - const char *msg; -{ - int msgid; - - if (msg == NULL || catalog == (nl_catd) -1) - return (char *) msg; - - /* Get the message from the catalog. We always use set number 1. - The message ID is computed by the function `msg_to_cat_id' - which works on the table generated by `po-to-tbl'. */ - msgid = msg_to_cat_id (msg); - if (msgid == -1) - return (char *) msg; - - return catgets (catalog, 1, msgid, (char *) msg); -} - -/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries - for the one equal to msg. If it is found return the ID. In case when - the string is not found return -1. */ -static int -msg_to_cat_id (msg) - const char *msg; -{ - int cnt; - - for (cnt = 0; cnt < _msg_tbl_length; ++cnt) - if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) - return _msg_tbl[cnt]._msg_number; - - return -1; -} - - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c deleted file mode 100644 index ed697f371b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c +++ /dev/null @@ -1,624 +0,0 @@ -/* Implementation of the dcgettext(3) function. - Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#ifdef __GNUC__ -# define alloca __builtin_alloca -# define HAVE_ALLOCA 1 -#else -# if defined HAVE_ALLOCA_H || defined _LIBC -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca -char *alloca (); -# endif -# endif -# endif -#endif - -#include -#ifndef errno -extern int errno; -#endif -#ifndef __set_errno -# define __set_errno(val) errno = (val) -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -# endif -# include -#else -# include -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include -#endif - -#include "gettext.h" -#include "gettextP.h" -#ifdef _LIBC -# include -#else -# include "libgettext.h" -#endif -#include "hash-string.h" - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ANSI C functions. This is required by the standard - because some ANSI C functions will require linking with this object - file and the name space must not be polluted. */ -# define getcwd __getcwd -# ifndef stpcpy -# define stpcpy __stpcpy -# endif -#else -# if !defined HAVE_GETCWD -char *getwd (); -# define getcwd(buf, max) getwd (buf) -# else -char *getcwd (); -# endif -# ifndef HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -# endif -#endif - -/* Amount to increase buffer size by in each try. */ -#define PATH_INCR 32 - -/* The following is from pathmax.h. */ -/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define - PATH_MAX but might cause redefinition warnings when sys/param.h is - later included (as on MORE/BSD 4.3). */ -#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) -# include -#endif - -#ifndef _POSIX_PATH_MAX -# define _POSIX_PATH_MAX 255 -#endif - -#if !defined(PATH_MAX) && defined(_PC_PATH_MAX) -# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) -#endif - -/* Don't include sys/param.h if it already has been. */ -#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) -# include -#endif - -#if !defined(PATH_MAX) && defined(MAXPATHLEN) -# define PATH_MAX MAXPATHLEN -#endif - -#ifndef PATH_MAX -# define PATH_MAX _POSIX_PATH_MAX -#endif - -/* XPG3 defines the result of `setlocale (category, NULL)' as: - ``Directs `setlocale()' to query `category' and return the current - setting of `local'.'' - However it does not specify the exact format. And even worse: POSIX - defines this not at all. So we can use this feature only on selected - system (e.g. those using GNU C Library). */ -#ifdef _LIBC -# define HAVE_LOCALE_NULL -#endif - -/* Name of the default domain used for gettext(3) prior any call to - textdomain(3). The default value for this is "messages". */ -const char _nl_default_default_domain[] = "messages"; - -/* Value used as the default domain for gettext(3). */ -const char *_nl_current_default_domain = _nl_default_default_domain; - -/* Contains the default location of the message catalogs. */ -const char _nl_default_dirname[] = GNULOCALEDIR; - -/* List with bindings of specific domains created by bindtextdomain() - calls. */ -struct binding *_nl_domain_bindings; - -/* Prototypes for local functions. */ -static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file, - const char *msgid)) internal_function; -static const char *category_to_name PARAMS ((int category)) internal_function; -static const char *guess_category_value PARAMS ((int category, - const char *categoryname)) - internal_function; - - -/* For those loosing systems which don't have `alloca' we have to add - some additional code emulating it. */ -#ifdef HAVE_ALLOCA -/* Nothing has to be done. */ -# define ADD_BLOCK(list, address) /* nothing */ -# define FREE_BLOCKS(list) /* nothing */ -#else -struct block_list -{ - void *address; - struct block_list *next; -}; -# define ADD_BLOCK(list, addr) \ - do { \ - struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ - /* If we cannot get a free block we cannot add the new element to \ - the list. */ \ - if (newp != NULL) { \ - newp->address = (addr); \ - newp->next = (list); \ - (list) = newp; \ - } \ - } while (0) -# define FREE_BLOCKS(list) \ - do { \ - while (list != NULL) { \ - struct block_list *old = list; \ - list = list->next; \ - free (old); \ - } \ - } while (0) -# undef alloca -# define alloca(size) (malloc (size)) -#endif /* have alloca */ - - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define DCGETTEXT __dcgettext -#else -# define DCGETTEXT dcgettext__ -#endif - -/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY - locale. */ -char * -DCGETTEXT (domainname, msgid, category) - const char *domainname; - const char *msgid; - int category; -{ -#ifndef HAVE_ALLOCA - struct block_list *block_list = NULL; -#endif - struct loaded_l10nfile *domain; - struct binding *binding; - const char *categoryname; - const char *categoryvalue; - char *dirname, *xdomainname; - char *single_locale; - char *retval; - int saved_errno = errno; - - /* If no real MSGID is given return NULL. */ - if (msgid == NULL) - return NULL; - - /* If DOMAINNAME is NULL, we are interested in the default domain. If - CATEGORY is not LC_MESSAGES this might not make much sense but the - defintion left this undefined. */ - if (domainname == NULL) - domainname = _nl_current_default_domain; - - /* First find matching binding. */ - for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) - { - int compare = strcmp (domainname, binding->domainname); - if (compare == 0) - /* We found it! */ - break; - if (compare < 0) - { - /* It is not in the list. */ - binding = NULL; - break; - } - } - - if (binding == NULL) - dirname = (char *) _nl_default_dirname; - else if (binding->dirname[0] == '/') - dirname = binding->dirname; - else - { - /* We have a relative path. Make it absolute now. */ - size_t dirname_len = strlen (binding->dirname) + 1; - size_t path_max; - char *ret; - - path_max = (unsigned) PATH_MAX; - path_max += 2; /* The getcwd docs say to do this. */ - - dirname = (char *) alloca (path_max + dirname_len); - ADD_BLOCK (block_list, dirname); - - __set_errno (0); - while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) - { - path_max += PATH_INCR; - dirname = (char *) alloca (path_max + dirname_len); - ADD_BLOCK (block_list, dirname); - __set_errno (0); - } - - if (ret == NULL) - { - /* We cannot get the current working directory. Don't signal an - error but simply return the default string. */ - FREE_BLOCKS (block_list); - __set_errno (saved_errno); - return (char *) msgid; - } - - stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); - } - - /* Now determine the symbolic name of CATEGORY and its value. */ - categoryname = category_to_name (category); - categoryvalue = guess_category_value (category, categoryname); - - xdomainname = (char *) alloca (strlen (categoryname) - + strlen (domainname) + 5); - ADD_BLOCK (block_list, xdomainname); - - stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), - domainname), - ".mo"); - - /* Creating working area. */ - single_locale = (char *) alloca (strlen (categoryvalue) + 1); - ADD_BLOCK (block_list, single_locale); - - - /* Search for the given string. This is a loop because we perhaps - got an ordered list of languages to consider for th translation. */ - while (1) - { - /* Make CATEGORYVALUE point to the next element of the list. */ - while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') - ++categoryvalue; - if (categoryvalue[0] == '\0') - { - /* The whole contents of CATEGORYVALUE has been searched but - no valid entry has been found. We solve this situation - by implicitly appending a "C" entry, i.e. no translation - will take place. */ - single_locale[0] = 'C'; - single_locale[1] = '\0'; - } - else - { - char *cp = single_locale; - while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') - *cp++ = *categoryvalue++; - *cp = '\0'; - } - - /* If the current locale value is C (or POSIX) we don't load a - domain. Return the MSGID. */ - if (strcmp (single_locale, "C") == 0 - || strcmp (single_locale, "POSIX") == 0) - { - FREE_BLOCKS (block_list); - __set_errno (saved_errno); - return (char *) msgid; - } - - - /* Find structure describing the message catalog matching the - DOMAINNAME and CATEGORY. */ - domain = _nl_find_domain (dirname, single_locale, xdomainname); - - if (domain != NULL) - { - retval = find_msg (domain, msgid); - - if (retval == NULL) - { - int cnt; - - for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) - { - retval = find_msg (domain->successor[cnt], msgid); - - if (retval != NULL) - break; - } - } - - if (retval != NULL) - { - FREE_BLOCKS (block_list); - __set_errno (saved_errno); - return retval; - } - } - } - /* NOTREACHED */ -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__dcgettext, dcgettext); -#endif - - -static char * -internal_function -find_msg (domain_file, msgid) - struct loaded_l10nfile *domain_file; - const char *msgid; -{ - size_t top, act, bottom; - struct loaded_domain *domain; - - if (domain_file->decided == 0) - _nl_load_domain (domain_file); - - if (domain_file->data == NULL) - return NULL; - - domain = (struct loaded_domain *) domain_file->data; - - /* Locate the MSGID and its translation. */ - if (domain->hash_size > 2 && domain->hash_tab != NULL) - { - /* Use the hashing table. */ - nls_uint32 len = strlen (msgid); - nls_uint32 hash_val = hash_string (msgid); - nls_uint32 idx = hash_val % domain->hash_size; - nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); - nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); - - if (nstr == 0) - /* Hash table entry is empty. */ - return NULL; - - if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len - && strcmp (msgid, - domain->data + W (domain->must_swap, - domain->orig_tab[nstr - 1].offset)) == 0) - return (char *) domain->data + W (domain->must_swap, - domain->trans_tab[nstr - 1].offset); - - while (1) - { - if (idx >= domain->hash_size - incr) - idx -= domain->hash_size - incr; - else - idx += incr; - - nstr = W (domain->must_swap, domain->hash_tab[idx]); - if (nstr == 0) - /* Hash table entry is empty. */ - return NULL; - - if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len - && strcmp (msgid, - domain->data + W (domain->must_swap, - domain->orig_tab[nstr - 1].offset)) - == 0) - return (char *) domain->data - + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); - } - /* NOTREACHED */ - } - - /* Now we try the default method: binary search in the sorted - array of messages. */ - bottom = 0; - top = domain->nstrings; - while (bottom < top) - { - int cmp_val; - - act = (bottom + top) / 2; - cmp_val = strcmp (msgid, domain->data - + W (domain->must_swap, - domain->orig_tab[act].offset)); - if (cmp_val < 0) - top = act; - else if (cmp_val > 0) - bottom = act + 1; - else - break; - } - - /* If an translation is found return this. */ - return bottom >= top ? NULL : (char *) domain->data - + W (domain->must_swap, - domain->trans_tab[act].offset); -} - - -/* Return string representation of locale CATEGORY. */ -static const char * -internal_function -category_to_name (category) - int category; -{ - const char *retval; - - switch (category) - { -#ifdef LC_COLLATE - case LC_COLLATE: - retval = "LC_COLLATE"; - break; -#endif -#ifdef LC_CTYPE - case LC_CTYPE: - retval = "LC_CTYPE"; - break; -#endif -#ifdef LC_MONETARY - case LC_MONETARY: - retval = "LC_MONETARY"; - break; -#endif -#ifdef LC_NUMERIC - case LC_NUMERIC: - retval = "LC_NUMERIC"; - break; -#endif -#ifdef LC_TIME - case LC_TIME: - retval = "LC_TIME"; - break; -#endif -#ifdef LC_MESSAGES - case LC_MESSAGES: - retval = "LC_MESSAGES"; - break; -#endif -#ifdef LC_RESPONSE - case LC_RESPONSE: - retval = "LC_RESPONSE"; - break; -#endif -#ifdef LC_ALL - case LC_ALL: - /* This might not make sense but is perhaps better than any other - value. */ - retval = "LC_ALL"; - break; -#endif - default: - /* If you have a better idea for a default value let me know. */ - retval = "LC_XXX"; - } - - return retval; -} - -/* Guess value of current locale from value of the environment variables. */ -static const char * -internal_function -guess_category_value (category, categoryname) - int category; - const char *categoryname; -{ - const char *retval; - - /* The highest priority value is the `LANGUAGE' environment - variable. This is a GNU extension. */ - retval = getenv ("LANGUAGE"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* `LANGUAGE' is not set. So we have to proceed with the POSIX - methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some - systems this can be done by the `setlocale' function itself. */ -#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL - return setlocale (category, NULL); -#else - /* Setting of LC_ALL overwrites all other. */ - retval = getenv ("LC_ALL"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* Next comes the name of the desired category. */ - retval = getenv (categoryname); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* Last possibility is the LANG environment variable. */ - retval = getenv ("LANG"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* We use C as the default domain. POSIX says this is implementation - defined. */ - return "C"; -#endif -} - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif - - -#ifdef _LIBC -/* If we want to free all resources we have to do some work at - program's end. */ -static void __attribute__ ((unused)) -free_mem (void) -{ - struct binding *runp; - - for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next) - { - free (runp->domainname); - if (runp->dirname != _nl_default_dirname) - /* Yes, this is a pointer comparison. */ - free (runp->dirname); - } - - if (_nl_current_default_domain != _nl_default_default_domain) - /* Yes, again a pointer comparison. */ - free ((char *) _nl_current_default_domain); -} - -text_set_element (__libc_subfreeres, free_mem); -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c deleted file mode 100644 index 6525d83293..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Implementation of the dgettext(3) function - Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if defined HAVE_LOCALE_H || defined _LIBC -# include -#endif - -#ifdef _LIBC -# include -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define DGETTEXT __dgettext -# define DCGETTEXT __dcgettext -#else -# define DGETTEXT dgettext__ -# define DCGETTEXT dcgettext__ -#endif - -/* Look up MSGID in the DOMAINNAME message catalog of the current - LC_MESSAGES locale. */ -char * -DGETTEXT (domainname, msgid) - const char *domainname; - const char *msgid; -{ - return DCGETTEXT (domainname, msgid, LC_MESSAGES); -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__dgettext, dgettext); -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c deleted file mode 100644 index b80aa79ae2..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c +++ /dev/null @@ -1,188 +0,0 @@ -/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 1995. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# include -#else -# include -#endif -#include - -#include "loadinfo.h" - -/* On some strange systems still no definition of NULL is found. Sigh! */ -#ifndef NULL -# if defined __STDC__ && __STDC__ -# define NULL ((void *) 0) -# else -# define NULL 0 -# endif -#endif - -/* @@ end of prolog @@ */ - -int -_nl_explode_name (name, language, modifier, territory, codeset, - normalized_codeset, special, sponsor, revision) - char *name; - const char **language; - const char **modifier; - const char **territory; - const char **codeset; - const char **normalized_codeset; - const char **special; - const char **sponsor; - const char **revision; -{ - enum { undecided, xpg, cen } syntax; - char *cp; - int mask; - - *modifier = NULL; - *territory = NULL; - *codeset = NULL; - *normalized_codeset = NULL; - *special = NULL; - *sponsor = NULL; - *revision = NULL; - - /* Now we determine the single parts of the locale name. First - look for the language. Termination symbols are `_' and `@' if - we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ - mask = 0; - syntax = undecided; - *language = cp = name; - while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' - && cp[0] != '+' && cp[0] != ',') - ++cp; - - if (*language == cp) - /* This does not make sense: language has to be specified. Use - this entry as it is without exploding. Perhaps it is an alias. */ - cp = strchr (*language, '\0'); - else if (cp[0] == '_') - { - /* Next is the territory. */ - cp[0] = '\0'; - *territory = ++cp; - - while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' - && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') - ++cp; - - mask |= TERRITORY; - - if (cp[0] == '.') - { - /* Next is the codeset. */ - syntax = xpg; - cp[0] = '\0'; - *codeset = ++cp; - - while (cp[0] != '\0' && cp[0] != '@') - ++cp; - - mask |= XPG_CODESET; - - if (*codeset != cp && (*codeset)[0] != '\0') - { - *normalized_codeset = _nl_normalize_codeset (*codeset, - cp - *codeset); - if (strcmp (*codeset, *normalized_codeset) == 0) - free ((char *) *normalized_codeset); - else - mask |= XPG_NORM_CODESET; - } - } - } - - if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) - { - /* Next is the modifier. */ - syntax = cp[0] == '@' ? xpg : cen; - cp[0] = '\0'; - *modifier = ++cp; - - while (syntax == cen && cp[0] != '\0' && cp[0] != '+' - && cp[0] != ',' && cp[0] != '_') - ++cp; - - mask |= XPG_MODIFIER | CEN_AUDIENCE; - } - - if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) - { - syntax = cen; - - if (cp[0] == '+') - { - /* Next is special application (CEN syntax). */ - cp[0] = '\0'; - *special = ++cp; - - while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') - ++cp; - - mask |= CEN_SPECIAL; - } - - if (cp[0] == ',') - { - /* Next is sponsor (CEN syntax). */ - cp[0] = '\0'; - *sponsor = ++cp; - - while (cp[0] != '\0' && cp[0] != '_') - ++cp; - - mask |= CEN_SPONSOR; - } - - if (cp[0] == '_') - { - /* Next is revision (CEN syntax). */ - cp[0] = '\0'; - *revision = ++cp; - - mask |= CEN_REVISION; - } - } - - /* For CEN syntax values it might be important to have the - separator character in the file name, not for XPG syntax. */ - if (syntax == xpg) - { - if (*territory != NULL && (*territory)[0] == '\0') - mask &= ~TERRITORY; - - if (*codeset != NULL && (*codeset)[0] == '\0') - mask &= ~XPG_CODESET; - - if (*modifier != NULL && (*modifier)[0] == '\0') - mask &= ~XPG_MODIFIER; - } - - return mask; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c deleted file mode 100644 index 9588532f3d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c +++ /dev/null @@ -1,216 +0,0 @@ -/* Handle list of needed message catalogs - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - Written by Ulrich Drepper , 1995. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include - -#if defined STDC_HEADERS || defined _LIBC -# include -#else -# ifdef HAVE_MALLOC_H -# include -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# include -#else -# include -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include -#endif - -#include "gettext.h" -#include "gettextP.h" -#ifdef _LIBC -# include -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ -/* List of already loaded domains. */ -static struct loaded_l10nfile *_nl_loaded_domains; - - -/* Return a data structure describing the message catalog described by - the DOMAINNAME and CATEGORY parameters with respect to the currently - established bindings. */ -struct loaded_l10nfile * -internal_function -_nl_find_domain (dirname, locale, domainname) - const char *dirname; - char *locale; - const char *domainname; -{ - struct loaded_l10nfile *retval; - const char *language; - const char *modifier; - const char *territory; - const char *codeset; - const char *normalized_codeset; - const char *special; - const char *sponsor; - const char *revision; - const char *alias_value; - int mask; - - /* LOCALE can consist of up to four recognized parts for the XPG syntax: - - language[_territory[.codeset]][@modifier] - - and six parts for the CEN syntax: - - language[_territory][+audience][+special][,[sponsor][_revision]] - - Beside the first part all of them are allowed to be missing. If - the full specified locale is not found, the less specific one are - looked for. The various parts will be stripped off according to - the following order: - (1) revision - (2) sponsor - (3) special - (4) codeset - (5) normalized codeset - (6) territory - (7) audience/modifier - */ - - /* If we have already tested for this locale entry there has to - be one data set in the list of loaded domains. */ - retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, - strlen (dirname) + 1, 0, locale, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, domainname, 0); - if (retval != NULL) - { - /* We know something about this locale. */ - int cnt; - - if (retval->decided == 0) - _nl_load_domain (retval); - - if (retval->data != NULL) - return retval; - - for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) - { - if (retval->successor[cnt]->decided == 0) - _nl_load_domain (retval->successor[cnt]); - - if (retval->successor[cnt]->data != NULL) - break; - } - return cnt >= 0 ? retval : NULL; - /* NOTREACHED */ - } - - /* See whether the locale value is an alias. If yes its value - *overwrites* the alias name. No test for the original value is - done. */ - alias_value = _nl_expand_alias (locale); - if (alias_value != NULL) - { -#if defined _LIBC || defined HAVE_STRDUP - locale = strdup (alias_value); - if (locale == NULL) - return NULL; -#else - size_t len = strlen (alias_value) + 1; - locale = (char *) malloc (len); - if (locale == NULL) - return NULL; - - memcpy (locale, alias_value, len); -#endif - } - - /* Now we determine the single parts of the locale name. First - look for the language. Termination symbols are `_' and `@' if - we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ - mask = _nl_explode_name (locale, &language, &modifier, &territory, - &codeset, &normalized_codeset, &special, - &sponsor, &revision); - - /* Create all possible locale entries which might be interested in - generalization. */ - retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, - strlen (dirname) + 1, mask, language, territory, - codeset, normalized_codeset, modifier, special, - sponsor, revision, domainname, 1); - if (retval == NULL) - /* This means we are out of core. */ - return NULL; - - if (retval->decided == 0) - _nl_load_domain (retval); - if (retval->data == NULL) - { - int cnt; - for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) - { - if (retval->successor[cnt]->decided == 0) - _nl_load_domain (retval->successor[cnt]); - if (retval->successor[cnt]->data != NULL) - break; - } - } - - /* The room for an alias was dynamically allocated. Free it now. */ - if (alias_value != NULL) - free (locale); - - return retval; -} - - -#ifdef _LIBC -static void __attribute__ ((unused)) -free_mem (void) -{ - struct loaded_l10nfile *runp = _nl_loaded_domains; - - while (runp != NULL) - { - struct loaded_l10nfile *here = runp; - if (runp->data != NULL) - _nl_unload_domain ((struct loaded_domain *) runp->data); - runp = runp->next; - free (here); - } -} - -text_set_element (__libc_subfreeres, free_mem); -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c deleted file mode 100644 index c3c64bf8c5..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Implementation of gettext(3) function. - Copyright (C) 1995, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifdef _LIBC -# define __need_NULL -# include -#else -# ifdef STDC_HEADERS -# include /* Just for NULL. */ -# else -# ifdef HAVE_STRING_H -# include -# else -# define NULL ((void *) 0) -# endif -# endif -#endif - -#ifdef _LIBC -# include -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define GETTEXT __gettext -# define DGETTEXT __dgettext -#else -# define GETTEXT gettext__ -# define DGETTEXT dgettext__ -#endif - -/* Look up MSGID in the current default message catalog for the current - LC_MESSAGES locale. If not found, returns MSGID itself (the default - text). */ -char * -GETTEXT (msgid) - const char *msgid; -{ - return DGETTEXT (NULL, msgid); -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__gettext, gettext); -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h deleted file mode 100644 index 3cd23d7d6a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Internal header for GNU gettext internationalization functions. - Copyright (C) 1995, 1997 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 Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef _GETTEXT_H -#define _GETTEXT_H 1 - -#include - -#if HAVE_LIMITS_H || _LIBC -# include -#endif - -/* @@ end of prolog @@ */ - -/* The magic number of the GNU message catalog format. */ -#define _MAGIC 0x950412de -#define _MAGIC_SWAPPED 0xde120495 - -/* Revision number of the currently used .mo (binary) file format. */ -#define MO_REVISION_NUMBER 0 - -/* The following contortions are an attempt to use the C preprocessor - to determine an unsigned integral type that is 32 bits wide. An - alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but - doing that would require that the configure script compile and *run* - the resulting executable. Locally running cross-compiled executables - is usually not possible. */ - -#if __STDC__ -# define UINT_MAX_32_BITS 4294967295U -#else -# define UINT_MAX_32_BITS 0xFFFFFFFF -#endif - -/* If UINT_MAX isn't defined, assume it's a 32-bit type. - This should be valid for all systems GNU cares about because - that doesn't include 16-bit systems, and only modern systems - (that certainly have ) have 64+-bit integral types. */ - -#ifndef UINT_MAX -# define UINT_MAX UINT_MAX_32_BITS -#endif - -#if UINT_MAX == UINT_MAX_32_BITS -typedef unsigned nls_uint32; -#else -# if USHRT_MAX == UINT_MAX_32_BITS -typedef unsigned short nls_uint32; -# else -# if ULONG_MAX == UINT_MAX_32_BITS -typedef unsigned long nls_uint32; -# else - /* The following line is intended to throw an error. Using #error is - not portable enough. */ - "Cannot determine unsigned 32-bit data type." -# endif -# endif -#endif - - -/* Header for binary .mo file format. */ -struct mo_file_header -{ - /* The magic number. */ - nls_uint32 magic; - /* The revision number of the file format. */ - nls_uint32 revision; - /* The number of strings pairs. */ - nls_uint32 nstrings; - /* Offset of table with start offsets of original strings. */ - nls_uint32 orig_tab_offset; - /* Offset of table with start offsets of translation strings. */ - nls_uint32 trans_tab_offset; - /* Size of hashing table. */ - nls_uint32 hash_tab_size; - /* Offset of first hashing entry. */ - nls_uint32 hash_tab_offset; -}; - -struct string_desc -{ - /* Length of addressed string. */ - nls_uint32 length; - /* Offset of string in file. */ - nls_uint32 offset; -}; - -/* @@ begin of epilog @@ */ - -#endif /* gettext.h */ diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h deleted file mode 100644 index 00c5203197..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h +++ /dev/null @@ -1,89 +0,0 @@ -/* Header describing internals of gettext library - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - Written by Ulrich Drepper , 1995. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _GETTEXTP_H -#define _GETTEXTP_H - -#include "loadinfo.h" - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -#endif - -#ifndef internal_function -# define internal_function -#endif - -#ifndef W -# define W(flag, data) ((flag) ? SWAP (data) : (data)) -#endif - - -#ifdef _LIBC -# include -# define SWAP(i) bswap_32 (i) -#else -static nls_uint32 SWAP PARAMS ((nls_uint32 i)); - -static inline nls_uint32 -SWAP (i) - nls_uint32 i; -{ - return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); -} -#endif - - -struct loaded_domain -{ - const char *data; - int use_mmap; - size_t mmap_size; - int must_swap; - nls_uint32 nstrings; - struct string_desc *orig_tab; - struct string_desc *trans_tab; - nls_uint32 hash_size; - nls_uint32 *hash_tab; -}; - -struct binding -{ - struct binding *next; - char *domainname; - char *dirname; -}; - -struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, - char *__locale, - const char *__domainname)) - internal_function; -void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)) - internal_function; -void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) - internal_function; - -/* @@ begin of epilog @@ */ - -#endif /* gettextP.h */ diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h deleted file mode 100644 index cacb38e479..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Implements a string hashing function. - Copyright (C) 1995, 1997 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 Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -/* We assume to have `unsigned long int' value with at least 32 bits. */ -#define HASHWORDBITS 32 - - -/* Defines the so called `hashpjw' function by P.J. Weinberger - [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, - 1986, 1987 Bell Telephone Laboratories, Inc.] */ -static unsigned long hash_string PARAMS ((const char *__str_param)); - -static inline unsigned long -hash_string (str_param) - const char *str_param; -{ - unsigned long int hval, g; - const char *str = str_param; - - /* Compute the hash value for the given string. */ - hval = 0; - while (*str != '\0') - { - hval <<= 4; - hval += (unsigned long) *str++; - g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); - if (g != 0) - { - hval ^= g >> (HASHWORDBITS - 8); - hval ^= g; - } - } - return hval; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c deleted file mode 100644 index 21ffc60c19..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c +++ /dev/null @@ -1,76 +0,0 @@ -/* intl-compat.c - Stub functions to call gettext functions from GNU gettext - Library. - Copyright (C) 1995 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "libgettext.h" - -/* @@ end of prolog @@ */ - - -#undef gettext -#undef dgettext -#undef dcgettext -#undef textdomain -#undef bindtextdomain - - -char * -bindtextdomain (domainname, dirname) - const char *domainname; - const char *dirname; -{ - return bindtextdomain__ (domainname, dirname); -} - - -char * -dcgettext (domainname, msgid, category) - const char *domainname; - const char *msgid; - int category; -{ - return dcgettext__ (domainname, msgid, category); -} - - -char * -dgettext (domainname, msgid) - const char *domainname; - const char *msgid; -{ - return dgettext__ (domainname, msgid); -} - - -char * -gettext (msgid) - const char *msgid; -{ - return gettext__ (msgid); -} - - -char * -textdomain (domainname) - const char *domainname; -{ - return textdomain__ (domainname); -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c deleted file mode 100644 index 174794201c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c +++ /dev/null @@ -1,411 +0,0 @@ -/* Handle list of needed message catalogs - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - Contributed by Ulrich Drepper , 1995. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - - -#if defined HAVE_STRING_H || defined _LIBC -# ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -# endif -# include -#else -# include -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined _LIBC || defined HAVE_ARGZ_H -# include -#endif -#include -#include - -#if defined STDC_HEADERS || defined _LIBC -# include -#endif - -#include "loadinfo.h" - -/* On some strange systems still no definition of NULL is found. Sigh! */ -#ifndef NULL -# if defined __STDC__ && __STDC__ -# define NULL ((void *) 0) -# else -# define NULL 0 -# endif -#endif - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ANSI C functions. This is required by the standard - because some ANSI C functions will require linking with this object - file and the name space must not be polluted. */ -# ifndef stpcpy -# define stpcpy(dest, src) __stpcpy(dest, src) -# endif -#else -# ifndef HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -# endif -#endif - -/* Define function which are usually not available. */ - -#if !defined _LIBC && !defined HAVE___ARGZ_COUNT -/* Returns the number of strings in ARGZ. */ -static size_t argz_count__ PARAMS ((const char *argz, size_t len)); - -static size_t -argz_count__ (argz, len) - const char *argz; - size_t len; -{ - size_t count = 0; - while (len > 0) - { - size_t part_len = strlen (argz); - argz += part_len + 1; - len -= part_len + 1; - count++; - } - return count; -} -# undef __argz_count -# define __argz_count(argz, len) argz_count__ (argz, len) -#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ - -#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY -/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's - except the last into the character SEP. */ -static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); - -static void -argz_stringify__ (argz, len, sep) - char *argz; - size_t len; - int sep; -{ - while (len > 0) - { - size_t part_len = strlen (argz); - argz += part_len; - len -= part_len + 1; - if (len > 0) - *argz++ = sep; - } -} -# undef __argz_stringify -# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) -#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ - -#if !defined _LIBC && !defined HAVE___ARGZ_NEXT -static char *argz_next__ PARAMS ((char *argz, size_t argz_len, - const char *entry)); - -static char * -argz_next__ (argz, argz_len, entry) - char *argz; - size_t argz_len; - const char *entry; -{ - if (entry) - { - if (entry < argz + argz_len) - entry = strchr (entry, '\0') + 1; - - return entry >= argz + argz_len ? NULL : (char *) entry; - } - else - if (argz_len > 0) - return argz; - else - return 0; -} -# undef __argz_next -# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) -#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ - - -/* Return number of bits set in X. */ -static int pop PARAMS ((int x)); - -static inline int -pop (x) - int x; -{ - /* We assume that no more than 16 bits are used. */ - x = ((x & ~0x5555) >> 1) + (x & 0x5555); - x = ((x & ~0x3333) >> 2) + (x & 0x3333); - x = ((x >> 4) + x) & 0x0f0f; - x = ((x >> 8) + x) & 0xff; - - return x; -} - - -struct loaded_l10nfile * -_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, - territory, codeset, normalized_codeset, modifier, special, - sponsor, revision, filename, do_allocate) - struct loaded_l10nfile **l10nfile_list; - const char *dirlist; - size_t dirlist_len; - int mask; - const char *language; - const char *territory; - const char *codeset; - const char *normalized_codeset; - const char *modifier; - const char *special; - const char *sponsor; - const char *revision; - const char *filename; - int do_allocate; -{ - char *abs_filename; - struct loaded_l10nfile *last = NULL; - struct loaded_l10nfile *retval; - char *cp; - size_t entries; - int cnt; - - /* Allocate room for the full file name. */ - abs_filename = (char *) malloc (dirlist_len - + strlen (language) - + ((mask & TERRITORY) != 0 - ? strlen (territory) + 1 : 0) - + ((mask & XPG_CODESET) != 0 - ? strlen (codeset) + 1 : 0) - + ((mask & XPG_NORM_CODESET) != 0 - ? strlen (normalized_codeset) + 1 : 0) - + (((mask & XPG_MODIFIER) != 0 - || (mask & CEN_AUDIENCE) != 0) - ? strlen (modifier) + 1 : 0) - + ((mask & CEN_SPECIAL) != 0 - ? strlen (special) + 1 : 0) - + (((mask & CEN_SPONSOR) != 0 - || (mask & CEN_REVISION) != 0) - ? (1 + ((mask & CEN_SPONSOR) != 0 - ? strlen (sponsor) + 1 : 0) - + ((mask & CEN_REVISION) != 0 - ? strlen (revision) + 1 : 0)) : 0) - + 1 + strlen (filename) + 1); - - if (abs_filename == NULL) - return NULL; - - retval = NULL; - last = NULL; - - /* Construct file name. */ - memcpy (abs_filename, dirlist, dirlist_len); - __argz_stringify (abs_filename, dirlist_len, ':'); - cp = abs_filename + (dirlist_len - 1); - *cp++ = '/'; - cp = stpcpy (cp, language); - - if ((mask & TERRITORY) != 0) - { - *cp++ = '_'; - cp = stpcpy (cp, territory); - } - if ((mask & XPG_CODESET) != 0) - { - *cp++ = '.'; - cp = stpcpy (cp, codeset); - } - if ((mask & XPG_NORM_CODESET) != 0) - { - *cp++ = '.'; - cp = stpcpy (cp, normalized_codeset); - } - if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) - { - /* This component can be part of both syntaces but has different - leading characters. For CEN we use `+', else `@'. */ - *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; - cp = stpcpy (cp, modifier); - } - if ((mask & CEN_SPECIAL) != 0) - { - *cp++ = '+'; - cp = stpcpy (cp, special); - } - if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) - { - *cp++ = ','; - if ((mask & CEN_SPONSOR) != 0) - cp = stpcpy (cp, sponsor); - if ((mask & CEN_REVISION) != 0) - { - *cp++ = '_'; - cp = stpcpy (cp, revision); - } - } - - *cp++ = '/'; - stpcpy (cp, filename); - - /* Look in list of already loaded domains whether it is already - available. */ - last = NULL; - for (retval = *l10nfile_list; retval != NULL; retval = retval->next) - if (retval->filename != NULL) - { - int compare = strcmp (retval->filename, abs_filename); - if (compare == 0) - /* We found it! */ - break; - if (compare < 0) - { - /* It's not in the list. */ - retval = NULL; - break; - } - - last = retval; - } - - if (retval != NULL || do_allocate == 0) - { - free (abs_filename); - return retval; - } - - retval = (struct loaded_l10nfile *) - malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) - * (1 << pop (mask)) - * sizeof (struct loaded_l10nfile *))); - if (retval == NULL) - return NULL; - - retval->filename = abs_filename; - retval->decided = (__argz_count (dirlist, dirlist_len) != 1 - || ((mask & XPG_CODESET) != 0 - && (mask & XPG_NORM_CODESET) != 0)); - retval->data = NULL; - - if (last == NULL) - { - retval->next = *l10nfile_list; - *l10nfile_list = retval; - } - else - { - retval->next = last->next; - last->next = retval; - } - - entries = 0; - /* If the DIRLIST is a real list the RETVAL entry corresponds not to - a real file. So we have to use the DIRLIST separation mechanism - of the inner loop. */ - cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; - for (; cnt >= 0; --cnt) - if ((cnt & ~mask) == 0 - && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) - && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) - { - /* Iterate over all elements of the DIRLIST. */ - char *dir = NULL; - - while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) - != NULL) - retval->successor[entries++] - = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, - language, territory, codeset, - normalized_codeset, modifier, special, - sponsor, revision, filename, 1); - } - retval->successor[entries] = NULL; - - return retval; -} - -/* Normalize codeset name. There is no standard for the codeset - names. Normalization allows the user to use any of the common - names. */ -const char * -_nl_normalize_codeset (codeset, name_len) - const unsigned char *codeset; - size_t name_len; -{ - int len = 0; - int only_digit = 1; - char *retval; - char *wp; - size_t cnt; - - for (cnt = 0; cnt < name_len; ++cnt) - if (isalnum (codeset[cnt])) - { - ++len; - - if (isalpha (codeset[cnt])) - only_digit = 0; - } - - retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); - - if (retval != NULL) - { - if (only_digit) - wp = stpcpy (retval, "iso"); - else - wp = retval; - - for (cnt = 0; cnt < name_len; ++cnt) - if (isalpha (codeset[cnt])) - *wp++ = tolower (codeset[cnt]); - else if (isdigit (codeset[cnt])) - *wp++ = codeset[cnt]; - - *wp = '\0'; - } - - return (const char *) retval; -} - - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h deleted file mode 100644 index 3a92960ae3..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h +++ /dev/null @@ -1,182 +0,0 @@ -/* Message catalogs for internationalization. - Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Because on some systems (e.g. Solaris) we sometimes have to include - the systems libintl.h as well as this file we have more complex - include protection above. But the systems header might perhaps also - define _LIBINTL_H and therefore we have to protect the definition here. */ - -#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H -#ifndef _LIBINTL_H -# define _LIBINTL_H 1 -#endif -#define _LIBGETTEXT_H 1 - -/* We define an additional symbol to signal that we use the GNU - implementation of gettext. */ -#define __USE_GNU_GETTEXT 1 - -#include - -#if HAVE_LOCALE_H -# include -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ || defined __cplusplus -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -#endif - -#ifndef NULL -# if !defined __cplusplus || defined __GNUC__ -# define NULL ((void *) 0) -# else -# define NULL (0) -# endif -#endif - -#if !HAVE_LC_MESSAGES -/* This value determines the behaviour of the gettext() and dgettext() - function. But some system does not have this defined. Define it - to a default value. */ -# define LC_MESSAGES (-1) -#endif - - -/* Declarations for gettext-using-catgets interface. Derived from - Jim Meyering's libintl.h. */ -struct _msg_ent -{ - const char *_msg; - int _msg_number; -}; - - -#if HAVE_CATGETS -/* These two variables are defined in the automatically by po-to-tbl.sed - generated file `cat-id-tbl.c'. */ -extern const struct _msg_ent _msg_tbl[]; -extern int _msg_tbl_length; -#endif - - -/* For automatical extraction of messages sometimes no real - translation is needed. Instead the string itself is the result. */ -#define gettext_noop(Str) (Str) - -/* Look up MSGID in the current default message catalog for the current - LC_MESSAGES locale. If not found, returns MSGID itself (the default - text). */ -extern char *gettext PARAMS ((const char *__msgid)); -extern char *gettext__ PARAMS ((const char *__msgid)); - -/* Look up MSGID in the DOMAINNAME message catalog for the current - LC_MESSAGES locale. */ -extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); -extern char *dgettext__ PARAMS ((const char *__domainname, - const char *__msgid)); - -/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY - locale. */ -extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, - int __category)); -extern char *dcgettext__ PARAMS ((const char *__domainname, - const char *__msgid, int __category)); - - -/* Set the current default message catalog to DOMAINNAME. - If DOMAINNAME is null, return the current default. - If DOMAINNAME is "", reset to the default of "messages". */ -extern char *textdomain PARAMS ((const char *__domainname)); -extern char *textdomain__ PARAMS ((const char *__domainname)); - -/* Specify that the DOMAINNAME message catalog will be found - in DIRNAME rather than in the system locale data base. */ -extern char *bindtextdomain PARAMS ((const char *__domainname, - const char *__dirname)); -extern char *bindtextdomain__ PARAMS ((const char *__domainname, - const char *__dirname)); - -#if ENABLE_NLS - -/* Solaris 2.3 has the gettext function but dcgettext is missing. - So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 - has dcgettext. */ -# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) - -# define gettext(Msgid) \ - dgettext (NULL, Msgid) - -# define dgettext(Domainname, Msgid) \ - dcgettext (Domainname, Msgid, LC_MESSAGES) - -# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 -/* This global variable is defined in loadmsgcat.c. We need a sign, - whether a new catalog was loaded, which can be associated with all - translations. */ -extern int _nl_msg_cat_cntr; - -# define dcgettext(Domainname, Msgid, Category) \ - (__extension__ \ - ({ \ - char *__result; \ - if (__builtin_constant_p (Msgid)) \ - { \ - static char *__translation__; \ - static int __catalog_counter__; \ - if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ - { \ - __translation__ = \ - dcgettext__ (Domainname, Msgid, Category); \ - __catalog_counter__ = _nl_msg_cat_cntr; \ - } \ - __result = __translation__; \ - } \ - else \ - __result = dcgettext__ (Domainname, Msgid, Category); \ - __result; \ - })) -# endif -# endif - -#else - -# define gettext(Msgid) (Msgid) -# define dgettext(Domainname, Msgid) (Msgid) -# define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) ((char *) Domainname) -# define bindtextdomain(Domainname, Dirname) ((char *) Dirname) - -#endif - -/* @@ begin of epilog @@ */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed deleted file mode 100755 index 5918e720a9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed +++ /dev/null @@ -1,100 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper , 1995. -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# Mitch's old catalog format does not allow comments. -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { - s/msgid[ ]*"// -# -# This does not work now with the new format. -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - x -# The following nice solution is by -# Bruno - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x - G - s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/# \1/ -# Clear substitution flag. - tb -# Append the next line. - :b - N -# Look whether second part is continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that D includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use D here. - s/.*\n\(.*\)/\1/ - tb -} -d diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h deleted file mode 100644 index f4ebf6d811..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef PARAMS -# if __STDC__ -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -#endif - -/* Encoding of locale name parts. */ -#define CEN_REVISION 1 -#define CEN_SPONSOR 2 -#define CEN_SPECIAL 4 -#define XPG_NORM_CODESET 8 -#define XPG_CODESET 16 -#define TERRITORY 32 -#define CEN_AUDIENCE 64 -#define XPG_MODIFIER 128 - -#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) -#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) - - -struct loaded_l10nfile -{ - const char *filename; - int decided; - - const void *data; - - struct loaded_l10nfile *next; - struct loaded_l10nfile *successor[1]; -}; - - -extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset, - size_t name_len)); - -extern struct loaded_l10nfile * -_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, - const char *dirlist, size_t dirlist_len, int mask, - const char *language, const char *territory, - const char *codeset, - const char *normalized_codeset, - const char *modifier, const char *special, - const char *sponsor, const char *revision, - const char *filename, int do_allocate)); - - -extern const char *_nl_expand_alias PARAMS ((const char *name)); - -extern int _nl_explode_name PARAMS ((char *name, const char **language, - const char **modifier, - const char **territory, - const char **codeset, - const char **normalized_codeset, - const char **special, - const char **sponsor, - const char **revision)); diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c deleted file mode 100644 index e74a2f77f5..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c +++ /dev/null @@ -1,222 +0,0 @@ -/* Load needed message catalogs. - Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include - -#if defined STDC_HEADERS || defined _LIBC -# include -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include -#endif - -#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC -# include -#endif - -#include "gettext.h" -#include "gettextP.h" - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ISO C functions. This is required by the standard - because some ISO C functions will require linking with this object - file and the name space must not be polluted. */ -# define open __open -# define close __close -# define read __read -# define mmap __mmap -# define munmap __munmap -#endif - -/* We need a sign, whether a new catalog was loaded, which can be associated - with all translations. This is important if the translations are - cached by one of GCC's features. */ -int _nl_msg_cat_cntr = 0; - - -/* Load the message catalogs specified by FILENAME. If it is no valid - message catalog do nothing. */ -void -internal_function -_nl_load_domain (domain_file) - struct loaded_l10nfile *domain_file; -{ - int fd; - size_t size; - struct stat st; - struct mo_file_header *data = (struct mo_file_header *) -1; -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - int use_mmap = 0; -#endif - struct loaded_domain *domain; - - domain_file->decided = 1; - domain_file->data = NULL; - - /* If the record does not represent a valid locale the FILENAME - might be NULL. This can happen when according to the given - specification the locale file name is different for XPG and CEN - syntax. */ - if (domain_file->filename == NULL) - return; - - /* Try to open the addressed file. */ - fd = open (domain_file->filename, O_RDONLY); - if (fd == -1) - return; - - /* We must know about the size of the file. */ - if (fstat (fd, &st) != 0 - || (size = (size_t) st.st_size) != st.st_size - || size < sizeof (struct mo_file_header)) - { - /* Something went wrong. */ - close (fd); - return; - } - -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - /* Now we are ready to load the file. If mmap() is available we try - this first. If not available or it failed we try to load it. */ - data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, - MAP_PRIVATE, fd, 0); - - if (data != (struct mo_file_header *) -1) - { - /* mmap() call was successful. */ - close (fd); - use_mmap = 1; - } -#endif - - /* If the data is not yet available (i.e. mmap'ed) we try to load - it manually. */ - if (data == (struct mo_file_header *) -1) - { - size_t to_read; - char *read_ptr; - - data = (struct mo_file_header *) malloc (size); - if (data == NULL) - return; - - to_read = size; - read_ptr = (char *) data; - do - { - long int nb = (long int) read (fd, read_ptr, to_read); - if (nb == -1) - { - close (fd); - return; - } - - read_ptr += nb; - to_read -= nb; - } - while (to_read > 0); - - close (fd); - } - - /* Using the magic number we can test whether it really is a message - catalog file. */ - if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) - { - /* The magic number is wrong: not a message catalog file. */ -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - if (use_mmap) - munmap ((caddr_t) data, size); - else -#endif - free (data); - return; - } - - domain_file->data - = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); - if (domain_file->data == NULL) - return; - - domain = (struct loaded_domain *) domain_file->data; - domain->data = (char *) data; -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - domain->use_mmap = use_mmap; -#endif - domain->mmap_size = size; - domain->must_swap = data->magic != _MAGIC; - - /* Fill in the information about the available tables. */ - switch (W (domain->must_swap, data->revision)) - { - case 0: - domain->nstrings = W (domain->must_swap, data->nstrings); - domain->orig_tab = (struct string_desc *) - ((char *) data + W (domain->must_swap, data->orig_tab_offset)); - domain->trans_tab = (struct string_desc *) - ((char *) data + W (domain->must_swap, data->trans_tab_offset)); - domain->hash_size = W (domain->must_swap, data->hash_tab_size); - domain->hash_tab = (nls_uint32 *) - ((char *) data + W (domain->must_swap, data->hash_tab_offset)); - break; - default: - /* This is an illegal revision. */ -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - if (use_mmap) - munmap ((caddr_t) data, size); - else -#endif - free (data); - free (domain); - domain_file->data = NULL; - return; - } - - /* Show that one domain is changed. This might make some cached - translations invalid. */ - ++_nl_msg_cat_cntr; -} - - -#ifdef _LIBC -void -internal_function -_nl_unload_domain (domain) - struct loaded_domain *domain; -{ - if (domain->use_mmap) - munmap ((caddr_t) domain->data, domain->mmap_size); - else - free ((void *) domain->data); - - free (domain); -} -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c deleted file mode 100644 index 18cc68886b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c +++ /dev/null @@ -1,424 +0,0 @@ -/* Handle aliases for locale names. - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - Written by Ulrich Drepper , 1995. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include - -#ifdef __GNUC__ -# define alloca __builtin_alloca -# define HAVE_ALLOCA 1 -#else -# if defined HAVE_ALLOCA_H || defined _LIBC -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca -char *alloca (); -# endif -# endif -# endif -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -# endif -# include -#else -# include -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#include "gettext.h" -#include "gettextP.h" - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ANSI C functions. This is required by the standard - because some ANSI C functions will require linking with this object - file and the name space must not be polluted. */ -# define strcasecmp __strcasecmp - -# define mempcpy __mempcpy -# define HAVE_MEMPCPY 1 - -/* We need locking here since we can be called from different places. */ -# include - -__libc_lock_define_initialized (static, lock); -#endif - - -/* For those loosing systems which don't have `alloca' we have to add - some additional code emulating it. */ -#ifdef HAVE_ALLOCA -/* Nothing has to be done. */ -# define ADD_BLOCK(list, address) /* nothing */ -# define FREE_BLOCKS(list) /* nothing */ -#else -struct block_list -{ - void *address; - struct block_list *next; -}; -# define ADD_BLOCK(list, addr) \ - do { \ - struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ - /* If we cannot get a free block we cannot add the new element to \ - the list. */ \ - if (newp != NULL) { \ - newp->address = (addr); \ - newp->next = (list); \ - (list) = newp; \ - } \ - } while (0) -# define FREE_BLOCKS(list) \ - do { \ - while (list != NULL) { \ - struct block_list *old = list; \ - list = list->next; \ - free (old); \ - } \ - } while (0) -# undef alloca -# define alloca(size) (malloc (size)) -#endif /* have alloca */ - - -struct alias_map -{ - const char *alias; - const char *value; -}; - - -static char *string_space = NULL; -static size_t string_space_act = 0; -static size_t string_space_max = 0; -static struct alias_map *map; -static size_t nmap = 0; -static size_t maxmap = 0; - - -/* Prototypes for local functions. */ -static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) - internal_function; -static void extend_alias_table PARAMS ((void)); -static int alias_compare PARAMS ((const struct alias_map *map1, - const struct alias_map *map2)); - - -const char * -_nl_expand_alias (name) - const char *name; -{ - static const char *locale_alias_path = LOCALE_ALIAS_PATH; - struct alias_map *retval; - const char *result = NULL; - size_t added; - -#ifdef _LIBC - __libc_lock_lock (lock); -#endif - - do - { - struct alias_map item; - - item.alias = name; - - if (nmap > 0) - retval = (struct alias_map *) bsearch (&item, map, nmap, - sizeof (struct alias_map), - (int (*) PARAMS ((const void *, - const void *)) - ) alias_compare); - else - retval = NULL; - - /* We really found an alias. Return the value. */ - if (retval != NULL) - { - result = retval->value; - break; - } - - /* Perhaps we can find another alias file. */ - added = 0; - while (added == 0 && locale_alias_path[0] != '\0') - { - const char *start; - - while (locale_alias_path[0] == ':') - ++locale_alias_path; - start = locale_alias_path; - - while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') - ++locale_alias_path; - - if (start < locale_alias_path) - added = read_alias_file (start, locale_alias_path - start); - } - } - while (added != 0); - -#ifdef _LIBC - __libc_lock_unlock (lock); -#endif - - return result; -} - - -static size_t -internal_function -read_alias_file (fname, fname_len) - const char *fname; - int fname_len; -{ -#ifndef HAVE_ALLOCA - struct block_list *block_list = NULL; -#endif - FILE *fp; - char *full_fname; - size_t added; - static const char aliasfile[] = "/locale.alias"; - - full_fname = (char *) alloca (fname_len + sizeof aliasfile); - ADD_BLOCK (block_list, full_fname); -#ifdef HAVE_MEMPCPY - mempcpy (mempcpy (full_fname, fname, fname_len), - aliasfile, sizeof aliasfile); -#else - memcpy (full_fname, fname, fname_len); - memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); -#endif - - fp = fopen (full_fname, "r"); - if (fp == NULL) - { - FREE_BLOCKS (block_list); - return 0; - } - - added = 0; - while (!feof (fp)) - { - /* It is a reasonable approach to use a fix buffer here because - a) we are only interested in the first two fields - b) these fields must be usable as file names and so must not - be that long - */ - unsigned char buf[BUFSIZ]; - unsigned char *alias; - unsigned char *value; - unsigned char *cp; - - if (fgets (buf, sizeof buf, fp) == NULL) - /* EOF reached. */ - break; - - /* Possibly not the whole line fits into the buffer. Ignore - the rest of the line. */ - if (strchr (buf, '\n') == NULL) - { - char altbuf[BUFSIZ]; - do - if (fgets (altbuf, sizeof altbuf, fp) == NULL) - /* Make sure the inner loop will be left. The outer loop - will exit at the `feof' test. */ - break; - while (strchr (altbuf, '\n') == NULL); - } - - cp = buf; - /* Ignore leading white space. */ - while (isspace (cp[0])) - ++cp; - - /* A leading '#' signals a comment line. */ - if (cp[0] != '\0' && cp[0] != '#') - { - alias = cp++; - while (cp[0] != '\0' && !isspace (cp[0])) - ++cp; - /* Terminate alias name. */ - if (cp[0] != '\0') - *cp++ = '\0'; - - /* Now look for the beginning of the value. */ - while (isspace (cp[0])) - ++cp; - - if (cp[0] != '\0') - { - size_t alias_len; - size_t value_len; - - value = cp++; - while (cp[0] != '\0' && !isspace (cp[0])) - ++cp; - /* Terminate value. */ - if (cp[0] == '\n') - { - /* This has to be done to make the following test - for the end of line possible. We are looking for - the terminating '\n' which do not overwrite here. */ - *cp++ = '\0'; - *cp = '\n'; - } - else if (cp[0] != '\0') - *cp++ = '\0'; - - if (nmap >= maxmap) - extend_alias_table (); - - alias_len = strlen (alias) + 1; - value_len = strlen (value) + 1; - - if (string_space_act + alias_len + value_len > string_space_max) - { - /* Increase size of memory pool. */ - size_t new_size = (string_space_max - + (alias_len + value_len > 1024 - ? alias_len + value_len : 1024)); - char *new_pool = (char *) realloc (string_space, new_size); - if (new_pool == NULL) - { - FREE_BLOCKS (block_list); - return added; - } - string_space = new_pool; - string_space_max = new_size; - } - - map[nmap].alias = memcpy (&string_space[string_space_act], - alias, alias_len); - string_space_act += alias_len; - - map[nmap].value = memcpy (&string_space[string_space_act], - value, value_len); - string_space_act += value_len; - - ++nmap; - ++added; - } - } - } - - /* Should we test for ferror()? I think we have to silently ignore - errors. --drepper */ - fclose (fp); - - if (added > 0) - qsort (map, nmap, sizeof (struct alias_map), - (int (*) PARAMS ((const void *, const void *))) alias_compare); - - FREE_BLOCKS (block_list); - return added; -} - - -static void -extend_alias_table () -{ - size_t new_size; - struct alias_map *new_map; - - new_size = maxmap == 0 ? 100 : 2 * maxmap; - new_map = (struct alias_map *) realloc (map, (new_size - * sizeof (struct alias_map))); - if (new_map == NULL) - /* Simply don't extend: we don't have any more core. */ - return; - - map = new_map; - maxmap = new_size; -} - - -#ifdef _LIBC -static void __attribute__ ((unused)) -free_mem (void) -{ - if (string_space != NULL) - free (string_space); - if (map != NULL) - free (map); -} -text_set_element (__libc_subfreeres, free_mem); -#endif - - -static int -alias_compare (map1, map2) - const struct alias_map *map1; - const struct alias_map *map2; -{ -#if defined _LIBC || defined HAVE_STRCASECMP - return strcasecmp (map1->alias, map2->alias); -#else - const unsigned char *p1 = (const unsigned char *) map1->alias; - const unsigned char *p2 = (const unsigned char *) map2->alias; - unsigned char c1, c2; - - if (p1 == p2) - return 0; - - do - { - /* I know this seems to be odd but the tolower() function in - some systems libc cannot handle nonalpha characters. */ - c1 = isupper (*p1) ? tolower (*p1) : *p1; - c2 = isupper (*p2) ? tolower (*p2) : *p2; - if (c1 == '\0') - break; - ++p1; - ++p2; - } - while (c1 == c2); - - return c1 - c2; -#endif -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in deleted file mode 100755 index b3bcca4d73..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in +++ /dev/null @@ -1,102 +0,0 @@ -# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper , 1995. -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -1 { - i\ -/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ -\ -#if HAVE_CONFIG_H\ -# include \ -#endif\ -\ -#include "libgettext.h"\ -\ -const struct _msg_ent _msg_tbl[] = { - h - s/.*/0/ - x -} -# -# Write msgid entries in C array form. -# -/^msgid/ { - s/msgid[ ]*\(".*"\)/ {\1/ - tb -# Append the next line - :b - N -# Look whether second part is continuation line. - s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ -# Yes, then branch. - ta -# Because we assume that the input file correctly formed the line -# just read cannot be again be a msgid line. So it's safe to ignore -# it. - s/\(.*\)\n.*/\1/ - bc -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use D here. - s/.*\n\(.*\)/\1/ -# Some buggy seds do not clear the `successful substitution since last ``t''' -# flag on `N', so we do a `t' here to clear it. - tb -# Not reached - :c - x -# The following nice solution is by -# Bruno - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x - G - s/\(.*\)\n\([0-9]*\)/\1, \2},/ - s/\(.*\)"$/\1/ - p -} -# -# Last line. -# -$ { - i\ -};\ - - g - s/0*\(.*\)/int _msg_tbl_length = \1;/p -} -d diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c deleted file mode 100644 index 2e8facb1f8..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Implementation of the textdomain(3) function. - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - Written by Ulrich Drepper , 1995. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include -#endif - -#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC -# include -#else -# include -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif - -#ifdef _LIBC -# include -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ - -/* Name of the default text domain. */ -extern const char _nl_default_default_domain[]; - -/* Default text domain in which entries for gettext(3) are to be found. */ -extern const char *_nl_current_default_domain; - - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define TEXTDOMAIN __textdomain -# ifndef strdup -# define strdup(str) __strdup (str) -# endif -#else -# define TEXTDOMAIN textdomain__ -#endif - -/* Set the current default message catalog to DOMAINNAME. - If DOMAINNAME is null, return the current default. - If DOMAINNAME is "", reset to the default of "messages". */ -char * -TEXTDOMAIN (domainname) - const char *domainname; -{ - char *old; - - /* A NULL pointer requests the current setting. */ - if (domainname == NULL) - return (char *) _nl_current_default_domain; - - old = (char *) _nl_current_default_domain; - - /* If domain name is the null string set to default domain "messages". */ - if (domainname[0] == '\0' - || strcmp (domainname, _nl_default_default_domain) == 0) - _nl_current_default_domain = _nl_default_default_domain; - else - { - /* If the following malloc fails `_nl_current_default_domain' - will be NULL. This value will be returned and so signals we - are out of core. */ -#if defined _LIBC || defined HAVE_STRDUP - _nl_current_default_domain = strdup (domainname); -#else - size_t len = strlen (domainname) + 1; - char *cp = (char *) malloc (len); - if (cp != NULL) - memcpy (cp, domainname, len); - _nl_current_default_domain = cp; -#endif - } - - if (old != _nl_default_default_domain) - free (old); - - return (char *) _nl_current_default_domain; -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__textdomain, textdomain); -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed deleted file mode 100755 index b19c0bbd0e..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed +++ /dev/null @@ -1,104 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper , 1995. -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# We copy all comments into the .msg file. Perhaps they can help. -# -/^#/ s/^#[ ]*/$ /p -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { -# Does not work now -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ - p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/\1/ - x -# The following nice solution is by -# Bruno - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x -# Bring the line in the format ` ' - G - s/^[^\n]*$/& / - s/\(.*\)\n\([0-9]*\)/\2 \1/ -# Clear flag from last substitution. - tb -# Append the next line. - :b - N -# Look whether second part is a continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that `D' includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use the sed command `D' here - s/.*\n\(.*\)/\1/ - tb -} -d diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in deleted file mode 100644 index 629f3d4b46..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in +++ /dev/null @@ -1,250 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper -# -# This file file be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -DESTDIR = - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = $(DESTDIR)@prefix@ -exec_prefix = @exec_prefix@ -datadir = $(prefix)/@DATADIRNAME@ -localedir = $(datadir)/locale -gnulocaledir = $(prefix)/share/locale -gettextsrcdir = $(prefix)/share/gettext/po -subdir = po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = ../scripts/mkinstalldirs - -CC = @CC@ -GENCAT = @GENCAT@ -GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ -MSGMERGE = PATH=../src:$$PATH msgmerge - -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -SOURCES = cat-id-tbl.c -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -DISTFILES = Makefile.in.in POTFILES.in $(PACKAGE).pot \ -stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) - -POTFILES = \ - -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -INSTOBJEXT = @INSTOBJEXT@ - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat - -.c.o: - $(COMPILE) $< - -.po.pox: - $(MAKE) $(PACKAGE).pot - $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox - -.po.mo: - $(MSGFMT) -o $@ $< - -.po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) -o $$file $< - -.po.cat: - sed -f ../intl/po2msg.sed < $< > $*.msg \ - && rm -f $@ && $(GENCAT) $@ $*.msg - - -all: all-@USE_NLS@ - -all-yes: cat-id-tbl.c $(CATALOGS) -all-no: - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) - $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ - --add-comments --keyword=_ --keyword=N_ \ - --files-from=$(srcdir)/POTFILES.in \ - && test ! -f $(PACKAGE).po \ - || ( rm -f $(srcdir)/$(PACKAGE).pot \ - && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) - -$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: -$(srcdir)/stamp-cat-id: $(PACKAGE).pot - rm -f cat-id-tbl.tmp - sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ - | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp - if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ - rm cat-id-tbl.tmp; \ - else \ - echo cat-id-tbl.c changed; \ - rm -f $(srcdir)/cat-id-tbl.c; \ - mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ - fi - cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ -install-data-no: all -install-data-yes: all - if test -r "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $(datadir); \ - else \ - $(SHELL) ../scripts/mkinstalldirs $(datadir); \ - fi - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - case "$$cat" in \ - *.gmo) destdir=$(gnulocaledir);; \ - *) destdir=$(localedir);; \ - esac; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - dir=$$destdir/$$lang/LC_MESSAGES; \ - if test -r "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $$dir; \ - else \ - $(SHELL) ../scripts/mkinstalldirs $$dir; \ - fi; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ - echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ - fi; \ - if test -r $$cat.m; then \ - $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ - else \ - if test -r $(srcdir)/$$cat.m ; then \ - $(INSTALL_DATA) $(srcdir)/$$cat.m \ - $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ - else \ - true; \ - fi; \ - fi; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - if test -r "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $(gettextsrcdir); \ - else \ - $(SHELL) ../scripts/mkinstalldirs $(gettextsrcdir); \ - fi; \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ - rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ - rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ - rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ - done - rm -f $(gettextsrcdir)/po-Makefile.in.in - -check: all - -cat-id-tbl.o: ../intl/libgettext.h - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: update-po $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir) || echo ignore; \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - PATH=`pwd`/../src:$$PATH; \ - cd $(srcdir); \ - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - mv $$lang.po $$lang.old.po; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ - rm -f $$lang.old.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.po; \ - mv $$lang.old.po $$lang.po; \ - fi; \ - done - -POTFILES: POTFILES.in - ( if test 'x$(srcdir)' != 'x.'; then \ - posrcprefix='$(top_srcdir)/'; \ - else \ - posrcprefix="../"; \ - fi; \ - rm -f $@-t $@ \ - && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ - -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ - | sed -e '$$s/\\$$//') > $@-t \ - && chmod a-w $@-t \ - && mv $@-t $@ ) - -Makefile: Makefile.in.in ../config.status POTFILES - cd .. \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in deleted file mode 100644 index 8b9106da56..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in +++ /dev/null @@ -1,19 +0,0 @@ -apps/gsmsmsd.cc -apps/gsmsendsms.cc -apps/gsmpb.cc -apps/gsmctl.cc -apps/gsmsmsstore.cc -gsmlib/gsm_at.cc -gsmlib/gsm_error.cc -gsmlib/gsm_event.cc -gsmlib/gsm_me_ta.cc -gsmlib/gsm_nls.cc -gsmlib/gsm_parser.cc -gsmlib/gsm_phonebook.cc -gsmlib/gsm_sms.cc -gsmlib/gsm_sms_codec.cc -gsmlib/gsm_sms_store.cc -gsmlib/gsm_unix_serial.cc -gsmlib/gsm_util.cc -gsmlib/gsm_sorted_phonebook.cc -gsmlib/gsm_sorted_sms_store.cc diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/cat-id-tbl.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/cat-id-tbl.c deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.gmo b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.gmo deleted file mode 100644 index 7ac755ac73d7810320dafa6fbb64875a20636f6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34591 zcmb`P34moqb@wkI0t3n>t0I?yVR~fVY`_4++B4Gw4bwBjbPpoqC~vvl@6oT{Yu++T zi*bvID;kx!izdXl;gUp+iTh_34M+?oYBbRg=hMWvB+-aOO!E7ms=D{Sr2#+lpyq#X z-C9qbI_K1>s{Y3l9(PB?uYE`qJq7%uqoe4@Ja0Wku~BsDnNc(fo(5h3?glRgUk$DT zKkwgv2Cn6OZ5&1Cfn`wNUj-`PC&4w~kHHpr&RJ1Z1z!(d2}Vm@x~sqqymrC$;0M74 z@VnqGVCig^?_Th7-q)Yw>g|9dyuTA%4&DbU|AXKGaMiLXS^>TbY=VCSt^_xp8$|`M z2^PV(f@<%7gS){CC`{>I4bFg{0B6BvRHpdf0xtwV3Em0*1bjUBIx0IHd^7k&@Ezch z;0M9uz>k5)f?oiS0RJ959ee=%8u$xP<$vXA&Ro=Hjwf7ejZf%Z-FZB=b+kg3`9N#JQX}1Tn18QbP;$ySOrf7-{Rjt44%gO zKZ9z|VI&frPXW&W*Mn-`6!--2*&ss@&4Fsqo4_Z79|AQG?*-MK$HTNIf~SB=e;%lM zZuHm!W8Pl@o(bL!s$KW`_wRsK4$Q2ne+nr2tp=Y2UJ0H6PJuBv1FHO&`0u|1s=Xft zHI9D*)f-(4fQ1!k8ycYZjsQw)SbDj*I1d8q} zL8eG_35bY@D&Se*Z~FIlgKF13pv^N-fet+r91u-$45&+m3KL)er)malc4f7K-GIY zDE|0eQ29R#s-O3RyTG4<>hIPKj&2Q5`CkQ!Uq1kz27UoN1w06fza9oPK1W>Yp_)M21WN5fy)1SQ29Opo(g^z)V%q+fBzY%bjM%j;#Yv`#}@E(a5t#@dqMU4 zrJ&0BZBX@p02CcR1ByO>1!~;B3?f>hZ+KjS@RwY?7*zT_9%n$+b1NwM^a@bvJ_2f9 zd>uq2MMqxYbnhm3it;9{$Wu4 z`4TAlNLj0&t3cJe8#H==qW3F6&4)LF>d)_kqW_(^A$}jRC_-N*1&tf>%sM7j-D?8r3Zfx z)VRG5RQo>xiZ1^IYQ8@RsvU=Iar9XVs@`>=+CK%J3C@BVrcK}(|h2C@x>T;B)H4tvp~(?8Bp~f z0M*~$0>xiQBYv0yx6^tHJBQkAdp{;k>Aw zBcR%SIVgU=3A_mGf~xOsQ00CORDZt*ivCA#b@iMBYTj%BHJ&q|`tefm2=E=C+VgHu z^!pU3^6mxC27m0|PnmG-x*Sx!H-oBgA1M0X0jhm>fhzw~;L+e$K(+td;5lHl&CRQ2 zp!j79d;-`2pLz�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\n" -"Language-Team: Peter Hofmann\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-15\n" -"Content-Transfer-Encoding: 8bit\n" - -# , c-format -#: apps/gsmsmsd.cc:164 -#, c-format -msgid "could not execute '%s'" -msgstr "konnte '%s' nicht ausführen" - -# , c-format -#: apps/gsmsmsd.cc:168 -#, c-format -msgid "error writing to '%s'" -msgstr "Fehler beim Schreiben zu '%s'" - -# , c-format -#: apps/gsmsmsd.cc:196 -#, c-format -msgid "error when calling opendir('%s')(errno: %d/%s)" -msgstr "Fehler beim Aufruf von opendir('%s') (errno: %d/%s)" - -# , c-format -#: apps/gsmsmsd.cc:225 -#, c-format -msgid "count not open SMS spool file %s" -msgstr "kann SMS Spool-Datei '%s' nicht öffnen" - -# , c-format -#: apps/gsmsmsd.cc:341 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 -#: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 -#, c-format -msgid ": version %s [compiled %s]" -msgstr ": Version %s [kompiliert am %s]" - -#: apps/gsmsmsd.cc:346 -msgid "" -": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" -" [-s spool dir][-t][-v]{sms_type}" -msgstr "" -": [-a Aktion][-b Baud-Rate][-C sca][-d Gerät][-f][-h][-I Init String]\n" -" [-s Spoolverzeichnis][-t][-v]{SMS-Typ}" - -#: apps/gsmsmsd.cc:350 -msgid "" -" -a, --action the action to execute when an SMS arrives\n" -" (SMS is send to stdin of action)" -msgstr "" -" -a, --action die auszuführende Aktion, wenn eine SMS eintrifft\n" -" (Kurznachricht wird zur Standardeingabe der Aktion\n" -" geschrieben)" - -#: apps/gsmsmsd.cc:354 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 -#: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 -msgid " -b, --baudrate baudrate to use for device (default: 38400)" -msgstr "" -" -b, --baudrate für das Gerät zu verwendende Baud-Rate\n" -" (Voreinstellung: 38400)" - -#: apps/gsmsmsd.cc:357 -msgid " -c, --concatenate start ID for concatenated SMS messages" -msgstr " -c, --concatenate Start-ID für verbundene SMS-Nachrichten" - -#: apps/gsmsmsd.cc:359 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 -msgid " -C, --sca SMS service centre address" -msgstr " -C, --sca SMS service centre address" - -#: apps/gsmsmsd.cc:360 -msgid " -d, --device sets the device to connect to" -msgstr " -d, --device stellt das Ziel-Gerät ein" - -#: apps/gsmsmsd.cc:361 -msgid " -D, --direct enable direct routing of SMSs" -msgstr "" -" -D, --direct direkte Weiterleitung von SMSs ohne Zwischenspeicherung" - -#: apps/gsmsmsd.cc:362 -msgid " -f, --flush flush SMS from store" -msgstr " -f, --flush lösche und bearbeite SMS im Speicher" - -#: apps/gsmsmsd.cc:363 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 -#: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 -msgid " -h, --help prints this message" -msgstr " -h, --help gibt diesen Hilfetext aus" - -#: apps/gsmsmsd.cc:364 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 -#: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 -msgid " -I, --init device AT init sequence" -msgstr " -I, --init AT-Initialisierungssequenz" - -#: apps/gsmsmsd.cc:365 apps/gsmsendsms.cc:163 -msgid " -r, --requeststat request SMS status report" -msgstr " -r, --requeststat fordert SMS-Statusreport an" - -#: apps/gsmsmsd.cc:366 -msgid " -s, --spool spool directory for outgoing SMS" -msgstr " -s, --spool Spool-Verzeichnis für zu sendende SMS" - -#: apps/gsmsmsd.cc:368 -msgid "" -" -t, --store name of SMS store to use for flush\n" -" and/or temporary SMS storage" -msgstr "" -" -t, --store gibt den zu verwendenden SMS-Speicher an (für flush-\n" -" Option und/oder temporären SMS-Speicher)" - -#: apps/gsmsmsd.cc:371 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 -#: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 -msgid " -v, --version prints version and exits" -msgstr " -v, --version gibt Versionsnummer aus und terminiert" - -#: apps/gsmsmsd.cc:372 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 -#: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 -msgid " -X, --xonxoff switch on software handshake" -msgstr " -X, --xonxoff Software Handshake anschalten" - -#: apps/gsmsmsd.cc:374 -msgid " sms_type may be any combination of" -msgstr " SMS-Typ kann aus den folgenden Parametern kombiniert werden:" - -#: apps/gsmsmsd.cc:375 -msgid " sms, no_sms controls reception of normal SMS" -msgstr " sms, no_sms schaltet Empfang von normalen SMS an bzw. aus" - -#: apps/gsmsmsd.cc:377 -msgid " cb, no_cb controls reception of cell broadcast messages" -msgstr "" -" cb, no_cb schaltet Empfang von Zellen-weiten Nachrichten an bzw. " -"aus" - -#: apps/gsmsmsd.cc:379 -msgid " stat, no_stat controls reception of status reports" -msgstr " stat, no_stat schaltet Empfang von Status-Reports an bzw. aus" - -#: apps/gsmsmsd.cc:381 -msgid " default is \"sms cb stat\"" -msgstr " Die Voreinstellung ist \"sms cb stat\"." - -#: apps/gsmsmsd.cc:382 -msgid "If no action is given, the SMS is printed to stdout" -msgstr "" -"Wenn keine Aktion angegeben ist, wird die SMS auf der Standardausgabe\n" -"angezeigt." - -#: apps/gsmsmsd.cc:387 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 -#: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 -msgid "unknown option" -msgstr "unbekannte Option" - -# , c-format -#: apps/gsmsmsd.cc:426 -#, c-format -msgid "error when calling sigaction() (errno: %d/%s)" -msgstr "Fehler beim Aufruf von sigaction() (errno: %d/%s)" - -#: apps/gsmsmsd.cc:446 -msgid "store name must be given for flush option" -msgstr "Speichername muß angegeben werden für flush-Option" - -#. process the new message -#: apps/gsmsmsd.cc:454 apps/gsmsmsd.cc:522 -msgid "Type of message: " -msgstr "Typ der Nachricht: " - -#: apps/gsmsmsd.cc:458 apps/gsmsmsd.cc:526 -msgid "SMS message\n" -msgstr "SMS Nachricht\n" - -#: apps/gsmsmsd.cc:461 -msgid "submit report message\n" -msgstr "Submit-Report-Nachricht\n" - -#: apps/gsmsmsd.cc:464 apps/gsmsmsd.cc:532 -msgid "status report message\n" -msgstr "Status-Report-Nachricht\n" - -#: apps/gsmsmsd.cc:529 -msgid "cell broadcast message\n" -msgstr "Zellen-weite Nachricht\n" - -#: apps/gsmsmsd.cc:585 apps/gsmsmsd.cc:587 apps/gsmsendsms.cc:253 -#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:435 -msgid "[ERROR]: " -msgstr "[FEHLER]: " - -#: apps/gsmsmsd.cc:588 -msgid "(try setting sms_type, please refer to gsmsmsd manpage)" -msgstr "" -"(versuchen Sie, den sms_type zu setzen; siehe auch gsmsmsd Manual-Seite)" - -#: apps/gsmsendsms.cc:149 -msgid "" -": [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n" -" [-t][-v][-X] phonenumber [text]" -msgstr "" -": [-b Baud-Rate][-c concatenatedID][-C sca][-d Gerät][-h][-I Init String]\n" -" [-t][-v][-X] Telefonnummer [Text]" - -#: apps/gsmsendsms.cc:156 -msgid " -c, --concatenate ID for concatenated SMS messages" -msgstr " -c, --concatenate ID für verbundene SMS-Nachrichten" - -#: apps/gsmsendsms.cc:159 apps/gsmctl.cc:392 -msgid " -d, --device sets the destination device to connect to" -msgstr " -d, --device stellt das Ziel-Gerät ein" - -#: apps/gsmsendsms.cc:164 -msgid "" -" -t, --test convert text to GSM alphabet and vice\n" -" versa, no SMS message is sent" -msgstr "" -" -t, --test konvertiert den Text in das GSM-Alphabet und\n" -" wieder zurück. Es wird keine SMS-Nachricht versendet." - -#: apps/gsmsendsms.cc:171 -msgid " phonenumber recipient's phone number" -msgstr " Telefonummer die Telefonnummer des Empfängers" - -#: apps/gsmsendsms.cc:172 -msgid "" -" text optional text of the SMS message\n" -" if omitted: read from stdin" -msgstr "" -" text Text der SMS-Nachricht (optional),\n" -" wenn nicht angegeben: lese von der Standardeingabe" - -#: apps/gsmsendsms.cc:205 -msgid "phone number and text missing" -msgstr "weder Telefonnummer noch Text angegeben" - -#: apps/gsmsendsms.cc:208 apps/gsmsmsstore.cc:261 -msgid "more than two parameters given" -msgstr "mehr als zwei Parameter angegeben" - -#: apps/gsmsendsms.cc:224 -msgid "text is larger than 160 characters" -msgstr "der Text ist länger als 160 Zeichen" - -# , c-format -#: apps/gsmpb.cc:102 apps/gsmpb.cc:491 -#, c-format -msgid "inserting '%s' tel# %s" -msgstr "füge ein '%s' Tel# %s" - -# , c-format -#: apps/gsmpb.cc:105 apps/gsmpb.cc:230 apps/gsmpb.cc:494 -#, c-format -msgid " (index #%d)" -msgstr " (Index #%d)" - -# , c-format -#: apps/gsmpb.cc:144 -#, c-format -msgid "updating '%s' tel# %s to new tel# %s" -msgstr "überschreibe '%s' Tel# %s mit neuer Tel# %s" - -# , c-format -#: apps/gsmpb.cc:177 -#, c-format -msgid "updating '%s' tel# %s to new tel# %s(index %d)" -msgstr "überschreibe '%s' Tel# %s mit neuer Tel# %s (Index %d)" - -# , c-format -#: apps/gsmpb.cc:227 -#, c-format -msgid "deleting '%s' tel# %s" -msgstr "lösche '%s' Tel# %s" - -#: apps/gsmpb.cc:316 -msgid "" -": [-b baudrate][-c][-d device or file][-h][-I init string]\n" -" [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]" -msgstr "" -": [-b Baud-Rate][-c][-d Gerät oder Datei][-h][-I Init String]\n" -" [-p Telefonbuchname][-s Gerät oder Datei][-t Zeichensatz][-v][-V][-y][-X]" - -#: apps/gsmpb.cc:325 -msgid " -c, --copy copy source entries to destination" -msgstr " -c, --copy kopiere Quell-Einträge zum Zielgerät/-datei" - -#: apps/gsmpb.cc:327 -msgid "" -" -d, --destination sets the destination device to connect \n" -" to, or the file to write" -msgstr " -d, --destination setzt das Zielgerät bzw. die Zieldatei" - -#: apps/gsmpb.cc:330 -msgid " -D, --destination-backend sets the destination backend" -msgstr " -D, --destination-backend stellt den Typ des Ziel-Backends ein" - -#: apps/gsmpb.cc:333 -msgid " -i, --index takes index positions into account" -msgstr " -i, --index berücksichtige die Indexpositionen der Einträge" - -#: apps/gsmpb.cc:336 -msgid " -p, --phonebook name of phonebook to use" -msgstr " -p, --phonebook Name des zu verwendenden Telefonbuchs" - -#: apps/gsmpb.cc:337 apps/gsmsmsstore.cc:210 -msgid "" -" -s, --source sets the source device to connect to,\n" -" or the file to read" -msgstr " -s, --source setzt das Quellgerät bzw. die Quelldatei" - -#: apps/gsmpb.cc:339 -msgid "" -" -t, --charset sets the character set to use for\n" -" phonebook entries" -msgstr " -t, --charset setzt den Zeichensatz für Telefonbucheinträge" - -#: apps/gsmpb.cc:341 -msgid " -S, --source-backend sets the source backend" -msgstr " -S, --source-backend stellt den Typ des Ziel-Backends ein" - -#: apps/gsmpb.cc:344 apps/gsmsmsstore.cc:214 -msgid " -V, --verbose print detailed progress messages" -msgstr " -V, --verbose gibt detaillierte Fortschrittsmeldungen aus" - -#: apps/gsmpb.cc:347 -msgid "" -" -y, --synchronize synchronize destination with source\n" -" entries (destination is overwritten)\n" -" (see gsmpb(1) for details)" -msgstr "" -" -y, --synchronize synchronisiere das Zielgerät/-datei mit der Quelle\n" -" (Zieleinträge werden eventuell überschrieben)\n" -" (siehe gsmpb(1) für weitere Details)" - -#: apps/gsmpb.cc:360 -msgid "both source and destination must be given" -msgstr "sowohl Quellgerät/-datei als auch Zielgerät/-datei erforderlich" - -#: apps/gsmpb.cc:374 apps/gsmpb.cc:416 -msgid "phonebook name must be given" -msgstr "ein Telefonbuchname muß angegeben werden" - -# , c-format -#: apps/gsmpb.cc:441 -#, c-format -msgid "" -"text '%s' is too large to fit into destination (maximum size %d characters)" -msgstr "" -"Text '%s' ist zu groß für das Zielgerät (maximale Textlänge %d Zeichen)" - -# , c-format -#: apps/gsmpb.cc:447 -#, c-format -msgid "" -"phone number '%s' is too large to fit into destination (maximum size %d " -"characters)" -msgstr "" -"Telefonnummer '%s' ist zu groß für das Zielgerät (maximale Länge %d Zeichen)" - -#: apps/gsmctl.cc:90 -msgid "active " -msgstr "aktiv" - -#: apps/gsmctl.cc:90 -msgid "inactive " -msgstr "inaktiv" - -#: apps/gsmctl.cc:91 -msgid "number: " -msgstr "Telefonnummer: " - -#: apps/gsmctl.cc:92 -msgid " subaddr: " -msgstr " Unteradresse: " - -#: apps/gsmctl.cc:93 -msgid " time: " -msgstr " Zeit: " - -#: apps/gsmctl.cc:105 -msgid " Manufacturer: " -msgstr " Hersteller: " - -#: apps/gsmctl.cc:106 -msgid " Model: " -msgstr " Modell: " - -#: apps/gsmctl.cc:107 -msgid " Revision: " -msgstr " Revision: " - -#: apps/gsmctl.cc:108 -msgid " Serial Number: " -msgstr " Seriennummer: " - -#: apps/gsmctl.cc:116 apps/gsmctl.cc:118 -msgid " Functionality Level: " -msgstr " Funktionalitäts-Level: " - -#: apps/gsmctl.cc:118 -msgid "unsupported" -msgstr "Kommando nicht unterstützt" - -#: apps/gsmctl.cc:128 -msgid "> Status: " -msgstr "> Status: " - -#: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 -#: gsmlib/gsm_sms_codec.cc:204 -msgid "unknown" -msgstr "unbekannt" - -#: apps/gsmctl.cc:132 -msgid "current" -msgstr "aktuell" - -#: apps/gsmctl.cc:133 -msgid "available" -msgstr "verfügbar" - -#: apps/gsmctl.cc:134 -msgid "forbidden" -msgstr "nicht wählbar" - -#: apps/gsmctl.cc:136 apps/gsmctl.cc:147 -msgid " Long name: '" -msgstr " Langname: '" - -#: apps/gsmctl.cc:137 apps/gsmctl.cc:148 -msgid " Short name: '" -msgstr " Kurzname: '" - -#: apps/gsmctl.cc:138 apps/gsmctl.cc:149 -msgid " Numeric name: " -msgstr " Numerischer Name: " - -#: apps/gsmctl.cc:150 -msgid " Mode: " -msgstr " Modus: " - -#: apps/gsmctl.cc:153 -msgid "automatic" -msgstr "automatisch" - -#: apps/gsmctl.cc:154 -msgid "manual" -msgstr "manuell" - -#: apps/gsmctl.cc:155 -msgid "deregister" -msgstr "abmelden" - -#: apps/gsmctl.cc:156 -msgid "manual/automatic" -msgstr "manuell/automatisch" - -#: apps/gsmctl.cc:172 apps/gsmctl.cc:247 -msgid " Voice" -msgstr " Sprache" - -#: apps/gsmctl.cc:176 apps/gsmctl.cc:185 apps/gsmctl.cc:194 -msgid " unknown" -msgstr " unbekannt" - -#: apps/gsmctl.cc:181 apps/gsmctl.cc:249 -msgid " Data" -msgstr " Daten" - -#: apps/gsmctl.cc:190 apps/gsmctl.cc:251 -msgid " Fax" -msgstr " Fax" - -#: apps/gsmctl.cc:229 -msgid "on" -msgstr "an" - -#: apps/gsmctl.cc:229 -msgid "off" -msgstr "aus" - -#: apps/gsmctl.cc:239 -msgid "UnconditionalReason" -msgstr "\"Alle Anrufe\"" - -#: apps/gsmctl.cc:240 -msgid "MobileBusyReason" -msgstr "\"Mobiltelefon besetzt\"" - -#: apps/gsmctl.cc:241 -msgid "NoReplyReason" -msgstr "\"Keine Antwort\"" - -#: apps/gsmctl.cc:242 -msgid "NotReachableReason" -msgstr "\"Nicht erreichbar\"" - -#: apps/gsmctl.cc:261 -msgid "0 ME is powered by the battery" -msgstr "0 ME wird von der Batterie gespeist" - -#: apps/gsmctl.cc:262 -msgid "1 ME has a battery connected, but is not powered by it" -msgstr "1 ME-Batterie ist vorhanden, liefert aber keinen Strom" - -#: apps/gsmctl.cc:264 -msgid "2 ME does not have a battery connected" -msgstr "2 ME-Batterie nicht angeschlossen" - -#: apps/gsmctl.cc:266 -msgid "3 Recognized power fault, calls inhibited" -msgstr "3 Problem mit der Energieversorgung, keine Anrufe möglich" - -# , c-format -#: apps/gsmctl.cc:323 -#, c-format -msgid "unknown facility class parameter '%c'" -msgstr "unbekannter Dienstmerkmal-Parameter '%c'" - -# , c-format -#: apps/gsmctl.cc:336 -#, c-format -msgid "not enough parameters, minimum number of parameters is %d" -msgstr "nicht genügend Parameter, die Mindestanzahl der Parameter ist %d" - -# , c-format -#: apps/gsmctl.cc:340 -#, c-format -msgid "too many parameters, maximum number of parameters is %d" -msgstr "zu viele Parameter, die Maximalanzahl der Parameter ist %d" - -#: apps/gsmctl.cc:385 -msgid "" -": [-b baudrate][-d device][-h][-I init string][-o operation]\n" -" [-v][-X]{parameters}" -msgstr "" -": [-b Baud-Rate][-d Gerät][-h][-I Init String][-o Operation]\n" -" [-v][-X]{Parameter}" - -#: apps/gsmctl.cc:396 -msgid "" -" -o, --operation operation to perform on the mobile \n" -" phone with the specified parameters" -msgstr "" -" -o, --operation gibt die Operation an, die auf dem Mobiltelefon\n" -" mit den angegebenen Parametern ausgeführt werden soll" - -#: apps/gsmctl.cc:402 -msgid "" -" parameters parameters to use for the operation\n" -" (if an operation is given) or\n" -" a specification which kind of\n" -" information to read from the mobile phone" -msgstr "" -" Parameter die für die Operation zu verwendenden Parameter\n" -" (wenn eine Operation ausgeführt werden soll) oder\n" -" die Spezifikation der vom Mobiltelefon zu lesenden\n" -" Informationen" - -#: apps/gsmctl.cc:408 -msgid "" -"Refer to gsmctl(1) for details on the available parameters and operations." -msgstr "" -"Bitte beziehen Sie sich auf die Manual-Seite gsmctl(1) für weitere Details\n" -"über die unterstützten Parameter und Operationen." - -# , c-format -#: apps/gsmctl.cc:471 -#, c-format -msgid "unknown information parameter '%s'" -msgstr "unbekannter Informations-Parameter '%s'" - -# , c-format -#: apps/gsmctl.cc:520 -#, c-format -msgid "unknown opmode parameter '%s'" -msgstr "Unbekannter (Operations-)Modus-Parameter '%s'" - -# , c-format -#: apps/gsmctl.cc:588 -#, c-format -msgid "unknown forward reason parameter '%s'" -msgstr "unbekannter Weiterleitungsgrund-Parameter '%s'" - -# , c-format -#: apps/gsmctl.cc:604 -#, c-format -msgid "unknown forward mode parameter '%s'" -msgstr "unbekannter Weiterleitungs-Modus-Parameter '%s'" - -# , c-format -#: apps/gsmctl.cc:625 -#, c-format -msgid "unknown operation '%s'" -msgstr "unbekannte Operation '%s'" - -# , c-format -#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:363 apps/gsmsmsstore.cc:380 -#, c-format -msgid "inserting entry #%d from source into destination" -msgstr "füge Eintrag #%d von Quellgerät/-datei in Zielgerät/-datei ein" - -# , c-format -#: apps/gsmsmsstore.cc:102 -#, c-format -msgid "incompatible options '%c' and '%c'" -msgstr "inkompatible Optionen '%c' und '%c'" - -#: apps/gsmsmsstore.cc:184 -msgid "" -": [-a][-b baudrate][-c][-C sca][-d device or file]\n" -" [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n" -" [-v][-V][-x][-X]{indices}|[phonenumber text]" -msgstr "" -": [-a][-b Baud-Rate][-c][-C sca][-d Gerät oder Datei]\n" -" [-h][-I Init String][-k][-l][-s Gerät oder Datei][-t SMS Speichername]\n" -" [-v][-V][-x][-X]{Indices}|[Telefonnummer Text]" - -#: apps/gsmsmsstore.cc:191 -msgid "" -" -a, --add add new SMS submit message\n" -" (phonenumber and text) to destination" -msgstr "" -" -a, --add füge neue SMS-Submit-Nachricht (Telefonnummer und\n" -" Text) in das Zielgerät/-datei ein" - -#: apps/gsmsmsstore.cc:197 -msgid "" -" -c, --copy copy source entries to destination\n" -" (if indices are given, copy only these entries)" -msgstr "" -" -c, --copy kopiere Quell-Einträge in das Zielgerät/-datei\n" -" (wenn Indices angegeben sind, kopiere nur diese Einträge)" - -#: apps/gsmsmsstore.cc:201 -msgid "" -" -d, --destination sets the destination device to\n" -" connect to, or the file to write to" -msgstr " -d, --destination setzt das Zielgerät bzw. die Zieldatei" - -#: apps/gsmsmsstore.cc:206 -msgid "" -" -k, --backup backup new entries to destination\n" -" (if indices are given, copy only these entries)" -msgstr "" -" -k, --backup sichert alle neuen Einträge in die Zieldatei/-gerät\n" -" (wenn Indices angegeben sind, sichere nur diese Einträge)" - -#: apps/gsmsmsstore.cc:209 -msgid " -l, --list list source to stdout" -msgstr "" -" -l, --list schreibe Liste der Quelleinträge auf die Standardausgabe" - -#: apps/gsmsmsstore.cc:212 -msgid " -t, --store name of SMS store to use" -msgstr " -t, --store gibt den zu verwendenden SMS-Speicher an" - -#: apps/gsmsmsstore.cc:216 -msgid " -x, --delete delete entries denoted by indices" -msgstr "" -" -x, --delete lösche die durch die Indices spezifizierten Einträge" - -#: apps/gsmsmsstore.cc:229 -msgid "no operation option given" -msgstr "keine Operations-Option angegeben" - -#: apps/gsmsmsstore.cc:232 -msgid "both source and destination required" -msgstr "sowohl Quellgerät/-datei als auch Zielgerät/-datei erforderlich" - -#: apps/gsmsmsstore.cc:237 -msgid "destination must not be given" -msgstr "Zielgerät/-datei darf nicht angegeben werden" - -#: apps/gsmsmsstore.cc:239 -msgid "source required" -msgstr "Quellgerät/-datei erforderlich" - -#: apps/gsmsmsstore.cc:244 -msgid "source must not be given" -msgstr "Quellgerät/-datei darf nicht angegeben werden" - -#: apps/gsmsmsstore.cc:246 -msgid "destination required" -msgstr "Zielgerät/-datei erforderlich" - -# , c-format -#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:285 -#, c-format -msgid "expected number, got '%s'" -msgstr "Zahl erwartet, nicht '%s'" - -#: apps/gsmsmsstore.cc:264 -msgid "not enough parameters given" -msgstr "nicht genügend Parameter angegeben" - -#: apps/gsmsmsstore.cc:269 -msgid "unexpected parameters" -msgstr "unerwartete Parameter" - -#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:317 -msgid "store name must be given" -msgstr "Speichername muß angegeben werden" - -# , c-format -#: apps/gsmsmsstore.cc:344 apps/gsmsmsstore.cc:377 -#, c-format -msgid "no index '%s' in source" -msgstr "kein Index '%s' in der Quelldatei/-gerät" - -# , c-format -#: apps/gsmsmsstore.cc:392 -#, c-format -msgid "index #%d" -msgstr "Index #%d" - -#: apps/gsmsmsstore.cc:406 -msgid "inserting new entry into destination" -msgstr "füge neuen Eintrag in das Zielgerät/-datei ein" - -# , c-format -#: apps/gsmsmsstore.cc:421 -#, c-format -msgid "deleting entry #%d from destination" -msgstr "lösche Eintrag #%d von Zielgerät/-datei" - -# , c-format -#: apps/gsmsmsstore.cc:426 -#, c-format -msgid "no index '%s' in destination" -msgstr "kein Index '%s' in Zielgerät/-datei" - -#: gsmlib/gsm_at.cc:66 -msgid "unspecified ME/TA error" -msgstr "unspezifizierter ME/TA-Fehler" - -#: gsmlib/gsm_at.cc:76 -msgid "ME/TA error '" -msgstr "ME/TA-Fehler '" - -# , c-format -#: gsmlib/gsm_at.cc:80 -#, c-format -msgid "(code %s)" -msgstr "(Code %s)" - -#: gsmlib/gsm_at.cc:125 gsmlib/gsm_at.cc:215 gsmlib/gsm_at.cc:344 -msgid "ME/TA error '' (code not known)" -msgstr "ME/TA-Fehler '' (Code nicht bekannt)" - -# , c-format -#: gsmlib/gsm_at.cc:184 gsmlib/gsm_at.cc:365 -#, c-format -msgid "unexpected response '%s' when sending 'AT%s'" -msgstr "unerwartete Antwort '%s' beim Senden von 'AT%s'" - -#: gsmlib/gsm_at.cc:318 -msgid "unexpected character in PDU handshake" -msgstr "unerwartetes Zeichen im PDU-Handshake" - -#: gsmlib/gsm_error.cc:29 -msgid "phone failure" -msgstr "Telefon-Fehler" - -#: gsmlib/gsm_error.cc:32 -msgid "no connection to phone" -msgstr "keine Verbindung zum Telefon" - -#: gsmlib/gsm_error.cc:35 -msgid "phone adaptor link reserved" -msgstr "Telefonadapter-Verbindung reserviert" - -#: gsmlib/gsm_error.cc:38 gsmlib/gsm_error.cc:259 -msgid "operation not allowed" -msgstr "Operation nicht erlaubt" - -#: gsmlib/gsm_error.cc:41 gsmlib/gsm_error.cc:262 -msgid "operation not supported" -msgstr "Operation nicht unterstützt" - -#: gsmlib/gsm_error.cc:44 -msgid "ph SIM PIN required" -msgstr "ph SIM PIN erforderlich" - -#: gsmlib/gsm_error.cc:47 gsmlib/gsm_error.cc:271 -msgid "SIM not inserted" -msgstr "SIM nicht eingesteckt" - -#: gsmlib/gsm_error.cc:50 gsmlib/gsm_error.cc:274 -msgid "SIM PIN required" -msgstr "SIM PIN erforderlich" - -#: gsmlib/gsm_error.cc:53 gsmlib/gsm_error.cc:289 -msgid "SIM PUK required" -msgstr "SIM PUK erforderlich" - -#: gsmlib/gsm_error.cc:56 gsmlib/gsm_error.cc:280 -msgid "SIM failure" -msgstr "SIM-Fehler" - -#: gsmlib/gsm_error.cc:59 gsmlib/gsm_error.cc:283 -msgid "SIM busy" -msgstr "SIM beschäftigt" - -#: gsmlib/gsm_error.cc:62 gsmlib/gsm_error.cc:286 -msgid "SIM wrong" -msgstr "falsche SIM" - -#: gsmlib/gsm_error.cc:65 -msgid "incorrect password" -msgstr "falsches Paßwort" - -#: gsmlib/gsm_error.cc:68 gsmlib/gsm_error.cc:292 -msgid "SIM PIN2 required" -msgstr "SIM PIN2 erforderlich" - -#: gsmlib/gsm_error.cc:71 gsmlib/gsm_error.cc:295 -msgid "SIM PUK2 required" -msgstr "SIM PUK2 erforderlich" - -#: gsmlib/gsm_error.cc:74 gsmlib/gsm_error.cc:304 -msgid "memory full" -msgstr "Speicher voll" - -#: gsmlib/gsm_error.cc:77 -msgid "invalid index" -msgstr "ungültiger Index" - -#: gsmlib/gsm_error.cc:80 -msgid "not found" -msgstr "nicht gefunden" - -#: gsmlib/gsm_error.cc:83 gsmlib/gsm_error.cc:298 -msgid "memory failure" -msgstr "Speicher-Fehler" - -#: gsmlib/gsm_error.cc:86 -msgid "text string too long" -msgstr "Zeichenkette zu lang" - -#: gsmlib/gsm_error.cc:89 -msgid "invalid characters in text string" -msgstr "ungültige Zeichen in der Zeichenkette" - -#: gsmlib/gsm_error.cc:92 -msgid "dial string too long" -msgstr "zu wählende Telefonnummer zu lang" - -#: gsmlib/gsm_error.cc:95 -msgid "invalid characters in dial string" -msgstr "ungültige Zeichen in zu wählender Telefonnummer" - -#: gsmlib/gsm_error.cc:98 gsmlib/gsm_error.cc:310 -msgid "no network service" -msgstr "kein Netz" - -#: gsmlib/gsm_error.cc:101 gsmlib/gsm_error.cc:313 -msgid "network timeout" -msgstr "Netz-Zeitüberschreitung" - -# , c-format -#: gsmlib/gsm_error.cc:107 -#, c-format -msgid "invalid ME error %d" -msgstr "ungültiger ME-Fehler %d" - -#: gsmlib/gsm_error.cc:117 -msgid "Unassigned (unallocated) number" -msgstr "nicht zugewiesene Nummer" - -#: gsmlib/gsm_error.cc:120 -msgid "Operator determined barring" -msgstr "vom Operator geschaltete Sperre" - -#: gsmlib/gsm_error.cc:123 -msgid "Call barred" -msgstr "Rufsperre" - -#: gsmlib/gsm_error.cc:126 -msgid "Network failure" -msgstr "Netz-Fehler" - -#: gsmlib/gsm_error.cc:129 -msgid "Short message transfer rejected" -msgstr "Kurznachrichten-Übertragung zurückgewiesen" - -#: gsmlib/gsm_error.cc:133 gsmlib/gsm_error.cc:355 -msgid "Congestion" -msgstr "Netzüberlastung" - -#: gsmlib/gsm_error.cc:136 -msgid "Destination out of service" -msgstr "Ziel außer Betrieb" - -#: gsmlib/gsm_error.cc:139 -msgid "Unidentified subscriber" -msgstr "unidentifizierter Teilnehmer" - -#: gsmlib/gsm_error.cc:142 -msgid "Facility rejected" -msgstr "Dienstmerkmal zurückgewiesen" - -#: gsmlib/gsm_error.cc:145 -msgid "Unknown subscriber" -msgstr "unbekannter Teilnehmer" - -#: gsmlib/gsm_error.cc:148 -msgid "Network out of order" -msgstr "Netz außer Betrieb" - -#: gsmlib/gsm_error.cc:151 -msgid "Temporary failure" -msgstr "temporärer Fehler" - -#: gsmlib/gsm_error.cc:154 -msgid "Resources unavailable, unspecified" -msgstr "Ressourcen nicht verfügbar, nicht spezifiziert" - -#: gsmlib/gsm_error.cc:157 -msgid "Requested facility not subscribed" -msgstr "angefordertes Dienstmerkmal nicht freigeschaltet" - -#: gsmlib/gsm_error.cc:160 -msgid "Requested facility not implemented" -msgstr "angefordertes Dienstmerkmal nicht implementiert" - -#: gsmlib/gsm_error.cc:163 -msgid "Invalid Transaction Identifier" -msgstr "ungültiger Transaktionsbezeichner" - -#: gsmlib/gsm_error.cc:166 -msgid "Semantically incorrect message" -msgstr "semantisch fehlerhafte Nachricht" - -#: gsmlib/gsm_error.cc:169 -msgid "Invalid mandatory information" -msgstr "ungültige, obligatorische Information" - -#: gsmlib/gsm_error.cc:172 -msgid "Message type non-existent or not implemented" -msgstr "Nachrichtentyp nicht existent bzw. nicht implementiert" - -#: gsmlib/gsm_error.cc:175 -msgid "Message not compatible with short message protocol state" -msgstr "Nachricht nicht vereinbar mit Kurznachrichten-Protokollstatus" - -#: gsmlib/gsm_error.cc:178 -msgid "Information element non-existent or not implemented" -msgstr "Informationselement nicht existent oder nicht implementiert" - -#: gsmlib/gsm_error.cc:181 -msgid "Protocol error, unspecified" -msgstr "Protokollfehler, nicht spezifiziert" - -#: gsmlib/gsm_error.cc:184 -msgid "Interworking, unspecified" -msgstr "Interworking, nicht spezifiziert" - -#: gsmlib/gsm_error.cc:187 -msgid "Telematic interworking not supported" -msgstr "Telematisches Interworking nicht unterstützt" - -#: gsmlib/gsm_error.cc:190 -msgid "Short message Type 0 not supported" -msgstr "Kurznachrichtentyp 0 nicht unterstützt" - -#: gsmlib/gsm_error.cc:193 -msgid "Cannot replace short message" -msgstr "kann Kurznachricht nicht ersetzen" - -#: gsmlib/gsm_error.cc:196 -msgid "Unspecified TP-PID error" -msgstr "unspezifizierter TP-PID-Fehler" - -#: gsmlib/gsm_error.cc:199 -msgid "Data coding scheme (alphabet) not supported" -msgstr "Datenkodierungsschema (Alphabet) nicht unterstützt" - -#: gsmlib/gsm_error.cc:202 -msgid "Message class not supported" -msgstr "Nachrichtenklasse nicht unterstützt" - -#: gsmlib/gsm_error.cc:205 -msgid "Unspecifiec TP-DCS error" -msgstr "unspezifizierter TP-DCS-Fehler" - -#: gsmlib/gsm_error.cc:208 -msgid "Command cannot be actioned" -msgstr "Kommando kann nicht ausgeführt werden" - -#: gsmlib/gsm_error.cc:211 -msgid "Command unsupported" -msgstr "Kommando nicht unterstützt" - -#: gsmlib/gsm_error.cc:214 -msgid "Unspecified TP-Command error" -msgstr "unspezifizierter TP-Kommando-Fehler" - -#: gsmlib/gsm_error.cc:217 -msgid "TPDU not supported" -msgstr "TPDU nicht unterstützt" - -#: gsmlib/gsm_error.cc:220 -msgid "SC busy" -msgstr "SC besetzt" - -#: gsmlib/gsm_error.cc:223 -msgid "No SC subscription" -msgstr "SC nicht freigeschaltet" - -#: gsmlib/gsm_error.cc:226 -msgid "SC system failure" -msgstr "SC-Systemfehler" - -#: gsmlib/gsm_error.cc:229 -msgid "Invalid SME address" -msgstr "ungültige SME-Adresse" - -#: gsmlib/gsm_error.cc:232 -msgid "Destination SME barred" -msgstr "Ziel-SME gesperrt" - -#: gsmlib/gsm_error.cc:235 -msgid "SM Rejected-Duplicated SM" -msgstr "Kurznachricht zurückgewiesen - doppelte Kurznachricht" - -#: gsmlib/gsm_error.cc:238 -msgid "SIM SMS storage full" -msgstr "SIM-SMS-Speicher voll" - -#: gsmlib/gsm_error.cc:241 -msgid "No SMS storage capability in SIM" -msgstr "Keine SMS-Speicherfähigkeit in SIM" - -#: gsmlib/gsm_error.cc:244 -msgid "Error in MS" -msgstr "Fehler im MS" - -#: gsmlib/gsm_error.cc:247 -msgid "Memory Capacity Exceed" -msgstr "Speicherkapazität überschritten" - -#: gsmlib/gsm_error.cc:250 -msgid "Unspecified error cause" -msgstr "unspezifizierter Fehlergrund" - -#: gsmlib/gsm_error.cc:253 -msgid "ME failure" -msgstr "ME-Fehler" - -#: gsmlib/gsm_error.cc:256 -msgid "SMS service of ME reserved" -msgstr "SMS-Dienst im ME reserviert" - -#: gsmlib/gsm_error.cc:265 -msgid "invalid PDU mode parameter" -msgstr "ungültiger PDU-Modus-Parameter" - -#: gsmlib/gsm_error.cc:268 -msgid "invalid text mode parameter" -msgstr "ungültiger Text-Modus-Parameter" - -#: gsmlib/gsm_error.cc:277 -msgid "PH-SIM PIN required" -msgstr "PH-SIM PIN erforderlich" - -#: gsmlib/gsm_error.cc:301 -msgid "invalid memory index" -msgstr "ungültiger Speicherindex" - -#: gsmlib/gsm_error.cc:307 -msgid "SMSC address unknown" -msgstr "SMSC-Adresse nicht bekannt" - -#: gsmlib/gsm_error.cc:316 -msgid "no +CNMA acknowledgement expected" -msgstr "keine +CNMA-Bestätigung erwartet" - -#: gsmlib/gsm_error.cc:319 -msgid "unknown error" -msgstr "unbekannter Fehler" - -# , c-format -#: gsmlib/gsm_error.cc:322 -#, c-format -msgid "invalid SMS error %d" -msgstr "ungültiger SMS-Fehler %d" - -#: gsmlib/gsm_error.cc:335 -msgid "Short message received by the SME" -msgstr "Kurznachricht von der SME empfangen" - -#: gsmlib/gsm_error.cc:338 -msgid "" -"Short message forwarded by the SC to the SME but the SC is unable to confirm " -"delivery" -msgstr "" -"die Kurznachricht wurde vom SC zur SME weitergeleitet, aber das SC ist nicht " -"in der Lage, den Empfang zu bestätigen" - -#: gsmlib/gsm_error.cc:342 -msgid "Short message replaced by the SC" -msgstr "Kurznachricht wurde vom SC ersetzt" - -#: gsmlib/gsm_error.cc:345 gsmlib/gsm_error.cc:373 gsmlib/gsm_error.cc:418 -msgid "reserved" -msgstr "reserviert" - -#: gsmlib/gsm_error.cc:358 -msgid "SME busy" -msgstr "SME besetzt" - -#: gsmlib/gsm_error.cc:361 -msgid "No response from SME" -msgstr "keine Antwort vom SME" - -#: gsmlib/gsm_error.cc:364 -msgid "Service rejected" -msgstr "Dienst zurückgewiesen" - -#: gsmlib/gsm_error.cc:367 gsmlib/gsm_error.cc:400 -msgid "Quality of service not available" -msgstr "Dienstqualität nicht verfügbar" - -#: gsmlib/gsm_error.cc:370 -msgid "Error in SME" -msgstr "Fehler im SME" - -#: gsmlib/gsm_error.cc:377 -msgid " (Temporary error, SC is not making any more transfer attempts)" -msgstr " (temporärer Fehler, SC macht keine weiteren Übertragungsversuche)" - -#: gsmlib/gsm_error.cc:380 -msgid " (Temporary error, SC still trying to transfer SM)" -msgstr " (temporärer Fehler, SC versucht weiterhin die SM zu übertragen)" - -#: gsmlib/gsm_error.cc:388 -msgid "Remote Procedure Error" -msgstr "Fern-Prozedur-Aufrufs-Fehler" - -#: gsmlib/gsm_error.cc:391 -msgid "Incompatible destination" -msgstr "inkompatibles Ziel" - -#: gsmlib/gsm_error.cc:394 -msgid "Connection rejected by SME" -msgstr "Verbindung vom SME zurückgewiesen" - -#: gsmlib/gsm_error.cc:397 -msgid "Not obtainable" -msgstr "nicht verfügbar" - -#: gsmlib/gsm_error.cc:403 -msgid "No interworking available" -msgstr "kein Interworking verfügbar" - -#: gsmlib/gsm_error.cc:406 -msgid "SM validity period expired" -msgstr "SM-Gültigkeitszeitraum überschritten" - -#: gsmlib/gsm_error.cc:409 -msgid "SM deleted by originating SME" -msgstr "SM von der sendenden SME gelöscht" - -#: gsmlib/gsm_error.cc:412 -msgid "SM deleted by SC administration" -msgstr "SM von der SC-Administration gelöscht" - -#: gsmlib/gsm_error.cc:415 -msgid "SM does not exit" -msgstr "SM macht keinen Exit" - -#: gsmlib/gsm_error.cc:421 -msgid " (Permanent Error, SC is not making any more transfer attempts)" -msgstr " (permanenter Fehler, SC macht keine weiteren Übertragungsversuche)" - -# , c-format -#: gsmlib/gsm_event.cc:80 -#, c-format -msgid "unexpected number format %d" -msgstr "unerwartetes Telefonnummernformat %d" - -# , c-format -#: gsmlib/gsm_event.cc:100 -#, c-format -msgid "unexpected unsolicited event '%s'" -msgstr "unerwartetes asynchrones Ereignis '%s'" - -#: gsmlib/gsm_me_ta.cc:536 -msgid "unable to set operator" -msgstr "kann den Netzbetreiber nicht setzen" - -#: gsmlib/gsm_me_ta.cc:663 -msgid "call forward time must be in the range 0..30" -msgstr "Rufumleitungszeit muss im Bereich 0..30 sein" - -#: gsmlib/gsm_me_ta.cc:811 -msgid "Functionality Level commands not supported by ME" -msgstr "" -"Funktionalitäts-Level-Kommandos werden vom Gerät (ME) nicht unterstützt" - -#. If the number was just out of range, we get here. -#: gsmlib/gsm_me_ta.cc:830 -msgid "Requested Functionality Level out of range" -msgstr "Angeforderter Funktionalitäts-Level außerhalb des erlaubten Bereichs" - -#: gsmlib/gsm_me_ta.cc:941 -msgid "unsupported alphabet for SMS" -msgstr "nicht unterstütztes Alphabet für SMS" - -#: gsmlib/gsm_me_ta.cc:950 -msgid "SMS text is larger than allowed" -msgstr "SMS-Text ist länger als erlaubt" - -#: gsmlib/gsm_me_ta.cc:962 -msgid "not more than 255 concatenated SMSs allowed" -msgstr "nicht mehr als 255 verbundene SMSs erlaubt" - -#: gsmlib/gsm_me_ta.cc:995 -msgid "only serviceLevel 0 or 1 supported" -msgstr "nur Dienst-Level 0 oder 1 unterstützt" - -#: gsmlib/gsm_me_ta.cc:1108 gsmlib/gsm_me_ta.cc:1150 -msgid "cannot route SMS messages to TE" -msgstr "kann keine Kurznachrichten zum TE weiterleiten" - -#: gsmlib/gsm_me_ta.cc:1122 gsmlib/gsm_me_ta.cc:1164 -msgid "cannot route cell broadcast messages to TE" -msgstr "kann keine Zellen-weiten Nachrichten zum TE weiterleiten" - -#: gsmlib/gsm_me_ta.cc:1134 -msgid "cannot route status reports messages to TE" -msgstr "kann keine Status-Report-Nachrichten zum TE weiterleiten" - -#: gsmlib/gsm_me_ta.cc:1178 -msgid "cannot route status report messages to TE" -msgstr "kann keine Status-Report-Nachrichten zum TE weiterleiten" - -#: gsmlib/gsm_parser.cc:51 -msgid "expected parameter" -msgstr "Parameter erwartet" - -#: gsmlib/gsm_parser.cc:71 -msgid "expected '\"'" -msgstr "'\"' erwartet" - -#: gsmlib/gsm_parser.cc:109 -msgid "expected number" -msgstr "Zahl erwartet" - -# , c-format -#: gsmlib/gsm_parser.cc:120 -#, c-format -msgid "unexpected end of string '%s'" -msgstr "unerwartetes Ende der Zeichenkette '%s'" - -# , c-format -#: gsmlib/gsm_parser.cc:124 -#, c-format -msgid " (at position %d of string '%s')" -msgstr " (an Position %d der Zeichenkette '%s')" - -# , c-format -#: gsmlib/gsm_parser.cc:141 -#, c-format -msgid "expected '%c'" -msgstr "'%c' erwartet" - -#: gsmlib/gsm_parser.cc:165 -msgid "expected ')' or ','" -msgstr "')' oder ',' erwartet" - -#: gsmlib/gsm_parser.cc:251 -msgid "expected ')', ',' or '-'" -msgstr "')', ',' oder '-' erwartet" - -#: gsmlib/gsm_parser.cc:257 -msgid "range of the form a-b-c not allowed" -msgstr "Bereich der Form a-b-c nicht erlaubt" - -#: gsmlib/gsm_parser.cc:264 -msgid "range of the form a- no allowed" -msgstr "Bereich der Form a- nicht erlaubt" - -#: gsmlib/gsm_parser.cc:350 -msgid "expected comma" -msgstr "Komma erwartet" - -#: gsmlib/gsm_parser.cc:367 -msgid "expected end of line" -msgstr "Zeilenende erwartet" - -# , c-format -#: gsmlib/gsm_phonebook.cc:47 -#, c-format -msgid "" -"length of text '%s' exceeds maximum text length (%d characters) of phonebook " -"'%s'" -msgstr "" -"die Länge des Texts '%s' überschreitet die maximale Textlänge (%d Zeichen) " -"des Telefonbuchs '%s'" - -# , c-format -#: gsmlib/gsm_phonebook.cc:55 -#, c-format -msgid "" -"length of telephone number '%s' exceeds maximum telephone number length (%d " -"characters) of phonebook '%s'" -msgstr "" -"die Länge der Telefonnummer '%s' überschreitet die maximale " -"Telefonnummernlänge (%d Zeichen) des Telefonbuchs '%s'" - -#: gsmlib/gsm_phonebook.cc:275 -msgid "phonebook full" -msgstr "Telefonbuch voll" - -#: gsmlib/gsm_phonebook.cc:291 -msgid "attempt to overwrite phonebook entry" -msgstr "Versuch, einen Telefonbucheintrag zu überschreiben" - -#: gsmlib/gsm_phonebook.cc:569 -msgid "SIM card changed while accessing phonebook" -msgstr "SIM-Karte wurde gewechselt beim Zugriff auf Telefonbuch" - -#: gsmlib/gsm_sms.cc:66 gsmlib/gsm_sms.cc:85 gsmlib/gsm_sms.cc:175 -msgid "unhandled SMS TPDU type" -msgstr "unerwarteter SMS TPDU-Typ" - -#: gsmlib/gsm_sms.cc:107 -msgid "can only send SMS-SUBMIT and SMS-COMMAND TPDUs" -msgstr "kann nur SMS-SUBMIT und SMS-COMMAND TPDUs senden" - -#: gsmlib/gsm_sms.cc:111 -msgid "no device given for sending SMS" -msgstr "kein Gerät zum Versenden von SMS angegeben" - -#: gsmlib/gsm_sms.cc:283 -msgid "Message type: SMS-DELIVER" -msgstr "Nachrichtentyp: SMS-DELIVER" - -#: gsmlib/gsm_sms.cc:284 gsmlib/gsm_sms.cc:426 gsmlib/gsm_sms.cc:531 -#: gsmlib/gsm_sms.cc:618 gsmlib/gsm_sms.cc:723 gsmlib/gsm_sms.cc:829 -msgid "SC address: '" -msgstr "SC-Adresse: '" - -#: gsmlib/gsm_sms.cc:285 gsmlib/gsm_sms.cc:532 -msgid "More messages to send: " -msgstr "Mehr Nachrichten zu versenden: " - -#: gsmlib/gsm_sms.cc:286 gsmlib/gsm_sms.cc:445 -msgid "Reply path: " -msgstr "Antwortpfad: " - -#: gsmlib/gsm_sms.cc:287 gsmlib/gsm_sms.cc:446 -msgid "User data header indicator: " -msgstr "Benutzerdatenvorspann (Indikation): " - -#: gsmlib/gsm_sms.cc:289 -msgid "Status report indication: " -msgstr "Status-Report-Indikation: " - -#: gsmlib/gsm_sms.cc:290 -msgid "Originating address: '" -msgstr "Senderadresse: '" - -#: gsmlib/gsm_sms.cc:292 gsmlib/gsm_sms.cc:452 gsmlib/gsm_sms.cc:621 -#: gsmlib/gsm_sms.cc:729 gsmlib/gsm_sms.cc:836 -msgid "Protocol identifier: 0x" -msgstr "Protokollbezeichner: 0x" - -#: gsmlib/gsm_sms.cc:294 gsmlib/gsm_sms.cc:454 gsmlib/gsm_sms.cc:733 -#: gsmlib/gsm_sms.cc:840 -msgid "Data coding scheme: " -msgstr "Datenkodierungsschema: " - -#: gsmlib/gsm_sms.cc:295 gsmlib/gsm_sms.cc:536 gsmlib/gsm_sms.cc:830 -msgid "SC timestamp: " -msgstr "SC-Zeitstempel: " - -#: gsmlib/gsm_sms.cc:296 gsmlib/gsm_sms.cc:456 gsmlib/gsm_sms.cc:735 -#: gsmlib/gsm_sms.cc:842 -msgid "User data length: " -msgstr "Benutzerdatenlänge: " - -#: gsmlib/gsm_sms.cc:297 gsmlib/gsm_sms.cc:457 -msgid "User data header: 0x" -msgstr "Benutzerdatenvorspann: 0x" - -#: gsmlib/gsm_sms.cc:302 gsmlib/gsm_sms.cc:461 gsmlib/gsm_sms.cc:736 -#: gsmlib/gsm_sms.cc:843 -msgid "User data: '" -msgstr "Benutzerdaten: '" - -#: gsmlib/gsm_sms.cc:425 -msgid "Message type: SMS-SUBMIT" -msgstr "Nachrichtentyp: SMS-SUBMIT" - -#: gsmlib/gsm_sms.cc:427 -msgid "Reject duplicates: " -msgstr "Duplikate zurückweisen: " - -#: gsmlib/gsm_sms.cc:428 -msgid "Validity period format: " -msgstr "Gültigkeitszeitraum-Format: " - -#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:183 -msgid "not present" -msgstr "nicht vorhanden" - -#: gsmlib/gsm_sms.cc:435 -msgid "relative" -msgstr "relativ" - -#: gsmlib/gsm_sms.cc:438 -msgid "absolute" -msgstr "absolut" - -#: gsmlib/gsm_sms.cc:448 gsmlib/gsm_sms.cc:620 -msgid "Status report request: " -msgstr "Status-Report-Anforderung: " - -#: gsmlib/gsm_sms.cc:449 gsmlib/gsm_sms.cc:534 gsmlib/gsm_sms.cc:619 -msgid "Message reference: " -msgstr "Nachrichtenreferenz: " - -#: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 -msgid "Destination address: '" -msgstr "Zieladresse: '" - -#: gsmlib/gsm_sms.cc:455 -msgid "Validity period: " -msgstr "Gültigkeitszeitraum: " - -#: gsmlib/gsm_sms.cc:530 -msgid "Message type: SMS-STATUS-REPORT" -msgstr "Nachrichtentyp: SMS-STATUS-REPORT" - -#: gsmlib/gsm_sms.cc:533 -msgid "Status report qualifier: " -msgstr "Status-Report-Attribut: " - -#: gsmlib/gsm_sms.cc:535 -msgid "Recipient address: '" -msgstr "Empfängeradresse: '" - -#: gsmlib/gsm_sms.cc:537 -msgid "Discharge time: " -msgstr "Aussendezeit: " - -#: gsmlib/gsm_sms.cc:538 -msgid "Status: 0x" -msgstr "Status: 0x" - -#: gsmlib/gsm_sms.cc:617 -msgid "Message type: SMS-COMMAND" -msgstr "Nachrichtentyp: SMS-COMMAND" - -#: gsmlib/gsm_sms.cc:623 -msgid "Command type: 0x" -msgstr "Kommandotyp: 0x" - -#: gsmlib/gsm_sms.cc:625 -msgid "Message number: " -msgstr "Nachrichtennummer: " - -#: gsmlib/gsm_sms.cc:628 -msgid "Command data length: " -msgstr "Kommandodatenlänge: " - -#: gsmlib/gsm_sms.cc:629 -msgid "Command data: '" -msgstr "Kommandodaten: '" - -#: gsmlib/gsm_sms.cc:722 -msgid "Message type: SMS-DELIVER-REPORT" -msgstr "Nachrichtentyp: SMS-DELIVER-REPORT" - -#: gsmlib/gsm_sms.cc:724 gsmlib/gsm_sms.cc:831 -msgid "Protocol identifier present: " -msgstr "Protokollbezeichner präsent: " - -#: gsmlib/gsm_sms.cc:726 gsmlib/gsm_sms.cc:833 -msgid "Data coding scheme present: " -msgstr "Datenkodierungsschema präsent: " - -#: gsmlib/gsm_sms.cc:727 gsmlib/gsm_sms.cc:834 -msgid "User data length present: " -msgstr "Benutzerdatenlänge präsent: " - -#: gsmlib/gsm_sms.cc:828 -msgid "Message type: SMS-SUBMIT-REPORT" -msgstr "Nachrichtentyp: SMS-SUBMIT-REPORT" - -#: gsmlib/gsm_sms_codec.cc:188 gsmlib/gsm_sms_codec.cc:190 -msgid " minutes" -msgstr " Minuten" - -#: gsmlib/gsm_sms_codec.cc:192 -msgid " days" -msgstr " Tage" - -#: gsmlib/gsm_sms_codec.cc:194 -msgid " weeks" -msgstr " Wochen" - -#: gsmlib/gsm_sms_codec.cc:213 -msgid "compressed " -msgstr "komprimiert " - -#: gsmlib/gsm_sms_codec.cc:218 -msgid "voicemail message waiting" -msgstr "Sprachnachricht abrufbar" - -#: gsmlib/gsm_sms_codec.cc:221 -msgid "fax message waiting" -msgstr "Faxnachricht abrufbar" - -#: gsmlib/gsm_sms_codec.cc:224 -msgid "electronic mail message waiting" -msgstr "E-Mail-Nachricht abrufbar" - -#: gsmlib/gsm_sms_codec.cc:227 -msgid "other message waiting" -msgstr "andere Nachricht abrufbar" - -#: gsmlib/gsm_sms_codec.cc:234 -msgid "default alphabet" -msgstr "Standardalphabet" - -#: gsmlib/gsm_sms_codec.cc:237 -msgid "8-bit alphabet" -msgstr "8-Bit Alphabet" - -#: gsmlib/gsm_sms_codec.cc:240 -msgid "16-bit alphabet" -msgstr "16-bit Alphabet" - -#: gsmlib/gsm_sms_codec.cc:243 -msgid "reserved alphabet" -msgstr "reserviertes Alphabet" - -#: gsmlib/gsm_sms_codec.cc:256 -msgid "bad hexadecimal PDU format" -msgstr "fehlerhaftes hexadezimales PDU-Format" - -#: gsmlib/gsm_sms_codec.cc:285 gsmlib/gsm_sms_codec.cc:295 -#: gsmlib/gsm_sms_codec.cc:310 gsmlib/gsm_sms_codec.cc:318 -#: gsmlib/gsm_sms_codec.cc:339 gsmlib/gsm_sms_codec.cc:347 -#: gsmlib/gsm_sms_codec.cc:368 gsmlib/gsm_sms_codec.cc:382 -msgid "premature end of PDU" -msgstr "Vorzeitiges Ende der PDU" - -#: gsmlib/gsm_sms_codec.cc:473 -msgid "unknown time period format" -msgstr "Unbekanntes Zeitperiodenformat" - -#: gsmlib/gsm_unix_serial.cc:119 -msgid "interrupted when reading from TA" -msgstr "Unterbrechung beim Lesen vom TA" - -#: gsmlib/gsm_unix_serial.cc:144 -msgid "reading from TA" -msgstr "beim Lesen vom TA" - -#: gsmlib/gsm_unix_serial.cc:149 -msgid "timeout when reading from TA" -msgstr "Zeitüberschreitung beim Lesen vom TA" - -# , c-format -#: gsmlib/gsm_unix_serial.cc:176 -#, c-format -msgid "opening device '%s'" -msgstr "beim Öffnen von Gerät '%s'" - -#: gsmlib/gsm_unix_serial.cc:182 -msgid "getting file status flags failed" -msgstr "Lesen der Dateistatus-Flags fehlgeschlagen" - -#: gsmlib/gsm_unix_serial.cc:185 -msgid "switching of non-blocking mode failed" -msgstr "Abschalten des Non-Blocking Mode fehlgeschlagen" - -#: gsmlib/gsm_unix_serial.cc:198 -msgid "clearing DTR failed" -msgstr "Zurücksetzen von DTR fehlgeschlagen" - -#: gsmlib/gsm_unix_serial.cc:202 -msgid "setting DTR failed" -msgstr "Setzen von DTR fehlgeschlagen" - -# , c-format -#: gsmlib/gsm_unix_serial.cc:206 -#, c-format -msgid "tcgetattr device '%s'" -msgstr "tcgetattr Gerät '%s'" - -# , c-format -#: gsmlib/gsm_unix_serial.cc:233 -#, c-format -msgid "tcsetattr device '%s'" -msgstr "tcsetattr Gerät '%s'" - -# , c-format -#. no response after 3 tries -#: gsmlib/gsm_unix_serial.cc:287 -#, c-format -msgid "reset modem failed '%s'" -msgstr "Zurücksetzen des Modems '%s' fehlgeschlagen" - -#: gsmlib/gsm_unix_serial.cc:332 gsmlib/gsm_unix_serial.cc:364 -msgid "interrupted when writing to TA" -msgstr "Unterbrechnung beim Schreiben auf den TA" - -#: gsmlib/gsm_unix_serial.cc:347 gsmlib/gsm_unix_serial.cc:356 -msgid "writing to TA" -msgstr "beim Schreiben auf den TA" - -#: gsmlib/gsm_unix_serial.cc:377 -msgid "timeout when writing to TA" -msgstr "Zeitüberschreitung beim Schreiben auf den TA" - -# , c-format -#: gsmlib/gsm_unix_serial.cc:438 -#, c-format -msgid "unknown baudrate '%s'" -msgstr "unbekannte Baud-Rate '%s'" - -# , c-format -#: gsmlib/gsm_util.cc:205 -#, c-format -msgid "error when calling stat('%s') (errno: %d/%s)" -msgstr "Fehler beim Aufruf von stat('%s') (errno: %d/%s)" - -# , c-format -#: gsmlib/gsm_util.cc:236 -#, c-format -msgid "file '%s' is neither file nor character device" -msgstr "Datei '%s' ist weder eine reguläre Datei noch einen Zeichengerät" - -#: gsmlib/gsm_util.cc:240 -msgid "maxmimum number of symbolic links exceeded" -msgstr "maximale Anzahl der symbolischen Links überschritten" - -# , c-format -#: gsmlib/gsm_util.cc:250 -#, c-format -msgid "error renaming '%s' to '%s'" -msgstr "Fehler beim Umbenennen von '%s' zu '%s'" - -# , c-format -#: gsmlib/gsm_util.cc:348 -#, c-format -msgid "text '%s' contains illegal character '\"'" -msgstr "der Text '%s' enthält das illegale Zeichen '\"'" - -# , c-format -#: gsmlib/gsm_util.cc:358 -#, c-format -msgid "illegal character in telephone number '%s'" -msgstr "ungültiges Zeichen in der Telefonnummer '%s'" - -# , c-format -#: gsmlib/gsm_sorted_phonebook.cc:95 -#, c-format -msgid "error reading from file '%s" -msgstr "Fehler beim Lesen von Datei '%s'" - -# , c-format -#: gsmlib/gsm_sorted_phonebook.cc:109 -#, c-format -msgid "entry '%s' lacks index" -msgstr "Eintrag '%s' hat keinen Index" - -# , c-format -#: gsmlib/gsm_sorted_phonebook.cc:118 gsmlib/gsm_sorted_phonebook.cc:124 -#, c-format -msgid "line '%s' has invalid format" -msgstr "Zeile '%s' hat ungültiges Format" - -# , c-format -#: gsmlib/gsm_sorted_phonebook.cc:173 gsmlib/gsm_sorted_sms_store.cc:159 -#, c-format -msgid "error opening file '%s' for writing" -msgstr "Fehler beim Öffnen der Datei '%s' zum Schreiben" - -#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_phonebook.cc:193 -#: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 -msgid "" -msgstr "" - -# , c-format -#: gsmlib/gsm_sorted_phonebook.cc:192 gsmlib/gsm_sorted_sms_store.cc:66 -#, c-format -msgid "error writing to file '%s'" -msgstr "Fehler beim Schreiben in die Datei '%s'" - -#: gsmlib/gsm_sorted_phonebook.cc:216 -msgid "attempt to change phonebook read from " -msgstr "Versuch, von der Standardeingabe gelesenes Telefonbuch zu verändern" - -# , c-format -#: gsmlib/gsm_sorted_phonebook.cc:229 gsmlib/gsm_sorted_sms_store.cc:215 -#, c-format -msgid "cannot open file '%s'" -msgstr "kann Datei '%s' nicht öffnen" - -#: gsmlib/gsm_sorted_phonebook.cc:244 gsmlib/gsm_sorted_sms_store.cc:55 -#: gsmlib/gsm_sorted_sms_store.cc:228 -msgid "" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:361 -msgid "indices must be unique in phonebook" -msgstr "Indices im Telefonbuch müssen eindeutig sein" - -# , c-format -#: gsmlib/gsm_sorted_sms_store.cc:54 -#, c-format -msgid "error reading from file '%s'" -msgstr "Fehler beim Lesen aus der Datei '%s'" - -# , c-format -#: gsmlib/gsm_sorted_sms_store.cc:87 -#, c-format -msgid "file '%s' has wrong version" -msgstr "Datei '%s' hat die falsche Version" - -# , c-format -#: gsmlib/gsm_sorted_sms_store.cc:99 gsmlib/gsm_sorted_sms_store.cc:111 -#, c-format -msgid "corrupt SMS store file '%s'" -msgstr "beschädigte SMS-Speicherdatei '%s'" - -#: gsmlib/gsm_sorted_sms_store.cc:204 -msgid "attempt to change SMS store read from " -msgstr "" -"Versuch, SMS-Speicher zu verändern, der von der Standardeingabe gelesen wurde" - -#~ msgid "cannot read current network operator" -#~ msgstr "kann den aktuellen Netzbetreiber nicht lesen" - -#~ msgid "Message type: SMS" -#~ msgstr "Nachrichtentyp: SMS" - -#~ msgid "(no further information available)" -#~ msgstr "(keine weitere Information verfügbar)" diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot deleted file mode 100644 index 1d0385cf4f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot +++ /dev/null @@ -1,1689 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-10-06 14:36+1100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: apps/gsmsmsd.cc:172 -#, c-format -msgid "could not execute '%s'" -msgstr "" - -#: apps/gsmsmsd.cc:176 -#, c-format -msgid "error writing to '%s'" -msgstr "" - -#: apps/gsmsmsd.cc:197 apps/gsmsmsd.cc:198 apps/gsmsmsd.cc:199 -#, c-format -msgid "%d" -msgstr "" - -#: apps/gsmsmsd.cc:216 -#, c-format -msgid "error when calling opendir('%s')(errno: %d/%s)" -msgstr "" - -#: apps/gsmsmsd.cc:260 -#, c-format -msgid "count not open SMS spool file %s" -msgstr "" - -#: apps/gsmsmsd.cc:439 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 -#: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 -#, c-format -msgid ": version %s [compiled %s]" -msgstr "" - -#: apps/gsmsmsd.cc:444 -msgid "" -": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" -" [-s spool dir][-t][-v]{sms_type}" -msgstr "" - -#: apps/gsmsmsd.cc:448 -msgid "" -" -a, --action the action to execute when an SMS arrives\n" -" (SMS is send to stdin of action)" -msgstr "" - -#: apps/gsmsmsd.cc:452 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 -#: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 -msgid " -b, --baudrate baudrate to use for device (default: 38400)" -msgstr "" - -#: apps/gsmsmsd.cc:455 -msgid " -c, --concatenate start ID for concatenated SMS messages" -msgstr "" - -#: apps/gsmsmsd.cc:457 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 -msgid " -C, --sca SMS service centre address" -msgstr "" - -#: apps/gsmsmsd.cc:458 -msgid " -d, --device sets the device to connect to" -msgstr "" - -#: apps/gsmsmsd.cc:459 -msgid " -D, --direct enable direct routing of SMSs" -msgstr "" - -#: apps/gsmsmsd.cc:460 -msgid " -f, --flush flush SMS from store" -msgstr "" - -#: apps/gsmsmsd.cc:461 -msgid " -F, --failed directory to move failed SMS to," -msgstr "" - -#: apps/gsmsmsd.cc:462 apps/gsmsmsd.cc:475 -msgid " if unset, the SMS will be deleted" -msgstr "" - -#: apps/gsmsmsd.cc:463 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 -#: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 -msgid " -h, --help prints this message" -msgstr "" - -#: apps/gsmsmsd.cc:464 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 -#: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 -msgid " -I, --init device AT init sequence" -msgstr "" - -#: apps/gsmsmsd.cc:466 -msgid " -L, --syslog log errors and information to syslog" -msgstr "" - -#: apps/gsmsmsd.cc:469 -msgid " -P, --priorities number of priority levels to use," -msgstr "" - -#: apps/gsmsmsd.cc:470 -msgid " (default: none)" -msgstr "" - -#: apps/gsmsmsd.cc:471 apps/gsmsendsms.cc:163 -msgid " -r, --requeststat request SMS status report" -msgstr "" - -#: apps/gsmsmsd.cc:472 -msgid " -s, --spool spool directory for outgoing SMS" -msgstr "" - -#: apps/gsmsmsd.cc:474 -msgid " -S, --sent directory to move sent SMS to," -msgstr "" - -#: apps/gsmsmsd.cc:476 -msgid "" -" -t, --store name of SMS store to use for flush\n" -" and/or temporary SMS storage" -msgstr "" - -#: apps/gsmsmsd.cc:479 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 -#: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 -msgid " -v, --version prints version and exits" -msgstr "" - -#: apps/gsmsmsd.cc:480 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 -#: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 -msgid " -X, --xonxoff switch on software handshake" -msgstr "" - -#: apps/gsmsmsd.cc:482 -msgid " sms_type may be any combination of" -msgstr "" - -#: apps/gsmsmsd.cc:483 -msgid " sms, no_sms controls reception of normal SMS" -msgstr "" - -#: apps/gsmsmsd.cc:485 -msgid " cb, no_cb controls reception of cell broadcast messages" -msgstr "" - -#: apps/gsmsmsd.cc:487 -msgid " stat, no_stat controls reception of status reports" -msgstr "" - -#: apps/gsmsmsd.cc:489 -msgid " default is \"sms cb stat\"" -msgstr "" - -#: apps/gsmsmsd.cc:490 -msgid "If no action is given, the SMS is printed to stdout" -msgstr "" - -#: apps/gsmsmsd.cc:492 -msgid "If -P is given, it activates the priority system and sets the" -msgstr "" - -#: apps/gsmsmsd.cc:493 -msgid "number or levels to use. For every level, there must be directories" -msgstr "" - -#: apps/gsmsmsd.cc:494 -msgid "named +." -msgstr "" - -#: apps/gsmsmsd.cc:495 -msgid "For example \"-P 2 -s queue -S send -F failed\" needs the following" -msgstr "" - -#: apps/gsmsmsd.cc:496 -msgid "directories: queue1/ queue2/ send1/ send2/ failed1/ failed2/" -msgstr "" - -#: apps/gsmsmsd.cc:497 -msgid "Before sending one SMS from queue2, all pending SMS from queue1" -msgstr "" - -#: apps/gsmsmsd.cc:498 -msgid "will be sent." -msgstr "" - -#: apps/gsmsmsd.cc:503 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 -#: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 -msgid "unknown option" -msgstr "" - -#: apps/gsmsmsd.cc:542 -#, c-format -msgid "error when calling sigaction() (errno: %d/%s)" -msgstr "" - -#: apps/gsmsmsd.cc:562 -msgid "store name must be given for flush option" -msgstr "" - -#. process the new message -#: apps/gsmsmsd.cc:570 apps/gsmsmsd.cc:638 -msgid "Type of message: " -msgstr "" - -#: apps/gsmsmsd.cc:574 apps/gsmsmsd.cc:642 -msgid "SMS message\n" -msgstr "" - -#: apps/gsmsmsd.cc:577 -msgid "submit report message\n" -msgstr "" - -#: apps/gsmsmsd.cc:580 apps/gsmsmsd.cc:648 -msgid "status report message\n" -msgstr "" - -#: apps/gsmsmsd.cc:645 -msgid "cell broadcast message\n" -msgstr "" - -#: apps/gsmsmsd.cc:701 apps/gsmsmsd.cc:703 apps/gsmsendsms.cc:253 -#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:430 -msgid "[ERROR]: " -msgstr "" - -#: apps/gsmsmsd.cc:704 -msgid "(try setting sms_type, please refer to gsmsmsd manpage)" -msgstr "" - -#: apps/gsmsendsms.cc:149 -msgid "" -": [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n" -" [-t][-v][-X] phonenumber [text]" -msgstr "" - -#: apps/gsmsendsms.cc:156 -msgid " -c, --concatenate ID for concatenated SMS messages" -msgstr "" - -#: apps/gsmsendsms.cc:159 apps/gsmctl.cc:392 -msgid " -d, --device sets the destination device to connect to" -msgstr "" - -#: apps/gsmsendsms.cc:164 -msgid "" -" -t, --test convert text to GSM alphabet and vice\n" -" versa, no SMS message is sent" -msgstr "" - -#: apps/gsmsendsms.cc:171 -msgid " phonenumber recipient's phone number" -msgstr "" - -#: apps/gsmsendsms.cc:172 -msgid "" -" text optional text of the SMS message\n" -" if omitted: read from stdin" -msgstr "" - -#: apps/gsmsendsms.cc:205 -msgid "phone number and text missing" -msgstr "" - -#: apps/gsmsendsms.cc:208 apps/gsmsmsstore.cc:261 -msgid "more than two parameters given" -msgstr "" - -#: apps/gsmsendsms.cc:224 -msgid "text is larger than 160 characters" -msgstr "" - -#: apps/gsmpb.cc:102 apps/gsmpb.cc:491 -#, c-format -msgid "inserting '%s' tel# %s" -msgstr "" - -#: apps/gsmpb.cc:105 apps/gsmpb.cc:230 apps/gsmpb.cc:494 -#, c-format -msgid " (index #%d)" -msgstr "" - -#: apps/gsmpb.cc:144 -#, c-format -msgid "updating '%s' tel# %s to new tel# %s" -msgstr "" - -#: apps/gsmpb.cc:177 -#, c-format -msgid "updating '%s' tel# %s to new tel# %s(index %d)" -msgstr "" - -#: apps/gsmpb.cc:227 -#, c-format -msgid "deleting '%s' tel# %s" -msgstr "" - -#: apps/gsmpb.cc:316 -msgid "" -": [-b baudrate][-c][-d device or file][-h][-I init string]\n" -" [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]" -msgstr "" - -#: apps/gsmpb.cc:325 -msgid " -c, --copy copy source entries to destination" -msgstr "" - -#: apps/gsmpb.cc:327 -msgid "" -" -d, --destination sets the destination device to connect \n" -" to, or the file to write" -msgstr "" - -#: apps/gsmpb.cc:330 -msgid " -D, --destination-backend sets the destination backend" -msgstr "" - -#: apps/gsmpb.cc:333 -msgid " -i, --index takes index positions into account" -msgstr "" - -#: apps/gsmpb.cc:336 -msgid " -p, --phonebook name of phonebook to use" -msgstr "" - -#: apps/gsmpb.cc:337 apps/gsmsmsstore.cc:210 -msgid "" -" -s, --source sets the source device to connect to,\n" -" or the file to read" -msgstr "" - -#: apps/gsmpb.cc:339 -msgid "" -" -t, --charset sets the character set to use for\n" -" phonebook entries" -msgstr "" - -#: apps/gsmpb.cc:341 -msgid " -S, --source-backend sets the source backend" -msgstr "" - -#: apps/gsmpb.cc:344 apps/gsmsmsstore.cc:214 -msgid " -V, --verbose print detailed progress messages" -msgstr "" - -#: apps/gsmpb.cc:347 -msgid "" -" -y, --synchronize synchronize destination with source\n" -" entries (destination is overwritten)\n" -" (see gsmpb(1) for details)" -msgstr "" - -#: apps/gsmpb.cc:360 -msgid "both source and destination must be given" -msgstr "" - -#: apps/gsmpb.cc:374 apps/gsmpb.cc:416 -msgid "phonebook name must be given" -msgstr "" - -#: apps/gsmpb.cc:441 -#, c-format -msgid "" -"text '%s' is too large to fit into destination (maximum size %d characters)" -msgstr "" - -#: apps/gsmpb.cc:447 -#, c-format -msgid "" -"phone number '%s' is too large to fit into destination (maximum size %d " -"characters)" -msgstr "" - -#: apps/gsmctl.cc:90 -msgid "active " -msgstr "" - -#: apps/gsmctl.cc:90 -msgid "inactive " -msgstr "" - -#: apps/gsmctl.cc:91 -msgid "number: " -msgstr "" - -#: apps/gsmctl.cc:92 -msgid " subaddr: " -msgstr "" - -#: apps/gsmctl.cc:93 -msgid " time: " -msgstr "" - -#: apps/gsmctl.cc:105 -msgid " Manufacturer: " -msgstr "" - -#: apps/gsmctl.cc:106 -msgid " Model: " -msgstr "" - -#: apps/gsmctl.cc:107 -msgid " Revision: " -msgstr "" - -#: apps/gsmctl.cc:108 -msgid " Serial Number: " -msgstr "" - -#: apps/gsmctl.cc:116 apps/gsmctl.cc:118 -msgid " Functionality Level: " -msgstr "" - -#: apps/gsmctl.cc:118 -msgid "unsupported" -msgstr "" - -#: apps/gsmctl.cc:128 -msgid "> Status: " -msgstr "" - -#: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 -#: gsmlib/gsm_sms_codec.cc:205 -msgid "unknown" -msgstr "" - -#: apps/gsmctl.cc:132 -msgid "current" -msgstr "" - -#: apps/gsmctl.cc:133 -msgid "available" -msgstr "" - -#: apps/gsmctl.cc:134 -msgid "forbidden" -msgstr "" - -#: apps/gsmctl.cc:136 apps/gsmctl.cc:147 -msgid " Long name: '" -msgstr "" - -#: apps/gsmctl.cc:137 apps/gsmctl.cc:148 -msgid " Short name: '" -msgstr "" - -#: apps/gsmctl.cc:138 apps/gsmctl.cc:149 -msgid " Numeric name: " -msgstr "" - -#: apps/gsmctl.cc:150 -msgid " Mode: " -msgstr "" - -#: apps/gsmctl.cc:153 -msgid "automatic" -msgstr "" - -#: apps/gsmctl.cc:154 -msgid "manual" -msgstr "" - -#: apps/gsmctl.cc:155 -msgid "deregister" -msgstr "" - -#: apps/gsmctl.cc:156 -msgid "manual/automatic" -msgstr "" - -#: apps/gsmctl.cc:172 apps/gsmctl.cc:247 -msgid " Voice" -msgstr "" - -#: apps/gsmctl.cc:176 apps/gsmctl.cc:185 apps/gsmctl.cc:194 -msgid " unknown" -msgstr "" - -#: apps/gsmctl.cc:181 apps/gsmctl.cc:249 -msgid " Data" -msgstr "" - -#: apps/gsmctl.cc:190 apps/gsmctl.cc:251 -msgid " Fax" -msgstr "" - -#: apps/gsmctl.cc:229 -msgid "on" -msgstr "" - -#: apps/gsmctl.cc:229 -msgid "off" -msgstr "" - -#: apps/gsmctl.cc:239 -msgid "UnconditionalReason" -msgstr "" - -#: apps/gsmctl.cc:240 -msgid "MobileBusyReason" -msgstr "" - -#: apps/gsmctl.cc:241 -msgid "NoReplyReason" -msgstr "" - -#: apps/gsmctl.cc:242 -msgid "NotReachableReason" -msgstr "" - -#: apps/gsmctl.cc:261 -msgid "0 ME is powered by the battery" -msgstr "" - -#: apps/gsmctl.cc:262 -msgid "1 ME has a battery connected, but is not powered by it" -msgstr "" - -#: apps/gsmctl.cc:264 -msgid "2 ME does not have a battery connected" -msgstr "" - -#: apps/gsmctl.cc:266 -msgid "3 Recognized power fault, calls inhibited" -msgstr "" - -#: apps/gsmctl.cc:323 -#, c-format -msgid "unknown facility class parameter '%c'" -msgstr "" - -#: apps/gsmctl.cc:336 -#, c-format -msgid "not enough parameters, minimum number of parameters is %d" -msgstr "" - -#: apps/gsmctl.cc:340 -#, c-format -msgid "too many parameters, maximum number of parameters is %d" -msgstr "" - -#: apps/gsmctl.cc:385 -msgid "" -": [-b baudrate][-d device][-h][-I init string][-o operation]\n" -" [-v][-X]{parameters}" -msgstr "" - -#: apps/gsmctl.cc:396 -msgid "" -" -o, --operation operation to perform on the mobile \n" -" phone with the specified parameters" -msgstr "" - -#: apps/gsmctl.cc:402 -msgid "" -" parameters parameters to use for the operation\n" -" (if an operation is given) or\n" -" a specification which kind of\n" -" information to read from the mobile phone" -msgstr "" - -#: apps/gsmctl.cc:408 -msgid "" -"Refer to gsmctl(1) for details on the available parameters and operations." -msgstr "" - -#: apps/gsmctl.cc:471 -#, c-format -msgid "unknown information parameter '%s'" -msgstr "" - -#: apps/gsmctl.cc:520 -#, c-format -msgid "unknown opmode parameter '%s'" -msgstr "" - -#: apps/gsmctl.cc:588 -#, c-format -msgid "unknown forward reason parameter '%s'" -msgstr "" - -#: apps/gsmctl.cc:604 -#, c-format -msgid "unknown forward mode parameter '%s'" -msgstr "" - -#: apps/gsmctl.cc:625 -#, c-format -msgid "unknown operation '%s'" -msgstr "" - -#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:358 apps/gsmsmsstore.cc:375 -#, c-format -msgid "inserting entry #%d from source into destination" -msgstr "" - -#: apps/gsmsmsstore.cc:102 -#, c-format -msgid "incompatible options '%c' and '%c'" -msgstr "" - -#: apps/gsmsmsstore.cc:184 -msgid "" -": [-a][-b baudrate][-c][-C sca][-d device or file]\n" -" [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n" -" [-v][-V][-x][-X]{indices}|[phonenumber text]" -msgstr "" - -#: apps/gsmsmsstore.cc:191 -msgid "" -" -a, --add add new SMS submit message\n" -" (phonenumber and text) to destination" -msgstr "" - -#: apps/gsmsmsstore.cc:197 -msgid "" -" -c, --copy copy source entries to destination\n" -" (if indices are given, copy only these entries)" -msgstr "" - -#: apps/gsmsmsstore.cc:201 -msgid "" -" -d, --destination sets the destination device to\n" -" connect to, or the file to write to" -msgstr "" - -#: apps/gsmsmsstore.cc:206 -msgid "" -" -k, --backup backup new entries to destination\n" -" (if indices are given, copy only these entries)" -msgstr "" - -#: apps/gsmsmsstore.cc:209 -msgid " -l, --list list source to stdout" -msgstr "" - -#: apps/gsmsmsstore.cc:212 -msgid " -t, --store name of SMS store to use" -msgstr "" - -#: apps/gsmsmsstore.cc:216 -msgid " -x, --delete delete entries denoted by indices" -msgstr "" - -#: apps/gsmsmsstore.cc:229 -msgid "no operation option given" -msgstr "" - -#: apps/gsmsmsstore.cc:232 -msgid "both source and destination required" -msgstr "" - -#: apps/gsmsmsstore.cc:237 -msgid "destination must not be given" -msgstr "" - -#: apps/gsmsmsstore.cc:239 -msgid "source required" -msgstr "" - -#: apps/gsmsmsstore.cc:244 -msgid "source must not be given" -msgstr "" - -#: apps/gsmsmsstore.cc:246 -msgid "destination required" -msgstr "" - -#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:286 -#, c-format -msgid "expected number, got '%s'" -msgstr "" - -#: apps/gsmsmsstore.cc:264 -msgid "not enough parameters given" -msgstr "" - -#: apps/gsmsmsstore.cc:269 -msgid "unexpected parameters" -msgstr "" - -#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:312 -msgid "store name must be given" -msgstr "" - -#: apps/gsmsmsstore.cc:339 apps/gsmsmsstore.cc:372 -#, c-format -msgid "no index '%s' in source" -msgstr "" - -#: apps/gsmsmsstore.cc:387 -#, c-format -msgid "index #%d" -msgstr "" - -#: apps/gsmsmsstore.cc:401 -msgid "inserting new entry into destination" -msgstr "" - -#: apps/gsmsmsstore.cc:416 -#, c-format -msgid "deleting entry #%d from destination" -msgstr "" - -#: apps/gsmsmsstore.cc:421 -#, c-format -msgid "no index '%s' in destination" -msgstr "" - -#: gsmlib/gsm_at.cc:66 -msgid "unspecified ME/TA error" -msgstr "" - -#: gsmlib/gsm_at.cc:76 -msgid "ME/TA error '" -msgstr "" - -#: gsmlib/gsm_at.cc:80 -#, c-format -msgid "(code %s)" -msgstr "" - -#: gsmlib/gsm_at.cc:125 gsmlib/gsm_at.cc:215 gsmlib/gsm_at.cc:344 -msgid "ME/TA error '' (code not known)" -msgstr "" - -#: gsmlib/gsm_at.cc:184 gsmlib/gsm_at.cc:365 -#, c-format -msgid "unexpected response '%s' when sending 'AT%s'" -msgstr "" - -#: gsmlib/gsm_at.cc:318 -msgid "unexpected character in PDU handshake" -msgstr "" - -#: gsmlib/gsm_error.cc:29 -msgid "phone failure" -msgstr "" - -#: gsmlib/gsm_error.cc:32 -msgid "no connection to phone" -msgstr "" - -#: gsmlib/gsm_error.cc:35 -msgid "phone adaptor link reserved" -msgstr "" - -#: gsmlib/gsm_error.cc:38 gsmlib/gsm_error.cc:259 -msgid "operation not allowed" -msgstr "" - -#: gsmlib/gsm_error.cc:41 gsmlib/gsm_error.cc:262 -msgid "operation not supported" -msgstr "" - -#: gsmlib/gsm_error.cc:44 -msgid "ph SIM PIN required" -msgstr "" - -#: gsmlib/gsm_error.cc:47 gsmlib/gsm_error.cc:271 -msgid "SIM not inserted" -msgstr "" - -#: gsmlib/gsm_error.cc:50 gsmlib/gsm_error.cc:274 -msgid "SIM PIN required" -msgstr "" - -#: gsmlib/gsm_error.cc:53 gsmlib/gsm_error.cc:289 -msgid "SIM PUK required" -msgstr "" - -#: gsmlib/gsm_error.cc:56 gsmlib/gsm_error.cc:280 -msgid "SIM failure" -msgstr "" - -#: gsmlib/gsm_error.cc:59 gsmlib/gsm_error.cc:283 -msgid "SIM busy" -msgstr "" - -#: gsmlib/gsm_error.cc:62 gsmlib/gsm_error.cc:286 -msgid "SIM wrong" -msgstr "" - -#: gsmlib/gsm_error.cc:65 -msgid "incorrect password" -msgstr "" - -#: gsmlib/gsm_error.cc:68 gsmlib/gsm_error.cc:292 -msgid "SIM PIN2 required" -msgstr "" - -#: gsmlib/gsm_error.cc:71 gsmlib/gsm_error.cc:295 -msgid "SIM PUK2 required" -msgstr "" - -#: gsmlib/gsm_error.cc:74 gsmlib/gsm_error.cc:304 -msgid "memory full" -msgstr "" - -#: gsmlib/gsm_error.cc:77 -msgid "invalid index" -msgstr "" - -#: gsmlib/gsm_error.cc:80 -msgid "not found" -msgstr "" - -#: gsmlib/gsm_error.cc:83 gsmlib/gsm_error.cc:298 -msgid "memory failure" -msgstr "" - -#: gsmlib/gsm_error.cc:86 -msgid "text string too long" -msgstr "" - -#: gsmlib/gsm_error.cc:89 -msgid "invalid characters in text string" -msgstr "" - -#: gsmlib/gsm_error.cc:92 -msgid "dial string too long" -msgstr "" - -#: gsmlib/gsm_error.cc:95 -msgid "invalid characters in dial string" -msgstr "" - -#: gsmlib/gsm_error.cc:98 gsmlib/gsm_error.cc:310 -msgid "no network service" -msgstr "" - -#: gsmlib/gsm_error.cc:101 gsmlib/gsm_error.cc:313 -msgid "network timeout" -msgstr "" - -#: gsmlib/gsm_error.cc:107 -#, c-format -msgid "invalid ME error %d" -msgstr "" - -#: gsmlib/gsm_error.cc:117 -msgid "Unassigned (unallocated) number" -msgstr "" - -#: gsmlib/gsm_error.cc:120 -msgid "Operator determined barring" -msgstr "" - -#: gsmlib/gsm_error.cc:123 -msgid "Call barred" -msgstr "" - -#: gsmlib/gsm_error.cc:126 -msgid "Network failure" -msgstr "" - -#: gsmlib/gsm_error.cc:129 -msgid "Short message transfer rejected" -msgstr "" - -#: gsmlib/gsm_error.cc:133 gsmlib/gsm_error.cc:355 -msgid "Congestion" -msgstr "" - -#: gsmlib/gsm_error.cc:136 -msgid "Destination out of service" -msgstr "" - -#: gsmlib/gsm_error.cc:139 -msgid "Unidentified subscriber" -msgstr "" - -#: gsmlib/gsm_error.cc:142 -msgid "Facility rejected" -msgstr "" - -#: gsmlib/gsm_error.cc:145 -msgid "Unknown subscriber" -msgstr "" - -#: gsmlib/gsm_error.cc:148 -msgid "Network out of order" -msgstr "" - -#: gsmlib/gsm_error.cc:151 -msgid "Temporary failure" -msgstr "" - -#: gsmlib/gsm_error.cc:154 -msgid "Resources unavailable, unspecified" -msgstr "" - -#: gsmlib/gsm_error.cc:157 -msgid "Requested facility not subscribed" -msgstr "" - -#: gsmlib/gsm_error.cc:160 -msgid "Requested facility not implemented" -msgstr "" - -#: gsmlib/gsm_error.cc:163 -msgid "Invalid Transaction Identifier" -msgstr "" - -#: gsmlib/gsm_error.cc:166 -msgid "Semantically incorrect message" -msgstr "" - -#: gsmlib/gsm_error.cc:169 -msgid "Invalid mandatory information" -msgstr "" - -#: gsmlib/gsm_error.cc:172 -msgid "Message type non-existent or not implemented" -msgstr "" - -#: gsmlib/gsm_error.cc:175 -msgid "Message not compatible with short message protocol state" -msgstr "" - -#: gsmlib/gsm_error.cc:178 -msgid "Information element non-existent or not implemented" -msgstr "" - -#: gsmlib/gsm_error.cc:181 -msgid "Protocol error, unspecified" -msgstr "" - -#: gsmlib/gsm_error.cc:184 -msgid "Interworking, unspecified" -msgstr "" - -#: gsmlib/gsm_error.cc:187 -msgid "Telematic interworking not supported" -msgstr "" - -#: gsmlib/gsm_error.cc:190 -msgid "Short message Type 0 not supported" -msgstr "" - -#: gsmlib/gsm_error.cc:193 -msgid "Cannot replace short message" -msgstr "" - -#: gsmlib/gsm_error.cc:196 -msgid "Unspecified TP-PID error" -msgstr "" - -#: gsmlib/gsm_error.cc:199 -msgid "Data coding scheme (alphabet) not supported" -msgstr "" - -#: gsmlib/gsm_error.cc:202 -msgid "Message class not supported" -msgstr "" - -#: gsmlib/gsm_error.cc:205 -msgid "Unspecifiec TP-DCS error" -msgstr "" - -#: gsmlib/gsm_error.cc:208 -msgid "Command cannot be actioned" -msgstr "" - -#: gsmlib/gsm_error.cc:211 -msgid "Command unsupported" -msgstr "" - -#: gsmlib/gsm_error.cc:214 -msgid "Unspecified TP-Command error" -msgstr "" - -#: gsmlib/gsm_error.cc:217 -msgid "TPDU not supported" -msgstr "" - -#: gsmlib/gsm_error.cc:220 -msgid "SC busy" -msgstr "" - -#: gsmlib/gsm_error.cc:223 -msgid "No SC subscription" -msgstr "" - -#: gsmlib/gsm_error.cc:226 -msgid "SC system failure" -msgstr "" - -#: gsmlib/gsm_error.cc:229 -msgid "Invalid SME address" -msgstr "" - -#: gsmlib/gsm_error.cc:232 -msgid "Destination SME barred" -msgstr "" - -#: gsmlib/gsm_error.cc:235 -msgid "SM Rejected-Duplicated SM" -msgstr "" - -#: gsmlib/gsm_error.cc:238 -msgid "SIM SMS storage full" -msgstr "" - -#: gsmlib/gsm_error.cc:241 -msgid "No SMS storage capability in SIM" -msgstr "" - -#: gsmlib/gsm_error.cc:244 -msgid "Error in MS" -msgstr "" - -#: gsmlib/gsm_error.cc:247 -msgid "Memory Capacity Exceed" -msgstr "" - -#: gsmlib/gsm_error.cc:250 -msgid "Unspecified error cause" -msgstr "" - -#: gsmlib/gsm_error.cc:253 -msgid "ME failure" -msgstr "" - -#: gsmlib/gsm_error.cc:256 -msgid "SMS service of ME reserved" -msgstr "" - -#: gsmlib/gsm_error.cc:265 -msgid "invalid PDU mode parameter" -msgstr "" - -#: gsmlib/gsm_error.cc:268 -msgid "invalid text mode parameter" -msgstr "" - -#: gsmlib/gsm_error.cc:277 -msgid "PH-SIM PIN required" -msgstr "" - -#: gsmlib/gsm_error.cc:301 -msgid "invalid memory index" -msgstr "" - -#: gsmlib/gsm_error.cc:307 -msgid "SMSC address unknown" -msgstr "" - -#: gsmlib/gsm_error.cc:316 -msgid "no +CNMA acknowledgement expected" -msgstr "" - -#: gsmlib/gsm_error.cc:319 -msgid "unknown error" -msgstr "" - -#: gsmlib/gsm_error.cc:322 -#, c-format -msgid "invalid SMS error %d" -msgstr "" - -#: gsmlib/gsm_error.cc:335 -msgid "Short message received by the SME" -msgstr "" - -#: gsmlib/gsm_error.cc:338 -msgid "" -"Short message forwarded by the SC to the SME but the SC is unable to confirm " -"delivery" -msgstr "" - -#: gsmlib/gsm_error.cc:342 -msgid "Short message replaced by the SC" -msgstr "" - -#: gsmlib/gsm_error.cc:345 gsmlib/gsm_error.cc:373 gsmlib/gsm_error.cc:418 -msgid "reserved" -msgstr "" - -#: gsmlib/gsm_error.cc:358 -msgid "SME busy" -msgstr "" - -#: gsmlib/gsm_error.cc:361 -msgid "No response from SME" -msgstr "" - -#: gsmlib/gsm_error.cc:364 -msgid "Service rejected" -msgstr "" - -#: gsmlib/gsm_error.cc:367 gsmlib/gsm_error.cc:400 -msgid "Quality of service not available" -msgstr "" - -#: gsmlib/gsm_error.cc:370 -msgid "Error in SME" -msgstr "" - -#: gsmlib/gsm_error.cc:377 -msgid " (Temporary error, SC is not making any more transfer attempts)" -msgstr "" - -#: gsmlib/gsm_error.cc:380 -msgid " (Temporary error, SC still trying to transfer SM)" -msgstr "" - -#: gsmlib/gsm_error.cc:388 -msgid "Remote Procedure Error" -msgstr "" - -#: gsmlib/gsm_error.cc:391 -msgid "Incompatible destination" -msgstr "" - -#: gsmlib/gsm_error.cc:394 -msgid "Connection rejected by SME" -msgstr "" - -#: gsmlib/gsm_error.cc:397 -msgid "Not obtainable" -msgstr "" - -#: gsmlib/gsm_error.cc:403 -msgid "No interworking available" -msgstr "" - -#: gsmlib/gsm_error.cc:406 -msgid "SM validity period expired" -msgstr "" - -#: gsmlib/gsm_error.cc:409 -msgid "SM deleted by originating SME" -msgstr "" - -#: gsmlib/gsm_error.cc:412 -msgid "SM deleted by SC administration" -msgstr "" - -#: gsmlib/gsm_error.cc:415 -msgid "SM does not exit" -msgstr "" - -#: gsmlib/gsm_error.cc:421 -msgid " (Permanent Error, SC is not making any more transfer attempts)" -msgstr "" - -#: gsmlib/gsm_event.cc:80 -#, c-format -msgid "unexpected number format %d" -msgstr "" - -#: gsmlib/gsm_event.cc:100 -#, c-format -msgid "unexpected unsolicited event '%s'" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:538 -msgid "unable to set operator" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:665 -msgid "call forward time must be in the range 0..30" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:813 -msgid "Functionality Level commands not supported by ME" -msgstr "" - -#. If the number was just out of range, we get here. -#: gsmlib/gsm_me_ta.cc:832 -msgid "Requested Functionality Level out of range" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:943 -msgid "unsupported alphabet for SMS" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:952 -msgid "SMS text is larger than allowed" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:964 -msgid "not more than 255 concatenated SMSs allowed" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:997 -msgid "only serviceLevel 0 or 1 supported" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:1110 gsmlib/gsm_me_ta.cc:1152 -msgid "cannot route SMS messages to TE" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:1124 gsmlib/gsm_me_ta.cc:1166 -msgid "cannot route cell broadcast messages to TE" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:1136 -msgid "cannot route status reports messages to TE" -msgstr "" - -#: gsmlib/gsm_me_ta.cc:1180 -msgid "cannot route status report messages to TE" -msgstr "" - -#: gsmlib/gsm_parser.cc:51 -msgid "expected parameter" -msgstr "" - -#: gsmlib/gsm_parser.cc:71 -msgid "expected '\"'" -msgstr "" - -#: gsmlib/gsm_parser.cc:109 -msgid "expected number" -msgstr "" - -#: gsmlib/gsm_parser.cc:120 -#, c-format -msgid "unexpected end of string '%s'" -msgstr "" - -#: gsmlib/gsm_parser.cc:124 -#, c-format -msgid " (at position %d of string '%s')" -msgstr "" - -#: gsmlib/gsm_parser.cc:141 -#, c-format -msgid "expected '%c'" -msgstr "" - -#: gsmlib/gsm_parser.cc:165 -msgid "expected ')' or ','" -msgstr "" - -#: gsmlib/gsm_parser.cc:251 -msgid "expected ')', ',' or '-'" -msgstr "" - -#: gsmlib/gsm_parser.cc:257 -msgid "range of the form a-b-c not allowed" -msgstr "" - -#: gsmlib/gsm_parser.cc:264 -msgid "range of the form a- no allowed" -msgstr "" - -#: gsmlib/gsm_parser.cc:350 -msgid "expected comma" -msgstr "" - -#: gsmlib/gsm_parser.cc:367 -msgid "expected end of line" -msgstr "" - -#: gsmlib/gsm_phonebook.cc:47 -#, c-format -msgid "" -"length of text '%s' exceeds maximum text length (%d characters) of phonebook " -"'%s'" -msgstr "" - -#: gsmlib/gsm_phonebook.cc:55 -#, c-format -msgid "" -"length of telephone number '%s' exceeds maximum telephone number length (%d " -"characters) of phonebook '%s'" -msgstr "" - -#: gsmlib/gsm_phonebook.cc:275 -msgid "phonebook full" -msgstr "" - -#: gsmlib/gsm_phonebook.cc:291 -msgid "attempt to overwrite phonebook entry" -msgstr "" - -#: gsmlib/gsm_phonebook.cc:569 -msgid "SIM card changed while accessing phonebook" -msgstr "" - -#: gsmlib/gsm_sms.cc:66 gsmlib/gsm_sms.cc:85 gsmlib/gsm_sms.cc:175 -msgid "unhandled SMS TPDU type" -msgstr "" - -#: gsmlib/gsm_sms.cc:107 -msgid "can only send SMS-SUBMIT and SMS-COMMAND TPDUs" -msgstr "" - -#: gsmlib/gsm_sms.cc:111 -msgid "no device given for sending SMS" -msgstr "" - -#: gsmlib/gsm_sms.cc:283 -msgid "Message type: SMS-DELIVER" -msgstr "" - -#: gsmlib/gsm_sms.cc:284 gsmlib/gsm_sms.cc:426 gsmlib/gsm_sms.cc:531 -#: gsmlib/gsm_sms.cc:618 gsmlib/gsm_sms.cc:723 gsmlib/gsm_sms.cc:829 -msgid "SC address: '" -msgstr "" - -#: gsmlib/gsm_sms.cc:285 gsmlib/gsm_sms.cc:532 -msgid "More messages to send: " -msgstr "" - -#: gsmlib/gsm_sms.cc:286 gsmlib/gsm_sms.cc:445 -msgid "Reply path: " -msgstr "" - -#: gsmlib/gsm_sms.cc:287 gsmlib/gsm_sms.cc:446 -msgid "User data header indicator: " -msgstr "" - -#: gsmlib/gsm_sms.cc:289 -msgid "Status report indication: " -msgstr "" - -#: gsmlib/gsm_sms.cc:290 -msgid "Originating address: '" -msgstr "" - -#: gsmlib/gsm_sms.cc:292 gsmlib/gsm_sms.cc:452 gsmlib/gsm_sms.cc:621 -#: gsmlib/gsm_sms.cc:729 gsmlib/gsm_sms.cc:836 -msgid "Protocol identifier: 0x" -msgstr "" - -#: gsmlib/gsm_sms.cc:294 gsmlib/gsm_sms.cc:454 gsmlib/gsm_sms.cc:733 -#: gsmlib/gsm_sms.cc:840 -msgid "Data coding scheme: " -msgstr "" - -#: gsmlib/gsm_sms.cc:295 gsmlib/gsm_sms.cc:536 gsmlib/gsm_sms.cc:830 -msgid "SC timestamp: " -msgstr "" - -#: gsmlib/gsm_sms.cc:296 gsmlib/gsm_sms.cc:456 gsmlib/gsm_sms.cc:735 -#: gsmlib/gsm_sms.cc:842 -msgid "User data length: " -msgstr "" - -#: gsmlib/gsm_sms.cc:297 gsmlib/gsm_sms.cc:457 -msgid "User data header: 0x" -msgstr "" - -#: gsmlib/gsm_sms.cc:302 gsmlib/gsm_sms.cc:461 gsmlib/gsm_sms.cc:736 -#: gsmlib/gsm_sms.cc:843 -msgid "User data: '" -msgstr "" - -#: gsmlib/gsm_sms.cc:425 -msgid "Message type: SMS-SUBMIT" -msgstr "" - -#: gsmlib/gsm_sms.cc:427 -msgid "Reject duplicates: " -msgstr "" - -#: gsmlib/gsm_sms.cc:428 -msgid "Validity period format: " -msgstr "" - -#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:184 -msgid "not present" -msgstr "" - -#: gsmlib/gsm_sms.cc:435 -msgid "relative" -msgstr "" - -#: gsmlib/gsm_sms.cc:438 -msgid "absolute" -msgstr "" - -#: gsmlib/gsm_sms.cc:448 gsmlib/gsm_sms.cc:620 -msgid "Status report request: " -msgstr "" - -#: gsmlib/gsm_sms.cc:449 gsmlib/gsm_sms.cc:534 gsmlib/gsm_sms.cc:619 -msgid "Message reference: " -msgstr "" - -#: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 -msgid "Destination address: '" -msgstr "" - -#: gsmlib/gsm_sms.cc:455 -msgid "Validity period: " -msgstr "" - -#: gsmlib/gsm_sms.cc:530 -msgid "Message type: SMS-STATUS-REPORT" -msgstr "" - -#: gsmlib/gsm_sms.cc:533 -msgid "Status report qualifier: " -msgstr "" - -#: gsmlib/gsm_sms.cc:535 -msgid "Recipient address: '" -msgstr "" - -#: gsmlib/gsm_sms.cc:537 -msgid "Discharge time: " -msgstr "" - -#: gsmlib/gsm_sms.cc:538 -msgid "Status: 0x" -msgstr "" - -#: gsmlib/gsm_sms.cc:617 -msgid "Message type: SMS-COMMAND" -msgstr "" - -#: gsmlib/gsm_sms.cc:623 -msgid "Command type: 0x" -msgstr "" - -#: gsmlib/gsm_sms.cc:625 -msgid "Message number: " -msgstr "" - -#: gsmlib/gsm_sms.cc:628 -msgid "Command data length: " -msgstr "" - -#: gsmlib/gsm_sms.cc:629 -msgid "Command data: '" -msgstr "" - -#: gsmlib/gsm_sms.cc:722 -msgid "Message type: SMS-DELIVER-REPORT" -msgstr "" - -#: gsmlib/gsm_sms.cc:724 gsmlib/gsm_sms.cc:831 -msgid "Protocol identifier present: " -msgstr "" - -#: gsmlib/gsm_sms.cc:726 gsmlib/gsm_sms.cc:833 -msgid "Data coding scheme present: " -msgstr "" - -#: gsmlib/gsm_sms.cc:727 gsmlib/gsm_sms.cc:834 -msgid "User data length present: " -msgstr "" - -#: gsmlib/gsm_sms.cc:828 -msgid "Message type: SMS-SUBMIT-REPORT" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:189 gsmlib/gsm_sms_codec.cc:191 -msgid " minutes" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:193 -msgid " days" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:195 -msgid " weeks" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:214 -msgid "compressed " -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:219 -msgid "voicemail message waiting" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:222 -msgid "fax message waiting" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:225 -msgid "electronic mail message waiting" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:228 -msgid "other message waiting" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:235 -msgid "default alphabet" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:238 -msgid "8-bit alphabet" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:241 -msgid "16-bit alphabet" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:244 -msgid "reserved alphabet" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:257 -msgid "bad hexadecimal PDU format" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:286 gsmlib/gsm_sms_codec.cc:296 -#: gsmlib/gsm_sms_codec.cc:311 gsmlib/gsm_sms_codec.cc:319 -#: gsmlib/gsm_sms_codec.cc:340 gsmlib/gsm_sms_codec.cc:348 -#: gsmlib/gsm_sms_codec.cc:369 gsmlib/gsm_sms_codec.cc:383 -msgid "premature end of PDU" -msgstr "" - -#: gsmlib/gsm_sms_codec.cc:474 -msgid "unknown time period format" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:121 -msgid "interrupted when reading from TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:136 -msgid "end of file when reading from TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:146 -msgid "reading from TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:151 -msgid "timeout when reading from TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:178 -#, c-format -msgid "opening device '%s'" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:185 -msgid "getting file status flags failed" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:190 -msgid "switching of non-blocking mode failed" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:205 -msgid "clearing DTR failed" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:211 -msgid "setting DTR failed" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:216 -#, c-format -msgid "tcgetattr device '%s'" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:245 -#, c-format -msgid "tcsetattr device '%s'" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:303 -#, c-format -msgid "reset modem failed '%s'" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:348 gsmlib/gsm_unix_serial.cc:380 -msgid "interrupted when writing to TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:363 gsmlib/gsm_unix_serial.cc:372 -msgid "writing to TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:393 -msgid "timeout when writing to TA" -msgstr "" - -#: gsmlib/gsm_unix_serial.cc:454 -#, c-format -msgid "unknown baudrate '%s'" -msgstr "" - -#: gsmlib/gsm_util.cc:206 -#, c-format -msgid "error when calling stat('%s') (errno: %d/%s)" -msgstr "" - -#: gsmlib/gsm_util.cc:237 -#, c-format -msgid "file '%s' is neither file nor character device" -msgstr "" - -#: gsmlib/gsm_util.cc:241 -msgid "maxmimum number of symbolic links exceeded" -msgstr "" - -#: gsmlib/gsm_util.cc:251 -#, c-format -msgid "error renaming '%s' to '%s'" -msgstr "" - -#: gsmlib/gsm_util.cc:349 -#, c-format -msgid "text '%s' contains illegal character '\"'" -msgstr "" - -#: gsmlib/gsm_util.cc:359 -#, c-format -msgid "illegal character in telephone number '%s'" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:96 -#, c-format -msgid "error reading from file '%s" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:110 -#, c-format -msgid "entry '%s' lacks index" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:119 gsmlib/gsm_sorted_phonebook.cc:125 -#, c-format -msgid "line '%s' has invalid format" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_sms_store.cc:159 -#, c-format -msgid "error opening file '%s' for writing" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:175 gsmlib/gsm_sorted_phonebook.cc:194 -#: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 -msgid "" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:193 gsmlib/gsm_sorted_sms_store.cc:66 -#, c-format -msgid "error writing to file '%s'" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:217 -msgid "attempt to change phonebook read from " -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:230 gsmlib/gsm_sorted_sms_store.cc:215 -#, c-format -msgid "cannot open file '%s'" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:245 gsmlib/gsm_sorted_sms_store.cc:55 -#: gsmlib/gsm_sorted_sms_store.cc:228 -msgid "" -msgstr "" - -#: gsmlib/gsm_sorted_phonebook.cc:362 -msgid "indices must be unique in phonebook" -msgstr "" - -#: gsmlib/gsm_sorted_sms_store.cc:54 -#, c-format -msgid "error reading from file '%s'" -msgstr "" - -#: gsmlib/gsm_sorted_sms_store.cc:87 -#, c-format -msgid "file '%s' has wrong version" -msgstr "" - -#: gsmlib/gsm_sorted_sms_store.cc:99 gsmlib/gsm_sorted_sms_store.cc:111 -#, c-format -msgid "corrupt SMS store file '%s'" -msgstr "" - -#: gsmlib/gsm_sorted_sms_store.cc:204 -msgid "attempt to change SMS store read from " -msgstr "" diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id deleted file mode 100644 index 9788f70238..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am deleted file mode 100644 index 53f51ac19a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: scripts Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 5.6.1999 -# ************************************************************************* - -EXTRA_DIST = config.sub ltconfig missing \ - config.guess install-sh ltmain.sh mkinstalldirs debugconfig.sh diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in deleted file mode 100644 index 6129036172..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in +++ /dev/null @@ -1,259 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: scripts Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 5.6.1999 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -EXTRA_DIST = config.sub ltconfig missing \ - config.guess install-sh ltmain.sh mkinstalldirs debugconfig.sh - -subdir = scripts -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DIST_COMMON = Makefile.am Makefile.in config.guess config.rpath \ - config.sub depcomp install-sh ltconfig ltmain.sh missing \ - mkinstalldirs -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu scripts/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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 mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic distclean-libtool - -dvi: dvi-am - -dvi-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 - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-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-generic \ - mostlyclean-libtool 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess deleted file mode 100755 index f32079abda..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess +++ /dev/null @@ -1,1526 +0,0 @@ -#! /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-01-23' - -# 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 - -# 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) - 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-gnu - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - 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-gnu"; 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-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - 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="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - 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-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - 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-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # 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 ;; - 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath deleted file mode 100755 index 5ead7586a7..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath +++ /dev/null @@ -1,513 +0,0 @@ -#! /bin/sh -# Output a system dependent set of variables, describing how to set the -# run time search path of shared libraries in an executable. -# -# Copyright 1996-2002 Free Software Foundation, Inc. -# Taken from GNU libtool, 2001 -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. -# -# The first argument passed to this file is the canonical host specification, -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld -# should be set by the caller. -# -# The set of defined variables is at the end of this script. - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -shlibext= - -host="$1" -host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -wl= -if test "$GCC" = yes; then - wl='-Wl,' -else - case "$host_os" in - aix3* | aix4* | aix5*) - wl='-Wl,' - ;; - hpux9* | hpux10* | hpux11*) - wl='-Wl,' - ;; - irix5* | irix6*) - wl='-Wl,' - ;; - linux*) - echo '__INTEL_COMPILER' > conftest.$ac_ext - if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null - then - : - else - # Intel icc - wl='-Qoption,ld,' - fi - ;; - osf3* | osf4* | osf5*) - wl='-Wl,' - ;; - solaris*) - wl='-Wl,' - ;; - sunos4*) - wl='-Qoption ld ' - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - if test "x$host_vendor" = xsni; then - wl='-LD' - else - wl='-Wl,' - fi - ;; - esac -fi - -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no - -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 - ;; - openbsd*) - with_gnu_ld=no - ;; -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - case "$host_os" in - aix3* | aix4* | aix5*) - # On AIX, the GNU linker is very broken - ld_shlibs=no - ;; - amigaos*) - 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 use - # them. - ld_shlibs=no - ;; - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - cygwin* | mingw* | pw32*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - ;; - solaris* | sysv5*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - sunos4*) - hardcode_direct=yes - ;; - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - esac - if test "$ld_shlibs" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - fi -else - case "$host_os" in - aix3*) - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes; 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 - 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 - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - fi - hardcode_direct=yes - hardcode_libdir_separator=':' - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - 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 - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - fi - if test "$aix_use_runtimelinking" = yes; then - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - else - hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' - fi - fi - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - 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=' ' - libext=lib - ;; - darwin* | rhapsody*) - hardcode_direct=yes - ;; - freebsd1*) - ld_shlibs=no - ;; - freebsd2.2*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - freebsd2*) - hardcode_direct=yes - hardcode_minus_L=yes - ;; - freebsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - hpux9* | hpux10* | hpux11*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - ;; - irix5* | irix6*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - netbsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - newsos6) - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - openbsd*) - hardcode_direct=yes - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - else - case "$host_os" in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - osf3*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - osf4* | osf5*) - if test "$GCC" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - # Both cc and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - sco3.2v5*) - ;; - solaris*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - sunos4*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - ;; - sysv4) - if test "x$host_vendor" = xsno; then - hardcode_direct=yes # is this really true??? - else - hardcode_direct=no # Motorola manual says yes, but my tests say they lie - fi - ;; - sysv4.3*) - ;; - sysv5*) - hardcode_libdir_flag_spec= - ;; - uts4*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - dgux*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - sysv4*MP*) - if test -d /usr/nec; then - ld_shlibs=yes - fi - ;; - sysv4.2uw2*) - hardcode_direct=yes - hardcode_minus_L=no - ;; - sysv5uw7* | unixware7*) - ;; - *) - ld_shlibs=no - ;; - esac -fi - -# Check dynamic linker characteristics -libname_spec='lib$name' -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -case "$host_os" in - aix3*) - shlibext=so - ;; - aix4* | aix5*) - shlibext=so - ;; - amigaos*) - shlibext=ixlibrary - ;; - beos*) - shlibext=so - ;; - bsdi4*) - shlibext=so - 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" - ;; - cygwin* | mingw* | pw32*) - case $GCC,$host_os in - yes,cygwin*) - shlibext=dll.a - ;; - yes,mingw*) - shlibext=dll - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` - ;; - yes,pw32*) - shlibext=dll - ;; - *) - shlibext=dll - ;; - esac - ;; - darwin* | rhapsody*) - shlibext=dylib - ;; - freebsd1*) - ;; - freebsd*) - shlibext=so - ;; - gnu*) - shlibext=so - ;; - hpux9* | hpux10* | hpux11*) - shlibext=sl - ;; - irix5* | irix6*) - shlibext=so - case "$host_os" in - irix5*) - libsuff= shlibsuff= - ;; - *) - case $LD in - *-32|*"-32 ") libsuff= shlibsuff= ;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; - *) libsuff= shlibsuff= ;; - esac - ;; - esac - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - ;; - linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - ;; - linux-gnu*) - shlibext=so - ;; - netbsd*) - shlibext=so - ;; - newsos6) - shlibext=so - ;; - openbsd*) - shlibext=so - ;; - os2*) - libname_spec='$name' - shlibext=dll - ;; - osf3* | osf4* | osf5*) - shlibext=so - 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" - ;; - sco3.2v5*) - shlibext=so - ;; - solaris*) - shlibext=so - ;; - sunos4*) - shlibext=so - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - shlibext=so - case "$host_vendor" in - motorola) - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - uts4*) - shlibext=so - ;; - dgux*) - shlibext=so - ;; - sysv4*MP*) - if test -d /usr/nec; then - shlibext=so - fi - ;; -esac - -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` - -sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. 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 \ - | 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 \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | 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[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) - 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-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | 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[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-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-*) - ;; - # 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 - ;; - 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 - ;; - 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 - ;; - 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 - ;; - 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* \ - | -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*) - # 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 - ;; - -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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh deleted file mode 100755 index c9f597fed4..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -CXXFLAGS="-g -Wall" ./configure --disable-shared diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp deleted file mode 100755 index 807b991f4a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp +++ /dev/null @@ -1,423 +0,0 @@ -#! /bin/sh - -# depcomp - compile a program generating dependencies as side-effects -# Copyright 1999, 2000 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, 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 . - -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 -# `libtool' can also be set to `yes' or `no'. - -if test -z "$depfile"; then - base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` - dir=`echo "$object" | sed 's,/.*$,/,'` - if test "$dir" = "$object"; then - dir= - fi - # FIXME: should be _deps on DOS. - depfile="$dir.deps/$base" -fi - -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. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - 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. 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. - stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - outname="$stripped.o" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - 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,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$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" - ;; - -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 - tmpdepfile1="$dir.libs/$base.lo.d" - tmpdepfile2="$dir.libs/$base.d" - "$@" -Wc,-MD - else - tmpdepfile1="$dir$base.o.d" - tmpdepfile2="$dir$base.d" - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - else - tmpdepfile="$tmpdepfile2" - fi - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a space and a tab 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 proprocessed 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'. We will use -o /dev/null later, - # however we can't do the remplacement now because - # `-o $object' might simply not be used - 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 - "$@" -o /dev/null $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 $? - # 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 ;; - -*) - ;; - *) - 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 proprocessed 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 '/^# [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 proprocessed 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 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh deleted file mode 100755 index e8436696c1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# 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. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# 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 $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig deleted file mode 100755 index e3afc39777..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig +++ /dev/null @@ -1,3115 +0,0 @@ -#! /bin/sh - -# ltconfig - Create a system-specific libtool. -# Copyright (C) 1996-1999 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 lot of this script is taken from autoconf-2.10. - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} -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`} - case X$UNAME in - *-DOS) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -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' || - test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then - # 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. - - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH /usr/ucb; do - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$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' && - test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 ltconfig 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' && - test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - # Cool, printf works - : - elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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 test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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}" "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^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' - -# The name of this program. -progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - -# Constants: -PROGRAM=ltconfig -PACKAGE=libtool -VERSION=1.3.5 -TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -rm="rm -f" - -help="Try \`$progname --help' for more information." - -# Global variables: -default_ofile=libtool -can_build_shared=yes -enable_shared=yes -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -enable_static=yes -enable_fast_install=yes -enable_dlopen=unknown -enable_win32_dll=no -ltmain= -silent= -srcdir= -ac_config_guess= -ac_config_sub= -host= -nonopt= -ofile="$default_ofile" -verify_host=yes -with_gcc=no -with_gnu_ld=no -need_locks=yes -ac_ext=c -objext=o -libext=a -exeext= -cache_file= - -old_AR="$AR" -old_CC="$CC" -old_CFLAGS="$CFLAGS" -old_CPPFLAGS="$CPPFLAGS" -old_LDFLAGS="$LDFLAGS" -old_LD="$LD" -old_LN_S="$LN_S" -old_LIBS="$LIBS" -old_NM="$NM" -old_RANLIB="$RANLIB" -old_DLLTOOL="$DLLTOOL" -old_OBJDUMP="$OBJDUMP" -old_AS="$AS" - -# Parse the command line options. -args= -prev= -for option -do - case "$option" in - -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - eval "$prev=\$option" - prev= - continue - fi - - case "$option" in - --help) cat <&2 - echo "$help" 1>&2 - exit 1 - ;; - - *) - if test -z "$ltmain"; then - ltmain="$option" - elif test -z "$host"; then -# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 -# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then -# echo "$progname: warning \`$option' is not a valid host type" 1>&2 -# fi - host="$option" - else - echo "$progname: too many arguments" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac -done - -if test -z "$ltmain"; then - echo "$progname: you must specify a LTMAIN file" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -if test ! -f "$ltmain"; then - echo "$progname: \`$ltmain' does not exist" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -# Quote any args containing shell metacharacters. -ltconfig_args= -for arg -do - case "$arg" in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ltconfig_args="$ltconfig_args '$arg'" ;; - *) ltconfig_args="$ltconfig_args $arg" ;; - esac -done - -# A relevant subset of AC_INIT. - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 5 compiler messages saved in config.log -# 6 checking for... messages and results -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>>./config.log - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi -if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi - -if test -n "$cache_file" && test -r "$cache_file"; then - echo "loading cache $cache_file within ltconfig" - . $cache_file -fi - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to LTMAIN. - srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. -fi - -trap "$rm conftest*; exit 1" 1 2 15 -if test "$verify_host" = yes; then - # Check for config.guess and config.sub. - ac_aux_dir= - for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/config.guess; then - ac_aux_dir=$ac_dir - break - fi - done - if test -z "$ac_aux_dir"; then - echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 - echo "$help" 1>&2 - exit 1 - fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - - # Make sure we can run config.sub. - if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : - else - echo "$progname: cannot run $ac_config_sub" 1>&2 - echo "$help" 1>&2 - exit 1 - fi - - echo $ac_n "checking host system type""... $ac_c" 1>&6 - - host_alias=$host - case "$host_alias" in - "") - if host_alias=`$SHELL $ac_config_guess`; then : - else - echo "$progname: cannot guess host type; you must specify one" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac - host=`$SHELL $ac_config_sub $host_alias` - echo "$ac_t$host" 1>&6 - - # Make sure the host verified. - test -z "$host" && exit 1 - -elif test -z "$host"; then - echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 - echo "$help" 1>&2 - exit 1 -else - host_alias=$host -fi - -# Transform linux* to *-*-linux-gnu*, to support old configure scripts. -case "$host_os" in -linux-gnu*) ;; -linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -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 - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR cru $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -# Set a sane default for `AR'. -test -z "$AR" && AR=ar - -# Set a sane default for `OBJDUMP'. -test -z "$OBJDUMP" && OBJDUMP=objdump - -# If RANLIB is not set, then run the test. -if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then - RANLIB="ranlib" - result="ranlib" - break - fi - done - IFS="$save_ifs" - - echo "$ac_t$result" 1>&6 -fi - -if test -n "$RANLIB"; then - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -fi - -# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$AS" && AS=as - -# Check to see if we are using GCC. -if test "$with_gcc" != yes || test -z "$CC"; then - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then - CC="gcc" - break - fi - done - IFS="$save_ifs" - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - fi - - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/cc || test -f $dir/cc$ac_exeext; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue - fi - CC="cc" - break - fi - done - IFS="$save_ifs" - if test $cc_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same name, so the bogon will be chosen - # first if we set CC to just the name; use the full file name. - shift - set dummy "$dir/cc" "$@" - shift - CC="$@" - fi - fi - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$CC"; then - echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 - exit 1 - fi - fi - - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 - echo "$progname:581: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c - echo "$ac_t$with_gcc" 1>&6 -fi - -# Allow CC to be a program name with arguments. -set dummy $CC -compiler="$2" - -echo $ac_n "checking for object suffix... $ac_c" 1>&6 -$rm conftest* -echo 'int i = 1;' > conftest.c -echo "$progname:603: checking for object suffix" >& 5 -if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done -else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 -fi -$rm conftest* -echo "$ac_t$objext" 1>&6 - -echo $ac_n "checking for executable suffix... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_exeext="no" - $rm conftest* - echo 'main () { return 0; }' > conftest.c - echo "$progname:629: checking for executable suffix" >& 5 - if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - for ac_file in conftest.*; do - case $ac_file in - *.c | *.err | *.$objext ) ;; - *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; - esac - done - else - cat conftest.err 1>&5 - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* -fi -if test "X$ac_cv_exeext" = Xno; then - exeext="" -else - exeext="$ac_cv_exeext" -fi -echo "$ac_t$ac_cv_exeext" 1>&6 - -echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 -pic_flag= -special_shlib_compile_flags= -wl= -link_static_flag= -no_builtin_flag= - -if test "$with_gcc" = yes; then - wl='-Wl,' - link_static_flag='-static' - - case "$host_os" in - beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - aix*) - # Below there is a dirty hack to force normal static linking with -ldl - # The problem is because libdl dynamically linked with both libc and - # libC (AIX C++ library), which obviously doesn't included in libraries - # list by gcc. This cause undefined symbols with -static flags. - # This hack allows C programs to be linked with "-static -ldl", but - # we not sure about C++ programs. - link_static_flag="$link_static_flag ${wl}-lC" - ;; - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - 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'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; - sysv4*MP*) - if test -d /usr/nec; then - pic_flag=-Kconform_pic - fi - ;; - *) - pic_flag='-fPIC' - ;; - esac -else - # PORTME Check for PIC flags for the system compiler. - case "$host_os" in - aix3* | aix4*) - # All AIX code is PIC. - link_static_flag='-bnso -bI:/lib/syscalls.exp' - ;; - - hpux9* | hpux10* | hpux11*) - # Is there a better link_static_flag that works with the bundled CC? - wl='-Wl,' - link_static_flag="${wl}-a ${wl}archive" - pic_flag='+Z' - ;; - - irix5* | irix6*) - wl='-Wl,' - link_static_flag='-non_shared' - # PIC (with -KPIC) is the default. - ;; - - cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - - osf3* | osf4* | osf5*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' - ;; - - sco3.2v5*) - pic_flag='-Kpic' - link_static_flag='-dn' - special_shlib_compile_flags='-belf' - ;; - - solaris*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - sunos4*) - pic_flag='-PIC' - link_static_flag='-Bstatic' - wl='-Qoption ld ' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - uts4*) - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; - sysv4*MP*) - if test -d /usr/nec ;then - pic_flag='-Kconform_pic' - link_static_flag='-Bstatic' - fi - ;; - *) - can_build_shared=no - ;; - esac -fi - -if test -n "$pic_flag"; then - echo "$ac_t$pic_flag" 1>&6 - - # Check to make sure the pic_flag actually works. - echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" - echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 - if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - case "$host_os" in - hpux9* | hpux10* | hpux11*) - # On HP-UX, both CC and GCC only warn that PIC is supported... then they - # create non-PIC objects. So, if there were any warnings, we assume that - # PIC is not supported. - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - can_build_shared=no - pic_flag= - else - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - fi - ;; - *) - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - ;; - esac - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - can_build_shared=no - pic_flag= - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - echo "$ac_t"none 1>&6 -fi - -# Check to see if options -o and -c are simultaneously supported by compiler -echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 -$rm -r conftest 2>/dev/null -mkdir conftest -cd conftest -$rm conftest* -echo "int some_variable = 0;" > conftest.c -mkdir out -# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -# that will create temporary files in the current directory regardless of -# the output directory. Thus, making CWD read-only will cause this test -# to fail, enabling locking or at least warning the user not to do parallel -# builds. -chmod -w . -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -o out/conftest2.o" -echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 -if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s out/conftest.err; then - echo "$ac_t"no 1>&6 - compiler_c_o=no - else - echo "$ac_t"yes 1>&6 - compiler_c_o=yes - fi -else - # Append any errors to the config.log. - cat out/conftest.err 1>&5 - compiler_c_o=no - echo "$ac_t"no 1>&6 -fi -CFLAGS="$save_CFLAGS" -chmod u+w . -$rm conftest* out/* -rmdir out -cd .. -rmdir conftest -$rm -r conftest 2>/dev/null - -if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo - echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" - echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 -if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_o_lo=no - else - echo "$ac_t"yes 1>&6 - compiler_o_lo=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_o_lo=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - compiler_o_lo=no -fi - -# Check to see if we can do hard links to lock some files if needed -hard_links="nottested" -if test "$compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&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 "$ac_t$hard_links" 1>&6 - $rm conftest* - if test "$hard_links" = no; then - echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 - need_locks=warn - fi -else - need_locks=no -fi - -if test "$with_gcc" = yes; then - # Check to see if options -fno-rtti -fno-exceptions are supported by compiler - echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 - $rm conftest* - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" - echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 - if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - compiler_rtti_exceptions=no - else - echo "$ac_t"yes 1>&6 - compiler_rtti_exceptions=yes - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - compiler_rtti_exceptions=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* - - if test "$compiler_rtti_exceptions" = "yes"; then - no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' - else - no_builtin_flag=' -fno-builtin' - fi - -fi - -# Check for any special shared library compilation flags. -if test -n "$special_shlib_compile_flags"; then - echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 - if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : - else - echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 - can_build_shared=no - fi -fi - -echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 -$rm conftest* -echo 'main(){return(0);}' > conftest.c -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS $link_static_flag" -echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 -if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 -else - echo "$ac_t"none 1>&6 - link_static_flag= -fi -LDFLAGS="$save_LDFLAGS" -$rm conftest* - -if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 - $rm conftest.dat - if ln -s X conftest.dat 2>/dev/null; then - $rm conftest.dat - LN_S="ln -s" - else - LN_S=ln - fi - if test "$LN_S" = "ln -s"; then - echo "$ac_t"yes 1>&6 - else - echo "$ac_t"no 1>&6 - fi -fi - -# Make sure LD is an absolute path. -if test -z "$LD"; then - ac_prog=ld - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 - echo "$progname:991: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path 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 are not 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 $ac_n "checking for GNU ld... $ac_c" 1>&6 - echo "$progname:1015: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 - echo "$progname:1018: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" - fi - - if test -n "$LD"; then - echo "$ac_t$LD" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$LD"; then - echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 - exit 1 - fi -fi - -# Check to see if it really is or is not GNU ld. -echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 -# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - with_gnu_ld=yes -else - with_gnu_ld=no -fi -echo "$ac_t$with_gnu_ld" 1>&6 - -# See if the linker supports building shared libraries. -echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 - -allow_undefined_flag= -no_undefined_flag= -need_lib_prefix=unknown -need_version=unknown -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -archive_cmds= -archive_expsym_cmds= -old_archive_from_new_cmds= -export_dynamic_flag_spec= -whole_archive_flag_spec= -thread_safe_flag_spec= -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no -hardcode_shlibpath_var=unsupported -runpath_var= -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 egrep regular expression 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. - -case "$host_os" in -cygwin* | mingw*) - # 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 "$with_gcc" != yes; then - with_gnu_ld=no - fi - ;; - -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case "$host_os" in - aix3* | aix4*) - # On AIX, the GNU linker is very broken - 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 - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 use - # them. - ld_shlibs=no - ;; - - beos*) - if $LD --help 2>&1 | egrep ': 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 $linkopts ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw*) - # 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=yes - - # Extract the symbol export list from an `--export-all' def file, - # then regenerate the def file from the symbol export list, so that - # the compiled dll only exports the symbol export list. - # Be careful not to strip the DATA tag left by newer dlltools. - export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ - $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ - sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' - - # If DATA tags from a recent dlltool are present, honour them! - archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ - _lt_hint=1; - cat $export_symbols | while read symbol; do - set dummy \$symbol; - case \$# in - 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; - *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; - esac; - _lt_hint=`expr 1 + \$_lt_hint`; - done~ - test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ - test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ - $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ - $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' - - old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' - # can we support soname and/or expsyms with a.out? -oliva - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | egrep '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 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - case $host_os in - cygwin* | mingw*) - # dlltool doesn't understand --whole-archive et. al. - whole_archive_flag_spec= - ;; - *) - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - ;; - esac - 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 $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$with_gcc" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4*) - hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' - hardcode_libdir_separator=':' - if test "$with_gcc" = yes; then - 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 - shared_flag='-shared' - else - shared_flag='${wl}-bM:SRE' - hardcode_direct=yes - fi - allow_undefined_flag=' ${wl}-berok' - archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' - archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' - case "$host_os" in aix4.[01]|aix4.[01].*) - # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on - always_export_symbols=yes ;; - esac - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 - ;; - - cygwin* | mingw*) - # 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 - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $linkopts `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' - fix_srcfile_path='`cygpath -w $srcfile`' - ;; - - 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 $linkopts /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 $linkopts' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9* | hpux10* | hpux11*) - case "$host_os" in - hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; - *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; - esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - if test "$with_gcc" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF - fi - hardcode_libdir_flag_spec='${wl}-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - - osf3*) - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${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 the -msym flag - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - rhapsody*) - archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flags_spec='-L$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - 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 $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case "$host_os" in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - 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 $linkopts' - else - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' - 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 $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - unixware7*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac -fi -echo "$ac_t$ld_shlibs" 1>&6 -test "$ld_shlibs" = no && can_build_shared=no - -if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in - [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm || test -f $ac_dir/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 - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -B" - break - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -p" - break - else - NM=${NM="$ac_dir/nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$NM" && NM=nm - ;; - esac - echo "$ac_t$NM" 1>&6 -fi - -# Check for command to grab the raw symbol name followed by C symbol from nm. -echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 - -# 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 the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - -# Define system-specific variables. -case "$host_os" in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw*) - symcode='[ABCDGISTW]' - ;; -hpux*) # Its linker distinguishes data from code symbols - global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" - ;; -irix*) - symcode='[BCDEGRST]' - ;; -solaris*) - symcode='[BDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then - symcode='[ABCDGISTW]' -fi - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - $rm conftest* - cat > conftest.c <&5 - if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then - # Now try to grab the symbols. - nlist=conftest.nm - if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then - if egrep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.c -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' - - cat <> conftest.c -#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/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c - cat <<\EOF >> conftest.c - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$objext conftstm.$objext - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="conftstm.$objext" - CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - pipe_works=yes - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - LIBS="$save_LIBS" - 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 $global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - $rm conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - global_symbol_pipe= - fi -done -if test "$pipe_works" = yes; then - echo "${ac_t}ok" 1>&6 -else - echo "${ac_t}failed" 1>&6 -fi - -if test -z "$global_symbol_pipe"; then - global_symbol_to_cdecl= -fi - -# Check hardcoding attributes. -echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var"; 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 "$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 "$ac_t$hardcode_action" 1>&6 - - -reload_flag= -reload_cmds='$LD$reload_flag -o $output$reload_objs' -echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 -# PORTME Some linkers may need a different reload flag. -reload_flag='-r' -echo "$ac_t$reload_flag" 1>&6 -test -n "$reload_flag" && reload_flag=" $reload_flag" - -# PORTME Fill in your ld.so characteristics -library_names_spec= -libname_spec='lib$name' -soname_spec= -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" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -file_magic_cmd= -file_magic_test_file= -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 egrep 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. -echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 -case "$host_os" in -aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}.so$major' - ;; - -aix4*) - version_type=linux - # AIX 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. - # We preserve .a as extension for shared libraries though AIX4.2 - # and later linker supports .so - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' - shlibpath_var=LIBPATH - deplibs_check_method=pass_all - ;; - -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}.so' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - deplibs_check_method=pass_all - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - 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" - export_dynamic_flag_spec=-rdynamic - # 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*) - version_type=windows - need_version=no - need_lib_prefix=no - if test "$with_gcc" = yes; then - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' - else - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' - fi - dynamic_linker='Win32 ld.exe' - deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - file_magic_cmd='${OBJDUMP} -f' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case "$version_type" in - freebsd-elf*) - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - deplibs_check_method=unknown - library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case "$host_os" in - freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - deplibs_check_method=pass_all - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos - need_lib_prefix=no - need_version=no - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - case "$host_os" in - hpux10.20*) - # TODO: Does this work for hpux-11 too? - deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6*) - version_type=irix - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}.so.$major' - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' - case "$host_os" in - irix5*) - libsuff= shlibsuff= - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case "$LD" in # libtool.m4 will add one of these switches to LD - *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 ") 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}" - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /lib${libsuff}/libc.so*` - deplibs_check_method='pass_all' - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux-gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - deplibs_check_method=pass_all - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' - else - # Only the GNU ld.so supports shared libraries on MkLinux. - case "$host_cpu" in - powerpc*) dynamic_linker=no ;; - *) dynamic_linker='Linux ld.so' ;; - esac - fi - ;; - -netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' - soname_spec='${libname}${release}.so$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - ;; - -openbsd*) - version_type=sunos - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - need_version=no - fi - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -os2*) - libname_spec='$name' - need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_version=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH - # this will be overridden with pass_all, but let us keep it just in case - deplibs_check_method='file_magic COFF format alpha shared library' - file_magic_cmd=/usr/bin/file - file_magic_test_file=/shlib/libc.so - deplibs_check_method='pass_all' - 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" - ;; - -rhapsody*) - version_type=sunos - library_names_spec='${libname}.so' - soname_spec='${libname}.so' - shlibpath_var=DYLD_LIBRARY_PATH - deplibs_check_method=pass_all - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}.so$major' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" - file_magic_cmd=/usr/bin/file - file_magic_test_file=/lib/libc.so - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - case "$host_vendor" in - sequent) - file_magic_cmd='/bin/file' - deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - ncr) - deplibs_check_method='pass_all' - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - 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]' - file_magic_cmd=/usr/bin/file - file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - esac - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$ac_t$dynamic_linker" 1>&6 -test "$dynamic_linker" = no && can_build_shared=no - -# Report the final consequences. -echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in -# configure.in, otherwise build static only libraries. -case "$host_os" in -cygwin* | mingw* | os2*) - if test x$can_build_shared = xyes; then - test x$enable_win32_dll = xno && can_build_shared=no - echo "checking if package supports dlls... $can_build_shared" 1>&6 - fi -;; -esac - -if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then - case "$deplibs_check_method" in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - 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 - -echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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*) - test "$enable_shared" = yes && enable_static=no - ;; -esac - -echo "$ac_t$enable_shared" 1>&6 - -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes - -echo "checking whether to build static libraries... $enable_static" 1>&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 - -echo $ac_n "checking for objdir... $ac_c" 1>&6 -rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - objdir=_libs -fi -rmdir .libs 2>/dev/null -echo "$ac_t$objdir" 1>&6 - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else -if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then - lt_cv_dlopen=no lt_cv_dlopen_libs= -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "$progname:2248: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "$progname:2288: checking for dlopen" >&5 -if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen(); - -int main() { - -/* 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 -dlopen(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_dlopen=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_dlopen=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dlopen" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "$progname:2335: checking for dld_link in -ldld" >&5 -ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "$progname:2375: checking for shl_load" >&5 -if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load(); - -int main() { - -/* 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 -shl_load(); -#endif - -; return 0; } -EOF -if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_shl_load=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_shl_load=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "$progname:2423: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - -fi - - -fi - - -fi - -fi - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - fi - - case "$lt_cv_dlopen" in - dlopen) -for ac_hdr in dlfcn.h; do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "$progname:2488: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int fnord = 0; -EOF -ac_try="$ac_compile >/dev/null 2>conftest.out" -{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi -done - - if test "x$ac_cv_header_dlfcn_h" = xyes; then - CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - fi - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2526: checking whether a program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } - -EOF -if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self" 1>&6 - - if test "$lt_cv_dlopen_self" = yes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - lt_cv_dlopen_self_static=cross - else - cat > conftest.c < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LTDL_GLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LTDL_GLOBAL DL_GLOBAL -# else -# define LTDL_GLOBAL 0 -# endif -#endif - -/* We may have to define LTDL_LAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LTDL_LAZY_OR_NOW -# ifdef RTLD_LAZY -# define LTDL_LAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LTDL_LAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LTDL_LAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LTDL_LAZY_OR_NOW DL_NOW -# else -# define LTDL_LAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } - -EOF -if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - lt_cv_dlopen_self_static=yes -else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - lt_cv_dlopen_self_static=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 -fi - ;; - 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 - -# Copy echo and quote the copy, instead of the original, because it is -# used later. -ltecho="$echo" -if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then - ltecho="$CONFIG_SHELL \$0 --fallback-echo" -fi -LTSHELL="$SHELL" - -LTCONFIG_VERSION="$VERSION" - -# Only quote variables if we're using ltmain.sh. -case "$ltmain" in -*.sh) - # Now quote all the things that may contain metacharacters. - for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ - AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ - thread_safe_flag_spec whole_archive_flag_spec libname_spec \ - library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ - old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ - file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ - finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ - hardcode_libdir_flag_spec hardcode_libdir_separator \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case "$ltecho" in - *'\$0 --fallback-echo"') - ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - - trap "$rm \"$ofile\"; exit 1" 1 2 15 - echo "creating $ofile" - $rm "$ofile" - cat < "$ofile" -#! $SHELL - -# `$echo "$ofile" | 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 ltconfig or ltmain.sh. -# -# Copyright (C) 1996-1999 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -### BEGIN LIBTOOL CONFIG -EOF - cfgfile="$ofile" - ;; - -*) - # Double-quote the variables that need it (for aesthetics). - for var in old_CC old_CFLAGS old_CPPFLAGS \ - old_LD old_LDFLAGS old_LIBS \ - old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do - eval "$var=\\\"\$var\\\"" - done - - # Just create a config file. - cfgfile="$ofile.cfg" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - echo "creating $cfgfile" - $rm "$cfgfile" - cat < "$cfgfile" -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -EOF - ;; -esac - -cat <> "$cfgfile" -# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ -# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ -# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ -# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ -# $0$ltconfig_args -# -# Compiler and other test output produced by $progname, useful for -# debugging $progname, is in ./config.log if it exists. - -# The version of $progname that generated this script. -LTCONFIG_VERSION=$LTCONFIG_VERSION - -# Shell to use when invoking shell scripts. -SHELL=$LTSHELL - -# 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 optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$ltecho - -# The archiver. -AR=$AR - -# The default C compiler. -CC=$CC - -# The linker used to build libraries. -LD=$LD - -# Whether we need hard or soft links. -LN_S=$LN_S - -# A BSD-compatible nm program. -NM=$NM - -# 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=$reload_flag -reload_cmds=$reload_cmds - -# How to pass a linker flag through the compiler. -wl=$wl - -# Object file suffix (normally "o"). -objext="$objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$pic_flag - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$compiler_c_o - -# Can we write directly to a .lo ? -compiler_o_lo=$compiler_o_lo - -# Must we lock files when doing compilation ? -need_locks=$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=$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=$link_static_flag - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$no_builtin_flag - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$whole_archive_flag_spec - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$thread_safe_flag_spec - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$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=$library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$RANLIB -old_archive_cmds=$old_archive_cmds -old_postinstall_cmds=$old_postinstall_cmds -old_postuninstall_cmds=$old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$old_archive_from_new_cmds - -# Commands used to build and install a shared archive. -archive_cmds=$archive_cmds -archive_expsym_cmds=$archive_expsym_cmds -postinstall_cmds=$postinstall_cmds -postuninstall_cmds=$postuninstall_cmds - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$allow_undefined_flag - -# Flag that forces no undefined symbols. -no_undefined_flag=$no_undefined_flag - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$global_symbol_to_cdecl - -# 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 - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$hardcode_libdir_separator - -# Set to yes if using DIR/libNAME.so 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 - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$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=$export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$include_expsyms - -EOF - -case "$ltmain" in -*.sh) - echo '### END LIBTOOL CONFIG' >> "$ofile" - echo >> "$ofile" - case "$host_os" in - aix3*) - cat <<\EOF >> "$ofile" - -# 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 - - # Append the ltmain.sh script. - sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) - # 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? - - chmod +x "$ofile" - ;; - -*) - # Compile the libtool program. - echo "FIXME: would compile $ltmain" - ;; -esac - -test -n "$cache_file" || exit 0 - -# AC_CACHE_SAVE -trap '' 1 2 15 -cat > confcache <<\EOF -# 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. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# 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 \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh deleted file mode 100644 index db4982d8a9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh +++ /dev/null @@ -1,6538 +0,0 @@ -# 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.20 Debian 1.5.20-2" -TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" - -# 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 - -# 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= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# 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 /{x;/import/!{s/^/import/;h;p;};x;};}'` - if test "X$win32_nmres" = "Ximport" ; then - win32_libid_type="x86 archive import" - else - win32_libid_type="x86 archive static" - fi - 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_xdir="$my_gentop/$my_xlib" - - $show "${rm}r $my_xdir" - $run ${rm}r "$my_xdir" - $show "$mkdir $my_xdir" - $run $mkdir "$my_xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$my_xdir"; then - 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\" - -# 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 ;; - --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 - -# 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 ;; - 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 - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_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 - 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) - 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) - prev=darwin_framework - compiler_flags="$compiler_flags $arg" - 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 - exit $EXIT_FAILURE - 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*) - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-mingw* | *-*-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 - 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 - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) - - # 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" - if test "$with_gcc" = "yes" ; then - compiler_flags="$compiler_flags $arg" - fi - 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) - # 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 - 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 - status=$? - if test "$status" -ne 0 && test ! -d "$output_objdir"; then - 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 - notinst_path= # paths that contain 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%" - test "X$link_all_deplibs" != Xno && libs="$libs $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'" 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 -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 - if test -n "$library_names" && - { test "$prefer_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* ) 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) - 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" - ;; - *) - $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 - ;; - 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. - test "X$arg" = "X-lc" && continue - ;; - *) - # 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 - - # 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" - 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 - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - 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 - - 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*) - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - 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"' - 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"' - 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 -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC -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. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $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" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - 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 $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" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - 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" | $Xsed -e "$sed_quote_subst"` - 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* ) - cwrappersource=`$echo ${objdir}/lt-${outputname}.c` - cwrapper=`$echo ${output}.exe` - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#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 '/' -#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 -#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 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -char * basename (const char *name); -char * fnqualify(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 ((char *) basename (argv[0])); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = fnqualify(argv[0]); - /* 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; -EOF - - cat >> $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 -; -} - -char * -basename (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha (name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return (char *) base; -} - -char * -fnqualify(const char *path) -{ - size_t size; - char *p; - char tmp[LT_PATHMAX + 1]; - - assert(path != NULL); - - /* Is it qualified already? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha (path[0]) && path[1] == ':') - return xstrdup (path); -#endif - if (IS_DIR_SEPARATOR (path[0])) - return xstrdup (path); - - /* prepend the current directory */ - /* doesn't handle '~' */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ - p = XMALLOC(char, size); - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); - return p; -} - -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 -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' - -# 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 \${1+\"\$@\"}\" - 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" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - 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" | $Xsed -e "$sed_quote_subst"` - 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" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - 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="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - save_umask=`umask` - umask 0077 - if $mkdir "$tmpdir"; then - umask $save_umask - else - umask $save_umask - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $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 "----------------------------------------------------------------------" - $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 "----------------------------------------------------------------------" - 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 - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # 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" - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - - if test "$mode" = uninstall; then - 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. - fi - 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 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 -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing deleted file mode 100755 index 6a37006e8f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing +++ /dev/null @@ -1,336 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997, 1999, 2000, 2002 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., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, 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=: - -# 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 - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - - -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' - 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]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. - You can get \`$1Help2man' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - 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' is missing on your system. 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 [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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 [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. 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." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # 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 you do not seem to have it handy on your - system. 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 prerequirements 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 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs deleted file mode 100755 index 4324e052bb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.1 1999/06/27 07:45:05 cvs Exp $ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in deleted file mode 100644 index 9788f70238..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am deleted file mode 100644 index 5213164a76..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am +++ /dev/null @@ -1,65 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: tests Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 21.5.1999 -# ************************************************************************* - -INCLUDES = -I.. - -noinst_PROGRAMS = testsms testsms2 testparser testgsmlib testpb testpb2 \ - testspb testssms testcb - -TESTS = runspb.sh runspb2.sh runssms.sh runsms.sh \ - runparser.sh runspbi.sh - -# test files used for file-based phonebook and SMS testing -EXTRA_DIST = spb.pb runspb.sh runspb2.sh runssms.sh runsms.sh \ - runparser.sh \ - spb.pb spb2.pb \ - testparser-output.txt testspb-output.txt \ - testssms-output.txt testsms-output.txt \ - testspb2-output.txt \ - runspbi.sh spbi2-orig.pb spbi1.pb testspbi-output.txt - -# build testsms from testsms.cc and libgsmme.la -testsms_SOURCES = testsms.cc -testsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testsms2 from testsms2.cc and libgsmme.la -testsms2_SOURCES = testsms2.cc -testsms2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testparser from testparser.cc and libgsmme.la -testparser_SOURCES = testparser.cc -testparser_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testgsmlib from testgsmlib.cc and libgsmme.la -testgsmlib_SOURCES = testgsmlib.cc -testgsmlib_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testpb from testpb.cc and libgsmme.la -testpb_SOURCES = testpb.cc -testpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testpb2 from testpb2.cc and libgsmme.la -testpb2_SOURCES = testpb2.cc -testpb2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testspb from testspb.cc and libgsmme.la -testspb_SOURCES = testspb.cc -testspb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testssms from testssms.cc and libgsmme.la -testssms_SOURCES = testssms.cc -testssms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testcb from testcb.cc and libgsmme.la -testcb_SOURCES = testcb.cc -testcb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in deleted file mode 100644 index e949e268ff..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in +++ /dev/null @@ -1,544 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: tests Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 21.5.1999 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -INCLUDES = -I.. - -noinst_PROGRAMS = testsms testsms2 testparser testgsmlib testpb testpb2 \ - testspb testssms testcb - - -TESTS = runspb.sh runspb2.sh runssms.sh runsms.sh \ - runparser.sh runspbi.sh - - -# test files used for file-based phonebook and SMS testing -EXTRA_DIST = spb.pb runspb.sh runspb2.sh runssms.sh runsms.sh \ - runparser.sh \ - spb.pb spb2.pb \ - testparser-output.txt testspb-output.txt \ - testssms-output.txt testsms-output.txt \ - testspb2-output.txt \ - runspbi.sh spbi2-orig.pb spbi1.pb testspbi-output.txt - - -# build testsms from testsms.cc and libgsmme.la -testsms_SOURCES = testsms.cc -testsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testsms2 from testsms2.cc and libgsmme.la -testsms2_SOURCES = testsms2.cc -testsms2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testparser from testparser.cc and libgsmme.la -testparser_SOURCES = testparser.cc -testparser_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testgsmlib from testgsmlib.cc and libgsmme.la -testgsmlib_SOURCES = testgsmlib.cc -testgsmlib_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testpb from testpb.cc and libgsmme.la -testpb_SOURCES = testpb.cc -testpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testpb2 from testpb2.cc and libgsmme.la -testpb2_SOURCES = testpb2.cc -testpb2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testspb from testspb.cc and libgsmme.la -testspb_SOURCES = testspb.cc -testspb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testssms from testssms.cc and libgsmme.la -testssms_SOURCES = testssms.cc -testssms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) - -# build testcb from testcb.cc and libgsmme.la -testcb_SOURCES = testcb.cc -testcb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) -subdir = tests -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -noinst_PROGRAMS = testsms$(EXEEXT) testsms2$(EXEEXT) testparser$(EXEEXT) \ - testgsmlib$(EXEEXT) testpb$(EXEEXT) testpb2$(EXEEXT) \ - testspb$(EXEEXT) testssms$(EXEEXT) testcb$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) - -am_testcb_OBJECTS = testcb.$(OBJEXT) -testcb_OBJECTS = $(am_testcb_OBJECTS) -testcb_DEPENDENCIES = ../gsmlib/libgsmme.la -testcb_LDFLAGS = -am_testgsmlib_OBJECTS = testgsmlib.$(OBJEXT) -testgsmlib_OBJECTS = $(am_testgsmlib_OBJECTS) -testgsmlib_DEPENDENCIES = ../gsmlib/libgsmme.la -testgsmlib_LDFLAGS = -am_testparser_OBJECTS = testparser.$(OBJEXT) -testparser_OBJECTS = $(am_testparser_OBJECTS) -testparser_DEPENDENCIES = ../gsmlib/libgsmme.la -testparser_LDFLAGS = -am_testpb_OBJECTS = testpb.$(OBJEXT) -testpb_OBJECTS = $(am_testpb_OBJECTS) -testpb_DEPENDENCIES = ../gsmlib/libgsmme.la -testpb_LDFLAGS = -am_testpb2_OBJECTS = testpb2.$(OBJEXT) -testpb2_OBJECTS = $(am_testpb2_OBJECTS) -testpb2_DEPENDENCIES = ../gsmlib/libgsmme.la -testpb2_LDFLAGS = -am_testsms_OBJECTS = testsms.$(OBJEXT) -testsms_OBJECTS = $(am_testsms_OBJECTS) -testsms_DEPENDENCIES = ../gsmlib/libgsmme.la -testsms_LDFLAGS = -am_testsms2_OBJECTS = testsms2.$(OBJEXT) -testsms2_OBJECTS = $(am_testsms2_OBJECTS) -testsms2_DEPENDENCIES = ../gsmlib/libgsmme.la -testsms2_LDFLAGS = -am_testspb_OBJECTS = testspb.$(OBJEXT) -testspb_OBJECTS = $(am_testspb_OBJECTS) -testspb_DEPENDENCIES = ../gsmlib/libgsmme.la -testspb_LDFLAGS = -am_testssms_OBJECTS = testssms.$(OBJEXT) -testssms_OBJECTS = $(am_testssms_OBJECTS) -testssms_DEPENDENCIES = ../gsmlib/libgsmme.la -testssms_LDFLAGS = - -DEFS = @DEFS@ -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/testcb.Po ./$(DEPDIR)/testgsmlib.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/testparser.Po ./$(DEPDIR)/testpb.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/testpb2.Po ./$(DEPDIR)/testsms.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/testsms2.Po ./$(DEPDIR)/testspb.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/testssms.Po -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -CXXFLAGS = @CXXFLAGS@ -DIST_SOURCES = $(testcb_SOURCES) $(testgsmlib_SOURCES) \ - $(testparser_SOURCES) $(testpb_SOURCES) $(testpb2_SOURCES) \ - $(testsms_SOURCES) $(testsms2_SOURCES) $(testspb_SOURCES) \ - $(testssms_SOURCES) -DIST_COMMON = Makefile.am Makefile.in -SOURCES = $(testcb_SOURCES) $(testgsmlib_SOURCES) $(testparser_SOURCES) $(testpb_SOURCES) $(testpb2_SOURCES) $(testsms_SOURCES) $(testsms2_SOURCES) $(testspb_SOURCES) $(testssms_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -testcb$(EXEEXT): $(testcb_OBJECTS) $(testcb_DEPENDENCIES) - @rm -f testcb$(EXEEXT) - $(CXXLINK) $(testcb_LDFLAGS) $(testcb_OBJECTS) $(testcb_LDADD) $(LIBS) -testgsmlib$(EXEEXT): $(testgsmlib_OBJECTS) $(testgsmlib_DEPENDENCIES) - @rm -f testgsmlib$(EXEEXT) - $(CXXLINK) $(testgsmlib_LDFLAGS) $(testgsmlib_OBJECTS) $(testgsmlib_LDADD) $(LIBS) -testparser$(EXEEXT): $(testparser_OBJECTS) $(testparser_DEPENDENCIES) - @rm -f testparser$(EXEEXT) - $(CXXLINK) $(testparser_LDFLAGS) $(testparser_OBJECTS) $(testparser_LDADD) $(LIBS) -testpb$(EXEEXT): $(testpb_OBJECTS) $(testpb_DEPENDENCIES) - @rm -f testpb$(EXEEXT) - $(CXXLINK) $(testpb_LDFLAGS) $(testpb_OBJECTS) $(testpb_LDADD) $(LIBS) -testpb2$(EXEEXT): $(testpb2_OBJECTS) $(testpb2_DEPENDENCIES) - @rm -f testpb2$(EXEEXT) - $(CXXLINK) $(testpb2_LDFLAGS) $(testpb2_OBJECTS) $(testpb2_LDADD) $(LIBS) -testsms$(EXEEXT): $(testsms_OBJECTS) $(testsms_DEPENDENCIES) - @rm -f testsms$(EXEEXT) - $(CXXLINK) $(testsms_LDFLAGS) $(testsms_OBJECTS) $(testsms_LDADD) $(LIBS) -testsms2$(EXEEXT): $(testsms2_OBJECTS) $(testsms2_DEPENDENCIES) - @rm -f testsms2$(EXEEXT) - $(CXXLINK) $(testsms2_LDFLAGS) $(testsms2_OBJECTS) $(testsms2_LDADD) $(LIBS) -testspb$(EXEEXT): $(testspb_OBJECTS) $(testspb_DEPENDENCIES) - @rm -f testspb$(EXEEXT) - $(CXXLINK) $(testspb_LDFLAGS) $(testspb_OBJECTS) $(testspb_LDADD) $(LIBS) -testssms$(EXEEXT): $(testssms_OBJECTS) $(testssms_DEPENDENCIES) - @rm -f testssms$(EXEEXT) - $(CXXLINK) $(testssms_LDFLAGS) $(testssms_OBJECTS) $(testssms_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgsmlib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testparser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpb2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testsms.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testsms2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testspb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testssms.Po@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.cc.o: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -.cc.obj: -@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `cygpath -w $<` - -.cc.lo: -@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< -CXXDEPMODE = @CXXDEPMODE@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -tags: TAGS - -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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; \ - srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ - ;; \ - *) \ - echo "PASS: $$tst"; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - ;; \ - esac; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ - else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ - fi; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0; \ - else :; fi -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(PROGRAMS) - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-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 - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -uninstall-am: uninstall-info-am - -.PHONY: GTAGS all all-am check check-TESTS check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS distclean distclean-compile \ - distclean-depend distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-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 \ - 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh deleted file mode 100755 index 9ee9d312f5..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -errorexit() { - echo $1 - exit 1 -} - -# run the test -./testparser > testparser.log - -# check if output differs from what it should be -diff testparser.log testparser-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh deleted file mode 100755 index f027544ee7..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -errorexit() { - echo $1 - exit 1 -} - -# prepare locales to make date format reproducible -LC_ALL=en_US -LANG=en -LINGUAS=en -export LC_ALL LANG LINGUAS - -# run the test -./testsms > testsms.log - -# check if output differs from what it should be -diff testsms.log testsms-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh deleted file mode 100755 index fb8c6200f8..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -errorexit() { - echo $1 - exit 1 -} - -cp spb.pb spb-copy.pb || errorexit "could not copy spb.pb to spb-copy.pb" - -# run the test -./testspb > testspb.log - -# add new contents of phonebook file to the test log -cat spb-copy.pb >> testspb.log - -# check if output differs from what it should be -diff testspb.log testspb-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh deleted file mode 100755 index df8f123cae..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -errorexit() { - echo $1 - exit 1 -} - -cp spb2.pb spb-copy.pb || errorexit "could not copy spb2.pb to spb2-copy.pb" - -# run the test -./testspb > testspb2.log - -# add new contents of phonebook file to the test log -cat spb-copy.pb >> testspb2.log - -# check if output differs from what it should be -diff testspb2.log testspb2-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh deleted file mode 100755 index 94b5b459a4..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -errorexit() { - echo $1 - exit 1 -} - -cp spbi2-orig.pb spbi2.pb || - errorexit "could not copy spbi2-orig.pb to spbi2.pb" - -# run the test -../apps/gsmpb -V -i -s spbi1.pb -d spbi2.pb > testspbi.log - -# add new contents of phonebook file to the test log -cat spbi2.pb >> testspbi.log - -# check if output differs from what it should be -diff testspbi.log testspbi-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh deleted file mode 100755 index 5b11442189..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -errorexit() { - echo $1 - exit 1 -} - -rm -f sms.sms || errorexit "could not delete sms.sms" -touch sms.sms || errorexit "could not create sms.sms" - -# prepare locales to make date format reproducible -LC_ALL=en_US -LANG=en -LINGUAS=en -export LC_ALL LANG LINGUAS - -# run the test -./testssms > testssms.log - -# check if output differs from what it should be -diff testssms.log testssms-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb deleted file mode 100644 index debd672369..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb +++ /dev/null @@ -1,11 +0,0 @@ -|Dieter Meier|793045 -|Edgar Hofmann|42345 -|Goethe|847159 -|Hans Hofmann|12345 -|Hans-Dieter Schmidt|82345 -|Hans-Dieter Schmidt|13333345 -|Heiner Müller|7890 -|line with \||0815 -|line with\\|0815 -|One line\rback to start|0815 -|two\nline|0815 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb deleted file mode 100644 index ed0c16cc73..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb +++ /dev/null @@ -1,11 +0,0 @@ -|Dieter Meier|017793045 -|Edgar Hofmann|+4942345 -|Goethe|847159 -|Hans Hofmann|0171 -|Hans-Dieter Schmidt|82345 -|Hans-Dieter Schmidt|13333345 -|Heiner Müller|7890 -|line with \||0815 -|line with\\|0815 -|One line\rback to start|0815 -|two\nline|0815 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb deleted file mode 100644 index 11b913f254..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb +++ /dev/null @@ -1,3 +0,0 @@ -1|Nummer 4|4444444 -3|Nummer 3|3333333 -5|same name|12345 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb deleted file mode 100644 index 90f2337bbd..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb +++ /dev/null @@ -1,4 +0,0 @@ -2|Nummer 3|3333333 -4|Nummer 4|4444444 -5|same name|23456 - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc deleted file mode 100644 index 59617d864f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc +++ /dev/null @@ -1,40 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: testcb.cc -// * -// * Purpose: Test cell broadcast SMS -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 3.8.2001 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -int main(int argc, char *argv[]) -{ - try - { - CBMessageRef cbm = new CBMessage("001000320111C3343D0F82C51A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D100"); - - cout << cbm->toString(); - - cbm = new CBMessage("001000320111C4EAB3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D100"); - - cout << cbm->toString(); - } - catch (GsmException &ge) - { - cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; - } -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc deleted file mode 100644 index d3fac84f5c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc +++ /dev/null @@ -1,178 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: testgsmlib.cc -// * -// * Purpose: Test general gsm functions (without SMS/phonebook) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 17.5.1999 -// ************************************************************************* -#ifdef HAVE_CONFIG_H -#include -#endif -#ifdef WIN32 -#include -#else -#include -#endif -#include -#include - -using namespace std; -using namespace gsmlib; - -// some time-consuming tests can be switched off by commenting out the -// following macros -#define TEST_OPERATOR_INFO - -void printForwardReason(string s, ForwardInfo &info) -{ - cout << " " << s << ": " - << (info._active ? "active " : "inactive ") - << "number: " << info._number - << " subaddr: " << info._subAddr - << " time: " << info._time << endl; -} - -int main(int argc, char *argv[]) -{ - try - { - cout << (string)"Opening device " + argv[1] << endl; -#ifdef WIN32 - Ref port = new Win32SerialPort((string)argv[1], 38400); -#else - Ref port = new UnixSerialPort((string)argv[1], B38400); -#endif - - cout << "Creating MeTa object" << endl; - MeTa m(port); - - cout << "Getting ME info" << endl; - MEInfo mei = m.getMEInfo(); - - cout << " Manufacturer: " << mei._manufacturer << endl - << " Model: " << mei._model << endl - << " Revision: " << mei._revision << endl - << " Serial Number: " << mei._serialNumber << endl << endl; - -#ifdef TEST_OPERATOR_INFO - try - { - cout << "Getting operator info" << endl; - vector opis = m.getAvailableOPInfo(); - for (vector::iterator i = opis.begin(); i != opis.end(); ++i) - { - cout << " Status: "; - switch (i->_status) - { - case 0: cout << "unknown"; break; - case 1: cout << "current"; break; - case 2: cout << "available"; break; - case 3: cout << "forbidden"; break; - } - cout << endl - << " Long name: '" << i->_longName << "' " - << " Short name: '" << i->_shortName << "' " - << " Numeric name: " << i->_numericName << endl; - } - } - catch (GsmException &ge) - { - if (ge.getErrorCode() == 0) - cout << "phone failure ignored" << endl; - else - throw; - } - cout << endl; -#endif // TEST_OPERATOR_INFO - - cout << "Current operator info" << endl; - OPInfo opi = m.getCurrentOPInfo(); - cout << " Long name: '" << opi._longName << "' " - << " Short name: '" << opi._shortName << "' " - << " Numeric name: " << opi._numericName << endl - << " Mode: "; - switch (opi._mode) - { - case 0: cout << "automatic"; break; - case 1: cout << "manual"; break; - case 2: cout << "deregister"; break; - case 4: cout << "manual/automatic"; break; - } - cout << endl; - - cout << "Facility lock capabilities" << endl << " "; - vector fclc = m.getFacilityLockCapabilities(); - for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) - cout << *i << " "; - cout << endl << endl; - - cout << "Facility lock states" << endl; - for (vector::iterator k = fclc.begin(); k != fclc.end(); ++k) - if (*k != "AB" && *k != "AG" && *k != "AC") - { - cout << " " << *k; - if (m.getFacilityLockStatus(*k, VoiceFacility)) - cout << " Voice"; - if (m.getFacilityLockStatus(*k, DataFacility)) - cout << " Data"; - if (m.getFacilityLockStatus(*k, FaxFacility)) - cout << " Fax"; - } - cout << endl; - - cout << "Facilities with password" << endl; - vector pwi = m.getPasswords(); - for (vector::iterator j = pwi.begin(); j != pwi.end(); ++j) - cout << " " << j->_facility << " len " << j->_maxPasswdLen << endl; - cout << endl; - - cout << "Network caller line identification identification: " - << (m.getNetworkCLIP() ? "on" : "off") << endl << endl; - - cout << "Call forwarding information" << endl; - for (int r = 0; r < 4; ++r) - { - switch (r) - { - case 0: cout << "UnconditionalReason" << endl; break; - case 1: cout << "MobileBusyReason" << endl; break; - case 2: cout << "NoReplyReason" << endl; break; - case 3: cout << "NotReachableReason" << endl; break; - } - ForwardInfo voice, fax, data; - m.getCallForwardInfo((ForwardReason)r, voice, fax, data); - printForwardReason("Voice", voice); - printForwardReason("Data", data); - printForwardReason("Fax", fax); - } - cout << endl; - - cout << "Battery charge status" << endl; - int bcs = m.getBatteryChargeStatus(); - switch (bcs) - { - case 0: cout << "ME is powered by the battery" << endl; break; - case 1: cout << "ME has a battery connected, but is not powered by it" - << endl; break; - case 2: cout << "ME does not have a battery connected" << endl; break; - case 3: cout << "Recognized power fault, calls inhibited" << endl; break; - } - cout << endl; - - cout << "Battery charge: " << m.getBatteryCharge() << endl << endl; - - cout << "Signal strength: " << m.getSignalStrength() << endl << endl; - - cout << "Bit error rate: " << m.getBitErrorRate() << endl << endl; - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt deleted file mode 100644 index a5b16e7fb3..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt +++ /dev/null @@ -1,22 +0,0 @@ -Test 1 -(),("ME","SM","Which of the three items does not belong here?") - -Test 2 -(1-5),425,"+abcd"efgh" - -Test 3 -(1,2,3,4,5,7,11,12,25),425,Thisisatest."+a"ef"andsoforth - -Test 4 -(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125),(20),16 - -Test 5 -SM,7 - -Test 6 -(2,"S TELIA MOBITEL","S TELIA",24001) - -Error 1: expected ')' (at position 4 of string '(4-5') - -Error 3: expected end of line (at position 5 of string '"bla"bla"') - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc deleted file mode 100644 index 99b178d197..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc +++ /dev/null @@ -1,200 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: testparser.cc -// * -// * Purpose: Test AT result code parser -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 17.5.1999 -// ************************************************************************* - -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -void printIntList(vector &vb) -{ - cout << "("; - int j = 0; - bool first = true; - for (vector::iterator i = vb.begin(); - i != vb.end(); ++i) - { - if (*i) - { - if (! first) cout << ","; - cout << j; - first = false; - } - ++j; - } - cout << ")"; -} - -void printIntRange(IntRange ir) -{ - cout << "(" << ir._low << "-" << ir._high << ")"; -} - -void printStringList(vector vs) -{ - bool first = true; - cout << "("; - for (vector::iterator i = vs.begin(); - i != vs.end(); ++i) - { - if (! first) cout << ","; - cout << "\"" << *i << "\""; - first = false; - } - cout << ")"; -} - -int main(int argc, char *argv[]) -{ - try - { - { - cout << "Test 1" << endl; - Parser p((string)",(\"ME\", \"SM\"," + - "\"Which of the three items does not belong here?\")"); - - vector vs1 = p.parseStringList(true); - p.parseComma(); - vector vs2 = p.parseStringList(); - bool comma = p.parseComma(true); - - printStringList(vs1); - cout << ","; - printStringList(vs2); - if (comma) cout << ","; - cout << endl << endl; - } - { - cout << "Test 2" << endl; - Parser p("(1-5),425,\"+abcd\"efgh\""); - - IntRange ir = p.parseRange(); - p.parseComma(); - int i = p.parseInt(); - p.parseComma(); - string s = p.parseString(false, true); - - printIntRange(ir); - cout << "," << i << ",\"" << s << "\"" << endl << endl; - } - { - cout << "Test 3" << endl; - Parser p("(7,1-5,12-11,25),425,This is a test.\"+a\"ef\" and so forth"); - - vector vb = p.parseIntList(); - p.parseComma(); - int i = p.parseInt(); - p.parseComma(); - string s = p.parseEol(); - - printIntList(vb); - cout << "," << i << "," << s << endl << endl; - } - { - cout << "Test 4" << endl; - Parser p("(1-125),20,16"); - - vector vb = p.parseIntList(); - p.parseComma(); - vector vb2 = p.parseIntList(); - p.parseComma(); - int j = p.parseInt(); - - printIntList(vb); - cout << ","; - printIntList(vb2); - cout << "," << j << endl << endl; - } - { - cout << "Test 5" << endl; - Parser p("SM,7"); - - string s = p.parseString(); - p.parseComma(); - int i = p.parseInt(); - - cout << s << "," << i << endl << endl; - } - { - cout << "Test 6" << endl; - Parser p("(2,\"S TELIA MOBITEL\",\"S TELIA\",\"24001\")"); - - p.parseChar('('); - int status = p.parseInt(); - p.parseComma(); - string longName = p.parseString(true); - p.parseComma(); - string shortName = p.parseString(true); - p.parseComma(); - int numericName; - try - { - numericName = p.parseInt(true); - } - catch (GsmException &e) - { - if (e.getErrorClass() == ParserError) - { - // the Ericsson GM12 GSM modem returns the numeric ID as string - string s = p.parseString(); - numericName = checkNumber(s); - } - else - throw e; - } - p.parseChar(')'); - - cout << "(" << status << ",\"" << longName << "\",\"" - << shortName << "\"," - << numericName << ")" << endl << endl; - } - } - catch (GsmException &p) - { - // these tests shouldn't throw exceptions - assert(0); - } - - // Now some tests that should provoke an error - try - { - Parser p("(4-5"); - p.parseRange(); - } - catch (GsmException &p) - { - cout << "Error 1: " << p.what() << endl << endl; - } - try - { - Parser p("(4-5,3-4-5)"); - p.parseIntList(); - } - catch (GsmException &p) - { - cout << "Error 2: " << p.what() << endl << endl; - } - try - { - Parser p("\"bla\"bla\""); - p.parseString(); - p.checkEol(); - } - catch (GsmException &p) - { - cout << "Error 3: " << p.what() << endl << endl; - } - -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc deleted file mode 100644 index 6f161349ef..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -void printPb(PhonebookEntry &e) -{ - cout << "number: " << e.telephone() - << " text: " << e.text() << endl; -} - -int main(int argc, char *argv[]) -{ - try - { - cout << (string)"Opening device " + argv[1] << endl; - Ref port = new UnixSerialPort((string)argv[1], B38400); - - cout << "Creating MeTa object" << endl; - MeTa m(port); - - cout << "Getting phonebook entries" << endl; - vector pbs = m.getPhoneBookStrings(); - for (vector::iterator i = pbs.begin(); i != pbs.end(); ++i) - { - PhonebookRef pb = m.getPhonebook(*i); - - cout << "Phonebook \"" << *i << "\" " << endl - << " Max number length: " << pb->getMaxTelephoneLen() << endl - << " Max text length: " << pb->getMaxTextLen() << endl - << " Capacity: " << pb->capacity() << endl - << " Size: " << pb->size() << endl; - - for (Phonebook::iterator j = pb->begin(); j != pb->end(); ++j) - if (! j->empty()) - cout << " Entry #" << j - pb->begin() - << "Number: \"" << j->telephone() << "\"" - << "Text: \"" << j->text() << "\"" << endl; - } - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc deleted file mode 100644 index f9769f9bfc..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc +++ /dev/null @@ -1,75 +0,0 @@ -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -bool isbla(PhonebookEntry &e) -{ - // cerr << "****'" << e.text() << "'" << endl; - return e.text() == "blabla"; -} - -int main(int argc, char *argv[]) -{ - try - { - cout << (string)"Opening device " + argv[1] << endl; - Ref port = new UnixSerialPort((string)argv[1], B38400); - - cout << "Creating MeTa object" << endl; - MeTa m(port); - - cout << "Getting phonebook entries" << endl; - vector pbs = m.getPhoneBookStrings(); - if (pbs.begin() == pbs.end()) - { - cerr << "no phonebooks available" << endl; - exit(1); - } - - PhonebookRef pb = m.getPhonebook(*pbs.begin()); - - cout << "Phonebook \"" << pb->name() << "\" " << endl - << " Max number length: " << pb->getMaxTelephoneLen() << endl - << " Max text length: " << pb->getMaxTextLen() << endl - << " Capacity: " << pb->capacity() << endl; - - cout << "Inserting entry 'blabla'" << endl; - PhonebookEntry e("123456", "blabla"); - pb->insert(pb->end(), e); - - int j = -1; - for (int i = 50; i < 60; ++i) - if (pb()[i].empty()) - { - pb()[i].set("23456", "blabla"); - j = i; - break; - } - - pb->erase(pb->begin() + j); - - Phonebook::iterator k; - do - { - k = find_if(pb->begin(), pb->end(), isbla); - if (k != pb->end()) - { - cerr << "Erasing #" << k - pb->begin() << endl; - pb->erase(k, k + 1); - } - } - while (k != pb->end()); - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt deleted file mode 100644 index bee3c53bac..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt +++ /dev/null @@ -1,167 +0,0 @@ ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '171' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 04/16/1999 08:09:44 AM (+0200) -User data length: 160 -User data header: 0x -User data: 'T-D1 News bis 31.05.99 kostenlos testen! Über 90 Programme aus Politik, Wirtschaft, Börse, Sport direkt per SMS aufs Handy. Mehr darüber unter der Kurzwahl 2323' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '01805000102' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 12/17/1998 02:10:55 PM (+0100) -User data length: 159 -User data header: 0x -User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung läuft noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen Sie Ihren Teiln.-Gutschein an 0180/5000 056' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '41794991200' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: 'dialing.de ' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 04/21/2001 12:15:28 PM (+0000) -User data length: 0 -User data header: 0x -User data: '' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '41794991200' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: 'dialing.de ' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 04/21/2001 12:15:28 PM (+0000) -User data length: 0 -User data header: 0x -User data: '' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '' -More messages to send: 0 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -SC timestamp: 00/00/2000 12:00:00 AM (+0000) -User data length: 0 -User data header: 0x -User data: '' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '' -More messages to send: 0 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -SC timestamp: 00/00/2000 12:00:00 AM (+0000) -User data length: 0 -User data header: 0x -User data: '' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-DELIVER-REPORT -SC address: '' -Protocol identifier present: 0 -Data coding scheme present: 0 -User data length present: 0 ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-STATUS-REPORT -SC address: '' -More messages to send: 0 -Status report qualifier: 0 -Message reference: 0 -Recipient address: '' -SC timestamp: 00/00/2000 12:00:00 AM (+0000) -Discharge time: 00/00/2000 12:00:00 AM (+0000) -Status: 0x0 'Short message received by the SME' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-COMMAND -SC address: '' -Message reference: 0 -Status report request: 1 -Protocol identifier: 0x0 -Command type: 0x0 -Message number: 0 -Destination address: '' -Command data length: 0 -Command data: '' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-SUBMIT -SC address: '' -Reject duplicates: 1 -Validity period format: relative -Reply path: 0 -User data header indicator: 0 -Status report request: 0 -Message reference: 0 -Destination address: '' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -Validity period: 2 days -User data length: 35 -User data header: 0x -User data: 'This is a submit message, isn't it?' ---------------------------------------------------------------------------- - - ---------------------------------------------------------------------------- -Message type: SMS-SUBMIT-REPORT -SC address: '' -SC timestamp: 00/00/2000 12:00:00 AM (+0000) -Protocol identifier present: 0 -Data coding scheme present: 0 -User data length present: 0 ---------------------------------------------------------------------------- - - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc deleted file mode 100644 index bf5423b057..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc +++ /dev/null @@ -1,80 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: testsms.cc -// * -// * Purpose: Test coder and encoder for SMS TPDUs -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 17.5.1999 -// ************************************************************************* - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include - -using namespace std; -using namespace gsmlib; - -int main(int argc, char *argv[]) -{ - string pdu; - SMSMessageRef sms; - // test two SMS message I have received - sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); - cout << sms->toString() << endl; - - sms = SMSMessage::decode("0791947101671200040B851008050001F23900892171410155409FCEF4184D07D9CBF273793E2FBB432062BA0CC2D2E5E16B398D7687C768FADC5E96B3DFF3BAFB0C62EFEB663AC8FD1EA341E2F41CA4AFB741329A2B2673819C75BABEEC064DD36590BA4CD7D34149B4BC0C3A96EF69B77B8C0EBBC76550DD4D0699C3F8B21B344D974149B4BCEC0651CB69B6DBD53AD6E9F331BA9C7683C26E102C8683BD6A30180C04ABD900"); - cout << sms->toString() << endl; - - // test SMS decoding and encoding for messages with alphanumeric - // destination address - sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); - cout << sms->toString() << endl; - pdu = sms->encode(); - sms = SMSMessage::decode(pdu); - cout << sms->toString() << endl; - - // test all message types - sms = new SMSDeliverMessage(); - cout << sms->toString() << endl; - pdu = sms->encode(); - sms = SMSMessage::decode(pdu); - cout << sms->toString() << endl; - - // test all message types - sms = new SMSDeliverReportMessage(); - pdu = sms->encode(); - sms = SMSMessage::decode(pdu, false); - cout << sms->toString() << endl; - - // test all message types - sms = new SMSStatusReportMessage(); - pdu = sms->encode(); - sms = SMSMessage::decode(pdu); - cout << sms->toString() << endl; - - // test all message types - sms = new SMSCommandMessage(); - pdu = sms->encode(); - sms = SMSMessage::decode(pdu, false); - cout << sms->toString() << endl; - - // test all message types - SMSSubmitMessage *subsms = new SMSSubmitMessage(); - subsms->setUserData("This is a submit message, isn't it?"); - sms = subsms; - pdu = sms->encode(); - sms = SMSMessage::decode(pdu, false); - cout << sms->toString() << endl; - - // test all message types - sms = new SMSSubmitReportMessage(); - pdu = sms->encode(); - sms = SMSMessage::decode(pdu); - cout << sms->toString() << endl; - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc deleted file mode 100644 index cb9b395a86..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc +++ /dev/null @@ -1,89 +0,0 @@ -#ifdef HAVE_CONFIG_H -#include -#endif -#ifdef WIN32 -#include -#else -#include -#endif -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -int main(int argc, char *argv[]) -{ - try - { - cout << (string)"Opening device " + argv[1] << endl; -#ifdef WIN32 - Ref port = new Win32SerialPort((string)argv[1], 38400); -#else - Ref port = new UnixSerialPort((string)argv[1], B38400); -#endif - - cout << "Creating MeTa object" << endl; - MeTa m(port); - - cout << "Setting message service level to 1" << endl; - m.setMessageService(1); - - vector storeList = m.getSMSStoreNames(); - - for (vector::iterator stn = storeList.begin(); - stn != storeList.end(); ++stn) - { - cout << "Getting store \"" << *stn << "\"" << endl; - SMSStoreRef st = m.getSMSStore(*stn); - - SMSMessageRef sms; - cout << "Creating SMS Submit Message and putting it into store" << endl; - SMSSubmitMessage *subsms = new SMSSubmitMessage(); -// Address scAddr("+491710760000"); -// subsms->setServiceCentreAddress(scAddr); - Address destAddr("0177123456"); - subsms->setDestinationAddress(destAddr); - subsms->setUserData("This message was sent from the store."); - TimePeriod tp; - tp._format = TimePeriod::Relative; - tp._relativeTime = 100; - /*subsms->setValidityPeriod(tp); - subsms->setValidityPeriodFormat(tp._format); - subsms->setStatusReportRequest(true);*/ - sms = subsms; - SMSStore::iterator smsIter = st->insert(st->end(), SMSStoreEntry(sms)); - cout << "Message entered at index #" - << smsIter - st->begin() << endl; - - //m.sendSMS(sms); - SMSMessageRef ackPdu; - int messageRef = smsIter->send(ackPdu); - cout << "Message reference: " << messageRef << endl - << "ACK PDU:" << endl - << (ackPdu.isnull() ? "no ack pdu" : ackPdu->toString()) - << endl; - - /* cout << "Erasing all unsent messages" << endl; - for (SMSStore::iterator s = st->begin(); s != st->end(); ++s) - if (! s->empty() && s->status() == SMSStoreEntry::StoredUnsent) - st->erase(s);*/ - - cout << "Printing store \"" << *stn << "\"" << endl; - for (SMSStore::iterator s = st->begin(); s != st->end(); ++s) - if (! s->empty()) - cout << s->message()->toString(); - - break; // only do one store - } - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt deleted file mode 100644 index 83a56fa9f9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt +++ /dev/null @@ -1,47 +0,0 @@ -Entries in pbs-copy.pb: - Text: Dieter Meier Telephone: 793045 - Text: Edgar Hofmann Telephone: 42345 - Text: Goethe Telephone: 847159 - Text: Hans Hofmann Telephone: 12345 - Text: Hans-Dieter Schmidt Telephone: 82345 - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Heiner Müller Telephone: 7890 - Text: line with | Telephone: 0815 - Text: line with\ Telephone: 0815 - Text: One line back to start Telephone: 0815 - Text: two -line Telephone: 0815 -Removing entries with telephone == 0815 -Entries in pbs-copy.pb<2>: - Text: Hans Hofmann Telephone: 12345 - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Edgar Hofmann Telephone: 42345 - Text: Heiner Müller Telephone: 7890 - Text: Dieter Meier Telephone: 793045 - Text: Hans-Dieter Schmidt Telephone: 82345 - Text: Goethe Telephone: 847159 -Inserting some entries -Entries in pbs-copy.pb<3>: - Text: Dieter Meier Telephone: 793045 - Text: Edgar Hofmann Telephone: 42345 - Text: Goethe Telephone: 847159 - Text: Hans Hofmann Telephone: 12345 - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Hans-Dieter Schmidt Telephone: 41598254 - Text: Hans-Dieter Schmidt Telephone: 82345 - Text: Hans-Dieter|Hofmann Telephone: 34058 - Text: Heiner Müller Telephone: 7890 - Text: new line with continued Telephone: 08152 -Erasing all Hans-Dieter Schmidt entries -About to erase: - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Hans-Dieter Schmidt Telephone: 41598254 - Text: Hans-Dieter Schmidt Telephone: 82345 -Writing back to file -|Dieter Meier|793045 -|Edgar Hofmann|42345 -|Goethe|847159 -|Hans Hofmann|12345 -|Hans-Dieter\|Hofmann|34058 -|Heiner Müller|7890 -|new line with \r continued|08152 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc deleted file mode 100644 index 43b9f512db..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc +++ /dev/null @@ -1,81 +0,0 @@ -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -void printPb(PhonebookEntry &e) -{ - cout << "number: " << e.telephone() - << " text: " << e.text() << endl; -} - -int main(int argc, char *argv[]) -{ - try - { - // open phonebook file - SortedPhonebook pb((string)"spb-copy.pb", false); - - // print all entries - cout << "Entries in pbs-copy.pb:" << endl; - for (SortedPhonebook::iterator i = pb.begin(); i != pb.end(); ++i) - cout << " Text: " << i->text() - << " Telephone: " << i->telephone() << endl; - - // remove all entries with telephone == "0815" - cout << "Removing entries with telephone == 0815" << endl; - pb.setSortOrder(ByTelephone); - - string s = "0815"; - pb.erase(s); - - cout << "Entries in pbs-copy.pb<2>:" << endl; - for (SortedPhonebook::iterator i = pb.begin(); i != pb.end(); ++i) - cout << " Text: " << i->text() - << " Telephone: " << i->telephone() << endl; - - // insert some entries - cout << "Inserting some entries" << endl; - pb.insert(PhonebookEntryBase("08152", "new line with \r continued")); - pb.insert(PhonebookEntryBase("41598254", "Hans-Dieter Schmidt")); - pb.insert(PhonebookEntryBase("34058", "Hans-Dieter|Hofmann")); - - pb.setSortOrder(ByText); - cout << "Entries in pbs-copy.pb<3>:" << endl; - for (SortedPhonebook::iterator i = pb.begin(); i != pb.end(); ++i) - cout << " Text: " << i->text() - << " Telephone: " << i->telephone() << endl; - - // test erasing all "Hans-Dieter Schmidt" entries - cout << "Erasing all Hans-Dieter Schmidt entries" << endl; - s = "Hans-Dieter Schmidt"; - pair range = - pb.equal_range(s); - cout << "About to erase:" << endl; - for (SortedPhonebook::iterator i = range.first; i != range.second; ++i) - cout << " Text: " << i->text() - << " Telephone: " << i->telephone() << endl; - - pb.erase(range.first, range.second); - - // write back to file - cout << "Writing back to file" << endl; - pb.sync(); - - // tests the NoCopy class - //SortedPhonebook pb2("spb.pb"); - //pb2 = pb; - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt deleted file mode 100644 index 60e54ba669..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt +++ /dev/null @@ -1,47 +0,0 @@ -Entries in pbs-copy.pb: - Text: Dieter Meier Telephone: 017793045 - Text: Edgar Hofmann Telephone: +4942345 - Text: Goethe Telephone: 847159 - Text: Hans Hofmann Telephone: 0171 - Text: Hans-Dieter Schmidt Telephone: 82345 - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Heiner Müller Telephone: 7890 - Text: line with | Telephone: 0815 - Text: line with\ Telephone: 0815 - Text: One line back to start Telephone: 0815 - Text: two -line Telephone: 0815 -Removing entries with telephone == 0815 -Entries in pbs-copy.pb<2>: - Text: Edgar Hofmann Telephone: +4942345 - Text: Hans Hofmann Telephone: 0171 - Text: Dieter Meier Telephone: 017793045 - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Heiner Müller Telephone: 7890 - Text: Hans-Dieter Schmidt Telephone: 82345 - Text: Goethe Telephone: 847159 -Inserting some entries -Entries in pbs-copy.pb<3>: - Text: Dieter Meier Telephone: 017793045 - Text: Edgar Hofmann Telephone: +4942345 - Text: Goethe Telephone: 847159 - Text: Hans Hofmann Telephone: 0171 - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Hans-Dieter Schmidt Telephone: 41598254 - Text: Hans-Dieter Schmidt Telephone: 82345 - Text: Hans-Dieter|Hofmann Telephone: 34058 - Text: Heiner Müller Telephone: 7890 - Text: new line with continued Telephone: 08152 -Erasing all Hans-Dieter Schmidt entries -About to erase: - Text: Hans-Dieter Schmidt Telephone: 13333345 - Text: Hans-Dieter Schmidt Telephone: 41598254 - Text: Hans-Dieter Schmidt Telephone: 82345 -Writing back to file -|Dieter Meier|017793045 -|Edgar Hofmann|+4942345 -|Goethe|847159 -|Hans Hofmann|0171 -|Hans-Dieter\|Hofmann|34058 -|Heiner Müller|7890 -|new line with \r continued|08152 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt deleted file mode 100644 index e4a33e2fa6..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt +++ /dev/null @@ -1,8 +0,0 @@ -updating 'same name' tel# 23456 to new tel# 12345(index 5) -deleting 'Nummer 3' tel# 3333333 (index #2) -deleting 'Nummer 4' tel# 4444444 (index #4) -inserting 'Nummer 4' tel# 4444444 (index #1) -inserting 'Nummer 3' tel# 3333333 (index #3) -1|Nummer 4|4444444 -3|Nummer 3|3333333 -5|same name|12345 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt deleted file mode 100644 index a0e7905939..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt +++ /dev/null @@ -1,157 +0,0 @@ -Entries in sms.sms<0>: -Inserting some entries -Entries in sms.sms<1>: -Entry#2: ---------------------------------------------------------------------------- -Message type: SMS-SUBMIT -SC address: '' -Reject duplicates: 1 -Validity period format: relative -Reply path: 0 -User data header indicator: 0 -Status report request: 0 -Message reference: 0 -Destination address: '0177123456' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -Validity period: 2 days -User data length: 9 -User data header: 0x -User data: 'submit me' ---------------------------------------------------------------------------- - - -Entry#3: ---------------------------------------------------------------------------- -Message type: SMS-SUBMIT -SC address: '' -Reject duplicates: 1 -Validity period format: relative -Reply path: 0 -User data header indicator: 0 -Status report request: 0 -Message reference: 0 -Destination address: '' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -Validity period: 2 days -User data length: 35 -User data header: 0x -User data: 'This is a submit message, isn't it?' ---------------------------------------------------------------------------- - - -Entry#1: ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '01805000102' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 12/17/1998 02:10:55 PM (+0100) -User data length: 159 -User data header: 0x -User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung läuft noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen Sie Ihren Teiln.-Gutschein an 0180/5000 056' ---------------------------------------------------------------------------- - - -Entry#0: ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '171' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 04/16/1999 08:09:44 AM (+0200) -User data length: 160 -User data header: 0x -User data: 'T-D1 News bis 31.05.99 kostenlos testen! Über 90 Programme aus Politik, Wirtschaft, Börse, Sport direkt per SMS aufs Handy. Mehr darüber unter der Kurzwahl 2323' ---------------------------------------------------------------------------- - - -Entries in sms.sms<2>: -Entry#3: ---------------------------------------------------------------------------- -Message type: SMS-SUBMIT -SC address: '' -Reject duplicates: 1 -Validity period format: relative -Reply path: 0 -User data header indicator: 0 -Status report request: 0 -Message reference: 0 -Destination address: '' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -Validity period: 2 days -User data length: 35 -User data header: 0x -User data: 'This is a submit message, isn't it?' ---------------------------------------------------------------------------- - - -Entry#2: ---------------------------------------------------------------------------- -Message type: SMS-SUBMIT -SC address: '' -Reject duplicates: 1 -Validity period format: relative -Reply path: 0 -User data header indicator: 0 -Status report request: 0 -Message reference: 0 -Destination address: '0177123456' -Protocol identifier: 0x0 -Data coding scheme: default alphabet -Validity period: 2 days -User data length: 9 -User data header: 0x -User data: 'submit me' ---------------------------------------------------------------------------- - - -Entry#1: ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '01805000102' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 12/17/1998 02:10:55 PM (+0100) -User data length: 159 -User data header: 0x -User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung läuft noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen Sie Ihren Teiln.-Gutschein an 0180/5000 056' ---------------------------------------------------------------------------- - - -Entry#0: ---------------------------------------------------------------------------- -Message type: SMS-DELIVER -SC address: '491710762100' -More messages to send: 1 -Reply path: 0 -User data header indicator: 0 -Status report indication: 0 -Originating address: '171' -Protocol identifier: 0x39 -Data coding scheme: default alphabet -SC timestamp: 04/16/1999 08:09:44 AM (+0200) -User data length: 160 -User data header: 0x -User data: 'T-D1 News bis 31.05.99 kostenlos testen! Über 90 Programme aus Politik, Wirtschaft, Börse, Sport direkt per SMS aufs Handy. Mehr darüber unter der Kurzwahl 2323' ---------------------------------------------------------------------------- - - -Writing back to file diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc deleted file mode 100644 index 4c30bd544f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc +++ /dev/null @@ -1,68 +0,0 @@ -#include -#include -#include -#include -#include -#include - -using namespace std; -using namespace gsmlib; - -int main(int argc, char *argv[]) -{ - try - { - // open SMS store file - SortedSMSStore sms((string)"sms.sms"); - - // print all entries - cout << "Entries in sms.sms<0>:" << endl; - for (SortedSMSStore::iterator i = sms.begin(); i != sms.end(); ++i) - cout << "Entry#" << i->index() << ":" << endl - << i->message()->toString() << endl; - - // insert some entries - cout << "Inserting some entries" << endl; - SMSMessageRef smsMessage; - // test two SMS message I have received - smsMessage = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); - sms.insert(SMSStoreEntry(smsMessage)); - - smsMessage = SMSMessage::decode("0791947101671200040B851008050001F23900892171410155409FCEF4184D07D9CBF273793E2FBB432062BA0CC2D2E5E16B398D7687C768FADC5E96B3DFF3BAFB0C62EFEB663AC8FD1EA341E2F41CA4AFB741329A2B2673819C75BABEEC064DD36590BA4CD7D34149B4BC0C3A96EF69B77B8C0EBBC76550DD4D0699C3F8B21B344D974149B4BCEC0651CB69B6DBD53AD6E9F331BA9C7683C26E102C8683BD6A30180C04ABD900"); - sms.insert(SMSStoreEntry(smsMessage)); - - smsMessage = new SMSSubmitMessage("submit me", "0177123456"); - sms.insert(SMSStoreEntry(smsMessage)); - - SMSSubmitMessage *subsms = new SMSSubmitMessage(); - subsms->setUserData("This is a submit message, isn't it?"); - smsMessage = subsms; - sms.insert(SMSStoreEntry(smsMessage)); - - // print all entries - cout << "Entries in sms.sms<1>:" << endl; - for (SortedSMSStore::iterator i = sms.begin(); i != sms.end(); ++i) - cout << "Entry#" << i->index() << ":" << endl - << i->message()->toString() << endl; - - // sort by telephone number - sms.setSortOrder(ByAddress); - - // print all entries - cout << "Entries in sms.sms<2>:" << endl; - for (SortedSMSStore::iterator i = sms.begin(); i != sms.end(); ++i) - cout << "Entry#" << i->index() << ":" << endl - << i->message()->toString() << endl; - - // write back to file - cout << "Writing back to file" << endl; - sms.sync(); - - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - return 0; -} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING deleted file mode 100644 index 78e994dd75..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING +++ /dev/null @@ -1,5 +0,0 @@ -WARNING - - The files getopt.c and getopt.h in this subdirectory (win32) are - not covered by the GNU LIBRARY GENERAL PUBLIC LICENSE as - reproduced in ../COPYING. They carry their own license instead. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am deleted file mode 100644 index a666fabf31..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -## Process this file with automake to produce Makefile.in -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: win32 Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 19.1.2001 -# ************************************************************************* - -EXTRA_DIST = getopt.c gsmctl.dsp gsmpb.dsp testgsmlib.dsp \ - getopt.h gsmlib.dsp gsmsendsms.dsp testsms.dsp \ - README.win gsm_config.h gsmlib.dsw gsmsmsstore.dsp \ - gsmsmsd.dsp testsms2.dsp diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in deleted file mode 100644 index 4117eea211..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in +++ /dev/null @@ -1,259 +0,0 @@ -# Makefile.in generated by automake 1.6.3 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# 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@ - -# ************************************************************************* -# * GSM TA/ME library -# * -# * File: Makefile.am -# * -# * Purpose: win32 Makefile -# * -# * Author: Peter Hofmann (software@pxh.de) -# * -# * Created: 19.1.2001 -# ************************************************************************* -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_HEADER = $(INSTALL_DATA) -transform = @program_transform_name@ -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -EXEEXT = @EXEEXT@ -OBJEXT = @OBJEXT@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -AMTAR = @AMTAR@ -AS = @AS@ -AWK = @AWK@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CPP = @CPP@ -CXX = @CXX@ -DATADIRNAME = @DATADIRNAME@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GSM_VERSION = @GSM_VERSION@ -HAVE_LIB = @HAVE_LIB@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIB = @LIB@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIB = @LTLIB@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -am__include = @am__include@ -am__quote = @am__quote@ -install_sh = @install_sh@ - -EXTRA_DIST = getopt.c gsmctl.dsp gsmpb.dsp testgsmlib.dsp \ - getopt.h gsmlib.dsp gsmsendsms.dsp testsms.dsp \ - README.win gsm_config.h gsmlib.dsw gsmsmsstore.dsp \ - gsmsmsd.dsp testsms2.dsp - -subdir = win32 -mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/gsm_config.h -CONFIG_CLEAN_FILES = -DIST_SOURCES = -DIST_COMMON = COPYING Makefile.am Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu win32/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: -tags: TAGS -TAGS: - -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = .. -distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) - -distdir: $(DISTFILES) - @list='$(DISTFILES)'; for file in $$list; do \ - 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"; \ - $(mkinstalldirs) "$(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 - -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_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(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 mostlyclean-am - -distclean: distclean-am - -distclean-am: clean-am distclean-generic distclean-libtool - -dvi: dvi-am - -dvi-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 - -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-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-generic \ - mostlyclean-libtool 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win deleted file mode 100644 index 17aa648dd1..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win +++ /dev/null @@ -1,41 +0,0 @@ -INTRODUCTION - - This is a Win32 port of gsmlib contributed by Frediano Ziglio - (Frediano.Ziglio@omnitel.it) and adapted by me. You can use the - library for inclusion in your own programs or the command line tools - which have been ported (with the exception of gsmsmsd). - -COMPILATION - - You need Microsoft VC++ 6.0 to compile the library and command - line tools. Because I prefer to use the ending .cc for C++ files you - need to make some changes to your development environment. These are - documented by Microsoft under this URL (one line): - - http://support.microsoft.com/support/kb/articles/Q181/5/ - 06.ASP?LN=EN-US&SD=gn&FR=0&qry=.cc&rnk=1&src=DHCS_MSPSS_gn_SRCH&SPR=VCC - - The title of the document is "HOWTO: Make VC++ Recognize File - Extensions as C/C++ Files". - - Then open the workspace gsmlib.dsw with Developer - Studio. Compilation should be straightforward after that, just make a - batch build of everything. - - If you encounter problems you can use the debug versions and set - the environment variable GSMLIB_DEBUG to 1 or 2 to get debugging - output. - -HINTS - - Use COMx: (x is the number of the COM device) instead of the UNIX - device name. If this doesn't work use "\\.\COMx:". - - - The files under Release are without debugging code. If you see - errors please use the Debug versions and execute - - set GSMLIB_DEBUG=2 - - for executing the programs. Please send me the debugging - output: - - gsmsmsstore ..... 2> \temp\debug.log diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c deleted file mode 100644 index 45fcedc063..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c +++ /dev/null @@ -1,185 +0,0 @@ -/***************************************************************************** - * - * MODULE NAME : GETOPT.C - * - * COPYRIGHTS: - * This module contains code made available by IBM - * Corporation on an AS IS basis. Any one receiving the - * module is considered to be licensed under IBM copyrights - * to use the IBM-provided source code in any way he or she - * deems fit, including copying it, compiling it, modifying - * it, and redistributing it, with or without - * modifications. No license under any IBM patents or - * patent applications is to be implied from this copyright - * license. - * - * A user of the module should understand that IBM cannot - * provide technical support for the module and will not be - * responsible for any consequences of use of the program. - * - * Any notices, including this one, are not to be removed - * from the module without the prior written consent of - * IBM. - * - * AUTHOR: Original author: - * G. R. Blair (BOBBLAIR at AUSVM1) - * Internet: bobblair@bobblair.austin.ibm.com - * - * Extensively revised by: - * John Q. Walker II, Ph.D. (JOHHQ at RALVM6) - * Internet: johnq@ralvm6.vnet.ibm.com - * - *****************************************************************************/ - -/****************************************************************************** - * getopt() - * - * The getopt() function is a command line parser. It returns the next - * option character in argv that matches an option character in opstring. - * - * The argv argument points to an array of argc+1 elements containing argc - * pointers to character strings followed by a null pointer. - * - * The opstring argument points to a string of option characters; if an - * option character is followed by a colon, the option is expected to have - * an argument that may or may not be separated from it by white space. - * The external variable optarg is set to point to the start of the option - * argument on return from getopt(). - * - * The getopt() function places in optind the argv index of the next argument - * to be processed. The system initializes the external variable optind to - * 1 before the first call to getopt(). - * - * When all options have been processed (that is, up to the first nonoption - * argument), getopt() returns EOF. The special option "--" may be used to - * delimit the end of the options; EOF will be returned, and "--" will be - * skipped. - * - * The getopt() function returns a question mark (?) when it encounters an - * option character not included in opstring. This error message can be - * disabled by setting opterr to zero. Otherwise, it returns the option - * character that was detected. - * - * If the special option "--" is detected, or all options have been - * processed, EOF is returned. - * - * Options are marked by either a minus sign (-) or a slash (/). - * - * No errors are defined. - *****************************************************************************/ - -#include /* for EOF */ -#include /* for strchr() */ - - -#ifdef __cplusplus -extern "C" { -#endif - -/* static (global) variables that are specified as exported by getopt() */ -char *optarg = NULL; /* pointer to the start of the option argument */ -int optind = 1; /* number of the next argv[] to be evaluated */ -int opterr = 1; /* non-zero if a question mark should be returned - when a non-valid option character is detected */ - -/* handle possible future character set concerns by putting this in a macro */ -#define _next_char(string) (char)(*(string+1)) - -int getopt(int argc, char *argv[], char *opstring) -{ - static char *pIndexPosition = NULL; /* place inside current argv string */ - char *pArgString = NULL; /* where to start from next */ - char *pOptString; /* the string in our program */ - - - if (pIndexPosition != NULL) { - /* we last left off inside an argv string */ - if (*(++pIndexPosition)) { - /* there is more to come in the most recent argv */ - pArgString = pIndexPosition; - } - } - - if (pArgString == NULL) { - /* we didn't leave off in the middle of an argv string */ - if (optind >= argc) { - /* more command-line arguments than the argument count */ - pIndexPosition = NULL; /* not in the middle of anything */ - return EOF; /* used up all command-line arguments */ - } - - /*--------------------------------------------------------------------- - * If the next argv[] is not an option, there can be no more options. - *-------------------------------------------------------------------*/ - pArgString = argv[optind++]; /* set this to the next argument ptr */ - - if (('/' != *pArgString) && /* doesn't start with a slash or a dash? */ - ('-' != *pArgString)) { - --optind; /* point to current arg once we're done */ - optarg = NULL; /* no argument follows the option */ - pIndexPosition = NULL; /* not in the middle of anything */ - return EOF; /* used up all the command-line flags */ - } - - /* check for special end-of-flags markers */ - if ((strcmp(pArgString, "-") == 0) || - (strcmp(pArgString, "--") == 0)) { - optarg = NULL; /* no argument follows the option */ - pIndexPosition = NULL; /* not in the middle of anything */ - return EOF; /* encountered the special flag */ - } - - pArgString++; /* look past the / or - */ - } - - if (':' == *pArgString) { /* is it a colon? */ - /*--------------------------------------------------------------------- - * Rare case: if opterr is non-zero, return a question mark; - * otherwise, just return the colon we're on. - *-------------------------------------------------------------------*/ - return (opterr ? (int)'?' : (int)':'); - } - else if ((pOptString = strchr(opstring, *pArgString)) == 0) { - /*--------------------------------------------------------------------- - * The letter on the command-line wasn't any good. - *-------------------------------------------------------------------*/ - optarg = NULL; /* no argument follows the option */ - pIndexPosition = NULL; /* not in the middle of anything */ - return (opterr ? (int)'?' : (int)*pArgString); - } - else { - /*--------------------------------------------------------------------- - * The letter on the command-line matches one we expect to see - *-------------------------------------------------------------------*/ - if (':' == _next_char(pOptString)) { /* is the next letter a colon? */ - /* It is a colon. Look for an argument string. */ - if ('\0' != _next_char(pArgString)) { /* argument in this argv? */ - optarg = &pArgString[1]; /* Yes, it is */ - } - else { - /*------------------------------------------------------------- - * The argument string must be in the next argv. - * But, what if there is none (bad input from the user)? - * In that case, return the letter, and optarg as NULL. - *-----------------------------------------------------------*/ - if (optind < argc) - optarg = argv[optind++]; - else { - optarg = NULL; - return (opterr ? (int)'?' : (int)*pArgString); - } - } - pIndexPosition = NULL; /* not in the middle of anything */ - } - else { - /* it's not a colon, so just return the letter */ - optarg = NULL; /* no argument follows the option */ - pIndexPosition = pArgString; /* point to the letter we're on */ - } - return (int)*pArgString; /* return the letter that matched */ - } -} - -#ifdef __cplusplus -} -#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h deleted file mode 100644 index f7446f1c50..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************** - * - * MODULE NAME : GETOPT.H - * - * COPYRIGHTS: - * This module contains code made available by IBM - * Corporation on an AS IS basis. Any one receiving the - * module is considered to be licensed under IBM copyrights - * to use the IBM-provided source code in any way he or she - * deems fit, including copying it, compiling it, modifying - * it, and redistributing it, with or without - * modifications. No license under any IBM patents or - * patent applications is to be implied from this copyright - * license. - * - * A user of the module should understand that IBM cannot - * provide technical support for the module and will not be - * responsible for any consequences of use of the program. - * - * Any notices, including this one, are not to be removed - * from the module without the prior written consent of - * IBM. - * - * AUTHOR: Original author: - * G. R. Blair (BOBBLAIR at AUSVM1) - * Internet: bobblair@bobblair.austin.ibm.com - * - * Extensively revised by: - * John Q. Walker II, Ph.D. (JOHHQ at RALVM6) - * Internet: johnq@ralvm6.vnet.ibm.com - * - *****************************************************************************/ -#ifndef WIN32_GETOPT_H -#define WIN32_GETOPT_H - -#ifdef __cplusplus -extern "C" { -#endif - -extern char * optarg; -extern int optind; - -int getopt ( int argc, char **argv, char *optstring); - -#ifdef __cplusplus -} -#endif - -#endif // WIN32_GETOPT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h deleted file mode 100644 index 176ccc58d2..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h +++ /dev/null @@ -1,169 +0,0 @@ -/* gsm_config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. - This function is required for alloca.c support on those systems. */ -#undef CRAY_STACKSEG_END - -/* Define if you have alloca, as a function or macro. */ -#define HAVE_ALLOCA 1 -#define alloca _alloca // Microsoft - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define if you need to in order for stat and other things to work. */ -#undef _POSIX_SOURCE - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown - */ -#undef STACK_DIRECTION - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* used by libtool*/ -#define PACKAGE 0 - -/* used by libtool*/ -#define VERSION 0 - -/* Define if getopt_long() available */ -#undef HAVE_GETOPT_LONG - -/* Define if alarm() available */ -#undef HAVE_ALARM - -/* Define for NLS */ -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY - -/* Define LOCALEDIR */ -#define LOCALEDIR "/usr/share/locale" - -/* Define if vsnprintf() function available */ -#define HAVE_VSNPRINTF 1 -#define vsnprintf _vsnprintf - -/* The number of bytes in a unsigned int. */ -#define SIZEOF_UNSIGNED_INT 4 - -/* The number of bytes in a unsigned long int. */ -#define SIZEOF_UNSIGNED_LONG_INT 4 - -/* The number of bytes in a unsigned short int. */ -#define SIZEOF_UNSIGNED_SHORT_INT 2 - -/* Define if you have the __argz_count function. */ -#undef HAVE___ARGZ_COUNT - -/* Define if you have the __argz_next function. */ -#undef HAVE___ARGZ_NEXT - -/* Define if you have the __argz_stringify function. */ -#undef HAVE___ARGZ_STRINGIFY - -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT - -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the munmap function. */ -#undef HAVE_MUNMAP - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setlocale function. */ -#define HAVE_SETLOCALE 1 - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP -#define strcasecmp _strcmpi - -/* Define if you have the strchr function. */ -#define HAVE_STRCHR 1 - -/* Define if you have the strdup function. */ -#define HAVE_STRDUP 1 - -/* Define if you have the header file. */ -#undef HAVE_ARGZ_H - -/* Define if you have the header file. */ -#undef HAVE_LIBINTL_H - -/* Define if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define if you have the header file. */ -#define HAVE_LOCALE_H 1 - -/* Define if you have the header file. */ -#define HAVE_MALLOC_H 1 - -/* Define if you have the header file. */ -#undef HAVE_NETINET_IN_H - -/* Define if you have the header file. */ -#undef HAVE_NL_TYPES_H - -/* Define if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the i library (-li). */ -#undef HAVE_LIBI - -/* Define if you have the intl library (-lintl). */ -#undef HAVE_LIBINTL - -// WIN32 specific defines -#pragma warning( disable : 4786 ) // Disable warning messages - // 4786 (id too long) - -// Win32 strftime() does not return length of output when passing -// NULL pointer -#define BROKEN_STRFTIME -// Win32 STL erase() for maps makes iterators invalid -#define BUGGY_MAP_ERASE diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp deleted file mode 100644 index b48a1c54db..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp +++ /dev/null @@ -1,118 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gsmctl" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gsmctl - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "gsmctl.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "gsmctl.mak" CFG="gsmctl - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "gsmctl - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "gsmctl - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gsmctl - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gsmctl - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gsmctl - Win32 Release" -# Name "gsmctl - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\getopt.c - -!IF "$(CFG)" == "gsmctl - Win32 Release" - -!ELSEIF "$(CFG)" == "gsmctl - Win32 Debug" - -# ADD CPP /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\apps\gsmctl.cc -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\getopt.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp deleted file mode 100644 index ace489a252..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp +++ /dev/null @@ -1,232 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gsmlib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=gsmlib - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "gsmlib.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "gsmlib.mak" CFG="gsmlib - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "gsmlib - Win32 Release" (basierend auf "Win32 (x86) Static Library") -!MESSAGE "gsmlib - Win32 Debug" (basierend auf "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gsmlib - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GR /GX /O2 /I "../vcproject" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /FR /YX /FD /TP /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "gsmlib - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "gsmlib - Win32 Release" -# Name "gsmlib - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;cc;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\gsmlib\gsm_at.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_error.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_cb.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_event.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_me_ta.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_nls.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_parser.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_phonebook.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sms.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sms_codec.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sms_store.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sorted_phonebook.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sorted_phonebook_base.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sorted_sms_store.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_util.cc -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_win32_serial.cc -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\gsmlib\gsm_at.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_cb.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_error.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_event.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_map_key.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_me_ta.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_nls.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_parser.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_phonebook.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_port.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sms.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sms_codec.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sms_store.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sorted_phonebook.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sorted_phonebook_base.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sorted_sms_store.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_sysdep.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_util.h -# End Source File -# Begin Source File - -SOURCE=..\gsmlib\gsm_win32_serial.h -# End Source File -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw deleted file mode 100644 index 21ab8168ac..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw +++ /dev/null @@ -1,149 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "gsmctl"=".\gsmctl.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "gsmlib"=".\gsmlib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "gsmpb"=".\gsmpb.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "gsmsendsms"=".\gsmsendsms.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "gsmsmsd"=".\gsmsmsd.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "gsmsmsstore"=".\gsmsmsstore.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "testgsmlib"=".\testgsmlib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "testsms"=".\testsms.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Project: "testsms2"=".\testsms2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name gsmlib - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp deleted file mode 100644 index befc0f6d51..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp +++ /dev/null @@ -1,118 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gsmpb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gsmpb - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "gsmpb.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "gsmpb.mak" CFG="gsmpb - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "gsmpb - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "gsmpb - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gsmpb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gsmpb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gsmpb - Win32 Release" -# Name "gsmpb - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\getopt.c - -!IF "$(CFG)" == "gsmpb - Win32 Release" - -!ELSEIF "$(CFG)" == "gsmpb - Win32 Debug" - -# ADD CPP /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\apps\gsmpb.cc -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\getopt.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp deleted file mode 100644 index 7e660fbdbb..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp +++ /dev/null @@ -1,118 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gsmsendsms" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gsmsendsms - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "gsmsendsms.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "gsmsendsms.mak" CFG="gsmsendsms - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "gsmsendsms - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "gsmsendsms - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gsmsendsms - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gsmsendsms - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gsmsendsms - Win32 Release" -# Name "gsmsendsms - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\getopt.c - -!IF "$(CFG)" == "gsmsendsms - Win32 Release" - -!ELSEIF "$(CFG)" == "gsmsendsms - Win32 Debug" - -# ADD CPP /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\apps\gsmsendsms.cc -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\getopt.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp deleted file mode 100644 index 2facfaa47c..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp +++ /dev/null @@ -1,118 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gsmsmsd" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gsmsmsd - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "gsmsmsd.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "gsmsmsd.mak" CFG="gsmsmsd - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "gsmsmsd - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "gsmsmsd - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gsmsmsd - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gsmsmsd - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gsmsmsd - Win32 Release" -# Name "gsmsmsd - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\getopt.c - -!IF "$(CFG)" == "gsmsmsd - Win32 Release" - -!ELSEIF "$(CFG)" == "gsmsmsd - Win32 Debug" - -# ADD CPP /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\apps\gsmsmsd.cc -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\getopt.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp deleted file mode 100644 index 5e7a9c150a..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp +++ /dev/null @@ -1,119 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gsmsmsstore" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gsmsmsstore - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "gsmsmsstore.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "gsmsmsstore.mak" CFG="gsmsmsstore - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "gsmsmsstore - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "gsmsmsstore - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gsmsmsstore - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "gsmsmsstore - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "gsmsmsstore - Win32 Release" -# Name "gsmsmsstore - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\getopt.c - -!IF "$(CFG)" == "gsmsmsstore - Win32 Release" - -!ELSEIF "$(CFG)" == "gsmsmsstore - Win32 Debug" - -# ADD CPP /Od - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\apps\gsmsmsstore.cc -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\getopt.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp deleted file mode 100644 index 26de21002d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testgsmlib" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testgsmlib - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "testgsmlib.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "testgsmlib.mak" CFG="testgsmlib - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "testgsmlib - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "testgsmlib - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testgsmlib - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /TP /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testgsmlib - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testgsmlib - Win32 Release" -# Name "testgsmlib - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tests\testgsmlib.cc -# ADD CPP /I "../gsmlib" /I ".." /I "." /D "HAVE_CONFIG_H" -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp deleted file mode 100644 index 09bf409bd2..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp +++ /dev/null @@ -1,100 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testsms" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testsms - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "testsms.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "testsms.mak" CFG="testsms - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "testsms - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "testsms - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testsms - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testsms - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testsms - Win32 Release" -# Name "testsms - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tests\testsms.cc -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp deleted file mode 100644 index 0ab2880c41..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp +++ /dev/null @@ -1,100 +0,0 @@ -# Microsoft Developer Studio Project File - Name="testsms2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testsms2 - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "testsms2.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "testsms2.mak" CFG="testsms2 - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "testsms2 - Win32 Release" (basierend auf "Win32 (x86) Console Application") -!MESSAGE "testsms2 - Win32 Debug" (basierend auf "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testsms2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "testsms2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testsms2 - Win32 Release" -# Name "testsms2 - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tests\testsms2.cc -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff deleted file mode 100644 index ddea9c6d8f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff +++ /dev/null @@ -1,64915 +0,0 @@ ---- gsmlib-1.10.orig/g41.patch -+++ gsmlib-1.10/g41.patch -@@ -0,0 +1,29 @@ -+--- ./gsmlib/gsm_me_ta.h~ 2006-03-09 19:15:59.000000000 +0000 -++++ ./gsmlib/gsm_me_ta.h 2006-03-09 19:16:31.000000000 +0000 -+@@ -291,8 +291,8 @@ -+ // 3 disable phone receive RF circuits only -+ // 4 disable phone both transmit and receive RF circuits -+ // 5...127 implementation-defined -+- int MeTa::getFunctionalityLevel() throw(GsmException); -+- void MeTa::setFunctionalityLevel(int level) throw(GsmException); -++ int getFunctionalityLevel() throw(GsmException); -++ void setFunctionalityLevel(int level) throw(GsmException); -+ -+ // return battery charge status (+CBC): -+ // 0 ME is powered by the battery -+@@ -386,13 +386,13 @@ -+ void setCallWaitingLockStatus(FacilityClass cl, -+ bool lock)throw(GsmException); -+ -+- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); -++ void setCLIRPresentation(bool enable) throw(GsmException); -+ //(+CLIR) -+ -+ // 0:according to the subscription of the CLIR service -+ // 1:CLIR invocation -+ // 2:CLIR suppression -+- int MeTa::getCLIRPresentation() throw(GsmException); -++ int getCLIRPresentation() throw(GsmException); -+ -+ friend class Phonebook; -+ friend class SMSStore; ---- gsmlib-1.10.orig/Makefile.in -+++ gsmlib-1.10/Makefile.in -@@ -1,8 +1,6 @@ --# Makefile.in generated by automake 1.6.3 from Makefile.am. --# @configure_input@ -+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - --# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+# Copyright (C) 1994, 1995-8, 1999, 2001 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. -@@ -12,8 +10,6 @@ - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - --@SET_MAKE@ -- - # ************************************************************************* - # * GSM TA/ME library - # * -@@ -25,6 +21,8 @@ - # * - # * Created: 21.5.1999 - # ************************************************************************* -+ -+ - SHELL = @SHELL@ - - srcdir = @srcdir@ -@@ -45,9 +43,13 @@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include -+ -+DESTDIR = -+ - pkgdatadir = $(datadir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ -+ - top_builddir = . - - ACLOCAL = @ACLOCAL@ -@@ -55,16 +57,12 @@ - AUTOMAKE = @AUTOMAKE@ - AUTOHEADER = @AUTOHEADER@ - --am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - INSTALL = @INSTALL@ --INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) - INSTALL_DATA = @INSTALL_DATA@ --install_sh_DATA = $(install_sh) -c -m 644 --install_sh_PROGRAM = $(install_sh) -c --install_sh_SCRIPT = $(install_sh) -c - INSTALL_SCRIPT = @INSTALL_SCRIPT@ --INSTALL_HEADER = $(INSTALL_DATA) - transform = @program_transform_name@ -+ - NORMAL_INSTALL = : - PRE_INSTALL = : - POST_INSTALL = : -@@ -73,33 +71,38 @@ - POST_UNINSTALL = : - host_alias = @host_alias@ - host_triplet = @host@ -- --EXEEXT = @EXEEXT@ --OBJEXT = @OBJEXT@ --PATH_SEPARATOR = @PATH_SEPARATOR@ --AMTAR = @AMTAR@ -+AR = @AR@ - AS = @AS@ --AWK = @AWK@ - BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ - CATOBJEXT = @CATOBJEXT@ - CC = @CC@ - CPP = @CPP@ - CXX = @CXX@ -+CXXCPP = @CXXCPP@ - DATADIRNAME = @DATADIRNAME@ --DEPDIR = @DEPDIR@ - DLLTOOL = @DLLTOOL@ - ECHO = @ECHO@ -+EGREP = @EGREP@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+GCJ = @GCJ@ -+GCJFLAGS = @GCJFLAGS@ - GENCAT = @GENCAT@ -+GLIBC2 = @GLIBC2@ - GLIBC21 = @GLIBC21@ - GMSGFMT = @GMSGFMT@ - GSM_VERSION = @GSM_VERSION@ -+HAVE_ASPRINTF = @HAVE_ASPRINTF@ - HAVE_LIB = @HAVE_LIB@ --INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ -+HAVE_SNPRINTF = @HAVE_SNPRINTF@ -+HAVE_WPRINTF = @HAVE_WPRINTF@ - INSTOBJEXT = @INSTOBJEXT@ - INTLBISON = @INTLBISON@ - INTLLIBS = @INTLLIBS@ - INTLOBJS = @INTLOBJS@ - INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ - LIB = @LIB@ - LIBICONV = @LIBICONV@ - LIBINTL = @LIBINTL@ -@@ -108,89 +111,83 @@ - LTLIB = @LTLIB@ - LTLIBICONV = @LTLIBICONV@ - LTLIBINTL = @LTLIBINTL@ -+MAKEINFO = @MAKEINFO@ - MKINSTALLDIRS = @MKINSTALLDIRS@ - OBJDUMP = @OBJDUMP@ -+OBJEXT = @OBJEXT@ - PACKAGE = @PACKAGE@ - POSUB = @POSUB@ - RANLIB = @RANLIB@ -+RC = @RC@ - STRIP = @STRIP@ - USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ - USE_NLS = @USE_NLS@ - VERSION = @VERSION@ --am__include = @am__include@ --am__quote = @am__quote@ --install_sh = @install_sh@ - - SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext - - EXTRA_DIST = gsmlib.spec -- - @COMPILE_INTL_TRUE@SUBDIRS = intl $(SUBDIRS_) # po - make automake happy - @COMPILE_INTL_FALSE@SUBDIRS = $(SUBDIRS_) # po intl - make automake happy --subdir = . - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs - CONFIG_HEADER = gsm_config.h --CONFIG_CLEAN_FILES = intl/Makefile --DIST_SOURCES = -+CONFIG_CLEAN_FILES = -+DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ -+INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ -+aclocal.m4 configure configure.in gsm_config.h.in - --RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ -- uninstall-info-recursive all-recursive install-data-recursive \ -- install-exec-recursive installdirs-recursive install-recursive \ -- uninstall-recursive check-recursive installcheck-recursive --DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ -- Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ -- aclocal.m4 configure configure.in gsm_config.h.in --DIST_SUBDIRS = po gsmlib apps tests doc scripts win32 ext intl --all: gsm_config.h -- $(MAKE) $(AM_MAKEFLAGS) all-recursive - -+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -+ -+TAR = tar -+GZIP_ENV = --best -+DIST_SUBDIRS = intl po gsmlib apps tests doc scripts win32 ext po \ -+gsmlib apps tests doc scripts win32 ext -+all: all-redirect - .SUFFIXES: -+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) -+ cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile - --am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -- configure.lineno --$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) -- cd $(top_srcdir) && \ -- $(AUTOMAKE) --gnu Makefile --Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - --$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+$(ACLOCAL_M4): configure.in acinclude.m4 -+ cd $(srcdir) && $(ACLOCAL) -+ -+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck --$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) -+$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - --$(ACLOCAL_M4): configure.in acinclude.m4 -- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -- --gsm_config.h: stamp-h1 -+gsm_config.h: stamp-h - @if test ! -f $@; then \ -- rm -f stamp-h1; \ -- $(MAKE) stamp-h1; \ -+ rm -f stamp-h; \ -+ $(MAKE) stamp-h; \ - else :; fi -- --stamp-h1: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status -- @rm -f stamp-h1 -- cd $(top_builddir) && $(SHELL) ./config.status gsm_config.h -- --$(srcdir)/gsm_config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h -+stamp-h: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES= CONFIG_HEADERS=gsm_config.h \ -+ $(SHELL) ./config.status -+ @echo timestamp > stamp-h 2> /dev/null -+$(srcdir)/gsm_config.h.in: $(srcdir)/stamp-h.in -+ @if test ! -f $@; then \ -+ rm -f $(srcdir)/stamp-h.in; \ -+ $(MAKE) $(srcdir)/stamp-h.in; \ -+ else :; fi -+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) -- touch $(srcdir)/gsm_config.h.in -+ @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - --distclean-hdr: -- -rm -f gsm_config.h stamp-h1 --intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in -- cd $(top_builddir) && $(SHELL) ./config.status $@ -+mostlyclean-hdr: - --mostlyclean-libtool: -- -rm -f *.lo -+clean-hdr: - --clean-libtool: -- -rm -rf .libs _libs -+distclean-hdr: -+ -rm -f gsm_config.h - --distclean-libtool: -- -rm -f libtool --uninstall-info-am: -+maintainer-clean-hdr: - - # This directory's subdirectories are mostly independent; you can cd - # into them and run `make' without going through this Makefile. -@@ -198,8 +195,13 @@ - # (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): -- @set fnord $$MAKEFLAGS; amf=$$2; \ -+ -+@SET_MAKE@ -+ -+all-recursive install-data-recursive install-exec-recursive \ -+installdirs-recursive install-recursive uninstall-recursive \ -+check-recursive installcheck-recursive info-recursive dvi-recursive: -+ @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ -@@ -219,18 +221,13 @@ - - mostlyclean-recursive clean-recursive distclean-recursive \ - maintainer-clean-recursive: -- @set fnord $$MAKEFLAGS; amf=$$2; \ -+ @set fnord $(MAKEFLAGS); amf=$$2; \ - 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; \ -+ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ -+ rev="$$subdir $$rev"; \ -+ test "$$subdir" != "." || dot_seen=yes; \ - done; \ -- rev="$$rev ."; \ -+ test "$$dot_seen" = "no" && rev=". $$rev"; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ -@@ -247,237 +244,180 @@ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - --ETAGS = etags --ETAGSFLAGS = -- - tags: TAGS - --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; } \ -+ID: $(HEADERS) $(SOURCES) $(LISP) -+ list='$(SOURCES) $(HEADERS)'; \ -+ unique=`for i in $$list; do echo $$i; done | \ -+ awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ -- mkid -fID $$unique -+ here=`pwd` && cd $(srcdir) \ -+ && mkid -f$$here/ID $$unique $(LISP) - --TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -+TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -+ if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ -- fi; \ -+ fi; \ - done; \ -- list='$(SOURCES) $(HEADERS) gsm_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; } \ -+ list='$(SOURCES) $(HEADERS)'; \ -+ unique=`for i in $$list; do echo $$i; done | \ -+ awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ -- test -z "$(ETAGS_ARGS)$$tags$$unique" \ -- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -- $$tags $$unique -- --GTAGS: -- here=`$(am__cd) $(top_builddir) && pwd` \ -- && cd $(top_srcdir) \ -- && gtags -i $(GTAGS_ARGS) $$here -+ test -z "$(ETAGS_ARGS)gsm_config.h.in$$unique$(LISP)$$tags" \ -+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags gsm_config.h.in $$unique $(LISP)) - --distclean-tags: -- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+mostlyclean-tags: - --top_distdir = . --distdir = $(PACKAGE)-$(VERSION) -+clean-tags: - --am__remove_distdir = \ -- { test ! -d $(distdir) \ -- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -- && rm -fr $(distdir); }; } -+distclean-tags: -+ -rm -f TAGS ID - --GZIP_ENV = --best --distcleancheck_listfiles = find . -type f -print -+maintainer-clean-tags: - -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(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 -+ -rm -rf $(distdir) -+ GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz -+ mkdir $(distdir)/=build -+ mkdir $(distdir)/=inst -+ dc_install_base=`cd $(distdir)/=inst && pwd`; \ -+ cd $(distdir)/=build \ -+ && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ -+ && $(MAKE) $(AM_MAKEFLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) dvi \ -+ && $(MAKE) $(AM_MAKEFLAGS) check \ -+ && $(MAKE) $(AM_MAKEFLAGS) install \ -+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist -+ -rm -rf $(distdir) -+ @banner="$(distdir).tar.gz is ready for distribution"; \ -+ dashes=`echo "$$banner" | sed s/./=/g`; \ -+ echo "$$dashes"; \ -+ echo "$$banner"; \ -+ echo "$$dashes" -+dist: distdir -+ -chmod -R a+r $(distdir) -+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -+ -rm -rf $(distdir) -+dist-all: distdir -+ -chmod -R a+r $(distdir) -+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -+ -rm -rf $(distdir) - distdir: $(DISTFILES) -- $(am__remove_distdir) -+ -rm -rf $(distdir) - mkdir $(distdir) -- $(mkinstalldirs) $(distdir)/intl $(distdir)/po -- @list='$(DISTFILES)'; for file in $$list; do \ -- 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"; \ -- $(mkinstalldirs) "$(distdir)$$dir"; \ -- else \ -- dir=''; \ -- fi; \ -+ -chmod 777 $(distdir) -+ here=`cd $(top_builddir) && pwd`; \ -+ top_distdir=`cd $(distdir) && pwd`; \ -+ distdir=`cd $(distdir) && pwd`; \ -+ cd $(top_srcdir) \ -+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile -+ @for file in $(DISTFILES); do \ -+ d=$(srcdir); \ - 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; \ -+ cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ -- || cp -p $$d/$$file $(distdir)/$$file \ -- || exit 1; \ -+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ -+ || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done -- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ for subdir in $(DIST_SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ -- (cd $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" \ -- distdir=../$(distdir)/$$subdir \ -- distdir) \ -+ chmod 777 $(distdir)/$$subdir; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(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 -- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --dist dist-all: distdir -- $(AMTAR) chof - $(distdir) | 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 -- $(am__remove_distdir) -- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - -- 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` \ -- && cd $(distdir)/=build \ -- && ../configure --srcdir=.. --prefix=$$dc_install_base \ -- --with-included-gettext \ -- $(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 \ -- && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ -- || { echo "ERROR: files left after uninstall:" ; \ -- find $$dc_install_base -type f -print ; \ -- exit 1; } >&2 ) \ -- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ -- && rm -f $(distdir).tar.gz \ -- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -- $(am__remove_distdir) -- @echo "$(distdir).tar.gz is ready for distribution" | \ -- sed 'h;s/./=/g;p;x;p;x' --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 after distclean:" ; \ -- $(distcleancheck_listfiles) ; \ -- exit 1; } >&2 -+info-am: -+info: info-recursive -+dvi-am: -+dvi: dvi-recursive - check-am: all-am - check: check-recursive --all-am: Makefile gsm_config.h --installdirs: installdirs-recursive --installdirs-am: -+installcheck-am: -+installcheck: installcheck-recursive -+all-recursive-am: gsm_config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-recursive - --install: install-recursive -+install-exec-am: - install-exec: install-exec-recursive -+ -+install-data-am: - 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: install-recursive -+uninstall-am: -+uninstall: uninstall-recursive -+all-am: Makefile gsm_config.h -+all-redirect: all-recursive-am - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -+installdirs: installdirs-recursive -+installdirs-am: -+ -+ - mostlyclean-generic: - - clean-generic: - - distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) -+ -rm -f config.cache config.log stamp-h stamp-h[0-9]* - - 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) --distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ -- distclean-tags -+mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic - --dvi: dvi-recursive -- --dvi-am: -- --info: info-recursive -- --info-am: -+mostlyclean: mostlyclean-recursive - --install-data-am: -+clean-am: clean-hdr clean-tags clean-generic mostlyclean-am - --install-exec-am: -+clean: clean-recursive - --install-info: install-info-recursive -+distclean-am: distclean-hdr distclean-tags distclean-generic clean-am -+ -rm -f libtool - --install-man: -+distclean: distclean-recursive -+ -rm -f config.status - --installcheck-am: -+maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ -+ maintainer-clean-generic distclean-am -+ @echo "This command is intended for maintainers to use;" -+ @echo "it deletes files that may require special tools to rebuild." - - maintainer-clean: maintainer-clean-recursive -- -rm -f $(am__CONFIG_DISTCLEAN_FILES) -- -rm -rf autom4te.cache --maintainer-clean-am: distclean-am maintainer-clean-generic -- --mostlyclean: mostlyclean-recursive -- --mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -rm -f config.status - --uninstall-am: uninstall-info-am -- --uninstall-info: uninstall-info-recursive -- --.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ -- clean-generic clean-libtool clean-recursive dist dist-all \ -- dist-gzip distcheck distclean distclean-generic distclean-hdr \ -- distclean-libtool distclean-recursive distclean-tags \ -- distcleancheck distdir dvi dvi-am dvi-recursive info info-am \ -- info-recursive install install-am install-data install-data-am \ -- install-data-recursive install-exec install-exec-am \ -- install-exec-recursive install-info install-info-am \ -- install-info-recursive install-man install-recursive \ -- install-strip installcheck installcheck-am installdirs \ -- installdirs-am installdirs-recursive maintainer-clean \ -- maintainer-clean-generic maintainer-clean-recursive mostlyclean \ -- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ -- tags tags-recursive uninstall uninstall-am uninstall-info-am \ -- uninstall-info-recursive uninstall-recursive -+.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -+install-data-recursive uninstall-data-recursive install-exec-recursive \ -+uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -+all-recursive check-recursive installcheck-recursive info-recursive \ -+dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -+dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -+install-exec-am install-exec install-data-am install-data install-am \ -+install uninstall-am uninstall all-redirect all-am all installdirs-am \ -+installdirs mostlyclean-generic distclean-generic clean-generic \ -+maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - - all: -+ - # 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: ---- gsmlib-1.10.orig/gsm_config.h.in -+++ gsmlib-1.10/gsm_config.h.in -@@ -55,25 +55,50 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_ARGZ_H - -+/* Define to 1 if you have the `asprintf' function. */ -+#undef HAVE_ASPRINTF -+ -+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the -+ CoreFoundation framework. */ -+#undef HAVE_CFLOCALECOPYCURRENT -+ -+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in -+ the CoreFoundation framework. */ -+#undef HAVE_CFPREFERENCESCOPYAPPVALUE -+ - /* Define if the GNU dcgettext() function is already present or preinstalled. - */ - #undef HAVE_DCGETTEXT - -+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you -+ don't. */ -+#undef HAVE_DECL_FEOF_UNLOCKED -+ -+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if -+ you don't. */ -+#undef HAVE_DECL_FGETS_UNLOCKED -+ -+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you -+ don't. */ -+#undef HAVE_DECL_GETC_UNLOCKED -+ -+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you -+ don't. */ -+#undef HAVE_DECL__SNPRINTF -+ -+/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you -+ don't. */ -+#undef HAVE_DECL__SNWPRINTF -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_DLFCN_H - --/* Define to 1 if you have the `feof_unlocked' function. */ --#undef HAVE_FEOF_UNLOCKED -- --/* Define to 1 if you have the `fgets_unlocked' function. */ --#undef HAVE_FGETS_UNLOCKED -+/* Define to 1 if you have the `fwprintf' function. */ -+#undef HAVE_FWPRINTF - - /* Define to 1 if you have the `getcwd' function. */ - #undef HAVE_GETCWD - --/* Define to 1 if you have the `getc_unlocked' function. */ --#undef HAVE_GETC_UNLOCKED -- - /* Define to 1 if you have the `getegid' function. */ - #undef HAVE_GETEGID - -@@ -95,6 +120,9 @@ - /* Define if you have the iconv() function. */ - #undef HAVE_ICONV - -+/* Define if you have the 'intmax_t' type in or . */ -+#undef HAVE_INTMAX_T -+ - /* Define if exists and doesn't clash with . */ - #undef HAVE_INTTYPES_H - -@@ -120,6 +148,12 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_LOCALE_H - -+/* Define if you have the 'long double' type. */ -+#undef HAVE_LONG_DOUBLE -+ -+/* Define if you have the 'long long' type. */ -+#undef HAVE_LONG_LONG -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_MALLOC_H - -@@ -141,6 +175,9 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_NL_TYPES_H - -+/* Define if your printf() function supports format strings with positions. */ -+#undef HAVE_POSIX_PRINTF -+ - /* Define to 1 if you have the `putenv' function. */ - #undef HAVE_PUTENV - -@@ -150,6 +187,9 @@ - /* Define to 1 if you have the `setlocale' function. */ - #undef HAVE_SETLOCALE - -+/* Define to 1 if you have the `snprintf' function. */ -+#undef HAVE_SNPRINTF -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_STDDEF_H - -@@ -193,12 +233,24 @@ - /* Define to 1 if you have the `tsearch' function. */ - #undef HAVE_TSEARCH - -+/* Define if you have the 'uintmax_t' type in or . */ -+#undef HAVE_UINTMAX_T -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_UNISTD_H - --/* Define if you have the unsigned long long type. */ -+/* Define if you have the 'unsigned long long' type. */ - #undef HAVE_UNSIGNED_LONG_LONG - -+/* Define if you have the 'wchar_t' type. */ -+#undef HAVE_WCHAR_T -+ -+/* Define to 1 if you have the `wcslen' function. */ -+#undef HAVE_WCSLEN -+ -+/* Define if you have the 'wint_t' type. */ -+#undef HAVE_WINT_T -+ - /* Define to 1 if you have the `__argz_count' function. */ - #undef HAVE___ARGZ_COUNT - -@@ -208,6 +260,9 @@ - /* Define to 1 if you have the `__argz_stringify' function. */ - #undef HAVE___ARGZ_STRINGIFY - -+/* Define to 1 if you have the `__fsetlocking' function. */ -+#undef HAVE___FSETLOCKING -+ - /* Define as const if the declaration of iconv() needs const. */ - #undef ICONV_CONST - -@@ -244,12 +299,16 @@ - /* The size of a `unsigned short int', as computed by sizeof. */ - #undef SIZEOF_UNSIGNED_SHORT_INT - -+/* Define as the maximum value of type 'size_t', if the system doesn't define -+ it. */ -+#undef SIZE_MAX -+ - /* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. -- STACK_DIRECTION > 0 => grows toward higher addresses -- STACK_DIRECTION < 0 => grows toward lower addresses -- STACK_DIRECTION = 0 => direction of growth unknown */ -+ STACK_DIRECTION > 0 => grows toward higher addresses -+ STACK_DIRECTION < 0 => grows toward lower addresses -+ STACK_DIRECTION = 0 => direction of growth unknown */ - #undef STACK_DIRECTION - - /* Define to 1 if you have the ANSI C header files. */ -@@ -261,16 +320,25 @@ - /* Define to empty if `const' does not conform to ANSI C. */ - #undef const - --/* Define as `__inline' if that's what the C compiler calls it, or to nothing -- if it is not supported. */ -+/* 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 as the type of the result of subtracting two pointers, if the system -+ doesn't define it. */ -+#undef ptrdiff_t -+ -+/* Define to empty if the C compiler doesn't support this keyword. */ -+#undef signed -+ - /* Define to `unsigned' if does not define. */ - #undef size_t - --/* Define to unsigned long or unsigned long long if and -- don't define. */ -+/* Define to unsigned long or unsigned long long if and -+ don't define. */ - #undef uintmax_t ---- gsmlib-1.10.orig/aclocal.m4 -+++ gsmlib-1.10/aclocal.m4 -@@ -1,7 +1,7 @@ --# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- -+# generated automatically by aclocal 1.9.6 -*- Autoconf -*- - --# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+# 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. -@@ -11,5211 +11,1221 @@ - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - -+# codeset.m4 serial AM1 (gettext-0.10.40) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- -- --# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. -+dnl From Bruno Haible. - --# 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. -+AC_DEFUN([AM_LANGINFO_CODESET], -+[ -+ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, -+ [AC_TRY_LINK([#include ], -+ [char* cs = nl_langinfo(CODESET);], -+ am_cv_langinfo_codeset=yes, -+ am_cv_langinfo_codeset=no) -+ ]) -+ if test $am_cv_langinfo_codeset = yes; then -+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1, -+ [Define if you have and nl_langinfo(CODESET).]) -+ fi -+]) - --# 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. -+# gettext.m4 serial 37 (gettext-0.14.4) -+dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. - --AC_PREREQ([2.52]) -+dnl Macro to add for using GNU gettext. - --# serial 6 -+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -+dnl default (if it is not specified or empty) is 'no-libtool'. -+dnl INTLSYMBOL should be 'external' for packages with no intl directory, -+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -+dnl If INTLSYMBOL is 'use-libtool', then a libtool library -+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -+dnl depending on --{enable,disable}-{shared,static} and on the presence of -+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -+dnl $(top_builddir)/intl/libintl.a will be created. -+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -+dnl implementations (in libc or libintl) without the ngettext() function -+dnl will be ignored. If NEEDSYMBOL is specified and is -+dnl 'need-formatstring-macros', then GNU gettext implementations that don't -+dnl support the ISO C 99 formatstring macros will be ignored. -+dnl INTLDIR is used to find the intl libraries. If empty, -+dnl the value `$(top_builddir)/intl/' is used. -+dnl -+dnl The result of the configuration is one of three cases: -+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -+dnl and used. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 2) GNU gettext has been found in the system's C library. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 3) No internationalization, always use English msgid. -+dnl Catalog format: none -+dnl Catalog extension: none -+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -+dnl The use of .gmo is historical (it was needed to avoid overwriting the -+dnl GNU format catalogs when building on a platform with an X/Open gettext), -+dnl but we keep it in order not to force irrelevant filename changes on the -+dnl maintainers. -+dnl -+AC_DEFUN([AM_GNU_GETTEXT], -+[ -+ dnl Argument checking. -+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , -+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -+])])])])]) -+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , -+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -+])])])]) -+ define([gt_included_intl], ifelse([$1], [external], [no], [yes])) -+ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) - --# 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. We must strip everything past the first ":", --# and everything past the last "/". -+ AC_REQUIRE([AM_PO_SUBDIRS])dnl -+ ifelse(gt_included_intl, yes, [ -+ AC_REQUIRE([AM_INTL_SUBDIR])dnl -+ ]) - --# _AM_DIRNAME(PATH) --# ----------------- --# Like AS_DIRNAME, only do it during macro expansion --AC_DEFUN([_AM_DIRNAME], -- [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, -- m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, -- m4_if(regexp([$1], [^/.*]), -1, -- [.], -- patsubst([$1], [^\(/\).*], [\1])), -- patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), -- patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl --])# _AM_DIRNAME -- -- --# The stamp files are numbered to have different names. --# We could number them on a directory basis, but that's additional --# complications, let's have a unique counter. --m4_define([_AM_STAMP_Count], [0]) -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) - -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ dnl Ideally we would do this search only after the -+ dnl if test "$USE_NLS" = "yes"; then -+ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then -+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT -+ dnl the configure script would need to contain the same shell code -+ dnl again, outside any 'if'. There are two solutions: -+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. -+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. -+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not -+ dnl documented, we avoid it. -+ ifelse(gt_included_intl, yes, , [ -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+ ]) - --# _AM_STAMP(HEADER) --# ----------------- --# The name of the stamp file for HEADER. --AC_DEFUN([_AM_STAMP], --[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl --AS_ESCAPE(_AM_DIRNAME(patsubst([$1], -- [:.*])))/stamp-h[]_AM_STAMP_Count]) -+ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. -+ gt_INTL_MACOSX - -+ dnl Set USE_NLS. -+ AM_NLS - --# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) --# ------------------------------------------------------------ --# We used to try to get a real timestamp in stamp-h. But the fear is that --# that will cause unnecessary cvs conflicts. --AC_DEFUN([_AM_CONFIG_HEADER], --[# Add the stamp file to the list of files AC keeps track of, --# along with our hook. --AC_CONFIG_HEADERS([$1], -- [# update the timestamp --echo 'timestamp for $1' >"_AM_STAMP([$1])" --$2], -- [$3]) --])# _AM_CONFIG_HEADER -- -- --# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) --# -------------------------------------------------------------- --AC_DEFUN([AM_CONFIG_HEADER], --[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) --])# AM_CONFIG_HEADER -+ ifelse(gt_included_intl, yes, [ -+ BUILD_INCLUDED_LIBINTL=no -+ USE_INCLUDED_LIBINTL=no -+ ]) -+ LIBINTL= -+ LTLIBINTL= -+ POSUB= - --# Do all the work for Automake. -*- Autoconf -*- -+ dnl If we use NLS figure out what method -+ if test "$USE_NLS" = "yes"; then -+ gt_use_preinstalled_gnugettext=no -+ ifelse(gt_included_intl, yes, [ -+ AC_MSG_CHECKING([whether included gettext is requested]) -+ AC_ARG_WITH(included-gettext, -+ [ --with-included-gettext use the GNU gettext library included here], -+ nls_cv_force_use_gnu_gettext=$withval, -+ nls_cv_force_use_gnu_gettext=no) -+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - --# 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. -+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" -+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then -+ ]) -+ dnl User does not insist on using GNU NLS library. Figure out what -+ dnl to use. If GNU gettext is available we use this. Else we have -+ dnl to fall back to GNU NLS library. - --# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+ dnl Add a version number to the cache macros. -+ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) -+ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) -+ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - --# 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. -+ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, -+ [AC_TRY_LINK([#include -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern int *_nl_domain_bindings;], -+ [bindtextdomain ("", ""); -+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], -+ gt_cv_func_gnugettext_libc=yes, -+ gt_cv_func_gnugettext_libc=no)]) - --# 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. -+ if test "$gt_cv_func_gnugettext_libc" != "yes"; then -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ ifelse(gt_included_intl, yes, , [ -+ AM_ICONV_LINK -+ ]) -+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL -+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) -+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL -+ dnl even if libiconv doesn't exist. -+ AC_LIB_LINKFLAGS_BODY([intl]) -+ AC_CACHE_CHECK([for GNU gettext in libintl], -+ gt_cv_func_gnugettext_libintl, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $INCINTL" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIBINTL" -+ dnl Now see whether libintl exists and does not depend on libiconv. -+ AC_TRY_LINK([#include -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias (const char *);], -+ [bindtextdomain ("", ""); -+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], -+ gt_cv_func_gnugettext_libintl=yes, -+ gt_cv_func_gnugettext_libintl=no) -+ dnl Now see whether libintl exists and depends on libiconv. -+ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then -+ LIBS="$LIBS $LIBICONV" -+ AC_TRY_LINK([#include -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias (const char *);], -+ [bindtextdomain ("", ""); -+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], -+ [LIBINTL="$LIBINTL $LIBICONV" -+ LTLIBINTL="$LTLIBINTL $LTLIBICONV" -+ gt_cv_func_gnugettext_libintl=yes -+ ]) -+ fi -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ fi - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+ dnl If an already present or preinstalled GNU gettext() is found, -+ dnl use it. But if this macro is used in GNU gettext, and GNU -+ dnl gettext is already preinstalled in libintl, we update this -+ dnl libintl. (Cf. the install rule in intl/Makefile.in.) -+ if test "$gt_cv_func_gnugettext_libc" = "yes" \ -+ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ -+ && test "$PACKAGE" != gettext-runtime \ -+ && test "$PACKAGE" != gettext-tools; }; then -+ gt_use_preinstalled_gnugettext=yes -+ else -+ dnl Reset the values set by searching for libintl. -+ LIBINTL= -+ LTLIBINTL= -+ INCINTL= -+ fi - --# serial 8 -+ ifelse(gt_included_intl, yes, [ -+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then -+ dnl GNU gettext is not found in the C library. -+ dnl Fall back on included GNU gettext library. -+ nls_cv_use_gnu_gettext=yes -+ fi -+ fi - --# 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... -+ if test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions used to generate GNU NLS library. -+ BUILD_INCLUDED_LIBINTL=yes -+ USE_INCLUDED_LIBINTL=yes -+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" -+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" -+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` -+ fi - -+ CATOBJEXT= -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions to use GNU gettext tools. -+ CATOBJEXT=.gmo -+ fi -+ ]) - --AC_PREREQ([2.52]) -+ if test -n "$INTL_MACOSX_LIBS"; then -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Some extra flags are needed during linking. -+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" -+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" -+ fi -+ fi - --# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow --# the ones we care about. --m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ AC_DEFINE(ENABLE_NLS, 1, -+ [Define to 1 if translation of program messages to the user's native language -+ is requested.]) -+ else -+ USE_NLS=no -+ fi -+ fi - --# 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_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 -+ AC_MSG_CHECKING([whether to use NLS]) -+ AC_MSG_RESULT([$USE_NLS]) -+ if test "$USE_NLS" = "yes"; then -+ AC_MSG_CHECKING([where the gettext function comes from]) -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -+ gt_source="external libintl" -+ else -+ gt_source="libc" -+ fi -+ else -+ gt_source="included intl directory" -+ fi -+ AC_MSG_RESULT([$gt_source]) -+ fi - --# 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 -+ if test "$USE_NLS" = "yes"; then - --_AM_IF_OPTION([no-define],, --[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -+ AC_MSG_CHECKING([how to link with libintl]) -+ AC_MSG_RESULT([$LIBINTL]) -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -+ fi - --# 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_MISSING_PROG(AMTAR, tar) --AM_PROG_INSTALL_SH --AM_PROG_INSTALL_STRIP --# 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 -+ dnl For backward compatibility. Some packages may be using this. -+ AC_DEFINE(HAVE_GETTEXT, 1, -+ [Define if the GNU gettext() function is already present or preinstalled.]) -+ AC_DEFINE(HAVE_DCGETTEXT, 1, -+ [Define if the GNU dcgettext() function is already present or preinstalled.]) -+ fi - --_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 --]) --]) -+ dnl We need to process the po/ directory. -+ POSUB=po -+ fi - --# Copyright 2002 Free Software Foundation, Inc. -+ ifelse(gt_included_intl, yes, [ -+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL -+ dnl to 'yes' because some of the testsuite requires it. -+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then -+ BUILD_INCLUDED_LIBINTL=yes -+ fi - --# 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. -+ dnl Make all variables we use known to autoconf. -+ AC_SUBST(BUILD_INCLUDED_LIBINTL) -+ AC_SUBST(USE_INCLUDED_LIBINTL) -+ AC_SUBST(CATOBJEXT) - --# 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. -+ dnl For backward compatibility. Some configure.ins may be using this. -+ nls_cv_header_intl= -+ nls_cv_header_libgt= - --# 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., 59 Temple Place - Suite 330, Boston, MA -+ dnl For backward compatibility. Some Makefiles may be using this. -+ DATADIRNAME=share -+ AC_SUBST(DATADIRNAME) - --# 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.6"]) -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INSTOBJEXT=.mo -+ AC_SUBST(INSTOBJEXT) - --# 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.6.3])]) -+ dnl For backward compatibility. Some Makefiles may be using this. -+ GENCAT=gencat -+ AC_SUBST(GENCAT) - --# Helper functions for option handling. -*- Autoconf -*- -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INTLOBJS= -+ if test "$USE_INCLUDED_LIBINTL" = yes; then -+ INTLOBJS="\$(GETTOBJS)" -+ fi -+ AC_SUBST(INTLOBJS) - --# Copyright 2001, 2002 Free Software Foundation, Inc. -+ dnl Enable libtool support if the surrounding package wishes it. -+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix -+ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) -+ ]) - --# 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. -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INTLLIBS="$LIBINTL" -+ AC_SUBST(INTLLIBS) - --# 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. -+ dnl Make all documented variables known to autoconf. -+ AC_SUBST(LIBINTL) -+ AC_SUBST(LTLIBINTL) -+ AC_SUBST(POSUB) -+]) - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. - --# serial 2 -+dnl Checks for all prerequisites of the intl subdirectory, -+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -+AC_DEFUN([AM_INTL_SUBDIR], -+[ -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl -+ AC_REQUIRE([AC_PROG_CC])dnl -+ AC_REQUIRE([AC_CANONICAL_HOST])dnl -+ AC_REQUIRE([gt_GLIBC2])dnl -+ AC_REQUIRE([AC_PROG_RANLIB])dnl -+ AC_REQUIRE([AC_ISC_POSIX])dnl -+ AC_REQUIRE([AC_HEADER_STDC])dnl -+ AC_REQUIRE([AC_C_CONST])dnl -+ AC_REQUIRE([bh_C_SIGNED])dnl -+ AC_REQUIRE([AC_C_INLINE])dnl -+ AC_REQUIRE([AC_TYPE_OFF_T])dnl -+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl -+ AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl -+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl -+ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl -+ AC_REQUIRE([gt_TYPE_WINT_T])dnl -+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) -+ AC_REQUIRE([gt_TYPE_INTMAX_T]) -+ AC_REQUIRE([gt_PRINTF_POSIX]) -+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl -+ AC_REQUIRE([AC_FUNC_MMAP])dnl -+ AC_REQUIRE([gl_GLIBC21])dnl -+ AC_REQUIRE([gt_INTDIV0])dnl -+ AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl -+ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl -+ AC_REQUIRE([gt_INTTYPES_PRI])dnl -+ AC_REQUIRE([gl_XSIZE])dnl -+ AC_REQUIRE([gt_INTL_MACOSX])dnl - --# _AM_MANGLE_OPTION(NAME) --# ----------------------- --AC_DEFUN([_AM_MANGLE_OPTION], --[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -+ AC_CHECK_TYPE([ptrdiff_t], , -+ [AC_DEFINE([ptrdiff_t], [long], -+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) -+ ]) -+ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -+stdlib.h string.h unistd.h sys/param.h]) -+ AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -+mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -+strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -+__fsetlocking]) -+ -+ dnl Use the _snprintf function only if it is declared (because on NetBSD it -+ dnl is defined as a weak alias of snprintf; we prefer to use the latter). -+ gt_CHECK_DECL(_snprintf, [#include ]) -+ gt_CHECK_DECL(_snwprintf, [#include ]) -+ -+ dnl Use the *_unlocked functions only if they are declared. -+ dnl (because some of them were defined without being declared in Solaris -+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built -+ dnl on Solaris 2.5.1 to run on Solaris 2.6). -+ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. -+ gt_CHECK_DECL(feof_unlocked, [#include ]) -+ gt_CHECK_DECL(fgets_unlocked, [#include ]) -+ gt_CHECK_DECL(getc_unlocked, [#include ]) -+ -+ case $gt_cv_func_printf_posix in -+ *yes) HAVE_POSIX_PRINTF=1 ;; -+ *) HAVE_POSIX_PRINTF=0 ;; -+ esac -+ AC_SUBST([HAVE_POSIX_PRINTF]) -+ if test "$ac_cv_func_asprintf" = yes; then -+ HAVE_ASPRINTF=1 -+ else -+ HAVE_ASPRINTF=0 -+ fi -+ AC_SUBST([HAVE_ASPRINTF]) -+ if test "$ac_cv_func_snprintf" = yes; then -+ HAVE_SNPRINTF=1 -+ else -+ HAVE_SNPRINTF=0 -+ fi -+ AC_SUBST([HAVE_SNPRINTF]) -+ if test "$ac_cv_func_wprintf" = yes; then -+ HAVE_WPRINTF=1 -+ else -+ HAVE_WPRINTF=0 -+ fi -+ AC_SUBST([HAVE_WPRINTF]) - --# _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_ICONV -+ AM_LANGINFO_CODESET -+ if test $ac_cv_header_locale_h = yes; then -+ gt_LC_MESSAGES -+ fi - --# _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)])]) -+ if test -n "$INTL_MACOSX_LIBS"; then -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ fi - --# _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])]) -+ dnl intl/plural.c is generated from intl/plural.y. It requires bison, -+ dnl because plural.y uses bison specific features. It requires at least -+ dnl bison-1.26 because earlier versions generate a plural.c that doesn't -+ dnl compile. -+ dnl bison is only needed for the maintainer (who touches plural.y). But in -+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put -+ dnl the rule in general Makefile. Now, some people carelessly touch the -+ dnl files or have a broken "make" program, hence the plural.c rule will -+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not -+ dnl present or too old. -+ AC_CHECK_PROGS([INTLBISON], [bison]) -+ if test -z "$INTLBISON"; then -+ ac_verc_fail=yes -+ else -+ dnl Found it, now check the version. -+ AC_MSG_CHECKING([version of bison]) -+changequote(<<,>>)dnl -+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ case $ac_prog_version in -+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -+changequote([,])dnl -+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -+ esac -+ AC_MSG_RESULT([$ac_prog_version]) -+ fi -+ if test $ac_verc_fail = yes; then -+ INTLBISON=: -+ fi -+]) - --# --# Check to make sure that the build environment is sane. --# - --# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. -+dnl Checks for special options needed on MacOS X. -+dnl Defines INTL_MACOSX_LIBS. -+AC_DEFUN([gt_INTL_MACOSX], -+[ -+ dnl Check for API introduced in MacOS X 10.2. -+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue], -+ gt_cv_func_CFPreferencesCopyAppValue, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ AC_TRY_LINK([#include ], -+ [CFPreferencesCopyAppValue(NULL, NULL)], -+ [gt_cv_func_CFPreferencesCopyAppValue=yes], -+ [gt_cv_func_CFPreferencesCopyAppValue=no]) -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, -+ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) -+ fi -+ dnl Check for API introduced in MacOS X 10.3. -+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], -+ [gt_cv_func_CFLocaleCopyCurrent=yes], -+ [gt_cv_func_CFLocaleCopyCurrent=no]) -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, -+ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) -+ fi -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" -+ fi -+ AC_SUBST([INTL_MACOSX_LIBS]) -+]) - --# 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. -+dnl gt_CHECK_DECL(FUNC, INCLUDES) -+dnl Check whether a function is declared. -+AC_DEFUN([gt_CHECK_DECL], -+[ -+ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, -+ [AC_TRY_COMPILE([$2], [ -+#ifndef $1 -+ char *p = (char *) $1; -+#endif -+], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) -+ if test $ac_cv_have_decl_$1 = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi -+ AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], -+ [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -+]) - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. - --# serial 3 -+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -+AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) - --# 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)]) -- --# -*- Autoconf -*- -+# glibc2.m4 serial 1 -+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - -+# Test for the GNU C Library, version 2.0 or newer. -+# From Bruno Haible. - --# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. -+AC_DEFUN([gt_GLIBC2], -+ [ -+ AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, -+ ac_cv_gnu_library_2, -+ [AC_EGREP_CPP([Lucky GNU user], -+ [ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ >= 2) -+ Lucky GNU user -+ #endif -+#endif -+ ], -+ ac_cv_gnu_library_2=yes, -+ ac_cv_gnu_library_2=no) -+ ] -+ ) -+ AC_SUBST(GLIBC2) -+ GLIBC2="$ac_cv_gnu_library_2" -+ ] -+) - --# 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. -+# glibc21.m4 serial 3 -+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl 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; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. -+# Test for the GNU C Library, version 2.1 or newer. -+# From Bruno Haible. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_DEFUN([gl_GLIBC21], -+ [ -+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, -+ ac_cv_gnu_library_2_1, -+ [AC_EGREP_CPP([Lucky GNU user], -+ [ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -+ Lucky GNU user -+ #endif -+#endif -+ ], -+ ac_cv_gnu_library_2_1=yes, -+ ac_cv_gnu_library_2_1=no) -+ ] -+ ) -+ AC_SUBST(GLIBC21) -+ GLIBC21="$ac_cv_gnu_library_2_1" -+ ] -+) - --# serial 3 -+# iconv.m4 serial AM4 (gettext-0.11.3) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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)]) -+dnl From Bruno Haible. - -+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -+[ -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) - --# 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 -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([iconv]) - ]) - --# AM_AUX_DIR_EXPAND -- --# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_DEFUN([AM_ICONV_LINK], -+[ -+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and -+ dnl those with the standalone portable GNU libiconv installed). - --# 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. -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - --# Rely on autoconf to set up CDPATH properly. --AC_PREREQ([2.50]) -+ dnl Add $INCICONV to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed libiconv and not disabled its use -+ dnl via --without-libiconv-prefix, he wants to use it. The first -+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. -+ am_save_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - --AC_DEFUN([AM_AUX_DIR_EXPAND], [ --# expand $ac_aux_dir to an absolute path --am_aux_dir=`cd $ac_aux_dir && pwd` -+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ -+ am_cv_func_iconv="no, consider installing GNU libiconv" -+ am_cv_lib_iconv=no -+ AC_TRY_LINK([#include -+#include ], -+ [iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);], -+ am_cv_func_iconv=yes) -+ if test "$am_cv_func_iconv" != yes; then -+ am_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIBICONV" -+ AC_TRY_LINK([#include -+#include ], -+ [iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);], -+ am_cv_lib_iconv=yes -+ am_cv_func_iconv=yes) -+ LIBS="$am_save_LIBS" -+ fi -+ ]) -+ if test "$am_cv_func_iconv" = yes; then -+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) -+ fi -+ if test "$am_cv_lib_iconv" = yes; then -+ AC_MSG_CHECKING([how to link with libiconv]) -+ AC_MSG_RESULT([$LIBICONV]) -+ else -+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV -+ dnl either. -+ CPPFLAGS="$am_save_CPPFLAGS" -+ LIBICONV= -+ LTLIBICONV= -+ fi -+ AC_SUBST(LIBICONV) -+ AC_SUBST(LTLIBICONV) - ]) - --# AM_PROG_INSTALL_SH --# ------------------ --# Define $install_sh. -+AC_DEFUN([AM_ICONV], -+[ -+ AM_ICONV_LINK -+ if test "$am_cv_func_iconv" = yes; then -+ AC_MSG_CHECKING([for iconv declaration]) -+ AC_CACHE_VAL(am_cv_proto_iconv, [ -+ AC_TRY_COMPILE([ -+#include -+#include -+extern -+#ifdef __cplusplus -+"C" -+#endif -+#if defined(__STDC__) || defined(__cplusplus) -+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -+#else -+size_t iconv(); -+#endif -+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") -+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) -+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` -+ AC_MSG_RESULT([$]{ac_t:- -+ }[$]am_cv_proto_iconv) -+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, -+ [Define as const if the declaration of iconv() needs const.]) -+ fi -+]) - --# Copyright 2001 Free Software Foundation, Inc. -+# intdiv0.m4 serial 1 (gettext-0.11.3) -+dnl Copyright (C) 2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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. -+dnl From Bruno Haible. - --# 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. -+AC_DEFUN([gt_INTDIV0], -+[ -+ AC_REQUIRE([AC_PROG_CC])dnl -+ AC_REQUIRE([AC_CANONICAL_HOST])dnl - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], -+ gt_cv_int_divbyzero_sigfpe, -+ [ -+ AC_TRY_RUN([ -+#include -+#include - --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)]) -+static void -+#ifdef __cplusplus -+sigfpe_handler (int sig) -+#else -+sigfpe_handler (sig) int sig; -+#endif -+{ -+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -+ exit (sig != SIGFPE); -+} - --# AM_PROG_INSTALL_STRIP -- --# Copyright 2001 Free Software Foundation, Inc. -+int x = 1; -+int y = 0; -+int z; -+int nan; - --# 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. -+int main () -+{ -+ signal (SIGFPE, sigfpe_handler); -+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -+ signal (SIGTRAP, sigfpe_handler); -+#endif -+/* Linux/SPARC yields signal SIGILL. */ -+#if defined (__sparc__) && defined (__linux__) -+ signal (SIGILL, sigfpe_handler); -+#endif - --# 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. -+ z = x / y; -+ nan = y / y; -+ exit (1); -+} -+], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, -+ [ -+ # Guess based on the CPU. -+ case "$host_cpu" in -+ alpha* | i[34567]86 | m68k | s390*) -+ gt_cv_int_divbyzero_sigfpe="guessing yes";; -+ *) -+ gt_cv_int_divbyzero_sigfpe="guessing no";; -+ esac -+ ]) -+ ]) -+ case "$gt_cv_int_divbyzero_sigfpe" in -+ *yes) value=1;; -+ *) value=0;; -+ esac -+ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, -+ [Define if integer division by zero raises signal SIGFPE.]) -+]) - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+# intmax.m4 serial 2 (gettext-0.14.2) -+dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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])]) -+dnl From Bruno Haible. -+dnl Test whether the system has the 'intmax_t' type, but don't attempt to -+dnl find a replacement if it is lacking. - --# serial 4 -*- Autoconf -*- -+AC_DEFUN([gt_TYPE_INTMAX_T], -+[ -+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) -+ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, -+ [AC_TRY_COMPILE([ -+#include -+#include -+#if HAVE_STDINT_H_WITH_UINTMAX -+#include -+#endif -+#if HAVE_INTTYPES_H_WITH_UINTMAX -+#include -+#endif -+], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) -+ if test $gt_cv_c_intmax_t = yes; then -+ AC_DEFINE(HAVE_INTMAX_T, 1, -+ [Define if you have the 'intmax_t' type in or .]) -+ fi -+]) - --# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. -+# inttypes-pri.m4 serial 1 (gettext-0.11.4) -+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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. -+dnl From Bruno Haible. - --# 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. -+# Define PRI_MACROS_BROKEN if exists and defines the PRI* -+# macros to non-string values. This is the case on AIX 4.3.3. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_DEFUN([gt_INTTYPES_PRI], -+[ -+ AC_REQUIRE([gt_HEADER_INTTYPES_H]) -+ if test $gt_cv_header_inttypes_h = yes; then -+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], -+ gt_cv_inttypes_pri_broken, -+ [ -+ AC_TRY_COMPILE([#include -+#ifdef PRId32 -+char *p = PRId32; -+#endif -+], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) -+ ]) -+ fi -+ if test "$gt_cv_inttypes_pri_broken" = yes; then -+ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, -+ [Define if exists and defines unusable PRI* macros.]) -+ fi -+]) - -+# inttypes.m4 serial 1 (gettext-0.11.4) -+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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... -+dnl From Paul Eggert. - -+# Define HAVE_INTTYPES_H if exists and doesn't clash with -+# . - -+AC_DEFUN([gt_HEADER_INTTYPES_H], -+[ -+ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, -+ [ -+ AC_TRY_COMPILE( -+ [#include -+#include ], -+ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) -+ ]) -+ if test $gt_cv_header_inttypes_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, -+ [Define if exists and doesn't clash with .]) -+ fi -+]) - --# _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 -+# inttypes_h.m4 serial 6 -+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --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=]) -+dnl From Paul Eggert. - --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 -+# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, -+# doesn't clash with , and declares uintmax_t. - -- 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` -+AC_DEFUN([gl_AC_HEADER_INTTYPES_H], -+[ -+ AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, -+ [AC_TRY_COMPILE( -+ [#include -+#include ], -+ [uintmax_t i = (uintmax_t) -1;], -+ gl_cv_header_inttypes_h=yes, -+ gl_cv_header_inttypes_h=no)]) -+ if test $gl_cv_header_inttypes_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, -+ [Define if exists, doesn't clash with , -+ and declares uintmax_t. ]) - fi -- for depmode in $am_compiler_list; do -- # 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. -- echo '#include "conftest.h"' > conftest.c -- echo 'int i;' > conftest.h -- echo "${am__include} ${am__quote}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=conftest.c object=conftest.o \ -- depfile=conftest.Po tmpdepfile=conftest.TPo \ -- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && -- grep conftest.h conftest.Po > /dev/null 2>&1 && -- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -- am_cv_$1_dependencies_compiler_type=$depmode -- break -- 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]) - ]) - -+# lcmessage.m4 serial 4 (gettext-0.14.2) -+dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. - --# AM_SET_DEPDIR --# ------------- --# Choose a directory name for dependency files. --# This macro is AC_REQUIREd in _AM_DEPENDENCIES --AC_DEFUN([AM_SET_DEPDIR], --[rm -f .deps 2>/dev/null --mkdir .deps 2>/dev/null --if test -d .deps; then -- DEPDIR=.deps --else -- # MS-DOS does not allow filenames that begin with a dot. -- DEPDIR=_deps --fi --rmdir .deps 2>/dev/null --AC_SUBST([DEPDIR]) --]) -+dnl Authors: -+dnl Ulrich Drepper , 1995. - -+# Check whether LC_MESSAGES is available in . - --# AM_DEP_TRACK --# ------------ --AC_DEFUN([AM_DEP_TRACK], --[AC_ARG_ENABLE(dependency-tracking, --[ --disable-dependency-tracking Speeds up one-time builds -- --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]) -+AC_DEFUN([gt_LC_MESSAGES], -+[ -+ AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, -+ [AC_TRY_LINK([#include ], [return LC_MESSAGES], -+ gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) -+ if test $gt_cv_val_LC_MESSAGES = yes; then -+ AC_DEFINE(HAVE_LC_MESSAGES, 1, -+ [Define if your file defines LC_MESSAGES.]) -+ fi - ]) - --# Generate code to set up dependency tracking. -*- Autoconf -*- -- --# Copyright 1999, 2000, 2001, 2002 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. -+# lib-ld.m4 serial 3 (gettext-0.13) -+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+dnl Subroutines of libtool.m4, -+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -+dnl with libtool.m4. - --#serial 2 -+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -+AC_DEFUN([AC_LIB_PROG_LD_GNU], -+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -+[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -+case `$LD -v 2>&1 /dev/null 2>&1; then -- dirpart=`AS_DIRNAME("$mf")` -+dnl From libtool-1.4. Sets the variable LD. -+AC_DEFUN([AC_LIB_PROG_LD], -+[AC_ARG_WITH(gnu-ld, -+[ --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([AC_PROG_CC])dnl -+AC_REQUIRE([AC_CANONICAL_HOST])dnl -+# Prepare PATH_SEPARATOR. -+# 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 -- continue -+ PATH_SEPARATOR=: - fi -- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue -- # Extract the definition of DEP_FILES from the Makefile without -- # running `make'. -- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` -- test -z "$DEPDIR" && continue -- # When using ansi2knr, U may be empty or an underscore; expand it -- U=`sed -n -e '/^U = / s///p' < "$mf"` -- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" -- # 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 -e ' -- /^DEP_FILES = .*\\\\$/ { -- s/^DEP_FILES = // -- :loop -- s/\\\\$// -- p -- n -- /\\\\$/ b loop -- p -- } -- /^DEP_FILES = / s/^DEP_FILES = //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"]) --]) -- --# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- -- --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -- --# serial 2 -- --# AM_MAKE_INCLUDE() --# ----------------- --# Check to see how make treats includes. --AC_DEFUN([AM_MAKE_INCLUDE], --[am_make=${MAKE-make} --cat > confinc << 'END' --doit: -- @echo done --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 | fgrep -v 'ing directory'`" = "done"; then -- am__include=include -- am__quote= -- _am_result=GNU -+ rm -f conf$$.sh - 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 -+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 GCC]) -+ 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. -+ [[\\/]* | [A-Za-z]:[\\/]*)] -+ [re_direlt='/[^/][^/]*/\.\./'] -+ # Canonicalize the path 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_SUBST(am__include) --AC_SUBST(am__quote) --AC_MSG_RESULT($_am_result) --rm -f confinc confmf -+AC_CACHE_VAL(acl_cv_path_LD, -+[if test -z "$LD"; then -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" -+ for ac_dir in $PATH; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -+ acl_cv_path_LD="$ac_dir/$ac_prog" -+ # Check to see if the program is GNU ld. I'd rather use --version, -+ # but apparently some GNU ld's only accept -v. -+ # Break only if it was the GNU/non-GNU ld that we prefer. -+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in -+ *GNU* | *'with BFD'*) -+ test "$with_gnu_ld" != no && break ;; -+ *) -+ test "$with_gnu_ld" != yes && break ;; -+ esac -+ fi -+ done -+ IFS="$ac_save_ifs" -+else -+ acl_cv_path_LD="$LD" # Let the user override the test with a path. -+fi]) -+LD="$acl_cv_path_LD" -+if test -n "$LD"; then -+ AC_MSG_RESULT($LD) -+else -+ AC_MSG_RESULT(no) -+fi -+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -+AC_LIB_PROG_LD_GNU - ]) - --# AM_CONDITIONAL -*- Autoconf -*- -- --# Copyright 1997, 2000, 2001 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. -+# lib-link.m4 serial 6 (gettext-0.14.3) -+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl 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; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. -+dnl From Bruno Haible. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_PREREQ(2.50) - --# serial 5 -+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -+dnl augments the CPPFLAGS variable. -+AC_DEFUN([AC_LIB_LINKFLAGS], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ define([Name],[translit([$1],[./-], [___])]) -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ -+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) -+ ac_cv_lib[]Name[]_libs="$LIB[]NAME" -+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" -+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME" -+ ]) -+ LIB[]NAME="$ac_cv_lib[]Name[]_libs" -+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" -+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -+ AC_SUBST([LIB]NAME) -+ AC_SUBST([LTLIB]NAME) -+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the -+ dnl results of this search when this library appears as a dependency. -+ HAVE_LIB[]NAME=yes -+ undefine([Name]) -+ undefine([NAME]) -+]) - --AC_PREREQ(2.52) -+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -+dnl searches for libname and the libraries corresponding to explicit and -+dnl implicit dependencies, together with the specified include files and -+dnl the ability to compile and link the specified testcode. If found, it -+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ define([Name],[translit([$1],[./-], [___])]) -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - --# AM_CONDITIONAL(NAME, SHELL-CONDITION) --# ------------------------------------- --# Define a conditional. --AC_DEFUN([AM_CONDITIONAL], --[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])]) -+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) - --# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- -+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed lib[]Name and not disabled its use -+ dnl via --without-lib[]Name-prefix, he wants to use it. -+ ac_save_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - --# serial 46 AC_PROG_LIBTOOL -+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ -+ ac_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIB[]NAME" -+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) -+ LIBS="$ac_save_LIBS" -+ ]) -+ if test "$ac_cv_lib[]Name" = yes; then -+ HAVE_LIB[]NAME=yes -+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) -+ AC_MSG_CHECKING([how to link with lib[]$1]) -+ AC_MSG_RESULT([$LIB[]NAME]) -+ else -+ HAVE_LIB[]NAME=no -+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need -+ dnl $INC[]NAME either. -+ CPPFLAGS="$ac_save_CPPFLAGS" -+ LIB[]NAME= -+ LTLIB[]NAME= -+ fi -+ AC_SUBST([HAVE_LIB]NAME) -+ AC_SUBST([LIB]NAME) -+ AC_SUBST([LTLIB]NAME) -+ undefine([Name]) -+ undefine([NAME]) -+]) - --AC_DEFUN([AC_PROG_LIBTOOL], --[AC_REQUIRE([AC_LIBTOOL_SETUP])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_DEFUN([AC_LIBTOOL_SETUP], --[AC_PREREQ(2.13)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 --AC_REQUIRE([AC_OBJEXT])dnl --AC_REQUIRE([AC_EXEEXT])dnl --dnl -- --_LT_AC_PROG_ECHO_BACKSLASH --# 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_CHECK_TOOL(RANLIB, ranlib, :) --AC_CHECK_TOOL(STRIP, strip, :) -- --ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) --ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], --enable_win32_dll=yes, enable_win32_dll=no) -- --AC_ARG_ENABLE(libtool-lock, -- [ --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 --*-*-irix6*) -- # Find out which ABI we are using. -- echo '[#]line __oline__ "configure"' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- 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 -- 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_SAVE -- AC_LANG_C -- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) -- AC_LANG_RESTORE]) -- 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 -- ;; -- --ifdef([AC_PROVIDE_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) -- -- # recent cygwin and mingw systems supply a stub DllMain which the user -- # can override, but on older systems we have to supply one -- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, -- [AC_TRY_LINK([], -- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); -- DllMain (0, 0, 0);], -- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) -- -- case $host/$CC in -- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) -- # old mingw systems require "-dll" to link a DLL, while more recent ones -- # require "-mdll" -- SAVE_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -mdll" -- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, -- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) -- CFLAGS="$SAVE_CFLAGS" ;; -- *-*-cygwin* | *-*-pw32*) -- # cygwin systems need to pass --dll to the linker, and not link -- # crt.o which will require a WinMain@16 definition. -- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; -- esac -- ;; -+dnl Determine the platform dependent parameters needed to use rpath: -+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -+dnl hardcode_direct, hardcode_minus_L. -+AC_DEFUN([AC_LIB_RPATH], -+[ -+ dnl Tell automake >= 1.10 to complain if config.rpath is missing. -+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) -+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS -+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld -+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host -+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir -+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ -+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ -+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh -+ . ./conftest.sh -+ rm -f ./conftest.sh -+ acl_cv_rpath=done - ]) --esac -- --_LT_AC_LTCONFIG_HACK -- -+ wl="$acl_cv_wl" -+ libext="$acl_cv_libext" -+ shlibext="$acl_cv_shlibext" -+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" -+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" -+ hardcode_direct="$acl_cv_hardcode_direct" -+ hardcode_minus_L="$acl_cv_hardcode_minus_L" -+ dnl Determine whether the user wants rpath handling at all. -+ AC_ARG_ENABLE(rpath, -+ [ --disable-rpath do not hardcode runtime library paths], -+ :, enable_rpath=yes) - ]) - --# AC_LIBTOOL_HEADER_ASSERT --# ------------------------ --AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], --[AC_CACHE_CHECK([whether $CC supports assert without backlinking], -- [lt_cv_func_assert_works], -- [case $host in -- *-*-solaris*) -- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then -- case `$CC --version 2>/dev/null` in -- [[12]].*) lt_cv_func_assert_works=no ;; -- *) lt_cv_func_assert_works=yes ;; -- esac -- fi -- ;; -- esac]) -- --if test "x$lt_cv_func_assert_works" = xyes; then -- AC_CHECK_HEADERS(assert.h) --fi --])# AC_LIBTOOL_HEADER_ASSERT -- --# _LT_AC_CHECK_DLFCN --# -------------------- --AC_DEFUN([_LT_AC_CHECK_DLFCN], --[AC_CHECK_HEADERS(dlfcn.h) --])# _LT_AC_CHECK_DLFCN -- --# 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]) --AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl -- --# 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 the above into a raw symbol and a C symbol. --symxfrm='\1 \2\3 \3' -- --# Transform an extracted symbol line into a proper C declaration --lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" -- --# Transform an extracted symbol line into symbol name and symbol address --lt_cv_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 -- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -- ;; --irix*) -- symcode='[[BCDEGRST]]' -- ;; --solaris* | sysv5*) -- symcode='[[BDT]]' -- ;; --sysv4) -- symcode='[[DFNSTU]]' -- ;; --esac -- --# Handle CRLF in mingw tool chain --opt_cr= --case $host_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. --if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then -- symcode='[[ABCDGISTW]]' --fi -- --# Try without a prefix undercore, then with it. --for ac_symprfx in "" "_"; do -- -- # 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" -+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -+AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -+[ -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_LIB_ARG_WITH([lib$1-prefix], -+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib -+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) - else -- rm -f "$nlist"T -- fi -- -- # Make sure that we snagged all the symbols we need. -- if egrep ' nm_test_var$' "$nlist" >/dev/null; then -- if egrep ' 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_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' -- -- cat <> conftest.$ac_ext --#if defined (__STDC__) && __STDC__ --# define lt_ptr void * --#else --# define lt_ptr char * --# define const --#endif -- --/* The mapping between symbol names and symbols. */ --const struct { -- const char *name; -- lt_ptr address; --} --lt_preloaded_symbols[[]] = --{ --EOF -- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext -- cat <<\EOF >> conftest.$ac_ext -- {0, (lt_ptr) 0} --}; -- --#ifdef __cplusplus --} --#endif --EOF -- # Now try linking the two files. -- mv conftest.$ac_objext conftstm.$ac_objext -- save_LIBS="$LIBS" -- save_CFLAGS="$CFLAGS" -- LIBS="conftstm.$ac_objext" -- CFLAGS="$CFLAGS$no_builtin_flag" -- if AC_TRY_EVAL(ac_link) && test -s conftest; then -- pipe_works=yes -- fi -- LIBS="$save_LIBS" -- CFLAGS="$save_CFLAGS" -- else -- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC -- fi -- else -- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC -- fi -- else -- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC -- fi -- else -- echo "$progname: failed program was:" >&AC_FD_CC -- 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 --]) --global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" --if test -z "$lt_cv_sys_global_symbol_pipe"; then -- global_symbol_to_cdecl= -- global_symbol_to_c_name_address= --else -- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" -- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" --fi --if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; --then -- AC_MSG_RESULT(failed) --else -- AC_MSG_RESULT(ok) --fi --]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -- --# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR --# --------------------------------- --AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], --[# Find the correct PATH separator. Usually this is `:', but --# DJGPP uses `;' like DOS. --if test "X${PATH_SEPARATOR+set}" != Xset; then -- UNAME=${UNAME-`uname 2>/dev/null`} -- case X$UNAME in -- *-DOS) lt_cv_sys_path_separator=';' ;; -- *) lt_cv_sys_path_separator=':' ;; -- esac -- PATH_SEPARATOR=$lt_cv_sys_path_separator --fi --])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR -- --# _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], --[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], -- [AC_DIVERT_PUSH(NOTICE)]) --_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR -- --# 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 && -- 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. -- -- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- 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="$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) --AC_DIVERT_POP --])# _LT_AC_PROG_ECHO_BACKSLASH -- --# _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], --[if test "$cross_compiling" = yes; then : -- [$4] --else -- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -- 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); */ -- } -- -- exit (status); --}] --EOF -- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) 2>/dev/null -- lt_status=$? -- case x$lt_status in -- x$lt_dlno_uscore) $1 ;; -- x$lt_dlneed_uscore) $2 ;; -- x$lt_unknown|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], --[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 -- ;; -- -- cygwin* | mingw* | pw32*) -- lt_cv_dlopen="LoadLibrary" -- lt_cv_dlopen_libs= -- ;; -- -- *) -- 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" -- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -- -- save_LDFLAGS="$LDFLAGS" -- 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 -- LDFLAGS="$LDFLAGS $link_static_flag" -- 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_DEFUN([_LT_AC_LTCONFIG_HACK], --[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --Xsed='sed -e s/^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' -- --# Constants: --rm="rm -f" -- --# Global variables: --default_ofile=libtool --can_build_shared=yes -- --# All known linkers require a `.a' archive for static linking (except M$VC, --# which needs '.lib'). --libext=a --ltmain="$ac_aux_dir/ltmain.sh" --ofile="$default_ofile" --with_gnu_ld="$lt_cv_prog_gnu_ld" --need_locks="$enable_libtool_lock" -- --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 "$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 "$OBJDUMP" && OBJDUMP=objdump --test -z "$RANLIB" && RANLIB=: --test -z "$STRIP" && STRIP=: --test -z "$ac_objext" && ac_objext=o -- --if test x"$host" != x"$build"; then -- ac_tool_prefix=${host_alias}- --else -- ac_tool_prefix= --fi -- --# Transform linux* to *-*-linux-gnu*, to support old configure scripts. --case $host_os in --linux-gnu*) ;; --linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` --esac -- --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 -- --# 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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -- ;; -- *) -- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -- ;; -- esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" --fi -- --# Allow CC to be a program name with arguments. --set dummy $CC --compiler="[$]2" -- --AC_MSG_CHECKING([for objdir]) --rm -f .libs 2>/dev/null --mkdir .libs 2>/dev/null --if test -d .libs; then -- objdir=.libs --else -- # MS-DOS does not allow filenames that begin with a dot. -- objdir=_libs --fi --rmdir .libs 2>/dev/null --AC_MSG_RESULT($objdir) -- -- --AC_ARG_WITH(pic, --[ --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 -- --# We assume here that the value for lt_cv_prog_cc_pic will not be cached --# in isolation, and that seeing it set (from the cache) indicates that --# the associated values are set (in the cache) correctly too. --AC_MSG_CHECKING([for $compiler option to produce PIC]) --AC_CACHE_VAL(lt_cv_prog_cc_pic, --[ lt_cv_prog_cc_pic= -- lt_cv_prog_cc_shlib= -- lt_cv_prog_cc_wl= -- lt_cv_prog_cc_static= -- lt_cv_prog_cc_no_builtin= -- lt_cv_prog_cc_can_build_shared=$can_build_shared -- -- if test "$GCC" = yes; then -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-static' -- -- case $host_os in -- aix*) -- # Below there is a dirty hack to force normal static linking with -ldl -- # The problem is because libdl dynamically linked with both libc and -- # libC (AIX C++ library), which obviously doesn't included in libraries -- # list by gcc. This cause undefined symbols with -static flags. -- # This hack allows C programs to be linked with "-static -ldl", but -- # not sure about C++ programs. -- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" -- ;; -- 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' -- ;; -- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) -- # PIC is the default for these OSes. -- ;; -- darwin* | rhapsody*) -- # PIC is the default on this platform -- # Common symbols not allowed in MH_DYLIB files -- lt_cv_prog_cc_pic='-fno-common' -- ;; -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- sysv4*MP*) -- if test -d /usr/nec; then -- lt_cv_prog_cc_pic=-Kconform_pic -- fi -- ;; -- *) -- lt_cv_prog_cc_pic='-fPIC' -- ;; -- esac -- else -- # PORTME Check for PIC flags for the system compiler. -- case $host_os in -- aix3* | aix4* | aix5*) -- lt_cv_prog_cc_wl='-Wl,' -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- lt_cv_prog_cc_static='-Bstatic' -- else -- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' -- fi -- ;; -- -- hpux9* | hpux10* | hpux11*) -- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" -- lt_cv_prog_cc_pic='+Z' -- ;; -- -- irix5* | irix6*) -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- # PIC (with -KPIC) is the default. -- ;; -- -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- -- newsos6) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- osf3* | osf4* | osf5*) -- # All OSF/1 code is PIC. -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- ;; -- -- sco3.2v5*) -- lt_cv_prog_cc_pic='-Kpic' -- lt_cv_prog_cc_static='-dn' -- lt_cv_prog_cc_shlib='-belf' -- ;; -- -- solaris*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Wl,' -- ;; -- -- sunos4*) -- lt_cv_prog_cc_pic='-PIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Qoption ld ' -- ;; -- -- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- if test "x$host_vendor" = xsni; then -- lt_cv_prog_cc_wl='-LD' -- else -- lt_cv_prog_cc_wl='-Wl,' -- fi -- ;; -- -- uts4*) -- lt_cv_prog_cc_pic='-pic' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec ;then -- lt_cv_prog_cc_pic='-Kconform_pic' -- lt_cv_prog_cc_static='-Bstatic' -- fi -- ;; -- -- *) -- lt_cv_prog_cc_can_build_shared=no -- ;; -- esac -- fi --]) --if test -z "$lt_cv_prog_cc_pic"; then -- AC_MSG_RESULT([none]) --else -- AC_MSG_RESULT([$lt_cv_prog_cc_pic]) -- -- # Check to make sure the pic_flag actually works. -- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) -- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" -- AC_TRY_COMPILE([], [], [dnl -- case $host_os in -- hpux9* | hpux10* | hpux11*) -- # On HP-UX, both CC and GCC only warn that PIC is supported... then -- # they create non-PIC objects. So, if there were any warnings, we -- # assume that PIC is not supported. -- if test -s conftest.err; then -- lt_cv_prog_cc_pic_works=no -- else -- lt_cv_prog_cc_pic_works=yes -- fi -- ;; -- *) -- lt_cv_prog_cc_pic_works=yes -- ;; -- esac -- ], [dnl -- lt_cv_prog_cc_pic_works=no -- ]) -- CFLAGS="$save_CFLAGS" -- ]) -- -- if test "X$lt_cv_prog_cc_pic_works" = Xno; then -- lt_cv_prog_cc_pic= -- lt_cv_prog_cc_can_build_shared=no -- else -- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" -- fi -- -- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) --fi -- --# Check for any special shared library compilation flags. --if test -n "$lt_cv_prog_cc_shlib"; then -- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) -- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : -- else -- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) -- lt_cv_prog_cc_can_build_shared=no -- fi --fi -- --AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) --AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl -- lt_cv_prog_cc_static_works=no -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" -- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) -- LDFLAGS="$save_LDFLAGS" --]) -- --# Belt *and* braces to stop my trousers falling down: --test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= --AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) -- --pic_flag="$lt_cv_prog_cc_pic" --special_shlib_compile_flags="$lt_cv_prog_cc_shlib" --wl="$lt_cv_prog_cc_wl" --link_static_flag="$lt_cv_prog_cc_static" --no_builtin_flag="$lt_cv_prog_cc_no_builtin" --can_build_shared="$lt_cv_prog_cc_can_build_shared" -- -- --# Check to see if options -o and -c are simultaneously supported by compiler --AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) --AC_CACHE_VAL([lt_cv_compiler_c_o], [ --$rm -r conftest 2>/dev/null --mkdir conftest --cd conftest --echo "int some_variable = 0;" > conftest.$ac_ext --mkdir out --# According to Tom Tromey, Ian Lance Taylor reported there are C compilers --# that will create temporary files in the current directory regardless of --# the output directory. Thus, making CWD read-only will cause this test --# to fail, enabling locking or at least warning the user not to do parallel --# builds. --chmod -w . --save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" --compiler_c_o=no --if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 -- if test -s out/conftest.err; then -- lt_cv_compiler_c_o=no -- else -- lt_cv_compiler_c_o=yes -- fi --else -- # Append any errors to the config.log. -- cat out/conftest.err 1>&AC_FD_CC -- lt_cv_compiler_c_o=no --fi --CFLAGS="$save_CFLAGS" --chmod u+w . --$rm conftest* out/* --rmdir out --cd .. --rmdir conftest --$rm -r conftest 2>/dev/null --]) --compiler_c_o=$lt_cv_compiler_c_o --AC_MSG_RESULT([$compiler_c_o]) -- --if test x"$compiler_c_o" = x"yes"; then -- # Check to see if we can write to a .lo -- AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) -- AC_CACHE_VAL([lt_cv_compiler_o_lo], [ -- lt_cv_compiler_o_lo=no -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -c -o conftest.lo" -- save_objext="$ac_objext" -- ac_objext=lo -- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- lt_cv_compiler_o_lo=no -- else -- lt_cv_compiler_o_lo=yes -- fi -- ]) -- ac_objext="$save_objext" -- CFLAGS="$save_CFLAGS" -- ]) -- compiler_o_lo=$lt_cv_compiler_o_lo -- AC_MSG_RESULT([$compiler_o_lo]) --else -- compiler_o_lo=no --fi -- --# Check to see if we can do hard links to lock some files if needed --hard_links="nottested" --if test "$compiler_c_o" = 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 -- --if test "$GCC" = yes; then -- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler -- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) -- echo "int some_variable = 0;" > conftest.$ac_ext -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" -- compiler_rtti_exceptions=no -- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- compiler_rtti_exceptions=no -- else -- compiler_rtti_exceptions=yes -- fi -- ]) -- CFLAGS="$save_CFLAGS" -- AC_MSG_RESULT([$compiler_rtti_exceptions]) -- -- if test "$compiler_rtti_exceptions" = "yes"; then -- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' -- else -- no_builtin_flag=' -fno-builtin' -- fi --fi -- --# See if the linker supports building shared libraries. --AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) -- --allow_undefined_flag= --no_undefined_flag= --need_lib_prefix=unknown --need_version=unknown --# when you set need_version to no, make sure it does not cause -set_version --# flags to be left without arguments --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_into_libs=no --hardcode_libdir_flag_spec= --hardcode_libdir_separator= --hardcode_direct=no --hardcode_minus_L=no --hardcode_shlibpath_var=unsupported --runpath_var= --link_all_deplibs=unknown --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 egrep regular expression 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= -- --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 -- ;; --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}' -- -- # See if GNU ld supports shared libraries. -- case $host_os in -- aix3* | aix4* | aix5*) -- # On AIX, the GNU linker is very broken -- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. -- 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 -- ;; -- -- 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 use -- # them. -- ld_shlibs=no -- ;; -- -- beos*) -- if $LD --help 2>&1 | egrep ': 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*) -- # 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=yes -- -- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ -- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ -- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ -- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ -- else $CC -o impgen impgen.c ; fi)~ -- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' -- -- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' -- -- # cygwin and mingw dlls have different entry points and sets of symbols -- # to exclude. -- # FIXME: what about values for MSVC? -- dll_entry=__cygwin_dll_entry@12 -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ -- case $host_os in -- mingw*) -- # mingw values -- dll_entry=_DllMainCRTStartup@12 -- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ -- ;; -- esac -- -- # mingw and cygwin differ, and it's simplest to just exclude the union -- # of the two symbol sets. -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 -- -- # recent cygwin and mingw systems supply a stub DllMain which the user -- # can override, but on older systems we have to supply one (in ltdll.c) -- if test "x$lt_cv_need_dllmain" = "xyes"; then -- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " -- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ -- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' -- else -- ltdll_obj= -- ltdll_cmds= -- fi -- -- # Extract the symbol export list from an `--export-all' def file, -- # then regenerate the def file from the symbol export list, so that -- # the compiled dll only exports the symbol export list. -- # Be careful not to strip the DATA tag left be newer dlltools. -- export_symbols_cmds="$ltdll_cmds"' -- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ -- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' -- -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is. -- # If DATA tags from a recent dlltool are present, honour them! -- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname-def; -- else -- echo EXPORTS > $output_objdir/$soname-def; -- _lt_hint=1; -- cat $export_symbols | while read symbol; do -- set dummy \$symbol; -- case \[$]# in -- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; -- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; -- esac; -- _lt_hint=`expr 1 + \$_lt_hint`; -- done; -- fi~ -- '"$ltdll_cmds"' -- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ -- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ -- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' -- ;; -- -- 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 -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- fi -- ;; -- -- solaris* | sysv5*) -- if $LD -v 2>&1 | egrep '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 | egrep ': 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 -- ;; -- -- 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 | egrep ': 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" = yes; then -- runpath_var=LD_RUN_PATH -- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' -- export_dynamic_flag_spec='${wl}--export-dynamic' -- case $host_os in -- cygwin* | mingw* | pw32*) -- # dlltool doesn't understand --whole-archive et. al. -- whole_archive_flag_spec= -- ;; -- *) -- # ancient GNU ld didn't support --whole-archive et. al. -- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then -- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- whole_archive_flag_spec= -- fi -- ;; -- esac -- 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 "$link_static_flag"; 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 -- 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. -- -- hardcode_direct=yes -- archive_cmds='' -- hardcode_libdir_separator=':' -- if test "$GCC" = yes; then -- case $host_os in aix4.[[012]]|aix4.[[012]].*) -- 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' -- else -- # not using gcc -- if test "$host_cpu" = ia64; then -- shared_flag='${wl}-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 can do strange things, 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' -- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' -- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" -- else -- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' -- # Warning - without using the other run time loading flags, -- # -berok will link without error, but may produce a broken library. -- allow_undefined_flag='${wl}-berok' -- # This is a bit strange, but is similar to how AIX traditionally builds -- # it's shared libraries. -- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $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 -- ;; -- -- 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 -- # 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"`' -- ;; -- -- darwin* | rhapsody*) -- case "$host_os" in -- rhapsody* | darwin1.[[012]]) -- allow_undefined_flag='-undefined suppress' -- ;; -- *) # Darwin 1.3 on -- allow_undefined_flag='-flat_namespace -undefined suppress' -- ;; -- esac -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' -- # We need to add '_' to the symbols in $export_symbols first -- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- whole_archive_flag_spec='-all_load $convenience' -- ;; -- -- 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*) -- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- ;; -- -- hpux9* | hpux10* | hpux11*) -- case $host_os in -- hpux9*) 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' ;; -- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; -- esac -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_separator=: -- hardcode_direct=yes -- hardcode_minus_L=yes # Not in the search PATH, but as the default -- # location of the library. -- export_dynamic_flag_spec='${wl}-E' -- ;; -- -- irix5* | irix6*) -- 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' -- 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 $linker_flags' -- 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 $linker_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 "-exported_symbol " >> $lib.exp; echo "\$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 ${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=: -- ;; -- -- sco3.2v5*) -- 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 -- export_dynamic_flag_spec='${wl}-Bexport' -- ;; -- -- solaris*) -- # gcc --version < 3.0 without binutils cannot create self contained -- # shared libraries reliably, requiring libgcc.a to resolve some of -- # the object symbols generated in some cases. Libraries that use -- # assert need libgcc.a to resolve __eprintf, for example. Linking -- # a copy of libgcc.a into every shared library to guarantee resolving -- # such symbols causes other problems: According to Tim Van Holder -- # , C++ libraries end up with a separate -- # (to the application) exception stack for one thing. -- no_undefined_flag=' -z defs' -- if test "$GCC" = yes; then -- case `$CC --version 2>/dev/null` in -- [[12]].*) -- cat <&2 -- --*** Warning: Releases of GCC earlier than version 3.0 cannot reliably --*** create self contained shared libraries on Solaris systems, without --*** introducing a dependency on libgcc.a. Therefore, libtool is disabling --*** -no-undefined support, which will at least allow you to build shared --*** libraries. However, you may find that when you link such libraries --*** into an application without using GCC, you have to manually add --*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to --*** upgrade to a newer version of GCC. Another option is to rebuild your --*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. -- --EOF -- no_undefined_flag= -- ;; -- esac -- fi -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_shlibpath_var=no -- case $host_os in -- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -- *) # Supported since Solaris 2.6 (maybe 2.5.1?) -- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; -- 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) -- if test "x$host_vendor" = xsno; then -- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes # is this really true??? -- else -- 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 -- fi -- 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' -- ;; -- -- sysv5*) -- no_undefined_flag=' -z text' -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec= -- hardcode_shlibpath_var=no -- runpath_var='LD_RUN_PATH' -- ;; -- -- uts4*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -- -- dgux*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -- -- 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.2uw2*) -- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes -- hardcode_minus_L=no -- hardcode_shlibpath_var=no -- hardcode_runpath_var=yes -- runpath_var=LD_RUN_PATH -- ;; -- -- sysv5uw7* | unixware7*) -- no_undefined_flag='${wl}-z ${wl}text' -- if test "$GCC" = yes; then -- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- else -- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- fi -- runpath_var='LD_RUN_PATH' -- hardcode_shlibpath_var=no -- ;; -- -- *) -- ld_shlibs=no -- ;; -- esac --fi --AC_MSG_RESULT([$ld_shlibs]) --test "$ld_shlibs" = no && can_build_shared=no -- --# Check hardcoding attributes. --AC_MSG_CHECKING([how to hardcode library paths into programs]) --hardcode_action= --if test -n "$hardcode_libdir_flag_spec" || \ -- test -n "$runpath_var"; 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 "$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 --AC_MSG_RESULT([$hardcode_action]) -- --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 -- AC_MSG_RESULT([no]) --fi -- --reload_cmds='$LD$reload_flag -o $output$reload_objs' --test -z "$deplibs_check_method" && deplibs_check_method=unknown -- --# PORTME Fill in your ld.so characteristics --AC_MSG_CHECKING([dynamic linker characteristics]) --library_names_spec= --libname_spec='lib$name' --soname_spec= --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" --sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -- --case $host_os in --aix3*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix $libname.a' -- shlibpath_var=LIBPATH -- -- # AIX has no versioning support, so we append a major version to the name. -- soname_spec='${libname}${release}.so$major' -- ;; -- --aix4* | aix5*) -- version_type=linux -- if test "$host_cpu" = ia64; then -- # AIX 5 supports IA64 -- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' -- 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}.so$versuffix ${libname}${release}.so$major $libname.so' -- 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}.so$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}.so' -- dynamic_linker="$host_os ld.so" -- shlibpath_var=LIBRARY_PATH -- ;; -- --bsdi4*) -- version_type=linux -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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" -- export_dynamic_flag_spec=-rdynamic -- # 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 -- need_version=no -- need_lib_prefix=no -- case $GCC,$host_os in -- yes,cygwin*) -- library_names_spec='$libname.dll.a' -- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' -- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ -- dldir=$destdir/`dirname \$dlpath`~ -- test -d \$dldir || mkdir -p \$dldir~ -- $install_prog .libs/$dlname \$dldir/$dlname' -- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ -- dlpath=$dir/\$dldll~ -- $rm \$dlpath' -- ;; -- yes,mingw*) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' -- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` -- ;; -- yes,pw32*) -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' -- ;; -- *) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $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 -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' -- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' -- shlibpath_overrides_runpath=yes -- shlibpath_var=DYLD_LIBRARY_PATH -- ;; -- --freebsd1*) -- dynamic_linker=no -- ;; -- --freebsd*) -- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` -- version_type=freebsd-$objformat -- case $version_type in -- freebsd-elf*) -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- need_version=no -- need_lib_prefix=no -- ;; -- freebsd-*) -- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' -- need_version=yes -- ;; -- esac -- shlibpath_var=LD_LIBRARY_PATH -- case $host_os in -- freebsd2*) -- shlibpath_overrides_runpath=yes -- ;; -- *) -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- esac -- ;; -- --gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' -- soname_spec='${libname}${release}.so$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. -- dynamic_linker="$host_os dld.sl" -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' -- soname_spec='${libname}${release}.sl$major' -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -- --irix5* | irix6*) -- version_type=irix -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' -- case $host_os in -- irix5*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 ") 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}" -- ;; -- --# No shared lib support for Linux oldld, aout, or coff. --linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) -- dynamic_linker=no -- ;; -- --# This must be Linux ELF. --linux-gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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 -- -- # 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' -- ;; -- --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}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- dynamic_linker='NetBSD (a.out) ld.so' -- else -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' -- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- ;; -- --openbsd*) -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- 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 -- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --os2*) -- libname_spec='$name' -- need_lib_prefix=no -- library_names_spec='$libname.dll $libname.a' -- dynamic_linker='OS/2 ld.exe' -- shlibpath_var=LIBPATH -- ;; -- --osf3* | osf4* | osf5*) -- version_type=osf -- need_version=no -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- 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" -- ;; -- --sco3.2v5*) -- version_type=osf -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --solaris*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- case $host_vendor in -- sni) -- shlibpath_overrides_runpath=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 -- ;; -- --uts4*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --dgux*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --sysv4*MP*) -- if test -d /usr/nec ;then -- version_type=linux -- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' -- soname_spec='$libname.so.$major' -- shlibpath_var=LD_LIBRARY_PATH -- fi -- ;; -- --*) -- dynamic_linker=no -- ;; --esac --AC_MSG_RESULT([$dynamic_linker]) --test "$dynamic_linker" = no && can_build_shared=no -- --# Report the final consequences. --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*) -- 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]) -- --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 -- --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_DLOPEN_SELF -- --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. -- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) -- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], -- [$rm conftest* -- echo 'static int dummy;' > conftest.$ac_ext -- -- if AC_TRY_EVAL(ac_compile); then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$lt_cv_prog_cc_wl -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- save_allow_undefined_flag=$allow_undefined_flag -- allow_undefined_flag= -- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) -- then -- lt_cv_archive_cmds_need_lc=no -- else -- lt_cv_archive_cmds_need_lc=yes -- fi -- allow_undefined_flag=$save_allow_undefined_flag -- else -- cat conftest.err 1>&5 -- fi]) -- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) -- ;; -- esac --fi --need_lc=${lt_cv_archive_cmds_need_lc-yes} -- --# The second 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 -- : --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. -- test -f Makefile && make "$ltmain" --fi -- --if test -f "$ltmain"; then -- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 -- $rm -f "${ofile}T" -- -- echo creating $ofile -- -- # 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 CC LD LN_S NM SHELL \ -- reload_flag reload_cmds wl \ -- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ -- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ -- library_names_spec soname_spec \ -- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ -- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ -- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ -- old_striplib striplib file_magic_cmd export_symbols_cmds \ -- deplibs_check_method allow_undefined_flag no_undefined_flag \ -- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ -- global_symbol_to_c_name_address \ -- hardcode_libdir_flag_spec hardcode_libdir_separator \ -- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do -- -- case $var in -- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ -- old_postinstall_cmds | old_postuninstall_cmds | \ -- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ -- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ -- postinstall_cmds | postuninstall_cmds | \ -- finish_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 -- -- cat <<__EOF__ > "${ofile}T" --#! $SHELL -- --# `$echo "$ofile" | 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-2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. -- --# Sed that helps us avoid accidentally triggering echo(1) options like -n. --Xsed="sed -e s/^X//" -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi -- --# ### 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=$need_lc -- --# Whether or not to optimize for fast installation. --fast_install=$enable_fast_install -- --# The host system. --host_alias=$host_alias --host=$host -- --# An echo program that does not interpret backslashes. --echo=$lt_echo -- --# The archiver. --AR=$lt_AR --AR_FLAGS=$lt_AR_FLAGS -- --# The default C compiler. --CC=$lt_CC -- --# Is the compiler the GNU C compiler? --with_gcc=$GCC -- --# 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=$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_wl -- --# Object file suffix (normally "o"). --objext="$ac_objext" -- --# Old archive suffix (normally "a"). --libext="$libext" -- --# Executable file suffix (normally ""). --exeext="$exeext" -- --# Additional compiler flags for building library objects. --pic_flag=$lt_pic_flag --pic_mode=$pic_mode -- --# Does compiler simultaneously support -c and -o options? --compiler_c_o=$lt_compiler_c_o -- --# Can we write directly to a .lo ? --compiler_o_lo=$lt_compiler_o_lo -- --# 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_link_static_flag -- --# Compiler flag to turn off builtin functions. --no_builtin_flag=$lt_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 to strip libraries. --old_striplib=$lt_old_striplib --striplib=$lt_striplib -- --# 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_global_symbol_pipe -- --# Transform the output of nm in a proper C declaration --global_symbol_to_cdecl=$lt_global_symbol_to_cdecl -- --# Transform the output of nm in a C name address pair --global_symbol_to_c_name_address=$lt_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 -- --# 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.so 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 -- --# 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=$lt_sys_lib_search_path_spec -- --# 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 >> "${ofile}T" -- --# 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 -- -- case $host_os in -- cygwin* | mingw* | pw32* | os2*) -- cat <<'EOF' >> "${ofile}T" -- # This is a source program that is used to create dlls on Windows -- # Don't remove nor modify the starting and closing comments --# /* 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 */ -- # This is a source program that is used to create import libraries -- # on Windows for dlls which lack them. Don't remove nor modify the -- # starting and closing comments --# /* impgen.c starts here */ --# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. --# --# This file is part of GNU libtool. --# --# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --# */ --# --# #include /* for printf() */ --# #include /* for open(), lseek(), read() */ --# #include /* for O_RDONLY, O_BINARY */ --# #include /* for strdup() */ --# --# /* O_BINARY isn't required (or even defined sometimes) under Unix */ --# #ifndef O_BINARY --# #define O_BINARY 0 --# #endif --# --# static unsigned int --# pe_get16 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[2]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 2); --# return b[0] + (b[1]<<8); --# } --# --# static unsigned int --# pe_get32 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[4]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 4); --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# static unsigned int --# pe_as32 (ptr) --# void *ptr; --# { --# unsigned char *b = ptr; --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# int --# main (argc, argv) --# int argc; --# char *argv[]; --# { --# int dll; --# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; --# unsigned long export_rva, export_size, nsections, secptr, expptr; --# unsigned long name_rvas, nexp; --# unsigned char *expdata, *erva; --# char *filename, *dll_name; --# --# filename = argv[1]; --# --# dll = open(filename, O_RDONLY|O_BINARY); --# if (dll < 1) --# return 1; --# --# dll_name = filename; --# --# for (i=0; filename[i]; i++) --# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') --# dll_name = filename + i +1; --# --# pe_header_offset = pe_get32 (dll, 0x3c); --# opthdr_ofs = pe_header_offset + 4 + 20; --# num_entries = pe_get32 (dll, opthdr_ofs + 92); --# --# if (num_entries < 1) /* no exports */ --# return 1; --# --# export_rva = pe_get32 (dll, opthdr_ofs + 96); --# export_size = pe_get32 (dll, opthdr_ofs + 100); --# nsections = pe_get16 (dll, pe_header_offset + 4 +2); --# secptr = (pe_header_offset + 4 + 20 + --# pe_get16 (dll, pe_header_offset + 4 + 16)); --# --# expptr = 0; --# for (i = 0; i < nsections; i++) --# { --# char sname[8]; --# unsigned long secptr1 = secptr + 40 * i; --# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); --# unsigned long vsize = pe_get32 (dll, secptr1 + 16); --# unsigned long fptr = pe_get32 (dll, secptr1 + 20); --# lseek(dll, secptr1, SEEK_SET); --# read(dll, sname, 8); --# if (vaddr <= export_rva && vaddr+vsize > export_rva) --# { --# expptr = fptr + (export_rva - vaddr); --# if (export_rva + export_size > vaddr + vsize) --# export_size = vsize - (export_rva - vaddr); --# break; --# } --# } --# --# expdata = (unsigned char*)malloc(export_size); --# lseek (dll, expptr, SEEK_SET); --# read (dll, expdata, export_size); --# erva = expdata - export_rva; --# --# nexp = pe_as32 (expdata+24); --# name_rvas = pe_as32 (expdata+32); --# --# printf ("EXPORTS\n"); --# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) -- -- mv -f "${ofile}T" "$ofile" || \ -- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") -- chmod +x "$ofile" --fi -- --])# _LT_AC_LTCONFIG_HACK -- --# AC_LIBTOOL_DLOPEN - enable checks for dlopen support --AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) -- --# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's --AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) -- --# AC_ENABLE_SHARED - implement the --enable-shared flag --# Usage: AC_ENABLE_SHARED[(DEFAULT)] --# Where 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, --changequote(<<, >>)dnl --<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], --changequote([, ])dnl --[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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_shared=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac], --enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl --]) -- --# 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_ENABLE_STATIC - implement the --enable-static flag --# Usage: AC_ENABLE_STATIC[(DEFAULT)] --# Where 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, --changequote(<<, >>)dnl --<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], --changequote([, ])dnl --[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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_static=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac], --enable_static=AC_ENABLE_STATIC_DEFAULT)dnl --]) -- --# 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_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag --# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] --# Where 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, --changequote(<<, >>)dnl --<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], --changequote([, ])dnl --[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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_fast_install=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac], --enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl --]) -- --# 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_LIBTOOL_PICMODE - implement the --with-pic flag --# Usage: AC_LIBTOOL_PICMODE[(MODE)] --# Where 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_PATH_TOOL_PREFIX - find a file program which can recognise shared library --AC_DEFUN([AC_PATH_TOOL_PREFIX], --[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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. -- ;; -- *) -- ac_save_MAGIC_CMD="$MAGIC_CMD" -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" --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 -- 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="$ac_save_ifs" -- MAGIC_CMD="$ac_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_MAGIC - find a file program which can recognise a shared library --AC_DEFUN([AC_PATH_MAGIC], --[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl --AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$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) -- else -- MAGIC_CMD=: -- fi --fi --]) -- -- --# AC_PROG_LD - find the path to the GNU or non-GNU linker --AC_DEFUN([AC_PROG_LD], --[AC_ARG_WITH(gnu-ld, --[ --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([AC_PROG_CC])dnl --AC_REQUIRE([AC_CANONICAL_HOST])dnl --AC_REQUIRE([AC_CANONICAL_BUILD])dnl --AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])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 GCC]) -- 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. -- [[\\/]]* | [[A-Za-z]]:[[\\/]]*) -- re_direlt='/[[^/]][[^/]]*/\.\./' -- # Canonicalize the path 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 -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for ac_dir in $PATH; do -- 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 GNU ld's only accept -v. -- # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -- test "$with_gnu_ld" != no && break -- else -- test "$with_gnu_ld" != yes && break -- fi -- fi -- done -- IFS="$ac_save_ifs" --else -- lt_cv_path_LD="$LD" # Let the user override the test with a path. --fi]) --LD="$lt_cv_path_LD" --if test -n "$LD"; then -- AC_MSG_RESULT($LD) --else -- AC_MSG_RESULT(no) --fi --test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) --AC_PROG_LD_GNU --]) -- --# AC_PROG_LD_GNU - --AC_DEFUN([AC_PROG_LD_GNU], --[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, --[# I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -- lt_cv_prog_gnu_ld=yes --else -- lt_cv_prog_gnu_ld=no --fi]) --with_gnu_ld=$lt_cv_prog_gnu_ld --]) -- --# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker --# -- PORTME Some linkers may need a different reload flag. --AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], --[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, --[lt_cv_ld_reload_flag='-r']) --reload_flag=$lt_cv_ld_reload_flag --test -n "$reload_flag" && reload_flag=" $reload_flag" --]) -- --# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies --# -- PORTME fill in with the dynamic library characteristics --AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], --[AC_CACHE_CHECK([how to recognise dependant libraries], --lt_cv_deplibs_check_method, --[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 egrep 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 -- ;; -- --bsdi4*) -- 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* | mingw* | pw32*) -- 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='file_magic Mach-O dynamically linked shared library' -- lt_cv_file_magic_cmd='/usr/bin/file -L' -- case "$host_os" in -- rhapsody* | darwin1.[[012]]) -- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` -- ;; -- *) # Darwin 1.3 on -- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' -- ;; -- esac -- ;; -- --freebsd*) -- 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)/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_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- --irix5* | irix6*) -- case $host_os in -- irix5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" -- ;; -- *) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" -- ;; -- esac -- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` -- lt_cv_deplibs_check_method=pass_all -- ;; -- --# This must be Linux ELF. --linux-gnu*) -- case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) -- lt_cv_deplibs_check_method=pass_all ;; -- *) -- # glibc up to 2.1.1 does not perform some relocations on ARM -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; -- esac -- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` -- ;; -- --netbsd*) -- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then -- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' -- else -- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' -- 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 -- ;; -- --openbsd*) -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` -- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' -- else -- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' -- fi -- ;; -- --osf3* | osf4* | osf5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' -- lt_cv_file_magic_test_file=/shlib/libc.so -- lt_cv_deplibs_check_method=pass_all -- ;; -- --sco3.2v5*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --solaris*) -- lt_cv_deplibs_check_method=pass_all -- lt_cv_file_magic_test_file=/lib/libc.so -- ;; -- --sysv5uw[[78]]* | sysv4*uw2*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- 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 -- ;; -- esac -- ;; --esac --]) --file_magic_cmd=$lt_cv_file_magic_cmd --deplibs_check_method=$lt_cv_deplibs_check_method --]) -- -- --# AC_PROG_NM - find the path to a BSD-compatible name lister --AC_DEFUN([AC_PROG_NM], --[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl --AC_MSG_CHECKING([for BSD-compatible nm]) --AC_CACHE_VAL(lt_cv_path_NM, --[if test -n "$NM"; then -- # Let the user override the test. -- lt_cv_path_NM="$NM" --else -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do -- test -z "$ac_dir" && ac_dir=. -- tmp_nm=$ac_dir/${ac_tool_prefix}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 -- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then -- lt_cv_path_NM="$tmp_nm -B" -- break -- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- lt_cv_path_NM="$tmp_nm -p" -- break -- else -- 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 -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm --fi]) --NM="$lt_cv_path_NM" --AC_MSG_RESULT([$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*) -- # These system don't have libm -- ;; --*-ncr-sysv4.3*) -- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") -- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") -- ;; --*) -- AC_CHECK_LIB(m, main, LIBM="-lm") -- ;; --esac --]) -- --# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for --# the libltdl convenience library and INCLTDL to the include flags for --# the libltdl header and adds --enable-ltdl-convenience to the --# configure arguments. Note that LIBLTDL and INCLTDL are not --# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not --# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed --# with '${top_builddir}/' and INCLTDL 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 -- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) --]) -- --# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for --# the libltdl installable library and INCLTDL to the include flags for --# the libltdl header and adds --enable-ltdl-install to the configure --# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is --# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed --# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will --# be prefixed with '${top_builddir}/' and INCLTDL 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. --# 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, main, -- [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 -- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) -- else -- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" -- LIBLTDL="-lltdl" -- INCLTDL= -- fi --]) -- --# 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]) -- --# gettext.m4 serial 16 (gettext-0.11.4) --dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. --dnl --dnl This file can can be used in projects which are not available under --dnl the GNU General Public License or the GNU Library General Public --dnl License but which still want to provide support for the GNU gettext --dnl functionality. --dnl Please note that the actual code of the GNU gettext library is covered --dnl by the GNU Library General Public License, and the rest of the GNU --dnl gettext package package is covered by the GNU General Public License. --dnl They are *not* in the public domain. -- --dnl Authors: --dnl Ulrich Drepper , 1995-2000. --dnl Bruno Haible , 2000-2002. -- --dnl Macro to add for using GNU gettext. -- --dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). --dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The --dnl default (if it is not specified or empty) is 'no-libtool'. --dnl INTLSYMBOL should be 'external' for packages with no intl directory, --dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. --dnl If INTLSYMBOL is 'use-libtool', then a libtool library --dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, --dnl depending on --{enable,disable}-{shared,static} and on the presence of --dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library --dnl $(top_builddir)/intl/libintl.a will be created. --dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext --dnl implementations (in libc or libintl) without the ngettext() function --dnl will be ignored. If NEEDSYMBOL is specified and is --dnl 'need-formatstring-macros', then GNU gettext implementations that don't --dnl support the ISO C 99 formatstring macros will be ignored. --dnl INTLDIR is used to find the intl libraries. If empty, --dnl the value `$(top_builddir)/intl/' is used. --dnl --dnl The result of the configuration is one of three cases: --dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled --dnl and used. --dnl Catalog format: GNU --> install in $(datadir) --dnl Catalog extension: .mo after installation, .gmo in source tree --dnl 2) GNU gettext has been found in the system's C library. --dnl Catalog format: GNU --> install in $(datadir) --dnl Catalog extension: .mo after installation, .gmo in source tree --dnl 3) No internationalization, always use English msgid. --dnl Catalog format: none --dnl Catalog extension: none --dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. --dnl The use of .gmo is historical (it was needed to avoid overwriting the --dnl GNU format catalogs when building on a platform with an X/Open gettext), --dnl but we keep it in order not to force irrelevant filename changes on the --dnl maintainers. --dnl --AC_DEFUN([AM_GNU_GETTEXT], --[ -- dnl Argument checking. -- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , -- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT --])])])])]) -- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , -- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT --])])])]) -- define(gt_included_intl, ifelse([$1], [external], [no], [yes])) -- define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) -- -- AC_REQUIRE([AM_PO_SUBDIRS])dnl -- ifelse(gt_included_intl, yes, [ -- AC_REQUIRE([AM_INTL_SUBDIR])dnl -- ]) -- -- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) -- -- dnl Sometimes libintl requires libiconv, so first search for libiconv. -- dnl Ideally we would do this search only after the -- dnl if test "$USE_NLS" = "yes"; then -- dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then -- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT -- dnl the configure script would need to contain the same shell code -- dnl again, outside any 'if'. There are two solutions: -- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. -- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. -- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not -- dnl documented, we avoid it. -- ifelse(gt_included_intl, yes, , [ -- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -- ]) -- -- AC_MSG_CHECKING([whether NLS is requested]) -- dnl Default is enabled NLS -- AC_ARG_ENABLE(nls, -- [ --disable-nls do not use Native Language Support], -- USE_NLS=$enableval, USE_NLS=yes) -- AC_MSG_RESULT($USE_NLS) -- AC_SUBST(USE_NLS) -- -- ifelse(gt_included_intl, yes, [ -- BUILD_INCLUDED_LIBINTL=no -- USE_INCLUDED_LIBINTL=no -- ]) -- LIBINTL= -- LTLIBINTL= -- POSUB= -- -- dnl If we use NLS figure out what method -- if test "$USE_NLS" = "yes"; then -- gt_use_preinstalled_gnugettext=no -- ifelse(gt_included_intl, yes, [ -- AC_MSG_CHECKING([whether included gettext is requested]) -- AC_ARG_WITH(included-gettext, -- [ --with-included-gettext use the GNU gettext library included here], -- nls_cv_force_use_gnu_gettext=$withval, -- nls_cv_force_use_gnu_gettext=no) -- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) -- -- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" -- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then -- ]) -- dnl User does not insist on using GNU NLS library. Figure out what -- dnl to use. If GNU gettext is available we use this. Else we have -- dnl to fall back to GNU NLS library. -- -- dnl Add a version number to the cache macros. -- define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) -- define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) -- define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) -- -- AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, -- [AC_TRY_LINK([#include --]ifelse([$2], [need-formatstring-macros], --[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION --#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) --#endif --changequote(,)dnl --typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; --changequote([,])dnl --], [])[extern int _nl_msg_cat_cntr; --extern int *_nl_domain_bindings;], -- [bindtextdomain ("", ""); --return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], -- gt_cv_func_gnugettext_libc=yes, -- gt_cv_func_gnugettext_libc=no)]) -- -- if test "$gt_cv_func_gnugettext_libc" != "yes"; then -- dnl Sometimes libintl requires libiconv, so first search for libiconv. -- ifelse(gt_included_intl, yes, , [ -- AM_ICONV_LINK -- ]) -- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL -- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) -- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL -- dnl even if libiconv doesn't exist. -- AC_LIB_LINKFLAGS_BODY([intl]) -- AC_CACHE_CHECK([for GNU gettext in libintl], -- gt_cv_func_gnugettext_libintl, -- [gt_save_CPPFLAGS="$CPPFLAGS" -- CPPFLAGS="$CPPFLAGS $INCINTL" -- gt_save_LIBS="$LIBS" -- LIBS="$LIBS $LIBINTL" -- dnl Now see whether libintl exists and does not depend on libiconv. -- AC_TRY_LINK([#include --]ifelse([$2], [need-formatstring-macros], --[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION --#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) --#endif --changequote(,)dnl --typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; --changequote([,])dnl --], [])[extern int _nl_msg_cat_cntr; --extern --#ifdef __cplusplus --"C" --#endif --const char *_nl_expand_alias ();], -- [bindtextdomain ("", ""); --return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], -- gt_cv_func_gnugettext_libintl=yes, -- gt_cv_func_gnugettext_libintl=no) -- dnl Now see whether libintl exists and depends on libiconv. -- if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then -- LIBS="$LIBS $LIBICONV" -- AC_TRY_LINK([#include --]ifelse([$2], [need-formatstring-macros], --[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION --#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) --#endif --changequote(,)dnl --typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; --changequote([,])dnl --], [])[extern int _nl_msg_cat_cntr; --extern --#ifdef __cplusplus --"C" --#endif --const char *_nl_expand_alias ();], -- [bindtextdomain ("", ""); --return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], -- [LIBINTL="$LIBINTL $LIBICONV" -- LTLIBINTL="$LTLIBINTL $LTLIBICONV" -- gt_cv_func_gnugettext_libintl=yes -- ]) -- fi -- CPPFLAGS="$gt_save_CPPFLAGS" -- LIBS="$gt_save_LIBS"]) -- fi -- -- dnl If an already present or preinstalled GNU gettext() is found, -- dnl use it. But if this macro is used in GNU gettext, and GNU -- dnl gettext is already preinstalled in libintl, we update this -- dnl libintl. (Cf. the install rule in intl/Makefile.in.) -- if test "$gt_cv_func_gnugettext_libc" = "yes" \ -- || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ -- && test "$PACKAGE" != gettext; }; then -- gt_use_preinstalled_gnugettext=yes -- else -- dnl Reset the values set by searching for libintl. -- LIBINTL= -- LTLIBINTL= -- INCINTL= -- fi -- -- ifelse(gt_included_intl, yes, [ -- if test "$gt_use_preinstalled_gnugettext" != "yes"; then -- dnl GNU gettext is not found in the C library. -- dnl Fall back on included GNU gettext library. -- nls_cv_use_gnu_gettext=yes -- fi -- fi -- -- if test "$nls_cv_use_gnu_gettext" = "yes"; then -- dnl Mark actions used to generate GNU NLS library. -- INTLOBJS="\$(GETTOBJS)" -- BUILD_INCLUDED_LIBINTL=yes -- USE_INCLUDED_LIBINTL=yes -- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" -- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" -- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` -- fi -- -- if test "$gt_use_preinstalled_gnugettext" = "yes" \ -- || test "$nls_cv_use_gnu_gettext" = "yes"; then -- dnl Mark actions to use GNU gettext tools. -- CATOBJEXT=.gmo -- fi -- ]) -- -- if test "$gt_use_preinstalled_gnugettext" = "yes" \ -- || test "$nls_cv_use_gnu_gettext" = "yes"; then -- AC_DEFINE(ENABLE_NLS, 1, -- [Define to 1 if translation of program messages to the user's native language -- is requested.]) -- else -- USE_NLS=no -- fi -- fi -- -- if test "$USE_NLS" = "yes"; then -- -- if test "$gt_use_preinstalled_gnugettext" = "yes"; then -- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -- AC_MSG_CHECKING([how to link with libintl]) -- AC_MSG_RESULT([$LIBINTL]) -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -- fi -- -- dnl For backward compatibility. Some packages may be using this. -- AC_DEFINE(HAVE_GETTEXT, 1, -- [Define if the GNU gettext() function is already present or preinstalled.]) -- AC_DEFINE(HAVE_DCGETTEXT, 1, -- [Define if the GNU dcgettext() function is already present or preinstalled.]) -- fi -- -- dnl We need to process the po/ directory. -- POSUB=po -- fi -- -- ifelse(gt_included_intl, yes, [ -- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL -- dnl to 'yes' because some of the testsuite requires it. -- if test "$PACKAGE" = gettext; then -- BUILD_INCLUDED_LIBINTL=yes -- fi -- -- dnl Make all variables we use known to autoconf. -- AC_SUBST(BUILD_INCLUDED_LIBINTL) -- AC_SUBST(USE_INCLUDED_LIBINTL) -- AC_SUBST(CATOBJEXT) -- AC_SUBST(INTLOBJS) -- -- dnl For backward compatibility. Some configure.ins may be using this. -- nls_cv_header_intl= -- nls_cv_header_libgt= -- -- dnl For backward compatibility. Some Makefiles may be using this. -- DATADIRNAME=share -- AC_SUBST(DATADIRNAME) -- -- dnl For backward compatibility. Some Makefiles may be using this. -- INSTOBJEXT=.mo -- AC_SUBST(INSTOBJEXT) -- -- dnl For backward compatibility. Some Makefiles may be using this. -- GENCAT=gencat -- AC_SUBST(GENCAT) -- -- dnl Enable libtool support if the surrounding package wishes it. -- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix -- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) -- ]) -- -- dnl For backward compatibility. Some Makefiles may be using this. -- INTLLIBS="$LIBINTL" -- AC_SUBST(INTLLIBS) -- -- dnl Make all documented variables known to autoconf. -- AC_SUBST(LIBINTL) -- AC_SUBST(LTLIBINTL) -- AC_SUBST(POSUB) --]) -- -- --dnl Checks for all prerequisites of the po subdirectory, --dnl except for USE_NLS. --AC_DEFUN([AM_PO_SUBDIRS], --[ -- AC_REQUIRE([AC_PROG_MAKE_SET])dnl -- AC_REQUIRE([AC_PROG_INSTALL])dnl -- AC_REQUIRE([AM_MKINSTALLDIRS])dnl -- -- dnl Perform the following tests also if --disable-nls has been given, -- dnl because they are needed for "make dist" to work. -- -- dnl Search for GNU msgfmt in the PATH. -- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. -- dnl The second test excludes FreeBSD msgfmt. -- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -- [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -- :) -- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -- -- dnl Search for GNU xgettext 0.11 or newer in the PATH. -- dnl The first test excludes Solaris xgettext and early GNU xgettext versions. -- dnl The second test excludes FreeBSD xgettext. -- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -- [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -- :) -- dnl Remove leftover from FreeBSD xgettext call. -- rm -f messages.po -- -- dnl Search for GNU msgmerge 0.11 or newer in the PATH. -- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, -- [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) -- -- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -- dnl Test whether we really found GNU msgfmt. -- if test "$GMSGFMT" != ":"; then -- dnl If it is no GNU msgfmt we define it as : so that the -- dnl Makefiles still can work. -- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -- AC_MSG_RESULT( -- [found $GMSGFMT program is not GNU msgfmt; ignore it]) -- GMSGFMT=":" -- fi -- fi -- -- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -- dnl Test whether we really found GNU xgettext. -- if test "$XGETTEXT" != ":"; then -- dnl If it is no GNU xgettext we define it as : so that the -- dnl Makefiles still can work. -- if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- AC_MSG_RESULT( -- [found xgettext program is not GNU xgettext; ignore it]) -- XGETTEXT=":" -- fi -- dnl Remove leftover from FreeBSD xgettext call. -- rm -f messages.po -- fi -- -- AC_OUTPUT_COMMANDS([ -- for ac_file in $CONFIG_FILES; do -- # Support "outfile[:infile[:infile...]]" -- case "$ac_file" in -- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -- esac -- # PO directories have a Makefile.in generated from Makefile.in.in. -- case "$ac_file" in */Makefile.in) -- # Adjust a relative srcdir. -- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -- # In autoconf-2.13 it is called $ac_given_srcdir. -- # In autoconf-2.50 it is called $srcdir. -- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -- case "$ac_given_srcdir" in -- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -- /*) top_srcdir="$ac_given_srcdir" ;; -- *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -- esac -- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then -- rm -f "$ac_dir/POTFILES" -- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" -- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend -- # on $ac_dir but don't depend on user-specified configuration -- # parameters. -- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then -- # The LINGUAS file contains the set of available languages. -- if test -n "$ALL_LINGUAS"; then -- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -- fi -- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` -- # Hide the ALL_LINGUAS assigment from automake. -- eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -- fi -- case "$ac_given_srcdir" in -- .) srcdirpre= ;; -- *) srcdirpre='$(srcdir)/' ;; -- esac -- POFILES= -- GMOFILES= -- UPDATEPOFILES= -- DUMMYPOFILES= -- for lang in $ALL_LINGUAS; do -- POFILES="$POFILES $srcdirpre$lang.po" -- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" -- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" -- DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -- done -- # CATALOGS depends on both $ac_dir and the user's LINGUAS -- # environment variable. -- INST_LINGUAS= -- if test -n "$ALL_LINGUAS"; then -- for presentlang in $ALL_LINGUAS; do -- useit=no -- if test "%UNSET%" != "$LINGUAS"; then -- desiredlanguages="$LINGUAS" -- else -- desiredlanguages="$ALL_LINGUAS" -- fi -- for desiredlang in $desiredlanguages; do -- # Use the presentlang catalog if desiredlang is -- # a. equal to presentlang, or -- # b. a variant of presentlang (because in this case, -- # presentlang can be used as a fallback for messages -- # which are not translated in the desiredlang catalog). -- case "$desiredlang" in -- "$presentlang"*) useit=yes;; -- esac -- done -- if test $useit = yes; then -- INST_LINGUAS="$INST_LINGUAS $presentlang" -- fi -- done -- fi -- CATALOGS= -- if test -n "$INST_LINGUAS"; then -- for lang in $INST_LINGUAS; do -- CATALOGS="$CATALOGS $lang.gmo" -- done -- fi -- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do -- if test -f "$f"; then -- case "$f" in -- *.orig | *.bak | *~) ;; -- *) cat "$f" >> "$ac_dir/Makefile" ;; -- esac -- fi -- done -- fi -- ;; -- esac -- done], -- [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute -- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it -- # from automake. -- eval 'ALL_LINGUAS''="$ALL_LINGUAS"' -- # Capture the value of LINGUAS because we need it to compute CATALOGS. -- LINGUAS="${LINGUAS-%UNSET%}" -- ]) --]) -- -- --dnl Checks for all prerequisites of the intl subdirectory, --dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, --dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. --AC_DEFUN([AM_INTL_SUBDIR], --[ -- AC_REQUIRE([AC_PROG_INSTALL])dnl -- AC_REQUIRE([AM_MKINSTALLDIRS])dnl -- AC_REQUIRE([AC_PROG_CC])dnl -- AC_REQUIRE([AC_CANONICAL_HOST])dnl -- AC_REQUIRE([AC_PROG_RANLIB])dnl -- AC_REQUIRE([AC_ISC_POSIX])dnl -- AC_REQUIRE([AC_HEADER_STDC])dnl -- AC_REQUIRE([AC_C_CONST])dnl -- AC_REQUIRE([AC_C_INLINE])dnl -- AC_REQUIRE([AC_TYPE_OFF_T])dnl -- AC_REQUIRE([AC_TYPE_SIZE_T])dnl -- AC_REQUIRE([AC_FUNC_ALLOCA])dnl -- AC_REQUIRE([AC_FUNC_MMAP])dnl -- AC_REQUIRE([jm_GLIBC21])dnl -- AC_REQUIRE([gt_INTDIV0])dnl -- AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl -- AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl -- AC_REQUIRE([gt_INTTYPES_PRI])dnl -- -- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ --stdlib.h string.h unistd.h sys/param.h]) -- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ --geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ --strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) -- -- AM_ICONV -- AM_LANGINFO_CODESET -- if test $ac_cv_header_locale_h = yes; then -- AM_LC_MESSAGES -- fi -- -- dnl intl/plural.c is generated from intl/plural.y. It requires bison, -- dnl because plural.y uses bison specific features. It requires at least -- dnl bison-1.26 because earlier versions generate a plural.c that doesn't -- dnl compile. -- dnl bison is only needed for the maintainer (who touches plural.y). But in -- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put -- dnl the rule in general Makefile. Now, some people carelessly touch the -- dnl files or have a broken "make" program, hence the plural.c rule will -- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not -- dnl present or too old. -- AC_CHECK_PROGS([INTLBISON], [bison]) -- if test -z "$INTLBISON"; then -- ac_verc_fail=yes -- else -- dnl Found it, now check the version. -- AC_MSG_CHECKING([version of bison]) --changequote(<<,>>)dnl -- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -- case $ac_prog_version in -- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) --changequote([,])dnl -- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -- esac -- AC_MSG_RESULT([$ac_prog_version]) -- fi -- if test $ac_verc_fail = yes; then -- INTLBISON=: -- fi --]) -- -- --AC_DEFUN([AM_MKINSTALLDIRS], --[ -- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly -- dnl find the mkinstalldirs script in another subdir but $(top_srcdir). -- dnl Try to locate is. -- MKINSTALLDIRS= -- if test -n "$ac_aux_dir"; then -- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" -- fi -- if test -z "$MKINSTALLDIRS"; then -- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -- fi -- AC_SUBST(MKINSTALLDIRS) --]) -- -- --dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) --AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -- --# lib-prefix.m4 serial 1 (gettext-0.11) --dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -- --dnl From Bruno Haible. -- --dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed --dnl to access previously installed libraries. The basic assumption is that --dnl a user will want packages to use other packages he previously installed --dnl with the same --prefix option. --dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate --dnl libraries, but is otherwise very convenient. --AC_DEFUN([AC_LIB_PREFIX], --[ -- AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) -- AC_REQUIRE([AC_PROG_CC]) -- AC_REQUIRE([AC_CANONICAL_HOST]) -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- dnl By default, look in $includedir and $libdir. -- use_additional=yes -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- AC_ARG_WITH([lib-prefix], --[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib -- --without-lib-prefix don't search for libraries in includedir and libdir], --[ -- if test "X$withval" = "Xno"; then -- use_additional=no -- else -- if test "X$withval" = "X"; then -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- else -- additional_includedir="$withval/include" -- additional_libdir="$withval/lib" -- fi -- fi --]) -- if test $use_additional = yes; then -- dnl Potentially add $additional_includedir to $CPPFLAGS. -- dnl But don't add it -- dnl 1. if it's the standard /usr/include, -- dnl 2. if it's already present in $CPPFLAGS, -- dnl 3. if it's /usr/local/include and we are using GCC on Linux, -- dnl 4. if it doesn't exist as a directory. -- if test "X$additional_includedir" != "X/usr/include"; then -- haveit= -- for x in $CPPFLAGS; do -- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -- if test "X$x" = "X-I$additional_includedir"; then -- haveit=yes -- break -- fi -- done -- if test -z "$haveit"; then -- if test "X$additional_includedir" = "X/usr/local/include"; then -- if test -n "$GCC"; then -- case $host_os in -- linux*) haveit=yes;; -- esac -- fi -- fi -- if test -z "$haveit"; then -- if test -d "$additional_includedir"; then -- dnl Really add $additional_includedir to $CPPFLAGS. -- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" -- fi -- fi -- fi -- fi -- dnl Potentially add $additional_libdir to $LDFLAGS. -- dnl But don't add it -- dnl 1. if it's the standard /usr/lib, -- dnl 2. if it's already present in $LDFLAGS, -- dnl 3. if it's /usr/local/lib and we are using GCC on Linux, -- dnl 4. if it doesn't exist as a directory. -- if test "X$additional_libdir" != "X/usr/lib"; then -- haveit= -- for x in $LDFLAGS; do -- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -- if test "X$x" = "X-L$additional_libdir"; then -- haveit=yes -- break -- fi -- done -- if test -z "$haveit"; then -- if test "X$additional_libdir" = "X/usr/local/lib"; then -- if test -n "$GCC"; then -- case $host_os in -- linux*) haveit=yes;; -- esac -- fi -- fi -- if test -z "$haveit"; then -- if test -d "$additional_libdir"; then -- dnl Really add $additional_libdir to $LDFLAGS. -- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" -- fi -- fi -- fi -- fi -- fi --]) -- --dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, --dnl acl_final_exec_prefix, containing the values to which $prefix and --dnl $exec_prefix will expand at the end of the configure script. --AC_DEFUN([AC_LIB_PREPARE_PREFIX], --[ -- dnl Unfortunately, prefix and exec_prefix get only finally determined -- dnl at the end of configure. -- if test "X$prefix" = "XNONE"; then -- acl_final_prefix="$ac_default_prefix" -- else -- acl_final_prefix="$prefix" -- fi -- if test "X$exec_prefix" = "XNONE"; then -- acl_final_exec_prefix='${prefix}' -- else -- acl_final_exec_prefix="$exec_prefix" -- fi -- acl_save_prefix="$prefix" -- prefix="$acl_final_prefix" -- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" -- prefix="$acl_save_prefix" --]) -- --dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the --dnl variables prefix and exec_prefix bound to the values they will have --dnl at the end of the configure script. --AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], --[ -- acl_save_prefix="$prefix" -- prefix="$acl_final_prefix" -- acl_save_exec_prefix="$exec_prefix" -- exec_prefix="$acl_final_exec_prefix" -- $1 -- exec_prefix="$acl_save_exec_prefix" -- prefix="$acl_save_prefix" --]) -- --# lib-link.m4 serial 3 (gettext-0.11.3) --dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -- --dnl From Bruno Haible. -- --dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and --dnl the libraries corresponding to explicit and implicit dependencies. --dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and --dnl augments the CPPFLAGS variable. --AC_DEFUN([AC_LIB_LINKFLAGS], --[ -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) -- define([Name],[translit([$1],[./-], [___])]) -- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ -- AC_LIB_LINKFLAGS_BODY([$1], [$2]) -- ac_cv_lib[]Name[]_libs="$LIB[]NAME" -- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" -- ac_cv_lib[]Name[]_cppflags="$INC[]NAME" -- ]) -- LIB[]NAME="$ac_cv_lib[]Name[]_libs" -- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" -- INC[]NAME="$ac_cv_lib[]Name[]_cppflags" -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -- AC_SUBST([LIB]NAME) -- AC_SUBST([LTLIB]NAME) -- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the -- dnl results of this search when this library appears as a dependency. -- HAVE_LIB[]NAME=yes -- undefine([Name]) -- undefine([NAME]) --]) -- --dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) --dnl searches for libname and the libraries corresponding to explicit and --dnl implicit dependencies, together with the specified include files and --dnl the ability to compile and link the specified testcode. If found, it --dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and --dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and --dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs --dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. --AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], --[ -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) -- define([Name],[translit([$1],[./-], [___])]) -- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -- -- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME -- dnl accordingly. -- AC_LIB_LINKFLAGS_BODY([$1], [$2]) -- -- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, -- dnl because if the user has installed lib[]Name and not disabled its use -- dnl via --without-lib[]Name-prefix, he wants to use it. -- ac_save_CPPFLAGS="$CPPFLAGS" -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -- -- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ -- ac_save_LIBS="$LIBS" -- LIBS="$LIBS $LIB[]NAME" -- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) -- LIBS="$ac_save_LIBS" -- ]) -- if test "$ac_cv_lib[]Name" = yes; then -- HAVE_LIB[]NAME=yes -- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) -- AC_MSG_CHECKING([how to link with lib[]$1]) -- AC_MSG_RESULT([$LIB[]NAME]) -- else -- HAVE_LIB[]NAME=no -- dnl If $LIB[]NAME didn't lead to a usable library, we don't need -- dnl $INC[]NAME either. -- CPPFLAGS="$ac_save_CPPFLAGS" -- LIB[]NAME= -- LTLIB[]NAME= -- fi -- AC_SUBST([HAVE_LIB]NAME) -- AC_SUBST([LIB]NAME) -- AC_SUBST([LTLIB]NAME) -- undefine([Name]) -- undefine([NAME]) --]) -- --dnl Determine the platform dependent parameters needed to use rpath: --dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, --dnl hardcode_direct, hardcode_minus_L, --dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. --AC_DEFUN([AC_LIB_RPATH], --[ -- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS -- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld -- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host -- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir -- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ -- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ -- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh -- . ./conftest.sh -- rm -f ./conftest.sh -- acl_cv_rpath=done -- ]) -- wl="$acl_cv_wl" -- libext="$acl_cv_libext" -- shlibext="$acl_cv_shlibext" -- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" -- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" -- hardcode_direct="$acl_cv_hardcode_direct" -- hardcode_minus_L="$acl_cv_hardcode_minus_L" -- sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" -- sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" -- dnl Determine whether the user wants rpath handling at all. -- AC_ARG_ENABLE(rpath, -- [ --disable-rpath do not hardcode runtime library paths], -- :, enable_rpath=yes) --]) -- --dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and --dnl the libraries corresponding to explicit and implicit dependencies. --dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. --AC_DEFUN([AC_LIB_LINKFLAGS_BODY], --[ -- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -- dnl By default, look in $includedir and $libdir. -- use_additional=yes -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- AC_ARG_WITH([lib$1-prefix], --[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib -- --without-lib$1-prefix don't search for lib$1 in includedir and libdir], --[ -- if test "X$withval" = "Xno"; then -- use_additional=no -- else -- if test "X$withval" = "X"; then -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- else -- additional_includedir="$withval/include" -- additional_libdir="$withval/lib" -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/lib" - fi - fi - ]) -@@ -5419,7 +1429,7 @@ - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -5468,7 +1478,7 @@ - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -5552,695 +1562,8143 @@ - done - fi - else -- dnl Didn't find the library; assume it is in the system directories -- dnl known to the linker and runtime loader. (All the system -- dnl directories known to the linker should also be known to the -- dnl runtime loader, otherwise the system is severely misconfigured.) -- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" -+ dnl Didn't find the library; assume it is in the system directories -+ dnl known to the linker and runtime loader. (All the system -+ dnl directories known to the linker should also be known to the -+ dnl runtime loader, otherwise the system is severely misconfigured.) -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" -+ fi -+ fi -+ fi -+ done -+ done -+ if test "X$rpathdirs" != "X"; then -+ if test -n "$hardcode_libdir_separator"; then -+ dnl Weird platform: only the last -rpath option counts, the user must -+ dnl pass all path elements in one option. We can arrange that for a -+ dnl single library, but not when more than one $LIBNAMEs are used. -+ alldirs= -+ for found_dir in $rpathdirs; do -+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" -+ done -+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. -+ acl_save_libdir="$libdir" -+ libdir="$alldirs" -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ libdir="$acl_save_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ else -+ dnl The -rpath options are cumulative. -+ for found_dir in $rpathdirs; do -+ acl_save_libdir="$libdir" -+ libdir="$found_dir" -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ libdir="$acl_save_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ done -+ fi -+ fi -+ if test "X$ltrpathdirs" != "X"; then -+ dnl When using libtool, the option that works for both libraries and -+ dnl executables is -R. The -R options are cumulative. -+ for found_dir in $ltrpathdirs; do -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" -+ done -+ fi -+]) -+ -+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -+dnl unless already present in VAR. -+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -+dnl contains two or three consecutive elements that belong together. -+AC_DEFUN([AC_LIB_APPENDTOVAR], -+[ -+ for element in [$2]; do -+ haveit= -+ for x in $[$1]; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X$element"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ [$1]="${[$1]}${[$1]:+ }$element" -+ fi -+ done -+]) -+ -+# lib-prefix.m4 serial 4 (gettext-0.14.2) -+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+ -+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -+dnl require excessive bracketing. -+ifdef([AC_HELP_STRING], -+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) -+ -+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -+dnl to access previously installed libraries. The basic assumption is that -+dnl a user will want packages to use other packages he previously installed -+dnl with the same --prefix option. -+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -+dnl libraries, but is otherwise very convenient. -+AC_DEFUN([AC_LIB_PREFIX], -+[ -+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) -+ AC_REQUIRE([AC_PROG_CC]) -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_LIB_ARG_WITH([lib-prefix], -+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib -+ --without-lib-prefix don't search for libraries in includedir and libdir], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ else -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/lib" -+ fi -+ fi -+]) -+ if test $use_additional = yes; then -+ dnl Potentially add $additional_includedir to $CPPFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/include, -+ dnl 2. if it's already present in $CPPFLAGS, -+ dnl 3. if it's /usr/local/include and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_includedir" != "X/usr/include"; then -+ haveit= -+ for x in $CPPFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-I$additional_includedir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_includedir" = "X/usr/local/include"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_includedir"; then -+ dnl Really add $additional_includedir to $CPPFLAGS. -+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" -+ fi -+ fi -+ fi -+ fi -+ dnl Potentially add $additional_libdir to $LDFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/lib, -+ dnl 2. if it's already present in $LDFLAGS, -+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_libdir" != "X/usr/lib"; then -+ haveit= -+ for x in $LDFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$additional_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_libdir" = "X/usr/local/lib"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_libdir"; then -+ dnl Really add $additional_libdir to $LDFLAGS. -+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" -+ fi -+ fi -+ fi -+ fi -+ fi -+]) -+ -+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -+dnl acl_final_exec_prefix, containing the values to which $prefix and -+dnl $exec_prefix will expand at the end of the configure script. -+AC_DEFUN([AC_LIB_PREPARE_PREFIX], -+[ -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ acl_final_prefix="$ac_default_prefix" -+ else -+ acl_final_prefix="$prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ acl_final_exec_prefix='${prefix}' -+ else -+ acl_final_exec_prefix="$exec_prefix" -+ fi -+ acl_save_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" -+ prefix="$acl_save_prefix" -+]) -+ -+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -+dnl variables prefix and exec_prefix bound to the values they will have -+dnl at the end of the configure script. -+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -+[ -+ acl_save_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ acl_save_exec_prefix="$exec_prefix" -+ exec_prefix="$acl_final_exec_prefix" -+ $1 -+ exec_prefix="$acl_save_exec_prefix" -+ prefix="$acl_save_prefix" -+]) -+ -+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -+ -+# serial 47 Debian 1.5.20-2 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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -+ ;; -+ *) -+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -+ ;; -+ 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"} -+ -+# 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' >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' >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 -+ ;; -+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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 > conftest.exp -+ $SED '/^$/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` -+ ;; -+ 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 -+ ;; -+ *) -+ # 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); */ -+ } -+ -+ 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_unknown|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" -+ 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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+])# 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 -+ -+ # 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 -+ ;; -+ -+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* | netbsdelf*-gnu | knetbsd*-gnu) -+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' -+ else -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' -+ fi -+ ;; -+ -+newos6*) -+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=/usr/lib/libnls.so -+ ;; -+ -+nto-qnx*) -+ lt_cv_deplibs_check_method=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 -+ ;; -+ -+sco3.2v5*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+solaris*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ esac -+ ;; -+ -+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | 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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ tmp_nm="$ac_dir/${ac_tool_prefix}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" -+ 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 -+ -+# -+# Check for any special shared library compilation flags. -+# -+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -+if test "$GCC" = no; then -+ case $host_os in -+ sco3.2v5*) -+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' -+ ;; -+ esac -+fi -+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then -+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) -+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : -+ else -+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) -+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no -+ fi -+fi -+ -+ -+# -+# Check to make sure the static flag actually works. -+# -+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], -+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), -+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), -+ [], -+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) -+ -+ -+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($1) -+ -+# Report which librarie types wil 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_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 -+ 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 -+ 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' -+ _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ ;; -+ *) -+ _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' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, -+ # but as the default -+ # location of the library. -+ ;; -+ *) -+ _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*|ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ _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 -+ ia64*|hppa*64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ _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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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 -+ ;; -+ sco*) -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ case $cc_basename in -+ CC*) -+ # 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 -+ ;; -+ 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 -+ ;; -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ ;; -+ 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_SYS_LIB_STRIP -+AC_LIBTOOL_DLOPEN_SELF($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 -+ -+# 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) -+ -+# 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=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) -+ -+# 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=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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* | sysv5*) -+ symcode='[[BDRT]]' -+ ;; -+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)= -+ ;; -+ 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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ ;; -+ esac -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ ;; -+ 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*) -+ ;; -+ sco*) -+ case $cc_basename in -+ CC*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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 -+ ;; -+ unixware*) -+ ;; -+ 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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ _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 -+ ;; -+ -+ 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 -+]) -+ -+ -+# 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' -+ ;; -+ linux*) -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no -+ ;; -+ *) -+ _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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ 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 -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' -+ _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ -+ # 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(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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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)=: -+ ;; -+ -+ sco3.2v5*) -+ _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)='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ sysv5*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ _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' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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) -+ 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 -+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_MSG_RESULT([$SED]) -+]) -+ -+# longdouble.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+dnl Test whether the compiler supports the 'long double' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_LONGDOUBLE], -+[ -+ AC_CACHE_CHECK([for long double], gt_cv_c_long_double, -+ [if test "$GCC" = yes; then -+ gt_cv_c_long_double=yes -+ else -+ AC_TRY_COMPILE([ -+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ -+ long double foo = 0.0; -+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ -+ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; -+ ], , -+ gt_cv_c_long_double=yes, gt_cv_c_long_double=no) -+ fi]) -+ if test $gt_cv_c_long_double = yes; then -+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) -+ fi -+]) -+ -+# longlong.m4 serial 5 -+dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_LONG_LONG if 'long long' works. -+ -+AC_DEFUN([gl_AC_TYPE_LONG_LONG], -+[ -+ AC_CACHE_CHECK([for long long], ac_cv_type_long_long, -+ [AC_TRY_LINK([long long ll = 1LL; int i = 63;], -+ [long long llmax = (long long) -1; -+ return ll << i | ll >> i | llmax / ll | llmax % ll;], -+ ac_cv_type_long_long=yes, -+ ac_cv_type_long_long=no)]) -+ if test $ac_cv_type_long_long = yes; then -+ AC_DEFINE(HAVE_LONG_LONG, 1, -+ [Define if you have the 'long long' type.]) -+ fi -+]) -+ -+# nls.m4 serial 2 (gettext-0.14.3) -+dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. -+ -+AC_PREREQ(2.50) -+ -+AC_DEFUN([AM_NLS], -+[ -+ AC_MSG_CHECKING([whether NLS is requested]) -+ dnl Default is enabled NLS -+ AC_ARG_ENABLE(nls, -+ [ --disable-nls do not use Native Language Support], -+ USE_NLS=$enableval, USE_NLS=yes) -+ AC_MSG_RESULT($USE_NLS) -+ AC_SUBST(USE_NLS) -+]) -+ -+AC_DEFUN([AM_MKINSTALLDIRS], -+[ -+ dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. -+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) -+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly -+ dnl find the mkinstalldirs script in another subdir but $(top_srcdir). -+ dnl Try to locate it. -+ MKINSTALLDIRS= -+ if test -n "$ac_aux_dir"; then -+ case "$ac_aux_dir" in -+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; -+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; -+ esac -+ fi -+ if test -z "$MKINSTALLDIRS"; then -+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -+ fi -+ AC_SUBST(MKINSTALLDIRS) -+]) -+ -+# po.m4 serial 7 (gettext-0.14.3) -+dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. -+ -+AC_PREREQ(2.50) -+ -+dnl Checks for all prerequisites of the po subdirectory. -+AC_DEFUN([AM_PO_SUBDIRS], -+[ -+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl -+ AC_REQUIRE([AM_NLS])dnl -+ -+ dnl Perform the following tests also if --disable-nls has been given, -+ dnl because they are needed for "make dist" to work. -+ -+ dnl Search for GNU msgfmt in the PATH. -+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. -+ dnl The second test excludes FreeBSD msgfmt. -+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && -+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -+ -+ dnl Search for GNU xgettext 0.12 or newer in the PATH. -+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. -+ dnl The second test excludes FreeBSD xgettext. -+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && -+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ -+ dnl Search for GNU msgmerge 0.11 or newer in the PATH. -+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, -+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) -+ -+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -+ dnl Test whether we really found GNU msgfmt. -+ if test "$GMSGFMT" != ":"; then -+ dnl If it is no GNU msgfmt we define it as : so that the -+ dnl Makefiles still can work. -+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -+ AC_MSG_RESULT( -+ [found $GMSGFMT program is not GNU msgfmt; ignore it]) -+ GMSGFMT=":" -+ fi -+ fi -+ -+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -+ dnl Test whether we really found GNU xgettext. -+ if test "$XGETTEXT" != ":"; then -+ dnl If it is no GNU xgettext we define it as : so that the -+ dnl Makefiles still can work. -+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && -+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ AC_MSG_RESULT( -+ [found xgettext program is not GNU xgettext; ignore it]) -+ XGETTEXT=":" -+ fi -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ fi -+ -+ AC_OUTPUT_COMMANDS([ -+ for ac_file in $CONFIG_FILES; do -+ # Support "outfile[:infile[:infile...]]" -+ case "$ac_file" in -+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -+ esac -+ # PO directories have a Makefile.in generated from Makefile.in.in. -+ case "$ac_file" in */Makefile.in) -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ case "$ac_given_srcdir" in -+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -+ /*) top_srcdir="$ac_given_srcdir" ;; -+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ # Treat a directory as a PO directory if and only if it has a -+ # POTFILES.in file. This allows packages to have multiple PO -+ # directories under different names or in different locations. -+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then -+ rm -f "$ac_dir/POTFILES" -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" -+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -+ POMAKEFILEDEPS="POTFILES.in" -+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend -+ # on $ac_dir but don't depend on user-specified configuration -+ # parameters. -+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then -+ # The LINGUAS file contains the set of available languages. -+ if test -n "$OBSOLETE_ALL_LINGUAS"; then -+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -+ fi -+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` -+ # Hide the ALL_LINGUAS assigment from automake. -+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" -+ else -+ # The set of available languages was given in configure.in. -+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' -+ fi -+ # Compute POFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) -+ # Compute UPDATEPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) -+ # Compute DUMMYPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) -+ # Compute GMOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) -+ case "$ac_given_srcdir" in -+ .) srcdirpre= ;; -+ *) srcdirpre='$(srcdir)/' ;; -+ esac -+ POFILES= -+ UPDATEPOFILES= -+ DUMMYPOFILES= -+ GMOFILES= -+ for lang in $ALL_LINGUAS; do -+ POFILES="$POFILES $srcdirpre$lang.po" -+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" -+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" -+ done -+ # CATALOGS depends on both $ac_dir and the user's LINGUAS -+ # environment variable. -+ INST_LINGUAS= -+ if test -n "$ALL_LINGUAS"; then -+ for presentlang in $ALL_LINGUAS; do -+ useit=no -+ if test "%UNSET%" != "$LINGUAS"; then -+ desiredlanguages="$LINGUAS" -+ else -+ desiredlanguages="$ALL_LINGUAS" -+ fi -+ for desiredlang in $desiredlanguages; do -+ # Use the presentlang catalog if desiredlang is -+ # a. equal to presentlang, or -+ # b. a variant of presentlang (because in this case, -+ # presentlang can be used as a fallback for messages -+ # which are not translated in the desiredlang catalog). -+ case "$desiredlang" in -+ "$presentlang"*) useit=yes;; -+ esac -+ done -+ if test $useit = yes; then -+ INST_LINGUAS="$INST_LINGUAS $presentlang" -+ fi -+ done -+ fi -+ CATALOGS= -+ if test -n "$INST_LINGUAS"; then -+ for lang in $INST_LINGUAS; do -+ CATALOGS="$CATALOGS $lang.gmo" -+ done - fi -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do -+ if test -f "$f"; then -+ case "$f" in -+ *.orig | *.bak | *~) ;; -+ *) cat "$f" >> "$ac_dir/Makefile" ;; -+ esac -+ fi -+ done - fi -- fi -- done -+ ;; -+ esac -+ done], -+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute -+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it -+ # from automake. -+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' -+ # Capture the value of LINGUAS because we need it to compute CATALOGS. -+ LINGUAS="${LINGUAS-%UNSET%}" -+ ]) -+]) -+ -+dnl Postprocesses a Makefile in a directory containing PO files. -+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -+[ -+ # When this code is run, in config.status, two variables have already been -+ # set: -+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, -+ # - LINGUAS is the value of the environment variable LINGUAS at configure -+ # time. -+ -+changequote(,)dnl -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ case "$ac_given_srcdir" in -+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -+ /*) top_srcdir="$ac_given_srcdir" ;; -+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ -+ # Find a way to echo strings without interpreting backslash. -+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then -+ gt_echo='echo' -+ else -+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then -+ gt_echo='printf %s\n' -+ else -+ echo_func () { -+ cat < "$ac_file.tmp" -+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then -+ # Add dependencies that cannot be formulated as a simple suffix rule. -+ for lang in $ALL_LINGUAS; do -+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` -+ cat >> "$ac_file.tmp" < /dev/null; then -+ # Add dependencies that cannot be formulated as a simple suffix rule. -+ for lang in $ALL_LINGUAS; do -+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` -+ cat >> "$ac_file.tmp" <> "$ac_file.tmp" < -+#include -+/* The string "%2$d %1$d", with dollar characters protected from the shell's -+ dollar expansion (possibly an autoconf bug). */ -+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -+static char buf[100]; -+int main () -+{ -+ sprintf (buf, format, 33, 55); -+ return (strcmp (buf, "55 33") != 0); -+}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, -+ [ -+ AC_EGREP_CPP(notposix, [ -+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ -+ notposix -+#endif -+ ], gt_cv_func_printf_posix="guessing no", -+ gt_cv_func_printf_posix="guessing yes") -+ ]) -+ ]) -+ case $gt_cv_func_printf_posix in -+ *yes) -+ AC_DEFINE(HAVE_POSIX_PRINTF, 1, -+ [Define if your printf() function supports format strings with positions.]) -+ ;; -+ esac -+]) -+ -+# progtest.m4 serial 4 (gettext-0.14.2) -+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1996. -+ -+AC_PREREQ(2.50) -+ -+# Search path for a program which passes the given test. -+ -+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -+AC_DEFUN([AM_PATH_PROG_WITH_TEST], -+[ -+# Prepare PATH_SEPARATOR. -+# 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 -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" -+else -+ ac_executable_p="test -f" -+fi -+rm -f conf$$.file -+ -+# Extract the first word of "$2", so it can be a program name with args. -+set dummy $2; ac_word=[$]2 -+AC_MSG_CHECKING([for $ac_word]) -+AC_CACHE_VAL(ac_cv_path_$1, -+[case "[$]$1" in -+ [[\\/]]* | ?:[[\\/]]*) -+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in ifelse([$5], , $PATH, [$5]); do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD -+ if [$3]; then -+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi - done -- fi -- fi -- if test "X$ltrpathdirs" != "X"; then -- dnl When using libtool, the option that works for both libraries and -- dnl executables is -R. The -R options are cumulative. -- for found_dir in $ltrpathdirs; do -- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done -+ IFS="$ac_save_IFS" -+dnl If no 4th arg is given, leave the cache variable unset, -+dnl so AC_PATH_PROGS will keep looking. -+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -+])dnl -+ ;; -+esac])dnl -+$1="$ac_cv_path_$1" -+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then -+ AC_MSG_RESULT([$]$1) -+else -+ AC_MSG_RESULT(no) -+fi -+AC_SUBST($1)dnl -+]) -+ -+# signed.m4 serial 1 (gettext-0.10.40) -+dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([bh_C_SIGNED], -+[ -+ AC_CACHE_CHECK([for signed], bh_cv_c_signed, -+ [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) -+ if test $bh_cv_c_signed = no; then -+ AC_DEFINE(signed, , -+ [Define to empty if the C compiler doesn't support this keyword.]) - fi - ]) - --dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, --dnl unless already present in VAR. --dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes --dnl contains two or three consecutive elements that belong together. --AC_DEFUN([AC_LIB_APPENDTOVAR], -+# size_max.m4 serial 2 -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([gl_SIZE_MAX], - [ -- for element in [$2]; do -- haveit= -- for x in $[$1]; do -- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -- if test "X$x" = "X$element"; then -- haveit=yes -- break -+ AC_CHECK_HEADERS(stdint.h) -+ dnl First test whether the system already has SIZE_MAX. -+ AC_MSG_CHECKING([for SIZE_MAX]) -+ result= -+ AC_EGREP_CPP([Found it], [ -+#include -+#if HAVE_STDINT_H -+#include -+#endif -+#ifdef SIZE_MAX -+Found it -+#endif -+], result=yes) -+ if test -z "$result"; then -+ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider -+ dnl than the type 'unsigned long'. -+ dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', -+ dnl which is guaranteed to work from LONG_MIN to LONG_MAX. -+ _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, -+ [#include ], result=?) -+ _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, -+ [#include ], result=?) -+ _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, -+ [#include ], result=?) -+ if test "$fits_in_uint" = 1; then -+ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type -+ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. -+ AC_TRY_COMPILE([#include -+ extern size_t foo; -+ extern unsigned long foo; -+ ], [], fits_in_uint=0) -+ fi -+ if test -z "$result"; then -+ if test "$fits_in_uint" = 1; then -+ result="$res_hi$res_lo"U -+ else -+ result="$res_hi$res_lo"UL - fi -- done -- if test -z "$haveit"; then -- [$1]="${[$1]}${[$1]:+ }$element" -+ else -+ dnl Shouldn't happen, but who knows... -+ result='~(size_t)0' - fi -- done -+ fi -+ AC_MSG_RESULT([$result]) -+ if test "$result" != yes; then -+ AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], -+ [Define as the maximum value of type 'size_t', if the system doesn't define it.]) -+ fi - ]) - --# lib-ld.m4 serial 1 (gettext-0.11) --dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# stdint_h.m4 serial 5 -+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --dnl Subroutines of libtool.m4, --dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision --dnl with libtool.m4. -+dnl From Paul Eggert. - --dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. --AC_DEFUN([AC_LIB_PROG_LD_GNU], --[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, --[# I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -- acl_cv_prog_gnu_ld=yes --else -- acl_cv_prog_gnu_ld=no --fi]) --with_gnu_ld=$acl_cv_prog_gnu_ld -+# Define HAVE_STDINT_H_WITH_UINTMAX if exists, -+# doesn't clash with , and declares uintmax_t. -+ -+AC_DEFUN([gl_AC_HEADER_STDINT_H], -+[ -+ AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, -+ [AC_TRY_COMPILE( -+ [#include -+#include ], -+ [uintmax_t i = (uintmax_t) -1;], -+ gl_cv_header_stdint_h=yes, -+ gl_cv_header_stdint_h=no)]) -+ if test $gl_cv_header_stdint_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, -+ [Define if exists, doesn't clash with , -+ and declares uintmax_t. ]) -+ fi -+]) -+ -+# uintmax_t.m4 serial 9 -+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Paul Eggert. -+ -+AC_PREREQ(2.13) -+ -+# Define uintmax_t to 'unsigned long' or 'unsigned long long' -+# if it is not already defined in or . -+ -+AC_DEFUN([gl_AC_TYPE_UINTMAX_T], -+[ -+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) -+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then -+ AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) -+ test $ac_cv_type_unsigned_long_long = yes \ -+ && ac_type='unsigned long long' \ -+ || ac_type='unsigned long' -+ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, -+ [Define to unsigned long or unsigned long long -+ if and don't define.]) -+ else -+ AC_DEFINE(HAVE_UINTMAX_T, 1, -+ [Define if you have the 'uintmax_t' type in or .]) -+ fi -+]) -+ -+# ulonglong.m4 serial 4 -+dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. -+ -+AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], -+[ -+ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, -+ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], -+ [unsigned long long ullmax = (unsigned long long) -1; -+ return ull << i | ull >> i | ullmax / ull | ullmax % ull;], -+ ac_cv_type_unsigned_long_long=yes, -+ ac_cv_type_unsigned_long_long=no)]) -+ if test $ac_cv_type_unsigned_long_long = yes; then -+ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, -+ [Define if you have the 'unsigned long long' type.]) -+ fi -+]) -+ -+# wchar_t.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+dnl Test whether has the 'wchar_t' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_WCHAR_T], -+[ -+ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, -+ [AC_TRY_COMPILE([#include -+ wchar_t foo = (wchar_t)'\0';], , -+ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) -+ if test $gt_cv_c_wchar_t = yes; then -+ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) -+ fi -+]) -+ -+# wint_t.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+dnl Test whether has the 'wint_t' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_WINT_T], -+[ -+ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, -+ [AC_TRY_COMPILE([#include -+ wint_t foo = (wchar_t)'\0';], , -+ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) -+ if test $gt_cv_c_wint_t = yes; then -+ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) -+ fi -+]) -+ -+# xsize.m4 serial 3 -+dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+AC_DEFUN([gl_XSIZE], -+[ -+ dnl Prerequisites of lib/xsize.h. -+ AC_REQUIRE([gl_SIZE_MAX]) -+ AC_REQUIRE([AC_C_INLINE]) -+ AC_CHECK_HEADERS(stdint.h) -+]) -+ -+# 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` - ]) - --dnl From libtool-1.4. Sets the variable LD. --AC_DEFUN([AC_LIB_PROG_LD], --[AC_ARG_WITH(gnu-ld, --[ --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([AC_PROG_CC])dnl --AC_REQUIRE([AC_CANONICAL_HOST])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 GCC]) -- 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. -- [[\\/]* | [A-Za-z]:[\\/]*)] -- [re_direlt='/[^/][^/]*/\.\./'] -- # Canonicalize the path 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(acl_cv_path_LD, --[if test -z "$LD"; then -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -- acl_cv_path_LD="$ac_dir/$ac_prog" -- # Check to see if the program is GNU ld. I'd rather use --version, -- # but apparently some GNU ld's only accept -v. -- # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -- test "$with_gnu_ld" != no && break -+# 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 -- test "$with_gnu_ld" != yes && break -+ 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 -- IFS="$ac_save_ifs" --else -- acl_cv_path_LD="$LD" # Let the user override the test with a path. --fi]) --LD="$acl_cv_path_LD" --if test -n "$LD"; then -- AC_MSG_RESULT($LD) -+ -+ cd .. -+ rm -rf conftest.dir - else -- AC_MSG_RESULT(no) -+ am_cv_$1_dependencies_compiler_type=none - fi --test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) --AC_LIB_PROG_LD_GNU -+]) -+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]) - ]) - --# iconv.m4 serial AM4 (gettext-0.11.3) --dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. - --dnl From Bruno Haible. -+# 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 -+]) - --AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], --[ -- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) - -- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -- dnl accordingly. -- AC_LIB_LINKFLAGS_BODY([iconv]) -+# 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]) - ]) - --AC_DEFUN([AM_ICONV_LINK], --[ -- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and -- dnl those with the standalone portable GNU libiconv installed). -+# Generate code to set up dependency tracking. -*- Autoconf -*- - -- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -- dnl accordingly. -- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+# 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. - -- dnl Add $INCICONV to CPPFLAGS before performing the following checks, -- dnl because if the user has installed libiconv and not disabled its use -- dnl via --without-libiconv-prefix, he wants to use it. The first -- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. -- am_save_CPPFLAGS="$CPPFLAGS" -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) -+#serial 3 - -- AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ -- am_cv_func_iconv="no, consider installing GNU libiconv" -- am_cv_lib_iconv=no -- AC_TRY_LINK([#include --#include ], -- [iconv_t cd = iconv_open("",""); -- iconv(cd,NULL,NULL,NULL,NULL); -- iconv_close(cd);], -- am_cv_func_iconv=yes) -- if test "$am_cv_func_iconv" != yes; then -- am_save_LIBS="$LIBS" -- LIBS="$LIBS $LIBICONV" -- AC_TRY_LINK([#include --#include ], -- [iconv_t cd = iconv_open("",""); -- iconv(cd,NULL,NULL,NULL,NULL); -- iconv_close(cd);], -- am_cv_lib_iconv=yes -- am_cv_func_iconv=yes) -- LIBS="$am_save_LIBS" -- fi -- ]) -- if test "$am_cv_func_iconv" = yes; then -- AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) -- fi -- if test "$am_cv_lib_iconv" = yes; then -- AC_MSG_CHECKING([how to link with libiconv]) -- AC_MSG_RESULT([$LIBICONV]) -+# _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 -- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV -- dnl either. -- CPPFLAGS="$am_save_CPPFLAGS" -- LIBICONV= -- LTLIBICONV= -+ continue - fi -- AC_SUBST(LIBICONV) -- AC_SUBST(LTLIBICONV) --]) -+ # 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 - --AC_DEFUN([AM_ICONV], --[ -- AM_ICONV_LINK -- if test "$am_cv_func_iconv" = yes; then -- AC_MSG_CHECKING([for iconv declaration]) -- AC_CACHE_VAL(am_cv_proto_iconv, [ -- AC_TRY_COMPILE([ --#include --#include --extern --#ifdef __cplusplus --"C" --#endif --#if defined(__STDC__) || defined(__cplusplus) --size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); --#else --size_t iconv(); --#endif --], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") -- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) -- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` -- AC_MSG_RESULT([$]{ac_t:- -- }[$]am_cv_proto_iconv) -- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, -- [Define as const if the declaration of iconv() needs const.]) -- fi -+ -+# 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"]) - ]) - --# progtest.m4 serial 2 (gettext-0.10.40) --dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. --dnl --dnl This file can can be used in projects which are not available under --dnl the GNU General Public License or the GNU Library General Public --dnl License but which still want to provide support for the GNU gettext --dnl functionality. --dnl Please note that the actual code of the GNU gettext library is covered --dnl by the GNU Library General Public License, and the rest of the GNU --dnl gettext package package is covered by the GNU General Public License. --dnl They are *not* in the public domain. -+# 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 8 - --dnl Authors: --dnl Ulrich Drepper , 1996. -+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - --# Search path for a program which passes the given test. -+# Do all the work for Automake. -*- Autoconf -*- - --dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, --dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) --AC_DEFUN([AM_PATH_PROG_WITH_TEST], --[# Extract the first word of "$2", so it can be a program name with args. --set dummy $2; ac_word=[$]2 --AC_MSG_CHECKING([for $ac_word]) --AC_CACHE_VAL(ac_cv_path_$1, --[case "[$]$1" in -- /*) -- ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in ifelse([$5], , $PATH, [$5]); do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if [$3]; then -- ac_cv_path_$1="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" --dnl If no 4th arg is given, leave the cache variable unset, --dnl so AC_PATH_PROGS will keep looking. --ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" --])dnl -- ;; --esac])dnl --$1="$ac_cv_path_$1" --if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then -- AC_MSG_RESULT([$]$1) --else -- AC_MSG_RESULT(no) --fi --AC_SUBST($1)dnl --]) -+# 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. - --# isc-posix.m4 serial 2 (gettext-0.11.2) --dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -- --# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. -- --# This test replaces the one in autoconf. --# Currently this macro should have the same name as the autoconf macro --# because gettext's gettext.m4 (distributed in the automake package) --# still uses it. Otherwise, the use in gettext.m4 makes autoheader --# give these diagnostics: --# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX --# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX -+# serial 12 - --undefine([AC_ISC_POSIX]) -+# 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. - --AC_DEFUN([AC_ISC_POSIX], -- [ -- dnl This test replaces the obsolescent AC_ISC_POSIX kludge. -- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) -- ] --) -+# 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 - --# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) --dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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]) - --# Test for the GNU C Library, version 2.1 or newer. --# From Bruno Haible. -+# 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 - --AC_DEFUN([jm_GLIBC21], -- [ -- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, -- ac_cv_gnu_library_2_1, -- [AC_EGREP_CPP([Lucky GNU user], -- [ --#include --#ifdef __GNU_LIBRARY__ -- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -- Lucky GNU user -- #endif --#endif -- ], -- ac_cv_gnu_library_2_1=yes, -- ac_cv_gnu_library_2_1=no) -- ] -- ) -- AC_SUBST(GLIBC21) -- GLIBC21="$ac_cv_gnu_library_2_1" -- ] --) -+_AM_IF_OPTION([no-define],, -+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - --# intdiv0.m4 serial 1 (gettext-0.11.3) --dnl Copyright (C) 2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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 -+]) -+]) - --dnl From Bruno Haible. - --AC_DEFUN([gt_INTDIV0], --[ -- AC_REQUIRE([AC_PROG_CC])dnl -- AC_REQUIRE([AC_CANONICAL_HOST])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. - -- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], -- gt_cv_int_divbyzero_sigfpe, -- [ -- AC_TRY_RUN([ --#include --#include -+# 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]) - --static void --#ifdef __cplusplus --sigfpe_handler (int sig) --#else --sigfpe_handler (sig) int sig; --#endif --{ -- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -- exit (sig != SIGFPE); --} -+# 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. - --int x = 1; --int y = 0; --int z; --int nan; -+# 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)]) - --int main () --{ -- signal (SIGFPE, sigfpe_handler); --/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ --#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -- signal (SIGTRAP, sigfpe_handler); --#endif --/* Linux/SPARC yields signal SIGILL. */ --#if defined (__sparc__) && defined (__linux__) -- signal (SIGILL, sigfpe_handler); --#endif -+# 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. - -- z = x / y; -- nan = y / y; -- exit (1); --} --], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, -- [ -- # Guess based on the CPU. -- case "$host_cpu" in -- alpha* | i[34567]86 | m68k | s390*) -- gt_cv_int_divbyzero_sigfpe="guessing yes";; -- *) -- gt_cv_int_divbyzero_sigfpe="guessing no";; -- esac -- ]) -- ]) -- case "$gt_cv_int_divbyzero_sigfpe" in -- *yes) value=1;; -- *) value=0;; -- esac -- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, -- [Define if integer division by zero raises signal SIGFPE.]) --]) -+# serial 2 - --# uintmax_t.m4 serial 6 (gettext-0.11) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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])]) - --dnl From Paul Eggert. -+# Check to see how 'make' treats includes. -*- Autoconf -*- - --AC_PREREQ(2.13) -+# 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. - --# Define uintmax_t to `unsigned long' or `unsigned long long' --# if does not exist. -+# serial 3 - --AC_DEFUN([jm_AC_TYPE_UINTMAX_T], --[ -- AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) -- AC_REQUIRE([jm_AC_HEADER_STDINT_H]) -- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then -- AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) -- test $ac_cv_type_unsigned_long_long = yes \ -- && ac_type='unsigned long long' \ -- || ac_type='unsigned long' -- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, -- [Define to unsigned long or unsigned long long -- if and don't define.]) -- fi -+# 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 - ]) - --# inttypes_h.m4 serial 4 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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 - --dnl From Paul Eggert. -+# 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)]) - --# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, --# doesn't clash with , and declares uintmax_t. - --AC_DEFUN([jm_AC_HEADER_INTTYPES_H], --[ -- AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, -- [AC_TRY_COMPILE( -- [#include --#include ], -- [uintmax_t i = (uintmax_t) -1;], -- jm_ac_cv_header_inttypes_h=yes, -- jm_ac_cv_header_inttypes_h=no)]) -- if test $jm_ac_cv_header_inttypes_h = yes; then -- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, --[Define if exists, doesn't clash with , -- and declares uintmax_t. ]) -- fi -+# 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 - ]) - --# stdint_h.m4 serial 2 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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. - --dnl From Paul Eggert. -+# 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])]) - --# Define HAVE_STDINT_H_WITH_UINTMAX if exists, --# doesn't clash with , and declares uintmax_t. -+# Helper functions for option handling. -*- Autoconf -*- - --AC_DEFUN([jm_AC_HEADER_STDINT_H], --[ -- AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, -- [AC_TRY_COMPILE( -- [#include --#include ], -- [uintmax_t i = (uintmax_t) -1;], -- jm_ac_cv_header_stdint_h=yes, -- jm_ac_cv_header_stdint_h=no)]) -- if test $jm_ac_cv_header_stdint_h = yes; then -- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, --[Define if exists, doesn't clash with , -- and declares uintmax_t. ]) -- fi --]) -+# 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. - --# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) --dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# serial 3 - --dnl From Paul Eggert. -+# _AM_MANGLE_OPTION(NAME) -+# ----------------------- -+AC_DEFUN([_AM_MANGLE_OPTION], -+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - --AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], --[ -- AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, -- [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], -- [unsigned long long ullmax = (unsigned long long) -1; -- return ull << i | ull >> i | ullmax / ull | ullmax % ull;], -- ac_cv_type_unsigned_long_long=yes, -- ac_cv_type_unsigned_long_long=no)]) -- if test $ac_cv_type_unsigned_long_long = yes; then -- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, -- [Define if you have the unsigned long long type.]) -- fi --]) -+# _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)]) - --# inttypes.m4 serial 1 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# _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)])]) - --dnl From Paul Eggert. -+# _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])]) - --# Define HAVE_INTTYPES_H if exists and doesn't clash with --# . -+# Check to make sure that the build environment is sane. -*- Autoconf -*- - --AC_DEFUN([gt_HEADER_INTTYPES_H], --[ -- AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, -- [ -- AC_TRY_COMPILE( -- [#include --#include ], -- [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) -- ]) -- if test $gt_cv_header_inttypes_h = yes; then -- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, -- [Define if exists and doesn't clash with .]) -- fi --]) -+# 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. - --# inttypes-pri.m4 serial 1 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# serial 4 - --dnl From Bruno Haible. -+# 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 - --# Define PRI_MACROS_BROKEN if exists and defines the PRI* --# macros to non-string values. This is the case on AIX 4.3.3. -+ # 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 - --AC_DEFUN([gt_INTTYPES_PRI], --[ -- AC_REQUIRE([gt_HEADER_INTTYPES_H]) -- if test $gt_cv_header_inttypes_h = yes; then -- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], -- gt_cv_inttypes_pri_broken, -- [ -- AC_TRY_COMPILE([#include --#ifdef PRId32 --char *p = PRId32; --#endif --], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) -- ]) -- fi -- if test "$gt_cv_inttypes_pri_broken" = yes; then -- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, -- [Define if exists and defines unusable PRI* macros.]) -- 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)]) - --# codeset.m4 serial AM1 (gettext-0.10.40) --dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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. - --dnl From Bruno Haible. -+# 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])]) - --AC_DEFUN([AM_LANGINFO_CODESET], --[ -- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, -- [AC_TRY_LINK([#include ], -- [char* cs = nl_langinfo(CODESET);], -- am_cv_langinfo_codeset=yes, -- am_cv_langinfo_codeset=no) -- ]) -- if test $am_cv_langinfo_codeset = yes; then -- AC_DEFINE(HAVE_LANGINFO_CODESET, 1, -- [Define if you have and nl_langinfo(CODESET).]) -- fi --]) -+# Check how to create a tarball. -*- Autoconf -*- - --# lcmessage.m4 serial 3 (gettext-0.11.3) --dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. --dnl --dnl This file can can be used in projects which are not available under --dnl the GNU General Public License or the GNU Library General Public --dnl License but which still want to provide support for the GNU gettext --dnl functionality. --dnl Please note that the actual code of the GNU gettext library is covered --dnl by the GNU Library General Public License, and the rest of the GNU --dnl gettext package package is covered by the GNU General Public License. --dnl They are *not* in the public domain. -+# 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. - --dnl Authors: --dnl Ulrich Drepper , 1995. -+# serial 2 - --# Check whether LC_MESSAGES is available in . -+# _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 - --AC_DEFUN([AM_LC_MESSAGES], --[ -- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, -- [AC_TRY_LINK([#include ], [return LC_MESSAGES], -- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) -- if test $am_cv_val_LC_MESSAGES = yes; then -- AC_DEFINE(HAVE_LC_MESSAGES, 1, -- [Define if your file defines LC_MESSAGES.]) -+ # 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 - -+m4_include([acinclude.m4]) ---- gsmlib-1.10.orig/configure -+++ gsmlib-1.10/configure -@@ -1,178 +1,10 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.53. -+# Generated by GNU Autoconf 2.59. - # --# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+# 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. -- --# Find the correct PATH separator. Usually this is `:', but --# DJGPP uses `;' like DOS. --if test "X${PATH_SEPARATOR+set}" != Xset; then -- UNAME=${UNAME-`uname 2>/dev/null`} -- case X$UNAME in -- *-DOS) lt_cv_sys_path_separator=';' ;; -- *) lt_cv_sys_path_separator=':' ;; -- esac -- PATH_SEPARATOR=$lt_cv_sys_path_separator --fi -- -- --# 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 && -- 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. -- -- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- 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="$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 -- -- -- --if expr a : '\(a\)' >/dev/null 2>&1; then -- as_expr=expr --else -- as_expr=false --fi -- -- - ## --------------------- ## - ## M4sh Initialization. ## - ## --------------------- ## -@@ -181,46 +13,57 @@ - 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 - --# NLS nuisances. - # Support unset when possible. --if (FOO=FOO; unset FOO) >/dev/null 2>&1; then -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset - else - as_unset=false - fi - --(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && -- { $as_unset LANG || test "${LANG+set}" != set; } || -- { LANG=C; export LANG; } --(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && -- { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || -- { LC_ALL=C; export LC_ALL; } --(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && -- { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || -- { LC_TIME=C; export LC_TIME; } --(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && -- { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || -- { LC_CTYPE=C; export LC_CTYPE; } --(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && -- { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || -- { LANGUAGE=C; export LANGUAGE; } --(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && -- { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || -- { LC_COLLATE=C; export LC_COLLATE; } --(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && -- { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || -- { LC_NUMERIC=C; export LC_NUMERIC; } --(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && -- { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || -- { LC_MESSAGES=C; export LC_MESSAGES; } -+ -+# 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=`(basename "$0") 2>/dev/null || -+as_me=`$as_basename "$0" || - $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ -@@ -231,6 +74,7 @@ - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -+ - # PATH needs CR, and LINENO needs CR and PATH. - # Avoid depending upon Character Ranges. - as_cr_letters='abcdefghijklmnopqrstuvwxyz' -@@ -241,15 +85,15 @@ - - # The user is always right. - if test "${PATH_SEPARATOR+set}" != set; then -- echo "#! /bin/sh" >conftest.sh -- echo "exit 0" >>conftest.sh -- chmod +x conftest.sh -- if (PATH=".;."; conftest.sh) >/dev/null 2>&1; 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 conftest.sh -+ rm -f conf$$.sh - fi - - -@@ -297,6 +141,8 @@ - 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+"$@"} -@@ -369,13 +215,20 @@ - 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="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -+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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - # IFS -@@ -385,76 +238,233 @@ - IFS=" $as_nl" - - # CDPATH. --$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } -- -+$as_unset CDPATH - --# 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 --cross_compiling=no --subdirs= --MFLAGS= --MAKEFLAGS= -+# Check that we are running under the correct shell. - 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} -+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 - --# Identity of this package. --PACKAGE_NAME= --PACKAGE_TARNAME= --PACKAGE_VERSION= --PACKAGE_STRING= --PACKAGE_BUGREPORT= -+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 - --ac_unique_file="gsmlib/gsm_error.h" --# 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" -+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= -+PACKAGE_TARNAME= -+PACKAGE_VERSION= -+PACKAGE_STRING= -+PACKAGE_BUGREPORT= -+ -+ac_unique_file="gsmlib/gsm_error.h" -+# 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_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 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT 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 DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ALLOCA GSM_VERSION MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE GLIBC2 GLIBC21 INTL_MACOSX_LIBS HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB COMPILE_INTL_TRUE COMPILE_INTL_FALSE LIBOBJS LTLIBOBJS' -+ac_subst_files='' - - # Initialize some variables set by options. - ac_init_help= -@@ -812,7 +822,7 @@ - - # Be sure to have absolute paths. - for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ -- localstatedir libdir includedir oldincludedir infodir mandir -+ localstatedir libdir includedir oldincludedir infodir mandir - do - eval ac_val=$`echo $ac_var` - case $ac_val in -@@ -852,10 +862,10 @@ - # 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 || -+ X"$0" : 'X\(//\)[^/]' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || - echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } -@@ -878,6 +888,9 @@ - { (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 -@@ -919,6 +932,18 @@ - 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. -@@ -952,9 +977,9 @@ - cat <<_ACEOF - Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX -- [$ac_default_prefix] -+ [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX -- [PREFIX] -+ [PREFIX] - - By default, \`make install' will install all the files in - \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -@@ -998,24 +1023,31 @@ - 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 builds -- --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-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) -- --disable-rpath do not hardcode runtime library paths - --disable-nls do not use Native Language Support -+ --disable-rpath do not hardcode runtime library paths - - 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-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-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib -+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-included-gettext use the GNU gettext library included here -- --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib -+ --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - - Some influential environment variables: -@@ -1028,6 +1060,9 @@ - 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. -@@ -1065,12 +1100,45 @@ - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac --# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be --# absolute. --ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` --ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` --ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` --ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` -+ -+# 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. -@@ -1081,13 +1149,13 @@ - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || -- test -f $ac_srcdir/configure.in; then -+ 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 -+ cd "$ac_popdir" - done - fi - -@@ -1095,8 +1163,7 @@ - if $ac_init_version; then - cat <<\_ACEOF - --Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 --Free Software Foundation, Inc. -+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 -@@ -1108,7 +1175,7 @@ - running configure, to aid debugging if configure makes a mistake. - - It was created by $as_me, which was --generated by GNU Autoconf 2.53. Invocation command line was -+generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -@@ -1160,27 +1227,54 @@ - - # 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= --for ac_arg -+ac_must_keep_next=false -+for ac_pass in 1 2 - do -- case $ac_arg in -- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -- | --no-cr | --no-c | -n ) continue ;; -- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) -- continue ;; -- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) -- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; -- esac -- case " $ac_configure_args " in -- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. -- *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" -- ac_sep=" " ;; -- esac -- # Get rid of the leading space. -+ 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 -@@ -1191,6 +1285,7 @@ - # Save into config.log some information that might help in debugging. - { - echo -+ - cat <<\_ASBOX - ## ---------------- ## - ## Cache variables. ## -@@ -1203,16 +1298,45 @@ - 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" -+ "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" -+ "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 - ## ----------- ## -@@ -1220,14 +1344,14 @@ - ## ----------- ## - _ASBOX - echo -- sed "/^$/d" confdefs.h -+ 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.* *.core && -+ rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -@@ -1307,7 +1431,7 @@ - # 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 -+ 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" -@@ -1324,13 +1448,13 @@ - ,);; - *) - 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:$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:$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:$LINENO: current value: $ac_new_val" >&5 - echo "$as_me: current value: $ac_new_val" >&2;} -- ac_cache_corrupted=: -+ ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. -@@ -1378,6 +1502,7 @@ - - - -+ - ac_aux_dir= - for ac_dir in scripts $srcdir/scripts; do - if test -f $ac_dir/install-sh; then -@@ -1414,6 +1539,7 @@ - # 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 -@@ -1430,6 +1556,7 @@ - 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. -@@ -1437,20 +1564,20 @@ - # 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 -+ 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 - ;; -@@ -1685,9 +1812,7 @@ - # 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 -- set dummy "$as_dir/$ac_word" ${1+"$@"} -- shift -- ac_cv_prog_CC="$@" -+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi - fi - fi -@@ -1792,8 +1917,10 @@ - fi - - --test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 --echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} -+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. -@@ -1817,15 +1944,12 @@ - (exit $ac_status); } - - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -1835,12 +1959,12 @@ - } - _ACEOF - ac_clean_files_save=$ac_clean_files --ac_clean_files="$ac_clean_files a.out a.exe" -+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" >&5 --echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -+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 -@@ -1854,26 +1978,39 @@ - # 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= --for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; -- ls a.out conftest 2>/dev/null; -- ls a.* conftest.* 2>/dev/null`; do -+# 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 | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; -- a.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 --akim. -- export ac_cv_exeext -- break;; -- * ) break;; -+ *.$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 --cat conftest.$ac_ext >&5 --{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 --echo "$as_me: error: C compiler cannot create executables" >&2;} -+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 - -@@ -1900,9 +2037,11 @@ - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. --If you meant to cross compile, use \`--host'." >&5 -+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'." >&2;} -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -@@ -1910,7 +2049,7 @@ - echo "$as_me:$LINENO: result: yes" >&5 - echo "${ECHO_T}yes" >&6 - --rm -f a.out a.exe conftest$ac_cv_exeext -+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. -@@ -1930,18 +2069,21 @@ - # 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 `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do -+for ac_file in conftest.exe conftest conftest.*; do -+ test -f "$ac_file" || continue - case $ac_file in -- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -- export ac_cv_exeext -- break;; -+ export ac_cv_exeext -+ break;; - * ) break;; - esac - done - else -- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 --echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} -+ { { 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 - -@@ -1958,15 +2100,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -1983,16 +2122,19 @@ - (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 ) ;; -+ *.$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 --cat conftest.$ac_ext >&5 --{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 --echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} -+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 - -@@ -2008,15 +2150,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2030,11 +2169,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2043,10 +2191,11 @@ - ac_compiler_gnu=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_compiler_gnu=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_c_compiler_gnu=$ac_compiler_gnu - - fi -@@ -2062,15 +2211,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2081,11 +2227,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2094,10 +2249,11 @@ - ac_cv_prog_cc_g=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_cv_prog_cc_g=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -@@ -2116,6 +2272,120 @@ - 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 -@@ -2127,19 +2397,27 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 \ -- ''\ -- '#include ' \ -+ '' \ - '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 ();' \ -@@ -2147,16 +2425,13 @@ - 'void exit (int);' - do - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+#include - int - main () - { -@@ -2167,11 +2442,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2180,20 +2464,18 @@ - : - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - continue - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2204,11 +2486,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2217,9 +2508,10 @@ - break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done - rm -f conftest* - if test -n "$ac_declaration"; then -@@ -2230,9 +2522,10 @@ - - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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' -@@ -2249,8 +2542,11 @@ - ac_check_lib_save_LIBS=$LIBS - LIBS="-lintl $LIBS" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 -@@ -2259,12 +2555,6 @@ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char textdomain (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2275,11 +2565,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -2288,10 +2587,12 @@ - ac_cv_lib_intl_textdomain=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_cv_lib_intl_textdomain=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+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_intl_textdomain" >&5 -@@ -2306,14 +2607,10 @@ - fi - - --# Add the stamp file to the list of files AC keeps track of, --# along with our hook. --ac_config_headers="$ac_config_headers gsm_config.h" -+ ac_config_headers="$ac_config_headers gsm_config.h" - - -- -- --am__api_version="1.6" -+am__api_version="1.9" - 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 -@@ -2372,7 +2669,6 @@ - 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` - -@@ -2386,6 +2682,39 @@ - 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. -@@ -2426,15 +2755,15 @@ - 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_,'` -+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}"' -+ @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=` -@@ -2455,24 +2784,25 @@ - SET_MAKE="MAKE=${MAKE-make}" - fi - --rm -f .deps 2>/dev/null --mkdir .deps 2>/dev/null --if test -d .deps; then -- DEPDIR=.deps -+rm -rf .tst 2>/dev/null -+mkdir .tst 2>/dev/null -+if test -d .tst; then -+ am__leading_dot=. - else -- # MS-DOS does not allow filenames that begin with a dot. -- DEPDIR=_deps -+ am__leading_dot=_ - fi --rmdir .deps 2>/dev/null -+rmdir .tst 2>/dev/null - -+DEPDIR="${am__leading_dot}deps" - --ac_config_commands="$ac_config_commands depfiles" -+ ac_config_commands="$ac_config_commands depfiles" - - - am_make=${MAKE-make} - cat > confinc << 'END' --doit: -+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 -@@ -2487,7 +2817,7 @@ - # 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 | fgrep -v 'ing directory'`" = "done"; then -+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -@@ -2528,7 +2858,7 @@ - - - -- # test to see if srcdir already configured -+# 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 -@@ -2536,6 +2866,16 @@ - { (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=gsmlib - VERSION=1.10 -@@ -2566,9 +2906,6 @@ - - MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -- --AMTAR=${AMTAR-"${am_missing_run}tar"} -- - install_sh=${install_sh-"$am_aux_dir/install-sh"} - - # Installed binaries are usually stripped using `strip' when the user -@@ -2661,6 +2998,13 @@ - - # 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 -' -+ -+ - - - depcc="$CC" am_compiler_list= -@@ -2681,18 +3025,34 @@ - # 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. -- echo '#include "conftest.h"' > conftest.c -- echo 'int i;' > conftest.h -- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf -+ : > 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) -@@ -2710,13 +3070,25 @@ - # 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=conftest.c object=conftest.o \ -- depfile=conftest.Po tmpdepfile=conftest.TPo \ -- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && -- grep conftest.h conftest.Po > /dev/null 2>&1 && -+ 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 -- am_cv_CC_dependencies_compiler_type=$depmode -- break -+ # 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 - -@@ -2733,30 +3105,44 @@ - - - -+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 -+ -+ -+ - - # 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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_shared=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac -+ 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; - -+ - if test "$CXXFLAGS" = ""; then - CXXFLAGS="-O2" - fi -@@ -2774,46 +3160,50 @@ - 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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_static=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac -+ 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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_fast_install=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac -+ 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 -@@ -2868,16 +3258,77 @@ - host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - --# Find the correct PATH separator. Usually this is `:', but --# DJGPP uses `;' like DOS. --if test "X${PATH_SEPARATOR+set}" != Xset; then -- UNAME=${UNAME-`uname 2>/dev/null`} -- case X$UNAME in -- *-DOS) lt_cv_sys_path_separator=';' ;; -- *) lt_cv_sys_path_separator=':' ;; -- esac -- PATH_SEPARATOR=$lt_cv_sys_path_separator -+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 -+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 -+ -+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 -+ - - - # Check whether --with-gnu-ld or --without-gnu-ld was given. -@@ -2890,8 +3341,8 @@ - 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 GCC" >&5 --echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 -+ 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 -@@ -2901,12 +3352,12 @@ - esac - case $ac_prog in - # Accept absolute paths. -- [\\/]* | [A-Za-z]:[\\/]*) -+ [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' -- # Canonicalize the path of ld -- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` -+ # 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%/%"` -+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; -@@ -2930,22 +3381,26 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - if test -z "$LD"; then -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ 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 GNU ld's only accept -v. -+ # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -+ case `"$lt_cv_path_LD" -v 2>&1 &6 - else -- # I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -+ # 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 -@@ -2989,7 +3447,20 @@ - 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 --test -n "$reload_flag" && reload_flag=" $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='$CC -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 -@@ -3000,35 +3471,42 @@ - # Let the user override the test. - lt_cv_path_NM="$NM" - else -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do -+ IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. -- tmp_nm=$ac_dir/${ac_tool_prefix}nm -- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then -+ tmp_nm="$ac_dir/${ac_tool_prefix}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 -- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then -+ 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 -- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- lt_cv_path_NM="$tmp_nm -p" -- break -- else -- 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 -- fi -+ ;; -+ *) -+ 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="$ac_save_ifs" -+ IFS="$lt_save_ifs" - 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: result: $NM" >&5 --echo "${ECHO_T}$NM" >&6 - - echo "$as_me:$LINENO: checking whether ln -s works" >&5 - echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -@@ -3041,8 +3519,8 @@ - echo "${ECHO_T}no, using $LN_S" >&6 - fi - --echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 --echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 -+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 -@@ -3056,7 +3534,7 @@ - # '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 egrep regex. -+# 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. - -@@ -3069,37 +3547,36 @@ - lt_cv_deplibs_check_method=pass_all - ;; - --bsdi4*) -+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* | mingw* | pw32*) -+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='file_magic Mach-O dynamically linked shared library' -- lt_cv_file_magic_cmd='/usr/bin/file -L' -- case "$host_os" in -- rhapsody* | darwin1.[012]) -- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` -- ;; -- *) # Darwin 1.3 on -- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' -- ;; -- esac -+ lt_cv_deplibs_check_method=pass_all - ;; - --freebsd*) -+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)/i[3-9]86 (compact )?demand paged shared library' -+ 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.*` - ;; -@@ -3113,50 +3590,44 @@ - lt_cv_deplibs_check_method=pass_all - ;; - --hpux10.20*|hpux11*) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -+hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- --irix5* | irix6*) -- case $host_os in -- irix5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" -+ 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 - ;; - *) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" -+ 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 -- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` -+ ;; -+ -+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-gnu*) -- case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) -- lt_cv_deplibs_check_method=pass_all ;; -- *) -- # glibc up to 2.1.1 does not perform some relocations on ARM -- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; -- esac -- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` -+linux*) -+ lt_cv_deplibs_check_method=pass_all - ;; - --netbsd*) -+netbsd* | netbsdelf*-gnu | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then -- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -+ 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$' -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -@@ -3166,20 +3637,19 @@ - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -+nto-qnx*) -+ lt_cv_deplibs_check_method=unknown -+ ;; -+ - openbsd*) -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else -- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - - osf3* | osf4* | osf5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' -- lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -@@ -3189,11 +3659,6 @@ - - solaris*) - lt_cv_deplibs_check_method=pass_all -- lt_cv_file_magic_test_file=/lib/libc.so -- ;; -- --sysv5uw[78]* | sysv4*uw2*) -- lt_cv_deplibs_check_method=pass_all - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -@@ -3214,8 +3679,15 @@ - 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 -+ ;; - esac - ;; -+ -+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; - esac - - fi -@@ -3223,207 +3695,208 @@ - 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"} - -+# 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" - --# 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" >&5 --echo $ECHO_N "checking command to parse $NM output... $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 the above into a raw symbol and a C symbol. --symxfrm='\1 \2\3 \3' -- --# Transform an extracted symbol line into a proper C declaration --lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" -- --# Transform an extracted symbol line into symbol name and symbol address --lt_cv_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 -- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -- ;; --irix*) -- symcode='[BCDEGRST]' -- ;; --solaris* | sysv5*) -- symcode='[BDT]' -- ;; --sysv4) -- symcode='[DFNSTU]' -- ;; --esac -- --# Handle CRLF in mingw tool chain --opt_cr= --case $host_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. --if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then -- symcode='[ABCDGISTW]' --fi -- --# Try without a prefix undercore, then with it. --for ac_symprfx in "" "_"; do -- -- # 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 < 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 -- # 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 -+ 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 3740 "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); } && 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 -+ (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* -+ ;; - -- # Make sure that we snagged all the symbols we need. -- if egrep ' nm_test_var$' "$nlist" >/dev/null; then -- if egrep ' nm_test_func$' "$nlist" >/dev/null; then -- cat < conftest.$ac_ext --#ifdef __cplusplus --extern "C" { --#endif -+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* -+ ;; - --EOF -- # Now generate the symbol file. -- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' -+*-*-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 --#if defined (__STDC__) && __STDC__ --# define lt_ptr void * --#else --# define lt_ptr char * --# define const --#endif -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --/* The mapping between symbol names and symbols. */ --const struct { -- const char *name; -- lt_ptr address; --} --lt_preloaded_symbols[] = -+int -+main () - { --EOF -- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext -- cat <<\EOF >> conftest.$ac_ext -- {0, (lt_ptr) 0} --}; - --#ifdef __cplusplus -+ ; -+ return 0; - } --#endif --EOF -- # Now try linking the two files. -- mv conftest.$ac_objext conftstm.$ac_objext -- save_LIBS="$LIBS" -- save_CFLAGS="$CFLAGS" -- LIBS="conftstm.$ac_objext" -- CFLAGS="$CFLAGS$no_builtin_flag" -- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+_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); } && test -s conftest; then -- pipe_works=yes -- fi -- LIBS="$save_LIBS" -- CFLAGS="$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 -+ (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 - --global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" --if test -z "$lt_cv_sys_global_symbol_pipe"; then -- global_symbol_to_cdecl= -- global_symbol_to_c_name_address= --else -- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" -- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" --fi --if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; --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: 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 -+ ;; -+ -+esac -+ -+need_locks="$enable_libtool_lock" -+ - - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' -@@ -3448,24 +3921,34 @@ - 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3476,7 +3959,8 @@ - : - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Broken: fails on valid input. - continue - fi -@@ -3485,20 +3969,24 @@ - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3510,7 +3998,8 @@ - continue - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Passes both tests. - ac_preproc_ok=: - break -@@ -3539,24 +4028,34 @@ - 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3567,7 +4066,8 @@ - : - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Broken: fails on valid input. - continue - fi -@@ -3576,20 +4076,24 @@ - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3601,7 +4105,8 @@ - continue - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Passes both tests. - ac_preproc_ok=: - break -@@ -3614,8 +4119,10 @@ - if $ac_preproc_ok; then - : - else -- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 --echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} -+ { { 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 - -@@ -3632,49 +4139,67 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 - ac_status=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -+ (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 -- cat conftest.$ac_ext >&5 -- ac_cv_header_stdc=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_header_stdc=no - fi --rm -f conftest.err conftest.$ac_ext -+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 --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 -+ $EGREP "memchr" >/dev/null 2>&1; then - : - else - ac_cv_header_stdc=no -@@ -3686,13 +4211,16 @@ - 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 --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 -+ $EGREP "free" >/dev/null 2>&1; then - : - else - ac_cv_header_stdc=no -@@ -3707,16 +4235,20 @@ - : - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) - # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) - #endif - -@@ -3727,7 +4259,7 @@ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) -- || toupper (i) != TOUPPER (i)) -+ || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); - } -@@ -3747,11 +4279,12 @@ - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ( exit $ac_status ) - ac_cv_header_stdc=no - fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - fi - fi -@@ -3776,7 +4309,7 @@ - - - for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ -- inttypes.h stdint.h unistd.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 -@@ -3785,19 +4318,31 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -3806,10 +4351,11 @@ - eval "$as_ac_Header=yes" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - eval "$as_ac_Header=no" - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -@@ -3840,18 +4386,30 @@ - echo "$as_me:$LINENO: checking $ac_header usability" >&5 - echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -3860,10 +4418,11 @@ - ac_header_compiler=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_header_compiler=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 - -@@ -3871,20 +4430,24 @@ - echo "$as_me:$LINENO: checking $ac_header presence" >&5 - echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3895,7 +4458,8 @@ - ac_header_preproc=yes - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_header_preproc=no - fi - rm -f conftest.err conftest.$ac_ext -@@ -3903,26 +4467,43 @@ - echo "${ECHO_T}$ac_header_preproc" >&6 - - # So? What about this header? --case $ac_header_compiler:$ac_header_preproc in -- yes:no ) -+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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- no:yes ) -+ { 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: 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: 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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" -+ 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 -@@ -3937,159 +4518,65 @@ - - done - -- -- -- -- --# 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 -+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 -- case $MAGIC_CMD in -- /*) -- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. -- ;; -- ?:/*) -- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. -- ;; -- *) -- ac_save_MAGIC_CMD="$MAGIC_CMD" -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -- ac_dummy="/usr/bin:$PATH" -- for ac_dir in $ac_dummy; do -- 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 -+ 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 - --EOF -- fi ;; -- esac -- fi -- break -- fi -- done -- IFS="$ac_save_ifs" -- MAGIC_CMD="$ac_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 -+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 - --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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. -- ;; -- *) -- ac_save_MAGIC_CMD="$MAGIC_CMD" -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -- ac_dummy="/usr/bin:$PATH" -- for ac_dir in $ac_dummy; do -- 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 -+ test -n "$CXX" && break - done -- IFS="$ac_save_ifs" -- MAGIC_CMD="$ac_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 -- --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 -+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_RANLIB+set}" = set; then -+if test "${ac_cv_prog_ac_ct_CXX+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. -+ 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 -@@ -4098,7 +4585,7 @@ - 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" -+ ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -@@ -4107,4958 +4594,18846 @@ - - fi - fi --RANLIB=$ac_cv_prog_RANLIB --if test -n "$RANLIB"; then -- echo "$as_me:$LINENO: result: $RANLIB" >&5 --echo "${ECHO_T}$RANLIB" >&6 -+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 - --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 -+ test -n "$ac_ct_CXX" && break - done -+test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - -- 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 -+ CXX=$ac_ct_CXX - 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 -+# 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 -- 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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --fi --fi --STRIP=$ac_cv_prog_STRIP --if test -n "$STRIP"; then -- echo "$as_me:$LINENO: result: $STRIP" >&5 --echo "${ECHO_T}$STRIP" >&6 -+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:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 --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 "$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 -- 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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - -- 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 -+int -+main () -+{ - -- STRIP=$ac_ct_STRIP --else -- STRIP="$ac_cv_prog_STRIP" --fi -- -- --enable_dlopen=no --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 -- --# Some flags need to be propagated to the compiler or linker for good --# libtool support. --case $host in --*-*-irix6*) -- # Find out which ABI we are using. -- echo '#line 4259 "configure"' > conftest.$ac_ext -- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+ ; -+ 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); }; then -- 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 -- 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 -+ (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_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 --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+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 conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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 -- lt_cv_cc_needs_belf=yes -+ : - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --lt_cv_cc_needs_belf=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+continue - fi --rm -f 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 -+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 --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 -- ;; -+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 - --esac -+depcc="$CXX" am_compiler_list= - --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --Xsed='sed -e s/^X//' --sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' -+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 - --# Same as above, but do not quote variable references. --double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' -+ 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 - --# Sed substitution to delay expansion of an escaped shell variable in a --# double_quote_subst'ed string. --delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+ 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 - --# Constants: --rm="rm -f" -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_CXX_dependencies_compiler_type=none -+fi - --# Global variables: --default_ofile=libtool --can_build_shared=yes -+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 - --# All known linkers require a `.a' archive for static linking (except M$VC, --# which needs '.lib'). --libext=a --ltmain="$ac_aux_dir/ltmain.sh" --ofile="$default_ofile" --with_gnu_ld="$lt_cv_prog_gnu_ld" --need_locks="$enable_libtool_lock" - --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 "$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 "$OBJDUMP" && OBJDUMP=objdump --test -z "$RANLIB" && RANLIB=: --test -z "$STRIP" && STRIP=: --test -z "$ac_objext" && ac_objext=o -- --if test x"$host" != x"$build"; then -- ac_tool_prefix=${host_alias}- --else -- ac_tool_prefix= --fi -- --# Transform linux* to *-*-linux-gnu*, to support old configure scripts. --case $host_os in --linux-gnu*) ;; --linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` --esac -- --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 -- --# 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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -- ;; -- *) -- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -- ;; -- esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" --fi - --# Allow CC to be a program name with arguments. --set dummy $CC --compiler="$2" -- --echo "$as_me:$LINENO: checking for objdir" >&5 --echo $ECHO_N "checking for objdir... $ECHO_C" >&6 --rm -f .libs 2>/dev/null --mkdir .libs 2>/dev/null --if test -d .libs; then -- objdir=.libs -+if -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then -+ am__fastdepCXX_TRUE= -+ am__fastdepCXX_FALSE='#' - else -- # MS-DOS does not allow filenames that begin with a dot. -- objdir=_libs -+ am__fastdepCXX_TRUE='#' -+ am__fastdepCXX_FALSE= - fi --rmdir .libs 2>/dev/null --echo "$as_me:$LINENO: result: $objdir" >&5 --echo "${ECHO_T}$objdir" >&6 - - - --# 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 - --# We assume here that the value for lt_cv_prog_cc_pic will not be cached --# in isolation, and that seeing it set (from the cache) indicates that --# the associated values are set (in the cache) correctly too. --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 "${lt_cv_prog_cc_pic+set}" = set; then -+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 -- lt_cv_prog_cc_pic= -- lt_cv_prog_cc_shlib= -- lt_cv_prog_cc_wl= -- lt_cv_prog_cc_static= -- lt_cv_prog_cc_no_builtin= -- lt_cv_prog_cc_can_build_shared=$can_build_shared -- -- if test "$GCC" = yes; then -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-static' -- -- case $host_os in -- aix*) -- # Below there is a dirty hack to force normal static linking with -ldl -- # The problem is because libdl dynamically linked with both libc and -- # libC (AIX C++ library), which obviously doesn't included in libraries -- # list by gcc. This cause undefined symbols with -static flags. -- # This hack allows C programs to be linked with "-static -ldl", but -- # not sure about C++ programs. -- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" -- ;; -- 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' -- ;; -- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) -- # PIC is the default for these OSes. -- ;; -- darwin* | rhapsody*) -- # PIC is the default on this platform -- # Common symbols not allowed in MH_DYLIB files -- lt_cv_prog_cc_pic='-fno-common' -- ;; -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- sysv4*MP*) -- if test -d /usr/nec; then -- lt_cv_prog_cc_pic=-Kconform_pic -- fi -- ;; -- *) -- lt_cv_prog_cc_pic='-fPIC' -- ;; -- esac -+ # 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 -- # PORTME Check for PIC flags for the system compiler. -- case $host_os in -- aix3* | aix4* | aix5*) -- lt_cv_prog_cc_wl='-Wl,' -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- lt_cv_prog_cc_static='-Bstatic' -- else -- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' -- fi -- ;; -- -- hpux9* | hpux10* | hpux11*) -- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" -- lt_cv_prog_cc_pic='+Z' -- ;; -- -- irix5* | irix6*) -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- # PIC (with -KPIC) is the default. -- ;; -- -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- -- newsos6) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- osf3* | osf4* | osf5*) -- # All OSF/1 code is PIC. -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- ;; -- -- sco3.2v5*) -- lt_cv_prog_cc_pic='-Kpic' -- lt_cv_prog_cc_static='-dn' -- lt_cv_prog_cc_shlib='-belf' -- ;; -- -- solaris*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Wl,' -- ;; -- -- sunos4*) -- lt_cv_prog_cc_pic='-PIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Qoption ld ' -- ;; -- -- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- if test "x$host_vendor" = xsni; then -- lt_cv_prog_cc_wl='-LD' -- else -- lt_cv_prog_cc_wl='-Wl,' -- fi -- ;; -- -- uts4*) -- lt_cv_prog_cc_pic='-pic' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec ;then -- lt_cv_prog_cc_pic='-Kconform_pic' -- lt_cv_prog_cc_static='-Bstatic' -- fi -- ;; -- -- *) -- lt_cv_prog_cc_can_build_shared=no -- ;; -- esac -+ ac_cpp_err= - fi -- --fi -- --if test -z "$lt_cv_prog_cc_pic"; then -- echo "$as_me:$LINENO: result: none" >&5 --echo "${ECHO_T}none" >&6 - else -- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 --echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 -- -- # Check to make sure the pic_flag actually works. -- echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 --echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 -- if test "${lt_cv_prog_cc_pic_works+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ : - else -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext - -- ; -- return 0; --} -+ # OK, works on sane cases. Now check whether non-existent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { ac_try='test -s conftest.$ac_objext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- case $host_os in -- hpux9* | hpux10* | hpux11*) -- # On HP-UX, both CC and GCC only warn that PIC is supported... then -- # they create non-PIC objects. So, if there were any warnings, we -- # assume that PIC is not supported. -- if test -s conftest.err; then -- lt_cv_prog_cc_pic_works=no -- else -- lt_cv_prog_cc_pic_works=yes -- fi -- ;; -- *) -- lt_cv_prog_cc_pic_works=yes -- ;; -- esac -- -+ (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 --cat conftest.$ac_ext >&5 -- lt_cv_prog_cc_pic_works=no -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ # Passes both tests. -+ac_preproc_ok=: -+break - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- CFLAGS="$save_CFLAGS" -+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 - -- if test "X$lt_cv_prog_cc_pic_works" = Xno; then -- lt_cv_prog_cc_pic= -- lt_cv_prog_cc_can_build_shared=no -- else -- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" -- fi -- -- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 --echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 - fi -- --# Check for any special shared library compilation flags. --if test -n "$lt_cv_prog_cc_shlib"; then -- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 --echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} -- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : -- else -- { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 --echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} -- lt_cv_prog_cc_can_build_shared=no -- fi --fi -- --echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 --echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 --if test "${lt_cv_prog_cc_static_works+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ CXXCPP=$ac_cv_prog_CXXCPP - else -- lt_cv_prog_cc_static_works=no -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" -+ 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 --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include - #endif --int --main () --{ -- -- ; -- return 0; --} -+ Syntax error - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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); } && -- { ac_try='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&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); }; }; then -- lt_cv_prog_cc_static_works=yes -+ (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 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -- LDFLAGS="$save_LDFLAGS" -+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 - --# Belt *and* braces to stop my trousers falling down: --test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= --echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 --echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 - --pic_flag="$lt_cv_prog_cc_pic" --special_shlib_compile_flags="$lt_cv_prog_cc_shlib" --wl="$lt_cv_prog_cc_wl" --link_static_flag="$lt_cv_prog_cc_static" --no_builtin_flag="$lt_cv_prog_cc_no_builtin" --can_build_shared="$lt_cv_prog_cc_can_build_shared" -+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 - --# Check to see if options -o and -c are simultaneously supported by compiler --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_compiler_c_o+set}" = set; then -+ 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 - --$rm -r conftest 2>/dev/null --mkdir conftest --cd conftest --echo "int some_variable = 0;" > conftest.$ac_ext --mkdir out --# According to Tom Tromey, Ian Lance Taylor reported there are C compilers --# that will create temporary files in the current directory regardless of --# the output directory. Thus, making CWD read-only will cause this test --# to fail, enabling locking or at least warning the user not to do parallel --# builds. --chmod -w . --save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" --compiler_c_o=no --if { (eval echo configure:4795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 -- if test -s out/conftest.err; then -- lt_cv_compiler_c_o=no -- else -- lt_cv_compiler_c_o=yes -- fi --else -- # Append any errors to the config.log. -- cat out/conftest.err 1>&5 -- lt_cv_compiler_c_o=no --fi --CFLAGS="$save_CFLAGS" --chmod u+w . --$rm conftest* out/* --rmdir out --cd .. --rmdir conftest --$rm -r conftest 2>/dev/null -+ test -n "$ac_ct_F77" && break -+done - -+ F77=$ac_ct_F77 - fi - --compiler_c_o=$lt_cv_compiler_c_o --echo "$as_me:$LINENO: result: $compiler_c_o" >&5 --echo "${ECHO_T}$compiler_c_o" >&6 -- --if test x"$compiler_c_o" = x"yes"; then -- # Check to see if we can write to a .lo -- echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 --echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 -- if test "${lt_cv_compiler_o_lo+set}" = set; then -+ -+# Provide some information about the compiler. -+echo "$as_me:5311:" \ -+ "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 -- -- lt_cv_compiler_o_lo=no -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -c -o conftest.lo" -- save_objext="$ac_objext" -- ac_objext=lo - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ program main -+#ifndef __GNUC__ -+ choke me - #endif --int --main () --{ --int some_variable = 0; -- ; -- return 0; --} -+ -+ end - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- lt_cv_compiler_o_lo=no -- else -- lt_cv_compiler_o_lo=yes -- fi -- -+ ac_compiler_gnu=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- ac_objext="$save_objext" -- CFLAGS="$save_CFLAGS" -+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 - -- compiler_o_lo=$lt_cv_compiler_o_lo -- echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 --echo "${ECHO_T}$compiler_o_lo" >&6 --else -- compiler_o_lo=no - fi -- --# Check to see if we can do hard links to lock some files if needed --hard_links="nottested" --if test "$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 -+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 -- need_locks=no --fi -- --if test "$GCC" = yes; then -- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler -- 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 -- echo "int some_variable = 0;" > conftest.$ac_ext -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" -- compiler_rtti_exceptions=no -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ FFLAGS=-g -+cat >conftest.$ac_ext <<_ACEOF -+ program main - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --int some_variable = 0; -- ; -- return 0; --} -+ end - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- compiler_rtti_exceptions=no -- else -- compiler_rtti_exceptions=yes -- fi -- -+ ac_cv_prog_f77_g=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_prog_f77_g=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- CFLAGS="$save_CFLAGS" -- echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 --echo "${ECHO_T}$compiler_rtti_exceptions" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -- if test "$compiler_rtti_exceptions" = "yes"; then -- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' -+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 -- no_builtin_flag=' -fno-builtin' -+ FFLAGS= - fi - fi - --# See if the linker supports building shared libraries. --echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 --echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 -+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 - --allow_undefined_flag= --no_undefined_flag= --need_lib_prefix=unknown --need_version=unknown --# when you set need_version to no, make sure it does not cause -set_version --# flags to be left without arguments --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_into_libs=no --hardcode_libdir_flag_spec= --hardcode_libdir_separator= --hardcode_direct=no --hardcode_minus_L=no --hardcode_shlibpath_var=unsupported --runpath_var= --link_all_deplibs=unknown --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 egrep regular expression 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= - --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 -- ;; --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}' - -- # See if GNU ld supports shared libraries. -- case $host_os in -- aix3* | aix4* | aix5*) -- # On AIX, the GNU linker is very broken -- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. -- 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. -+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - --EOF -+# 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 - ;; - -- 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 use -- # them. -- ld_shlibs=no -+ 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; - ;; - -- beos*) -- if $LD --help 2>&1 | egrep ': 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*) -+ # 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; - ;; - -- cygwin* | mingw* | pw32*) -- # 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=yes -- -- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ -- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ -- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ -- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ -- else $CC -o impgen impgen.c ; fi)~ -- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' -- -- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' -- -- # cygwin and mingw dlls have different entry points and sets of symbols -- # to exclude. -- # FIXME: what about values for MSVC? -- dll_entry=__cygwin_dll_entry@12 -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ -- case $host_os in -- mingw*) -- # mingw values -- dll_entry=_DllMainCRTStartup@12 -- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ -- ;; -- esac -- -- # mingw and cygwin differ, and it's simplest to just exclude the union -- # of the two symbol sets. -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 -- -- # recent cygwin and mingw systems supply a stub DllMain which the user -- # can override, but on older systems we have to supply one (in ltdll.c) -- if test "x$lt_cv_need_dllmain" = "xyes"; then -- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " -- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ -- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' -- else -- ltdll_obj= -- ltdll_cmds= -- fi -- -- # Extract the symbol export list from an `--export-all' def file, -- # then regenerate the def file from the symbol export list, so that -- # the compiled dll only exports the symbol export list. -- # Be careful not to strip the DATA tag left be newer dlltools. -- export_symbols_cmds="$ltdll_cmds"' -- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ -- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' -- -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is. -- # If DATA tags from a recent dlltool are present, honour them! -- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname-def; -- else -- echo EXPORTS > $output_objdir/$soname-def; -- _lt_hint=1; -- cat $export_symbols | while read symbol; do -- set dummy \$symbol; -- case \$# in -- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; -- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; -- esac; -- _lt_hint=`expr 1 + \$_lt_hint`; -- done; -- fi~ -- '"$ltdll_cmds"' -- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ -- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ -- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' -+ 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*) -- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -- wlarc= -+ 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 -- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ 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` - ;; -- -- solaris* | sysv5*) -- if $LD -v 2>&1 | egrep '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 | egrep ': 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 -+ 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 - ;; -- -- 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 | egrep ': 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 -+ # 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 "$ld_shlibs" = yes; then -- runpath_var=LD_RUN_PATH -- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' -- export_dynamic_flag_spec='${wl}--export-dynamic' -- case $host_os in -- cygwin* | mingw* | pw32*) -- # dlltool doesn't understand --whole-archive et. al. -- whole_archive_flag_spec= -- ;; -- *) -- # ancient GNU ld didn't support --whole-archive et. al. -- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then -- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- whole_archive_flag_spec= -- fi -- ;; -- esac -- 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 "$link_static_flag"; 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 -- 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 -+fi - -- exp_sym_flag='-bexport' -- no_entry_flag='-bnoentry' -- 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 - -- # 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. - -- hardcode_direct=yes -- archive_cmds='' -- hardcode_libdir_separator=':' -- if test "$GCC" = yes; then -- case $host_os in aix4.[012]|aix4.[012].*) -- 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' -- else -- # not using gcc -- if test "$host_cpu" = ia64; then -- shared_flag='${wl}-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 can do strange things, 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' -- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' -- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" -- else -- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' -- # Warning - without using the other run time loading flags, -- # -berok will link without error, but may produce a broken library. -- allow_undefined_flag='${wl}-berok' -- # This is a bit strange, but is similar to how AIX traditionally builds -- # it's shared libraries. -- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' -- fi -- 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 - -- 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 -- ;; -+# These are sane defaults that work on at least a few old systems. -+# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -- 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 -- # 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"`' -- ;; -- -- darwin* | rhapsody*) -- case "$host_os" in -- rhapsody* | darwin1.[012]) -- allow_undefined_flag='-undefined suppress' -- ;; -- *) # Darwin 1.3 on -- allow_undefined_flag='-flat_namespace -undefined suppress' -- ;; -- esac -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' -- # We need to add '_' to the symbols in $export_symbols first -- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- whole_archive_flag_spec='-all_load $convenience' -- ;; -- -- 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 -- ;; -+# Character class describing NM global symbol codes. -+symcode='[BCDEGRST]' - -- # 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 -- ;; -+# Regexp to match symbols that can be accessed directly from C. -+sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -- freebsd*) -- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- ;; -+# 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'" - -- hpux9* | hpux10* | hpux11*) -- case $host_os in -- hpux9*) 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' ;; -- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; -- esac -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_separator=: -- hardcode_direct=yes -- hardcode_minus_L=yes # Not in the search PATH, but as the default -- # location of the library. -- export_dynamic_flag_spec='${wl}-E' -- ;; -+# 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'" - -- irix5* | irix6*) -- 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' -- fi -- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -- hardcode_libdir_separator=: -- link_all_deplibs=yes -- ;; -+# 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* | sysv5*) -+ symcode='[BDRT]' -+ ;; -+sysv4) -+ symcode='[DFNSTU]' -+ ;; -+esac - -- 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 -- ;; -+# 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 - -- 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 -- ;; -+# If we're using GNU nm, then use its standard symbol codes. -+case `$NM -V 2>&1` in -+*GNU* | *'with BFD'*) -+ symcode='[ABCDGIRSTW]' ;; -+esac - -- 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 $linker_flags' -- 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 $linker_flags' -- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -- ;; -- esac -- fi -- ;; -+# Try without a prefix undercore, then with it. -+for ac_symprfx in "" "_"; do - -- 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' -- ;; -+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. -+ symxfrm="\\1 $ac_symprfx\\2 \\2" - -- 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=: -- ;; -+ # 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'" - -- 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 "-exported_symbol " >> $lib.exp; echo "\$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 ${objdir}/so_locations -o $lib~$rm $lib.exp' -+ # Check to see that the pipe works correctly. -+ pipe_works=no - -- #Both c and cxx compiler support -rpath directly -- hardcode_libdir_flag_spec='-rpath $libdir' -- fi -- hardcode_libdir_separator=: -- ;; -+ rm -f conftest* -+ cat > conftest.$ac_ext <, C++ libraries end up with a separate -- # (to the application) exception stack for one thing. -- no_undefined_flag=' -z defs' -- if test "$GCC" = yes; then -- case `$CC --version 2>/dev/null` in -- [12].*) -- cat <&2 -+ 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 -+ # 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 - --*** Warning: Releases of GCC earlier than version 3.0 cannot reliably --*** create self contained shared libraries on Solaris systems, without --*** introducing a dependency on libgcc.a. Therefore, libtool is disabling --*** -no-undefined support, which will at least allow you to build shared --*** libraries. However, you may find that when you link such libraries --*** into an application without using GCC, you have to manually add --*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to --*** upgrade to a newer version of GCC. Another option is to rebuild your --*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. -+ # 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 -- no_undefined_flag= -- ;; -- esac -- fi -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_shlibpath_var=no -- case $host_os in -- solaris2.[0-5] | solaris2.[0-5].*) ;; -- *) # Supported since Solaris 2.6 (maybe 2.5.1?) -- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; -- 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) -- if test "x$host_vendor" = xsno; then -- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes # is this really true??? -- else -- 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 -- fi -- 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' -- ;; -- -- sysv5*) -- no_undefined_flag=' -z text' -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec= -- hardcode_shlibpath_var=no -- runpath_var='LD_RUN_PATH' -- ;; -- -- uts4*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -- -- dgux*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -+ # Now generate the symbol file. -+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - -- 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 -- ;; -+ cat <> conftest.$ac_ext -+#if defined (__STDC__) && __STDC__ -+# define lt_ptr_t void * -+#else -+# define lt_ptr_t char * -+# define const -+#endif - -- sysv4.2uw2*) -- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes -- hardcode_minus_L=no -- hardcode_shlibpath_var=no -- hardcode_runpath_var=yes -- runpath_var=LD_RUN_PATH -- ;; -+/* 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} -+}; - -- sysv5uw7* | unixware7*) -- no_undefined_flag='${wl}-z ${wl}text' -- if test "$GCC" = yes; then -- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+#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 -- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi -- runpath_var='LD_RUN_PATH' -- 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 -- --# Check hardcoding attributes. --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"; then -+ else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ fi -+ rm -f conftest* conftst* - -- # 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 "$hardcode_shlibpath_var" != no && -- test "$hardcode_minus_L" != no; then -- # Linking always hardcodes the temporary library directory. -- hardcode_action=relink -+ # Do not use the global_symbol_pipe unless it works. -+ if test "$pipe_works" = yes; then -+ break - else -- # We can link without hardcoding, and we can hardcode nonexisting dirs. -- hardcode_action=immediate -+ 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 -- # We cannot hardcode anything, or else we can only hardcode existing -- # directories. -- hardcode_action=unsupported -+ echo "$as_me:$LINENO: result: ok" >&5 -+echo "${ECHO_T}ok" >&6 - fi --echo "$as_me:$LINENO: result: $hardcode_action" >&5 --echo "${ECHO_T}$hardcode_action" >&6 - --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 -+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 -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 - --reload_cmds='$LD$reload_flag -o $output$reload_objs' --test -z "$deplibs_check_method" && deplibs_check_method=unknown - --# PORTME Fill in your ld.so characteristics --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= --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" --sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - --case $host_os in --aix3*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix $libname.a' -- shlibpath_var=LIBPATH - -- # AIX has no versioning support, so we append a major version to the name. -- soname_spec='${libname}${release}.so$major' -- ;; - --aix4* | aix5*) -- version_type=linux -- if test "$host_cpu" = ia64; then -- # AIX 5 supports IA64 -- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' -- 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}.so$versuffix ${libname}${release}.so$major $libname.so' -- 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}.so$major' -- fi -- shlibpath_var=LIBPATH -+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 - --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' -- ;; -+# 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' - --beos*) -- library_names_spec='${libname}.so' -- dynamic_linker="$host_os ld.so" -- shlibpath_var=LIBRARY_PATH -- ;; -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - --bsdi4*) -- version_type=linux -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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" -- export_dynamic_flag_spec=-rdynamic -- # 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 -- ;; -+# Sed substitution to delay expansion of an escaped shell variable in a -+# double_quote_subst'ed string. -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - --cygwin* | mingw* | pw32*) -- version_type=windows -- need_version=no -- need_lib_prefix=no -- case $GCC,$host_os in -- yes,cygwin*) -- library_names_spec='$libname.dll.a' -- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' -- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ -- dldir=$destdir/`dirname \$dlpath`~ -- test -d \$dldir || mkdir -p \$dldir~ -- $install_prog .libs/$dlname \$dldir/$dlname' -- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ -- dlpath=$dir/\$dldll~ -- $rm \$dlpath' -- ;; -- yes,mingw*) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' -- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -+ ;; -+ *) -+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -+ ;; -+ 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=no -+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"} -+ -+# 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' >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' >conftest.err -+_lt_linker_boilerplate=`cat conftest.err` -+$rm conftest* -+ -+ -+# -+# Check for any special shared library compilation flags. -+# -+lt_prog_cc_shlib= -+if test "$GCC" = no; then -+ case $host_os in -+ sco3.2v5*) -+ lt_prog_cc_shlib='-belf' -+ ;; -+ esac -+fi -+if test -n "$lt_prog_cc_shlib"; then -+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 -+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} -+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : -+ else -+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 -+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} -+ lt_cv_prog_cc_can_build_shared=no -+ fi -+fi -+ -+ -+# -+# Check to make sure the static flag actually works. -+# -+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 -+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static 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_prog_compiler_static" -+ 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 > conftest.exp -+ $SED '/^$/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 -+ -+ -+ -+ -+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:6407: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:6411: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ lt_prog_compiler_pic='-Kpic' -+ lt_prog_compiler_static='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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:6669: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:6673: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:6731: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:6735: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ 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 -+ link_all_deplibs=no -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld='+b $libdir' -+ hardcode_libdir_separator=: -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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=: -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var=no -+ export_dynamic_flag_spec='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=yes -+ hardcode_minus_L=no -+ hardcode_shlibpath_var=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ no_undefined_flag='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sysv5*) -+ no_undefined_flag=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ 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' -+ hardcode_libdir_flag_spec= -+ hardcode_shlibpath_var=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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); */ -+ } -+ -+ 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_unknown|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 librarie types wil 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 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC -+ -+# 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=$lt_predep_objects -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects -+ -+# 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=$lt_compiler_lib_search_path -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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 -+ -+ # 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_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"} -+ -+# 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' >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' >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 -+ 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 -+ 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols_CXX=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_CXX=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir' -+ hardcode_libdir_separator_CXX=: -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec_CXX='-L$libdir' -+ ;; -+ *) -+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ export_dynamic_flag_spec_CXX='${wl}-E' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*) -+ hardcode_direct_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ ;; -+ ia64*) -+ hardcode_direct_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ hardcode_minus_L_CXX=yes # Not in the search PATH, -+ # but as the default -+ # location of the library. -+ ;; -+ *) -+ 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*|ia64*) -+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ 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 -+ ia64*|hppa*64*) -+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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 -+ ;; -+ sco*) -+ archive_cmds_need_lc_CXX=no -+ case $cc_basename in -+ CC*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ 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 -+ ;; -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ archive_cmds_need_lc_CXX=no -+ ;; -+ 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 -+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= -+ ;; -+ 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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ lt_prog_compiler_pic_CXX='+Z' -+ ;; -+ esac -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ ;; -+ 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*) -+ ;; -+ sco*) -+ case $cc_basename in -+ CC*) -+ lt_prog_compiler_pic_CXX='-fPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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 -+ ;; -+ unixware*) -+ ;; -+ 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:11334: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:11338: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:11396: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:11400: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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' -+ ;; -+ linux*) -+ link_all_deplibs_CXX=no -+ ;; -+ *) -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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 -+ -+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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ -+ -+# 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 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_CXX -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_CXX -+ -+# 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=$lt_predep_objects_CXX -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_CXX -+ -+# 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=$lt_compiler_lib_search_path_CXX -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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"} -+ -+# 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' >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' >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 -+ -+test "$ld_shlibs_F77" = no && can_build_shared=no -+ -+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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ lt_prog_compiler_pic_F77='-Kpic' -+ lt_prog_compiler_static_F77='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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:13764: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:13768: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:13826: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:13830: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ 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 -+ link_all_deplibs_F77=no -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols_F77=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_F77=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld_F77='+b $libdir' -+ hardcode_libdir_separator_F77=: -+ hardcode_direct_F77=no -+ hardcode_shlibpath_var_F77=no -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_direct_F77=no -+ hardcode_shlibpath_var_F77=no -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_F77=yes -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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=: -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_F77=no -+ export_dynamic_flag_spec_F77='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_F77=yes -+ hardcode_minus_L_F77=no -+ hardcode_shlibpath_var_F77=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ no_undefined_flag_F77='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ sysv5*) -+ no_undefined_flag_F77=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ 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' -+ hardcode_libdir_flag_spec_F77= -+ hardcode_shlibpath_var_F77=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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 -+ -+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 -+ -+ -+ -+# 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 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_F77 -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_F77 -+ -+# 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=$lt_predep_objects_F77 -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_F77 -+ -+# 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=$lt_compiler_lib_search_path_F77 -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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"} -+ -+# 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' >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' >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:15967: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:15971: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ lt_prog_compiler_pic_GCJ='-Kpic' -+ lt_prog_compiler_static_GCJ='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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:16229: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:16233: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:16291: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:16295: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ 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 -+ link_all_deplibs_GCJ=no -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols_GCJ=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_GCJ=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' -+ hardcode_libdir_separator_GCJ=: -+ hardcode_direct_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_direct_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_GCJ=yes -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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=: -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_GCJ=no -+ export_dynamic_flag_spec_GCJ='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_GCJ=yes -+ hardcode_minus_L_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ no_undefined_flag_GCJ='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ sysv5*) -+ no_undefined_flag_GCJ=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ 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' -+ hardcode_libdir_flag_spec_GCJ= -+ hardcode_shlibpath_var_GCJ=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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 -+ -+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" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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); */ -+ } -+ -+ 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_unknown|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" - ;; -- yes,pw32*) -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' -+ 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 -+ -+ -+# 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 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"/'` - ;; -- *) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' -+ 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_GCJ -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_GCJ -+ -+# 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=$lt_predep_objects_GCJ -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_GCJ -+ -+# 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=$lt_compiler_lib_search_path_GCJ -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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"} -+ -+# 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' >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' >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 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 -- 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 -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' -- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' -- shlibpath_overrides_runpath=yes -- shlibpath_var=DYLD_LIBRARY_PATH -- ;; -+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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_RC -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_RC -+ -+# 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=$lt_predep_objects_RC -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_RC -+ -+# 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=$lt_compiler_lib_search_path_RC -+ -+# 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 - --freebsd1*) -- dynamic_linker=no -- ;; -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var - --freebsd*) -- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` -- version_type=freebsd-$objformat -- case $version_type in -- freebsd-elf*) -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- need_version=no -- need_lib_prefix=no -- ;; -- freebsd-*) -- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' -- need_version=yes -- ;; -- esac -- shlibpath_var=LD_LIBRARY_PATH -- case $host_os in -- freebsd2*) -- shlibpath_overrides_runpath=yes -- ;; -- *) -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- esac -- ;; -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var - --gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- hardcode_into_libs=yes -- ;; -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath - --hpux9* | hpux10* | hpux11*) -- # Give a soname corresponding to the major version so that dld.sl refuses to -- # link against other versions. -- dynamic_linker="$host_os dld.sl" -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' -- soname_spec='${libname}${release}.sl$major' -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action_RC - --irix5* | irix6*) -- version_type=irix -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' -- case $host_os in -- irix5*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 ") 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}" -- ;; -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs - --# No shared lib support for Linux oldld, aout, or coff. --linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) -- dynamic_linker=no -- ;; -+# 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 - --# This must be Linux ELF. --linux-gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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 -+# 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 - -- # 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' -- ;; -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC - --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}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- dynamic_linker='NetBSD (a.out) ld.so' -- else -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' -- soname_spec='${libname}${release}.so$major' -- dynamic_linker='NetBSD ld.elf_so' -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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 -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- ;; -+fi - --newsos6) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- ;; - --openbsd*) -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- 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 -+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 -- shlibpath_overrides_runpath=yes -+ 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 -- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -+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 - --os2*) -- libname_spec='$name' -- need_lib_prefix=no -- library_names_spec='$libname.dll $libname.a' -- dynamic_linker='OS/2 ld.exe' -- shlibpath_var=LIBPATH -- ;; - --osf3* | osf4* | osf5*) -- version_type=osf -- need_version=no -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- 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" -- ;; - --sco3.2v5*) -- version_type=osf -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- ;; - --solaris*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- case $host_vendor in -- sni) -- shlibpath_overrides_runpath=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 -- ;; - --uts4*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; - --dgux*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; - --sysv4*MP*) -- if test -d /usr/nec ;then -- version_type=linux -- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' -- soname_spec='$libname.so.$major' -- shlibpath_var=LD_LIBRARY_PATH -- fi -- ;; - --*) -- 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 - --# Report the final consequences. --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*) -- 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 - --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 - --variables_saved_for_relink="PATH $shlibpath_var $runpath_var" --if test "$GCC" = yes; then -- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" --fi - --if test "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 -- ;; - -- cygwin* | mingw* | pw32*) -- lt_cv_dlopen="LoadLibrary" -- lt_cv_dlopen_libs= -- ;; - -- *) -- 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 -+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 --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char shl_load (); below. */ --#include --/* 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 (); --char (*f) (); -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --/* 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 -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include - #else --f = shl_load; -+# include - #endif -- -- ; -- return 0; --} -+ Syntax error - _ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_func_shl_load=yes -+ (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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_func_shl_load=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+ ac_cpp_err=yes - 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 --#line $LINENO "configure" --#include "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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --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>&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 -+if test -z "$ac_cpp_err"; then -+ : - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_dld_shl_load=no --fi --rm -f 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 --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char dlopen (); below. */ --#include --/* 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 (); --char (*f) (); -+sed 's/^/| /' conftest.$ac_ext >&5 - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --/* 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 --f = dlopen; --#endif -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext - -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+ # 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); }; }; then -- ac_cv_func_dlopen=yes -+ (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 --cat conftest.$ac_ext >&5 --ac_cv_func_dlopen=no -+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 --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+ -+ done -+ ac_cv_prog_CPP=$CPP -+ - 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 -+ CPP=$ac_cv_prog_CPP - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-ldl $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ 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 --int --main () --{ --dlopen (); -- ; -- return 0; --} -+ Syntax error - _ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_lib_dl_dlopen=yes -+ (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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_dl_dlopen=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+ ac_cpp_err=yes - 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 -+if test -z "$ac_cpp_err"; then -+ : - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lsvld $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --/* 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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --dlopen (); -- ; -- return 0; --} -+ # 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 --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_lib_svld_dlopen=yes -+ (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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_svld_dlopen=no -+ ac_cpp_err=yes - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+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 --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" -+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: 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 "$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 -+ -+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 -- ac_check_lib_save_LIBS=$LIBS --LIBS="-ldld $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --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>&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 -+ if test -n "$CXX"; then -+ ac_cv_prog_CXX="$CXX" # Let the user override the test. - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_dld_dld_link=no --fi --rm -f 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 -- -+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 -- -- ;; -- 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" -- 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 -+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 "$cross_compiling" = yes; then : -- lt_cv_dlopen_self=cross -+ if test -n "$ac_ct_CXX"; then -+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. - 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 -+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 - --/* 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 -+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 - --#ifdef __cplusplus --extern "C" void exit (int); --#endif -+ test -n "$ac_ct_CXX" && break -+done -+test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - --void fnord() { int i=42;} --int main () --{ -- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -- int status = $lt_dlunknown; -+ CXX=$ac_ct_CXX -+fi - -- if (self) -- { -- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -- /* dlclose (self); */ -- } - -- exit (status); --} --EOF -- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+# 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); } && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) 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_unknown|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 -+ (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); } - -- if test "x$lt_cv_dlopen_self" = xyes; then -- LDFLAGS="$LDFLAGS $link_static_flag" -- 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 "$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 -- 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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --void fnord() { int i=42;} --int main () -+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); */ -- } -+#ifndef __GNUC__ -+ choke me -+#endif - -- exit (status); -+ ; -+ return 0; - } --EOF -- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+_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); } && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; -- esac -- else : -- # compilation failed -- lt_cv_dlopen_self_static=no -- fi --fi --rm -fr conftest* -+ (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: $lt_cv_dlopen_self_static" >&5 --echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 -- 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. */ - -- CPPFLAGS="$save_CPPFLAGS" -- LDFLAGS="$save_LDFLAGS" -- LIBS="$save_LIBS" -- ;; -- esac -+int -+main () -+{ - -- case $lt_cv_dlopen_self in -- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; -- *) enable_dlopen_self=unknown ;; -- esac -+ ; -+ 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 - -- case $lt_cv_dlopen_self_static in -- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; -- *) enable_dlopen_self_static=unknown ;; -- esac -+ac_cv_prog_cxx_g=no - fi -- -- --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 -- if test "${lt_cv_archive_cmds_need_lc+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+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 -- $rm conftest* -- echo 'static int dummy;' > conftest.$ac_ext -+ 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 - -- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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); }; then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$lt_cv_prog_cc_wl -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- 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 -+ (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); } -- then -- lt_cv_archive_cmds_need_lc=no -+ (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=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 -+ -+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 -- lt_cv_archive_cmds_need_lc=yes -+ 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 -- allow_undefined_flag=$save_allow_undefined_flag -- else -- cat conftest.err 1>&5 - fi --fi -- -- echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 --echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 -- ;; -- esac --fi --need_lc=${lt_cv_archive_cmds_need_lc-yes} -+ done - --# The second 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 -- : -+ cd .. -+ rm -rf conftest.dir - 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. -- test -f Makefile && make "$ltmain" -+ am_cv_CXX_dependencies_compiler_type=none - fi - --if test -f "$ltmain"; then -- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 -- $rm -f "${ofile}T" -- -- echo creating $ofile -- -- # 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 CC LD LN_S NM SHELL \ -- reload_flag reload_cmds wl \ -- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ -- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ -- library_names_spec soname_spec \ -- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ -- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ -- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ -- old_striplib striplib file_magic_cmd export_symbols_cmds \ -- deplibs_check_method allow_undefined_flag no_undefined_flag \ -- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ -- global_symbol_to_c_name_address \ -- hardcode_libdir_flag_spec hardcode_libdir_separator \ -- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do -- -- case $var in -- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ -- old_postinstall_cmds | old_postuninstall_cmds | \ -- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ -- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ -- postinstall_cmds | postuninstall_cmds | \ -- finish_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 -+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 - -- cat <<__EOF__ > "${ofile}T" --#! $SHELL - --# `$echo "$ofile" | 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-2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - --# Sed that helps us avoid accidentally triggering echo(1) options like -n. --Xsed="sed -e s/^X//" -+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 - --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - --# ### BEGIN LIBTOOL CONFIG - --# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+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. */ - --# Shell to use when invoking shell scripts. --SHELL=$lt_SHELL -+#include -+main() -+{ -+#if defined(__GNUC__) && \ -+ ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -+ return 1; -+#endif -+ return 0; -+} - --# Whether or not to build shared libraries. --build_libtool_libs=$enable_shared -+_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 - --# Whether or not to build static libraries. --build_old_libs=$enable_static -+( exit $ac_status ) -+echo "need at least gcc 2.95 to compile correctly" -+exit 1 -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi - --# Whether or not to add -lc for building shared libraries. --build_libtool_need_lc=$need_lc -+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -+# for constant arguments. Useless! -+echo "$as_me:$LINENO: checking for working alloca.h" >&5 -+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 -+if test "${ac_cv_working_alloca_h+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 -+int -+main () -+{ -+char *p = (char *) alloca (2 * sizeof (int)); -+ ; -+ 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_working_alloca_h=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Whether or not to optimize for fast installation. --fast_install=$enable_fast_install -+ac_cv_working_alloca_h=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 -+if test $ac_cv_working_alloca_h = yes; then - --# The host system. --host_alias=$host_alias --host=$host -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_ALLOCA_H 1 -+_ACEOF - --# An echo program that does not interpret backslashes. --echo=$lt_echo -+fi - --# The archiver. --AR=$lt_AR --AR_FLAGS=$lt_AR_FLAGS -+echo "$as_me:$LINENO: checking for alloca" >&5 -+echo $ECHO_N "checking for alloca... $ECHO_C" >&6 -+if test "${ac_cv_func_alloca_works+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. */ -+#ifdef __GNUC__ -+# define alloca __builtin_alloca -+#else -+# ifdef _MSC_VER -+# include -+# define alloca _alloca -+# else -+# if HAVE_ALLOCA_H -+# include -+# else -+# ifdef _AIX -+ #pragma alloca -+# else -+# ifndef alloca /* predefined by HP cc +Olibcalls */ -+char *alloca (); -+# endif -+# endif -+# endif -+# endif -+#endif - --# The default C compiler. --CC=$lt_CC -+int -+main () -+{ -+char *p = (char *) alloca (1); -+ ; -+ 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_alloca_works=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Is the compiler the GNU C compiler? --with_gcc=$GCC -+ac_cv_func_alloca_works=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 - --# The linker used to build libraries. --LD=$lt_LD -+if test $ac_cv_func_alloca_works = yes; then - --# Whether we need hard or soft links. --LN_S=$lt_LN_S -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_ALLOCA 1 -+_ACEOF - --# A BSD-compatible nm program. --NM=$lt_NM -+else -+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions -+# that cause trouble. Some versions do not even contain alloca or -+# contain a buggy version. If you still want to use their alloca, -+# use ar to extract alloca.o from them instead of compiling alloca.c. - --# A symbol stripping program --STRIP=$STRIP -+ALLOCA=alloca.$ac_objext - --# Used to examine libraries when file_magic_cmd begins "file" --MAGIC_CMD=$MAGIC_CMD -+cat >>confdefs.h <<\_ACEOF -+#define C_ALLOCA 1 -+_ACEOF - --# Used on cygwin: DLL creation program. --DLLTOOL="$DLLTOOL" - --# Used on cygwin: object dumper. --OBJDUMP="$OBJDUMP" -+echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 -+if test "${ac_cv_os_cray+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. */ -+#if defined(CRAY) && ! defined(CRAY2) -+webecray -+#else -+wenotbecray -+#endif - --# Used on cygwin: assembler. --AS="$AS" -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "webecray" >/dev/null 2>&1; then -+ ac_cv_os_cray=yes -+else -+ ac_cv_os_cray=no -+fi -+rm -f conftest* - --# The name of the directory that contains temporary libtool files. --objdir=$objdir -+fi -+echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -+echo "${ECHO_T}$ac_cv_os_cray" >&6 -+if test $ac_cv_os_cray = yes; then -+ for ac_func in _getb67 GETB67 getb67; do -+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func - --# How to create reloadable object files. --reload_flag=$lt_reload_flag --reload_cmds=$lt_reload_cmds -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ - --# How to pass a linker flag through the compiler. --wl=$lt_wl -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif - --# Object file suffix (normally "o"). --objext="$ac_objext" -+#undef $ac_func - --# Old archive suffix (normally "a"). --libext="$libext" -+/* 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 $ac_func (); -+/* 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_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+char (*f) () = $ac_func; -+#endif -+#ifdef __cplusplus -+} -+#endif - --# Executable file suffix (normally ""). --exeext="$exeext" -+int -+main () -+{ -+return f != $ac_func; -+ ; -+ 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 -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Additional compiler flags for building library objects. --pic_flag=$lt_pic_flag --pic_mode=$pic_mode -+eval "$as_ac_var=no" -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -+if test `eval echo '${'$as_ac_var'}'` = yes; then - --# Does compiler simultaneously support -c and -o options? --compiler_c_o=$lt_compiler_c_o -+cat >>confdefs.h <<_ACEOF -+#define CRAY_STACKSEG_END $ac_func -+_ACEOF - --# Can we write directly to a .lo ? --compiler_o_lo=$lt_compiler_o_lo -+ break -+fi - --# Must we lock files when doing compilation ? --need_locks=$lt_need_locks -+ done -+fi - --# Do we need the lib prefix for modules? --need_lib_prefix=$need_lib_prefix -+echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 -+if test "${ac_cv_c_stack_direction+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ ac_cv_c_stack_direction=0 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+int -+find_stack_direction () -+{ -+ static char *addr = 0; -+ auto char dummy; -+ if (addr == 0) -+ { -+ addr = &dummy; -+ return find_stack_direction (); -+ } -+ else -+ return (&dummy > addr) ? 1 : -1; -+} - --# Do we need a version for libraries? --need_version=$need_version -+int -+main () -+{ -+ exit (find_stack_direction () < 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_c_stack_direction=1 -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Whether dlopen is supported. --dlopen_support=$enable_dlopen -+( exit $ac_status ) -+ac_cv_c_stack_direction=-1 -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 - --# Whether dlopen of programs is supported. --dlopen_self=$enable_dlopen_self -+cat >>confdefs.h <<_ACEOF -+#define STACK_DIRECTION $ac_cv_c_stack_direction -+_ACEOF - --# 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_link_static_flag -+fi - --# Compiler flag to turn off builtin functions. --no_builtin_flag=$lt_no_builtin_flag - --# Compiler flag to allow reflexive dlopens. --export_dynamic_flag_spec=$lt_export_dynamic_flag_spec -+echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 -+echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 -+if test "${ac_cv_lib_c_getopt_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lc $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --# Compiler flag to generate shared objects directly from archives. --whole_archive_flag_spec=$lt_whole_archive_flag_spec -+/* 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 getopt_long (); -+int -+main () -+{ -+getopt_long (); -+ ; -+ 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_c_getopt_long=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Compiler flag to generate thread-safe objects. --thread_safe_flag_spec=$lt_thread_safe_flag_spec -+ac_cv_lib_c_getopt_long=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_c_getopt_long" >&5 -+echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 -+if test $ac_cv_lib_c_getopt_long = yes; then -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_GETOPT_LONG 1 -+_ACEOF - --# Library versioning type. --version_type=$version_type -+fi - --# 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 -+echo "$as_me:$LINENO: checking for alarm in -lc" >&5 -+echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 -+if test "${ac_cv_lib_c_alarm+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lc $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --# The coded name of the library, if different from the real name. --soname_spec=$lt_soname_spec -+/* 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 alarm (); -+int -+main () -+{ -+alarm (); -+ ; -+ 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_c_alarm=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# 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 -+ac_cv_lib_c_alarm=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_c_alarm" >&5 -+echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 -+if test $ac_cv_lib_c_alarm = yes; then -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_ALARM 1 -+_ACEOF - --# Create an old-style archive from a shared archive. --old_archive_from_new_cmds=$lt_old_archive_from_new_cmds -+fi - --# 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 to strip libraries. --old_striplib=$lt_old_striplib --striplib=$lt_striplib -+for ac_header in netinet/in.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 - --# Method to check whether dependent libraries are shared objects. --deplibs_check_method=$lt_deplibs_check_method -+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 - --# Command to use when deplibs_check_method == file_magic. --file_magic_cmd=$lt_file_magic_cmd -+# 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 - --# Flag that allows shared libraries with undefined symbols to be built. --allow_undefined_flag=$lt_allow_undefined_flag -+ 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 - --# Flag that forces no undefined symbols. --no_undefined_flag=$lt_no_undefined_flag -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 - --# Commands used to finish a libtool library installation in a directory. --finish_cmds=$lt_finish_cmds -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --# Same as above, but a single script fragment to be evaled but not shown. --finish_eval=$lt_finish_eval -+fi - --# Take the output of nm and produce a listing of raw symbols and C names. --global_symbol_pipe=$lt_global_symbol_pipe -+done - --# Transform the output of nm in a proper C declaration --global_symbol_to_cdecl=$lt_global_symbol_to_cdecl - --# Transform the output of nm in a C name address pair --global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address - --# This is the shared library runtime path variable. --runpath_var=$runpath_var -+for ac_header in string.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 - --# This is the shared library path variable. --shlibpath_var=$shlibpath_var -+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 shlibpath searched before the hard-coded library search path? --shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+# 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 - --# How to hardcode a shared library path into an executable. --hardcode_action=$hardcode_action -+ 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 - --# Whether we should hardcode library paths into libraries. --hardcode_into_libs=$hardcode_into_libs -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 - --# 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 -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --# Whether we need a single -rpath flag with a separated argument. --hardcode_libdir_separator=$lt_hardcode_libdir_separator -+fi - --# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the --# resulting binary. --hardcode_direct=$hardcode_direct -+done - --# 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 - --# Variables whose values should be saved in libtool wrapper scripts and --# restored at relink time. --variables_saved_for_relink="$variables_saved_for_relink" -+for ac_header in libintl.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 - --# Whether libtool must link a program against all its dependency libraries. --link_all_deplibs=$link_all_deplibs -+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 - --# Compile-time system search path for libraries --sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -+# 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 - --# Run-time system search path for libraries --sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ 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 - --# Fix the shell variable \$srcfile for the compiler. --fix_srcfile_path="$fix_srcfile_path" -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 - --# Set to yes if exported symbols are required. --always_export_symbols=$always_export_symbols -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --# The commands to list exported symbols. --export_symbols_cmds=$lt_export_symbols_cmds -+fi - --# The commands to extract the exported symbol list from a shared archive. --extract_expsyms_cmds=$lt_extract_expsyms_cmds -+done - --# 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 -+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. */ - --# ### END LIBTOOL CONFIG -+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; - --__EOF__ -+ *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 - -- case $host_os in -- aix3*) -- cat <<\EOF >> "${ofile}T" -+ ; -+ 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 - --# 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 -+ac_cv_c_const=no - fi --EOF -- ;; -- esac -- -- case $host_os in -- cygwin* | mingw* | pw32* | os2*) -- cat <<'EOF' >> "${ofile}T" -- # This is a source program that is used to create dlls on Windows -- # Don't remove nor modify the starting and closing comments --# /* 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 */ -- # This is a source program that is used to create import libraries -- # on Windows for dlls which lack them. Don't remove nor modify the -- # starting and closing comments --# /* impgen.c starts here */ --# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. --# --# This file is part of GNU libtool. --# --# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --# */ --# --# #include /* for printf() */ --# #include /* for open(), lseek(), read() */ --# #include /* for O_RDONLY, O_BINARY */ --# #include /* for strdup() */ --# --# /* O_BINARY isn't required (or even defined sometimes) under Unix */ --# #ifndef O_BINARY --# #define O_BINARY 0 --# #endif --# --# static unsigned int --# pe_get16 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[2]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 2); --# return b[0] + (b[1]<<8); --# } --# --# static unsigned int --# pe_get32 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[4]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 4); --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# static unsigned int --# pe_as32 (ptr) --# void *ptr; --# { --# unsigned char *b = ptr; --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# int --# main (argc, argv) --# int argc; --# char *argv[]; --# { --# int dll; --# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; --# unsigned long export_rva, export_size, nsections, secptr, expptr; --# unsigned long name_rvas, nexp; --# unsigned char *expdata, *erva; --# char *filename, *dll_name; --# --# filename = argv[1]; --# --# dll = open(filename, O_RDONLY|O_BINARY); --# if (dll < 1) --# return 1; --# --# dll_name = filename; --# --# for (i=0; filename[i]; i++) --# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') --# dll_name = filename + i +1; --# --# pe_header_offset = pe_get32 (dll, 0x3c); --# opthdr_ofs = pe_header_offset + 4 + 20; --# num_entries = pe_get32 (dll, opthdr_ofs + 92); --# --# if (num_entries < 1) /* no exports */ --# return 1; --# --# export_rva = pe_get32 (dll, opthdr_ofs + 96); --# export_size = pe_get32 (dll, opthdr_ofs + 100); --# nsections = pe_get16 (dll, pe_header_offset + 4 +2); --# secptr = (pe_header_offset + 4 + 20 + --# pe_get16 (dll, pe_header_offset + 4 + 16)); --# --# expptr = 0; --# for (i = 0; i < nsections; i++) --# { --# char sname[8]; --# unsigned long secptr1 = secptr + 40 * i; --# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); --# unsigned long vsize = pe_get32 (dll, secptr1 + 16); --# unsigned long fptr = pe_get32 (dll, secptr1 + 20); --# lseek(dll, secptr1, SEEK_SET); --# read(dll, sname, 8); --# if (vaddr <= export_rva && vaddr+vsize > export_rva) --# { --# expptr = fptr + (export_rva - vaddr); --# if (export_rva + export_size > vaddr + vsize) --# export_size = vsize - (export_rva - vaddr); --# break; --# } --# } --# --# expdata = (unsigned char*)malloc(export_size); --# lseek (dll, expptr, SEEK_SET); --# read (dll, expdata, export_size); --# erva = expdata - export_rva; --# --# nexp = pe_as32 (expdata+24); --# name_rvas = pe_as32 (expdata+32); --# --# printf ("EXPORTS\n"); --# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) -- -- mv -f "${ofile}T" "$ofile" || \ -- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") -- chmod +x "$ofile" -+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 - - -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - --# 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 -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "vsnprintf" >/dev/null 2>&1; then -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_VSNPRINTF 1 -+_ACEOF - -+fi -+rm -f conftest* - - --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 "$as_me:$LINENO: checking for unsigned short int" >&5 -+echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_short_int+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. -- # 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+/* confdefs.h. */ - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((unsigned short int *) 0) -+ return 0; -+if (sizeof (unsigned short 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- : -+ (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_unsigned_short_int=yes - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- # Broken: fails on valid input. --continue -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_unsigned_short_int=no - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 - -- # OK, works on sane cases. Now check whether non-existent headers -- # can be detected and how. -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+echo "$as_me:$LINENO: checking size of unsigned short int" >&5 -+echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$ac_cv_type_unsigned_short_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 --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+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 (unsigned short 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- # Broken: success on invalid input. --continue -+ (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 (unsigned short 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 -- cat conftest.$ac_ext >&5 -- # Passes both tests. --ac_preproc_ok=: --break --fi --rm -f conftest.err conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 - --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 -+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 - -- done -- ac_cv_prog_CPP=$CPP -+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 (unsigned short int))) < 0)]; -+test_array [0] = 0 - --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. -- # 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+ ; -+ return 0; -+} - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 - ac_status=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- 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 -- cat conftest.$ac_ext >&5 -- # Broken: fails on valid input. --continue --fi --rm -f conftest.err conftest.$ac_ext -+ (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 (unsigned short int))) >= $ac_mid)]; -+test_array [0] = 0 - -- # OK, works on sane cases. Now check whether non-existent headers -- # can be detected and how. -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+ ; -+ return 0; -+} - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 - ac_status=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- # Broken: success on invalid input. --continue -+ (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 -- cat 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" >&5 --echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&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 -- --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 -+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 --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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - 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 -+ 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 --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 -- -+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 (unsigned short int))) <= $ac_mid)]; -+test_array [0] = 0 - --# 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 -+ ; -+ 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); } --{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 -- (eval $ac_compiler -v &5) 2>&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); } --{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 -- (eval $ac_compiler -V &5) 2>&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); } -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --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 -+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_unsigned_short_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned short 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: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* 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 (unsigned short int)); } -+unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } -+#include -+#include - int - main () - { --#ifndef __GNUC__ -- choke me --#endif -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (unsigned short int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (unsigned short int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (unsigned short int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_compiler_gnu=yes -+ ac_cv_sizeof_unsigned_short_int=`cat conftest.val` - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_compiler_gnu=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext --ac_cv_cxx_compiler_gnu=$ac_compiler_gnu -+ 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 (unsigned short int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned short int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } - 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 -+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_unsigned_short_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int -+_ACEOF -+ -+ -+echo "$as_me:$LINENO: checking for unsigned long int" >&5 -+echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_long_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default - int - main () - { -- -+if ((unsigned long int *) 0) -+ return 0; -+if (sizeof (unsigned long int)) -+ return 0; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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_cxx_g=yes -+ ac_cv_type_unsigned_long_int=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_prog_cxx_g=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_unsigned_long_int=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 -+ -+echo "$as_me:$LINENO: checking size of unsigned long int" >&5 -+echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test "$GXX" = yes; then -- CXXFLAGS="-O2" -- else -- CXXFLAGS= -- fi --fi --for ac_declaration in \ -- ''\ -- '#include ' \ -- '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 --#line $LINENO "configure" --#include "confdefs.h" --#include --$ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ if test "$ac_cv_type_unsigned_long_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 () - { --exit (42); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&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 -s conftest.$ac_objext' -+ { 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 --cat conftest.$ac_ext >&5 --continue --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ 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 () - { --exit (42); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&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 -s conftest.$ac_objext' -+ { 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 -+ ac_hi=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --fi --rm -f 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=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 -- --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 -- -- 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 -- # 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. -- echo '#include "conftest.h"' > conftest.c -- echo 'int i;' > conftest.h -- echo "${am__include} ${am__quote}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=conftest.c object=conftest.o \ -- depfile=conftest.Po tmpdepfile=conftest.TPo \ -- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && -- grep conftest.h conftest.Po > /dev/null 2>&1 && -- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -- am_cv_CXX_dependencies_compiler_type=$depmode -- break -- fi -- done -- -- cd .. -- rm -rf conftest.dir --else -- am_cv_CXX_dependencies_compiler_type=none --fi -+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 --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 "$cross_compiling" = yes; then -- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#include --main() --{ --#if defined(__GNUC__) && \ -- ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -- return 1; --#endif -+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 (unsigned long int))) < 0)]; -+test_array [0] = 0 -+ -+ ; - return 0; - } -- - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --echo "need at least gcc 2.95 to compile correctly" --exit 1 --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi -- --# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works --# for constant arguments. Useless! --echo "$as_me:$LINENO: checking for working alloca.h" >&5 --echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 --if test "${ac_cv_working_alloca_h+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ 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 () - { --char *p = (char *) alloca (2 * sizeof (int)); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) >= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_working_alloca_h=yes -+ ac_lo=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_working_alloca_h=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 --echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 --if test $ac_cv_working_alloca_h = yes; then -- --cat >>confdefs.h <<\_ACEOF --#define HAVE_ALLOCA_H 1 --_ACEOF -+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 -- --echo "$as_me:$LINENO: checking for alloca" >&5 --echo $ECHO_N "checking for alloca... $ECHO_C" >&6 --if test "${ac_cv_func_alloca_works+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#ifdef __GNUC__ --# define alloca __builtin_alloca --#else --# ifdef _MSC_VER --# include --# define alloca _alloca --# else --# if HAVE_ALLOCA_H --# include --# else --# ifdef _AIX -- #pragma alloca --# else --# ifndef alloca /* predefined by HP cc +Olibcalls */ --char *alloca (); --# endif --# endif --# endif --# endif --#endif -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+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 () - { --char *p = (char *) alloca (1); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_func_alloca_works=yes -+ ac_hi=$ac_mid - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_func_alloca_works=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 --echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 -- --if test $ac_cv_func_alloca_works = yes; then -- --cat >>confdefs.h <<\_ACEOF --#define HAVE_ALLOCA 1 --_ACEOF -+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_unsigned_long_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned long int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac - else -- # The SVR3 libPW and SVR4 libucb both contain incompatible functions --# that cause trouble. Some versions do not even contain alloca or --# contain a buggy version. If you still want to use their alloca, --# use ar to extract alloca.o from them instead of compiling alloca.c. -- --ALLOCA=alloca.$ac_objext -- --cat >>confdefs.h <<\_ACEOF --#define C_ALLOCA 1 --_ACEOF -- -- --echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 --echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 --if test "${ac_cv_os_cray+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#if defined(CRAY) && ! defined(CRAY2) --webecray --#else --wenotbecray --#endif -+/* 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 (unsigned long int)); } -+unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (unsigned long int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (unsigned long int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (unsigned long int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - -+ ; -+ return 0; -+} - _ACEOF --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- egrep "webecray" >/dev/null 2>&1; then -- ac_cv_os_cray=yes -+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_unsigned_long_int=`cat conftest.val` - else -- ac_cv_os_cray=no --fi --rm -f conftest* -+ 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 (unsigned long int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned long int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } - fi --echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 --echo "${ECHO_T}$ac_cv_os_cray" >&6 --if test $ac_cv_os_cray = yes; then -- for ac_func in _getb67 GETB67 getb67; do -- as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` --echo "$as_me:$LINENO: checking for $ac_func" >&5 --echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 --if eval "test \"\${$as_ac_var+set}\" = set"; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. */ --#include --/* 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 $ac_func (); --char (*f) (); -+ ac_cv_sizeof_unsigned_long_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int -+_ACEOF - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ -+echo "$as_me:$LINENO: checking for unsigned int" >&5 -+echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_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 () - { --/* 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_$ac_func) || defined (__stub___$ac_func) --choke me --#else --f = $ac_func; --#endif -- -+if ((unsigned int *) 0) -+ return 0; -+if (sizeof (unsigned int)) -+ return 0; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_var=yes" -+ ac_cv_type_unsigned_int=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --eval "$as_ac_var=no" --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 --if test `eval echo '${'$as_ac_var'}'` = yes; then -- --cat >>confdefs.h <<_ACEOF --#define CRAY_STACKSEG_END $ac_func --_ACEOF -+sed 's/^/| /' conftest.$ac_ext >&5 - -- break -+ac_cv_type_unsigned_int=no - fi -- -- done -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 - --echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 --echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 --if test "${ac_cv_c_stack_direction+set}" = set; then -+echo "$as_me:$LINENO: checking size of unsigned int" >&5 -+echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_unsigned_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -+ if test "$ac_cv_type_unsigned_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 -- ac_cv_c_stack_direction=0 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ # 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 --find_stack_direction () -+main () - { -- static char *addr = 0; -- auto char dummy; -- if (addr == 0) -- { -- addr = &dummy; -- return find_stack_direction (); -- } -- else -- return (&dummy > addr) ? 1 : -1; --} -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned 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 () - { -- exit (find_stack_direction () < 0); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_stack_direction=1 -+ ac_hi=$ac_mid; break - else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --ac_cv_c_stack_direction=-1 --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 --echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 -- --cat >>confdefs.h <<_ACEOF --#define STACK_DIRECTION $ac_cv_c_stack_direction --_ACEOF -- -+ 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 -- -- --echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 --echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 --if test "${ac_cv_lib_c_getopt_long+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lc $LIBS" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 (unsigned int))) < 0)]; -+test_array [0] = 0 - --/* 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 getopt_long (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#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_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 () - { --getopt_long (); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_lib_c_getopt_long=yes -+ ac_lo=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_c_getopt_long=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS --fi --echo "$as_me:$LINENO: result: $ac_cv_lib_c_getopt_long" >&5 --echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 --if test $ac_cv_lib_c_getopt_long = yes; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_GETOPT_LONG 1 --_ACEOF -+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 -- -- --echo "$as_me:$LINENO: checking for alarm in -lc" >&5 --echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 --if test "${ac_cv_lib_c_alarm+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lc $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --/* 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 alarm (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+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 () - { --alarm (); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_lib_c_alarm=yes -+ ac_hi=$ac_mid - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_c_alarm=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS --fi --echo "$as_me:$LINENO: result: $ac_cv_lib_c_alarm" >&5 --echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 --if test $ac_cv_lib_c_alarm = yes; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_ALARM 1 --_ACEOF -- --fi -+sed 's/^/| /' conftest.$ac_ext >&5 - -- -- --for ac_header in netinet/in.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 -+ac_lo=`expr '(' $ac_mid ')' + 1` - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_unsigned_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac - 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 --#line $LINENO "configure" --#include "confdefs.h" -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&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 --#include <$ac_header> -+long longval () { return (long) (sizeof (unsigned int)); } -+unsigned long ulongval () { return (long) (sizeof (unsigned int)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (unsigned int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (unsigned int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (unsigned int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ -+ ; -+ return 0; -+} - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_header_compiler=yes -+ ac_cv_sizeof_unsigned_int=`cat conftest.val` - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --echo "${ECHO_T}$ac_header_compiler" >&6 -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# 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 --#line $LINENO "configure" --#include "confdefs.h" --#include <$ac_header> -+( exit $ac_status ) -+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned 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_unsigned_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -- ac_status=$? -- egrep -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 -- else -- ac_cpp_err= -+ -+ -+ -+GSM_VERSION="1:4:0" -+ -+ -+LINGUAS="de" -+ALL_LINGUAS=$LINGUAS -+ -+ -+ MKINSTALLDIRS= -+ if test -n "$ac_aux_dir"; then -+ case "$ac_aux_dir" in -+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; -+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; -+ esac - fi -+ if test -z "$MKINSTALLDIRS"; then -+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -+ fi -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -+echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 -+ # Check whether --enable-nls or --disable-nls was given. -+if test "${enable_nls+set}" = set; then -+ enableval="$enable_nls" -+ USE_NLS=$enableval - else -- ac_cpp_err=yes -+ USE_NLS=yes -+fi; -+ echo "$as_me:$LINENO: result: $USE_NLS" >&5 -+echo "${ECHO_T}$USE_NLS" >&6 -+ -+ -+ -+ -+ -+ -+# Prepare PATH_SEPARATOR. -+# 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 --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" - else -- echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+ ac_executable_p="test -f" - fi --rm -f conftest.err conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --echo "${ECHO_T}$ac_header_preproc" >&6 -+rm -f conf$$.file - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+# Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; 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_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- eval "$as_ac_Header=$ac_header_preproc" -+ case "$MSGFMT" in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&5 -+ if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && -+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" -+ ;; -+esac - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+MSGFMT="$ac_cv_path_MSGFMT" -+if test "$MSGFMT" != ":"; then -+ echo "$as_me:$LINENO: result: $MSGFMT" >&5 -+echo "${ECHO_T}$MSGFMT" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ # Extract the first word of "gmsgfmt", so it can be a program name with args. -+set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ case $GMSGFMT in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 - -+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" -+ ;; -+esac - fi --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -+GMSGFMT=$ac_cv_path_GMSGFMT - -+if test -n "$GMSGFMT"; then -+ echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -+echo "${ECHO_T}$GMSGFMT" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 - fi - --done - - -+# Prepare PATH_SEPARATOR. -+# 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 - --for ac_header in string.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 -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" -+else -+ ac_executable_p="test -f" - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+rm -f conf$$.file -+ -+# Extract the first word of "xgettext", so it can be a program name with args. -+set dummy xgettext; 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_XGETTEXT+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&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 --#line $LINENO "configure" --#include "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>&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 -+ case "$XGETTEXT" in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&5 -+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && -+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" -+ ;; -+esac -+fi -+XGETTEXT="$ac_cv_path_XGETTEXT" -+if test "$XGETTEXT" != ":"; then -+ echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -+echo "${ECHO_T}$XGETTEXT" >&6 - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 - fi --rm -f 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 --#line $LINENO "configure" --#include "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=$? -- egrep -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 -+ rm -f messages.po -+ -+ -+# Prepare PATH_SEPARATOR. -+# 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 -- ac_cpp_err= -+ PATH_SEPARATOR=: - fi --else -- ac_cpp_err=yes -+ rm -f conf$$.sh - fi --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" - else -- echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+ ac_executable_p="test -f" - fi --rm -f conftest.err conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --echo "${ECHO_T}$ac_header_preproc" >&6 -+rm -f conf$$.file - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+# Extract the first word of "msgmerge", so it can be a program name with args. -+set dummy msgmerge; 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_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- eval "$as_ac_Header=$ac_header_preproc" -+ case "$MSGMERGE" in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&5 -+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then -+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" -+ ;; -+esac - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -- -+MSGMERGE="$ac_cv_path_MSGMERGE" -+if test "$MSGMERGE" != ":"; then -+ echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -+echo "${ECHO_T}$MSGMERGE" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&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 -+ if test "$GMSGFMT" != ":"; then -+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -+ echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -+echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 -+ GMSGFMT=":" -+ fi -+ fi -+ -+ if test "$XGETTEXT" != ":"; then -+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && -+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 -+ XGETTEXT=":" -+ fi -+ rm -f messages.po -+ fi - -+ ac_config_commands="$ac_config_commands default-1" - - --for ac_header in libintl.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 "$as_me:$LINENO: checking whether we are using the GNU C Library 2 or newer" >&5 -+echo $ECHO_N "checking whether we are using the GNU C Library 2 or newer... $ECHO_C" >&6 -+if test "${ac_cv_gnu_library_2+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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#include <$ac_header> -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { 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 -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ >= 2) -+ Lucky GNU user -+ #endif -+#endif -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then -+ ac_cv_gnu_library_2=yes - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no -+ ac_cv_gnu_library_2=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --echo "${ECHO_T}$ac_header_compiler" >&6 -+rm -f conftest* - --# 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 --#line $LINENO "configure" --#include "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=$? -- egrep -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 -- else -- ac_cpp_err= -- fi -+ -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2" >&5 -+echo "${ECHO_T}$ac_cv_gnu_library_2" >&6 -+ -+ GLIBC2="$ac_cv_gnu_library_2" -+ -+ -+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 -- ac_cpp_err=yes -+ 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 --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+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: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 - 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 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+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 -- 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 -+ 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 --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- -+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 - --done -- -+ RANLIB=$ac_ct_RANLIB -+else -+ RANLIB="$ac_cv_prog_RANLIB" -+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 "$as_me:$LINENO: checking for library containing strerror" >&5 -+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 -+if test "${ac_cv_search_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- ac_cv_prog_cc_stdc=no --ac_save_CC=$CC -+ ac_func_search_save_LIBS=$LIBS -+ac_cv_search_strerror=no - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "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; --} --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; --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* 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 strerror (); - int - main () - { --return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -+strerror (); - ; - 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>&5 -+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 -s conftest.$ac_objext' -+ { 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_prog_cc_stdc=$ac_arg --break -+ ac_cv_search_strerror="none required" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --fi --rm -f conftest.$ac_objext --done --rm -f conftest.$ac_ext conftest.$ac_objext --CC=$ac_save_CC -+sed 's/^/| /' conftest.$ac_ext >&5 - - fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test "$ac_cv_search_strerror" = no; then -+ for ac_lib in cposix; do -+ LIBS="-l$ac_lib $ac_func_search_save_LIBS" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --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 -- --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 --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* 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 strerror (); - 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 -+strerror (); -+ ; -+ 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_search_strerror="-l$ac_lib" -+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_exeext conftest.$ac_ext -+ done -+fi -+LIBS=$ac_func_search_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 -+echo "${ECHO_T}$ac_cv_search_strerror" >&6 -+if test "$ac_cv_search_strerror" != no; then -+ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" -+ -+fi -+ -+ -+ echo "$as_me:$LINENO: checking for signed" >&5 -+echo $ECHO_N "checking for signed... $ECHO_C" >&6 -+if test "${bh_cv_c_signed+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 () -+{ -+signed char x; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ bh_cv_c_signed=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_c_const=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+bh_cv_c_signed=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -+echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5 -+echo "${ECHO_T}$bh_cv_c_signed" >&6 -+ if test $bh_cv_c_signed = no; then - - cat >>confdefs.h <<\_ACEOF --#define const -+#define signed - _ACEOF - --fi -- -- --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+ 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 --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- egrep "vsnprintf" >/dev/null 2>&1; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_VSNPRINTF 1 -+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* -+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 - - --echo "$as_me:$LINENO: checking for unsigned short int" >&5 --echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_short_int+set}" = set; then -+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 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 --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { --if ((unsigned short int *) 0) -+if ((off_t *) 0) - return 0; --if (sizeof (unsigned short int)) -+if (sizeof (off_t)) - return 0; - ; - return 0; -@@ -9066,136 +23441,198 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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_unsigned_short_int=yes -+ ac_cv_type_off_t=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_short_int=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_off_t=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 -+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 - --echo "$as_me:$LINENO: checking size of unsigned short int" >&5 --echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 --if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then -+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 -- if test "$ac_cv_type_unsigned_short_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 --#line $LINENO "configure" --#include "confdefs.h" -+ 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 --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) >= 0)]; --test_array [0] = 0 -- -+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>&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 -s conftest.$ac_objext' -+ { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ 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 long long" >&5 -+echo $ECHO_N "checking for long long... $ECHO_C" >&6 -+if test "${ac_cv_type_long_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. */ -+long long ll = 1LL; int i = 63; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) <= $ac_mid)]; --test_array [0] = 0 -- -+long long llmax = (long long) -1; -+ return ll << i | ll >> i | llmax / ll | llmax % ll; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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_hi=$ac_mid; break -+ ac_cv_type_long_long=yes - else - echo "$as_me: failed program was:" >&5 --cat 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` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_long_long=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -+echo "${ECHO_T}$ac_cv_type_long_long" >&6 -+ if test $ac_cv_type_long_long = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LONG_LONG 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for long double" >&5 -+echo $ECHO_N "checking for long double... $ECHO_C" >&6 -+if test "${gt_cv_c_long_double+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ if test "$GCC" = yes; then -+ gt_cv_c_long_double=yes -+ else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ -+ long double foo = 0.0; -+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ -+ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; -+ - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) < 0)]; --test_array [0] = 0 - - ; - return 0; -@@ -9203,33 +23640,62 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ gt_cv_c_long_double=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_long_double=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ fi -+fi -+echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5 -+echo "${ECHO_T}$gt_cv_c_long_double" >&6 -+ if test $gt_cv_c_long_double = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LONG_DOUBLE 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for wchar_t" >&5 -+echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 -+if test "${gt_cv_c_wchar_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. */ -+#include -+ wchar_t foo = (wchar_t)'\0'; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) >= $ac_mid)]; --test_array [0] = 0 - - ; - return 0; -@@ -9237,55 +23703,61 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --cat 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.$ac_objext conftest.$ac_ext -- done -+ gt_cv_c_wchar_t=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo= ac_hi= -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_wchar_t=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --rm -f 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` -+echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5 -+echo "${ECHO_T}$gt_cv_c_wchar_t" >&6 -+ if test $gt_cv_c_wchar_t = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_WCHAR_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for wint_t" >&5 -+echo $ECHO_N "checking for wint_t... $ECHO_C" >&6 -+if test "${gt_cv_c_wint_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ wint_t foo = (wchar_t)'\0'; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) <= $ac_mid)]; --test_array [0] = 0 - - ; - return 0; -@@ -9293,437 +23765,717 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ gt_cv_c_wint_t=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo=`expr '(' $ac_mid ')' + 1` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_wint_t=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in --?*) ac_cv_sizeof_unsigned_short_int=$ac_lo;; --'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned short int), 77" >&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" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5 -+echo "${ECHO_T}$gt_cv_c_wint_t" >&6 -+ if test $gt_cv_c_wint_t = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_WINT_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for inttypes.h" >&5 -+echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 -+if test "${gl_cv_header_inttypes_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --long longval () { return (long) (sizeof (unsigned short int)); } --unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include - int - main () - { -- -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- exit (1); -- if (((long) (sizeof (unsigned short int))) < 0) -- { -- long i = longval (); -- if (i != ((long) (sizeof (unsigned short int)))) -- exit (1); -- fprintf (f, "%ld\n", i); -- } -- else -- { -- unsigned long i = ulongval (); -- if (i != ((long) (sizeof (unsigned short int)))) -- exit (1); -- fprintf (f, "%lu\n", i); -- } -- exit (ferror (f) || fclose (f) != 0); -- -+uintmax_t i = (uintmax_t) -1; - ; - return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_sizeof_unsigned_short_int=`cat conftest.val` --else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned short int), 77" >&2;} -- { (exit 1); exit 1; }; } --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --rm -f conftest.val -+ gl_cv_header_inttypes_h=yes - else -- ac_cv_sizeof_unsigned_short_int=0 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gl_cv_header_inttypes_h=no - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 --echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 -+echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5 -+echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6 -+ if test $gl_cv_header_inttypes_h = yes; then -+ - cat >>confdefs.h <<_ACEOF --#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int -+#define HAVE_INTTYPES_H_WITH_UINTMAX 1 - _ACEOF - -+ fi - --echo "$as_me:$LINENO: checking for unsigned long int" >&5 --echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_long_int+set}" = set; then -+ -+ echo "$as_me:$LINENO: checking for stdint.h" >&5 -+echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 -+if test "${gl_cv_header_stdint_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include - int - main () - { --if ((unsigned long int *) 0) -- return 0; --if (sizeof (unsigned long int)) -- return 0; -+uintmax_t i = (uintmax_t) -1; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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_unsigned_long_int=yes -+ gl_cv_header_stdint_h=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_long_int=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gl_cv_header_stdint_h=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 -+echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5 -+echo "${ECHO_T}$gl_cv_header_stdint_h" >&6 -+ if test $gl_cv_header_stdint_h = yes; then - --echo "$as_me:$LINENO: checking size of unsigned long int" >&5 --echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 --if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STDINT_H_WITH_UINTMAX 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking for intmax_t" >&5 -+echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 -+if test "${gt_cv_c_intmax_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test "$ac_cv_type_unsigned_long_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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#include -+#if HAVE_STDINT_H_WITH_UINTMAX -+#include -+#endif -+#if HAVE_INTTYPES_H_WITH_UINTMAX -+#include - #endif -+ - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) >= 0)]; --test_array [0] = 0 -- -+intmax_t x = -1; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ gt_cv_c_intmax_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_intmax_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5 -+echo "${ECHO_T}$gt_cv_c_intmax_t" >&6 -+ if test $gt_cv_c_intmax_t = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_INTMAX_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5 -+echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6 -+if test "${gt_cv_func_printf_posix+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ if test "$cross_compiling" = yes; then -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ -+ notposix - #endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; --test_array [0] = 0 - -- ; -- return 0; -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "notposix" >/dev/null 2>&1; then -+ gt_cv_func_printf_posix="guessing no" -+else -+ gt_cv_func_printf_posix="guessing yes" -+fi -+rm -f conftest* -+ -+ -+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 -+/* The string "%2$d %1$d", with dollar characters protected from the shell's -+ dollar expansion (possibly an autoconf bug). */ -+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -+static char buf[100]; -+int main () -+{ -+ sprintf (buf, format, 33, 55); -+ return (strcmp (buf, "55 33") != 0); - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_hi=$ac_mid; break -+ gt_cv_func_printf_posix=yes - else -- echo "$as_me: failed program was:" >&5 --cat 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` -+ 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 ) -+gt_cv_func_printf_posix=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5 -+echo "${ECHO_T}$gt_cv_func_printf_posix" >&6 -+ case $gt_cv_func_printf_posix in -+ *yes) -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_POSIX_PRINTF 1 -+_ACEOF -+ -+ ;; -+ esac -+ -+ -+ -+for ac_header in stdlib.h unistd.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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+ # 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 --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) < 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} -+#include <$ac_header> - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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); }; }; then -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&5 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -+ (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 -+ ac_header_compiler=yes - else - echo "$as_me: failed program was:" >&5 --cat 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` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_header_compiler=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+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 --cat conftest.$ac_ext >&5 --ac_lo= ac_hi= -+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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 --rm -f conftest.$ac_objext conftest.$ac_ext -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+ - fi --rm -f 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` -+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 -+ -+ -+for ac_func in getpagesize -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_var+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* 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 $ac_func (); -+/* 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_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+char (*f) () = $ac_func; -+#endif -+#ifdef __cplusplus -+} - #endif -+ - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; --test_array [0] = 0 -- -+return f != $ac_func; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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_hi=$ac_mid -+ eval "$as_ac_var=yes" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo=`expr '(' $ac_mid ')' + 1` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+eval "$as_ac_var=no" -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ - fi --rm -f conftest.$ac_objext conftest.$ac_ext - done --case $ac_lo in --?*) ac_cv_sizeof_unsigned_long_int=$ac_lo;; --'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned long int), 77" >&2;} -- { (exit 1); exit 1; }; } ;; --esac -+ -+echo "$as_me:$LINENO: checking for working mmap" >&5 -+echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 -+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else - if test "$cross_compiling" = yes; then -- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+ ac_cv_func_mmap_fixed_mapped=no - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 (unsigned long int)); } --unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* malloc might have been renamed as rpl_malloc. */ -+#undef malloc -+ -+/* Thanks to Mike Haertel and Jim Avera for this test. -+ Here is a matrix of mmap possibilities: -+ mmap private not fixed -+ mmap private fixed at somewhere currently unmapped -+ mmap private fixed at somewhere already mapped -+ mmap shared not fixed -+ mmap shared fixed at somewhere currently unmapped -+ mmap shared fixed at somewhere already mapped -+ For private mappings, we should verify that changes cannot be read() -+ back from the file, nor mmap's back from the file at a different -+ address. (There have been systems where private was not correctly -+ implemented like the infamous i386 svr4.0, and systems where the -+ VM page cache was not coherent with the file system buffer cache -+ like early versions of FreeBSD and possibly contemporary NetBSD.) -+ For shared mappings, we should conversely verify that changes get -+ propagated back to all the places they're supposed to be. -+ -+ Grep wants private fixed already mapped. -+ The main things grep needs to know about mmap are: -+ * does it exist and is it safe to write into the mmap'd area -+ * how to use it (BSD variants) */ -+ -+#include -+#include -+ -+#if !STDC_HEADERS && !HAVE_STDLIB_H -+char *malloc (); - #endif -+ -+/* This mess was copied from the GNU getpagesize.h. */ -+#if !HAVE_GETPAGESIZE -+/* Assume that all systems that can run configure have sys/param.h. */ -+# if !HAVE_SYS_PARAM_H -+# define HAVE_SYS_PARAM_H 1 -+# endif -+ -+# ifdef _SC_PAGESIZE -+# define getpagesize() sysconf(_SC_PAGESIZE) -+# else /* no _SC_PAGESIZE */ -+# if HAVE_SYS_PARAM_H -+# include -+# ifdef EXEC_PAGESIZE -+# define getpagesize() EXEC_PAGESIZE -+# else /* no EXEC_PAGESIZE */ -+# ifdef NBPG -+# define getpagesize() NBPG * CLSIZE -+# ifndef CLSIZE -+# define CLSIZE 1 -+# endif /* no CLSIZE */ -+# else /* no NBPG */ -+# ifdef NBPC -+# define getpagesize() NBPC -+# else /* no NBPC */ -+# ifdef PAGESIZE -+# define getpagesize() PAGESIZE -+# endif /* PAGESIZE */ -+# endif /* no NBPC */ -+# endif /* no NBPG */ -+# endif /* no EXEC_PAGESIZE */ -+# else /* no HAVE_SYS_PARAM_H */ -+# define getpagesize() 8192 /* punt totally */ -+# endif /* no HAVE_SYS_PARAM_H */ -+# endif /* no _SC_PAGESIZE */ -+ -+#endif /* no HAVE_GETPAGESIZE */ -+ - int - main () - { -+ char *data, *data2, *data3; -+ int i, pagesize; -+ int fd; - -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -+ pagesize = getpagesize (); -+ -+ /* First, make a file with some known garbage in it. */ -+ data = (char *) malloc (pagesize); -+ if (!data) - exit (1); -- if (((long) (sizeof (unsigned long int))) < 0) -- { -- long i = longval (); -- if (i != ((long) (sizeof (unsigned long int)))) -- exit (1); -- fprintf (f, "%ld\n", i); -- } -- else -- { -- unsigned long i = ulongval (); -- if (i != ((long) (sizeof (unsigned long int)))) -- exit (1); -- fprintf (f, "%lu\n", i); -- } -- exit (ferror (f) || fclose (f) != 0); -+ for (i = 0; i < pagesize; ++i) -+ *(data + i) = rand (); -+ umask (0); -+ fd = creat ("conftest.mmap", 0600); -+ if (fd < 0) -+ exit (1); -+ if (write (fd, data, pagesize) != pagesize) -+ exit (1); -+ close (fd); - -- ; -- return 0; -+ /* Next, try to mmap the file at a fixed address which already has -+ something else allocated at it. If we can, also make sure that -+ we see the same garbage. */ -+ fd = open ("conftest.mmap", O_RDWR); -+ if (fd < 0) -+ exit (1); -+ data2 = (char *) malloc (2 * pagesize); -+ if (!data2) -+ exit (1); -+ data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); -+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_FIXED, fd, 0L)) -+ exit (1); -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data2 + i)) -+ exit (1); -+ -+ /* Finally, make sure that changes to the mapped area do not -+ percolate back to the file as seen by read(). (This is a bug on -+ some variants of i386 svr4.0.) */ -+ for (i = 0; i < pagesize; ++i) -+ *(data2 + i) = *(data2 + i) + 1; -+ data3 = (char *) malloc (pagesize); -+ if (!data3) -+ exit (1); -+ if (read (fd, data3, pagesize) != pagesize) -+ exit (1); -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data3 + i)) -+ exit (1); -+ close (fd); -+ exit (0); - } - _ACEOF - rm -f conftest$ac_exeext -@@ -9737,279 +24489,268 @@ - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -- ac_cv_sizeof_unsigned_long_int=`cat conftest.val` -+ ac_cv_func_mmap_fixed_mapped=yes - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ( exit $ac_status ) --{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned long int), 77" >&2;} -- { (exit 1); exit 1; }; } --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi -+ac_cv_func_mmap_fixed_mapped=no - fi --rm -f conftest.val --else -- ac_cv_sizeof_unsigned_long_int=0 -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - fi --echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 --echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 --cat >>confdefs.h <<_ACEOF --#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int -+echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -+echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 -+if test $ac_cv_func_mmap_fixed_mapped = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_MMAP 1 - _ACEOF - -+fi -+rm -f conftest.mmap - --echo "$as_me:$LINENO: checking for unsigned int" >&5 --echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_int+set}" = set; then -+ -+ echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 -+echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 -+if test "${ac_cv_gnu_library_2_1+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -+ Lucky GNU user -+ #endif - #endif --int --main () --{ --if ((unsigned int *) 0) -- return 0; --if (sizeof (unsigned int)) -- return 0; -- ; -- return 0; --} -+ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { 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_unsigned_int=yes -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then -+ ac_cv_gnu_library_2_1=yes - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_int=no -+ ac_cv_gnu_library_2_1=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest* -+ -+ -+ - fi --echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 -+echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 -+echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 - --echo "$as_me:$LINENO: checking size of unsigned int" >&5 --echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 --if test "${ac_cv_sizeof_unsigned_int+set}" = set; then -+ GLIBC21="$ac_cv_gnu_library_2_1" -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 -+echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 -+if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test "$ac_cv_type_unsigned_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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)]; --test_array [0] = 0 - -- ; -- return 0; --} -+ if test "$cross_compiling" = yes; then -+ -+ # Guess based on the CPU. -+ case "$host_cpu" in -+ alpha* | i3456786 | m68k | s390*) -+ gt_cv_int_divbyzero_sigfpe="guessing yes";; -+ *) -+ gt_cv_int_divbyzero_sigfpe="guessing no";; -+ esac -+ -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#include -+ -+static void -+#ifdef __cplusplus -+sigfpe_handler (int sig) -+#else -+sigfpe_handler (sig) int sig; - #endif --int --main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; --test_array [0] = 0 -+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -+ exit (sig != SIGFPE); -+} - -- ; -- return 0; -+int x = 1; -+int y = 0; -+int z; -+int nan; -+ -+int main () -+{ -+ signal (SIGFPE, sigfpe_handler); -+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -+ signal (SIGTRAP, sigfpe_handler); -+#endif -+/* Linux/SPARC yields signal SIGILL. */ -+#if defined (__sparc__) && defined (__linux__) -+ signal (SIGILL, sigfpe_handler); -+#endif -+ -+ z = x / y; -+ nan = y / y; -+ exit (1); - } -+ - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_hi=$ac_mid; break -+ gt_cv_int_divbyzero_sigfpe=yes - else -- echo "$as_me: failed program was:" >&5 --cat 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` -+ 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 ) -+gt_cv_int_divbyzero_sigfpe=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+fi -+echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 -+echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 -+ case "$gt_cv_int_divbyzero_sigfpe" in -+ *yes) value=1;; -+ *) value=0;; -+ esac -+ -+cat >>confdefs.h <<_ACEOF -+#define INTDIV0_RAISES_SIGFPE $value -+_ACEOF -+ -+ -+ -+ echo "$as_me:$LINENO: checking for unsigned long long" >&5 -+echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_long_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+unsigned long long ull = 1ULL; int i = 63; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)]; --test_array [0] = 0 -- -+unsigned long long ullmax = (unsigned long long) -1; -+ return ull << i | ull >> i | ullmax / ull | ullmax % ull; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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); }; }; then -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned 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>&5 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -+ (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_lo=$ac_mid; break --else -- echo "$as_me: failed program was:" >&5 --cat 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.$ac_objext conftest.$ac_ext -- done -+ ac_cv_type_unsigned_long_long=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo= ac_hi= -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_unsigned_long_long=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --rm -f 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 -+ if test $ac_cv_type_unsigned_long_long = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_UNSIGNED_LONG_LONG 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ -+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then -+ -+ test $ac_cv_type_unsigned_long_long = yes \ -+ && ac_type='unsigned long long' \ -+ || ac_type='unsigned long' -+ -+cat >>confdefs.h <<_ACEOF -+#define uintmax_t $ac_type -+_ACEOF -+ -+ else -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_UINTMAX_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for inttypes.h" >&5 -+echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 -+if test "${gt_cv_header_inttypes_h+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 - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; --test_array [0] = 0 - - ; - return 0; -@@ -10017,1079 +24758,1229 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ gt_cv_header_inttypes_h=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo=`expr '(' $ac_mid ')' + 1` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_header_inttypes_h=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in --?*) ac_cv_sizeof_unsigned_int=$ac_lo;; --'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&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" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 -+echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 -+ if test $gt_cv_header_inttypes_h = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_INTTYPES_H 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ if test $gt_cv_header_inttypes_h = yes; then -+ echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 -+echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 -+if test "${gt_cv_inttypes_pri_broken+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --long longval () { return (long) (sizeof (unsigned int)); } --unsigned long ulongval () { return (long) (sizeof (unsigned int)); } --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ - -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- exit (1); -- if (((long) (sizeof (unsigned int))) < 0) -- { -- long i = longval (); -- if (i != ((long) (sizeof (unsigned int)))) -- exit (1); -- fprintf (f, "%ld\n", i); -- } -- else -- { -- unsigned long i = ulongval (); -- if (i != ((long) (sizeof (unsigned int)))) -- exit (1); -- fprintf (f, "%lu\n", i); -- } -- exit (ferror (f) || fclose (f) != 0); -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#ifdef PRId32 -+char *p = PRId32; -+#endif -+ -+int -+main () -+{ - - ; - return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_sizeof_unsigned_int=`cat conftest.val` --else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&2;} -- { (exit 1); exit 1; }; } --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --rm -f conftest.val -+ gt_cv_inttypes_pri_broken=no - else -- ac_cv_sizeof_unsigned_int=0 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_inttypes_pri_broken=yes - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ - fi --echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 --echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 -+echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 -+echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 -+ fi -+ if test "$gt_cv_inttypes_pri_broken" = yes; then -+ - cat >>confdefs.h <<_ACEOF --#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -+#define PRI_MACROS_BROKEN 1 - _ACEOF - -- -- --GSM_VERSION="1:4:0" -- -- --LINGUAS="de" --ALL_LINGUAS=$LINGUAS -- -- MKINSTALLDIRS= -- if test -n "$ac_aux_dir"; then -- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" -- fi -- if test -z "$MKINSTALLDIRS"; then -- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - -- -- -- # Extract the first word of "msgfmt", so it can be a program name with args. --set dummy msgfmt; 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_MSGFMT+set}" = set; then -+for ac_header in stdint.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 --else -- case "$MSGFMT" in -- /*) -- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- ac_cv_path_MSGFMT="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" -- ;; --esac - fi --MSGFMT="$ac_cv_path_MSGFMT" --if test "$MSGFMT" != ":"; then -- echo "$as_me:$LINENO: result: $MSGFMT" >&5 --echo "${ECHO_T}$MSGFMT" >&6 -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -- -- # Extract the first word of "gmsgfmt", so it can be a program name with args. --set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ # 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 -- case $GMSGFMT in -- [\\/]* | ?:[\\/]*) -- ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" -- ;; --esac -+ac_header_compiler=no - fi --GMSGFMT=$ac_cv_path_GMSGFMT -+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 - --if test -n "$GMSGFMT"; then -- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 --echo "${ECHO_T}$GMSGFMT" >&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 -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 - -- # Extract the first word of "xgettext", so it can be a program name with args. --set dummy xgettext; 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_XGETTEXT+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- case "$XGETTEXT" in -- /*) -- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- ac_cv_path_XGETTEXT="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" -- ;; -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_ASBOX -+ ) | -+ sed "s/^/$as_me: WARNING: /" >&2 -+ ;; - esac --fi --XGETTEXT="$ac_cv_path_XGETTEXT" --if test "$XGETTEXT" != ":"; then -- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 --echo "${ECHO_T}$XGETTEXT" >&6 -+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 -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 - -- rm -f messages.po -- -- # Extract the first word of "msgmerge", so it can be a program name with args. --set dummy msgmerge; 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_MSGMERGE+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- case "$MSGMERGE" in -- /*) -- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then -- ac_cv_path_MSGMERGE="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" -- ;; --esac - fi --MSGMERGE="$ac_cv_path_MSGMERGE" --if test "$MSGMERGE" != ":"; then -- echo "$as_me:$LINENO: result: $MSGMERGE" >&5 --echo "${ECHO_T}$MSGMERGE" >&6 --else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&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 - -- if test "$GMSGFMT" != ":"; then -- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -- echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 --echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 -- GMSGFMT=":" -- fi -- fi -+ echo "$as_me:$LINENO: checking for SIZE_MAX" >&5 -+echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6 -+ result= -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - -- if test "$XGETTEXT" != ":"; then -- if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 --echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 -- XGETTEXT=":" -- fi -- rm -f messages.po -- fi -+#include -+#if HAVE_STDINT_H -+#include -+#endif -+#ifdef SIZE_MAX -+Found it -+#endif - -- ac_config_commands="$ac_config_commands default-1" -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "Found it" >/dev/null 2>&1; then -+ result=yes -+fi -+rm -f conftest* - -+ if test -z "$result"; then -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 0)]; -+test_array [0] = 0 - --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 -+ ; -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; -+test_array [0] = 0 - --fi --fi --RANLIB=$ac_cv_prog_RANLIB --if test -n "$RANLIB"; then -- echo "$as_me:$LINENO: result: $RANLIB" >&5 --echo "${ECHO_T}$RANLIB" >&6 -+ ; -+ 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:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+ 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 --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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- if test -n "$ac_ct_RANLIB"; then -- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) < 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $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 --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 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" --fi -+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 --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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- RANLIB=$ac_ct_RANLIB --else -- RANLIB="$ac_cv_prog_RANLIB" -+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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; -+test_array [0] = 0 - -- -- echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 --echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 --if test "${ac_cv_lib_cposix_strerror+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ ; -+ 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 -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lcposix $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --/* 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 strerror (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) res_hi=$ac_lo;; -+'') result=? ;; -+esac -+else -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ -+#include -+long longval () { return ~(size_t)0 / 10; } -+unsigned long ulongval () { return ~(size_t)0 / 10; } -+#include -+#include - int - main () - { --strerror (); -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if ((~(size_t)0 / 10) < 0) -+ { -+ long i = longval (); -+ if (i != (~(size_t)0 / 10)) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != (~(size_t)0 / 10)) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext -+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='test -s conftest$ac_exeext' -+ (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_lib_cposix_strerror=yes -+ res_hi=`cat conftest.val` - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_cposix_strerror=no -+ 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 ) -+result=? - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 --echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 --if test $ac_cv_lib_cposix_strerror = yes; then -- LIBS="$LIBS -lcposix" - fi -+rm -f conftest.val -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 0)]; -+test_array [0] = 0 - -- -- --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 --#line $LINENO "configure" --#include "confdefs.h" --#ifndef __cplusplus --static $ac_kw int static_foo () {return 0; } --$ac_kw int foo () {return 0; } --#endif -- -+ ; -+ return 0; -+} - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --cat conftest.$ac_ext >&5 --fi --rm -f 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) ;; -- no) --cat >>confdefs.h <<\_ACEOF --#define inline --_ACEOF -- ;; -- *) cat >>confdefs.h <<_ACEOF --#define inline $ac_cv_c_inline -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF -- ;; --esac -- --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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --if ((off_t *) 0) -- return 0; --if (sizeof (off_t)) -- return 0; -+static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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>&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 -s conftest.$ac_objext' -+ { 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 -+ ac_hi=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_off_t=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 --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 -- : -+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 >>confdefs.h <<_ACEOF --#define off_t long -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --if ((size_t *) 0) -- return 0; --if (sizeof (size_t)) -- return 0; -+static int test_array [1 - 2 * !((~(size_t)0 % 10) < 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>&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 -s conftest.$ac_objext' -+ { 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 --cat conftest.$ac_ext >&5 --ac_cv_type_size_t=no --fi --rm -f 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 -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $ac_mid)]; -+test_array [0] = 0 - --fi -- -- -- --for ac_header in stdlib.h unistd.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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#include <$ac_header> -+ ; -+ return 0; -+} - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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); }; }; then -- ac_header_compiler=yes --else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no --fi --rm -f 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 --#line $LINENO "configure" --#include "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 -+ (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=$? -- egrep -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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ (exit $ac_status); }; }; then -+ ac_lo=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 -- cat 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 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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" -+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 --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+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 --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi -- --done -- -- --for ac_func in getpagesize --do --as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` --echo "$as_me:$LINENO: checking for $ac_func" >&5 --echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 --if eval "test \"\${$as_ac_var+set}\" = set"; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -+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 --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. */ --#include --/* 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 $ac_func (); --char (*f) (); -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --/* 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_$ac_func) || defined (__stub___$ac_func) --choke me --#else --f = $ac_func; --#endif -+static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)]; -+test_array [0] = 0 - - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_var=yes" -+ ac_hi=$ac_mid - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --eval "$as_ac_var=no" --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 --if test `eval echo '${'$as_ac_var'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_lo=`expr '(' $ac_mid ')' + 1` - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -- --echo "$as_me:$LINENO: checking for working mmap" >&5 --echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 --if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+case $ac_lo in -+?*) res_lo=$ac_lo;; -+'') result=? ;; -+esac - else - if test "$cross_compiling" = yes; then -- ac_cv_func_mmap_fixed_mapped=no -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --/* malloc might have been renamed as rpl_malloc. */ --#undef malloc -- --/* Thanks to Mike Haertel and Jim Avera for this test. -- Here is a matrix of mmap possibilities: -- mmap private not fixed -- mmap private fixed at somewhere currently unmapped -- mmap private fixed at somewhere already mapped -- mmap shared not fixed -- mmap shared fixed at somewhere currently unmapped -- mmap shared fixed at somewhere already mapped -- For private mappings, we should verify that changes cannot be read() -- back from the file, nor mmap's back from the file at a different -- address. (There have been systems where private was not correctly -- implemented like the infamous i386 svr4.0, and systems where the -- VM page cache was not coherent with the file system buffer cache -- like early versions of FreeBSD and possibly contemporary NetBSD.) -- For shared mappings, we should conversely verify that changes get -- propagated back to all the places they're supposed to be. -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+long longval () { return ~(size_t)0 % 10; } -+unsigned long ulongval () { return ~(size_t)0 % 10; } -+#include -+#include -+int -+main () -+{ - -- Grep wants private fixed already mapped. -- The main things grep needs to know about mmap are: -- * does it exist and is it safe to write into the mmap'd area -- * how to use it (BSD variants) */ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if ((~(size_t)0 % 10) < 0) -+ { -+ long i = longval (); -+ if (i != (~(size_t)0 % 10)) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != (~(size_t)0 % 10)) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - --#include --#include -+ ; -+ 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 -+ res_lo=`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 - --#if !STDC_HEADERS && !HAVE_STDLIB_H --char *malloc (); --#endif -+( exit $ac_status ) -+result=? -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= 0)]; -+test_array [0] = 0 - --/* This mess was copied from the GNU getpagesize.h. */ --#if !HAVE_GETPAGESIZE --/* Assume that all systems that can run configure have sys/param.h. */ --# if !HAVE_SYS_PARAM_H --# define HAVE_SYS_PARAM_H 1 --# 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_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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; -+test_array [0] = 0 - --# ifdef _SC_PAGESIZE --# define getpagesize() sysconf(_SC_PAGESIZE) --# else /* no _SC_PAGESIZE */ --# if HAVE_SYS_PARAM_H --# include --# ifdef EXEC_PAGESIZE --# define getpagesize() EXEC_PAGESIZE --# else /* no EXEC_PAGESIZE */ --# ifdef NBPG --# define getpagesize() NBPG * CLSIZE --# ifndef CLSIZE --# define CLSIZE 1 --# endif /* no CLSIZE */ --# else /* no NBPG */ --# ifdef NBPC --# define getpagesize() NBPC --# else /* no NBPC */ --# ifdef PAGESIZE --# define getpagesize() PAGESIZE --# endif /* PAGESIZE */ --# endif /* no NBPC */ --# endif /* no NBPG */ --# endif /* no EXEC_PAGESIZE */ --# else /* no HAVE_SYS_PARAM_H */ --# define getpagesize() 8192 /* punt totally */ --# endif /* no HAVE_SYS_PARAM_H */ --# endif /* no _SC_PAGESIZE */ -+ ; -+ 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 - --#endif /* no HAVE_GETPAGESIZE */ -+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. */ -+#include - int - main () - { -- char *data, *data2, *data3; -- int i, pagesize; -- int fd; -- -- pagesize = getpagesize (); -- -- /* First, make a file with some known garbage in it. */ -- data = (char *) malloc (pagesize); -- if (!data) -- exit (1); -- for (i = 0; i < pagesize; ++i) -- *(data + i) = rand (); -- umask (0); -- fd = creat ("conftest.mmap", 0600); -- if (fd < 0) -- exit (1); -- if (write (fd, data, pagesize) != pagesize) -- exit (1); -- close (fd); -- -- /* Next, try to mmap the file at a fixed address which already has -- something else allocated at it. If we can, also make sure that -- we see the same garbage. */ -- fd = open ("conftest.mmap", O_RDWR); -- if (fd < 0) -- exit (1); -- data2 = (char *) malloc (2 * pagesize); -- if (!data2) -- exit (1); -- data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); -- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, -- MAP_PRIVATE | MAP_FIXED, fd, 0L)) -- exit (1); -- for (i = 0; i < pagesize; ++i) -- if (*(data + i) != *(data2 + i)) -- exit (1); -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) < 0)]; -+test_array [0] = 0 - -- /* Finally, make sure that changes to the mapped area do not -- percolate back to the file as seen by read(). (This is a bug on -- some variants of i386 svr4.0.) */ -- for (i = 0; i < pagesize; ++i) -- *(data2 + i) = *(data2 + i) + 1; -- data3 = (char *) malloc (pagesize); -- if (!data3) -- exit (1); -- if (read (fd, data3, pagesize) != pagesize) -- exit (1); -- for (i = 0; i < pagesize; ++i) -- if (*(data + i) != *(data3 + i)) -- exit (1); -- close (fd); -- exit (0); -+ ; -+ return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_func_mmap_fixed_mapped=yes --else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --ac_cv_func_mmap_fixed_mapped=no --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 --echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 --if test $ac_cv_func_mmap_fixed_mapped = yes; 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= $ac_mid)]; -+test_array [0] = 0 - --cat >>confdefs.h <<\_ACEOF --#define HAVE_MMAP 1 -+ ; -+ 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.mmap -- -- -- echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 --echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 --if test "${ac_cv_gnu_library_2_1+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#include --#ifdef __GNU_LIBRARY__ -- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -- Lucky GNU user -- #endif --#endif -+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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; -+test_array [0] = 0 - -+ ; -+ return 0; -+} - _ACEOF --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- egrep "Lucky GNU user" >/dev/null 2>&1; then -- ac_cv_gnu_library_2_1=yes -+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 -- ac_cv_gnu_library_2_1=no --fi --rm -f conftest* -- -- -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_lo=`expr '(' $ac_mid ')' + 1` - fi --echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 --echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 -- -- GLIBC21="$ac_cv_gnu_library_2_1" -- -- -- -- -- echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 --echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 --if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) fits_in_uint=$ac_lo;; -+'') result=? ;; -+esac - else -- -- if test "$cross_compiling" = yes; then -- -- # Guess based on the CPU. -- case "$host_cpu" in -- alpha* | i3456786 | m68k | s390*) -- gt_cv_int_divbyzero_sigfpe="guessing yes";; -- *) -- gt_cv_int_divbyzero_sigfpe="guessing no";; -- esac -- -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+long longval () { return sizeof (size_t) <= sizeof (unsigned int); } -+unsigned long ulongval () { return sizeof (size_t) <= sizeof (unsigned int); } -+#include - #include --#include -- --static void --#ifdef __cplusplus --sigfpe_handler (int sig) --#else --sigfpe_handler (sig) int sig; --#endif -+int -+main () - { -- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -- exit (sig != SIGFPE); --} -- --int x = 1; --int y = 0; --int z; --int nan; - --int main () --{ -- signal (SIGFPE, sigfpe_handler); --/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ --#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -- signal (SIGTRAP, sigfpe_handler); --#endif --/* Linux/SPARC yields signal SIGILL. */ --#if defined (__sparc__) && defined (__linux__) -- signal (SIGILL, sigfpe_handler); --#endif -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if ((sizeof (size_t) <= sizeof (unsigned int)) < 0) -+ { -+ long i = longval (); -+ if (i != (sizeof (size_t) <= sizeof (unsigned int))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != (sizeof (size_t) <= sizeof (unsigned int))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - -- z = x / y; -- nan = y / y; -- exit (1); -+ ; -+ return 0; - } -- - _ACEOF - rm -f conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -@@ -11102,329 +25993,378 @@ - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -- gt_cv_int_divbyzero_sigfpe=yes -+ fits_in_uint=`cat conftest.val` - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ( exit $ac_status ) --gt_cv_int_divbyzero_sigfpe=no -+result=? - fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi -- - fi --echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 --echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 -- case "$gt_cv_int_divbyzero_sigfpe" in -- *yes) value=1;; -- *) value=0;; -- esac -- --cat >>confdefs.h <<_ACEOF --#define INTDIV0_RAISES_SIGFPE $value --_ACEOF -- -- -+rm -f conftest.val -+ if test "$fits_in_uint" = 1; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ extern size_t foo; -+ extern unsigned long foo; - -- echo "$as_me:$LINENO: checking for inttypes.h" >&5 --echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 --if test "${jm_ac_cv_header_inttypes_h+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { --uintmax_t i = (uintmax_t) -1; -+ - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -- jm_ac_cv_header_inttypes_h=yes -+ fits_in_uint=0 - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --jm_ac_cv_header_inttypes_h=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 --echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 -- if test $jm_ac_cv_header_inttypes_h = yes; then -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ fi -+ if test -z "$result"; then -+ if test "$fits_in_uint" = 1; then -+ result="$res_hi$res_lo"U -+ else -+ result="$res_hi$res_lo"UL -+ fi -+ else -+ result='~(size_t)0' -+ fi -+ fi -+ echo "$as_me:$LINENO: result: $result" >&5 -+echo "${ECHO_T}$result" >&6 -+ if test "$result" != yes; then - - cat >>confdefs.h <<_ACEOF --#define HAVE_INTTYPES_H_WITH_UINTMAX 1 -+#define SIZE_MAX $result - _ACEOF - - fi - - -- echo "$as_me:$LINENO: checking for stdint.h" >&5 --echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 --if test "${jm_ac_cv_header_stdint_h+set}" = set; then -+ -+ -+ -+for ac_header in stdint.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 -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --uintmax_t i = (uintmax_t) -1; -- ; -- return 0; --} -+ # 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>&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 -s conftest.$ac_objext' -+ { 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 -- jm_ac_cv_header_stdint_h=yes -+ ac_header_compiler=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --jm_ac_cv_header_stdint_h=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_header_compiler=no - fi --echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 --echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 -- if test $jm_ac_cv_header_stdint_h = yes; then -+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 - --cat >>confdefs.h <<_ACEOF --#define HAVE_STDINT_H_WITH_UINTMAX 1 -+# 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 -- -- fi -- -- -- echo "$as_me:$LINENO: checking for unsigned long long" >&5 --echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_long_long+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --unsigned long long ull = 1; int i = 63; --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --unsigned long long ullmax = (unsigned long long) -1; -- return ull << i | ull >> i | ullmax / ull | ullmax % ull; -- ; -- return 0; --} -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$ac_header> - _ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_type_unsigned_long_long=yes -+ (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 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_long_long=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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: $ac_cv_type_unsigned_long_long" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 -- if test $ac_cv_type_unsigned_long_long = yes; then -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - --cat >>confdefs.h <<\_ACEOF --#define HAVE_UNSIGNED_LONG_LONG 1 -+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 -- -- -- -- -- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then -- -- test $ac_cv_type_unsigned_long_long = yes \ -- && ac_type='unsigned long long' \ -- || ac_type='unsigned long' -+fi - --cat >>confdefs.h <<_ACEOF --#define uintmax_t $ac_type --_ACEOF -+done - -- fi - - -- echo "$as_me:$LINENO: checking for inttypes.h" >&5 --echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 --if test "${gt_cv_header_inttypes_h+set}" = set; then -+ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 -+echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 -+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { -- -+CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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 -- gt_cv_header_inttypes_h=yes -+ gt_cv_func_CFPreferencesCopyAppValue=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --gt_cv_header_inttypes_h=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 - -+gt_cv_func_CFPreferencesCopyAppValue=no - fi --echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 --echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 -- if test $gt_cv_header_inttypes_h = yes; then -- --cat >>confdefs.h <<_ACEOF --#define HAVE_INTTYPES_H 1 --_ACEOF -- -- fi -- -- -- -- if test $gt_cv_header_inttypes_h = yes; then -- echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 --echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 --if test "${gt_cv_inttypes_pri_broken+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#ifdef PRId32 --char *p = PRId32; --#endif -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -+echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 -+_ACEOF -+ -+ fi -+ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 -+echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 -+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { -- -+CFLocaleCopyCurrent(); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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 -- gt_cv_inttypes_pri_broken=no -+ gt_cv_func_CFLocaleCopyCurrent=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --gt_cv_inttypes_pri_broken=yes --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 - -+gt_cv_func_CFLocaleCopyCurrent=no - fi --echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 --echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 -- fi -- if test "$gt_cv_inttypes_pri_broken" = yes; then -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -+echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 -+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - --cat >>confdefs.h <<_ACEOF --#define PRI_MACROS_BROKEN 1 -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFLOCALECOPYCURRENT 1 - _ACEOF - - fi -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" -+ fi -+ - - - if test "X$prefix" = "XNONE"; then -@@ -11450,6 +26390,19 @@ - else - with_gnu_ld=no - fi; -+# Prepare PATH_SEPARATOR. -+# 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 - ac_prog=ld - if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. -@@ -11501,11 +26454,12 @@ - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -- test "$with_gnu_ld" != no && break -- else -- test "$with_gnu_ld" != yes && break -- fi -+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in -+ *GNU* | *'with BFD'*) -+ test "$with_gnu_ld" != no && break ;; -+ *) -+ test "$with_gnu_ld" != yes && break ;; -+ esac - fi - done - IFS="$ac_save_ifs" -@@ -11531,11 +26485,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -- acl_cv_prog_gnu_ld=yes --else -- acl_cv_prog_gnu_ld=no --fi -+case `$LD -v 2>&1 &5 - echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 -@@ -11543,6 +26498,7 @@ - - - -+ - echo "$as_me:$LINENO: checking for shared library run path origin" >&5 - echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 - if test "${acl_cv_rpath+set}" = set; then -@@ -11565,8 +26521,6 @@ - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" -- sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" -- sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" - # Check whether --enable-rpath or --disable-rpath was given. - if test "${enable_rpath+set}" = set; then - enableval="$enable_rpath" -@@ -11790,7 +26744,7 @@ - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -11834,7 +26788,7 @@ - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -11964,223 +26918,722 @@ - - - -+ echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -+echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 -+if test "${ac_cv_type_ptrdiff_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 ((ptrdiff_t *) 0) -+ return 0; -+if (sizeof (ptrdiff_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_ptrdiff_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_ptrdiff_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -+echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -+if test $ac_cv_type_ptrdiff_t = yes; then -+ : -+else -+ -+cat >>confdefs.h <<\_ACEOF -+#define ptrdiff_t long -+_ACEOF -+ -+ -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -+stdlib.h string.h unistd.h sys/param.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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_func in asprintf fwprintf getcwd getegid geteuid getgid getuid \ -+mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -+strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -+__fsetlocking -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* 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 $ac_func (); -+/* 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_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+char (*f) () = $ac_func; -+#endif -+#ifdef __cplusplus -+} -+#endif -+ -+int -+main () -+{ -+return f != $ac_func; -+ ; -+ 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 -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+eval "$as_ac_var=no" -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5 -+echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl__snprintf+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 -+int -+main () -+{ -+ -+#ifndef _snprintf -+ char *p = (char *) _snprintf; -+#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_have_decl__snprintf=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_cv_have_decl__snprintf=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5 -+echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6 -+ if test $ac_cv_have_decl__snprintf = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL__SNPRINTF $gt_value -+_ACEOF - - - --for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ --stdlib.h string.h unistd.h sys/param.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 "$as_me:$LINENO: checking whether _snwprintf is declared" >&5 -+echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl__snwprintf+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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#include <$ac_header> -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+#ifndef _snwprintf -+ char *p = (char *) _snwprintf; -+#endif -+ -+ ; -+ return 0; -+} - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ ac_cv_have_decl__snwprintf=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_have_decl__snwprintf=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --echo "${ECHO_T}$ac_header_compiler" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5 -+echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6 -+ if test $ac_cv_have_decl__snwprintf = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - --# 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 --#line $LINENO "configure" --#include "confdefs.h" --#include <$ac_header> -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL__SNWPRINTF $gt_value - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 -+echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl_feof_unlocked+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 -+int -+main () -+{ -+ -+#ifndef feof_unlocked -+ char *p = (char *) feof_unlocked; -+#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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ (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_have_decl_feof_unlocked=yes - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_have_decl_feof_unlocked=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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6 -+ if test $ac_cv_have_decl_feof_unlocked = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_FEOF_UNLOCKED $gt_value -+_ACEOF -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 -+echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl_fgets_unlocked+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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ - --fi --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#ifndef fgets_unlocked -+ char *p = (char *) fgets_unlocked; -+#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_have_decl_fgets_unlocked=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_cv_have_decl_fgets_unlocked=no - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6 -+ if test $ac_cv_have_decl_fgets_unlocked = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - --done -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_FGETS_UNLOCKED $gt_value -+_ACEOF - - - --for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ --geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ --strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next --do --as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` --echo "$as_me:$LINENO: checking for $ac_func" >&5 --echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 --if eval "test \"\${$as_ac_var+set}\" = set"; then -+ echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 -+echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. */ --#include --/* 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 $ac_func (); --char (*f) (); -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --/* 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_$ac_func) || defined (__stub___$ac_func) --choke me --#else --f = $ac_func; -+ -+#ifndef getc_unlocked -+ char *p = (char *) getc_unlocked; - #endif - - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_var=yes" -+ ac_cv_have_decl_getc_unlocked=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --eval "$as_ac_var=no" -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_have_decl_getc_unlocked=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 --if test `eval echo '${'$as_ac_var'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 -+ if test $ac_cv_have_decl_getc_unlocked = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_GETC_UNLOCKED $gt_value - _ACEOF - --fi --done -+ -+ -+ case $gt_cv_func_printf_posix in -+ *yes) HAVE_POSIX_PRINTF=1 ;; -+ *) HAVE_POSIX_PRINTF=0 ;; -+ esac -+ -+ if test "$ac_cv_func_asprintf" = yes; then -+ HAVE_ASPRINTF=1 -+ else -+ HAVE_ASPRINTF=0 -+ fi -+ -+ if test "$ac_cv_func_snprintf" = yes; then -+ HAVE_SNPRINTF=1 -+ else -+ HAVE_SNPRINTF=0 -+ fi -+ -+ if test "$ac_cv_func_wprintf" = yes; then -+ HAVE_WPRINTF=1 -+ else -+ HAVE_WPRINTF=0 -+ fi - - - -@@ -12222,16 +27675,13 @@ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12244,11 +27694,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12257,23 +27716,22 @@ - am_cv_func_iconv=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12286,11 +27744,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12300,9 +27767,11 @@ - am_cv_func_iconv=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -@@ -12337,8 +27806,11 @@ - else - - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - - #include - #include -@@ -12352,12 +27824,6 @@ - size_t iconv(); - #endif - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12368,11 +27834,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -12381,10 +27856,11 @@ - am_cv_proto_iconv_arg1="" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - am_cv_proto_iconv_arg1="const" - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" - fi - -@@ -12407,15 +27883,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12426,11 +27899,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12439,10 +27921,12 @@ - am_cv_langinfo_codeset=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - am_cv_langinfo_codeset=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - - fi - echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 -@@ -12459,19 +27943,16 @@ - - echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 - echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 --if test "${am_cv_val_LC_MESSAGES+set}" = set; then -+if test "${gt_cv_val_LC_MESSAGES+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12482,27 +27963,38 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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 -- am_cv_val_LC_MESSAGES=yes -+ gt_cv_val_LC_MESSAGES=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --am_cv_val_LC_MESSAGES=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_val_LC_MESSAGES=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 --echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 -- if test $am_cv_val_LC_MESSAGES = yes; then -+echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5 -+echo "${ECHO_T}$gt_cv_val_LC_MESSAGES" >&6 -+ if test $gt_cv_val_LC_MESSAGES = yes; then - - cat >>confdefs.h <<\_ACEOF - #define HAVE_LC_MESSAGES 1 -@@ -12512,6 +28004,10 @@ - - fi - -+ if test -n "$INTL_MACOSX_LIBS"; then -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ fi -+ - for ac_prog in bison - do - # Extract the first word of "$ac_prog", so it can be a program name with args. -@@ -12545,46 +28041,187 @@ - echo "$as_me:$LINENO: result: $INTLBISON" >&5 - echo "${ECHO_T}$INTLBISON" >&6 - else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$INTLBISON" && break -+done -+ -+ if test -z "$INTLBISON"; then -+ ac_verc_fail=yes -+ else -+ echo "$as_me:$LINENO: checking version of bison" >&5 -+echo $ECHO_N "checking version of bison... $ECHO_C" >&6 -+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ case $ac_prog_version in -+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -+ esac -+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -+echo "${ECHO_T}$ac_prog_version" >&6 -+ fi -+ if test $ac_verc_fail = yes; then -+ INTLBISON=: -+ fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 -+echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 -+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+CFPreferencesCopyAppValue(NULL, NULL) -+ ; -+ 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 -+ gt_cv_func_CFPreferencesCopyAppValue=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_func_CFPreferencesCopyAppValue=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -+echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 -+_ACEOF -+ -+ fi -+ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 -+echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 -+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+CFLocaleCopyCurrent(); -+ ; -+ 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 -+ gt_cv_func_CFLocaleCopyCurrent=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_func_CFLocaleCopyCurrent=no - fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -+echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 -+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -- test -n "$INTLBISON" && break --done -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFLOCALECOPYCURRENT 1 -+_ACEOF - -- if test -z "$INTLBISON"; then -- ac_verc_fail=yes -- else -- echo "$as_me:$LINENO: checking version of bison" >&5 --echo $ECHO_N "checking version of bison... $ECHO_C" >&6 -- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -- case $ac_prog_version in -- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -- esac -- echo "$as_me:$LINENO: result: $ac_prog_version" >&5 --echo "${ECHO_T}$ac_prog_version" >&6 - fi -- if test $ac_verc_fail = yes; then -- INTLBISON=: -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - -- -- -- -- -- -- -- -- -- -- -- - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 - echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -@@ -12599,6 +28236,7 @@ - - - -+ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - -@@ -12636,33 +28274,39 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - extern int _nl_msg_cat_cntr; - extern int *_nl_domain_bindings; --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { - bindtextdomain ("", ""); --return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings -+return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12671,10 +28315,12 @@ - gt_cv_func_gnugettext1_libc=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - gt_cv_func_gnugettext1_libc=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi - echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 - echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 -@@ -12892,7 +28538,7 @@ - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -12936,7 +28582,7 @@ - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -13069,37 +28715,43 @@ - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - extern int _nl_msg_cat_cntr; - extern - #ifdef __cplusplus - "C" - #endif --const char *_nl_expand_alias (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+const char *_nl_expand_alias (const char *); - int - main () - { - bindtextdomain ("", ""); --return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) -+return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -13108,44 +28760,52 @@ - gt_cv_func_gnugettext1_libintl=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - gt_cv_func_gnugettext1_libintl=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - extern int _nl_msg_cat_cntr; - extern - #ifdef __cplusplus - "C" - #endif --const char *_nl_expand_alias (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+const char *_nl_expand_alias (const char *); - int - main () - { - bindtextdomain ("", ""); --return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) -+return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -13157,9 +28817,11 @@ - - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -@@ -13170,7 +28832,8 @@ - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ -- && test "$PACKAGE" != gettext; }; then -+ && test "$PACKAGE" != gettext-runtime \ -+ && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= -@@ -13185,20 +28848,28 @@ - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then -- INTLOBJS="\$(GETTOBJS)" -- BUILD_INCLUDED_LIBINTL=yes -+ BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" - LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - -+ CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - CATOBJEXT=.gmo - fi - - -+ if test -n "$INTL_MACOSX_LIBS"; then -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" -+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" -+ fi -+ fi -+ - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -@@ -13211,6 +28882,26 @@ - fi - fi - -+ echo "$as_me:$LINENO: checking whether to use NLS" >&5 -+echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 -+ echo "$as_me:$LINENO: result: $USE_NLS" >&5 -+echo "${ECHO_T}$USE_NLS" >&6 -+ if test "$USE_NLS" = "yes"; then -+ echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -+echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then -+ gt_source="external libintl" -+ else -+ gt_source="libc" -+ fi -+ else -+ gt_source="included intl directory" -+ fi -+ echo "$as_me:$LINENO: result: $gt_source" >&5 -+echo "${ECHO_T}$gt_source" >&6 -+ fi -+ - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then -@@ -13260,7 +28951,7 @@ - fi - - -- if test "$PACKAGE" = gettext; then -+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - -@@ -13268,7 +28959,6 @@ - - - -- - nls_cv_header_intl= - nls_cv_header_libgt= - -@@ -13281,6 +28971,12 @@ - GENCAT=gencat - - -+ INTLOBJS= -+ if test "$USE_INCLUDED_LIBINTL" = yes; then -+ INTLOBJS="\$(GETTOBJS)" -+ fi -+ -+ - INTL_LIBTOOL_SUFFIX_PREFIX= - - -@@ -13318,8 +29014,8 @@ - fi - - --ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" --ac_config_commands="$ac_config_commands default" -+ ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" -+ ac_config_commands="$ac_config_commands default" - 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 -@@ -13330,7 +29026,7 @@ - # 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 overriden when -+# `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. - -@@ -13348,13 +29044,13 @@ - # `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" -+ "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" -+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; - } | -@@ -13365,7 +29061,7 @@ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache --if cmp -s $cache_file confcache; then :; else -+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 -@@ -13384,18 +29080,33 @@ - # 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[ ]*=/{ -+ ac_vpsub='/^[ ]*VPATH[ ]*=/{ - s/:*\$(srcdir):*/:/; - s/:*\${srcdir}:*/:/; - s/:*@srcdir@:*/:/; --s/^\([^=]*=[ ]*\):*/\1/; -+s/^\([^=]*=[ ]*\):*/\1/; - s/:*$//; --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 -@@ -13403,6 +29114,27 @@ - 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 "${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 "${COMPILE_INTL_TRUE}" && test -z "${COMPILE_INTL_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"COMPILE_INTL\" was never defined. - Usually this means the macro was only invoked conditionally." >&5 -@@ -13424,11 +29156,12 @@ - # 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. ## - ## --------------------- ## -@@ -13437,46 +29170,57 @@ - 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 - --# NLS nuisances. - # Support unset when possible. --if (FOO=FOO; unset FOO) >/dev/null 2>&1; then -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset - else - as_unset=false - fi - --(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && -- { $as_unset LANG || test "${LANG+set}" != set; } || -- { LANG=C; export LANG; } --(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && -- { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || -- { LC_ALL=C; export LC_ALL; } --(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && -- { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || -- { LC_TIME=C; export LC_TIME; } --(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && -- { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || -- { LC_CTYPE=C; export LC_CTYPE; } --(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && -- { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || -- { LANGUAGE=C; export LANGUAGE; } --(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && -- { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || -- { LC_COLLATE=C; export LC_COLLATE; } --(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && -- { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || -- { LC_NUMERIC=C; export LC_NUMERIC; } --(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && -- { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || -- { LC_MESSAGES=C; export LC_MESSAGES; } -+ -+# 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=`(basename "$0") 2>/dev/null || -+as_me=`$as_basename "$0" || - $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ -@@ -13487,6 +29231,7 @@ - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -+ - # PATH needs CR, and LINENO needs CR and PATH. - # Avoid depending upon Character Ranges. - as_cr_letters='abcdefghijklmnopqrstuvwxyz' -@@ -13497,15 +29242,15 @@ - - # The user is always right. - if test "${PATH_SEPARATOR+set}" != set; then -- echo "#! /bin/sh" >conftest.sh -- echo "exit 0" >>conftest.sh -- chmod +x conftest.sh -- if (PATH=".;."; conftest.sh) >/dev/null 2>&1; 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 conftest.sh -+ rm -f conf$$.sh - fi - - -@@ -13554,6 +29299,8 @@ - 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+"$@"} -@@ -13627,13 +29374,20 @@ - 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="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -+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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - # IFS -@@ -13643,7 +29397,7 @@ - IFS=" $as_nl" - - # CDPATH. --$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } -+$as_unset CDPATH - - exec 6>&1 - -@@ -13660,7 +29414,7 @@ - cat >&5 <<_CSEOF - - This file was extended by $as_me, which was --generated by GNU Autoconf 2.53. Invocation command line was -+generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS -@@ -13700,12 +29454,13 @@ - - -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 -+ instantiate the configuration file FILE - --header=FILE[:TEMPLATE] -- instantiate the configuration header FILE -+ instantiate the configuration header FILE - - Configuration files: - $config_files -@@ -13722,11 +29477,10 @@ - cat >>$CONFIG_STATUS <<_ACEOF - ac_cs_version="\\ - config.status --configured by $0, generated by GNU Autoconf 2.53, -+configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - --Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+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 -@@ -13743,25 +29497,25 @@ - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` -- shift -- set dummy "$ac_option" "$ac_optarg" ${1+"$@"} -- shift -+ 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 $1 in -+ case $ac_option in - # Handling of the options. - _ACEOF --cat >>$CONFIG_STATUS <<_ACEOF -- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" -- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; --_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) -@@ -13776,13 +29530,16 @@ - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) -- shift -- CONFIG_FILES="$CONFIG_FILES $1" -+ $ac_shift -+ CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) -- shift -- CONFIG_HEADERS="$CONFIG_HEADERS $1" -+ $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 -@@ -13797,6 +29554,20 @@ - 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 -@@ -13805,10 +29576,10 @@ - # - - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" --# Capture the value of obsolete $ALL_LINGUAS because we need it to compute -- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it -+# Capture the value of obsolete ALL_LINGUAS because we need it to compute -+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. -- eval 'ALL_LINGUAS''="$ALL_LINGUAS"' -+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - -@@ -13852,6 +29623,9 @@ - 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 || - { -@@ -13860,17 +29634,17 @@ - } - - # Create a (secure) tmp directory for tmp files. --: ${TMPDIR=/tmp} -+ - { -- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && -+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" - } || - { -- tmp=$TMPDIR/cs$$-$RANDOM -+ tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) - } || - { -- echo "$me: cannot create a temporary directory in $TMPDIR" >&2 -+ echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } - } - -@@ -13928,6 +29702,7 @@ - s,@ac_ct_CC@,$ac_ct_CC,;t t - s,@EXEEXT@,$EXEEXT,;t t - s,@OBJEXT@,$OBJEXT,;t t -+s,@CYGPATH_W@,$CYGPATH_W,;t t - s,@PACKAGE@,$PACKAGE,;t t - s,@VERSION@,$VERSION,;t t - s,@ACLOCAL@,$ACLOCAL,;t t -@@ -13935,13 +29710,17 @@ - s,@AUTOMAKE@,$AUTOMAKE,;t t - s,@AUTOHEADER@,$AUTOHEADER,;t t - s,@MAKEINFO@,$MAKEINFO,;t t --s,@AMTAR@,$AMTAR,;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,@DEPDIR@,$DEPDIR,;t t - s,@am__include@,$am__include,;t t - s,@am__quote@,$am__quote,;t t -@@ -13949,6 +29728,8 @@ - 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,@build@,$build,;t t - s,@build_cpu@,$build_cpu,;t t - s,@build_vendor@,$build_vendor,;t t -@@ -13957,35 +29738,50 @@ - s,@host_cpu@,$host_cpu,;t t - s,@host_vendor@,$host_vendor,;t t - s,@host_os@,$host_os,;t t -+s,@EGREP@,$EGREP,;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,@RANLIB@,$RANLIB,;t t - s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t - s,@CPP@,$CPP,;t t --s,@LIBTOOL@,$LIBTOOL,;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,@ALLOCA@,$ALLOCA,;t t - s,@GSM_VERSION@,$GSM_VERSION,;t t - s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t -+s,@USE_NLS@,$USE_NLS,;t t - s,@MSGFMT@,$MSGFMT,;t t - s,@GMSGFMT@,$GMSGFMT,;t t - s,@XGETTEXT@,$XGETTEXT,;t t - s,@MSGMERGE@,$MSGMERGE,;t t -+s,@GLIBC2@,$GLIBC2,;t t - s,@GLIBC21@,$GLIBC21,;t t -+s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t -+s,@HAVE_POSIX_PRINTF@,$HAVE_POSIX_PRINTF,;t t -+s,@HAVE_ASPRINTF@,$HAVE_ASPRINTF,;t t -+s,@HAVE_SNPRINTF@,$HAVE_SNPRINTF,;t t -+s,@HAVE_WPRINTF@,$HAVE_WPRINTF,;t t - s,@LIBICONV@,$LIBICONV,;t t - s,@LTLIBICONV@,$LTLIBICONV,;t t - s,@INTLBISON@,$INTLBISON,;t t --s,@USE_NLS@,$USE_NLS,;t t - s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t - s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t - s,@CATOBJEXT@,$CATOBJEXT,;t t --s,@INTLOBJS@,$INTLOBJS,;t t - s,@DATADIRNAME@,$DATADIRNAME,;t t - s,@INSTOBJEXT@,$INSTOBJEXT,;t t - s,@GENCAT@,$GENCAT,;t t -+s,@INTLOBJS@,$INTLOBJS,;t t - s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t - s,@INTLLIBS@,$INTLLIBS,;t t - s,@LIBINTL@,$LIBINTL,;t t -@@ -13993,6 +29789,8 @@ - s,@POSUB@,$POSUB,;t t - s,@COMPILE_INTL_TRUE@,$COMPILE_INTL_TRUE,;t t - s,@COMPILE_INTL_FALSE@,$COMPILE_INTL_FALSE,;t t -+s,@LIBOBJS@,$LIBOBJS,;t t -+s,@LTLIBOBJS@,$LTLIBOBJS,;t t - CEOF - - _ACEOF -@@ -14022,9 +29820,9 @@ - (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" -+ 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" -+ 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 -@@ -14042,46 +29840,51 @@ - # 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,:.*,,'` ;; -+ 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=`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 || -+ 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'` -- { case "$ac_dir" in -- [\\/]* | ?:[\\/]* ) as_incr_dir=;; -- *) as_incr_dir=.;; --esac --as_dummy="$ac_dir" --for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do -- case $as_mkdir_dir in -- # Skip DOS drivespec -- ?:) as_incr_dir=$as_mkdir_dir ;; -- *) -- as_incr_dir=$as_incr_dir/$as_mkdir_dir -- test -d "$as_incr_dir" || -- mkdir "$as_incr_dir" || -- { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 --echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac --done; } -+ { 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=. - -@@ -14108,12 +29911,45 @@ - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac --# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be --# absolute. --ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` --ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` --ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` --ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` -+ -+# 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 -@@ -14121,11 +29957,6 @@ - *) 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. */ -@@ -14135,7 +29966,7 @@ - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | -- sed 's,.*/,,'` by configure." -+ sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. -@@ -14144,26 +29975,32 @@ - 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 -+ # 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;; -+ 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 -+ 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;; -+ fi;; - esac - done` || { (exit 1); exit 1; } -+ -+ 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 - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -@@ -14203,12 +30040,12 @@ - # 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_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_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' - ac_uB='$,\1#\2define\3' - ac_uC=' ' - ac_uD=',;t' -@@ -14217,11 +30054,11 @@ - # 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,:.*,,'` ;; -+ 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=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - -@@ -14235,28 +30072,29 @@ - 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 -+ # 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;; -+ # 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 -+ 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;; -+ fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. -- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in -+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - - _ACEOF - -@@ -14279,9 +30117,9 @@ - s,[\\$`],\\&,g - t clear - : clear --s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -+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 -+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 -@@ -14295,13 +30133,13 @@ - # 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]*,/* & */, -+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 egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$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 -@@ -14310,7 +30148,7 @@ - # 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 -+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS -@@ -14325,7 +30163,7 @@ - mv conftest.tail conftest.defines - done - rm -f conftest.defines --echo ' fi # egrep' >>$CONFIG_STATUS -+echo ' fi # grep' >>$CONFIG_STATUS - echo >>$CONFIG_STATUS - - # Break up conftest.undefs because some shells have a limit on the size -@@ -14337,7 +30175,7 @@ - # 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 -+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS -@@ -14365,41 +30203,46 @@ - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then -- if cmp -s $ac_file $tmp/config.h 2>/dev/null; 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 || -+ 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'` -- { case "$ac_dir" in -- [\\/]* | ?:[\\/]* ) as_incr_dir=;; -- *) as_incr_dir=.;; --esac --as_dummy="$ac_dir" --for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do -- case $as_mkdir_dir in -- # Skip DOS drivespec -- ?:) as_incr_dir=$as_mkdir_dir ;; -- *) -- as_incr_dir=$as_incr_dir/$as_mkdir_dir -- test -d "$as_incr_dir" || -- mkdir "$as_incr_dir" || -- { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 --echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac --done; } -+ { 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 -@@ -14408,13 +30251,29 @@ - cat $tmp/config.h - rm -f $tmp/config.h - fi -- # Run the commands associated with the file. -- case $ac_file in -- gsm_config.h ) # update the timestamp --echo 'timestamp for gsm_config.h' >"./stamp-h1" -- ;; -+# 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 - -@@ -14426,16 +30285,41 @@ - 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 || -+ 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 -@@ -14461,12 +30345,45 @@ - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac --# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be --# absolute. --ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` --ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` --ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` --ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` -+ -+# 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 -@@ -14484,10 +30401,10 @@ - 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 || -+ X"$mf" : 'X\(//\)[^/]' \| \ -+ X"$mf" : 'X\(//\)$' \| \ -+ X"$mf" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || - echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } -@@ -14497,61 +30414,60 @@ - else - continue - fi -- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue -- # Extract the definition of DEP_FILES from the Makefile without -- # running `make'. -- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` -+ # 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 -e '/^U = / s///p' < "$mf"` -- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" -- # 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 -e ' -- /^DEP_FILES = .*\\\\$/ { -- s/^DEP_FILES = // -- :loop -- s/\\\\$// -- p -- n -- /\\\\$/ b loop -- p -- } -- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ -+ 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 || -+ 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'` -- { case $dirpart/$fdir in -- [\\/]* | ?:[\\/]* ) as_incr_dir=;; -- *) as_incr_dir=.;; --esac --as_dummy=$dirpart/$fdir --for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do -- case $as_mkdir_dir in -- # Skip DOS drivespec -- ?:) as_incr_dir=$as_mkdir_dir ;; -- *) -- as_incr_dir=$as_incr_dir/$as_mkdir_dir -- test -d "$as_incr_dir" || -- mkdir "$as_incr_dir" || -- { { echo "$as_me:$LINENO: error: cannot create $dirpart/$fdir" >&5 --echo "$as_me: error: cannot create $dirpart/$fdir" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac --done; } -+ { 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" -@@ -14578,35 +30494,51 @@ - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac -+ # Treat a directory as a PO directory if and only if it has a -+ # POTFILES.in file. This allows packages to have multiple PO -+ # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend -+ POMAKEFILEDEPS="POTFILES.in" -+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. -- if test -n "$ALL_LINGUAS"; then -+ if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi -- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` -+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" -+ else -+ # The set of available languages was given in configure.in. -+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi -+ # Compute POFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) -+ # Compute UPDATEPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) -+ # Compute DUMMYPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) -+ # Compute GMOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= -- GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= -+ GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" -- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. -@@ -14641,7 +30573,7 @@ - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in -@@ -14677,8 +30609,11 @@ - # 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_cs_success=false -+ $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. ---- gsmlib-1.10.orig/stamp-h.in -+++ gsmlib-1.10/stamp-h.in -@@ -0,0 +1 @@ -+timestamp ---- gsmlib-1.10.orig/apps/gsmsmsstore.cc -+++ gsmlib-1.10/apps/gsmsmsstore.cc -@@ -292,19 +292,14 @@ - sourceStore = new SortedSMSStore(sourceMeTa->getSMSStore(storeName)); - } - -- // make sure destination file exists -+ // make sure destination file exists if specified -+ // Use isFile() for its exception-throwing properties, and discard -+ // return value cos we don't care (yet) whether it's a device or a -+ // regular file. - if (destination != "") -- { -- try -- { -- ofstream f(destination.c_str(), ios::out | ios::app | ios::binary); -- } -- catch (exception) -- { -- } -- } -+ isFile(destination); - -- // start accessing destination destination store or file -+ // start accessing destination store or file - if (operation == CopyOp || operation == BackupOp || operation == AddOp || - operation == DeleteOp) - if (destination == "-") ---- gsmlib-1.10.orig/apps/gsmsmsd.cc -+++ gsmlib-1.10/apps/gsmsmsd.cc -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - #endif - #if defined(HAVE_GETOPT_LONG) || defined(WIN32) - #include -@@ -39,6 +40,7 @@ - #include - #include - #include -+#include - - using namespace std; - using namespace gsmlib; -@@ -53,6 +55,12 @@ - {"store", required_argument, (int*)NULL, 't'}, - {"device", required_argument, (int*)NULL, 'd'}, - {"spool", required_argument, (int*)NULL, 's'}, -+ {"sent", required_argument, (int*)NULL, 'S'}, -+ {"failed", required_argument, (int*)NULL, 'F'}, -+ {"priorities", required_argument, (int*)NULL, 'P'}, -+#ifndef WIN32 -+ {"syslog", no_argument, (int*)NULL, 'L'}, -+#endif - {"sca", required_argument, (int*)NULL, 'C'}, - {"flush", no_argument, (int*)NULL, 'f'}, - {"concatenate", required_argument, (int*)NULL, 'c'}, -@@ -178,9 +186,21 @@ - - bool requestStatusReport = false; - --void sendSMS(string spoolDir, Ref at) -+void sendSMS(string spoolDirBase, string sentDirBase, string failedDirBase, -+ unsigned int priority, bool enableSyslog, Ref at) - { -- if (spoolDir != "") -+ string spoolDir = spoolDirBase; -+ string sentDir = sentDirBase; -+ string failedDir = failedDirBase; -+ if ( priority >= 1 ) -+ { -+ spoolDir = spoolDirBase + stringPrintf(_("%d"),priority); -+ sentDir = sentDirBase + stringPrintf(_("%d"),priority); -+ failedDir = failedDirBase + stringPrintf(_("%d"),priority); -+ } -+ if ( priority > 1 ) -+ sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); -+ if (spoolDirBase != "") - { - // look into spoolDir for any outgoing SMS that should be sent - #ifdef WIN32 -@@ -211,6 +231,8 @@ - strcmp(entry->d_name, "..") != 0) - #endif - { -+ if ( priority > 1 ) -+ sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); - // read in file - // the first line is interpreted as the phone number - // the rest is the message -@@ -221,11 +243,30 @@ - #endif - ifstream ifs(filename.c_str()); - if (! ifs) -+#ifndef WIN32 -+ if (enableSyslog) -+ { -+ syslog(LOG_WARNING, "Could not open SMS spool file %s", -+ filename.c_str()); -+ if (failedDirBase != "") { -+ string failedfilename = failedDir + "/" + entry->d_name; -+ rename(filename.c_str(),failedfilename.c_str()); -+ } -+ continue; -+ } -+ else -+#endif - throw GsmException( - stringPrintf(_("count not open SMS spool file %s"), - filename.c_str()), ParameterError); - char phoneBuf[1001]; - ifs.getline(phoneBuf, 1000); -+ for(int i=0;i<1000;i++) -+ if(phoneBuf[i]=='\t' || phoneBuf[i]==0) -+ { // ignore everything after a in the phone number -+ phoneBuf[i]=0; -+ break; -+ } - string text; - while (! ifs.eof()) - { -@@ -252,17 +293,51 @@ - submitSMS->setStatusReportRequest(requestStatusReport); - Address destAddr(phoneNumber); - submitSMS->setDestinationAddress(destAddr); -- if (concatenatedMessageId == -1) -- me->sendSMSs(submitSMS, text, true); -- else -+ try - { -- // maximum for concatenatedMessageId is 255 -- if (concatenatedMessageId > 256) -- concatenatedMessageId = 0; -- me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); -+ if (concatenatedMessageId == -1) -+ me->sendSMSs(submitSMS, text, true); -+ else -+ { -+ // maximum for concatenatedMessageId is 255 -+ if (concatenatedMessageId > 256) -+ concatenatedMessageId = 0; -+ me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); -+ } -+#ifndef WIN32 -+ if (enableSyslog) -+ syslog(LOG_NOTICE, "Sent SMS to %s from file %s", phoneBuf, filename.c_str()); -+#endif -+ if (sentDirBase != "") { -+#ifdef WIN32 -+ string sentfilename = sentDir + "\\" + fileInfo.name; -+#else -+ string sentfilename = sentDir + "/" + entry->d_name; -+#endif -+ rename(filename.c_str(),sentfilename.c_str()); -+ } else { -+ unlink(filename.c_str()); -+ } -+ } -+ catch (GsmException &me) -+ { -+#ifndef WIN32 -+ if (enableSyslog) -+ syslog(LOG_WARNING, "Failed sending SMS to %s from file %s: %s", phoneBuf, -+ filename.c_str(), me.what()); -+ else -+#endif -+ cerr << "Failed sending SMS to " << phoneBuf << " from " -+ << filename << ": " << me.what() << endl; -+ if (failedDirBase != "") { -+#ifdef WIN32 -+ string failedfilename = failedDir + "\\" + fileInfo.name; -+#else -+ string failedfilename = failedDir + "/" + entry->d_name; -+#endif -+ rename(filename.c_str(),failedfilename.c_str()); -+ } - } -- -- unlink(filename.c_str()); - #ifdef WIN32 - } - moreFiles = _findnext(fileHandle, &fileInfo) == 0; -@@ -276,10 +351,18 @@ - } - } - -+#ifndef WIN32 -+void syslogExit(int exitcode, int *dummy) -+{ -+ syslog(LOG_NOTICE, "exited (exit %d)",exitcode); -+} -+#endif -+ - // *** main program - - int main(int argc, char *argv[]) - { -+ bool enableSyslog = false; - try - { - string device = "/dev/mobilephone"; -@@ -291,13 +374,16 @@ - bool flushSMS = false; - bool onlyReceptionIndication = true; - string spoolDir; -+ string sentDir = ""; -+ string failedDir = ""; -+ unsigned int priorities = 0; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - string concatenatedMessageIdStr; - - int opt; - int dummy; -- while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:XDr", -+ while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:S:F:P:LXDr", - longOpts, &dummy)) != -1) - switch (opt) - { -@@ -328,6 +414,18 @@ - case 's': - spoolDir = optarg; - break; -+ case 'L': -+ enableSyslog = true; -+ break; -+ case 'S': -+ sentDir = optarg; -+ break; -+ case 'F': -+ failedDir = optarg; -+ break; -+ case 'P': -+ priorities = abs(atoi(optarg)); -+ break; - case 'f': - flushSMS = true; - break; -@@ -360,11 +458,21 @@ - << _(" -d, --device sets the device to connect to") << endl - << _(" -D, --direct enable direct routing of SMSs") << endl - << _(" -f, --flush flush SMS from store") << endl -+ << _(" -F, --failed directory to move failed SMS to,") << endl -+ << _(" if unset, the SMS will be deleted") << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl -+#ifndef WIN32 -+ << _(" -L, --syslog log errors and information to syslog") -+ << endl -+#endif -+ << _(" -P, --priorities number of priority levels to use,") << endl -+ << _(" (default: none)") << endl - << _(" -r, --requeststat request SMS status report") << endl - << _(" -s, --spool spool directory for outgoing SMS") - << endl -+ << _(" -S, --sent directory to move sent SMS to,") << endl -+ << _(" if unset, the SMS will be deleted") << endl - << _(" -t, --store name of SMS store to use for flush\n" - " and/or temporary SMS storage") << endl - << endl -@@ -380,6 +488,14 @@ - << endl << endl - << _(" default is \"sms cb stat\"") << endl << endl - << _("If no action is given, the SMS is printed to stdout") -+ << endl << endl -+ << _("If -P is given, it activates the priority system and sets the") << endl -+ << _("number or levels to use. For every level, there must be directories") << endl -+ << _("named +.") << endl -+ << _("For example \"-P 2 -s queue -S send -F failed\" needs the following") <getAt()); -+ sendSMS(spoolDir, sentDir, failedDir, priorities, enableSyslog, me->getAt()); - } - } - catch (GsmException &ge) ---- gsmlib-1.10.orig/gsmlib/gsm_unix_serial.cc -+++ gsmlib-1.10/gsmlib/gsm_unix_serial.cc -@@ -20,12 +20,14 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include - #include -+#include - - using namespace std; - using namespace gsmlib; -@@ -131,7 +133,7 @@ - { - int res = read(_fd, &c, 1); - if (res != 1) -- return -1; -+ throwModemException(_("end of file when reading from TA")); - else - readDone = true; - break; -@@ -178,11 +180,15 @@ - - // switch off non-blocking mode - int fdFlags; -- if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) -+ if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) { -+ close(_fd); - throwModemException(_("getting file status flags failed")); -+ } - fdFlags &= ~O_NONBLOCK; -- if (fcntl(_fd, F_SETFL, fdFlags) == -1) -+ if (fcntl(_fd, F_SETFL, fdFlags) == -1) { -+ close(_fd); - throwModemException(_("switching of non-blocking mode failed")); -+ } - - long int saveTimeoutVal = _timeoutVal; - _timeoutVal = 3; -@@ -194,17 +200,22 @@ - - // toggle DTR to reset modem - int mctl = TIOCM_DTR; -- if (ioctl(_fd, TIOCMBIC, &mctl) < 0) -+ if (ioctl(_fd, TIOCMBIC, &mctl) < 0) { -+ close(_fd); - throwModemException(_("clearing DTR failed")); -+ } - // the waiting time for DTR toggling is increased with each loop - usleep(holdoff[initTries]); -- if (ioctl(_fd, TIOCMBIS, &mctl) < 0) -+ if (ioctl(_fd, TIOCMBIS, &mctl) < 0) { -+ close(_fd); - throwModemException(_("setting DTR failed")); -- -+ } - // get line modes -- if (tcgetattr(_fd, &t) < 0) -+ if (tcgetattr(_fd, &t) < 0) { -+ close(_fd); - throwModemException(stringPrintf(_("tcgetattr device '%s'"), - device.c_str())); -+ } - - // set line speed - cfsetispeed(&t, lineSpeed); -@@ -229,9 +240,11 @@ - t.c_cc[VSUSP] = 0; - - // write back -- if(tcsetattr (_fd, TCSANOW, &t) < 0) -+ if(tcsetattr (_fd, TCSANOW, &t) < 0) { -+ close(_fd); - throwModemException(stringPrintf(_("tcsetattr device '%s'"), - device.c_str())); -+ } - // the waiting time for writing to the ME/TA is increased with each loop - usleep(holdoff[initTries]); - -@@ -279,11 +292,14 @@ - catch (GsmException &e) - { - _timeoutVal = saveTimeoutVal; -- if (initTries == 0) -+ if (initTries == 0) { -+ close(_fd); - throw e; -+ } - } - } - // no response after 3 tries -+ close(_fd); - throw GsmException(stringPrintf(_("reset modem failed '%s'"), - device.c_str()), OtherError); - } ---- gsmlib-1.10.orig/gsmlib/gsm_me_ta.cc -+++ gsmlib-1.10/gsmlib/gsm_me_ta.cc -@@ -19,6 +19,8 @@ - #include - #include - -+#include -+ - using namespace std; - using namespace gsmlib; - ---- gsmlib-1.10.orig/gsmlib/gsm_sorted_phonebook.cc -+++ gsmlib-1.10/gsmlib/gsm_sorted_phonebook.cc -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - - const int MAX_LINE_SIZE = 1000; - ---- gsmlib-1.10.orig/gsmlib/gsm_sms_codec.cc -+++ gsmlib-1.10/gsmlib/gsm_sms_codec.cc -@@ -23,6 +23,7 @@ - #ifdef HAVE_STRING_H - #include - #endif -+#include - #include - using namespace std; - using namespace gsmlib; ---- gsmlib-1.10.orig/gsmlib/gsm_at.cc -+++ gsmlib-1.10/gsmlib/gsm_at.cc -@@ -106,11 +106,27 @@ - putLine("AT" + atCommand); - // and gobble up CR/LF (and possibly echoed characters if echo can't be - // switched off) -+ // Also, some mobiles (e.g., Sony Ericsson K800i) respond to commands -+ // like "at+cmgf=0" with "+CMGF: 0" on success as well as the "OK" -+ // status -- so gobble that (but not if that sort of response was expected) -+ // FIXME: this is a gross hack, should be done via capabilities or sth -+ #include -+ string::size_type loc = atCommand.find( "=", 1 ); -+ string expect; -+ if (loc != string::npos) { -+ expect = atCommand; -+ expect.replace(loc, 1, " "); -+ expect.insert(loc, ":"); -+ } else { -+ expect = ""; -+ } - do - { - s = normalize(getLine()); - } -- while (s.length() == 0 || s == "AT" + atCommand); -+ while (s.length() == 0 || s == "AT" + atCommand || -+ ((response.length() == 0 || !matchResponse(s, response)) && -+ (expect.length() > 0 && matchResponse(s, expect)))); - - // handle errors - if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) ---- gsmlib-1.10.orig/gsmlib/gsm_map_key.h -+++ gsmlib-1.10/gsmlib/gsm_map_key.h -@@ -27,6 +27,7 @@ - - template class MapKey - { -+ public: - SortedStore &_myStore; // my store - // different type keys - Address _addressKey; -@@ -45,6 +46,7 @@ - MapKey(SortedStore &myStore, string key) : - _myStore(myStore), _strKey(key) {} - -+/* - friend - bool operator< - #ifndef WIN32 -@@ -59,6 +61,7 @@ - #endif - (const MapKey &x, - const MapKey &y); -+*/ - }; - - // compare two keys -@@ -72,7 +75,7 @@ - // MapKey members - - template -- bool gsmlib::operator<(const MapKey &x, -+ bool operator<(const MapKey &x, - const MapKey &y) - { - assert(&x._myStore == &y._myStore); -@@ -97,7 +100,7 @@ - } - - template -- bool gsmlib::operator==(const MapKey &x, -+ bool operator==(const MapKey &x, - const MapKey &y) - { - assert(&x._myStore == &y._myStore); ---- gsmlib-1.10.orig/gsmlib/gsm_me_ta.h -+++ gsmlib-1.10/gsmlib/gsm_me_ta.h -@@ -291,8 +291,8 @@ - // 3 disable phone receive RF circuits only - // 4 disable phone both transmit and receive RF circuits - // 5...127 implementation-defined -- int MeTa::getFunctionalityLevel() throw(GsmException); -- void MeTa::setFunctionalityLevel(int level) throw(GsmException); -+ int getFunctionalityLevel() throw(GsmException); -+ void setFunctionalityLevel(int level) throw(GsmException); - - // return battery charge status (+CBC): - // 0 ME is powered by the battery -@@ -386,13 +386,13 @@ - void setCallWaitingLockStatus(FacilityClass cl, - bool lock)throw(GsmException); - -- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); -+ void setCLIRPresentation(bool enable) throw(GsmException); - //(+CLIR) - - // 0:according to the subscription of the CLIR service - // 1:CLIR invocation - // 2:CLIR suppression -- int MeTa::getCLIRPresentation() throw(GsmException); -+ int getCLIRPresentation() throw(GsmException); - - friend class Phonebook; - friend class SMSStore; ---- gsmlib-1.10.orig/gsmlib/gsm_util.cc -+++ gsmlib-1.10/gsmlib/gsm_util.cc -@@ -35,6 +35,7 @@ - #define __USE_GNU - #define _GNU_SOURCE - #endif -+#include - #include - #include - ---- gsmlib-1.10.orig/intl/Makefile -+++ gsmlib-1.10/intl/Makefile -@@ -0,0 +1,214 @@ -+# Makefile for directory with message catalog handling in GNU NLS Utilities. -+# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+PACKAGE = gsmlib -+VERSION = 1.10 -+ -+SHELL = /bin/sh -+ -+srcdir = . -+top_srcdir = .. -+top_builddir = .. -+ -+ -+prefix = /usr -+exec_prefix = ${prefix} -+transform = s,x,x, -+libdir = $(exec_prefix)/lib -+includedir = $(prefix)/include -+datadir = $(prefix)/share -+localedir = $(datadir)/locale -+gnulocaledir = $(prefix)/share/locale -+gettextsrcdir = ${prefix}/share/gettext/intl -+aliaspath = $(localedir):. -+subdir = intl -+ -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+MKINSTALLDIRS = $(top_builddir)/scripts/mkinstalldirs -+ -+l = @l@ -+ -+AR = ar -+CC = i486-linux-gnu-gcc -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+RANLIB = ranlib -+ -+DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ -+-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" -DHAVE_CONFIG_H -+CPPFLAGS = -+CFLAGS = -D_REENTRANT -g -O2 -+LDFLAGS = -+ -+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) -+ -+HEADERS = $(COMHDRS) libgettext.h loadinfo.h -+COMHDRS = gettext.h gettextP.h hash-string.h -+SOURCES = $(COMSRCS) intl-compat.c cat-compat.c -+COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ -+finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ -+explodename.c -+OBJECTS = bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ -+finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ -+explodename.$lo -+CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo -+GETTOBJS = intl-compat.$lo -+DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ -+xopen-msg.sed $(HEADERS) $(SOURCES) -+DISTFILES.normal = VERSION -+DISTFILES.gettext = libintl.glibc intlh.inst.in -+ -+.SUFFIXES: -+.SUFFIXES: .c .o .lo -+.c.o: -+ $(COMPILE) $< -+.c.lo: -+ $(LIBTOOL) --mode=compile $(COMPILE) $< -+ -+INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib -+ -+all: all-no -+ -+all-yes: libintl.$la intlh.inst -+all-no: -+ -+libintl.a: $(OBJECTS) -+ rm -f $@ -+ $(AR) cru $@ $(OBJECTS) -+ $(RANLIB) $@ -+ -+libintl.la: $(OBJECTS) -+ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ -+ -version-info 1:0 -rpath $(libdir) -+ -+../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot -+ cd ../po && $(MAKE) cat-id-tbl.$lo -+ -+check: all -+ -+# This installation goal is only used in GNU gettext. Packages which -+# only use the library should use install instead. -+ -+# We must not install the libintl.h/libintl.a files if we are on a -+# system which has the gettext() function in its C library or in a -+# separate library or use the catgets interface. A special case is -+# where configure found a previously installed GNU gettext library. -+# If you want to use the one which comes with this version of the -+# package, you have to use `configure --with-included-gettext'. -+install: install-exec install-data -+install-exec: all -+ if test "$(PACKAGE)" = "gettext" \ -+ && test '' = '$(GETTOBJS)'; then \ -+ if test -r $(MKINSTALLDIRS); then \ -+ $(MKINSTALLDIRS) $(libdir) $(includedir); \ -+ else \ -+ $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ -+ fi; \ -+ $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ -+ $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ -+ else \ -+ : ; \ -+ fi -+install-data: all -+ if test "$(PACKAGE)" = "gettext"; then \ -+ if test -r $(MKINSTALLDIRS); then \ -+ $(MKINSTALLDIRS) $(gettextsrcdir); \ -+ else \ -+ $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ -+ fi; \ -+ $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ -+ dists="$(DISTFILES.common)"; \ -+ for file in $$dists; do \ -+ $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ -+ done; \ -+ else \ -+ : ; \ -+ fi -+ -+# Define this as empty until I found a useful application. -+installcheck: -+ -+uninstall: -+ dists="$(DISTFILES.common)"; \ -+ for file in $$dists; do \ -+ rm -f $(gettextsrcdir)/$$file; \ -+ done -+ -+info dvi: -+ -+$(OBJECTS): ../gsm_config.h libgettext.h -+bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -+dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h -+ -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) -+ here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) -+ -+id: ID -+ -+ID: $(HEADERS) $(SOURCES) -+ here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) -+ -+ -+mostlyclean: -+ rm -f *.a *.o *.lo core core.* -+ -+clean: mostlyclean -+ -+distclean: clean -+ rm -f Makefile ID TAGS po2msg.sed po2tbl.sed -+ -+maintainer-clean: distclean -+ @echo "This command is intended for maintainers to use;" -+ @echo "it deletes files that may require special tools to rebuild." -+ -+ -+# GNU gettext needs not contain the file `VERSION' but contains some -+# other files which should not be distributed in other packages. -+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -+dist distdir: Makefile $(DISTFILES) -+ if test "$(PACKAGE)" = gettext; then \ -+ additional="$(DISTFILES.gettext)"; \ -+ else \ -+ additional="$(DISTFILES.normal)"; \ -+ fi; \ -+ for file in $(DISTFILES.common) $$additional; do \ -+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ -+ || cp -p $(srcdir)/$$file $(distdir); \ -+ done -+ -+dist-libc: -+ tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc -+ -+Makefile: Makefile.in ../config.status -+ cd .. \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+# The dependency for intlh.inst is different in gettext and all other -+# packages. Because we cannot you GNU make features we have to solve -+# the problem while rewriting Makefile.in. -+@GT_YES@intlh.inst: intlh.inst.in ../config.status -+@GT_YES@ cd .. \ -+@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ -+@GT_YES@ $(SHELL) ./config.status -+@GT_NO@.PHONY: intlh.inst -+@GT_NO@intlh.inst: -+ -+# Tell versions [3.59,3.63) of GNU make not to export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: ---- gsmlib-1.10.orig/po/cat-id-tbl.c -+++ gsmlib-1.10/po/cat-id-tbl.c -@@ -1,435 +0,0 @@ --/* Automatically generated by po2tbl.sed from gsmlib.pot. */ -- --#if HAVE_CONFIG_H --# include --#endif -- --#include "libgettext.h" -- --const struct _msg_ent _msg_tbl[] = { -- {"", 1}, -- {"could not execute '%s'", 2}, -- {"error writing to '%s'", 3}, -- {"error when calling opendir('%s')(errno: %d/%s)", 4}, -- {"count not open SMS spool file %s", 5}, -- {": version %s [compiled %s]", 6}, -- {"\ --: [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n\ -- [-s spool dir][-t][-v]{sms_type}", 7}, -- {"\ -- -a, --action the action to execute when an SMS arrives\n\ -- (SMS is send to stdin of action)", 8}, -- {" -b, --baudrate baudrate to use for device (default: 38400)", 9}, -- {" -c, --concatenate start ID for concatenated SMS messages", 10}, -- {" -C, --sca SMS service centre address", 11}, -- {" -d, --device sets the device to connect to", 12}, -- {" -D, --direct enable direct routing of SMSs", 13}, -- {" -f, --flush flush SMS from store", 14}, -- {" -h, --help prints this message", 15}, -- {" -I, --init device AT init sequence", 16}, -- {" -r, --requeststat request SMS status report", 17}, -- {" -s, --spool spool directory for outgoing SMS", 18}, -- {"\ -- -t, --store name of SMS store to use for flush\n\ -- and/or temporary SMS storage", 19}, -- {" -v, --version prints version and exits", 20}, -- {" -X, --xonxoff switch on software handshake", 21}, -- {" sms_type may be any combination of", 22}, -- {" sms, no_sms controls reception of normal SMS", 23}, -- {" cb, no_cb controls reception of cell broadcast messages", 24}, -- {" stat, no_stat controls reception of status reports", 25}, -- {" default is \"sms cb stat\"", 26}, -- {"If no action is given, the SMS is printed to stdout", 27}, -- {"unknown option", 28}, -- {"error when calling sigaction() (errno: %d/%s)", 29}, -- {"store name must be given for flush option", 30}, -- {"Type of message: ", 31}, -- {"SMS message\n", 32}, -- {"submit report message\n", 33}, -- {"status report message\n", 34}, -- {"cell broadcast message\n", 35}, -- {"[ERROR]: ", 36}, -- {"(try setting sms_type, please refer to gsmsmsd manpage)", 37}, -- {"\ --: [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n\ -- [-t][-v][-X] phonenumber [text]", 38}, -- {" -c, --concatenate ID for concatenated SMS messages", 39}, -- {" -d, --device sets the destination device to connect to", 40}, -- {"\ -- -t, --test convert text to GSM alphabet and vice\n\ -- versa, no SMS message is sent", 41}, -- {" phonenumber recipient's phone number", 42}, -- {"\ -- text optional text of the SMS message\n\ -- if omitted: read from stdin", 43}, -- {"phone number and text missing", 44}, -- {"more than two parameters given", 45}, -- {"text is larger than 160 characters", 46}, -- {"inserting '%s' tel# %s", 47}, -- {" (index #%d)", 48}, -- {"updating '%s' tel# %s to new tel# %s", 49}, -- {"updating '%s' tel# %s to new tel# %s(index %d)", 50}, -- {"deleting '%s' tel# %s", 51}, -- {"\ --: [-b baudrate][-c][-d device or file][-h][-I init string]\n\ -- [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]", 52}, -- {" -c, --copy copy source entries to destination", 53}, -- {"\ -- -d, --destination sets the destination device to connect \n\ -- to, or the file to write", 54}, -- {" -D, --destination-backend sets the destination backend", 55}, -- {" -i, --index takes index positions into account", 56}, -- {" -p, --phonebook name of phonebook to use", 57}, -- {"\ -- -s, --source sets the source device to connect to,\n\ -- or the file to read", 58}, -- {"\ -- -t, --charset sets the character set to use for\n\ -- phonebook entries", 59}, -- {" -S, --source-backend sets the source backend", 60}, -- {" -V, --verbose print detailed progress messages", 61}, -- {"\ -- -y, --synchronize synchronize destination with source\n\ -- entries (destination is overwritten)\n\ -- (see gsmpb(1) for details)", 62}, -- {"both source and destination must be given", 63}, -- {"phonebook name must be given", 64}, -- {"\ --text '%s' is too large to fit into destination (maximum size %d characters)", 65}, -- {"\ --phone number '%s' is too large to fit into destination (maximum size %d \ --characters)", 66}, -- {"active ", 67}, -- {"inactive ", 68}, -- {"number: ", 69}, -- {" subaddr: ", 70}, -- {" time: ", 71}, -- {" Manufacturer: ", 72}, -- {" Model: ", 73}, -- {" Revision: ", 74}, -- {" Serial Number: ", 75}, -- {" Functionality Level: ", 76}, -- {"unsupported", 77}, -- {"> Status: ", 78}, -- {"unknown", 79}, -- {"current", 80}, -- {"available", 81}, -- {"forbidden", 82}, -- {" Long name: '", 83}, -- {" Short name: '", 84}, -- {" Numeric name: ", 85}, -- {" Mode: ", 86}, -- {"automatic", 87}, -- {"manual", 88}, -- {"deregister", 89}, -- {"manual/automatic", 90}, -- {" Voice", 91}, -- {" unknown", 92}, -- {" Data", 93}, -- {" Fax", 94}, -- {"on", 95}, -- {"off", 96}, -- {"UnconditionalReason", 97}, -- {"MobileBusyReason", 98}, -- {"NoReplyReason", 99}, -- {"NotReachableReason", 100}, -- {"0 ME is powered by the battery", 101}, -- {"1 ME has a battery connected, but is not powered by it", 102}, -- {"2 ME does not have a battery connected", 103}, -- {"3 Recognized power fault, calls inhibited", 104}, -- {"unknown facility class parameter '%c'", 105}, -- {"not enough parameters, minimum number of parameters is %d", 106}, -- {"too many parameters, maximum number of parameters is %d", 107}, -- {"\ --: [-b baudrate][-d device][-h][-I init string][-o operation]\n\ -- [-v][-X]{parameters}", 108}, -- {"\ -- -o, --operation operation to perform on the mobile \n\ -- phone with the specified parameters", 109}, -- {"\ -- parameters parameters to use for the operation\n\ -- (if an operation is given) or\n\ -- a specification which kind of\n\ -- information to read from the mobile phone", 110}, -- {"\ --Refer to gsmctl(1) for details on the available parameters and operations.", 111}, -- {"unknown information parameter '%s'", 112}, -- {"unknown opmode parameter '%s'", 113}, -- {"unknown forward reason parameter '%s'", 114}, -- {"unknown forward mode parameter '%s'", 115}, -- {"unknown operation '%s'", 116}, -- {"inserting entry #%d from source into destination", 117}, -- {"incompatible options '%c' and '%c'", 118}, -- {"\ --: [-a][-b baudrate][-c][-C sca][-d device or file]\n\ -- [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n\ -- [-v][-V][-x][-X]{indices}|[phonenumber text]", 119}, -- {"\ -- -a, --add add new SMS submit message\n\ -- (phonenumber and text) to destination", 120}, -- {"\ -- -c, --copy copy source entries to destination\n\ -- (if indices are given, copy only these entries)", 121}, -- {"\ -- -d, --destination sets the destination device to\n\ -- connect to, or the file to write to", 122}, -- {"\ -- -k, --backup backup new entries to destination\n\ -- (if indices are given, copy only these entries)", 123}, -- {" -l, --list list source to stdout", 124}, -- {" -t, --store name of SMS store to use", 125}, -- {" -x, --delete delete entries denoted by indices", 126}, -- {"no operation option given", 127}, -- {"both source and destination required", 128}, -- {"destination must not be given", 129}, -- {"source required", 130}, -- {"source must not be given", 131}, -- {"destination required", 132}, -- {"expected number, got '%s'", 133}, -- {"not enough parameters given", 134}, -- {"unexpected parameters", 135}, -- {"store name must be given", 136}, -- {"no index '%s' in source", 137}, -- {"index #%d", 138}, -- {"inserting new entry into destination", 139}, -- {"deleting entry #%d from destination", 140}, -- {"no index '%s' in destination", 141}, -- {"unspecified ME/TA error", 142}, -- {"ME/TA error '", 143}, -- {"(code %s)", 144}, -- {"ME/TA error '' (code not known)", 145}, -- {"unexpected response '%s' when sending 'AT%s'", 146}, -- {"unexpected character in PDU handshake", 147}, -- {"phone failure", 148}, -- {"no connection to phone", 149}, -- {"phone adaptor link reserved", 150}, -- {"operation not allowed", 151}, -- {"operation not supported", 152}, -- {"ph SIM PIN required", 153}, -- {"SIM not inserted", 154}, -- {"SIM PIN required", 155}, -- {"SIM PUK required", 156}, -- {"SIM failure", 157}, -- {"SIM busy", 158}, -- {"SIM wrong", 159}, -- {"incorrect password", 160}, -- {"SIM PIN2 required", 161}, -- {"SIM PUK2 required", 162}, -- {"memory full", 163}, -- {"invalid index", 164}, -- {"not found", 165}, -- {"memory failure", 166}, -- {"text string too long", 167}, -- {"invalid characters in text string", 168}, -- {"dial string too long", 169}, -- {"invalid characters in dial string", 170}, -- {"no network service", 171}, -- {"network timeout", 172}, -- {"invalid ME error %d", 173}, -- {"Unassigned (unallocated) number", 174}, -- {"Operator determined barring", 175}, -- {"Call barred", 176}, -- {"Network failure", 177}, -- {"Short message transfer rejected", 178}, -- {"Congestion", 179}, -- {"Destination out of service", 180}, -- {"Unidentified subscriber", 181}, -- {"Facility rejected", 182}, -- {"Unknown subscriber", 183}, -- {"Network out of order", 184}, -- {"Temporary failure", 185}, -- {"Resources unavailable, unspecified", 186}, -- {"Requested facility not subscribed", 187}, -- {"Requested facility not implemented", 188}, -- {"Invalid Transaction Identifier", 189}, -- {"Semantically incorrect message", 190}, -- {"Invalid mandatory information", 191}, -- {"Message type non-existent or not implemented", 192}, -- {"Message not compatible with short message protocol state", 193}, -- {"Information element non-existent or not implemented", 194}, -- {"Protocol error, unspecified", 195}, -- {"Interworking, unspecified", 196}, -- {"Telematic interworking not supported", 197}, -- {"Short message Type 0 not supported", 198}, -- {"Cannot replace short message", 199}, -- {"Unspecified TP-PID error", 200}, -- {"Data coding scheme (alphabet) not supported", 201}, -- {"Message class not supported", 202}, -- {"Unspecifiec TP-DCS error", 203}, -- {"Command cannot be actioned", 204}, -- {"Command unsupported", 205}, -- {"Unspecified TP-Command error", 206}, -- {"TPDU not supported", 207}, -- {"SC busy", 208}, -- {"No SC subscription", 209}, -- {"SC system failure", 210}, -- {"Invalid SME address", 211}, -- {"Destination SME barred", 212}, -- {"SM Rejected-Duplicated SM", 213}, -- {"SIM SMS storage full", 214}, -- {"No SMS storage capability in SIM", 215}, -- {"Error in MS", 216}, -- {"Memory Capacity Exceed", 217}, -- {"Unspecified error cause", 218}, -- {"ME failure", 219}, -- {"SMS service of ME reserved", 220}, -- {"invalid PDU mode parameter", 221}, -- {"invalid text mode parameter", 222}, -- {"PH-SIM PIN required", 223}, -- {"invalid memory index", 224}, -- {"SMSC address unknown", 225}, -- {"no +CNMA acknowledgement expected", 226}, -- {"unknown error", 227}, -- {"invalid SMS error %d", 228}, -- {"Short message received by the SME", 229}, -- {"\ --Short message forwarded by the SC to the SME but the SC is unable to confirm \ --delivery", 230}, -- {"Short message replaced by the SC", 231}, -- {"reserved", 232}, -- {"SME busy", 233}, -- {"No response from SME", 234}, -- {"Service rejected", 235}, -- {"Quality of service not available", 236}, -- {"Error in SME", 237}, -- {" (Temporary error, SC is not making any more transfer attempts)", 238}, -- {" (Temporary error, SC still trying to transfer SM)", 239}, -- {"Remote Procedure Error", 240}, -- {"Incompatible destination", 241}, -- {"Connection rejected by SME", 242}, -- {"Not obtainable", 243}, -- {"No interworking available", 244}, -- {"SM validity period expired", 245}, -- {"SM deleted by originating SME", 246}, -- {"SM deleted by SC administration", 247}, -- {"SM does not exit", 248}, -- {" (Permanent Error, SC is not making any more transfer attempts)", 249}, -- {"unexpected number format %d", 250}, -- {"unexpected unsolicited event '%s'", 251}, -- {"unable to set operator", 252}, -- {"call forward time must be in the range 0..30", 253}, -- {"Functionality Level commands not supported by ME", 254}, -- {"Requested Functionality Level out of range", 255}, -- {"unsupported alphabet for SMS", 256}, -- {"SMS text is larger than allowed", 257}, -- {"not more than 255 concatenated SMSs allowed", 258}, -- {"only serviceLevel 0 or 1 supported", 259}, -- {"cannot route SMS messages to TE", 260}, -- {"cannot route cell broadcast messages to TE", 261}, -- {"cannot route status reports messages to TE", 262}, -- {"cannot route status report messages to TE", 263}, -- {"expected parameter", 264}, -- {"expected '\"'", 265}, -- {"expected number", 266}, -- {"unexpected end of string '%s'", 267}, -- {" (at position %d of string '%s')", 268}, -- {"expected '%c'", 269}, -- {"expected ')' or ','", 270}, -- {"expected ')', ',' or '-'", 271}, -- {"range of the form a-b-c not allowed", 272}, -- {"range of the form a- no allowed", 273}, -- {"expected comma", 274}, -- {"expected end of line", 275}, -- {"\ --length of text '%s' exceeds maximum text length (%d characters) of phonebook \ --'%s'", 276}, -- {"\ --length of telephone number '%s' exceeds maximum telephone number length (%d \ --characters) of phonebook '%s'", 277}, -- {"phonebook full", 278}, -- {"attempt to overwrite phonebook entry", 279}, -- {"SIM card changed while accessing phonebook", 280}, -- {"unhandled SMS TPDU type", 281}, -- {"can only send SMS-SUBMIT and SMS-COMMAND TPDUs", 282}, -- {"no device given for sending SMS", 283}, -- {"Message type: SMS-DELIVER", 284}, -- {"SC address: '", 285}, -- {"More messages to send: ", 286}, -- {"Reply path: ", 287}, -- {"User data header indicator: ", 288}, -- {"Status report indication: ", 289}, -- {"Originating address: '", 290}, -- {"Protocol identifier: 0x", 291}, -- {"Data coding scheme: ", 292}, -- {"SC timestamp: ", 293}, -- {"User data length: ", 294}, -- {"User data header: 0x", 295}, -- {"User data: '", 296}, -- {"Message type: SMS-SUBMIT", 297}, -- {"Reject duplicates: ", 298}, -- {"Validity period format: ", 299}, -- {"not present", 300}, -- {"relative", 301}, -- {"absolute", 302}, -- {"Status report request: ", 303}, -- {"Message reference: ", 304}, -- {"Destination address: '", 305}, -- {"Validity period: ", 306}, -- {"Message type: SMS-STATUS-REPORT", 307}, -- {"Status report qualifier: ", 308}, -- {"Recipient address: '", 309}, -- {"Discharge time: ", 310}, -- {"Status: 0x", 311}, -- {"Message type: SMS-COMMAND", 312}, -- {"Command type: 0x", 313}, -- {"Message number: ", 314}, -- {"Command data length: ", 315}, -- {"Command data: '", 316}, -- {"Message type: SMS-DELIVER-REPORT", 317}, -- {"Protocol identifier present: ", 318}, -- {"Data coding scheme present: ", 319}, -- {"User data length present: ", 320}, -- {"Message type: SMS-SUBMIT-REPORT", 321}, -- {" minutes", 322}, -- {" days", 323}, -- {" weeks", 324}, -- {"compressed ", 325}, -- {"voicemail message waiting", 326}, -- {"fax message waiting", 327}, -- {"electronic mail message waiting", 328}, -- {"other message waiting", 329}, -- {"default alphabet", 330}, -- {"8-bit alphabet", 331}, -- {"16-bit alphabet", 332}, -- {"reserved alphabet", 333}, -- {"bad hexadecimal PDU format", 334}, -- {"premature end of PDU", 335}, -- {"unknown time period format", 336}, -- {"interrupted when reading from TA", 337}, -- {"reading from TA", 338}, -- {"timeout when reading from TA", 339}, -- {"opening device '%s'", 340}, -- {"getting file status flags failed", 341}, -- {"switching of non-blocking mode failed", 342}, -- {"clearing DTR failed", 343}, -- {"setting DTR failed", 344}, -- {"tcgetattr device '%s'", 345}, -- {"tcsetattr device '%s'", 346}, -- {"reset modem failed '%s'", 347}, -- {"interrupted when writing to TA", 348}, -- {"writing to TA", 349}, -- {"timeout when writing to TA", 350}, -- {"unknown baudrate '%s'", 351}, -- {"error when calling stat('%s') (errno: %d/%s)", 352}, -- {"file '%s' is neither file nor character device", 353}, -- {"maxmimum number of symbolic links exceeded", 354}, -- {"error renaming '%s' to '%s'", 355}, -- {"text '%s' contains illegal character '\"'", 356}, -- {"illegal character in telephone number '%s'", 357}, -- {"error reading from file '%s", 358}, -- {"entry '%s' lacks index", 359}, -- {"line '%s' has invalid format", 360}, -- {"error opening file '%s' for writing", 361}, -- {"", 362}, -- {"error writing to file '%s'", 363}, -- {"attempt to change phonebook read from ", 364}, -- {"cannot open file '%s'", 365}, -- {"", 366}, -- {"indices must be unique in phonebook", 367}, -- {"error reading from file '%s'", 368}, -- {"file '%s' has wrong version", 369}, -- {"corrupt SMS store file '%s'", 370}, -- {"attempt to change SMS store read from ", 371}, --}; -- --int _msg_tbl_length = 371; ---- gsmlib-1.10.orig/po/de.po -+++ gsmlib-1.10/po/de.po -@@ -233,7 +233,7 @@ - - #: apps/gsmsendsms.cc:171 - msgid " phonenumber recipient's phone number" --msgstr " Telefonummer die Telefonnumer des Empfängers" -+msgstr " Telefonummer die Telefonnummer des Empfängers" - - #: apps/gsmsendsms.cc:172 - msgid "" -@@ -295,7 +295,7 @@ - - #: apps/gsmpb.cc:325 - msgid " -c, --copy copy source entries to destination" --msgstr " -c, --copy kopiere Quell-Enträge zum Zielgerät/-datei" -+msgstr " -c, --copy kopiere Quell-Einträge zum Zielgerät/-datei" - - #: apps/gsmpb.cc:327 - msgid "" -@@ -626,14 +626,14 @@ - msgstr "" - ": [-a][-b Baud-Rate][-c][-C sca][-d Gerät oder Datei]\n" - " [-h][-I Init String][-k][-l][-s Gerät oder Datei][-t SMS Speichername]\n" --" [-v][-V][-x][-X]{Indices}|[Telefonnumer Text]" -+" [-v][-V][-x][-X]{Indices}|[Telefonnummer Text]" - - #: apps/gsmsmsstore.cc:191 - msgid "" - " -a, --add add new SMS submit message\n" - " (phonenumber and text) to destination" - msgstr "" --" -a, --add füge neue SMS-Submit-Nachricht (Telefonnumer und\n" -+" -a, --add füge neue SMS-Submit-Nachricht (Telefonnummer und\n" - " Text) in das Zielgerät/-datei ein" - - #: apps/gsmsmsstore.cc:197 -@@ -1437,7 +1437,7 @@ - - #: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 - msgid "Destination address: '" --msgstr "Zieladdresse: '" -+msgstr "Zieladresse: '" - - #: gsmlib/gsm_sms.cc:455 - msgid "Validity period: " ---- gsmlib-1.10.orig/po/gsmlib.pot -+++ gsmlib-1.10/po/gsmlib.pot -@@ -7,7 +7,8 @@ - msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" --"POT-Creation-Date: 2002-10-22 22:48+0200\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2008-10-06 14:36+1100\n" - "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" - "Last-Translator: FULL NAME \n" - "Language-Team: LANGUAGE \n" -@@ -15,168 +16,225 @@ - "Content-Type: text/plain; charset=CHARSET\n" - "Content-Transfer-Encoding: 8bit\n" - --#: apps/gsmsmsd.cc:164 -+#: apps/gsmsmsd.cc:172 - #, c-format - msgid "could not execute '%s'" - msgstr "" - --#: apps/gsmsmsd.cc:168 -+#: apps/gsmsmsd.cc:176 - #, c-format - msgid "error writing to '%s'" - msgstr "" - --#: apps/gsmsmsd.cc:196 -+#: apps/gsmsmsd.cc:197 apps/gsmsmsd.cc:198 apps/gsmsmsd.cc:199 -+#, c-format -+msgid "%d" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:216 - #, c-format - msgid "error when calling opendir('%s')(errno: %d/%s)" - msgstr "" - --#: apps/gsmsmsd.cc:225 -+#: apps/gsmsmsd.cc:260 - #, c-format - msgid "count not open SMS spool file %s" - msgstr "" - --#: apps/gsmsmsd.cc:341 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 -+#: apps/gsmsmsd.cc:439 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 - #: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 - #, c-format - msgid ": version %s [compiled %s]" - msgstr "" - --#: apps/gsmsmsd.cc:346 -+#: apps/gsmsmsd.cc:444 - msgid "" - ": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" - " [-s spool dir][-t][-v]{sms_type}" - msgstr "" - --#: apps/gsmsmsd.cc:350 -+#: apps/gsmsmsd.cc:448 - msgid "" - " -a, --action the action to execute when an SMS arrives\n" - " (SMS is send to stdin of action)" - msgstr "" - --#: apps/gsmsmsd.cc:354 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 -+#: apps/gsmsmsd.cc:452 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 - #: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 - msgid " -b, --baudrate baudrate to use for device (default: 38400)" - msgstr "" - --#: apps/gsmsmsd.cc:357 -+#: apps/gsmsmsd.cc:455 - msgid " -c, --concatenate start ID for concatenated SMS messages" - msgstr "" - --#: apps/gsmsmsd.cc:359 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 -+#: apps/gsmsmsd.cc:457 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 - msgid " -C, --sca SMS service centre address" - msgstr "" - --#: apps/gsmsmsd.cc:360 -+#: apps/gsmsmsd.cc:458 - msgid " -d, --device sets the device to connect to" - msgstr "" - --#: apps/gsmsmsd.cc:361 -+#: apps/gsmsmsd.cc:459 - msgid " -D, --direct enable direct routing of SMSs" - msgstr "" - --#: apps/gsmsmsd.cc:362 -+#: apps/gsmsmsd.cc:460 - msgid " -f, --flush flush SMS from store" - msgstr "" - --#: apps/gsmsmsd.cc:363 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 -+#: apps/gsmsmsd.cc:461 -+msgid " -F, --failed directory to move failed SMS to," -+msgstr "" -+ -+#: apps/gsmsmsd.cc:462 apps/gsmsmsd.cc:475 -+msgid " if unset, the SMS will be deleted" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:463 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 - #: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 - msgid " -h, --help prints this message" - msgstr "" - --#: apps/gsmsmsd.cc:364 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 -+#: apps/gsmsmsd.cc:464 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 - #: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 - msgid " -I, --init device AT init sequence" - msgstr "" - --#: apps/gsmsmsd.cc:365 apps/gsmsendsms.cc:163 -+#: apps/gsmsmsd.cc:466 -+msgid " -L, --syslog log errors and information to syslog" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:469 -+msgid " -P, --priorities number of priority levels to use," -+msgstr "" -+ -+#: apps/gsmsmsd.cc:470 -+msgid " (default: none)" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:471 apps/gsmsendsms.cc:163 - msgid " -r, --requeststat request SMS status report" - msgstr "" - --#: apps/gsmsmsd.cc:366 -+#: apps/gsmsmsd.cc:472 - msgid " -s, --spool spool directory for outgoing SMS" - msgstr "" - --#: apps/gsmsmsd.cc:368 -+#: apps/gsmsmsd.cc:474 -+msgid " -S, --sent directory to move sent SMS to," -+msgstr "" -+ -+#: apps/gsmsmsd.cc:476 - msgid "" - " -t, --store name of SMS store to use for flush\n" - " and/or temporary SMS storage" - msgstr "" - --#: apps/gsmsmsd.cc:371 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 -+#: apps/gsmsmsd.cc:479 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 - #: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 - msgid " -v, --version prints version and exits" - msgstr "" - --#: apps/gsmsmsd.cc:372 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 -+#: apps/gsmsmsd.cc:480 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 - #: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 - msgid " -X, --xonxoff switch on software handshake" - msgstr "" - --#: apps/gsmsmsd.cc:374 -+#: apps/gsmsmsd.cc:482 - msgid " sms_type may be any combination of" - msgstr "" - --#: apps/gsmsmsd.cc:375 -+#: apps/gsmsmsd.cc:483 - msgid " sms, no_sms controls reception of normal SMS" - msgstr "" - --#: apps/gsmsmsd.cc:377 -+#: apps/gsmsmsd.cc:485 - msgid " cb, no_cb controls reception of cell broadcast messages" - msgstr "" - --#: apps/gsmsmsd.cc:379 -+#: apps/gsmsmsd.cc:487 - msgid " stat, no_stat controls reception of status reports" - msgstr "" - --#: apps/gsmsmsd.cc:381 -+#: apps/gsmsmsd.cc:489 - msgid " default is \"sms cb stat\"" - msgstr "" - --#: apps/gsmsmsd.cc:382 -+#: apps/gsmsmsd.cc:490 - msgid "If no action is given, the SMS is printed to stdout" - msgstr "" - --#: apps/gsmsmsd.cc:387 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 -+#: apps/gsmsmsd.cc:492 -+msgid "If -P is given, it activates the priority system and sets the" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:493 -+msgid "number or levels to use. For every level, there must be directories" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:494 -+msgid "named +." -+msgstr "" -+ -+#: apps/gsmsmsd.cc:495 -+msgid "For example \"-P 2 -s queue -S send -F failed\" needs the following" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:496 -+msgid "directories: queue1/ queue2/ send1/ send2/ failed1/ failed2/" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:497 -+msgid "Before sending one SMS from queue2, all pending SMS from queue1" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:498 -+msgid "will be sent." -+msgstr "" -+ -+#: apps/gsmsmsd.cc:503 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 - #: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 - msgid "unknown option" - msgstr "" - --#: apps/gsmsmsd.cc:426 -+#: apps/gsmsmsd.cc:542 - #, c-format - msgid "error when calling sigaction() (errno: %d/%s)" - msgstr "" - --#: apps/gsmsmsd.cc:446 -+#: apps/gsmsmsd.cc:562 - msgid "store name must be given for flush option" - msgstr "" - - #. process the new message --#: apps/gsmsmsd.cc:454 apps/gsmsmsd.cc:522 -+#: apps/gsmsmsd.cc:570 apps/gsmsmsd.cc:638 - msgid "Type of message: " - msgstr "" - --#: apps/gsmsmsd.cc:458 apps/gsmsmsd.cc:526 -+#: apps/gsmsmsd.cc:574 apps/gsmsmsd.cc:642 - msgid "SMS message\n" - msgstr "" - --#: apps/gsmsmsd.cc:461 -+#: apps/gsmsmsd.cc:577 - msgid "submit report message\n" - msgstr "" - --#: apps/gsmsmsd.cc:464 apps/gsmsmsd.cc:532 -+#: apps/gsmsmsd.cc:580 apps/gsmsmsd.cc:648 - msgid "status report message\n" - msgstr "" - --#: apps/gsmsmsd.cc:529 -+#: apps/gsmsmsd.cc:645 - msgid "cell broadcast message\n" - msgstr "" - --#: apps/gsmsmsd.cc:585 apps/gsmsmsd.cc:587 apps/gsmsendsms.cc:253 --#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:435 -+#: apps/gsmsmsd.cc:701 apps/gsmsmsd.cc:703 apps/gsmsendsms.cc:253 -+#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:430 - msgid "[ERROR]: " - msgstr "" - --#: apps/gsmsmsd.cc:588 -+#: apps/gsmsmsd.cc:704 - msgid "(try setting sms_type, please refer to gsmsmsd manpage)" - msgstr "" - -@@ -372,7 +430,7 @@ - msgstr "" - - #: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 --#: gsmlib/gsm_sms_codec.cc:204 -+#: gsmlib/gsm_sms_codec.cc:205 - msgid "unknown" - msgstr "" - -@@ -541,7 +599,7 @@ - msgid "unknown operation '%s'" - msgstr "" - --#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:363 apps/gsmsmsstore.cc:380 -+#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:358 apps/gsmsmsstore.cc:375 - #, c-format - msgid "inserting entry #%d from source into destination" - msgstr "" -@@ -618,7 +676,7 @@ - msgid "destination required" - msgstr "" - --#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:285 -+#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:286 - #, c-format - msgid "expected number, got '%s'" - msgstr "" -@@ -631,30 +689,30 @@ - msgid "unexpected parameters" - msgstr "" - --#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:317 -+#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:312 - msgid "store name must be given" - msgstr "" - --#: apps/gsmsmsstore.cc:344 apps/gsmsmsstore.cc:377 -+#: apps/gsmsmsstore.cc:339 apps/gsmsmsstore.cc:372 - #, c-format - msgid "no index '%s' in source" - msgstr "" - --#: apps/gsmsmsstore.cc:392 -+#: apps/gsmsmsstore.cc:387 - #, c-format - msgid "index #%d" - msgstr "" - --#: apps/gsmsmsstore.cc:406 -+#: apps/gsmsmsstore.cc:401 - msgid "inserting new entry into destination" - msgstr "" - --#: apps/gsmsmsstore.cc:421 -+#: apps/gsmsmsstore.cc:416 - #, c-format - msgid "deleting entry #%d from destination" - msgstr "" - --#: apps/gsmsmsstore.cc:426 -+#: apps/gsmsmsstore.cc:421 - #, c-format - msgid "no index '%s' in destination" - msgstr "" -@@ -1107,52 +1165,52 @@ - msgid "unexpected unsolicited event '%s'" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:536 -+#: gsmlib/gsm_me_ta.cc:538 - msgid "unable to set operator" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:663 -+#: gsmlib/gsm_me_ta.cc:665 - msgid "call forward time must be in the range 0..30" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:811 -+#: gsmlib/gsm_me_ta.cc:813 - msgid "Functionality Level commands not supported by ME" - msgstr "" - - #. If the number was just out of range, we get here. --#: gsmlib/gsm_me_ta.cc:830 -+#: gsmlib/gsm_me_ta.cc:832 - msgid "Requested Functionality Level out of range" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:941 -+#: gsmlib/gsm_me_ta.cc:943 - msgid "unsupported alphabet for SMS" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:950 -+#: gsmlib/gsm_me_ta.cc:952 - msgid "SMS text is larger than allowed" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:962 -+#: gsmlib/gsm_me_ta.cc:964 - msgid "not more than 255 concatenated SMSs allowed" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:995 -+#: gsmlib/gsm_me_ta.cc:997 - msgid "only serviceLevel 0 or 1 supported" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1108 gsmlib/gsm_me_ta.cc:1150 -+#: gsmlib/gsm_me_ta.cc:1110 gsmlib/gsm_me_ta.cc:1152 - msgid "cannot route SMS messages to TE" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1122 gsmlib/gsm_me_ta.cc:1164 -+#: gsmlib/gsm_me_ta.cc:1124 gsmlib/gsm_me_ta.cc:1166 - msgid "cannot route cell broadcast messages to TE" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1134 -+#: gsmlib/gsm_me_ta.cc:1136 - msgid "cannot route status reports messages to TE" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1178 -+#: gsmlib/gsm_me_ta.cc:1180 - msgid "cannot route status report messages to TE" - msgstr "" - -@@ -1314,7 +1372,7 @@ - msgid "Validity period format: " - msgstr "" - --#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:183 -+#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:184 - msgid "not present" - msgstr "" - -@@ -1402,209 +1460,212 @@ - msgid "Message type: SMS-SUBMIT-REPORT" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:188 gsmlib/gsm_sms_codec.cc:190 -+#: gsmlib/gsm_sms_codec.cc:189 gsmlib/gsm_sms_codec.cc:191 - msgid " minutes" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:192 -+#: gsmlib/gsm_sms_codec.cc:193 - msgid " days" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:194 -+#: gsmlib/gsm_sms_codec.cc:195 - msgid " weeks" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:213 -+#: gsmlib/gsm_sms_codec.cc:214 - msgid "compressed " - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:218 -+#: gsmlib/gsm_sms_codec.cc:219 - msgid "voicemail message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:221 -+#: gsmlib/gsm_sms_codec.cc:222 - msgid "fax message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:224 -+#: gsmlib/gsm_sms_codec.cc:225 - msgid "electronic mail message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:227 -+#: gsmlib/gsm_sms_codec.cc:228 - msgid "other message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:234 -+#: gsmlib/gsm_sms_codec.cc:235 - msgid "default alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:237 -+#: gsmlib/gsm_sms_codec.cc:238 - msgid "8-bit alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:240 -+#: gsmlib/gsm_sms_codec.cc:241 - msgid "16-bit alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:243 -+#: gsmlib/gsm_sms_codec.cc:244 - msgid "reserved alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:256 -+#: gsmlib/gsm_sms_codec.cc:257 - msgid "bad hexadecimal PDU format" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:285 gsmlib/gsm_sms_codec.cc:295 --#: gsmlib/gsm_sms_codec.cc:310 gsmlib/gsm_sms_codec.cc:318 --#: gsmlib/gsm_sms_codec.cc:339 gsmlib/gsm_sms_codec.cc:347 --#: gsmlib/gsm_sms_codec.cc:368 gsmlib/gsm_sms_codec.cc:382 -+#: gsmlib/gsm_sms_codec.cc:286 gsmlib/gsm_sms_codec.cc:296 -+#: gsmlib/gsm_sms_codec.cc:311 gsmlib/gsm_sms_codec.cc:319 -+#: gsmlib/gsm_sms_codec.cc:340 gsmlib/gsm_sms_codec.cc:348 -+#: gsmlib/gsm_sms_codec.cc:369 gsmlib/gsm_sms_codec.cc:383 - msgid "premature end of PDU" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:473 -+#: gsmlib/gsm_sms_codec.cc:474 - msgid "unknown time period format" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:119 -+#: gsmlib/gsm_unix_serial.cc:121 - msgid "interrupted when reading from TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:144 -+#: gsmlib/gsm_unix_serial.cc:136 -+msgid "end of file when reading from TA" -+msgstr "" -+ -+#: gsmlib/gsm_unix_serial.cc:146 - msgid "reading from TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:149 -+#: gsmlib/gsm_unix_serial.cc:151 - msgid "timeout when reading from TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:176 -+#: gsmlib/gsm_unix_serial.cc:178 - #, c-format - msgid "opening device '%s'" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:182 -+#: gsmlib/gsm_unix_serial.cc:185 - msgid "getting file status flags failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:185 -+#: gsmlib/gsm_unix_serial.cc:190 - msgid "switching of non-blocking mode failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:198 -+#: gsmlib/gsm_unix_serial.cc:205 - msgid "clearing DTR failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:202 -+#: gsmlib/gsm_unix_serial.cc:211 - msgid "setting DTR failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:206 -+#: gsmlib/gsm_unix_serial.cc:216 - #, c-format - msgid "tcgetattr device '%s'" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:233 -+#: gsmlib/gsm_unix_serial.cc:245 - #, c-format - msgid "tcsetattr device '%s'" - msgstr "" - --#. no response after 3 tries --#: gsmlib/gsm_unix_serial.cc:287 -+#: gsmlib/gsm_unix_serial.cc:303 - #, c-format - msgid "reset modem failed '%s'" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:332 gsmlib/gsm_unix_serial.cc:364 -+#: gsmlib/gsm_unix_serial.cc:348 gsmlib/gsm_unix_serial.cc:380 - msgid "interrupted when writing to TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:347 gsmlib/gsm_unix_serial.cc:356 -+#: gsmlib/gsm_unix_serial.cc:363 gsmlib/gsm_unix_serial.cc:372 - msgid "writing to TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:377 -+#: gsmlib/gsm_unix_serial.cc:393 - msgid "timeout when writing to TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:438 -+#: gsmlib/gsm_unix_serial.cc:454 - #, c-format - msgid "unknown baudrate '%s'" - msgstr "" - --#: gsmlib/gsm_util.cc:205 -+#: gsmlib/gsm_util.cc:206 - #, c-format - msgid "error when calling stat('%s') (errno: %d/%s)" - msgstr "" - --#: gsmlib/gsm_util.cc:236 -+#: gsmlib/gsm_util.cc:237 - #, c-format - msgid "file '%s' is neither file nor character device" - msgstr "" - --#: gsmlib/gsm_util.cc:240 -+#: gsmlib/gsm_util.cc:241 - msgid "maxmimum number of symbolic links exceeded" - msgstr "" - --#: gsmlib/gsm_util.cc:250 -+#: gsmlib/gsm_util.cc:251 - #, c-format - msgid "error renaming '%s' to '%s'" - msgstr "" - --#: gsmlib/gsm_util.cc:348 -+#: gsmlib/gsm_util.cc:349 - #, c-format - msgid "text '%s' contains illegal character '\"'" - msgstr "" - --#: gsmlib/gsm_util.cc:358 -+#: gsmlib/gsm_util.cc:359 - #, c-format - msgid "illegal character in telephone number '%s'" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:95 -+#: gsmlib/gsm_sorted_phonebook.cc:96 - #, c-format - msgid "error reading from file '%s" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:109 -+#: gsmlib/gsm_sorted_phonebook.cc:110 - #, c-format - msgid "entry '%s' lacks index" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:118 gsmlib/gsm_sorted_phonebook.cc:124 -+#: gsmlib/gsm_sorted_phonebook.cc:119 gsmlib/gsm_sorted_phonebook.cc:125 - #, c-format - msgid "line '%s' has invalid format" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:173 gsmlib/gsm_sorted_sms_store.cc:159 -+#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_sms_store.cc:159 - #, c-format - msgid "error opening file '%s' for writing" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_phonebook.cc:193 -+#: gsmlib/gsm_sorted_phonebook.cc:175 gsmlib/gsm_sorted_phonebook.cc:194 - #: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 - msgid "" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:192 gsmlib/gsm_sorted_sms_store.cc:66 -+#: gsmlib/gsm_sorted_phonebook.cc:193 gsmlib/gsm_sorted_sms_store.cc:66 - #, c-format - msgid "error writing to file '%s'" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:216 -+#: gsmlib/gsm_sorted_phonebook.cc:217 - msgid "attempt to change phonebook read from " - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:229 gsmlib/gsm_sorted_sms_store.cc:215 -+#: gsmlib/gsm_sorted_phonebook.cc:230 gsmlib/gsm_sorted_sms_store.cc:215 - #, c-format - msgid "cannot open file '%s'" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:244 gsmlib/gsm_sorted_sms_store.cc:55 -+#: gsmlib/gsm_sorted_phonebook.cc:245 gsmlib/gsm_sorted_sms_store.cc:55 - #: gsmlib/gsm_sorted_sms_store.cc:228 - msgid "" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:361 -+#: gsmlib/gsm_sorted_phonebook.cc:362 - msgid "indices must be unique in phonebook" - msgstr "" - ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.dirs -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.dirs -@@ -0,0 +1,11 @@ -+var/spool/sms/queue1 -+var/spool/sms/queue2 -+var/spool/sms/queue3 -+var/spool/sms/sent1 -+var/spool/sms/sent2 -+var/spool/sms/sent3 -+var/spool/sms/failed1 -+var/spool/sms/failed2 -+var/spool/sms/failed3 -+var/spool/sms/tmp -+var/run/gsm-utils ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.postinst -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.postinst -@@ -0,0 +1,28 @@ -+#!/bin/sh -e -+ -+# create gsmsms group if necessary. -+if ! grep -q ^gsmsms: /etc/group; then -+# echo Adding system group: gsmsms. -+ addgroup gsmsms -+fi -+ -+# create gsmsms user if necessary. -+if ! grep -q ^gsmsms: /etc/passwd; then -+# echo Adding system user: gsmsms. -+ adduser --system --ingroup gsmsms \ -+ --no-create-home --home /var/spool/sms gsmsms -+fi -+ -+# allow gsmsms to use serial lines -+if ! groups gsmsms | grep -q dialout ; then -+ adduser gsmsms dialout -+fi -+ -+# echo Updating spool directory structure: /var/spool/sms -+chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils -+chmod 700 /var/spool/sms/* -+chmod 750 /var/spool/sms -+chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp -+ -+# Add the rest automatically.. -+#DEBHELPER# ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.undocumented -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.undocumented -@@ -0,0 +1,2 @@ -+gsmsmsspool.1 -+gsmsmsrequeue.8 ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.prerm -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.prerm -@@ -0,0 +1,7 @@ -+#!/bin/sh -e -+ -+deluser gsmsms || true -+delgroup gsmsms || true -+ -+# Add the rest automatically.. -+#DEBHELPER# ---- gsmlib-1.10.orig/scripts/config.sub -+++ gsmlib-1.10/scripts/config.sub -@@ -1,9 +1,10 @@ - #! /bin/sh - # Configuration validation subroutine script. --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - # Free Software Foundation, Inc. - --timestamp='2001-09-07' -+timestamp='2008-01-16' - - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software -@@ -21,15 +22,17 @@ - # - # 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., 59 Temple Place - Suite 330, --# Boston, MA 02111-1307, USA. -- -+# 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 . -+ -+# 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. -@@ -69,8 +72,8 @@ - version="\ - GNU config.sub ($timestamp) - --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+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." -@@ -82,11 +85,11 @@ - while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) -- echo "$timestamp" ; exit 0 ;; -+ echo "$timestamp" ; exit ;; - --version | -v ) -- echo "$version" ; exit 0 ;; -+ echo "$version" ; exit ;; - --help | --h* | -h ) -- echo "$usage"; exit 0 ;; -+ echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. -@@ -98,7 +101,7 @@ - *local*) - # First pass through any local machine types. - echo $1 -- exit 0;; -+ exit ;; - - * ) - break ;; -@@ -117,7 +120,9 @@ - # 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* | storm-chaos* | os2-emx* | windows32-*) -+ 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/'` - ;; -@@ -143,7 +148,7 @@ - -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) -+ -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; -@@ -168,6 +173,10 @@ - -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/'` -@@ -184,6 +193,10 @@ - # 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/'` -@@ -226,32 +239,53 @@ - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ -+ | 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 | dsp16xx \ -- | fr30 \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ -- | m32r | m68000 | m68k | m88k | mcore \ -- | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ -- | mips64vr4100 | mips64vr4100el | mips64vr4300 \ -- | mips64vr4300el | mips64vr5000 | mips64vr5000el \ -- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ -- | mipsisa32 \ -+ | ip2k | iq2000 \ -+ | m32c | m32r | m32rle | m68000 | m68k | m88k \ -+ | maxq | mb | microblaze | mcore | mep \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64vr | mips64vrel \ -+ | mips64orion | mips64orionel \ -+ | 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 \ -- | openrisc \ -+ | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ -- | s390 | s390x \ -- | sh | sh[34] | sh[34]eb | shbe | shle \ -- | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ -- | stormy16 | strongarm \ -- | tahoe | thumb | tic80 | tron \ -- | v850 \ -+ | score \ -+ | sh | sh[1234] | sh[24]a | 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 | xscale \ -+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; -@@ -262,6 +296,9 @@ - ;; - 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 -@@ -278,41 +315,68 @@ - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -- | alphapca5[67]-* | arc-* \ -- | arm-* | armbe-* | armle-* | armv*-* \ -- | bs2000-* \ -- | c[123]* | c30-* | [cjt]90-* | c54x-* \ -- | clipper-* | cray2-* | cydra-* \ -- | d10v-* | d30v-* \ -+ | 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-* | fr30-* | fx80-* \ -+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ -- | m32r-* \ -- | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ -- | m88110-* | m88k-* | mcore-* \ -- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ -- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ -- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ -- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ -+ | ip2k-* | iq2000-* \ -+ | m32c-* | m32r-* | m32rle-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | maxq-* | mcore-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64vr-* | mips64vrel-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | 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-* \ -- | s390-* | s390x-* \ -- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ -- | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ -- | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ -- | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ -- | v850-* | vax-* \ -+ | sh-* | sh[1234]-* | sh[24]a-* | 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-* \ -+ | tron-* \ -+ | v850-* | v850e-* | vax-* \ - | we32k-* \ -- | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -+ | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-*) - ;; -+ # 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) -@@ -329,6 +393,9 @@ - basic_machine=a29k-amd - os=-udi - ;; -+ abacus) -+ basic_machine=abacus-unknown -+ ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout -@@ -343,6 +410,12 @@ - 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 -@@ -374,6 +447,18 @@ - 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 -+ ;; - convex-c1) - basic_machine=c1-convex - os=-bsd -@@ -394,30 +479,45 @@ - basic_machine=c38-convex - os=-bsd - ;; -- cray | ymp) -- basic_machine=ymp-cray -+ cray | j90) -+ basic_machine=j90-cray - os=-unicos - ;; -- cray2) -- basic_machine=cray2-cray -- os=-unicos -+ craynv) -+ basic_machine=craynv-cray -+ os=-unicosmp - ;; -- [cjt]90) -- basic_machine=${basic_machine}-cray -- os=-unicos -+ 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 -@@ -426,6 +526,10 @@ - basic_machine=m88k-motorola - os=-sysv3 - ;; -+ djgpp) -+ basic_machine=i586-pc -+ os=-msdosdjgpp -+ ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx -@@ -576,6 +680,14 @@ - 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 - ;; -@@ -591,6 +703,10 @@ - basic_machine=i386-pc - os=-mingw32 - ;; -+ mingw32ce) -+ basic_machine=arm-unknown -+ os=-mingw32ce -+ ;; - miniframe) - basic_machine=m68000-convergent - ;; -@@ -598,32 +714,27 @@ - basic_machine=m68k-atari - os=-mint - ;; -- mipsel*-linux*) -- basic_machine=mipsel-unknown -- os=-linux-gnu -- ;; -- mips*-linux*) -- basic_machine=mips-unknown -- os=-linux-gnu -- ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; -- mmix*) -- basic_machine=mmix-knuth -- os=-mmixware -- ;; - 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 -@@ -699,6 +810,13 @@ - 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 -@@ -715,55 +833,75 @@ - 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-*) -+ pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; -- pentium | p5 | k5 | k6 | nexgen) -+ 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) -+ pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; -- pentiumii | pentium2) -+ pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; -- pentium-* | p5-* | k5-* | k6-* | nexgen-*) -+ 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-*) -+ 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/^[^-]*-//'` - ;; -@@ -774,6 +912,10 @@ - basic_machine=i586-unknown - os=-pw32 - ;; -+ rdos) -+ basic_machine=i386-pc -+ os=-rdos -+ ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff -@@ -784,10 +926,30 @@ - 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 - ;; -@@ -795,7 +957,13 @@ - basic_machine=sh-hitachi - os=-hms - ;; -- sparclite-wrs) -+ sh5el) -+ basic_machine=sh5le-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; -@@ -862,22 +1030,46 @@ - os=-dynix - ;; - t3e) -- basic_machine=t3e-cray -+ 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 -@@ -899,8 +1091,8 @@ - os=-vms - ;; - vpp*|vx|vx-*) -- basic_machine=f301-fujitsu -- ;; -+ basic_machine=f301-fujitsu -+ ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks -@@ -921,17 +1113,17 @@ - basic_machine=hppa1.1-winbond - os=-proelf - ;; -- windows32) -- basic_machine=i386-pc -- os=-windows32-msvcrt -- ;; -- xmp) -- basic_machine=xmp-cray -- os=-unicos -+ xbox) -+ basic_machine=i686-pc -+ os=-mingw32 - ;; -- xps | xps100) -+ xps | xps100) - basic_machine=xps100-honeywell - ;; -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim -@@ -952,16 +1144,12 @@ - op60c) - basic_machine=hppa1.1-oki - ;; -- mips) -- if [ x$os = x-linux-gnu ]; then -- basic_machine=mips-unknown -- else -- basic_machine=mips-mips -- fi -- ;; - romp) - basic_machine=romp-ibm - ;; -+ mmix) -+ basic_machine=mmix-knuth -+ ;; - rs6000) - basic_machine=rs6000-ibm - ;; -@@ -978,13 +1166,13 @@ - we32k) - basic_machine=we32k-att - ;; -- sh3 | sh4 | sh3eb | sh4eb) -+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; -- sparc | sparcv9 | sparcv9b) -+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; -- cydra) -+ cydra) - basic_machine=cydra-cydrome - ;; - orion) -@@ -999,10 +1187,6 @@ - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; -- c4x*) -- basic_machine=c4x-none -- os=-coff -- ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; -@@ -1058,17 +1242,23 @@ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ -- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -+ | -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* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ -+ | -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*) -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) -@@ -1080,16 +1270,21 @@ - ;; - esac - ;; -+ -nto-qnx*) -+ ;; - -nto*) -- os=-nto-qnx -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ -+ | -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|'` - ;; -@@ -1102,6 +1297,9 @@ - -opened*) - os=-openedition - ;; -+ -os400*) -+ os=-os400 -+ ;; - -wince*) - os=-wince - ;; -@@ -1120,14 +1318,23 @@ - -acis*) - os=-aos - ;; -+ -atheos*) -+ os=-atheos -+ ;; -+ -syllable*) -+ os=-syllable -+ ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; - -ns2 ) -- os=-nextstep2 -+ os=-nextstep2 - ;; - -nsk*) - os=-nsk -@@ -1139,6 +1346,9 @@ - -sinix*) - os=-sysv4 - ;; -+ -tpf*) -+ os=-tpf -+ ;; - -triton*) - os=-sysv3 - ;; -@@ -1166,8 +1376,17 @@ - -xenix) - os=-xenix - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -- os=-mint -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ os=-mint -+ ;; -+ -aros*) -+ os=-aros -+ ;; -+ -kaos*) -+ os=-kaos -+ ;; -+ -zvmoe) -+ os=-zvmoe - ;; - -none) - ;; -@@ -1191,6 +1410,12 @@ - # system, and we'll never get to this point. - - case $basic_machine in -+ score-*) -+ os=-elf -+ ;; -+ spu-*) -+ os=-elf -+ ;; - *-acorn) - os=-riscix1.2 - ;; -@@ -1200,10 +1425,14 @@ - arm*-semi) - os=-aout - ;; -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; -- pdp11-*) -+ pdp11-*) - os=-none - ;; - *-dec | vax-*) -@@ -1224,12 +1453,18 @@ - 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 - ;; -@@ -1239,9 +1474,15 @@ - *-be) - os=-beos - ;; -+ *-haiku) -+ os=-haiku -+ ;; - *-ibm) - os=-aix - ;; -+ *-knuth) -+ os=-mmixware -+ ;; - *-wec) - os=-proelf - ;; -@@ -1293,19 +1534,19 @@ - *-next) - os=-nextstep3 - ;; -- *-gould) -+ *-gould) - os=-sysv - ;; -- *-highlevel) -+ *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; -- *-sgi) -+ *-sgi) - os=-irix - ;; -- *-siemens) -+ *-siemens) - os=-sysv4 - ;; - *-masscomp) -@@ -1374,10 +1615,16 @@ - -mvs* | -opened*) - vendor=ibm - ;; -+ -os400*) -+ vendor=ibm -+ ;; - -ptx*) - vendor=sequent - ;; -- -vxsim* | -vxworks*) -+ -tpf*) -+ vendor=ibm -+ ;; -+ -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) -@@ -1401,7 +1648,7 @@ - esac - - echo $basic_machine$os --exit 0 -+exit - - # Local variables: - # eval: (add-hook 'write-file-hooks 'time-stamp) ---- gsmlib-1.10.orig/scripts/ltconfig -+++ gsmlib-1.10/scripts/ltconfig -@@ -1,8 +1,8 @@ - #! /bin/sh - - # ltconfig - Create a system-specific libtool. --# Copyright (C) 1996-1998 Free Software Foundation, Inc. --# Gordon Matzigkeit , 1996 -+# Copyright (C) 1996-1999 Free Software Foundation, Inc. -+# Originally by Gordon Matzigkeit , 1996 - # - # 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 -@@ -32,12 +32,8 @@ - # Discard the --no-reexec flag, and continue. - shift - elif test "X$1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat </dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -@@ -46,11 +42,30 @@ - exec "$SHELL" "$0" --no-reexec ${1+"$@"} - fi - -+if test "X$1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat </dev/null`} -+ case X$UNAME in -+ *-DOS) PATH_SEPARATOR=';' ;; -+ *) PATH_SEPARATOR=':' ;; -+ esac -+fi -+ - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi -+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - --if test "X${echo_test_string+set}" != "Xset"; 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, ... -@@ -70,9 +85,9 @@ - # - # So, first we look for a working echo in the user's PATH. - -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH /usr/ucb; do -- if test -f $dir/echo && -+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$dir/echo" -@@ -87,7 +102,8 @@ - test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 "X$CONFIG_SHELL" != X/bin/ksh; then -+ 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 ltconfig again with it. - ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" - export ORIGINAL_CONFIG_SHELL -@@ -96,10 +112,10 @@ - exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} - else - # Try using printf. -- echo='printf %s\n' -+ echo='printf "%s\n"' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && -- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -- # Cool, printf works -+ test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -+ # Cool, printf works - : - elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -@@ -110,9 +126,9 @@ - echo="$CONFIG_SHELL $0 --fallback-echo" - elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -- echo="$CONFIG_SHELL $0 --fallback-echo" -+ echo="$CONFIG_SHELL $0 --fallback-echo" - else -- # maybe with a smaller string... -+ # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do -@@ -143,15 +159,20 @@ - # 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' -+ - # The name of this program. - progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - - # Constants: - PROGRAM=ltconfig - PACKAGE=libtool --VERSION=1.2d --ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' --ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' -+VERSION=1.3.5 -+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" -+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' - rm="rm -f" - - help="Try \`$progname --help' for more information." -@@ -160,8 +181,12 @@ - default_ofile=libtool - can_build_shared=yes - enable_shared=yes --# All known linkers require a `.a' archive for static linking. -+# All known linkers require a `.a' archive for static linking (except M$VC, -+# which needs '.lib'). - enable_static=yes -+enable_fast_install=yes -+enable_dlopen=unknown -+enable_win32_dll=no - ltmain= - silent= - srcdir= -@@ -174,18 +199,24 @@ - with_gcc=no - with_gnu_ld=no - need_locks=yes -+ac_ext=c - objext=o - libext=a -+exeext= -+cache_file= - - old_AR="$AR" - old_CC="$CC" - old_CFLAGS="$CFLAGS" - old_CPPFLAGS="$CPPFLAGS" -+old_LDFLAGS="$LDFLAGS" - old_LD="$LD" - old_LN_S="$LN_S" -+old_LIBS="$LIBS" - old_NM="$NM" - old_RANLIB="$RANLIB" - old_DLLTOOL="$DLLTOOL" -+old_OBJDUMP="$OBJDUMP" - old_AS="$AS" - - # Parse the command line options. -@@ -214,6 +245,9 @@ - --debug enable verbose shell tracing - --disable-shared do not build shared libraries - --disable-static do not build static libraries -+ --disable-fast-install do not optimize for fast installation -+ --enable-dlopen enable dlopen support -+ --enable-win32-dll enable building dlls on win32 hosts - --help display this help and exit - --no-verify do not verify that HOST is a valid host type - -o, --output=FILE specify the output file [default=$default_ofile] -@@ -224,6 +258,7 @@ - --with-gcc assume that the GNU C compiler will be used - --with-gnu-ld assume that the C compiler uses the GNU linker - --disable-lock disable file locking -+ --cache-file=FILE configure cache file - - LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program - that provides basic libtool functionality. -@@ -242,6 +277,12 @@ - - --disable-static) enable_static=no ;; - -+ --disable-fast-install) enable_fast_install=no ;; -+ -+ --enable-dlopen) enable_dlopen=yes ;; -+ -+ --enable-win32-dll) enable_win32_dll=yes ;; -+ - --quiet | --silent) silent=yes ;; - - --srcdir) prev=srcdir ;; -@@ -252,13 +293,15 @@ - --output | -o) prev=ofile ;; - --output=*) ofile="$optarg" ;; - -- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;; -+ --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;; - - --with-gcc) with_gcc=yes ;; - --with-gnu-ld) with_gnu_ld=yes ;; - - --disable-lock) need_locks=no ;; - -+ --cache-file=*) cache_file="$optarg" ;; -+ - -*) - echo "$progname: unrecognized option \`$option'" 1>&2 - echo "$help" 1>&2 -@@ -326,8 +369,13 @@ - # Only set LANG and LC_ALL to C if already set. - # These must not be set unconditionally because not all systems understand - # e.g. LANG=C (notably SCO). --if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi --if test "${LANG+set}" = set; then LANG=C; export LANG; fi -+if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi -+if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi -+ -+if test -n "$cache_file" && test -r "$cache_file"; then -+ echo "loading cache $cache_file within ltconfig" -+ . $cache_file -+fi - - if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. -@@ -343,7 +391,7 @@ - - if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to LTMAIN. -- srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'` -+ srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. - fi - -@@ -414,7 +462,7 @@ - # 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 "${COLLECT_NAMES+set}" != set; then -+ if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi -@@ -429,15 +477,18 @@ - # Set a sane default for `AR'. - test -z "$AR" && AR=ar - -+# Set a sane default for `OBJDUMP'. -+test -z "$OBJDUMP" && OBJDUMP=objdump -+ - # If RANLIB is not set, then run the test. - if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. -- if test -f $dir/ranlib; then -+ if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then - RANLIB="ranlib" - result="ranlib" - break -@@ -453,8 +504,9 @@ - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - fi - --# Set sane defaults for `DLLTOOL' and `AS', used on cygwin32. -+# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. - test -z "$DLLTOOL" && DLLTOOL=dlltool -+test -z "$OBJDUMP" && OBJDUMP=objdump - test -z "$AS" && AS=as - - # Check to see if we are using GCC. -@@ -462,11 +514,10 @@ - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do -- IFS="$save_ifs" - test -z "$dir" && dir=. -- if test -f $dir/gcc; then -+ if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then - CC="gcc" - break - fi -@@ -483,11 +534,11 @@ - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. -- if test -f $dir/cc; then -+ if test -f $dir/cc || test -f $dir/cc$ac_exeext; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue -@@ -527,7 +578,7 @@ - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 -- echo "$progname:530: checking whether we are using GNU C" >&5 -+ echo "$progname:581: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then -+ if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c -@@ -549,8 +600,8 @@ - echo $ac_n "checking for object suffix... $ac_c" 1>&6 - $rm conftest* - echo 'int i = 1;' > conftest.c --echo "$progname:552: checking for object suffix" >& 5 --if { (eval echo $progname:553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then -+echo "$progname:603: checking for object suffix" >& 5 -+if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - -@@ -568,6 +619,38 @@ - $rm conftest* - echo "$ac_t$objext" 1>&6 - -+echo $ac_n "checking for executable suffix... $ac_c" 1>&6 -+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_cv_exeext="no" -+ $rm conftest* -+ echo 'main () { return 0; }' > conftest.c -+ echo "$progname:629: checking for executable suffix" >& 5 -+ if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then -+ # Append any warnings to the config.log. -+ cat conftest.err 1>&5 -+ -+ for ac_file in conftest.*; do -+ case $ac_file in -+ *.c | *.err | *.$objext ) ;; -+ *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; -+ esac -+ done -+ else -+ cat conftest.err 1>&5 -+ echo "$progname: failed program was:" >&5 -+ cat conftest.c >&5 -+ fi -+ $rm conftest* -+fi -+if test "X$ac_cv_exeext" = Xno; then -+ exeext="" -+else -+ exeext="$ac_cv_exeext" -+fi -+echo "$ac_t$ac_cv_exeext" 1>&6 -+ - echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 - pic_flag= - special_shlib_compile_flags= -@@ -580,10 +663,19 @@ - link_static_flag='-static' - - case "$host_os" in -- aix3* | aix4* | irix5* | irix6* | osf3* | osf4*) -+ beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; -- cygwin32* | mingw32* | os2*) -+ aix*) -+ # Below there is a dirty hack to force normal static linking with -ldl -+ # The problem is because libdl dynamically linked with both libc and -+ # libC (AIX C++ library), which obviously doesn't included in libraries -+ # list by gcc. This cause undefined symbols with -static flags. -+ # This hack allows C programs to be linked with "-static -ldl", but -+ # we not sure about C++ programs. -+ link_static_flag="$link_static_flag ${wl}-lC" -+ ;; -+ cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) -@@ -592,6 +684,11 @@ - # like `-m68040'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ pic_flag=-Kconform_pic -+ fi -+ ;; - *) - pic_flag='-fPIC' - ;; -@@ -617,11 +714,11 @@ - # PIC (with -KPIC) is the default. - ;; - -- cygwin32* | mingw32* | os2*) -+ cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - -- osf3* | osf4*) -+ osf3* | osf4* | osf5*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' -@@ -645,7 +742,7 @@ - wl='-Qoption ld ' - ;; - -- sysv4.2uw2* | sysv5*) -+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' -@@ -655,7 +752,12 @@ - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; -- -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ pic_flag='-Kconform_pic' -+ link_static_flag='-Bstatic' -+ fi -+ ;; - *) - can_build_shared=no - ;; -@@ -671,22 +773,30 @@ - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" -- echo "$progname:674: checking if $compiler PIC flag $pic_flag works" >&5 -- if { (eval echo $progname:675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then -+ echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 -+ if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 -- -- # On HP-UX, both CC and GCC only warn that PIC is supported... then they -- # create non-PIC objects. So, if there were any warnings, we assume that -- # PIC is not supported. -- if test -s conftest.err; then -- echo "$ac_t"no 1>&6 -- can_build_shared=no -- pic_flag= -- else -+ -+ case "$host_os" in -+ hpux9* | hpux10* | hpux11*) -+ # On HP-UX, both CC and GCC only warn that PIC is supported... then they -+ # create non-PIC objects. So, if there were any warnings, we assume that -+ # PIC is not supported. -+ if test -s conftest.err; then -+ echo "$ac_t"no 1>&6 -+ can_build_shared=no -+ pic_flag= -+ else -+ echo "$ac_t"yes 1>&6 -+ pic_flag=" $pic_flag" -+ fi -+ ;; -+ *) - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" -- fi -+ ;; -+ esac - else - # Append any errors to the config.log. - cat conftest.err 1>&5 -@@ -702,16 +812,26 @@ - - # Check to see if options -o and -c are simultaneously supported by compiler - echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 -+$rm -r conftest 2>/dev/null -+mkdir conftest -+cd conftest - $rm conftest* - echo "int some_variable = 0;" > conftest.c -+mkdir out -+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -+# that will create temporary files in the current directory regardless of -+# the output directory. Thus, making CWD read-only will cause this test -+# to fail, enabling locking or at least warning the user not to do parallel -+# builds. -+chmod -w . - save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS -c -o conftest2.o" --echo "$progname:709: checking if $compiler supports -c -o file.o" >&5 --if { (eval echo $progname:710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest2.o; then -+CFLAGS="$CFLAGS -o out/conftest2.o" -+echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 -+if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -- if test -s conftest.err; then -+ if test -s out/conftest.err; then - echo "$ac_t"no 1>&6 - compiler_c_o=no - else -@@ -720,12 +840,17 @@ - fi - else - # Append any errors to the config.log. -- cat conftest.err 1>&5 -+ cat out/conftest.err 1>&5 - compiler_c_o=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" --$rm conftest* -+chmod u+w . -+$rm conftest* out/* -+rmdir out -+cd .. -+rmdir conftest -+$rm -r conftest 2>/dev/null - - if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo -@@ -734,8 +859,8 @@ - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" -- echo "$progname:737: checking if $compiler supports -c -o file.lo" >&5 --if { (eval echo $progname:738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then -+ echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 -+if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -743,8 +868,8 @@ - echo "$ac_t"no 1>&6 - compiler_o_lo=no - else -- echo "$ac_t"yes 1>&6 -- compiler_o_lo=yes -+ echo "$ac_t"yes 1>&6 -+ compiler_o_lo=yes - fi - else - # Append any errors to the config.log. -@@ -786,17 +911,17 @@ - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" -- echo "$progname:789: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -- if { (eval echo $progname:790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then -+ echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -+ if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then -- echo "$ac_t"no 1>&6 -- compiler_rtti_exceptions=no -+ echo "$ac_t"no 1>&6 -+ compiler_rtti_exceptions=no - else -- echo "$ac_t"yes 1>&6 -- compiler_rtti_exceptions=yes -+ echo "$ac_t"yes 1>&6 -+ compiler_rtti_exceptions=yes - fi - else - # Append any errors to the config.log. -@@ -830,8 +955,8 @@ - echo 'main(){return(0);}' > conftest.c - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $link_static_flag" --echo "$progname:833: checking if $compiler static flag $link_static_flag works" >&5 --if { (eval echo $progname:834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then -+echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 -+if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 - else - echo "$ac_t"none 1>&6 -@@ -843,9 +968,9 @@ - if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 -- $rm conftestdata -- if ln -s X conftestdata 2>/dev/null; then -- $rm conftestdata -+ $rm conftest.dat -+ if ln -s X conftest.dat 2>/dev/null; then -+ $rm conftest.dat - LN_S="ln -s" - else - LN_S=ln -@@ -863,48 +988,18 @@ - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 -- echo "$progname:866: checking for ld used by GCC" >&5 -+ echo "$progname:991: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. -- /* | [A-Za-z]:/*) -+ [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' -- sub_uncdrive='s%^\([A-Za-z]\):/%//\1/%' -- # Canonicalize the path of ld -- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do -- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` -- done -- case "$host_os" in -- cygwin*) -- # Convert to a UNC path for cygwin -- test -z "$LD" && LD=`echo X$ac_prog | $Xsed -e "$sub_uncdrive"` -- ;; -- *) -- test -z "$LD" && LD="$ac_prog" -- ;; -- esac -- ;; -- ## -- ## FIXME: The code fails later on if we try to use an $LD with -- ## '\\' path separators. -- ## -- [A-Za-z]:[\\]*) -- re_direlt='\\[^\\][^\\]*\\\.\.\(\\\)' -- sub_uncdrive='s%^\([A-Za-z]\):\\%//\1/%' -- sub_uncdir='s%\\%/%g' - # Canonicalize the path 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%\1%"` -+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done -- case "$host_os" in -- cygwin*) -- # Convert to a UNC path for cygwin -- test -z "$LD" && LD=`echo X$ac_prog | $Xsed -e "$sub_uncdrive" -e "$sub_uncdir"` -- ;; -- *) -- test -z "$LD" && LD="$ac_prog" -- ;; -- esac -+ test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we are not using GCC. -@@ -917,17 +1012,17 @@ - esac - elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 -- echo "$progname:920: checking for GNU ld" >&5 -+ echo "$progname:1015: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -- echo "$progname:923: checking for non-GNU ld" >&5 -+ echo "$progname:1018: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. -- if test -f "$ac_dir/$ac_prog"; then -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. -@@ -969,130 +1064,208 @@ - - allow_undefined_flag= - no_undefined_flag= -+need_lib_prefix=unknown -+need_version=unknown -+# when you set need_version to no, make sure it does not cause -set_version -+# flags to be left without arguments - archive_cmds= --archive_sym_cmds= -+archive_expsym_cmds= - old_archive_from_new_cmds= - export_dynamic_flag_spec= - whole_archive_flag_spec= -+thread_safe_flag_spec= - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_direct=no - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - runpath_var= -+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 egrep regular expression 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. - - case "$host_os" in --aix3* | aix4*) -- # On AIX, the GNU linker works like the native linker. -- with_gnu_ld=no -+cygwin* | mingw*) -+ # 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 "$with_gcc" != yes; then -+ with_gnu_ld=no -+ fi - ;; -+ - esac - - ld_shlibs=yes - if test "$with_gnu_ld" = yes; then -+ # If archive_cmds runs LD, not CC, wlarc should be empty -+ wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case "$host_os" in -+ aix3* | aix4*) -+ # On AIX, the GNU linker is very broken -+ 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 -+ ;; -+ - amigaos*) -- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib$libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' -+ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes -- ;; - -- sunos4*) -- archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs$deplibs' -- hardcode_direct=yes -- hardcode_minus_L=yes -- hardcode_shlibpath_var=no -+ # 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 use -+ # them. -+ ld_shlibs=no - ;; - -- cygwin32* | mingw32*) -- if test "$with_gcc" = yes; then -- # hardcode_libdir_flag_spec is actually meaningless, as there is -- # no search path for DLLs. -- hardcode_libdir_flag_spec='-L$libdir' -+ beos*) -+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported -- # Very, very bogus. -- echo ' --#define WIN32_LEAN_AND_MEAN --#include --#undef WIN32_LEAN_AND_MEAN --#include -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; - --BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -+ cygwin* | mingw*) -+ # 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=yes - --#include --DECLARE_CYGWIN_DLL( DllMain ); --HINSTANCE __hDllInstance_base; -+ # Extract the symbol export list from an `--export-all' def file, -+ # then regenerate the def file from the symbol export list, so that -+ # the compiled dll only exports the symbol export list. -+ # Be careful not to strip the DATA tag left by newer dlltools. -+ export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ -+ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ -+ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ -+ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' -+ -+ # If DATA tags from a recent dlltool are present, honour them! -+ archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ -+ _lt_hint=1; -+ cat $export_symbols | while read symbol; do -+ set dummy \$symbol; -+ case \$# in -+ 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; -+ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; -+ esac; -+ _lt_hint=`expr 1 + \$_lt_hint`; -+ done~ -+ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ -+ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ -+ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ -+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ -+ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ -+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ -+ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' - --BOOL APIENTRY --DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) --{ -- __hDllInstance_base = hInst; -- return TRUE; --} --' > ltdll.c -- archive_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- $DLLTOOL --export-all --output-def $lib-def $libobjs ltdll.$objext~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- archive_sym_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- cat "$export_symbols" >> $lib-def~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $lib-def --output-lib $objdir/$libname.a~$rm $lib.exp' -- else -- # When not using gcc, we currently assume that we are using -- # Microsoft Visual C++. -- with_gnu_ld=no -- # 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 -- # FIXME: Setting linknames here is a bad hack. -- archive_cmds='$CC -o $lib$libobjs`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' -- fix_srcfile_path='`cygpath -w $srcfile`' -+ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' -+ # can we support soname and/or expsyms with a.out? -oliva - fi - ;; - -+ solaris* | sysv5*) -+ if $LD -v 2>&1 | egrep '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 | egrep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ sunos4*) -+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' -+ wlarc= -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then -- archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs' -- archive_sym_cmds='$CC -shared ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib$libobjs$deplibs' -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - -- if test "$ld_shlibs" = yes && test "$with_gnu_ld" = yes; then -+ if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' -- whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ case $host_os in -+ cygwin* | mingw*) -+ # dlltool doesn't understand --whole-archive et. al. -+ whole_archive_flag_spec= -+ ;; -+ *) -+ # ancient GNU ld didn't support --whole-archive et. al. -+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then -+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec= -+ fi -+ ;; -+ esac - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in - aix3*) - allow_undefined_flag=unsupported -- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq' > $lib.exp~ -- $LD -o $objdir/$soname$libobjs$deplibs -bE:$lib.exp -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' -- archive_sym_cmds='$LD -o $objdir/$soname$libobjs$deplibs -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' -+ always_export_symbols=yes -+ archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes -@@ -1104,80 +1277,67 @@ - ;; - - aix4*) -- allow_undefined_flag=unsupported -- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq' > $lib.exp else cat $export_symbols > $lib.exp~ -- $CC -o $objdir/$soname$libobjs$deplibs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry~$AR cru $lib $objdir/$soname' -- archive_sym_cmds='$CC -o $objdir/$soname$libobjs$deplibs ${wl}-bE:$export_symbols ${wl}-bM:SRE ${wl}-bnoentry~$AR cru $lib $objdir/$soname' -- hardcode_direct=yes -- hardcode_minus_L=yes -- ;; -+ hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' -+ hardcode_libdir_separator=':' -+ if test "$with_gcc" = yes; then -+ 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 -+ shared_flag='-shared' -+ else -+ shared_flag='${wl}-bM:SRE' -+ hardcode_direct=yes -+ fi -+ allow_undefined_flag=' ${wl}-berok' -+ archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' -+ archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' -+ case "$host_os" in aix4.[01]|aix4.[01].*) -+ # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on -+ always_export_symbols=yes ;; -+ esac -+ ;; - - amigaos*) -- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib$libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' -+ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 - ;; - -- cygwin32* | mingw32*) -- if test "$with_gcc" = yes; then -- # 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 -- # Very, very bogus. -- echo ' --#define WIN32_LEAN_AND_MEAN --#include --#undef WIN32_LEAN_AND_MEAN --#include -- --BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -- --#include --DECLARE_CYGWIN_DLL( DllMain ); --HINSTANCE __hDllInstance_base; -+ cygwin* | mingw*) -+ # 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 -+ # FIXME: Setting linknames here is a bad hack. -+ archive_cmds='$CC -o $lib $libobjs $linkopts `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' -+ fix_srcfile_path='`cygpath -w $srcfile`' -+ ;; - --BOOL APIENTRY --DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) --{ -- __hDllInstance_base = hInst; -- return TRUE; --} --' > ltdll.c -- archive_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- $DLLTOOL --export-all --output-def $lib-def $libobjs ltdll.$objext~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- archive_sym_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- cat "$export_symbols" >> $lib-def~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $lib-def --output-lib $objdir/$libname.a~$rm $lib.exp' -- else -- # 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 -- # FIXME: Setting linknames here is a bad hack. -- archive_cmds='$CC -o $lib$libobjs`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' -- fix_srcfile_path='`cygpath -w $srcfile`' -- fi -+ freebsd1*) -+ ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor -@@ -1185,65 +1345,64 @@ - # 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 /usr/lib/c++rt0.o' -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes -- hardcode_minus_L=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' -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - -- # FreeBSD 3, at last, uses gcc -shared to do shared libraries. -- freebsd3*) -- archive_cmds='$CC -shared -o $lib$libobjs$deplibs' -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd*) -+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes -- hardcode_minus_L=no - hardcode_shlibpath_var=no - ;; - -- hpux9*) -- archive_cmds='$rm $objdir/$soname~$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs$deplibs~test $objdir/$soname = $lib || mv $objdir/$soname $lib' -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_direct=yes -- hardcode_minus_L=yes -- export_dynamic_flag_spec='${wl}-E' -- ;; -- -- hpux10* | hpux11*) -- archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs$deplibs' -+ hpux9* | hpux10* | hpux11*) -+ case "$host_os" in -+ hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; -+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; -+ esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: - hardcode_direct=yes -- hardcode_minus_L=yes -+ hardcode_minus_L=yes # Not in the search PATH, but as the default -+ # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - if test "$with_gcc" = yes; then -- archive_cmds='$CC -shared -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs$deplibs' -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else -- archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' -+ archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: - ;; - - netbsd*) -- # Tested with NetBSD 1.2 ld -- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' -- hardcode_libdir_flag_spec='-R$libdir' -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out -+ else -+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF -+ fi -+ hardcode_libdir_flag_spec='${wl}-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) -- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no -@@ -1253,102 +1412,169 @@ - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported -- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp$libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib$libobjs$deplibs $objdir/$libname.def' -+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - -- osf3* | osf4*) -+ osf3*) - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -- archive_cmds='$CC -shared${allow_undefined_flag} -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs$deplibs' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' -- archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' -+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - -- sco3.2v5*) -- archive_cmds='$LD -G -o $lib$libobjs$deplibs' -+ osf4* | osf5*) # As osf3* with the addition of the -msym flag -+ if test "$with_gcc" = yes; then -+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' -+ else -+ allow_undefined_flag=' -expect_unresolved \*' -+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' -+ fi -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ ;; -+ rhapsody*) -+ archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' -+ hardcode_libdir_flags_spec='-L$libdir' - hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ hardcode_shlibpath_var=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now -- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs$deplibs' -- archive_sym_cmds='$echo "{ global:" > $lib.exp~sed $export_symbols -e "s/.*/\1;/" >> $lib.exp~$echo "local: * }" >> $lib.exp~ -- $LD -G${allow_undefined_flag} -M $export_symbols -h $soname -o $lib$libobjs$deplibs~$rm $lib.exp' -+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' -+ 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 $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no -- -- # Solaris 2 before 2.5 hardcodes -L paths. - case "$host_os" in -- solaris2.[0-4]*) -- hardcode_minus_L=yes -- ;; -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) # Supported since Solaris 2.6 (maybe 2.5.1?) -+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - ;; - - sunos4*) -- # Why do we need -Bstatic? To avoid inter-library dependencies, maybe... -- if test "$with_gcc" = yes; then -- archive_cmds='$CC -shared ${wl}-Bstatic -o $lib$libobjs$deplibs' -- else -- archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs$deplibs' -- fi -+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - -+ sysv4) -+ 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 $linkopts' -+ else -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no -+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ -+ sysv4.3*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ hardcode_shlibpath_var=no -+ export_dynamic_flag_spec='-Bexport' -+ ;; -+ -+ sysv5*) -+ no_undefined_flag=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' -+ 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 $linkopts~$rm $lib.exp' -+ hardcode_libdir_flag_spec= -+ hardcode_shlibpath_var=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ - uts4*) -- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' -- hardcode_direct=no -- hardcode_minus_L=no - hardcode_shlibpath_var=no - ;; - - dgux*) -- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' -- hardcode_direct=no -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ hardcode_shlibpath_var=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ld_shlibs=yes -+ fi -+ ;; -+ -+ sysv4.2uw2*) -+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' -+ hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ unixware7*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no -- can_build_shared=no - ;; - esac - fi - echo "$ac_t$ld_shlibs" 1>&6 -+test "$ld_shlibs" = no && can_build_shared=no - - if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in -- /* | [A-Za-z]:[/\\]*) ;; # Let the user override the test with a path. -+ [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. - *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" -+ for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do - test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/nm; 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 -- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- NM="$ac_dir/nm -B" -- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- NM="$ac_dir/nm -p" -+ if test -f $ac_dir/nm || test -f $ac_dir/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 -+ if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -+ NM="$ac_dir/nm -B" -+ break -+ elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -+ NM="$ac_dir/nm -p" -+ break - else -- NM="$ac_dir/nm" -+ NM=${NM="$ac_dir/nm"} # keep the first match, but -+ continue # so that we can try to find one that supports BSD flags - fi -- break - fi - done - IFS="$ac_save_ifs" -@@ -1365,52 +1591,54 @@ - # [They come from Ultrix. What could be older than Ultrix?!! ;)] - - # Character class describing NM global symbol codes. --symcode='[BCDEGRSTU]' -+symcode='[BCDEGRST]' - - # Regexp to match symbols that can be accessed directly from C. - sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - - # Transform the above into a raw symbol and a C symbol. --symxfrm='\1 \1' -+symxfrm='\1 \2\3 \3' -+ -+# Transform an extracted symbol line into a proper C declaration -+global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - - # Define system-specific variables. - case "$host_os" in - aix*) -- symcode='[BCDTU]' -+ symcode='[BCDT]' -+ ;; -+cygwin* | mingw*) -+ symcode='[ABCDGISTW]' - ;; --sunos* | cygwin32* | mingw32*) -- sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' -- symxfrm='_\1 \1' -+hpux*) # Its linker distinguishes data from code symbols -+ global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" - ;; - irix*) -- # Cannot use undefined symbols on IRIX because inlined functions mess us up. - symcode='[BCDEGRST]' - ;; - solaris*) -- symcode='[BDTU]' -+ symcode='[BDT]' -+ ;; -+sysv4) -+ symcode='[DFNSTU]' - ;; - esac - - # If we're using GNU nm, then use its standard symbol codes. - if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then -- symcode='[ABCDGISTUW]' -+ symcode='[ABCDGISTW]' - fi - --case "$host_os" in --cygwin32* | mingw32*) -- # We do not want undefined symbols on cygwin32. The user must -- # arrange to define them via -l arguments. -- symcode='[ABCDGISTW]' -- ;; --esac -+# Try without a prefix undercore, then with it. -+for ac_symprfx in "" "_"; do - --# Write the raw and C identifiers. --global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'" -+ # Write the raw and C identifiers. -+ global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" - --# Check to see that the pipe works correctly. --pipe_works=no --$rm conftest* --cat > conftest.c < conftest.c <&5 --if { (eval echo $progname:1426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then -- # Now try to grab the symbols. -- nlist=conftest.nm -- if { echo "$progname:1429: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then -- -- # Try sorting and uniquifying the output. -- if sort "$nlist" | uniq > "$nlist"T; then -- mv -f "$nlist"T "$nlist" -- wcout=`wc "$nlist" 2>/dev/null` -- count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` -- (test "$count" -ge 0) 2>/dev/null || count=-1 -- else -- rm -f "$nlist"T -- count=-1 -- fi -+ echo "$progname:1653: checking if global_symbol_pipe works" >&5 -+ if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then -+ # Now try to grab the symbols. -+ nlist=conftest.nm -+ if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then -- if egrep ' nm_test_func$' "$nlist" >/dev/null; then -- cat < conftest.c -+ # Make sure that we snagged all the symbols we need. -+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then -+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then -+ cat < conftest.c - #ifdef __cplusplus - extern "C" { - #endif - - EOF -- # Now generate the symbol file. -- sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c -+ # Now generate the symbol file. -+ eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' - -- cat <> conftest.c -+ cat <> conftest.c - #if defined (__STDC__) && __STDC__ --# define __ptr_t void * -+# define lt_ptr_t void * - #else --# define __ptr_t char * -+# define lt_ptr_t char * -+# define const - #endif - --/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ --int dld_preloaded_symbol_count = $count; -- - /* The mapping between symbol names and symbols. */ --struct { -- char *name; -- __ptr_t address; -+const struct { -+ const char *name; -+ lt_ptr_t address; - } --dld_preloaded_symbols[] = -+lt_preloaded_symbols[] = - { - EOF -- sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c -- cat <<\EOF >> conftest.c -- {0, (__ptr_t) 0} -+ sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c -+ cat <<\EOF >> conftest.c -+ {0, (lt_ptr_t) 0} - }; - - #ifdef __cplusplus - } - #endif - EOF -- # Now try linking the two files. -- mv conftest.$objext conftestm.$objext -- save_LIBS="$LIBS" -- save_CFLAGS="$CFLAGS" -- LIBS="conftestm.$objext" -- CFLAGS="$CFLAGS$no_builtin_flag" -- if { (eval echo $progname:1487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then -- pipe_works=yes -- else -- echo "$progname: failed program was:" >&5 -- cat conftest.c >&5 -- fi -- LIBS="$save_LIBS" -+ # Now try linking the two files. -+ mv conftest.$objext conftstm.$objext -+ save_LIBS="$LIBS" -+ save_CFLAGS="$CFLAGS" -+ LIBS="conftstm.$objext" -+ CFLAGS="$CFLAGS$no_builtin_flag" -+ if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then -+ pipe_works=yes -+ else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.c >&5 -+ fi -+ LIBS="$save_LIBS" -+ else -+ echo "cannot find nm_test_func in $nlist" >&5 -+ fi - else -- echo "cannot find nm_test_func in $nlist" >&5 -+ echo "cannot find nm_test_var in $nlist" >&5 - fi - else -- echo "cannot find nm_test_var in $nlist" >&5 -+ echo "cannot run $global_symbol_pipe" >&5 - fi - else -- echo "cannot run $global_symbol_pipe" >&5 -+ echo "$progname: failed program was:" >&5 -+ cat conftest.c >&5 - fi -+ $rm conftest* conftst* -+ -+ # Do not use the global_symbol_pipe unless it works. -+ if test "$pipe_works" = yes; then -+ break -+ else -+ global_symbol_pipe= -+ fi -+done -+if test "$pipe_works" = yes; then -+ echo "${ac_t}ok" 1>&6 - else -- echo "$progname: failed program was:" >&5 -- cat conftest.c >&5 -+ echo "${ac_t}failed" 1>&6 - fi --$rm conftest* - --# Do not use the global_symbol_pipe unless it works. --echo "$ac_t$pipe_works" 1>&6 --test "$pipe_works" = yes || global_symbol_pipe= -+if test -z "$global_symbol_pipe"; then -+ global_symbol_to_cdecl= -+fi - - # Check hardcoding attributes. - echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -@@ -1517,10 +1752,12 @@ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. -- if test "$hardcode_direct" != no && \ -- test "$hardcode_minus_L" != no && \ -- test "$hardcode_shlibpath_var" != no; then -- -+ 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 "$hardcode_shlibpath_var" != no && -+ test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else -@@ -1552,26 +1789,27 @@ - finish_cmds= - finish_eval= - shlibpath_var= -+shlibpath_overrides_runpath=unknown - version_type=none - dynamic_linker="$host_os ld.so" --sys_lib_search_path="/lib /usr/lib /usr/local/lib" --check_shared_deplibs_method='none' -+sys_lib_dlsearch_path_spec="/lib /usr/lib" -+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+file_magic_cmd= -+file_magic_test_file= -+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_regex' -- check by looking for filenames that look like the shared --# library in the library path. --# 'file_magic [regex]' -- check by looking for files in library path which --# responds to the "file" command with a given regex. This is actually a --# superset of the file_regex command. If you have file on your system, you'll --# want to use this instead. --# Notes: regexes are run through expr. -- -+# 'file_magic [regex]' -- check by looking for files in library path -+# which responds to the $file_magic_cmd with a given egrep 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. - echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 - case "$host_os" in --aix3* | aix4*) -+aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH -@@ -1580,44 +1818,111 @@ - soname_spec='${libname}${release}.so$major' - ;; - -+aix4*) -+ version_type=linux -+ # AIX 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. -+ # We preserve .a as extension for shared libraries though AIX4.2 -+ # and later linker supports .so -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' -+ shlibpath_var=LIBPATH -+ deplibs_check_method=pass_all -+ ;; -+ - 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}.so' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ deplibs_check_method=pass_all -+ lt_cv_dlopen="load_add_on" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ ;; -+ - bsdi4*) - version_type=linux -- library_names_spec='${libname}.so.$major ${libname}.so' -- soname_spec='${libname}.so' -- finish_cmds='PATH="$PATH:/sbin" ldconfig $libdir' -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/shlib/libc.so -+ 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" -+ export_dynamic_flag_spec=-rdynamic -+ # 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 - ;; - --cygwin32* | mingw32*) -+cygwin* | mingw*) - version_type=windows -+ need_version=no -+ need_lib_prefix=no - if test "$with_gcc" = yes; then - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' - else - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' - fi - dynamic_linker='Win32 ld.exe' -- libname_spec='$name' -+ deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -+ file_magic_cmd='${OBJDUMP} -f' -+ # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH -+ lt_cv_dlopen="LoadLibrary" -+ lt_cv_dlopen_libs= - ;; - --freebsd2* | freebsd3*) -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -- finish_cmds='PATH="$PATH:/sbin" OBJFORMAT="$objformat" ldconfig -m $libdir' -+ case "$version_type" in -+ freebsd-elf*) -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /usr/lib/libc.so*` -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -+ need_version=no -+ need_lib_prefix=no -+ ;; -+ freebsd-*) -+ deplibs_check_method=unknown -+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' -+ need_version=yes -+ ;; -+ esac - shlibpath_var=LD_LIBRARY_PATH -+ case "$host_os" in -+ freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) -+ shlibpath_overrides_runpath=yes -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ ;; -+ esac - ;; - - gnu*) - version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}.so' -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' -+ soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH -+ deplibs_check_method=pass_all - ;; - - hpux9* | hpux10* | hpux11*) -@@ -1625,25 +1930,52 @@ - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos -+ need_lib_prefix=no -+ need_version=no - shlibpath_var=SHLIB_PATH -+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' -+ case "$host_os" in -+ hpux10.20*) -+ # TODO: Does this work for hpux-11 too? -+ deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/usr/lib/libc.sl -+ ;; -+ esac - ;; - --irix5*) -- version_type=osf -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --irix6*) -- version_type=osf -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -- shlibpath_var=LD_LIBRARYN32_PATH -+irix5* | irix6*) -+ version_type=irix -+ need_lib_prefix=no -+ need_version=no -+ soname_spec='${libname}${release}.so.$major' -+ library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' -+ case "$host_os" in -+ irix5*) -+ libsuff= shlibsuff= -+ # this will be overridden with pass_all, but let us keep it just in case -+ deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" -+ ;; -+ *) -+ case "$LD" in # libtool.m4 will add one of these switches to LD -+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; -+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; -+ *-64|*"-64 ") 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}" -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /lib${libsuff}/libc.so*` -+ deplibs_check_method='pass_all' - ;; - - # No shared lib support for Linux oldld, aout, or coff. -@@ -1654,12 +1986,14 @@ - # This must be Linux ELF. - linux-gnu*) - version_type=linux -+ need_lib_prefix=no -+ need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH -- check_shared_deplibs_method='file_magic ELF 32-bit LSB shared object' -- sys_lib_search_path="/lib /usr/lib /usr/local/lib `echo $LD_LIBRARY_PATH | sed -e 's/:/ /g'`" -+ shlibpath_overrides_runpath=no -+ deplibs_check_method=pass_all - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' -@@ -1672,26 +2006,60 @@ - fi - ;; - --netbsd* | openbsd*) -+netbsd*) -+ version_type=sunos -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -+ dynamic_linker='NetBSD (a.out) ld.so' -+ else -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' -+ soname_spec='${libname}${release}.so$major' -+ dynamic_linker='NetBSD ld.elf_so' -+ fi -+ shlibpath_var=LD_LIBRARY_PATH -+ ;; -+ -+openbsd*) - version_type=sunos -- library_names_spec='${libname}${release}.so$versuffix' -+ if test "$with_gnu_ld" = yes; then -+ need_lib_prefix=no -+ need_version=no -+ fi -+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - - os2*) - libname_spec='$name' -+ need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - --osf3* | osf4*) -+osf3* | osf4* | osf5*) - version_type=osf -+ need_version=no - soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH -- check_shared_deplibs_method='pass_all' -+ # this will be overridden with pass_all, but let us keep it just in case -+ deplibs_check_method='file_magic COFF format alpha shared library' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/shlib/libc.so -+ deplibs_check_method='pass_all' -+ 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" -+ ;; -+ -+rhapsody*) -+ version_type=sunos -+ library_names_spec='${libname}.so' -+ soname_spec='${libname}.so' -+ shlibpath_var=DYLD_LIBRARY_PATH -+ deplibs_check_method=pass_all - ;; - - sco3.2v5*) -@@ -1703,11 +2071,17 @@ - - solaris*) - version_type=linux -+ need_lib_prefix=no -+ need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' -+ deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/lib/libc.so - ;; - - sunos4*) -@@ -1715,29 +2089,63 @@ - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2*) -+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH -+ case "$host_vendor" in -+ sequent) -+ file_magic_cmd='/bin/file' -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ ;; -+ ncr) -+ deplibs_check_method='pass_all' -+ ;; -+ motorola) -+ need_lib_prefix=no -+ need_version=no -+ shlibpath_overrides_runpath=no -+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' -+ 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]' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /usr/lib/libc.so*` -+ ;; -+ esac - ;; - - uts4*) - version_type=linux -- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' -- soname_spec='${libname}${release}.so.$major' -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - - dgux*) - version_type=linux -+ need_lib_prefix=no -+ need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -+sysv4*MP*) -+ if test -d /usr/nec ;then -+ version_type=linux -+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' -+ soname_spec='$libname.so.$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ fi -+ ;; -+ - *) - dynamic_linker=no - ;; -@@ -1748,19 +2156,58 @@ - # Report the final consequences. - echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -+# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in -+# configure.in, otherwise build static only libraries. -+case "$host_os" in -+cygwin* | mingw* | os2*) -+ if test x$can_build_shared = xyes; then -+ test x$enable_win32_dll = xno && can_build_shared=no -+ echo "checking if package supports dlls... $can_build_shared" 1>&6 -+ fi -+;; -+esac -+ -+if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then -+ case "$deplibs_check_method" in -+ "file_magic "*) -+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" -+ 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 -+ - echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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 --aix*) -+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*) -+ test "$enable_shared" = yes && enable_static=no -+ ;; - esac - - echo "$ac_t$enable_shared" 1>&6 -@@ -1770,6 +2217,15 @@ - - echo "checking whether to build static libraries... $enable_static" 1>&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 -+ - echo $ac_n "checking for objdir... $ac_c" 1>&6 - rm -f .libs 2>/dev/null - mkdir .libs 2>/dev/null -@@ -1782,6 +2238,449 @@ - rmdir .libs 2>/dev/null - echo "$ac_t$objdir" 1>&6 - -+if test "x$enable_dlopen" != xyes; then -+ enable_dlopen=unknown -+ enable_dlopen_self=unknown -+ enable_dlopen_self_static=unknown -+else -+if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then -+ lt_cv_dlopen=no lt_cv_dlopen_libs= -+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -+echo "$progname:2248: checking for dlopen in -ldl" >&5 -+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldl $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -+echo "$progname:2288: checking for dlopen" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen(); -+ -+int main() { -+ -+/* 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 -+dlopen(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_dlopen=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_dlopen=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="dlopen" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -+echo "$progname:2335: checking for dld_link in -ldld" >&5 -+ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldld $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -+echo "$progname:2375: checking for shl_load" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char shl_load(); -+ -+int main() { -+ -+/* 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 -+shl_load(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_shl_load=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_shl_load=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="shl_load" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -+echo "$progname:2423: checking for shl_load in -ldld" >&5 -+ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldld $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+fi -+ -+ if test "x$lt_cv_dlopen" != xno; then -+ enable_dlopen=yes -+ fi -+ -+ case "$lt_cv_dlopen" in -+ dlopen) -+for ac_hdr in dlfcn.h; do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "$progname:2488: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+int fnord = 0; -+EOF -+ac_try="$ac_compile >/dev/null 2>conftest.out" -+{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+else -+ echo "$ac_t""no" 1>&6 -+fi -+done -+ -+ if test "x$ac_cv_header_dlfcn_h" = xyes; then -+ CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -+ fi -+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" -+ LIBS="$lt_cv_dlopen_libs $LIBS" -+ -+ echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -+echo "$progname:2526: checking whether a program can dlopen itself" >&5 -+if test "${lt_cv_dlopen_self+set}" = set; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ if test "$cross_compiling" = yes; then -+ lt_cv_dlopen_self=cross -+ else -+ cat > conftest.c < -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LTDL_GLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LTDL_GLOBAL DL_GLOBAL -+# else -+# define LTDL_GLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LTDL_LAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LTDL_LAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LTDL_LAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LTDL_LAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LTDL_LAZY_OR_NOW DL_NOW -+# else -+# define LTDL_LAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+fnord() { int i=42;} -+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); -+ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); -+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } -+ -+EOF -+if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -+then -+ lt_cv_dlopen_self=yes -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -fr conftest* -+ lt_cv_dlopen_self=no -+fi -+rm -fr conftest* -+fi -+ -+fi -+ -+echo "$ac_t""$lt_cv_dlopen_self" 1>&6 -+ -+ if test "$lt_cv_dlopen_self" = yes; then -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -+echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 -+if test "${lt_cv_dlopen_self_static+set}" = set; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ if test "$cross_compiling" = yes; then -+ lt_cv_dlopen_self_static=cross -+ else -+ cat > conftest.c < -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LTDL_GLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LTDL_GLOBAL DL_GLOBAL -+# else -+# define LTDL_GLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LTDL_LAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LTDL_LAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LTDL_LAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LTDL_LAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LTDL_LAZY_OR_NOW DL_NOW -+# else -+# define LTDL_LAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+fnord() { int i=42;} -+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); -+ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); -+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } -+ -+EOF -+if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -+then -+ lt_cv_dlopen_self_static=yes -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -fr conftest* -+ lt_cv_dlopen_self_static=no -+fi -+rm -fr conftest* -+fi -+ -+fi -+ -+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 -+fi -+ ;; -+ 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 -+ - # Copy echo and quote the copy, instead of the original, because it is - # used later. - ltecho="$echo" -@@ -1790,30 +2689,36 @@ - fi - LTSHELL="$SHELL" - -+LTCONFIG_VERSION="$VERSION" -+ - # Only quote variables if we're using ltmain.sh. - case "$ltmain" in - *.sh) - # Now quote all the things that may contain metacharacters. -- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ -- old_LN_S old_DLLTOOL old_AS AR CC LD LN_S NM LTSHELL VERSION \ -+ for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ -+ old_LD old_LDFLAGS old_LIBS \ -+ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ -+ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ -- whole_archive_flag_spec libname_spec library_names_spec soname_spec \ -+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ -+ library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ -- old_postuninstall_cmds archive_cmds archive_sym_cmds postinstall_cmds postuninstall_cmds \ -- check_shared_deplibs_method allow_undefined_flag no_undefined_flag \ -- finish_cmds finish_eval global_symbol_pipe \ -- hardcode_libdir_flag_spec hardcode_libdir_separator sys_lib_search_path \ -- compiler_c_o compiler_o_lo need_locks; do -+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ -+ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ -+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ -+ hardcode_libdir_flag_spec hardcode_libdir_separator \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ -- archive_cmds | archive_sym_cmds | \ -+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - postinstall_cmds | postuninstall_cmds | \ -- finish_cmds | sys_lib_search_path) -+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. -- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`\\\"" -+ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -@@ -1823,8 +2728,7 @@ - - case "$ltecho" in - *'\$0 --fallback-echo"') -- ltecho=`$echo "X$ltecho" | -- $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -@@ -1835,11 +2739,11 @@ - #! $SHELL - - # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. --# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION) -+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) - # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. - # --# Copyright (C) 1996-1998 Free Software Foundation, Inc. --# Gordon Matzigkeit , 1996 -+# Copyright (C) 1996-1999 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 -@@ -1865,7 +2769,7 @@ - - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi -+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - - ### BEGIN LIBTOOL CONFIG - EOF -@@ -1874,8 +2778,9 @@ - - *) - # Double-quote the variables that need it (for aesthetics). -- for var in old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ -- old_LN_S old_DLLTOOL old_AS; do -+ for var in old_CC old_CFLAGS old_CPPFLAGS \ -+ old_LD old_LDFLAGS old_LIBS \ -+ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do - eval "$var=\\\"\$var\\\"" - done - -@@ -1886,7 +2791,7 @@ - $rm "$cfgfile" - cat < "$cfgfile" - # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. --# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION) -+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) - EOF - ;; - esac -@@ -1895,15 +2800,16 @@ - # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - # - # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ --# LD=$old_LD NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ --# DLLTOOL="$old_DLLTOOL" AS="$old_AS" \\ -+# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ -+# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ -+# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ - # $0$ltconfig_args - # - # Compiler and other test output produced by $progname, useful for - # debugging $progname, is in ./config.log if it exists. - - # The version of $progname that generated this script. --LTCONFIG_VERSION=$VERSION -+LTCONFIG_VERSION=$LTCONFIG_VERSION - - # Shell to use when invoking shell scripts. - SHELL=$LTSHELL -@@ -1914,6 +2820,9 @@ - # Whether or not to build static libraries. - build_old_libs=$enable_static - -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ - # The host system. - host_alias=$host_alias - host=$host -@@ -1936,10 +2845,13 @@ - # A BSD-compatible nm program. - NM=$NM - --# Used on cygwin32: DLL creation program. -+# Used on cygwin: DLL creation program. - DLLTOOL="$DLLTOOL" - --# Used on cygwin32: assembler. -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. - AS="$AS" - - # The name of the directory that contains temporary libtool files. -@@ -1958,10 +2870,13 @@ - # Old archive suffix (normally "a"). - libext="$libext" - -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ - # Additional compiler flags for building library objects. - pic_flag=$pic_flag - --# Does compiler simultaneously support -c and -o options -+# Does compiler simultaneously support -c and -o options? - compiler_c_o=$compiler_c_o - - # Can we write directly to a .lo ? -@@ -1970,6 +2885,21 @@ - # Must we lock files when doing compilation ? - need_locks=$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=$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=$link_static_flag - -@@ -1982,6 +2912,9 @@ - # Compiler flag to generate shared objects directly from archives. - whole_archive_flag_spec=$whole_archive_flag_spec - -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$thread_safe_flag_spec -+ - # Library versioning type. - version_type=$version_type - -@@ -2006,12 +2939,15 @@ - - # Commands used to build and install a shared archive. - archive_cmds=$archive_cmds --archive_sym_cmds=$archive_sym_cmds -+archive_expsym_cmds=$archive_expsym_cmds - postinstall_cmds=$postinstall_cmds - postuninstall_cmds=$postuninstall_cmds - - # Method to check whether dependent libraries are shared objects. --check_shared_deplibs_method=$check_shared_deplibs_method -+deplibs_check_method=$deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$file_magic_cmd - - # Flag that allows shared libraries with undefined symbols to be built. - allow_undefined_flag=$allow_undefined_flag -@@ -2028,12 +2964,18 @@ - # Take the output of nm and produce a listing of raw symbols and C names. - global_symbol_pipe=$global_symbol_pipe - -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$global_symbol_to_cdecl -+ - # 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 - -@@ -2056,11 +2998,27 @@ - # the resulting binary. - hardcode_shlibpath_var=$hardcode_shlibpath_var - --# System search path for libraries --sys_lib_search_path=$sys_lib_search_path -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=$sys_lib_search_path_spec -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$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=$export_symbols_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$exclude_expsyms -+ -+# Symbols that must always be exported. -+include_expsyms=$include_expsyms -+ - EOF - - case "$ltmain" in -@@ -2074,7 +3032,7 @@ - # 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 "${COLLECT_NAMES+set}" != set; then -+if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi -@@ -2083,7 +3041,11 @@ - esac - - # Append the ltmain.sh script. -- cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) -+ sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) -+ # 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? - - chmod +x "$ofile" - ;; -@@ -2093,6 +3055,58 @@ - echo "FIXME: would compile $ltmain" - ;; - esac -+ -+test -n "$cache_file" || exit 0 -+ -+# AC_CACHE_SAVE -+trap '' 1 2 15 -+cat > confcache <<\EOF -+# 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. It is not useful on other systems. -+# If it contains results you don't want to keep, you may remove or edit it. -+# -+# By default, configure uses ./config.cache as the cache file, -+# creating it if it does not exist already. You can give configure -+# the --cache-file=FILE option to use a different cache file; that is -+# what configure does when it calls configure scripts in -+# subdirectories, so they share the cache. -+# Giving --cache-file=/dev/null disables caching, for debugging configure. -+# config.status only pays attention to the cache file if you give it the -+# --recheck option to rerun configure. -+# -+EOF -+# 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 \ -+ -e "s/'/'\\\\''/g" \ -+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" -+ ;; -+ *) -+ # `set' quotes correctly as required by POSIX, so do not add quotes. -+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' -+ ;; -+ esac >> confcache -+if cmp -s $cache_file confcache; then -+ : -+else -+ if test -w $cache_file; then -+ echo "updating cache $cache_file" -+ cat confcache > $cache_file -+ else -+ echo "not updating unwritable cache $cache_file" -+ fi -+fi -+rm -f confcache -+ - exit 0 - - # Local Variables: ---- gsmlib-1.10.orig/scripts/config.guess -+++ gsmlib-1.10/scripts/config.guess -@@ -1,9 +1,10 @@ - #! /bin/sh - # Attempt to guess a canonical system name. --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - # Free Software Foundation, Inc. - --timestamp='2001-09-04' -+timestamp='2008-01-23' - - # 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 -@@ -17,15 +18,18 @@ - # - # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# 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. - --# Written by Per Bothner . --# Please send patches to . -+ -+# 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 -@@ -52,8 +56,8 @@ - GNU config.guess ($timestamp) - - Originally written by Per Bothner. --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+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." -@@ -65,11 +69,11 @@ - while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) -- echo "$timestamp" ; exit 0 ;; -+ echo "$timestamp" ; exit ;; - --version | -v ) -- echo "$version" ; exit 0 ;; -+ echo "$version" ; exit ;; - --help | --h* | -h ) -- echo "$usage"; exit 0 ;; -+ echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. -@@ -87,30 +91,42 @@ - exit 1 - fi - -+trap 'exit 1' 1 2 15 - --dummy=dummy-$$ --trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; 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. - --# CC_FOR_BUILD -- compiler used by this script. - # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still - # use `HOST_CC' if defined, but it is deprecated. - --set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in -- ,,) echo "int dummy(){}" > $dummy.c ; -- for c in cc gcc c89 ; do -- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; -- if test $? = 0 ; then -+# 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 ; -- rm -f $dummy.c $dummy.o $dummy.rel ; - 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' -+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) -@@ -127,29 +143,31 @@ - - case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) -- # Netbsd (nbsd) targets should (where applicable) match one or -+ # 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. -- # Determine the machine/vendor (is the vendor relevant). -- case "${UNAME_MACHINE}" in -- amiga) machine=m68k-unknown ;; -- arm32) machine=arm-unknown ;; -- atari*) machine=m68k-atari ;; -- sun3*) machine=m68k-sun ;; -- mac68k) machine=m68k-apple ;; -- macppc) machine=powerpc-apple ;; -- hp3[0-9][05]) machine=m68k-hp ;; -- ibmrt|romp-ibm) machine=romp-ibm ;; -- *) machine=${UNAME_MACHINE}-unknown ;; -+ # -+ # 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}" in -- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) -+ 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 -@@ -166,120 +184,128 @@ - ;; - esac - # The OS release -- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -+ # 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 0 ;; -+ 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:*:*) -- if test $UNAME_RELEASE = "V4.0"; then -+ case $UNAME_RELEASE in -+ *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` -- fi -+ ;; -+ *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. -- cat <$dummy.s -- .data --\$Lformat: -- .byte 37,100,45,37,120,10,0 # "%d-%x\n" -- -- .text -- .globl main -- .align 4 -- .ent main --main: -- .frame \$30,16,\$26,0 -- ldgp \$29,0(\$27) -- .prologue 1 -- .long 0x47e03d80 # implver \$0 -- lda \$2,-1 -- .long 0x47e20c21 # amask \$2,\$1 -- lda \$16,\$Lformat -- mov \$0,\$17 -- not \$1,\$18 -- jsr \$26,printf -- ldgp \$29,0(\$26) -- mov 0,\$16 -- jsr \$26,exit -- .end main --EOF -- eval $set_cc_for_build -- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null -- if test "$?" = 0 ; then -- case `./$dummy` in -- 0-0) -- UNAME_MACHINE="alpha" -- ;; -- 1-0) -- UNAME_MACHINE="alphaev5" -- ;; -- 1-1) -- UNAME_MACHINE="alphaev56" -- ;; -- 1-101) -- UNAME_MACHINE="alphapca56" -- ;; -- 2-303) -- UNAME_MACHINE="alphaev6" -- ;; -- 2-307) -- UNAME_MACHINE="alphaev67" -- ;; -- 2-1307) -- UNAME_MACHINE="alphaev68" -- ;; -- esac -- fi -- rm -f $dummy.s $dummy -- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 -- exit 0 ;; -+ exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 -- exit 0;; -- amiga:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos -- exit 0 ;; -- arc64:OpenBSD:*:*) -- echo mips64el-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- arc:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- hkmips:OpenBSD:*:*) -- echo mips-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- pmax:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- sgi:OpenBSD:*:*) -- echo mips-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- wgrisc:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ *:[Mm]orph[Oo][Ss]:*:*) -+ echo ${UNAME_MACHINE}-unknown-morphos -+ exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition -- exit 0 ;; -+ 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 0;; -+ 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 0;; -+ 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 -@@ -287,25 +313,32 @@ - else - echo pyramid-pyramid-bsd - fi -- exit 0 ;; -+ exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -- i86pc:SunOS:5.*:*) -+ exit ;; -+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) -@@ -314,12 +347,12 @@ - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -- exit 0 ;; -+ exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - sun*:*:4.2BSD:*) -- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` -+ 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) -@@ -329,16 +362,10 @@ - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac -- exit 0 ;; -+ exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} -- exit 0 ;; -- sparc*:NetBSD:*) -- echo `uname -p`-unknown-netbsd${UNAME_RELEASE} -- exit 0 ;; -- atari*:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ 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 -@@ -349,49 +376,40 @@ - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} -- exit 0 ;; -- sun3*:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mac68k:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvme68k:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvme88k:OpenBSD:*:*) -- echo m88k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ m68k:machten:*:*) -+ echo m68k-apple-machten${UNAME_RELEASE} -+ exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 -- exit 0 ;; -+ exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -@@ -415,27 +433,33 @@ - exit (-1); - } - EOF -- $CC_FOR_BUILD $dummy.c -o $dummy \ -- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ -- && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -+ $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 0 ;; -+ exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 -- exit 0 ;; -+ exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 -- exit 0 ;; -+ exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 -- exit 0 ;; -+ exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` -@@ -451,29 +475,29 @@ - else - echo i586-dg-dgux${UNAME_RELEASE} - fi -- exit 0 ;; -+ exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 -- exit 0 ;; -+ exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 -- exit 0 ;; -+ exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 -- exit 0 ;; -+ exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd -- exit 0 ;; -+ exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -- exit 0 ;; -+ 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;; -+ exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` -@@ -481,7 +505,7 @@ - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} -- exit 0 ;; -+ exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build -@@ -496,17 +520,20 @@ - exit(0); - } - EOF -- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -- echo rs6000-ibm-aix3.2.5 -+ 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 0 ;; -- *:AIX:*:[45]) -- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` -+ 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 -@@ -518,38 +545,36 @@ - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} -- exit 0 ;; -+ exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix -- exit 0 ;; -+ exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 -- exit 0 ;; -+ exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to -- exit 0 ;; # report: romp-ibm BSD 4.3 -+ exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx -- exit 0 ;; -+ exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 -- exit 0 ;; -+ exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd -- exit 0 ;; -+ exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 -- exit 0 ;; -+ 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]) -- case "${HPUX_REV}" in -- 11.[0-9][0-9]) -- if [ -x /usr/bin/getconf ]; then -- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -+ 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 -@@ -558,13 +583,13 @@ - 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 ;; -- esac -- if [ "${HP_ARCH}" = "" ]; then -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -+ fi -+ if [ "${HP_ARCH}" = "" ]; then -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include -@@ -597,17 +622,37 @@ - exit (0); - } - EOF -- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` -- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi -- rm -f $dummy.c $dummy -- fi ;; -+ (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 0 ;; -+ exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} -- exit 0 ;; -+ exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -@@ -635,158 +680,247 @@ - exit (0); - } - EOF -- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 -- exit 0 ;; -+ exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd -- exit 0 ;; -+ exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd -- exit 0 ;; -+ exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix -- exit 0 ;; -+ exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf -- exit 0 ;; -+ exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf -- exit 0 ;; -+ exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi -- exit 0 ;; -+ exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites -- exit 0 ;; -- hppa*:OpenBSD:*:*) -- echo hppa-unknown-openbsd -- exit 0 ;; -+ exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd -- exit 0 ;; -+ exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit 0 ;; -+ exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd -- exit 0 ;; -+ exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd -- exit 0 ;; -+ exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd -- exit 0 ;; -- CRAY*X-MP:*:*:*) -- echo xmp-cray-unicos -- exit 0 ;; -+ exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -- CRAY*T3D:*:*:*) -- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -- CRAY-2:*:*:*) -- echo cray2-cray-unicos -- exit 0 ;; -+ 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 0 ;; -- hp300:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:FreeBSD:*:*) -- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -- exit 0 ;; -- *:OpenBSD:*:*) -- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -- exit 0 ;; -+ 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 0 ;; -- i*:MINGW*:*) -+ exit ;; -+ *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 -- exit 0 ;; -+ exit ;; -+ i*:windows32*:*) -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 -+ exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 -- exit 0 ;; -+ exit ;; -+ *:Interix*:[3456]*) -+ case ${UNAME_MACHINE} in -+ x86) -+ echo i586-pc-interix${UNAME_RELEASE} -+ exit ;; -+ EM64T | authenticamd) -+ 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 i386-pc-interix -- exit 0 ;; -+ echo i586-pc-interix -+ exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin -- exit 0 ;; -+ exit ;; -+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) -+ echo x86_64-unknown-cygwin -+ exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin -- exit 0 ;; -+ exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ exit ;; - *:GNU:*:*) -+ # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -- exit 0 ;; -+ 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 0 ;; -+ 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-gnu -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ fi -+ exit ;; -+ avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ cris:Linux:*:*) -+ echo cris-axis-linux-gnu -+ exit ;; -+ crisv32:Linux:*:*) -+ echo crisv32-axis-linux-gnu -+ exit ;; -+ frv:Linux:*:*) -+ echo frv-unknown-linux-gnu -+ exit ;; - ia64:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux -- exit 0 ;; -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ m32r*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - mips:Linux:*:*) -- case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in -- big) echo mips-unknown-linux-gnu && exit 0 ;; -- little) echo mipsel-unknown-linux-gnu && exit 0 ;; -- esac -+ 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-gnu"; 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-gnu"; exit; } -+ ;; -+ or32:Linux:*:*) -+ echo or32-unknown-linux-gnu -+ exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; -@@ -800,7 +934,7 @@ - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -- exit 0 ;; -+ exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in -@@ -808,27 +942,37 @@ - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac -- exit 0 ;; -+ exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux -- exit 0 ;; -+ exit ;; -+ sh64*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ vax:Linux:*:*) -+ echo ${UNAME_MACHINE}-dec-linux-gnu -+ exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ xtensa*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ 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. -- ld_supported_targets=`cd /; ld --help 2>&1 \ -+ # 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: *// -@@ -840,52 +984,58 @@ - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" -- exit 0 ;; -+ exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" -- exit 0 ;; -+ exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" -- exit 0 ;; -+ exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build -- cat >$dummy.c < --#ifdef __cplusplus --#include /* for printf() prototype */ -- int main (int argc, char *argv[]) { --#else -- int main (argc, argv) int argc; char *argv[]; { --#endif --#ifdef __ELF__ --# ifdef __GLIBC__ --# if __GLIBC__ >= 2 -- printf ("%s-pc-linux-gnu\n", argv[1]); --# else -- printf ("%s-pc-linux-gnulibc1\n", argv[1]); --# endif --# else -- printf ("%s-pc-linux-gnulibc1\n", argv[1]); --# endif --#else -- printf ("%s-pc-linux-gnuaout\n", argv[1]); --#endif -- return 0; --} -+ 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 -- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 -+ 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 0 ;; -+ 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... -@@ -893,7 +1043,27 @@ - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -- exit 0 ;; -+ 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 -@@ -901,99 +1071,100 @@ - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi -- exit 0 ;; -- i*86:*:5:[78]*) -+ 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 0 ;; -+ 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|egrep Release|sed -e 's/.*= //')` -- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 -- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ -+ 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|egrep '^Machine.*Pent ?II' >/dev/null) \ -+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 -- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ -+ (/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 0 ;; -- i*86:*DOS:*:*) -- echo ${UNAME_MACHINE}-pc-msdosdjgpp -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 -- exit 0 ;; -+ exit ;; - paragon:*:*:*) - echo i860-intel-osf1 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv -- exit 0 ;; -- M68*:*:R3V[567]*:*) -- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; -- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) -+ 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 0 -+ && { 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 0 ;; -+ && { 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 0 ;; -+ && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 -- exit 0 ;; -- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) -- echo i386-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 -- exit 0 ;; -+ exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 -- exit 0 ;; -+ exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` -@@ -1001,82 +1172,107 @@ - else - echo ns32k-sni-sysv - fi -- exit 0 ;; -+ exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 -- exit 0 ;; -+ exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 -- exit 0 ;; -+ exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos -- exit 0 ;; -+ exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos -- exit 0 ;; -+ exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos -- exit 0 ;; -+ exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Darwin:*:*) -- echo `uname -p`-apple-darwin${UNAME_RELEASE} -- exit 0 ;; -+ 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]*:*) -- if test "${UNAME_MACHINE}" = "x86pc"; then -+ UNAME_PROCESSOR=`uname -p` -+ if test "$UNAME_PROCESSOR" = "x86"; then -+ UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi -- echo `uname -p`-${UNAME_MACHINE}-nto-qnx -- exit 0 ;; -+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -+ exit ;; - *:QNX:*:4*) - echo i386-pc-qnx -- exit 0 ;; -- NSR-[KW]:NONSTOP_KERNEL:*:*) -+ exit ;; -+ NSE-?:NONSTOP_KERNEL:*:*) -+ echo nse-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux -- exit 0 ;; -+ exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv -- exit 0 ;; -+ exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 -@@ -1087,36 +1283,47 @@ - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 -- exit 0 ;; -- 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 0 ;; -+ exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 -- exit 0 ;; -+ exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex -- exit 0 ;; -+ exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 -- exit 0 ;; -+ exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 -- exit 0 ;; -+ exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 -- exit 0 ;; -+ exit ;; - *:ITS:*:*) - echo pdp10-unknown-its -- exit 0 ;; -- i*86:XTS-300:*:STOP) -- echo ${UNAME_MACHINE}-unknown-stop -- exit 0 ;; -- i*86:atheos:*:*) -- echo ${UNAME_MACHINE}-unknown-atheos -- exit 0 ;; -+ 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 -@@ -1148,7 +1355,7 @@ - #endif - - #if defined (__arm) && defined (__acorn) && defined (__unix) -- printf ("arm-acorn-riscix"); exit (0); -+ printf ("arm-acorn-riscix\n"); exit (0); - #endif - - #if defined (hp300) && !defined (hpux) -@@ -1237,12 +1444,12 @@ - } - EOF - --$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 --rm -f $dummy.c $dummy -+$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 0; } -+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - - # Convex versions that predate uname can use getsysinfo(1) - -@@ -1251,22 +1458,22 @@ - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd -- exit 0 ;; -+ exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit 0 ;; -+ exit ;; - c34*) - echo c34-convex-bsd -- exit 0 ;; -+ exit ;; - c38*) - echo c38-convex-bsd -- exit 0 ;; -+ exit ;; - c4*) - echo c4-convex-bsd -- exit 0 ;; -+ exit ;; - esac - fi - -@@ -1277,7 +1484,9 @@ - the operating system you are using. It is advised that you - download the most up to date version of the config scripts from - -- ftp://ftp.gnu.org/pub/gnu/config/ -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -+and -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - - If the version you run ($0) is already up to date, please - send the following data and any information you think might be ---- gsmlib-1.10.orig/scripts/ltmain.sh -+++ gsmlib-1.10/scripts/ltmain.sh -@@ -1,7 +1,7 @@ - # 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 -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 - # Free Software Foundation, Inc. - # Originally by Gordon Matzigkeit , 1996 - # -@@ -17,13 +17,41 @@ - # - # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# 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.20 Debian 1.5.20-2" -+TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" -+ -+# 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 -+ - # Check that we have a working $echo. - if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. -@@ -36,7 +64,7 @@ - : - else - # Restart under the correct shell, and then maybe $echo will work. -- exec $SHELL "$0" --no-reexec ${1+"$@"} -+ exec $SHELL "$progpath" --no-reexec ${1+"$@"} - fi - - if test "X$1" = X--fallback-echo; then -@@ -45,19 +73,9 @@ - cat <&2 -- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -- exit 1 -+ $echo "$modename: not configured to build any kind of library" 1>&2 -+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -+ exit $EXIT_FAILURE - fi - - # Global variables. -@@ -105,8 +135,225 @@ - lo2o="s/\\.lo\$/.${objext}/" - o2lo="s/\\.${objext}\$/.lo/" - -+##################################### -+# Shell function definitions: -+# This seems to be the best place for them -+ -+# 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 /{x;/import/!{s/^/import/;h;p;};x;};}'` -+ if test "X$win32_nmres" = "Ximport" ; then -+ win32_libid_type="x86 archive import" -+ else -+ win32_libid_type="x86 archive static" -+ fi -+ 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_xdir="$my_gentop/$my_xlib" -+ -+ $show "${rm}r $my_xdir" -+ $run ${rm}r "$my_xdir" -+ $show "$mkdir $my_xdir" -+ $run $mkdir "$my_xdir" -+ status=$? -+ if test "$status" -ne 0 && test ! -d "$my_xdir"; then -+ 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\" -+ - # Parse our command line options once, thoroughly. --while test $# -gt 0 -+while test "$#" -gt 0 - do - arg="$1" - shift -@@ -122,6 +369,34 @@ - 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" - ;; -@@ -139,18 +414,27 @@ - ;; - - --version) -- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" -- exit 0 -+ $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' $0 -- exit 0 -+ ${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" -+ $echo "$progname: enabling shell trace mode" - set -x -+ preserve_args="$preserve_args $arg" - ;; - - --dry-run | -n) -@@ -158,18 +442,18 @@ - ;; - - --features) -- echo "host: $host" -+ $echo "host: $host" - if test "$build_libtool_libs" = yes; then -- echo "enable shared libraries" -+ $echo "enable shared libraries" - else -- echo "disable shared libraries" -+ $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then -- echo "enable static libraries" -+ $echo "enable static libraries" - else -- echo "disable static libraries" -+ $echo "disable static libraries" - fi -- exit 0 -+ exit $? - ;; - - --finish) mode="finish" ;; -@@ -181,6 +465,15 @@ - - --quiet | --silent) - show=: -+ preserve_args="$preserve_args $arg" -+ ;; -+ -+ --tag) prevopt="--tag" prev=tag ;; -+ --tag=*) -+ set tag "$optarg" ${1+"$@"} -+ shift -+ prev=tag -+ preserve_args="$preserve_args --tag" - ;; - - -dlopen) -@@ -191,7 +484,7 @@ - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - - *) -@@ -204,7 +497,7 @@ - if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # If this variable is set in any of the actions, the command in it -@@ -216,8 +509,10 @@ - - # 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 | *++ | gcc* | *-gcc*) -+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do -@@ -258,7 +553,7 @@ - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. -@@ -272,158 +567,127 @@ - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= -- prev= -- lastarg= -- srcfile="$nonopt" -+ srcfile="$nonopt" # always keep a non-empty value in "srcfile" -+ suppress_opt=yes - suppress_output= -+ arg_mode=normal -+ libobj= -+ later= - -- user_target=no - for arg - do -- case $prev in -- "") ;; -- xcompiler) -- # Aesthetically quote the previous argument. -- prev= -- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -- -- case $arg in -- # Double-quote args containing other shell metacharacters. -- # Many Bourne shells cannot handle close brackets correctly -- # in scan sets, so we specify it separately. -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -- arg="\"$arg\"" -- ;; -- esac -- -- # Add the previous argument to base_compile. -- if test -z "$base_compile"; then -- base_compile="$lastarg" -- else -- base_compile="$base_compile $lastarg" -- fi -- continue -+ case $arg_mode in -+ arg ) -+ # do not "continue". Instead, add this to base_compile -+ lastarg="$arg" -+ arg_mode=normal - ;; -- esac - -- # Accept any command-line options. -- case $arg in -- -o) -- if test "$user_target" != "no"; then -- $echo "$modename: you cannot specify \`-o' more than once" 1>&2 -- exit 1 -- fi -- user_target=next -- ;; -- -- -static) -- build_old_libs=yes -+ target ) -+ libobj="$arg" -+ arg_mode=normal - continue - ;; - -- -prefer-pic) -- pic_mode=yes -- 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 -+ ;; - -- -prefer-non-pic) -- pic_mode=no -- continue -- ;; -+ -static | -prefer-pic | -prefer-non-pic) -+ later="$later $arg" -+ continue -+ ;; - -- -Xcompiler) -- prev=xcompiler -- continue -- ;; -+ -no-suppress) -+ suppress_opt=no -+ continue -+ ;; - -- -Wc,*) -- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` -- lastarg= -- save_ifs="$IFS"; IFS=',' -- for arg in $args; do -- IFS="$save_ifs" -+ -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/^ //"` -+ # 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. -- if test -z "$base_compile"; then -- base_compile="$lastarg" -- else -+ # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" -- fi -- continue -- ;; -- esac -+ continue -+ ;; - -- case $user_target in -- next) -- # The next one is the -o target name -- user_target=yes -- continue -- ;; -- yes) -- # We got the output file -- user_target=set -- libobj="$arg" -- continue -+ * ) -+ # Accept the current argument as the source file. -+ # The previous "srcfile" becomes the current argument. -+ # -+ lastarg="$srcfile" -+ srcfile="$arg" -+ ;; -+ esac # case $arg - ;; -- esac -- -- # Accept the current argument as the source file. -- lastarg="$srcfile" -- srcfile="$arg" -+ esac # case $arg_mode - - # Aesthetically quote the previous argument. -- -- # Backslashify any backslashes, double quotes, and dollar signs. -- # These are the only characters that are still specially -- # interpreted inside of double-quoted scrings. - 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, so we specify it separately. -- case $lastarg in -+ # 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 - -- # Add the previous argument to base_compile. -- if test -z "$base_compile"; then -- base_compile="$lastarg" -- else -- base_compile="$base_compile $lastarg" -- fi -- done -+ base_compile="$base_compile $lastarg" -+ done # for arg - -- case $user_target in -- set) -+ case $arg_mode in -+ arg) -+ $echo "$modename: you must specify an argument for -Xcompile" -+ exit $EXIT_FAILURE - ;; -- no) -- # Get the name of the library object. -- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` -+ target) -+ $echo "$modename: you must specify a target with \`-o'" 1>&2 -+ exit $EXIT_FAILURE - ;; - *) -- $echo "$modename: you must specify a target with \`-o'" 1>&2 -- exit 1 -+ # 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='[cCFSfmso]' -+ xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; -@@ -431,10 +695,13 @@ - *.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 ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` -@@ -443,25 +710,63 @@ - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 -- exit 1 -+ 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 1 -+ exit $EXIT_FAILURE - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then -- removelist="$obj $libobj" -+ removelist="$obj $lobj $libobj ${libobj}T" - else -- removelist="$libobj" -+ removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist -- trap "$run $rm $removelist; exit 1" 1 2 15 -+ 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 -@@ -480,8 +785,9 @@ - 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 1" 1 2 15 -+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - else -+ output_obj= - need_locks=no - lockfile= - fi -@@ -489,13 +795,13 @@ - # 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 "$0" "$lockfile" 2>/dev/null; do -+ 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 "\ -+ $echo "\ - *** ERROR, $lockfile exists and contains: - `cat $lockfile 2>/dev/null` - -@@ -507,14 +813,33 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi -- echo $srcfile > "$lockfile" -+ $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 "\ -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $echo "\ - *** ERROR, $lockfile contains: - `cat $lockfile 2>/dev/null` - -@@ -583,13 +893,13 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one -- if test x"$output_obj" != x"$libobj"; then -- $show "$mv $output_obj $libobj" -- if $run $mv $output_obj $libobj; then : -+ 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 -@@ -597,77 +907,50 @@ - fi - fi - -- # If we have no pic_flag, then copy the object into place and finish. -- if (test -z "$pic_flag" || test "$pic_mode" != default) && -- test "$build_old_libs" = yes; then -- # Rename the .lo from within objdir to obj -- if test -f $obj; then -- $show $rm $obj -- $run $rm $obj -- 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 "\ -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $echo "\ - *** ERROR, $lockfile contains: - `cat $lockfile 2>/dev/null` - -@@ -682,11 +965,11 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Just move the object if needed -- if test x"$output_obj" != x"$obj"; then -+ 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 -@@ -696,29 +979,31 @@ - fi - fi - -- # Create an invalid libtool object if no PIC, so that we do not -- # accidentally link it into a program. -- if test "$build_libtool_libs" != yes; then -- $show "echo timestamp > $libobj" -- $run eval "echo timestamp > \$libobj" || exit $? -- else -- # Move the .lo from within objdir -- $show "$mv $libobj $lo_libobj" -- if $run $mv $libobj $lo_libobj; 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 </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 -+ 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 1 -+ exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then -@@ -938,13 +1341,33 @@ - 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) -+ 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 -+ fi # test -n "$prev" - - prevarg="$arg" - -@@ -986,7 +1409,7 @@ - -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 1 -+ exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms -@@ -996,6 +1419,14 @@ - continue - ;; - -+ -framework|-arch) -+ prev=darwin_framework -+ compiler_flags="$compiler_flags $arg" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ continue -+ ;; -+ - -inst-prefix-dir) - prev=inst_prefix - continue -@@ -1005,7 +1436,7 @@ - # 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*) -+ no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; -@@ -1022,7 +1453,7 @@ - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - dir="$absdir" - ;; -@@ -1056,25 +1487,75 @@ - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; -- *-*-openbsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; -- esac -- elif test "X$arg" = "X-lc_r"; then -- case $host in -- *-*-openbsd*) -- # Do not include libc_r directly, use -pthread flag. -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C and math libraries are in the System framework -+ deplibs="$deplibs -framework System" - 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 - ;; - -- -module) -- module=yes -+ # 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 -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) -+ -+ # 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" -+ if test "$with_gcc" = "yes" ; then -+ compiler_flags="$compiler_flags $arg" -+ fi -+ continue -+ ;; -+ -+ -shrext) -+ prev=shrext - continue - ;; - -@@ -1102,8 +1583,18 @@ - continue - ;; - -+ -objectlist) -+ prev=objectlist -+ continue -+ ;; -+ - -o) prev=output ;; - -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ - -release) - prev=release - continue -@@ -1126,7 +1617,7 @@ - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in -@@ -1154,6 +1645,11 @@ - prev=vinfo - continue - ;; -+ -version-number) -+ prev=vinfo -+ vinfo_number=yes -+ continue -+ ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` -@@ -1202,6 +1698,11 @@ - continue - ;; - -+ -XCClinker) -+ prev=xcclinker -+ continue -+ ;; -+ - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need -@@ -1214,29 +1715,101 @@ - esac - ;; - -- *.lo | *.$objext) -- # A library or standard object. -- if test "$prev" = dlfiles; then -- # This file was specified with -dlopen. -- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -- dlfiles="$dlfiles $arg" -- prev= -- continue -- else -- # If libtool objects are unsupported, then we need to preload. -- prev=dlprefiles -- fi -- fi -+ *.$objext) -+ # A standard object. -+ objs="$objs $arg" -+ ;; - -- if test "$prev" = dlprefiles; then -- # Preload the old-style object. -- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` -- prev= -- else -+ *.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 -- *.lo) libobjs="$libobjs $arg" ;; -- *) objs="$objs $arg" ;; -+ */* | *\\*) . $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 -+ 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 - ;; - -@@ -1287,7 +1860,7 @@ - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -@@ -1296,6 +1869,7 @@ - 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" -@@ -1330,7 +1904,7 @@ - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; -@@ -1338,7 +1912,17 @@ - *) 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) -@@ -1358,7 +1942,7 @@ - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= -- if test "X$duplicate_deps" = "Xyes" ; then -+ 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" ;; -@@ -1383,7 +1967,7 @@ - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - done -@@ -1400,39 +1984,58 @@ - ;; - 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 -- # Determine which files to process - case $pass in -- dlopen) -- libs="$dlfiles" -- save_deplibs="$deplibs" # Collect dlpreopened libraries -- deplibs= -- ;; -+ dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; -- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; -+ link) -+ libs="$deplibs %DEPLIBS%" -+ test "X$link_all_deplibs" != Xno && libs="$libs $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 -- -l*) -- if test "$linkmode" = oldlib && test "$linkmode" = obj; then -- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 -- continue -+ -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 -- if test "$pass" = conv; then -- deplibs="$deplib $deplibs" -+ 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 -- # Search the libtool library -- lib="$searchdir/lib${name}.la" -- if test -f "$lib"; then -- found=yes -- break -- fi -+ 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 -@@ -1444,6 +2047,42 @@ - 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*) -@@ -1461,14 +2100,14 @@ - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" -- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - 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: $deplib" 1>&2 -+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue -@@ -1493,16 +2132,33 @@ - fi - case $linkmode in - lib) -- if test "$deplibs_check_method" != pass_all; then -- echo -- echo "*** Warning: This library needs some functionality provided by $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." -+ 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!" -+ $echo -+ $echo "*** Warning: Linking the shared library $output against the" -+ $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue -@@ -1519,14 +2175,18 @@ - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) -- 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" -+ 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 - ;; -@@ -1538,14 +2198,14 @@ - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Check to see that this really is a libtool archive. -- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ 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 1 -+ exit $EXIT_FAILURE - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` -@@ -1558,8 +2218,11 @@ - library_names= - old_library= - # If the library was installed with an old release of libtool, -- # it will not redefine variable installed. -+ # it will not redefine variables installed, or shouldnotlink - installed=yes -+ shouldnotlink=no -+ avoidtemprpath= -+ - - # Read the .la file - case $lib in -@@ -1569,8 +2232,7 @@ - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || -- { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then -- # Add dl[pre]opened files of deplib -+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi -@@ -1581,7 +2243,7 @@ - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" -@@ -1598,11 +2260,12 @@ - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 -- exit 1 -+ 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 -@@ -1610,19 +2273,23 @@ - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -- exit 1 -+ 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 1 -+ exit $EXIT_FAILURE - fi -- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ 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. -- dlprefiles="$dlprefiles $lib" -+ # 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 -@@ -1654,11 +2321,19 @@ - dir="$libdir" - absdir="$libdir" - fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else -- dir="$ladir/$objdir" -- absdir="$abs_ladir/$objdir" -- # Remove this search path later -- notinst_path="$notinst_path $abs_ladir" -+ 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//'` - -@@ -1666,7 +2341,7 @@ - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). -@@ -1688,11 +2363,12 @@ - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else -- deplibs="$lib $deplibs" -+ 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" -@@ -1726,13 +2402,19 @@ - continue - fi # $linkmode = prog... - -- link_static=no # Whether the deplib will be linked statically -- if test -n "$library_names" && -- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then -- # Link against this shared library -+ if test "$linkmode,$pass" = "prog,link"; then -+ if test -n "$library_names" && -+ { test "$prefer_static_libs" = no || 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 - -- if test "$linkmode,$pass" = "prog,link" || -- { 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. -@@ -1754,17 +2436,6 @@ - esac - ;; - esac -- if test "$linkmode" = prog; then -- # We need to hardcode the library path -- if test -n "$shlibpath_var"; then -- # Make sure the rpath contains only unique directories. -- case "$temp_rpath " in -- *" $dir "*) ;; -- *" $absdir "*) ;; -- *) temp_rpath="$temp_rpath $dir" ;; -- esac -- fi -- fi - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && -@@ -1774,11 +2445,52 @@ - # We only need to search for static libraries - continue - fi -+ fi - -+ link_static=no # Whether the deplib will be linked statically -+ if test -n "$library_names" && -+ { test "$prefer_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 -@@ -1792,7 +2504,7 @@ - elif test -n "$soname_spec"; then - # bleh windows - case $host in -- *cygwin*) -+ *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; -@@ -1804,17 +2516,18 @@ - - # 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" -+ 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='~' -- eval cmds=\"$extract_expsyms_cmds\" -+ cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -1825,9 +2538,10 @@ - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' -- eval cmds=\"$old_archive_from_expsyms_cmds\" -+ cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -1847,6 +2561,22 @@ - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" -+ case $host in -+ *-*-sco3.2v5* ) 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" ;; -@@ -1865,6 +2595,14 @@ - 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" -@@ -1878,7 +2616,7 @@ - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$add_shlibpath"; then -@@ -1912,16 +2650,7 @@ - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then -- # Try looking first in the location we're being installed to. -- add_dir= -- if test -n "$inst_prefix_dir"; then -- case "$libdir" in -- [\\/]*) -- add_dir="-L$inst_prefix_dir$libdir" -- ;; -- esac -- fi -- add_dir="$add_dir -L$libdir" -+ add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in -@@ -1929,18 +2658,24 @@ - *) 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. -- add_dir= - if test -n "$inst_prefix_dir"; then -- case "$libdir" in -- [\\/]*) -- add_dir="-L$inst_prefix_dir$libdir" -- ;; -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; - esac - fi -- add_dir="$add_dir -L$libdir" - add="-l$name" - fi - -@@ -1953,15 +2688,6 @@ - fi - fi - elif test "$linkmode" = prog; then -- 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 -- -- # Try to link the static library - # 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. -@@ -1981,20 +2707,21 @@ - - # 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 library needs some functionality provided by $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." -+ $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 "*** Therefore, libtool will create a static module, that should work " -- echo "*** as long as the dlopening application is linked with the -dlopen flag." -+ $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." -+ $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 -@@ -2004,8 +2731,6 @@ - fi - fi - else -- convenience="$convenience $dir/$old_library" -- old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi -@@ -2013,7 +2738,8 @@ - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && -- { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= -@@ -2065,29 +2791,75 @@ - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then -- path="-L$absdir/$objdir" -+ path="$absdir/$objdir" - else -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ 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 1 -+ exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi -- path="-L$absdir" -+ 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="$deplibs $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 -@@ -2095,7 +2867,6 @@ - done - fi - if test "$pass" != dlopen; then -- test "$pass" != scan && dependency_libs="$newdependency_libs" - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= -@@ -2118,9 +2889,30 @@ - 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" ;; - *) -@@ -2148,11 +2940,20 @@ - eval $var=\"$tmp_libs\" - done # for var - fi -- if test "$pass" = "conv" && -- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then -- libs="$deplibs" # reset libs -- deplibs= -- 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" -@@ -2161,6 +2962,10 @@ - - 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 -@@ -2174,7 +2979,7 @@ - fi - - if test -n "$vinfo"; then -- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 -+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then -@@ -2196,17 +3001,19 @@ - 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 1 -+ 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$//'` -@@ -2217,11 +3024,11 @@ - 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 1 -+ exit $EXIT_FAILURE - else -- echo -- echo "*** Warning: Linking the shared library $output against the non-libtool" -- echo "*** objects $objs is not portable!" -+ $echo -+ $echo "*** Warning: Linking the shared library $output against the non-libtool" -+ $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi -@@ -2240,14 +3047,16 @@ - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. -- libext=al -+ # 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' is ignored for convenience libraries" 1>&2 -+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then -@@ -2263,45 +3072,87 @@ - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - -- current="$2" -- revision="$3" -- age="$4" -+ # 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) -+ 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" -+ ;; -+ *) -+ $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 -+ ;; -+ no) -+ current="$2" -+ revision="$3" -+ age="$4" -+ ;; -+ esac - - # Check that each of the things are valid numbers. - case $current in -- [0-9]*) ;; -+ 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' is not a nonnegative integer" 1>&2 -+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - case $revision in -- [0-9]*) ;; -+ 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' is not a nonnegative integer" 1>&2 -+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - case $age in -- [0-9]*) ;; -+ 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' is not a nonnegative integer" 1>&2 -+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ 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 1 -+ exit $EXIT_FAILURE - fi - - # Calculate the version variables. -@@ -2318,7 +3169,7 @@ - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` -- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" -+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - ;; - - freebsd-aout) -@@ -2331,16 +3182,21 @@ - versuffix=".$current"; - ;; - -- irix) -+ irix | nonstopux) - major=`expr $current - $age + 1` -- verstring="sgi$major.$revision" -+ -+ 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="sgi$major.$iface:$verstring" -+ verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. -@@ -2354,7 +3210,7 @@ - ;; - - osf) -- major=`expr $current - $age` -+ major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - -@@ -2384,20 +3240,19 @@ - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 -- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -- exit 1 -+ $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= -- verstring="0.0" - 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= - ;; - *) - verstring="0.0" -@@ -2431,9 +3286,30 @@ - fi - - if test "$mode" != relink; then -- # Remove our outputs. -- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" -- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* -+ # 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. -@@ -2446,9 +3322,9 @@ - - # 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'` -+ 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 -@@ -2499,10 +3375,11 @@ - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; -- *-*-openbsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. -+ test "X$arg" = "X-lc" && continue - ;; -- *) -+ *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" -@@ -2531,7 +3408,7 @@ - # 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 behaviour. -+ # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) -@@ -2544,64 +3421,88 @@ - int main() { return 0; } - EOF - $rm conftest -- $CC -o conftest conftest.c $deplibs -+ $LTCC -o conftest conftest.c $deplibs - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` - for i in $deplibs; do -- name="`expr $i : '-l\(.*\)'`" -+ name=`expr $i : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. -- if test -n "$name" && test "$name" != "0"; then -- libname=`eval \\$echo \"$libname_spec\"` -- deplib_matches=`eval \\$echo \"$library_names_spec\"` -- set dummy $deplib_matches -- deplib_match=$2 -- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -- newdeplibs="$newdeplibs $i" -- else -- droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $i." -- 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 "$name" != "" && test "$name" -ne "0"; then -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $i "*) -+ newdeplibs="$newdeplibs $i" -+ i="" -+ ;; -+ esac -+ fi -+ if test -n "$i" ; then -+ libname=`eval \\$echo \"$libname_spec\"` -+ deplib_matches=`eval \\$echo \"$library_names_spec\"` -+ set dummy $deplib_matches -+ deplib_match=$2 -+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -+ newdeplibs="$newdeplibs $i" -+ else -+ droppeddeps=yes -+ $echo -+ $echo "*** Warning: dynamic linker does not accept needed library $i." -+ $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 I believe you do not have" -+ $echo "*** because a test_compile did reveal that the linker did not use it for" -+ $echo "*** its dynamic dependency list that programs get resolved with at runtime." -+ fi - fi - else - newdeplibs="$newdeplibs $i" - fi - done - else -- # Error occured in the first compile. Let's try to salvage the situation: -- # Compile a seperate program for each library. -+ # Error occurred in the first compile. Let's try to salvage -+ # the situation: Compile a separate program for each library. - for i in $deplibs; do -- name="`expr $i : '-l\(.*\)'`" -- # If $name is empty we are operating on a -L argument. -- if test -n "$name" && test "$name" != "0"; then -+ name=`expr $i : '-l\(.*\)'` -+ # If $name is empty we are operating on a -L argument. -+ if test "$name" != "" && test "$name" != "0"; then - $rm conftest -- $CC -o conftest conftest.c $i -+ $LTCC -o conftest conftest.c $i - # Did it work? - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` -- libname=`eval \\$echo \"$libname_spec\"` -- deplib_matches=`eval \\$echo \"$library_names_spec\"` -- set dummy $deplib_matches -- deplib_match=$2 -- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -- newdeplibs="$newdeplibs $i" -- else -- droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $i." -- 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $i "*) -+ newdeplibs="$newdeplibs $i" -+ i="" -+ ;; -+ esac -+ fi -+ if test -n "$i" ; then -+ libname=`eval \\$echo \"$libname_spec\"` -+ deplib_matches=`eval \\$echo \"$library_names_spec\"` -+ set dummy $deplib_matches -+ deplib_match=$2 -+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -+ newdeplibs="$newdeplibs $i" -+ else -+ droppeddeps=yes -+ $echo -+ $echo "*** Warning: dynamic linker does not accept needed library $i." -+ $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 a test_compile did reveal that the linker did not use this one" -+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime." -+ fi - fi - else - droppeddeps=yes -- echo -- echo "*** Warning! Library $i is needed by this library but I was not able to" -- echo "*** make it link in! You will probably need to install it or some" -- echo "*** library that it depends on before this library will be fully" -- echo "*** functional. Installing it before continuing would be even better." -+ $echo -+ $echo "*** Warning! Library $i is needed by this library but I was not able to" -+ $echo "*** make it link in! You will probably need to install it or some" -+ $echo "*** library that it depends on before this library will be fully" -+ $echo "*** functional. Installing it before continuing would be even better." - fi - else - newdeplibs="$newdeplibs $i" -@@ -2613,13 +3514,22 @@ - set dummy $deplibs_check_method - file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do -- name="`expr $a_deplib : '-l\(.*\)'`" -+ name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. -- if test -n "$name" && test "$name" != "0"; 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 -+ if test "$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 - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then -@@ -2632,28 +3542,36 @@ - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do -- potliblink=`ls -ld $potlib | sed 's/.* -> //'` -+ 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 -+ | ${SED} 10q \ -+ | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi -- done -- done -+ done -+ done -+ fi - if test -n "$a_deplib" ; then - droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $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 -+ $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. -@@ -2665,29 +3583,47 @@ - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do -- name="`expr $a_deplib : '-l\(.*\)'`" -+ name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; 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 -- 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 -+ 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 -- done -+ fi - if test -n "$a_deplib" ; then - droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $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 -+ $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. -@@ -2697,16 +3633,23 @@ - ;; - none | unknown | *) - newdeplibs="" -- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | -- grep . >/dev/null; then -- echo -+ 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." -+ $echo "*** Warning: inter-library dependencies are not supported in this platform." - else -- echo "*** Warning: inter-library dependencies are not known to be supported." -+ $echo "*** Warning: inter-library dependencies are not known to be supported." - fi -- echo "*** All declared inter-library dependencies are being dropped." -+ $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; -@@ -2726,17 +3669,17 @@ - - 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." -+ $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." -+ $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" -@@ -2746,16 +3689,16 @@ - 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." -+ $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." -+ $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 -@@ -2813,7 +3756,11 @@ - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" -- eval dep_rpath=\"$hardcode_libdir_flag_spec\" -+ 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. -@@ -2833,6 +3780,7 @@ - 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" -@@ -2843,7 +3791,9 @@ - else - soname="$realname" - fi -- test -z "$dlname" && dlname=$soname -+ if test -z "$dlname"; then -+ dlname=$soname -+ fi - - lib="$output_objdir/$realname" - for link -@@ -2851,23 +3801,6 @@ - linknames="$linknames $link" - done - -- # Ensure that we have .o objects for linkers which dislike .lo -- # (e.g. aix) in case we are running --disable-static -- for obj in $libobjs; do -- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` -- if test "X$xdir" = "X$obj"; then -- xdir="." -- else -- xdir="$xdir" -- fi -- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` -- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` -- if test ! -f $xdir/$oldobj; then -- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" -- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? -- fi -- done -- - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - -@@ -2877,17 +3810,29 @@ - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols -- eval cmds=\"$export_symbols_cmds\" -+ cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -- $show "$cmd" -- $run eval "$cmd" || exit $? -+ 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 "$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 -@@ -2898,46 +3843,30 @@ - $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" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "mkdir $gentop" -- $run mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- for xlib in $convenience; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "mkdir $xdir" -- $run mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- -- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` -- done -+ 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" -@@ -2949,23 +3878,175 @@ - 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 cmds=\"$archive_expsym_cmds\" -+ 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 -- eval cmds=\"$archive_cmds\" -+ # 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" || exit $? -+ $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 $? -- exit 0 -+ -+ 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. -@@ -3013,7 +4094,7 @@ - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` -@@ -3042,38 +4123,10 @@ - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "mkdir $gentop" -- $run mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- for xlib in $convenience; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "mkdir $xdir" -- $run mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- -- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` -- done -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - -@@ -3081,10 +4134,11 @@ - 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" -- eval cmds=\"$reload_cmds\" -+ 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 -@@ -3097,7 +4151,7 @@ - $run ${rm}r $gentop - fi - -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then -@@ -3108,37 +4162,24 @@ - - # 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 0 -+ # $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" -- eval cmds=\"$reload_cmds\" -+ 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" -- else -- # Just create a symlink. -- $show $rm $libobj -- $run $rm $libobj -- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` -- if test "X$xdir" = "X$libobj"; then -- xdir="." -- else -- xdir="$xdir" -- fi -- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` -- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` -- $show "(cd $xdir && $LN_S $oldobj $baseobj)" -- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? - fi - - if test -n "$gentop"; then -@@ -3146,12 +4187,12 @@ - $run ${rm}r $gentop - fi - -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - prog) - case $host in -- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; -+ *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 -@@ -3176,6 +4217,16 @@ - ;; - 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 -+ - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - -@@ -3326,31 +4377,31 @@ - done - - if test -n "$exclude_expsyms"; then -- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' -+ $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 '$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/$output.exp" -+ export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols -- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else -- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' -- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' -+ $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"' - 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"' -+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` -+ $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - -@@ -3359,12 +4410,18 @@ - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then -- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. -- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then -+ 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 -@@ -3373,7 +4430,7 @@ - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else -- echo '/* NONE */' >> "$output_objdir/$dlsyms" -+ $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ -@@ -3388,7 +4445,26 @@ - #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; - } -@@ -3425,18 +4501,18 @@ - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; -- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; -+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; -- *) pic_flag_for_symtable=" $pic_flag -DPIC";; -+ *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. -- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? -+ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -+ $run eval '(cd $output_objdir && $LTCC -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" -@@ -3448,7 +4524,7 @@ - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - else -@@ -3536,7 +4612,7 @@ - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then -@@ -3591,10 +4667,10 @@ - fi - - # Quote $echo for shipping. -- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then -- case $0 in -- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; -- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; -+ 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 -@@ -3606,15 +4682,231 @@ - # 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$,,'` ;; -+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in -- *cygwin*) exeext=.exe ;; -+ *cygwin*) -+ exeext=.exe -+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac -+ case $host in -+ *cygwin* | *mingw* ) -+ cwrappersource=`$echo ${objdir}/lt-${outputname}.c` -+ cwrapper=`$echo ${output}.exe` -+ $rm $cwrappersource $cwrapper -+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 -+ -+ cat > $cwrappersource <> $cwrappersource<<"EOF" -+#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 '/' -+#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 -+#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 */ -+ -+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -+#define XFREE(stale) do { \ -+ if (stale) { free ((void *) stale); stale = 0; } \ -+} while (0) -+ -+const char *program_name = NULL; -+ -+void * xmalloc (size_t num); -+char * xstrdup (const char *string); -+char * basename (const char *name); -+char * fnqualify(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 ((char *) basename (argv[0])); -+ newargz = XMALLOC(char *, argc+2); -+EOF -+ -+ cat >> $cwrappersource <> $cwrappersource <<"EOF" -+ newargz[1] = fnqualify(argv[0]); -+ /* 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; -+EOF -+ -+ cat >> $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 -+; -+} -+ -+char * -+basename (const char *name) -+{ -+ const char *base; -+ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ /* Skip over the disk name in MSDOS pathnames. */ -+ if (isalpha (name[0]) && name[1] == ':') -+ name += 2; -+#endif -+ -+ for (base = name; *name; name++) -+ if (IS_DIR_SEPARATOR (*name)) -+ base = name + 1; -+ return (char *) base; -+} -+ -+char * -+fnqualify(const char *path) -+{ -+ size_t size; -+ char *p; -+ char tmp[LT_PATHMAX + 1]; -+ -+ assert(path != NULL); -+ -+ /* Is it qualified already? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha (path[0]) && path[1] == ':') -+ return xstrdup (path); -+#endif -+ if (IS_DIR_SEPARATOR (path[0])) -+ return xstrdup (path); -+ -+ /* prepend the current directory */ -+ /* doesn't handle '~' */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ -+ p = XMALLOC(char, size); -+ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); -+ return p; -+} -+ -+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 -s -o $cwrapper $cwrappersource -+ ;; -+ esac - $rm $output -- trap "$rm $output; exit 1" 1 2 15 -+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ - #! $SHELL -@@ -3630,12 +4922,12 @@ - - # Sed substitution that helps us do robust quoting. It backslashifies - # metacharacters that are still active within double-quoted strings. --Xsed='sed -e 1s/^X//' -+Xsed='${SED} -e 1s/^X//' - sed_quote_subst='$sed_quote_subst' - - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - relink_command=\"$relink_command\" - -@@ -3668,7 +4960,7 @@ - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. -- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` -+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - -@@ -3681,7 +4973,7 @@ - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. -@@ -3690,12 +4982,12 @@ - " - - if test "$fast_install" = yes; then -- echo >> $output "\ -+ $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\`; \\ -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" -@@ -3706,7 +4998,7 @@ - $rm \"\$progdir/\$file\" - fi" - -- echo >> $output "\ -+ $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then -@@ -3714,7 +5006,7 @@ - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - -@@ -3724,13 +5016,13 @@ - $rm \"\$progdir/\$file\" - fi" - else -- echo >> $output "\ -+ $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" - " - fi - -- echo >> $output "\ -+ $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - -@@ -3761,47 +5053,35 @@ - # Run the actual program with our arguments. - " - case $host in -- # win32 systems need to use the prog path for dll -- # lookup to work -- *-*-cygwin* | *-*-pw32*) -- $echo >> $output "\ -- exec \$progdir/\$program \${1+\"\$@\"} --" -- ;; -- - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ -- exec \$progdir\\\\\$program \${1+\"\$@\"} -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} - " - ;; - - *) - $echo >> $output "\ -- # Export the path to the program. -- PATH=\"\$progdir:\$PATH\" -- export PATH -- -- exec \$program \${1+\"\$@\"} -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} - " - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" -- exit 1 -+ exit $EXIT_FAILURE - fi - else - # The program doesn't exist. -- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 -+ \$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 1 -+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit $EXIT_FAILURE - fi - fi\ - " - chmod +x $output - fi -- exit 0 -+ exit $EXIT_SUCCESS - ;; - esac - -@@ -3817,74 +5097,130 @@ - oldobjs="$libobjs_save" - build_libtool_libs=no - else -- oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` -+ oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "mkdir $gentop" -- $run mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- # Add in members from convenience archives. -- for xlib in $addlibs; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "mkdir $xdir" -- $run mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- -- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` -- done -+ 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 -- eval cmds=\"$old_archive_from_new_cmds\" -+ cmds=$old_archive_from_new_cmds - else -- # Ensure that we have .o objects in place in case we decided -- # not to build a shared library, and have fallen back to building -- # static libs even though --disable-static was passed! -- for oldobj in $oldobjs; do -- if test ! -f $oldobj; then -- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` -- if test "X$xdir" = "X$oldobj"; then -- xdir="." -- else -- xdir="$xdir" -+ # 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" -+ status=$? -+ if test "$status" -ne 0 && test ! -d "$gentop"; then -+ exit $status - fi -- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` -- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` -- $show "(cd $xdir && ${LN_S} $obj $baseobj)" -- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? - fi -- done -+ -+ 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 $? -@@ -3916,8 +5252,12 @@ - fi - done - # Quote the link command for shipping. -- relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ if test "$hardcode_automatic" = yes ; then -+ relink_command= -+ fi -+ - - # Only create the output if not a dry run. - if test -z "$run"; then -@@ -3933,10 +5273,10 @@ - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ 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 1 -+ exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; -@@ -3947,10 +5287,10 @@ - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ 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 1 -+ exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done -@@ -3958,20 +5298,39 @@ - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ 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 1 -+ 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) tdlname=../bin/$dlname ;; -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ - # $outputname - a libtool library file -@@ -4000,6 +5359,9 @@ - # 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' -@@ -4019,7 +5381,7 @@ - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - # libtool install mode -@@ -4030,11 +5392,11 @@ - # 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" | $Xsed | grep shtool > /dev/null; then -+ $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 -@@ -4043,14 +5405,14 @@ - shift - else - install_prog= -- arg="$nonopt" -+ 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 -@@ -4068,28 +5430,31 @@ - do - if test -n "$dest"; then - files="$files $dest" -- dest="$arg" -+ dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; -- -f) prev="-f" ;; -- -g) prev="-g" ;; -- -m) prev="-m" ;; -- -o) prev="-o" ;; -+ -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" -+ dest=$arg - continue - fi - ;; -@@ -4098,7 +5463,7 @@ - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac -@@ -4108,13 +5473,13 @@ - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -z "$files"; then -@@ -4124,7 +5489,7 @@ - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. -@@ -4145,7 +5510,7 @@ - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - case $destdir in -@@ -4157,7 +5522,7 @@ - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - done -@@ -4182,11 +5547,11 @@ - - *.la) - # Check to see that this really is a libtool archive. -- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ 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 1 -+ exit $EXIT_FAILURE - fi - - library_names= -@@ -4218,21 +5583,24 @@ - - 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\$%%"` -+ 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 1 -+ 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" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else -- relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"` -+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 -@@ -4240,7 +5608,7 @@ - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - -@@ -4264,23 +5632,36 @@ - - 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 && $rm $linkname && $LN_S $realname $linkname)" -- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" -+ $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" -- eval cmds=\"$postinstall_cmds\" -+ cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" -- $run eval "$cmd" || exit $? -+ $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 -@@ -4318,7 +5699,7 @@ - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - -@@ -4336,7 +5717,7 @@ - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - *) -@@ -4348,21 +5729,47 @@ - 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. -- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ 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 $file in -- */* | *\\*) . $file ;; -- *) . ./$file ;; -+ 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 \`$file'" 1>&2 -- exit 1 -+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 -+ exit $EXIT_FAILURE - fi - - finalize=yes -@@ -4384,10 +5791,15 @@ - 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 $file in -- */* | *\\*) . $file ;; -- *) . ./$file ;; -+ case $wrapper in -+ */* | *\\*) . ${wrapper} ;; -+ *) . ./${wrapper} ;; - esac - - outputname= -@@ -4395,17 +5807,17 @@ - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" -- tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` -- if test $? = 0 ; then : -- else -- tmpdir="$tmpdir/libtool-$$" -- fi -- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : -+ tmpdir="$tmpdir/libtool-$$" -+ save_umask=`umask` -+ umask 0077 -+ if $mkdir "$tmpdir"; then -+ umask $save_umask - else -+ umask $save_umask - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi -- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` -@@ -4423,14 +5835,14 @@ - fi - else - # Install the binary that we compiled earlier. -- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` -+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another -- # one anyways -+ # one anyway - case $install_prog,$host in -- /usr/bin/install*,*cygwin*) -+ */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok -@@ -4439,7 +5851,7 @@ - destfile=$destfile.exe - ;; - *:*.exe) -- destfile=`echo $destfile | sed -e 's,.exe$,,'` -+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; -@@ -4460,16 +5872,17 @@ - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - -- if test -n "$stripme" && test -n "$striplib"; then -+ 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. -- eval cmds=\"$old_postinstall_cmds\" -+ 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 -@@ -4483,9 +5896,9 @@ - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" -- exec_cmd='$SHELL $0 --finish$current_libdirs' -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else -- exit 0 -+ exit $EXIT_SUCCESS - fi - ;; - -@@ -4504,10 +5917,11 @@ - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. -- eval cmds=\"$finish_cmds\" -+ 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" -@@ -4524,43 +5938,43 @@ - fi - - # Exit here if they wanted silent mode. -- test "$show" = : && exit 0 -+ test "$show" = : && exit $EXIT_SUCCESS - -- echo "----------------------------------------------------------------------" -- echo "Libraries have been installed in:" -+ $echo "----------------------------------------------------------------------" -+ $echo "Libraries have been installed in:" - for libdir in $libdirs; do -- echo " $libdir" -+ $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:" -+ $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" -+ $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" -+ $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" -+ $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then -- echo " - have your system administrator run these commands:$admincmds" -+ $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'" -+ $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 "----------------------------------------------------------------------" -- exit 0 -+ $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 "----------------------------------------------------------------------" -+ exit $EXIT_SUCCESS - ;; - - # libtool execute mode -@@ -4572,7 +5986,7 @@ - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. -@@ -4580,18 +5994,18 @@ - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. -- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ 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 1 -+ exit $EXIT_FAILURE - fi - - # Read the libtool library. -@@ -4618,7 +6032,7 @@ - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - ;; - -@@ -4658,7 +6072,7 @@ - -*) ;; - *) - # Do a test to see if this is really a libtool program. -- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ 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 ;; -@@ -4681,7 +6095,7 @@ - eval "export $shlibpath_var" - fi - -- # Restore saved enviroment variables -+ # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi -@@ -4698,7 +6112,7 @@ - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" -- exit 0 -+ exit $EXIT_SUCCESS - fi - ;; - -@@ -4726,18 +6140,19 @@ - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ 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="$objdir" -+ objdir="$origobjdir" - else -- objdir="$dir/$objdir" -+ objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" -@@ -4767,7 +6182,7 @@ - case $name in - *.la) - # Possibly a libtool archive, so verify it. -- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. -@@ -4780,10 +6195,11 @@ - if test "$mode" = uninstall; then - if test -n "$library_names"; then - # Do each command in the postuninstall commands. -- eval cmds=\"$postuninstall_cmds\" -+ 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 -@@ -4795,10 +6211,11 @@ - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. -- eval cmds=\"$old_postuninstall_cmds\" -+ 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 -@@ -4813,22 +6230,52 @@ - ;; - - *.lo) -- if test "$build_old_libs" = yes; then -- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` -- rmfiles="$rmfiles $dir/$oldobj" -+ # 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 - ;; - - *) -- # Do a test to see if this is a libtool program. -- if test "$mode" = clean && -- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -- relink_command= -- . $dir/$file -+ 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 - -- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" -- if test "$fast_install" = yes && test -n "$relink_command"; then -- rmfiles="$rmfiles $objdir/lt-$name" -+ # 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 - ;; -@@ -4836,6 +6283,7 @@ - $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 -@@ -4851,20 +6299,20 @@ - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi # test -z "$show_help" - - if test -n "$exec_cmd"; then - eval exec $exec_cmd -- exit 1 -+ exit $EXIT_FAILURE - fi - - # We need to display help for each of the modes. -@@ -4883,6 +6331,7 @@ - --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: -@@ -4896,8 +6345,10 @@ - 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." -- exit 0 -+a more detailed description of MODE. -+ -+Report bugs to ." -+ exit $EXIT_SUCCESS - ;; - - clean) -@@ -5008,6 +6459,9 @@ - -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 -@@ -5049,14 +6503,34 @@ - *) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - --echo -+$echo - $echo "Try \`$modename --help' for more information about other modes." - --exit 0 -+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 -+build_libtool_libs=no -+build_old_libs=yes -+# ### END LIBTOOL TAG CONFIG: disable-shared -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static -+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -+# ### END LIBTOOL TAG CONFIG: disable-static - - # Local Variables: - # mode:shell-script ---- gsmlib-1.10.orig/doc/gsmsmsstore.man -+++ gsmlib-1.10/doc/gsmsmsstore.man -@@ -15,36 +15,36 @@ - gsmsmsstore \- SMS store manipulation program - .SH SYNOPSIS - .B gsmsmsstore --[ \fB-a\fP ] --[ \fB--add\fP ] --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP ] --[ \fB--copy\fP ] --[ \fB-C\fP \fIservice centre address\fP ] --[ \fB--sca\fP \fIservice centre address\fP ] --[ \fB-d\fP \fIdestination device or file\fP ] --[ \fB--destination\fP \fIdestination device or file\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-k\fP ] --[ \fB--backup\fP ] --[ \fB-l\fP ] --[ \fB--list\fP ] --[ \fB-s\fP \fIsource device or file\fP ] --[ \fB--source\fP \fIsource device or file\fP ] --[ \fB-t\fP \fISMS store name\fP ] --[ \fB--store\fP \fISMS store name\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-V\fP ] --[ \fB--verbose\fP ] --[ \fB-x\fP ] --[ \fB--delete\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] -+[ \fB\-a\fP ] -+[ \fB\-\-add\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP ] -+[ \fB\-\-copy\fP ] -+[ \fB\-C\fP \fIservice centre address\fP ] -+[ \fB\-\-sca\fP \fIservice centre address\fP ] -+[ \fB\-d\fP \fIdestination device or file\fP ] -+[ \fB\-\-destination\fP \fIdestination device or file\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-k\fP ] -+[ \fB\-\-backup\fP ] -+[ \fB\-l\fP ] -+[ \fB\-\-list\fP ] -+[ \fB\-s\fP \fIsource device or file\fP ] -+[ \fB\-\-source\fP \fIsource device or file\fP ] -+[ \fB\-t\fP \fISMS store name\fP ] -+[ \fB\-\-store\fP \fISMS store name\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-V\fP ] -+[ \fB\-\-verbose\fP ] -+[ \fB\-x\fP ] -+[ \fB\-\-delete\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] - { \fIindices\fP } - [ \fIphonenumber\fP \fItext\fP ] - .PP -@@ -57,19 +57,19 @@ - \fIgsmsmsstore\fP reads entries from the source which can be a mobile - phone (if a serial device file is given) or a file (if a file name is - given). The source is never modified. \fIgsmsmsstore\fP writes SMS --messages to a destination file or device in the case of \fB--copy\fP, --\fB--backup\fP, and \fB--add\fP. -+messages to a destination file or device in the case of \fB\-\-copy\fP, -+\fB\-\-backup\fP, and \fB\-\-add\fP. - .PP --The \fB--list\fP option does not change any file but just lists the -+The \fB\-\-list\fP option does not change any file but just lists the - contents to standard output. - .PP --The \fB--backup\fP and \fB--copy\fP options require both source and --destination files or devices. The \fB--list\fP option requires a --source. The \fB--add\fP and \fB--delete\fP options require a -+The \fB\-\-backup\fP and \fB\-\-copy\fP options require both source and -+destination files or devices. The \fB\-\-list\fP option requires a -+source. The \fB\-\-add\fP and \fB\-\-delete\fP options require a - destination file or device. - .PP --If "-" is given as the parameter for the \fB--source\fP or --\fB--destination\fP options, the SMS store is read from standard input -+If "\-" is given as the parameter for the \fB\-\-source\fP or -+\fB\-\-destination\fP options, the SMS store is read from standard input - and/or written to standard output, respectively. - .PP - SMS message files are not human-readable. -@@ -79,61 +79,61 @@ - .PP - .SH OPTIONS - .TP --\fB-a\fP, \fB--add\fP -+\fB\-a\fP, \fB\-\-add\fP - Adds an SMS submit message with recipient address \fIphonenumber\fP and - text \fItext\fP to the destination. - .TP --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. The default baudrate is 38400. - .TP --\fB-c\fP, \fB--copy\fP -+\fB\-c\fP, \fB\-\-copy\fP - This causes the contents of the source to be copied to the - destination. After this operation the destination has exactly the same - contents as the source. If \fIindices\fP are given on the command - line only those SMS messages denoted by the indices are copied to the - destination. - .TP --\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP -+\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP - Sets the service centre address to use for all SUBMIT SMSs (may not - work with some phones). - .TP --\fB-d\fP \fIdestination\fP, \fB--destination\fP \fIdestination\fP -+\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP - The destination device or file. - .TP --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP --\fB-k\fP, \fB--backup\fP -+\fB\-k\fP, \fB\-\-backup\fP - This causes those entries to be added from the source to the - destination that are not already present in the destination. If - \fIindices\fP are given on the command line only those SMS messages - denoted by the indices are backed up (ie. added) to the destination. - .TP --\fB-l\fP, \fB--list\fP -+\fB\-l\fP, \fB\-\-list\fP - Prints out the entire contents of the source in human-readable form. - .TP --\fB-s\fP \fIsource\fP, \fB--source\fP \fIsource\fP -+\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP - The source device or file. - .TP --\fB-t\fP \fISMS store name\fP, \fB--store\fP \fISMS store name\fP -+\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP - The name of the SMS store to read from or write to. This information is - only used for device sources and destinations. A commonly available message - store is "SM" (SIM card). - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP --\fB-V\fP, \fB--verbose\fP -+\fB\-V\fP, \fB\-\-verbose\fP - Prints out a detailed progress report. - .TP --\fB-x\fP, \fB--delete\fP -+\fB\-x\fP, \fB\-\-delete\fP - Delete the SMS messages as denoted by the \fIindices\fP from the destination. - .TP --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .PP - .SH EXAMPLES -@@ -141,15 +141,15 @@ - to \fI/dev/mobilephone\fP to the standard output: - .PP - .nf --gsmsmsstore -b 19200 -s /dev/mobilephone -t SM -l -+gsmsmsstore \-b 19200 \-s /dev/mobilephone \-t SM \-l - .fi - .PP - The following adds entries 4, 7, and 10 from the device - \fI/dev/mobilephone\fP to the file \fIsmsstore\fP: - .PP - .nf --gsmsmsstore -s /dev/mobilephone -d /home/fred/smsstore -- -t SM -b 4 7 10 -+gsmsmsstore \-s /dev/mobilephone \-d /home/fred/smsstore -+ \-t SM \-b 4 7 10 - .fi - .PP - .SH AUTHOR ---- gsmlib-1.10.orig/doc/gsmsmsd.man -+++ gsmlib-1.10/doc/gsmsmsd.man -@@ -17,34 +17,34 @@ - .PP - .SH SYNOPSIS - .B gsmsmsd --[ \fB-a\fP \fIaction\fP ] --[ \fB--action\fP \fIaction\fP ] --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP \fIconcatenatedID\fP ] --[ \fB--concatenate\fP \fIconcatenatedID\fP ] --[ \fB-C\fP \fIservice centre address\fP ] --[ \fB--sca\fP \fIservice centre address\fP ] --[ \fB-d\fP \fIdevice\fP ] --[ \fB--device\fP \fIdevice\fP ] --[ \fB-D\fP ] --[ \fB--direct\fP ] --[ \fB-f\fP ] --[ \fB--flush\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-r\fP ] --[ \fB--requeststat\fP ] --[ \fB-s\fP \fIspool directory\fP ] --[ \fB--spool\fP \fIspool directory\fP ] --[ \fB-t\fP \fISMS store name\fP ] --[ \fB--store\fP \fISMS store name\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] -+[ \fB\-a\fP \fIaction\fP ] -+[ \fB\-\-action\fP \fIaction\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP \fIconcatenatedID\fP ] -+[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] -+[ \fB\-C\fP \fIservice centre address\fP ] -+[ \fB\-\-sca\fP \fIservice centre address\fP ] -+[ \fB\-d\fP \fIdevice\fP ] -+[ \fB\-\-device\fP \fIdevice\fP ] -+[ \fB\-D\fP ] -+[ \fB\-\-direct\fP ] -+[ \fB\-f\fP ] -+[ \fB\-\-flush\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-r\fP ] -+[ \fB\-\-requeststat\fP ] -+[ \fB\-s\fP \fIspool directory\fP ] -+[ \fB\-\-spool\fP \fIspool directory\fP ] -+[ \fB\-t\fP \fISMS store name\fP ] -+[ \fB\-\-store\fP \fISMS store name\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] - { \fIsms_type\fP } - .PP - .SH DESCRIPTION -@@ -65,10 +65,10 @@ - \fIgsmsmsd\fP needs one empty storage slot for SMS messages in the - mobile phone, otherwise SMS reception will not work. The SMS store to - use for temporary storage of incoming SMS can be selected using the --\fB--store\fP option, otherwise the ME default store is used. -+\fB\-\-store\fP option, otherwise the ME default store is used. - .PP - To terminate \fIgsmsmsd\fP cleanly (without losing SMS messages) one --should send either SIGINT (CTRL-C on the command line) or SIGTERM to -+should send either SIGINT (CTRL\-C on the command line) or SIGTERM to - the process. - .PP - Error messages are printed to the standard error output. If the program -@@ -89,14 +89,14 @@ - .PP - .SH OPTIONS - .TP --\fB-a\fP \fIaction\fP, \fB--action\fP \fIaction\fP -+\fB\-a\fP \fIaction\fP, \fB\-\-action\fP \fIaction\fP - The action to execute for each incoming SMS message. If no action - is given the SMS is written to the standard output. - .TP --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. - .TP --\fB-c\fP \fIconcatenatedID\fP, \fB--concatenate\fP \fIconcatenatedID\fP -+\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP - If an ID is given, large SMSs are split into several, concatenated - SMSs. All SMSs have the same ID and are numbered consecutively so that - the receiving phone can assemble them in the correct order. IDs must -@@ -108,43 +108,43 @@ - carried in the user data header element at the beginning of the SMS - user data. This information may show up as garbage in such phones. - .TP --\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP -+\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP - Sets the service centre address to use for all SUBMIT SMSs (may not - work with some phones). - .TP --\fB-d\fP \fIdevice\fP, \fB--device\fP \fIdevice\fP -+\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP - The device to which the GSM modem is connected. The default is - \fI/dev/mobilephone\fP. - .TP --\fB-D\fP, \fB--direct\fP -+\fB\-D\fP, \fB\-\-direct\fP - Enables direct routing of incoming SMS messages to the TE. This is not - supported by many mobile phone/GSM modem combinations. Therefore, the - default is to store incoming SMS temporarily before processing them in - the indicated store. - .TP --\fB-f\fP, \fB--flush\fP -+\fB\-f\fP, \fB\-\-flush\fP - This option causes \fIgsmsmsd\fP to flush (ie. read and erase) - existing SMS messages from --the SMS store selected by the \fB--store\fP option. The action given --by the \fB--action\fP option is executed on each of the flushed -+the SMS store selected by the \fB\-\-store\fP option. The action given -+by the \fB\-\-action\fP option is executed on each of the flushed - SMS. This option should be used to ensure that enough space is - available in the SMS store for temporary storage of incoming SMS, - otherwise incoming SMS might be ignored silently by the ME. - .TP --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP --\fB-r\fP, \fB--requeststat\fP -+\fB\-r\fP, \fB\-\-requeststat\fP - Request status reports for sent SMS. Note: This option only makes - sense if the phone supports routing of status reports to the - TE. Otherwise the status reports might show on the phone's display or - get lost. - .TP --\fB-s\fP \fIspool directory\fP, \fB--spool\fP \fIspool directory\fP -+\fB\-s\fP \fIspool directory\fP, \fB\-\-spool\fP \fIspool directory\fP - This option sets the spool directory where \fIgsmsmsd\fP expects SMS - messages to send. The format of SMS files is very simple: The first - line contains the phone number of the recipient. Everything else after -@@ -154,18 +154,18 @@ - \fIgsmsmsd\fP polls the spool directory every 5 seconds. Sent - SMS message files are removed. - .TP --\fB-t\fP \fISMS store name\fP, \fB--store\fP \fISMS store name\fP --The name of the SMS store to read from (for the \fB--flush\fP option) -+\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP -+The name of the SMS store to read from (for the \fB\-\-flush\fP option) - or write to (for temporary SMS storage). This option must --be must be used in conjunction with the \fB--flush\fP option. If this -+be must be used in conjunction with the \fB\-\-flush\fP option. If this - option is omitted the ME uses it's default SMS store for temporary - storage of incoming SMS. A commonly available message - store is "SM" (SIM card). - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .PP - .SH EXAMPLES -@@ -173,14 +173,14 @@ - as a mail to the user "smsadmin": - .PP - .nf --gsmsmsd -d /dev/ttyS2 -b 19200 -a "mail smsadmin" -+gsmsmsd \-d /dev/ttyS2 \-b 19200 \-a "mail smsadmin" - .fi - .PP - This is the format of SMS deliver messages as output from \fIgsmsmsd\fP: - .PP - .nf - ---------------------------------------------------------------- --Message type: SMS-DELIVER -+Message type: SMS\-DELIVER - SC address: '491710762100' - More messages to send: 1 - Reply path: 0 -@@ -202,7 +202,7 @@ - .PP - .nf - ---------------------------------------------------------------- --Message type: SMS-STATUS-REPORT -+Message type: SMS\-STATUS\-REPORT - SC address: '' - More messages to send: 0 - Status report qualifier: 0 -@@ -219,8 +219,8 @@ - directory for SMS to send: - .PP - .nf --gsmsmsd -d /dev/ttyS2 --spool /tmp/spooldir -f --store sm \\ ----action 'mail smsadmin' -+gsmsmsd \-d /dev/ttyS2 \-\-spool /tmp/spooldir \-f \-\-store sm \\ -+\-\-action 'mail smsadmin' - .fi - .PP - .SH FILES ---- gsmlib-1.10.orig/doc/gsmctl.man -+++ gsmlib-1.10/doc/gsmctl.man -@@ -1,6 +1,6 @@ - .TH GSMCTL 8 "##DATE##" "gsmctl v##VERSION##" - .SH NAME --gsmctl \- GSM mobile phone control program -+gsmctl, gsmsiectl \- GSM mobile phone control program - .SH SYNOPSIS - .B gsmctl - .RB [\| \-b -@@ -25,6 +25,30 @@ - .RB | \ \-\-operation - .IR operation \ | - .I parameters -+.PP -+.B gsmsiectl -+.RB [\| \-b -+.IR baudrate \|] -+.RB [\| \-\-baudrate -+.IR baudrate\| ] -+.RB [ \|\-d -+.IR device\| ] -+.RB [ \|\-\-device -+.IR device\fP ] -+.RB [ \|\-h\| ] -+.RB [ \|\-\-help\| ] -+.RB [ \|\-I -+.IR "init string" \|] -+.RB [ \|\-\-init -+.IR "init string" \|] -+.RB [ \|\-v\| ] -+.RB [ \|\-\-version\| ] -+.RB [ \|\-X\| ] -+.RB [ \|\-\-xonxoff\| ] -+.BI \-o \ operation -+.RB | \ \-\-operation -+.IR operation \ | -+.I parameters - .SH DESCRIPTION - .B gsmctl - can request information from or perform operations on an GSM mobile -@@ -38,7 +62,7 @@ - If no - .I device - is given, the device --.I/dev/mobilephone -+.I /dev/mobilephone - is used. If no - .I baudrate - is given, a default baud rate of 38400 is used. -@@ -61,6 +85,12 @@ - .B OPERATIONS - for more details. - .PP -+.B gsmsiectl -+is the same program with some extension for Siemens mobile phones. -+Some extra -+.B OPERATIONS -+are available in this case. -+.PP - Error messages are printed to the standard error output. If the - program terminates on error the error code 1 is returned. - .SH OPTIONS -@@ -252,14 +282,14 @@ - .I SIM PUK - ME is waiting SIM PUK to be given. - .TP --.I PH-SIM PIN --ME is waiting phone-to-SIM card password to be given. -+.I PH\-SIM PIN -+ME is waiting phone/-to/-SIM card password to be given. - .TP --.I PH-FSIM PIN --ME is waiting phone-to-very first SIM card password to be given. -+.I PH/-FSIM PIN -+ME is waiting phone/-to/-very first SIM card password to be given. - .TP --.I PH-FSIM PUK --ME is waiting phone-to-very first SIM card unblocking password to be -+.I PH/-FSIM PUK -+ME is waiting phone/-to/-very first SIM card unblocking password to be - given. - .TP - .I SIM PIN2 -@@ -268,13 +298,13 @@ - .I SIM PUK2 - ME is waiting SIM PUK2 to be given. - .TP --.I PH-NET PIN -+.I PH/-NET PIN - ME is waiting network personalisation password to be given. - .TP --.I PH-NET PUK -+.I PH/-NET PUK - ME is waiting network personalisation unblocking password to be given. - .TP --.I PH-NETSUB PIN -+.I PH/-NETSUB PIN - ME is waiting network subset personalisation password to be given. - .RE - .TP 7 -@@ -458,6 +488,33 @@ - This is the reverse operation to \fBlock\fP. See above for a - description of the parameters. - .RE -+.PP -+.B Extra operators for gsmsiectl: -+.PP -+.B cset -+.RS -+Charset info. -+.RE -+.PP -+.B pbook -+.RS -+Phone book info. -+.RE -+.PP -+.B signal -+.RS -+Signal tone info. -+.RE -+.PP -+.B ring -+.RS -+Ringing tone info. -+.RE -+.PP -+.B binary -+.RS -+Binary info. -+.RE - .SH EXAMPLES - The following invocation of - .I gsmctl -@@ -482,11 +539,11 @@ - .HP - Serial Number: 448058511817585 - .HP -- Status: available Long name: 'D1-TELEKOM' Short name: '' Numeric name: 26201 -+ Status: available Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 - .HP - Status: forbidden Long name: 'D2 PRIVAT' Short name: '' Numeric name: 26202 - .HP -- Long name: 'D1-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic -+ Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic - .HP - 'CS' - .HP ---- gsmlib-1.10.orig/doc/gsmsendsms.man -+++ gsmlib-1.10/doc/gsmsendsms.man -@@ -17,26 +17,26 @@ - .PP - .SH SYNOPSIS - .B gsmsendsms --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP \fIconcatenatedID\fP ] --[ \fB--concatenate\fP \fIconcatenatedID\fP ] --[ \fB-C\fP \fIservice centre address\fP ] --[ \fB--sca\fP \fIservice centre address\fP ] --[ \fB-d\fP \fIdevice\fP ] --[ \fB--device\fP \fIdevice\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-r\fP ] --[ \fB--requeststat\fP ] --[ \fB-t\fP ] --[ \fB--test\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP \fIconcatenatedID\fP ] -+[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] -+[ \fB\-C\fP \fIservice centre address\fP ] -+[ \fB\-\-sca\fP \fIservice centre address\fP ] -+[ \fB\-d\fP \fIdevice\fP ] -+[ \fB\-\-device\fP \fIdevice\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-r\fP ] -+[ \fB\-\-requeststat\fP ] -+[ \fB\-t\fP ] -+[ \fB\-\-test\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] - \fIphonenumber\fP - [ \fItext\fP ] - .PP -@@ -51,7 +51,7 @@ - \fIgsmsendsms\fP accepts a phone number (recipient address) and the - short message text as parameters. The text may have a maximum length - of 160 characters which is the maximum SMS message length. The GSM --default alphabet is used for encoding. ASCII and Latin-1 characters -+default alphabet is used for encoding. ASCII and Latin\-1 characters - that can not be encoded using the GSM default alphabet are converted - to the GSM delta character (GSM code 16). - .PP -@@ -60,10 +60,10 @@ - .PP - .SH OPTIONS - .TP --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. - .TP --\fB-c\fP \fIconcatenatedID\fP, \fB--concatenate\fP \fIconcatenatedID\fP -+\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP - If an ID is given, large SMSs are split into several, concatenated - SMSs. All SMSs have the same ID and are numbered consecutively so that - the receiving phone can assemble them in the correct order. IDs must -@@ -73,37 +73,37 @@ - carried in the user data header element at the beginning of the SMS - user data. This information may show up as garbage in such phones. - .TP --\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP -+\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP - Sets the service centre address to use for all SUBMIT SMSs (may not - work with some phones). - .TP --\fB-d\fP \fIdevice\fP, \fB--device\fP \fIdevice\fP -+\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP - The device to which the GSM modem is connected. The default is - \fI/dev/mobilephone\fP. - .TP --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP --\fB-r\fP, \fB--requeststat\fP -+\fB\-r\fP, \fB\-\-requeststat\fP - Request status reports for sent SMS. - .TP --\fB-t\fP, \fB--test\fP -+\fB\-t\fP, \fB\-\-test\fP - If this option is given the text is converted --to the GSM default alphabet and back to Latin-1. This option can be --used to find out how ASCII or Latin-1 texts are converted to the GSM -+to the GSM default alphabet and back to Latin\-1. This option can be -+used to find out how ASCII or Latin\-1 texts are converted to the GSM - default alphabet. Characters that can not be converted to the GSM default --alphabet are reported as ASCII code 172 (Latin-1 boolean "not") -+alphabet are reported as ASCII code 172 (Latin\-1 boolean "not") - after this double conversion. No SMS messages are sent, a connection - to a mobile phone is not established. - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .PP - .SH EXAMPLES -@@ -111,8 +111,8 @@ - SMS message to the number "1234": - .PP - .nf --gsmsendsms -d /dev/ttyS2 -b 19200 1234 "This is a test." --echo "This is a test." | gsmsendsms -d /dev/ttyS2 -b 19200 1234 -+gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 "This is a test." -+echo "This is a test." | gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 - .fi - .PP - .SH FILES ---- gsmlib-1.10.orig/doc/gsmpb.man -+++ gsmlib-1.10/doc/gsmpb.man -@@ -15,32 +15,32 @@ - gsmpb \- GSM mobile phone phonebook manipulation program - .SH SYNOPSIS - .B gsmpb --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP ] --[ \fB--copy\fP ] --[ \fB-d\fP \fIdestination device or file\fP ] --[ \fB--destination\fP \fIdestination device or file\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-i\fP ] --[ \fB--index\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-p\fP \fIphonebook name\fP ] --[ \fB--phonebook\fP \fIphonebook name\fP ] --[ \fB-s\fP \fIsource device or file\fP ] --[ \fB--source\fP \fIsource device or file\fP ] --[ \fB-t\fP \fIcharacter set\fP ] --[ \fB--charset\fP \fIcharacter set\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-V\fP ] --[ \fB--verbose\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] --[ \fB-y\fP ] --[ \fB--synchronize\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP ] -+[ \fB\-\-copy\fP ] -+[ \fB\-d\fP \fIdestination device or file\fP ] -+[ \fB\-\-destination\fP \fIdestination device or file\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-i\fP ] -+[ \fB\-\-index\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-p\fP \fIphonebook name\fP ] -+[ \fB\-\-phonebook\fP \fIphonebook name\fP ] -+[ \fB\-s\fP \fIsource device or file\fP ] -+[ \fB\-\-source\fP \fIsource device or file\fP ] -+[ \fB\-t\fP \fIcharacter set\fP ] -+[ \fB\-\-charset\fP \fIcharacter set\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-V\fP ] -+[ \fB\-\-verbose\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] -+[ \fB\-y\fP ] -+[ \fB\-\-synchronize\fP ] - .PP - .SH DESCRIPTION - \fIgsmpb\fP can store or retrieve phonebook entries residing in a GSM -@@ -55,45 +55,45 @@ - destination, or the destination is synchronized with regard to the - source which is the default (details see below). - .PP --If "-" is given as the parameter for the \fB--source\fP or --\fB--destination\fP options, the phonebook is read from standard input -+If "\-" is given as the parameter for the \fB\-\-source\fP or -+\fB\-\-destination\fP options, the phonebook is read from standard input - and/or written to standard output, respectively. - .PP - Phonebook entries names are encoded using the GSM default alphabet in --the mobile phone, whereas they are stored using the Latin-1 encoding -+the mobile phone, whereas they are stored using the Latin\-1 encoding - in phonebook files. When reading phonebook entries from a mobile phone --entry names are converted from the GSM default to Latin-1. Characters --that can not be converted to Latin-1 are encoded as character code --172 (Latin-1 boolean "not"). When writing file-based phonebook entries -+entry names are converted from the GSM default to Latin\-1. Characters -+that can not be converted to Latin\-1 are encoded as character code -+172 (Latin\-1 boolean "not"). When writing file-based phonebook entries - to a mobile phone a conversion to the GSM default alphabet takes - place. Characters that can not be converted are encoded as GSM delta - (code 16). If the default character set has been changed using the --\fB--charset\fP option no conversion takes place. -+\fB\-\-charset\fP option no conversion takes place. - .PP - Error messages are printed to the standard error output. If the program - terminates on error the error code 1 is returned. - .PP - .SH OPTIONS - .TP .7i --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. The default baudrate is 38400. - .TP .7i --\fB-c\fP, \fB--copy\fP -+\fB\-c\fP, \fB\-\-copy\fP - This causes the contents of the source to be copied to the - destination. After this operation the destination has exactly the same - contents as the source. - .TP .7i --\fB-d\fP \fIdestination\fP, \fB--destination\fP \fIdestination\fP -+\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP - The destination device or file. - .TP .7i --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP .7i --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP .7i --\fB-i\fP, \fB--index\fP -+\fB\-i\fP, \fB\-\-index\fP - If the index position is given, \fIgsmpb\fP preserves the assignment - of entries to memory slots in the mobile phone's phonebook. This can - be used to backup phonebook entries with their position into a -@@ -104,7 +104,7 @@ - be unique, ie. it is not allowed to assign one entry twice to a - specific position in the mobile phone's phonebook. - .TP .7i --\fB-p\fP \fIphonebook\fP, \fB--phonebook\fP \fIphonebook\fP -+\fB\-p\fP \fIphonebook\fP, \fB\-\-phonebook\fP \fIphonebook\fP - The name of the phonebook to read from or write to. This is only used - for device sources and destinations. Commonly available phonebooks - are: -@@ -112,10 +112,10 @@ - .po +0.7i - .ll 5.8i - \fIFD\fP --SIM fixdialling-phonebook -+SIM fixdialling\-phonebook - .TP .3i - \fILD\fP --SIM last-dialling-phonebook -+SIM last\-dialling\-phonebook - .TP .3i - \fIME\fP - ME phonebook -@@ -131,23 +131,23 @@ - .TP .7i - .po -0.7i - .ll 6.5i --\fB-s\fP \fIsource\fP, \fB--source\fP \fIsource\fP -+\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP - The source device or file. - .TP --\fB-t\fP \fIcharacter set\fP, \fB--charset\fP \fIcharacter set\fP -+\fB\-t\fP \fIcharacter set\fP, \fB\-\-charset\fP \fIcharacter set\fP - Set the character set to use for phonebook operations (default is the - GSM default alphabet). - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP .7i --\fB-V\fP, \fB--verbose\fP -+\fB\-V\fP, \fB\-\-verbose\fP - Prints out a detailed progress report. - .TP .7i --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .TP .7i --\fB-y\fP, \fB--synchronize\fP -+\fB\-y\fP, \fB\-\-synchronize\fP - This causes the contents of the source to be synchronized with the - destination (default). Synchronization in this context means: - .TP .2i -@@ -188,7 +188,7 @@ - \fIindex\fP - The index of the entry which must be a positive number. The index may - also be empty. Indices can be used in conjunction with the --\fB--index\fP option to store the entry into a specific position in -+\fB\-\-index\fP option to store the entry into a specific position in - the mobile phone. - .TP .7i - \fItext\fP -@@ -199,7 +199,7 @@ - encoded using the GSM default alphabet (see comments above). - .TP .7i - \fIphone number\fP --Phone numbers can only contains the digits 0-9 and the '+' sign. A '+' -+Phone numbers can only contains the digits 0\-9 and the '+' sign. A '+' - sign denotes an international number. - .PP - .SH EXAMPLES -@@ -207,8 +207,8 @@ - SIM phonebook with the file $HOME/.phonebook: - .PP - .nf --gsmpb --synchronize -b 19200 -d /dev/mobilephone \\ -- -s $HOME/.phonebook -p "SM" -+gsmpb \-\-synchronize \-b 19200 \-d /dev/mobilephone \\ -+ \-s $HOME/.phonebook \-p "SM" - .fi - .PP - .SH AUTHOR ---- gsmlib-1.10.orig/debian/compat -+++ gsmlib-1.10/debian/compat -@@ -0,0 +1 @@ -+4 ---- gsmlib-1.10.orig/debian/gsm-utils.cron.d -+++ gsmlib-1.10/debian/gsm-utils.cron.d -@@ -0,0 +1,3 @@ -+# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils -+ -+*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi ---- gsmlib-1.10.orig/debian/copyright -+++ gsmlib-1.10/debian/copyright -@@ -0,0 +1,34 @@ -+This package was debianized by Mikael Hedin on -+Thu, 14 Dec 2000 01:06:40 +0100. -+ -+It was downloaded from http://www.pxh.de/fs/gsmlib/index.html -+ -+Upstream Author: Peter Hofmann -+ -+ext/gsmsiexfer.cc:// * Author: Christian W. Zuckschwerdt -+ -+Copyright: -+ -+ Copyright (C) 1999-2002 Peter Hofmann -+ -+License: -+ -+ This package is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This package 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this package; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+On Debian systems, the complete text of the GNU Lesser General -+Public License can be found in `/usr/share/common-licenses/LGPL'. -+ -+The Debian packaging is (C) 2000, Mikael Hedin and -+is licensed under the GPL, see `/usr/share/common-licenses/GPL'. ---- gsmlib-1.10.orig/debian/gsm-utils.dirs -+++ gsmlib-1.10/debian/gsm-utils.dirs -@@ -0,0 +1,11 @@ -+var/spool/sms/queue1 -+var/spool/sms/queue2 -+var/spool/sms/queue3 -+var/spool/sms/sent1 -+var/spool/sms/sent2 -+var/spool/sms/sent3 -+var/spool/sms/failed1 -+var/spool/sms/failed2 -+var/spool/sms/failed3 -+var/spool/sms/tmp -+var/run/gsm-utils ---- gsmlib-1.10.orig/debian/gsm-utils.default -+++ gsmlib-1.10/debian/gsm-utils.default -@@ -0,0 +1,18 @@ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+ -+# RUNGSMSMS: If set to anything other that 'yes', the asterisk init.d script -+# will not run. The default is 'yes'. -+# You should probaly also install the crontab from /usr/share/doc/gsm-utils/examples -+RUNGSMSMS=no -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+ -+SMSADMIN=root -+SUBJECT="SMS delivery report:" -+ -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+ -+do_accounting () { true; } # it's your turn ---- gsmlib-1.10.orig/debian/watch -+++ gsmlib-1.10/debian/watch -@@ -0,0 +1,2 @@ -+version=2 -+http://www.pxh.de/fs/gsmlib/download/content.html gsmlib-(.*)\.tar\.gz ---- gsmlib-1.10.orig/debian/gsm-utils.postinst -+++ gsmlib-1.10/debian/gsm-utils.postinst -@@ -0,0 +1,28 @@ -+#!/bin/sh -e -+ -+# create gsmsms group if necessary. -+if ! grep -q ^gsmsms: /etc/group; then -+# echo Adding system group: gsmsms. -+ addgroup --system gsmsms -+fi -+ -+# create gsmsms user if necessary. -+if ! grep -q ^gsmsms: /etc/passwd; then -+# echo Adding system user: gsmsms. -+ adduser --system --ingroup gsmsms \ -+ --no-create-home --home /var/spool/sms gsmsms -+fi -+ -+# allow gsmsms to use serial lines -+if ! groups gsmsms | grep -q dialout ; then -+ adduser gsmsms dialout -+fi -+ -+# echo Updating spool directory structure: /var/spool/sms -+chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils -+chmod 700 /var/spool/sms/* -+chmod 750 /var/spool/sms -+chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp -+ -+# Add the rest automatically.. -+#DEBHELPER# ---- gsmlib-1.10.orig/debian/control -+++ gsmlib-1.10/debian/control -@@ -0,0 +1,45 @@ -+Source: gsmlib -+Section: comm -+Priority: extra -+Maintainer: Mark Purcell -+Build-Depends: debhelper (>= 3.0.0), chrpath -+Standards-Version: 3.7.3 -+Homepage: http://www.pxh.de/fs/gsmlib/ -+ -+Package: libgsmme-dev -+Section: libdevel -+Architecture: any -+Depends: libgsmme1c2a (= ${binary:Version}), libc6-dev -+Description: Header files and static libraries for gsmlib -+ Headers and static libraries for use when compiling programs with -+ gsmlib. -+ . -+ gsmlib is a library for access to a GSM mobile phone using the -+ standards ETSI GSM 07.07, ETSI GSM 07.05, and others. -+ -+Package: libgsmme1c2a -+Conflicts: libgsmme1, libgsmme1c102, libgsmme1c2 -+Replaces: libgsmme1c102, libgsmme1c2 -+Section: libs -+Architecture: any -+Depends: ${shlibs:Depends} -+Description: GSM mobile phone access library -+ Library to access GSM mobile phones through GSM modems or IrDA devices. -+ Features include: -+ . -+ * modification of phone books stored in the mobile phone or on the -+ SIM card -+ * reading and writing of SMS messages stored in the mobile phone -+ * sending and reception of SMS messages -+ . -+ gsmlib uses standard ETSI GSM 07.07, ETSI GSM 07.05, and others. -+ -+Package: gsm-utils -+Section: comm -+Architecture: any -+Depends: ${shlibs:Depends}, adduser -+Description: GSM mobile phone access applications -+ Some simple command line programs to access a GSM mobile phone via -+ GSM modem or IrDA. Functions include: modification of phone books and -+ reading, writing, sending and receiving SMS messages. Uses the GSM -+ standards ETSI GSM 07.07, ETSI GSM 07.05, and others. ---- gsmlib-1.10.orig/debian/gsm-utils.postrm -+++ gsmlib-1.10/debian/gsm-utils.postrm -@@ -0,0 +1,43 @@ -+#!/bin/sh -+# postrm script for #PACKAGE# -+# -+# see: dh_installdeb(1) -+ -+set -e -+ -+# summary of how this script can be called: -+# * `remove' -+# * `purge' -+# * `upgrade' -+# * `failed-upgrade' -+# * `abort-install' -+# * `abort-install' -+# * `abort-upgrade' -+# * `disappear' -+# -+# for details, see http://www.debian.org/doc/debian-policy/ or -+# the debian-policy package -+ -+ -+case "$1" in -+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) -+ ;; -+ -+ purge) -+ deluser gsmsms -+ ;; -+ -+ *) -+ echo "postrm called with unknown argument \`$1'" >&2 -+ exit 1 -+ ;; -+esac -+ -+# dh_installdeb will replace this with shell code automatically -+# generated by other debhelper scripts. -+ -+#DEBHELPER# -+ -+exit 0 -+ -+ ---- gsmlib-1.10.orig/debian/gsmsiexfer.1 -+++ gsmlib-1.10/debian/gsmsiexfer.1 -@@ -0,0 +1,29 @@ -+.\" -*- eval: (nroff-mode) -*- -+.de TQ -+.br -+.ns -+.TP \\$1 -+.. -+.\" Like TP, but if specified indent is more than half -+.\" the current line-length - indent, use the default indent. -+.de Tp -+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -+.el .TP "\\$1" -+.. -+.TH GSMSIEXFER 1 "" "gsmsiexfer" -+.SH NAME -+gsmsiexfer \- Siemens ME file transfer program for Siemens phones S25, S35, S45, ME45, SL45 -+.SH SYNOPSIS -+.B gsmsiexfer \-\-help -+.PP -+.SH DESCRIPTION -+\fIgsmsiexer\fP comes with no man page. Try gsmsiexfer \-\-help, or -+read the source. -+.PP -+.SH "SEE ALSO" -+.BR gsminfo(7), -+.BR gsmctl(1), -+.BR gsmsendsms(1), -+.BR gsmsmsd(8), -+.BR gsmsmsstore(1). -+ ---- gsmlib-1.10.orig/debian/gsm-utils.examples -+++ gsmlib-1.10/debian/gsm-utils.examples -@@ -0,0 +1,2 @@ -+contrib/gsm-utils.cron.d -+contrib/gsm-utils.init ---- gsmlib-1.10.orig/debian/dirs -+++ gsmlib-1.10/debian/dirs -@@ -0,0 +1 @@ -+/var/run/gsm-utils ---- gsmlib-1.10.orig/debian/libgsmme-dev.docs -+++ gsmlib-1.10/debian/libgsmme-dev.docs -@@ -0,0 +1,2 @@ -+doc/README.developers -+doc/README.NLS ---- gsmlib-1.10.orig/debian/gsm-utils.init -+++ gsmlib-1.10/debian/gsm-utils.init -@@ -0,0 +1,87 @@ -+#! /bin/sh -+### BEGIN INIT INFO -+# Provides: gsm-utils -+# Required-Start: $remote_fs $syslog -+# Required-Stop: $remote_fs $syslog -+# Default-Start: 2 3 4 5 -+# Default-Stop: 0 1 6 -+# Short-Description: Start daemon at boot time -+# Description: Enable service provided by daemon. -+### END INIT INFO -+# -+# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon -+# -+# written by Matthias Goebl -+ -+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -+DAEMON=/usr/bin/gsmsmsd -+NAME=gsmsmsd -+DESC="GSM SMS send daemon" -+ -+test -x $DAEMON || exit 0 -+ -+if [ "$RUNGSMSMS" != "yes" ];then -+ echo "GSM SMS deamon not yet configured. Edit /etc/default/gsm-utils first." -+ exit 0 -+fi -+ -+ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+STARTOPTS="" -+SMSUSER="gsmsms:gsmsms" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters -+ -+OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" -+OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" -+test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" -+test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS -+ -+case "$1" in -+ start) -+ echo -n "Starting $DESC: " -+ if [ -n "$PIN" ];then -+ echo -n "entering PIN.. " -+ ( -+ # This is ugly.. But if the PIN is already entered, the ME returns -+ # "ERROR" and makes gsmctl retrying.. -+ /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & -+ PID=$! -+ sleep 3 -+ kill $PID 2>/dev/null -+ ) >/dev/null 2>&1 -+ fi -+ echo -n "$NAME" -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ stop) -+ echo -n "Stopping $DESC: $NAME " -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --exec $DAEMON -+ sleep 5 -+ echo "." -+ ;; -+ restart|force-reload) -+ echo -n "Restarting $DESC: $NAME" -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background --exec $DAEMON -- $OPTIONS -+ sleep 5 -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ *) -+ N=/etc/init.d/gsm-utils -+ echo "Usage: $N {start|stop|restart|force-reload}" >&2 -+ exit 1 -+ ;; -+esac -+ -+exit 0 ---- gsmlib-1.10.orig/debian/changelog -+++ gsmlib-1.10/debian/changelog -@@ -0,0 +1,284 @@ -+gsmlib (1.10-13) unstable; urgency=low -+ -+ * Ack NMU, Thanks Michael, Christoph & Petter -+ * debian/control add Homepage: -+ * Update debian/copyright; gsm-lib/COPYING actually specifies LGPL: -+ - fixes lintian:copyright-without-copyright-notice -+ * Update manpages fixes lintian:hyphen-used-as-minus-sign -+ * Update debian/gsm-utils.init -+ - fixes lintian:init.d-script-missing-lsb-short-description -+ * Bug fixes from ubuntu -+ - Don't install contrib/gsm-utils.init dh_installinit debian/gsm-utils.init -+ - Create /var/run/gsm-utils -+ * Add case 'L' to apps/gsmsmsd.cc - thks to Andrew Suffield -+ - syslog support does not work (Closes: #346240) -+ * gsm-utils.init really call restart with --stop first -+ - init script calls --start twice (Closes: #377448) -+ * Explictly set /bin/bash: gsmsmsspool & gsmsmsrequeue -+ - bashism in /bin/sh script (Closes: #464981) -+ - gsmsmsrequeue contains bashism or function error (Closes: #459396) -+ * Patch apps/gsmsmsstore.cc - thks Isaac Wilcox -+ - gsmsmsstore device existence check causes problems with RFCOMM -+ devices (Closes: #340179) -+ * Only start gsmsmsd if set in /etc/default/gsm-utils. crontab -> examples -+ - gsmsmsd should be optional / start only if told so in -+ /etc/default/gsm-utils (Closes: #474093) -+ * Apply patch from Stefan Katerkamp & Jacob Nevins -+ - Gsmsendsms fails with SonyEricsson W880 (fix included) (Closes: -+ #413341) -+ -+ -- Mark Purcell Mon, 06 Oct 2008 15:01:49 +1100 -+ -+gsmlib (1.10-12.5) unstable; urgency=low -+ -+ * Non-maintainer upload. -+ * Yet another bashism that was later on reported on the old bug report, thus -+ again closes: #464981 -+ * Also found a shell related problem in debian/rules and fixed it. -+ * Bumped standard to 3.7.3. -+ -+ -- Michael Meskes Mon, 14 Apr 2008 10:48:19 +0200 -+ -+gsmlib (1.10-12.4) unstable; urgency=low -+ -+ * Non-maintainer upload. -+ * Argh, somehow I mananged to upload without fixing the bug completely, -+ sorry. Added those missing braces, closes: #464981. -+ -+ -- Michael Meskes Wed, 09 Apr 2008 14:46:08 +0200 -+ -+gsmlib (1.10-12.3) unstable; urgency=high -+ -+ * Non-maintainer upload. -+ * Removed bashism in contrib/gsmsmsrequeue (Closes: #464981). -+ -+ -- Michael Meskes Sun, 06 Apr 2008 15:37:35 +0200 -+ -+gsmlib (1.10-12.2) unstable; urgency=low -+ -+ * Non-maintainer upload. -+ * Fix FTBFS with GCC 4.3: 'strerror' was not declared in this scope, thanks -+ to Cyril Brulebois for the patch (Closes: #455402). -+ -+ -- Christoph Berg Fri, 04 Apr 2008 18:01:05 +0200 -+ -+gsmlib (1.10-12.1) unstable; urgency=low -+ -+ * Non-maintainer upload to solve release goal. -+ * Add LSB dependency header to init.d scripts (Closes: #464061). -+ -+ -- Petter Reinholdtsen Fri, 28 Mar 2008 11:39:20 +0100 -+ -+gsmlib (1.10-12) unstable; urgency=low -+ -+ * addgroup --system gsmsms works better. Thanks Jon -+ * only delete gsmsms on purge -+ - gsm-utils: deletes and recreates the gsmsms user on each upgrade -+ (Closes: #346238) -+ - gsm-utils fails installation / addgroup: The user gsmsms; does -+ not exist (Closes: #445404) -+ * lintian cleanup: debian-rules-ignores-make-clean-error substvar- -+ source-version-is-deprecated -+ * Scripts are installed +x -+ - gsm-utils: uselessly installs non-executable scripts into /usr/bin -+ (Closes: #346230) -+ * Remove bogus symlink -+ - gsm-utils: wrong symlink for manpage gsmsiectl.1 (Closes: #322382) -+ - gsm-utils: gsmsiectl.1 dangling symlink (Closes: #399582) -+ * debian/gsm-utils.init reload/restart was not calling --stop. Thanks -+ Barry -+ - init script calls --start twice (Closes: #377448) -+ -+ -- Mark Purcell Mon, 08 Oct 2007 21:44:00 +0100 -+ -+gsmlib (1.10-11) unstable; urgency=low -+ -+ * Create system group gsmsms - Thanks Emmanuel -+ - gsm-utils: creates group in non-system gid range (Closes: #353967) -+ - gsm-utils: postinst should create system grp gsmsms (Closes: -+ #390266) -+ * Upgrade to compat 4 -+ * Apply gcc-4.3 patch from Martin -+ - FTBFS with GCC 4.3: missing #includes (Closes: #417222) -+ -+ -- Mark Purcell Sat, 29 Sep 2007 18:22:56 +0100 -+ -+gsmlib (1.10-10) unstable; urgency=low -+ -+ * FTBFS with G++ 4.1: extra qualifications (Closes: #356109) -+ -+ -- Mark Purcell Sat, 20 May 2006 21:54:42 +0100 -+ -+gsmlib (1.10-9) unstable; urgency=low -+ -+ * library package needs to be renamed (libstdc++ allocator change) -+ (Closes: #339179) -+ -+ -- Mark Purcell Mon, 21 Nov 2005 21:19:51 +0000 -+ -+gsmlib (1.10-8) unstable; urgency=low -+ -+ * removal of automake1.6 (Closes: #335123) -+ * fails with dash [bashisms in scripts] (Closes: #309834) -+ * Update libtool Fixes: gsmlib(GNU/k*BSD): FTBFS: out of date libtool scripts (Closes: -+ #319688) -+ * [INTL:de] German PO file corrections (Closes: #314060) -+ * Fix: old-fsf-address-in-copyright-file -+ -+ -- Mark Purcell Thu, 3 Nov 2005 22:40:19 +0000 -+ -+gsmlib (1.10-7) unstable; urgency=low -+ -+ * C++ 4.0 transition -+ * Closes: #315864: Missing manpages -+ * gsm-utils: maintainer-script-needs-depends-on-adduser postinst -+ -+ -- Mark Purcell Sat, 23 Jul 2005 00:46:31 +1000 -+ -+gsmlib (1.10-6) unstable; urgency=low -+ -+ * Rebuild for invalid dependancies -+ * Closes: #258056: libgsmme 99% cpu usage -+ - Patch from Emard -+ * Closes: #274382: FTBFS with gcc-3.4: template-id `operator< -+ <>' for `bool gsmlib::operator<(const -+ gsmlib::MapKey<gsmlib::SortedPhonebookBase>&, const -+ gsmlib::MapKey<gsmlib::SortedPhonebookBase>&)' does not -+ match any template declaration -+ - Patch from Andreas Jochens -+ * Closes: #294251: FTBFS (amd64/gcc-4.0): explicit qualification in -+ declaration of `bool gsmlib::operator<(const -+ gsmlib::MapKey<SortedStore>&, const -+ gsmlib::MapKey<SortedStore>&)' -+ - Patch from Andreas Jochens -+ * Closes: #200189: Patch and contribution -+ + Added multi-queue-priority-system and syslog patch (Matthias Goebl) -+ + Included init, spool and requeue scripts for gsmsmsd (Matthias Goebl) -+ + gsmsmsd runs with own user and group (gsmsms:gsmsms) (Matthias Goebl) -+ -+ -- Mark Purcell Tue, 17 May 2005 11:34:45 +0100 -+ -+gsmlib (1.10-5) unstable; urgency=low -+ -+ * Change Section: libdevel -+ * gsm_unix_serial.cc patch from Daniel Schepler to fix g++-3.3 -+ compliation. Thanks. (Closes: Bug#195151) -+ -+ -- Mark Purcell Sat, 19 Jul 2003 15:57:28 +1000 -+ -+gsmlib (1.10-4) unstable; urgency=low -+ -+ * Include file descriptor leak patch from Edd Dumbill (Closes: -+ Bug#168475) -+ * lintian cleanup: description-synopsis-might-not-be-phrased-properly -+ * lintian cleanup: configure-generated-file-in-source -+ -+ -- Mark Purcell Sun, 9 Feb 2003 14:04:54 +1100 -+ -+gsmlib (1.10-3) unstable; urgency=low -+ -+ * New Maintainer (Closes: Bug#180061). Thanks Mikael for your work. -+ -+ -- Mark Purcell Sat, 8 Feb 2003 16:55:26 +1100 -+ -+gsmlib (1.10-2) unstable; urgency=low -+ -+ * Rebuild to use the new c++ ABI (GCC 3.2) -+ -+ -- Mikael Hedin Thu, 23 Jan 2003 20:57:50 +0100 -+ -+gsmlib (1.10-1) unstable; urgency=low -+ -+ * New upstrem release. -+ -+ -- Mikael Hedin Wed, 6 Nov 2002 17:44:17 +0100 -+ -+gsmlib (1.9-2) unstable; urgency=low -+ -+ * Made new rules for the config.guess/sub update thing (closes: #146865, -+ #146867). -+ -+ -- Mikael Hedin Tue, 14 May 2002 09:28:03 +0200 -+ -+gsmlib (1.9-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Use chrpath to get rid of rpaths. -+ * Add mini-manpage for gsmsiexfer. -+ * Remove b-d on auto-stuff, we don't use them. -+ -+ -- Mikael Hedin Mon, 13 May 2002 22:10:28 +0200 -+ -+gsmlib (1.8-2) unstable; urgency=low -+ -+ * Removed b-d on gcc 3.0, as they are no longer nessecary. -+ -+ -- Mikael Hedin Thu, 24 Jan 2002 12:59:07 +0100 -+ -+gsmlib (1.8-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Revert the arch hack, now it should compile with either g++. -+ * Include the new lib in libgsmme1. Run dh_makeshlibs -V because of this. -+ * Added info for gsmsiectl in gsmctl(1). -+ -+ -- Mikael Hedin Wed, 9 Jan 2002 22:38:45 +0100 -+ -+gsmlib (1.7-2) unstable; urgency=low -+ -+ * gsm-utils: Added shlibs:Depends (closes: #126127). -+ * Spelling correction (closes: #124705, #124972) -+ * Rm libgsmme1.postins, and let dh_makeshlibs take care of ldconfig. -+ * Made explicit arch list without sparc and arm, they cannot use g++-3.0 -+ right now. -+ -+ -- Mikael Hedin Sat, 22 Dec 2001 20:27:54 +0100 -+ -+gsmlib (1.7-1) unstable; urgency=low -+ -+ * New upstream -+ * Use gcc-3.0 and g++-3.0, 2.95 doesn't compile. -+ -+ -- Mikael Hedin Thu, 1 Nov 2001 10:24:33 +0100 -+ -+gsmlib (1.6-5) unstable; urgency=low -+ -+ * Updated manpage (closes: #110973) -+ * Corrected problem with OP status (closes: #110970) -+ -+ -- Mikael Hedin Sat, 8 Sep 2001 18:12:17 +0200 -+ -+gsmlib (1.6-4) unstable; urgency=low -+ -+ * Support DEB_BUILD_OPTIONS -+ * Changed libgsmme-dev to section devel. -+ * Reran libtoolize. -+ * Lots of small patches to compile with g++-3.0. (Closes: #104411) -+ * Removed dh_testversion. -+ -+ -- Mikael Hedin Thu, 12 Jul 2001 16:06:23 +0200 -+ -+gsmlib (1.6-3) unstable; urgency=low -+ -+ * Various minor corrections. -+ -+ -- Mikael Hedin Thu, 8 Mar 2001 16:24:07 +0100 -+ -+gsmlib (1.6-2) unstable; urgency=low -+ -+ * Dont install INSTALL. Correct indentation for libgsmme1 description. -+ -+ -- Mikael Hedin Tue, 6 Mar 2001 14:55:05 +0100 -+ -+gsmlib (1.6-1) unstable; urgency=low -+ -+ * New upstream version. -+ -+ -- Mikael Hedin Mon, 29 Jan 2001 17:57:21 +0100 -+ -+gsmlib (1.5-1) unstable; urgency=low -+ -+ * Initial Release. -+ -+ -- Mikael Hedin Thu, 14 Dec 2000 01:06:40 +0100 -+ ---- gsmlib-1.10.orig/debian/gsm-utils.docs -+++ gsmlib-1.10/debian/gsm-utils.docs -@@ -0,0 +1,4 @@ -+NEWS -+README -+TODO -+doc/FAQ ---- gsmlib-1.10.orig/debian/rules -+++ gsmlib-1.10/debian/rules -@@ -0,0 +1,129 @@ -+#!/usr/bin/make -f -+ -+# Uncomment this to turn on verbose mode. -+#export DH_VERBOSE=1 -+ -+# shared library versions, option 1 -+#version=2.0.5 -+#major=2 -+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so -+me_version=`ls gsmlib/.libs/libgsmme*.so.* | \ -+ awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -+me_major=`ls gsmlib/.libs/libgsmme*.so.* | \ -+ awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` -+ex_version=`ls ext/.libs/libgsmext*.so.* | \ -+ awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -+ex_major=`ls ext/.libs/libgsmext*.so.* | \ -+ awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` -+ -+ -+export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -+export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) -+ -+ -+# FOR AUTOCONF 2.13 ONLY -+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) -+ confflags += $(DEB_HOST_GNU_TYPE) -+else -+ confflags += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE) -+endif -+ -+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) -+CFLAGS += -g -+CXXFLAGS += -g -+endif -+ -+configure: configure-stamp -+configure-stamp: -+ dh_testdir -+ # Add here commands to configure the package. -+ CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" INSTALL_PROGRAM=$(INSTALL_PROGRAM) \ -+ ./configure $(confflags) --prefix=/usr --mandir=\$${prefix}/share/man \ -+ --infodir=\$${prefix}/share/info -+ -+ touch configure-stamp -+ -+build: configure-stamp build-stamp -+build-stamp: -+ dh_testdir -+ -+ # Add here commands to compile the package. -+ $(MAKE) -+ -+ touch build-stamp -+ -+clean: -+ dh_testdir -+ dh_testroot -+ -+ # Add here commands to clean up after the build process. -+ [ ! -f Makefile ] || $(MAKE) distclean -+ rm -f build-stamp configure-stamp config.log config.status po/de.gmo -+ -+ -test -r /usr/share/misc/config.sub && \ -+ cp -f /usr/share/misc/config.sub scripts/config.sub -+ -test -r /usr/share/misc/config.guess && \ -+ cp -f /usr/share/misc/config.guess scripts/config.guess -+ -+ dh_clean -+ -+install: build -+ dh_testdir -+ dh_testroot -+ dh_clean -k -+ dh_installdirs -+ dh_installdirs -pgsm-utils -+ -+ # Add here commands to install the package into debian/gsmlib. -+ $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp -+ chrpath -d debian/tmp/usr/bin/* -+ cp contrib/gsmsmsspool contrib/gsmsmsrequeue debian/tmp/usr/bin -+ -+ -+# Build architecture-independent files here. -+binary-indep: build install -+# We have nothing to do by default. -+ -+# Build architecture-dependent files here. -+binary-arch: build install -+ dh_testdir -+ dh_testroot -+ # -+ # build libgsmlib${major} package by moving files from gsmlib-dev -+ # -+ dh_movefiles -plibgsmme$(me_major)c2a \ -+ usr/lib/libgsmme.so.$(me_major) \ -+ usr/lib/libgsmme.so.$(me_version) \ -+ usr/lib/libgsmext.so.$(ex_major) \ -+ usr/lib/libgsmext.so.$(ex_version) \ -+ usr/share/locale -+ -+ dh_movefiles -plibgsmme-dev \ -+ usr/include \ -+ usr/lib -+ -+ dh_movefiles -pgsm-utils \ -+ usr/bin -+ -+ -+ dh_installdocs -+ dh_installexamples -+ dh_installmenu -+ dh_installinit -+ dh_installcron -+ dh_installman -pgsm-utils debian/*.1 debian/tmp/usr/share/man/man*/* -+ dh_installinfo -+ dh_installchangelogs ChangeLog -+ dh_link -+ dh_strip -+ dh_compress -+ dh_fixperms -+ dh_makeshlibs -V -+ dh_installdeb -+ dh_shlibdeps -ldebian/libgsmme1c2a/usr/lib -+ dh_gencontrol -+ dh_md5sums -+ dh_builddeb -+ -+binary: binary-indep binary-arch -+.PHONY: build clean binary-indep binary-arch binary install configure ---- gsmlib-1.10.orig/contrib/gsmsmsrequeue -+++ gsmlib-1.10/contrib/gsmsmsrequeue -@@ -0,0 +1,48 @@ -+#! /bin/bash -+# -+# /usr/bin/gsmsmsrequeue: Re-queues failed SMS -+# -+# written by Matthias Goebl -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+SMSADMIN=root -+SUBJECT="SMS delivery report:" -+ -+send_notify() -+{ -+ tmpfile="$SPOOLDIR/tmp/"`basename "$1"` -+ status="$2" -+ if mv "$1" "$tmpfile" 2>/dev/null; then -+ # extract the first tab-separated field after the phone number as -+ # email-address to send the notification to -+ mailto=` cat "$tmpfile" | sed -ne '1s/^[^ ]* \([^ ]*\).*/\1/p' ` -+ test -z "$mailto" && mailto="$SMSADMIN" -+ cat "$tmpfile" | mail -s "$SUBJECT $status" "$mailto" -+ rm "$tmpfile" -+ fi -+} -+do_accounting() -+{ -+ true; -+} -+ -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils -+ -+for p in `seq 1 $PRIORITIES`; do -+ ls "$SPOOLDIR/failed$p" | while read file; do -+ if expr "$file" : ".*rrrrrrrrrrrr" >/dev/null; then -+ send_notify "$SPOOLDIR/failed$p/$file" "failed" -+ else -+ # re-queue SMS -+ mv "$SPOOLDIR/failed$p/$file" "$SPOOLDIR/queue$p/${file}r" 2>/dev/null -+ fi -+ done -+done -+ -+for p in `seq 1 $PRIORITIES`; do -+ ls "$SPOOLDIR/sent$p" | while read file; do -+ do_accounting "$SPOOLDIR/sent$p/$file" "sent" -+ send_notify "$SPOOLDIR/sent$p/$file" "sent" -+ done -+done ---- gsmlib-1.10.orig/contrib/gsm-utils.cron.d -+++ gsmlib-1.10/contrib/gsm-utils.cron.d -@@ -0,0 +1,3 @@ -+# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils -+ -+*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi ---- gsmlib-1.10.orig/contrib/gsm-utils.default -+++ gsmlib-1.10/contrib/gsm-utils.default -@@ -0,0 +1,13 @@ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+ -+SMSADMIN=root -+SUBJECT="SMS delivery report:" -+ -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+ -+do_accounting () { true; } # it's your turn ---- gsmlib-1.10.orig/contrib/gsmsmsspool -+++ gsmlib-1.10/contrib/gsmsmsspool -@@ -0,0 +1,34 @@ -+#! /bin/bash -+# -+# /usr/bin/gsmsmsspool: Queues SMS for sending -+# -+# written by Matthias Goebl -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils -+ -+if [ -z "$1" ]; then -+ echo "Usage: gsmsmsspool NUMBER [MESSAGE]" -+ exit 1 -+fi -+ -+priority=$PRIORITIES # default priority -+test -n "$GSMSMS_PRIORITY" && priority="$GSMSMS_PRIORITY" -+mailto=`id -un` -+test -n "$GSMSMS_NOTIFY" && mailto="$GSMSMS_NOTIFY" -+ -+tmpfile="$SPOOLDIR/tmp/`date +%s`.$$" -+umask 022 -+echo "$1 $mailto" > "$tmpfile" -+if [ -n "$2" ]; then -+ echo "$2" | head -c 160 >> "$tmpfile" -+else -+ head -c 160 >> "$tmpfile" -+fi -+ -+if [ "`id -un`" = "root" ]; then -+ chown gsmsms:gsmsms "$tmpfile" -+fi -+ -+mv "$tmpfile" "$SPOOLDIR/queue$priority/" ---- gsmlib-1.10.orig/contrib/gsm-utils.init -+++ gsmlib-1.10/contrib/gsm-utils.init -@@ -0,0 +1,81 @@ -+#! /bin/sh -+### BEGIN INIT INFO -+# Provides: gsm-utils -+# Required-Start: $remote_fs $syslog -+# Required-Stop: $remote_fs $syslog -+# Default-Start: 2 3 4 5 -+# Default-Stop: 0 1 6 -+# Short-Description: Start daemon at boot time -+# Description: Enable service provided by daemon. -+### END INIT INFO -+# -+# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon -+# -+# written by Matthias Goebl -+ -+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -+DAEMON=/usr/bin/gsmsmsd -+NAME=gsmsmsd -+DESC="GSM SMS send daemon" -+ -+test -x $DAEMON || exit 0 -+ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+STARTOPTS="" -+SMSUSER="gsmsms:gsmsms" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters -+ -+OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" -+OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" -+test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" -+test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS -+ -+case "$1" in -+ start) -+ echo -n "Starting $DESC: " -+ if [ -n "$PIN" ];then -+ echo -n "entering PIN.. " -+ ( -+ # This is ugly.. But if the PIN is already entered, the ME returns -+ # "ERROR" and makes gsmctl retrying.. -+ /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & -+ PID=$! -+ sleep 3 -+ kill $PID 2>/dev/null -+ ) >/dev/null 2>&1 -+ fi -+ echo -n "$NAME" -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ stop) -+ echo -n "Stopping $DESC: $NAME " -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --exec $DAEMON -+ sleep 5 -+ echo "." -+ ;; -+ restart|force-reload) -+ echo -n "Restarting $DESC: $NAME" -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ sleep 5 -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ *) -+ N=/etc/init.d/gsm-utils -+ echo "Usage: $N {start|stop|restart|force-reload}" >&2 -+ exit 1 -+ ;; -+esac -+ -+exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz deleted file mode 100644 index c3e2c3bb743da9a3ff5fd23c22226e7e9c20d6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474591 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

y?NWl|-xxOBP>;aWs+( zbTH8B)gVp=Jnmepq=qD?AaJxugoz~VcdMu~f;V%_qJUo0!g$Qz`DsuQ9u!10wb^%* zG&dp-R}Cdk$I!d=9W^K^%u2Wh={(m&x8`;lbarmL;crN1NA0FI`l@h`45?`_n} zC}Hr4pWRQF&nG~^Z_GoBUvvCD15x#*F8-kMnur7u252^F8AnV)I-5~qJ{haIGyu-9 zU;Kha8V5>P@3D`u9_Hsmd;Z>Neher96Req?O*tJFbQvl29;>S_ zaw8?@fn)v+)9*OoU8gw_m4sm!wQ9|5ima%(`U1%}<7*tu%sBqBFR^j}6>Cyh2hpFh zLMe0yG%(3=b>IqI<=FpU_={X#0y{s1iK3u~gluV)M1Kkr`-4ryp{H~*!|tL}&emqs zIJPr*&Ic0L6iqYwhb(vCw{J+{iq(bGuFwrEbNb4GLfIrVR@bhFjDyJ8#uBJPP`a|J}jRx*n z_(1|BkZ{YMMEOiP$cf81>fQEg;*l)wsmZ?ti;wF%2gJzBl;ig_K$$t4Bxlzpm9Z0 zx90Ff^{CvXENoJY9_C8Yt0T~>gLP*{S>_+5Fng40%61D@dJaT#-Dat;-nB(cPg_^F z8nByF4*4{1M~W=)F>ACj0*4$Jovd6NGaC)0F^f4yK!XL&s?Pi%qO_}r zV|xT~rkxQ%ygvdFQKSsCMwe!(GsZ0~p6)3b?eO3up%OVtIFpNK*o0v8B*XzLd03-v(_`Im{O~z z&3|0CXyap<;1@GZhFP(%vAKbkjuOHe4K_keS98<8_0@+$z`#nT$TI|rRYH8e*}@c<663r&g_53BQ$oW8c+Kew3~lBMMzb4;;+hi=;TEUv zC%GMC9kS78i#~x3XGV>thsLKAHS5F4gaoz0#1Y4>GeH_HGyN-b>b!e`O_@-qW`@?J zrsjhn`+=zIZMO*Xmy=;&=rUg3zy{W`X<9vYTKX_XoMe=tl|dE);xpo`o1%F#o+ToJ z!?hTiMcw*9j*kpuw9le5XSN9s*jOaX5``OA0|9e%nV|UXG!EE+e@q|NJRc~Nr^_5c z_S)zgO%^j*o{IuA&gnGp?Z8^jkOMEL@bork{fzmEXR7O|`9rao8jw^z5rv$w@B4C0 z5wLybJOp4-J$y9ySHy83E8)oIg_MjTVRUf;DB1iIDyi~1IQ>#VN6tcT#R4NB-@x!x z@pr^g(5$QoBCbZtSwkn;^$8#CXv^8engHDFMD!Q=5313kyLjF4b%_)#)&rKk!F|)h zLfYV*dF4NTHg0{DT@d{wPGn8Dkti9MIa&$sD zV`_#^H2$9%X8ys=Qgi;`N1@f8O>#y z{MAgzbduFC_@H6vJ#2){EUH_>#3%`~Sn5gfhO}8m2j;wfnsF6%b%gwraCWVUrL}$! z3T_3y4xjZzsWCki8@P6zfve5>yFiTb@VH2mfjXJnLz~xzXKxYsutkp2* z_u#;@Kylj$4C#6#SsavQmjYe61Ikis-o(QG%(uXgpA4yYu7{-u*E1{!268@;&v4^D zZ7{ktQQ(N}EaT5nfGxT6m{oZS#x(+`yVW28=x!m^I+t>s6V_aTx%KodB2D=x!eo%# z%{toJFZ!v`J4Ig7O&EURJD0+I=sXQYJ!0k~2|n4z&0g*zWuKw;#g!qhq97mnuBx&P ztREi{lR9BNB!sIW>Iy+hgXvBxdPB7_h^}#*M4!u~(^l$8hivDFx|1aJ9`r}3bsczF zd#94+Bxb3CMHM>iM2s({;vug37*EMA6AmQMG0pgm)aFDU*)QR6v~*$S^f7?}*Vl4b zo3)gI0r7B)tuDFaXvn3w7>aNYYLmPBABly^mMg2}xBCXN;Hrh>?v#aie}k^{Q6p%M zuKk0WU9!~^Kyg~MkXm3Mt8R$axTE+jNw%Tp$=?%#(!!!XYH&tN)=S4@-)X{f6ROm; z%5Jt^YlS$yU_O^NhvKveM_0XI{M9d@w6%FIP@!bFH3MYPoL?sW?wm5(ZHD*=Wt~ZK zc1X>i1C}X2AGV#SQij@ zHaKSD#2eBEQTTv1I-Z%9pLbVGkQ2J>yi|==Y*cYB)C~CEO!zlj1dq0dn6m41&Q#{sC5-jV!PRP7V3YoP(BExwr7!8 zP-QFHJpIcsOF~KlTOB!b8s|YUw_ryUxQ{u)AZe#O@~Qp|87|$6)G)nB%wo&%{G zku(Xf)IRlYE>Q9j;-yj%(#~A{EE8H1=QZGg7Q%F?;B^7suyXIQjcgG%M^j7&<^yIW)vm^xmcHPxXFGTl)yxGWjv{LN zA_)oc{|3$@1*v3tR^y6g4(78Bzy?hrMfjB2e?C>a4#` zk*MSRsC-J#j#IE9a{9eogaSwHN!P(7mh);3qpz0%#MlGKiiUg-7*|Eh!PJ7h@Zb|h zTdc>Mn*sWA!Jfp+X$ST%d?u5EKs8i`N^-^svW!uh&~>!W2(1> zW(LHLvrCH&N^SCvzf@;hc8i&l|Fc#p;e;PMm7}PYjD=P0ycr+v0waUv%Anh*pIz6* z!-})j)A|N}DQ@4>*NkC-fG!yp|{KqzI0}J|WCl4cR?yq#3hdSY9n-UyCz{C1e|o35-hMJ&>#qH)C}hHWxOOyERGImbx@OQ;S}u+ zWfaQb4*3SQH@DbgY6!nJ0qmxLK|!C6JM>DQnQ+O#&WtY=R!f@{P-X(+W?};DglF%g z)E{r@Q`u7Em0)js4nN`j$r%FsFl|}30t8vL)7c9ewp{pr}70tbGOeHMOR`hR8x zhwLH6LDDl6QkvxWoKY@)KsmJj5=tVK8ZeH>Qara$!btX1X&wj-+lf)dwQCGEavJrf z_e@dKB&(@mW@UA?LGq0XQxa=jF=X|(+y_>I<&EP zPm8xNT`w2v9qR~o;QKK?V&``7ex!ZsXQhb&Rj6~L&W zIgx-2C=sLJWk%krF#TIk%Maib5PhED3bQ^9r7Sz0nT$BLx^#AZ(Lf4PjKpg* zo!Ssa-`o%p>%<>DQ;|hnfZHh>qaGHr-QG6A66~XV2eNLGH@U}Qt^xsCnIwm9{vt5~z$8^*8 zLFAD$HJ^)u-wHClH2NRX(a(vK>3DpKnxwXO#mylEPZku;dQB9~ zaQdc+L}%Q27Q%l&Xc+F%I6!*GgL(IKJ|dA?2?6HR5H6VppX$sJ&U4ix*3nE^bTIlN zI-r3qu;Z=^le!Mvyc4sPQ*@b_%=PJ0J&liFoLe+A9GV3M&7N`Q#AF!bsHJi}SlxVT z{beLOVt_l1x4|4h!hEmrEp&qy3EMKxLoX#qE`>;-X-1reK$O#(x5LZSIWlR~hKUvE zH780Sc7457>?apORR-WEH8tq|LHI-S=%~4W{3Fw|hmG(>YpZ$EZiUCMTQ*C=PTOQg z*bZMFwOZl9%W&&;^XOHphIU6SwAeogOkbQQ!Rvrp9q`|+H^;60D?lQs>PVyVSh-LnCOt*=ijghd;b-?S}{G{f8ZzPW!lt_B;FG4@W!4JNvJ=KjdOK z+IjW*IDCDuyWKkCgbm9FM*)8r9yX7TcUtZ6@aW+Co$c(JO3gOSx)lDfbNu??g#}sgJ$p{ub{OX5sB4mK*+fa02@Tt$TMn0~7$N6>hg) zwziIUzNg)#mNZQJWUmznyxYeNpxxbYzqLj4#aHdt(f2!B42PrEVRPpwmG!X(wfGyf??loVv+8z?{ z(3(%A7Pb#tTRZqc?+Nv2uXkyB!PWsCqJKNVF46<-By7@lq6griY*~mS2wdAYI6`CV zv9#M+abwTpU$}eFW@OuL9yddtG5z;Ni&_Uqt$l(QAE)Nl*2xhaEwsQFG@JGb9k!i) z*%TlEALgB-ZF`;o=ip^?XZPgD;FyIVjeI~LM3;@o8K^zcVe-F;$wc8wuW-5ps8E6IT*yd#^$%S$e6$^ys*dLfRy)4(RZnWgp? z5_yl4N3w&&5TRO{KZ5g3#TikEq%E6CQnG$#^H`clUY9PIHL@%%2v3cRBBwQ(OELmI zX-(p5Mv)}`sx2}Y-IBMgYEs_Xupu)@4T+9SiAcwn**Km|a#EWfJB`jEZGlO!Uk^=V zE&r#5-PF#_UY@L_Pcx~^0?rk4t>$TxAWUZNY@9xK#eHZs3voo4T5pm#C|M??#Ez&c znT`_{!`R_n%vPo>vRcj%F3N=t#lrSyY$|{6d!-CaDur;wc>=lXGeXOAlw^;@M^*AF zaoUD&xvy->^*_Vgh&mR7BA9u4uYm_v9(08NJB>!|xd^Em!lywngDKxlS+O++jieOn7x>7JhS z2PhnYT6p@Rh5`p^-vs=BPbddHUo_=XbGGf#|X@P=^ZnwVPSZO@Sb^iBRzxx3-!ML14*gXC#mT)rae`>SWDaxfwE-%C= zC3fyap2wHq&?LEh>*$E&x@^}pxTvkr&PJjWK^ukNZ0+tGZiJ*RbyU(cGkQDAAHx^|Mn4@c?6r%scKL39=#SRd*o?_*ONaD-y|4n$Xigm( zey0iCX)9hP6S~2#{kf@AgJiOpF6?ib2##=qxQoOu2k*Kf1nC)_wy-9xNxz%ISKxU4 z=`d`Q=x7kQ@>4v4>@?LhwMg238GVTJ%j-sCQ$7y2cPzdd@R<>(Ch9ZQgTfO9FM;1k z*fz}1jSdOBA}y;&5dl`2>NH~cG zOzL!_ky$Bm4x{915UZPr_}^QGl~!X1+5@B8?gK1oT`dk>n9pdGv?jSf8Mjj3cG^6) zI8Ac7@P8A6xa}570;WtHra>H1c(}7~l0r*L8?kNUu`IDWB~FhX(-YIVpBIVGEAd|` ziQvsq4?Zm6Q4;qC;h)b3Nz!}H|E`bXX`>f^>(FoyT5?!h`V-EC+=~tQLa##7xL1w~ z?s@N1BX!U}IUG}GJGksN5d zA}KSvePWl5ZG^DLTj>Iukss<4JA87)5%$o00c{%dAMWC3N^b7_wcti@2-LXVw|K9O z&Sy4tn-CB@2L&;t28y6ABBa>KfDwg8>_Sfg46gHAtL|tXTasZ?cu8&csiY6()d7p9 zbYc4olT=MH-wqvSBhHfK0}Mxlg!lq?`vO@(zUutkwzN=p3MT=hGc~e`jG?7PinG|4 z1Jzzao01Ho@R(#zzHiqat*}OmCHFI;!Dh%_Jm|v|X|7yDM)z7b@5bCN(%z)gUiX`C z>L1-kj@d94>tSU`GqL0_D0Rp2$k0e?=BkHRqCzRd$z1@B9?_C8Ln>AjNB9H-*Jz=coJ+1V5hJ_s_9wE1J(pn4O_0=*R6 zk|$9b6AGcekQfHRa$}`0X|^O?H`nT`wx9ZRxn2i10UGB_;$$#Oj6|FRMhrG}J8D`poQD=dnp_8!6jBZvz8 z!C5@D1MxaWtW|~u+Fl2Kpo^ha8l#1qTB7gFK<*OJSRNwLW`LIrc~(oXixL5RLck@V zG_35X&mAFT!q#y*W>wApIJp)v#f-t_Vc3lWPXE{5n1mLS>)d$YGTdNFlp^M`x?IQ& zA(m4~K*3X%tPdkQoOw%xZ6rQVb61Sd1u|C?b`h9-HX(A-g;mo1oQLW&4NnZcpLk0wauq25hGg4L@dbJI>-uVz!{SR3==Q+^{0$i;xW)R2~>c zG^U=M*Bww%VN_h!B3y-ev1ppKnNE39siKpU2FfY6gPo0-L(OmnJxzeq3&j^hJkhUA zmTpNTN?SAVh&sV(C&|)a|k^Q8KUy6Np?W`88qk zS73@eDtk#H_L>n%CkcD+SH9o+=9_9Q^bgH}kldFj3Hy=_cz0qW&F6nUr{}%v$B&=m ztHC+lYz@MTZ~diWky{6QA{oP;cwrL06Kco|D_8+SSl!Bqq!4{~aa+Q0(O=ZGaUYP7 z-@};xs$c_{i|DIv-%QXLVOAR}Ra*^+t_tv1131HL%$oQRZO3P{NK-!E&cz_1<$Y9E z?g+hPpLh<_XOS~jS3td5yi?Wdr{KJMc@>Qp3@H)kHV+X-##srR#0dZOF`7u8*eh1V&sZTNS+V?d zNZ_wc7i@aV!{NuZ?<|XhyC3I$8V$!HSi@+YZC_%)ELiAD>b=In(0nunffsU}X`Vxp zMfGBn=A5~G2yR?x%HBn#_!FNi;z@RQUUXhIcj>5gnrofa&dZ%Qo2#W-$oe9wwMm>< z(O&zasotv)H_wuZJs+sv5KpEO4Ka)cT%^ZB4;d%6PM>BKt@zJ$+qYa+s8DrFio>VGms62U}R z69=L*@9UH}9^IV~I)0QMfc+374OMZl9QNT(?$t2m91+Be{iM~Fjd%9^JZvAd6G|;} zEgIeK27~s+^%R`-=4QC!geOFCdwdpOy{sLyS?;7%Tvlgb^2JK#D5(?fPH!5P?teYL zI{ZP(HkH3Ahh7S5`e&S^eOtFA9>k)BR^}szYKU z19!Z2=di4zJ^M7+jI)i+>w8(lN8?H25{Wh)D9#d>G}c?u;Xzf?fSI^susdp$UZ$Pv zv31(&gYyOqNS~#8J?%y%BWMYeSSLZAHNw$&oSLIE6?w^yQ+RKf7`_ZpE1J!;e{O{& ziKuaXO*4RUSAu{0%b}Zg&j+*gl90YDdDe3Jz>N*!xpvt-1^C08@5=+CBhuImml7kK z*C9X1@U9vPok~>qr|@K-P}EawYi<$;Vw@mNYsIW-Y)E=4EVH|~^;VSd9Il3ArAsH) zRN{*Ue}1(6f-sqW>~1#?O=jh4BiwOCZQ1S19e;3s!kqBP?gsB5wltSCQd|d^EZNuYpwD0VPnmt&hHOmx5uuF9WSoP;b4M{8NK+U4cxcB zWd@nq?(ybefBDV9%a_%Lncs0XXHTk5o{~@_YvT-(d#Tur zydzL&j!1MF>9j|a^nvWdVuJ~hNj2c#l$>NqIIYMfD&k55XUG+SFvp4~mQ*uC&~e^S z!fJ`Rs>CEqj;7tr^i8$IVo$>1v8Hk4qsi_D5h$Ol5k52O@6A(?Ww2 zOpzZdR%}O2s#Nss&gksHtKZ z_e5>V`ODmo2{fu7PU@g#prGDZmhJD4mg(Q3QTAu36zMGlZN6K7vBc@Uk*RVVeilj< zxVphx@w#fW?MqPBXv!Ni8+#19KeUH|9kxtbksi13FgXLo(o>=ObWhFWYO3<3ovES% z;Q=RG!mq@fW>XZ~qrn+^!_sU7^WdoD=PG0R;is=wF9g0#ZP4}0U4$K2Wv5XKO0GH9 z=gP8^Zg)ofTg6WXubC{U@2bPQjI985T$w;+lXfZE3T^fd%US^iWq&hChQNr7^Pwkb zB#LAnkcWd|Vv!u;L`?0RL7;gVz>{>gTe~~ow~iQNJdJ4w06J-Rj#`HYN5`TdnpgLG z)!^$pVWnON{i%AapjHUV@HEO9S^0p^kYuI=WSpWW%l13*00sf8e&#*q!^uUIxJC+7 zxaa~`5OiB?Dkd(#Cg8Pz(A0M6lM${@go2fybcRQL>P+nmsTwY|7wsb%$ZOo&n1C~RUK1BkRnev%E}Xln3C?C5M#^h|Fzjk1s=C4{w1LmxZ0+yu(8e3h zw%G){vm5csgMaK*Ga2+hunW3NykQ}{ZH`U2bx4zSp`8<9@ajh zO!C~twe05Q?XSY(W)&dkyG2B#FaI7B&tGEd8`fF~R}&I_Mt%aTo>$Pbz4K~k{}^H${X*oAm3`T4m(KU>L&eg( z%!XKUsw1PS@43e%i*NCjBtE%}q)ZC3Cjd{f9Z09hrx1<%Jp`xY!uR|@1THK|arNH; z0eF7SESlRgCLVie!speQNpzPm3tJ6a{7E9R-K2cinfakah%qj3$ocIpsFA@fp}eUR z&WNHW1JCH5jBW9)37=TOmDFZ%^ZFLe4of6%3)$0OELb%S9@6|3vS3rJ>Y)mGz9oOf zuI=b>kJCbf$E;W_k~_AX4D_24yR;ZV+ZfZ-Z7giBt}t-hYY!2s&bD86&7&DxyvVEP zm^X~Yk7jJ_A?s$Yl59$gCzvu?SD8COs%G1g1q;=G!q{;PH(*aQjRx0gpZRDjWQz-! zM+mJ?8c_}JZnOC(SP`U^m~94vl}2NI#Vo<7P>n!j!M{RMUXeJ1UceKv8<3m@o444} zSIPL`c~O8J)(@3cFd+Mbp0k z8(-0Sgs#5Kh@~+TG6jmm>dSOqJ1RDr)TxEl@rO^CVK}AC==GRuYfEj8VMgWX<{}>M zPC^vs$gIE5r9IQ-`@H>j6WM}5a@1u!7@KIeyyY~%Rl?1{bUH_zSRP7aPU&`CD7Ag` z^m@fR$xi=FSZxx0=O2LdSTyZ4%zN&Ehe@wT-Alw)solo+gO#!Jo+bT^N>inBlZ!m3 z4)8XRD;Dy|oEAp&8EYMJ+NNqIl0XpJUt+#TtHoghRG|wStpDMo#tM6R?(DCxd315@ zw;woRzI--SW($5BeDO80=tHE2$sNL%1s-IMrA?QiKfw1Ibb#vi>`;;k-Y}Vnn#WGE z2`iSbKW7fCwb$BjkW4YwzKsSB=$`m1VI& zK3aXK{y2!hutr(V9IydyyyVAEln%ZtsU?;KGS3s7SDcB>FiAdHI1&e~dAjWRaU#2@ zpmAhL8Mw)wXKJ|_E^hreUPC2{3Y`4pCbNmXTN>i+}-`%$GAEE zZ;gZfRvtfiyt4LaUD`c<@bJNx_`g5mA5losfllF{A$r!$`G54}ALnaXNL2;+)`0I> z7SEv%@iO7ml;p$)$E=^l10(YY^EP5us_%`-f2biwb^k^=VX2|Xw5ciB>7T~3<+hyZ z??dLd8AZRrbXc|Sr?*tRZz79`VKt6g&F#IG6<9fMs%T`5miq!U!?y?NqfItF1p|RY2ad2{6r@xJ!W8I z(x)$?lpub~F7pV-Rsz3$pUem0sojS%Qa+--88g2b%m2lUT|iZQWz8+~R)ICSGG|_Q zHN%bCT#HC)DJPE=lbj(lPB6|6;@T_ta8AiWLiy<)p#gxyCRxt);b|`Us>X^w+G3tksaOv4a5%q$6Z9(E2nIvWDmt<)9>UpwTaKTA47rZ?4Rz*)ho& z50g3PB%)b;h~u$KBq(w%mk#bh^)z+o)!#mXNTWY0+fr@r?D!x%yLP!P0u2m2HFUqM z$%v#VB=#-e_qofRG&M!2P0ksh|xknAs%_|&_8%3((I_qyQi=A4sSZ?Wtf?f5tTS}RaE>kh*-f*1dB@brWd~h zt->g8j%K4#?!bmqBCSNst}Y4Q4HR+hOZA@-lZyV-SnGk+(u)f^i6!1f(mbkhHB}v{ z4GkvX@%U@R6VOV-Q{3t01r)$kvllOXp}AB0m2}GAf}$cr5SCY0ilvLvzl7WKiV`*d~m(aq>Pg(jP4a<&BwuH zOG+8!hC%Ln%$p~WfHDz>7D>Bs)wvM^6US&I=nUOty3iwOF|j$L3iiP{y+xXO7P$AJ zFD7<;FoSz|W^=$)x@l=*7wv@e`Di=bAvmbD2(%Vz^T5vfn z;>nd^W0xCMYMQbr_Qv$Jt-cBiWpuS@HS-$NJQF8;i8aT5U|Y}`U8Y{%IZj~aeHEyo z+~e&$7VhlYTD3W$n_ifnn*?=zl5&>Q@I?Y2gu0hgmieWcMZ2B`UKRPw!gkCRDb#?y zwYAxO@-*Cfx!Ziz-mD+2A*CVx7(h?|DI-M$2kgfP{-U^o~4sz4rE$3&dj^p`ZCQuNq#9(nab5Z z1_?-{uI_BK;Jh@l_h+`SjQXG|6$&zy!$&!8WRCLo#b7Yvz=_jFqnu%t4UH1edGPXr z!V3TwIKcV6EW#AvM`m9U#K1@q=mH9FAC$vlC9NGpZ%fVG;9nZ~A!@v&{0*U|`Y^^dnEs}m;TpPVZEq~2(D!|M|Z|@OPFf};!jyYY~W$MIxLKKRg zz#`|4rOgXI3NmuGDCqTm;p6G`#O%0g@-yrhl68tT=d@mzE;f0q8yQ+)2DOFu3WiqM z+=rxd%yUO1^B&euBfE1Gd#wifyTVV}PIJXc%S^bI!3~Bzp+bOn#?@9qbgtr=#&2iX zFI(ub5p4S$m#|R`TaP>Q3bUI+wRDMdJ`EX558cSd`_znNBQ>|}wd+puAi9PGdhK1A zfw`3V%Am!cabX%+w~F4pJ&t$sE>u_LB>=G&^S{EHSac7@p;!^invY}9Hzh3G;Y8+J zGc^Q~um>{eMz(8EJ~`q;OLzS3vBbqNPJH38Glbm^6Q`j^KQNJS@LG&4x|5VNJLg|| zXGl83JK{SJWzp!U^>XJ;8GU*$rTfkH$xFPX)fizRe5oQxa08pA3x-&E&AP3TF`WX3 zIlQX=vei63Ick+H?=?*VZ_+ird9;}=y~e3l5;Ga=4&sX-$IvHO^;FRm0Mznf%qCOA$B9DnhOmOgGG^B5wt42dEk^B;(<8SNkH0hfG9IM znOS-8Fr~7c29%?ie~MM3_>$3FA#G~+7R{%Yl}>N~Q_cku*xHeAydt{!@aN3^tnq#4 zCd=-qJgwQYVaE4|Gs~d`eyZyr>E`y%5wAPo$Cm!cbMI_xc|?uL#lqY2#yY);&<}w# zxP`?NaS4cV7OP9W5vTL;0W07XV?hA~Bp8WH`4~4#Q|JKF8sX$+l1_cZ447_0re=lg ziEP2#&{j1PaS*W&Z_yGE+iw#s~q06?j^M>B8{`(yw77Pt)1xL76iQN9Y7uVi9)|4Q-7J z!fjy#=dS}FN=BiHyVKaKyt{f{LJ-wD4G}xyVl5RZ@-1cT0!Gnlww@Z4or6Rg6pZNv zZXxYkTi`-jhumQ+h^V(u<(8xy(4XXhLn?Xda(yoIT$eNB%b8`LQ>_menAXJGE^do* zDien&8W$U!ZXN8u+e!ggmpi+yvJjCI ztUr$r=i&W1y;B(w*B4EG~)H5((SpTE!g@wALzDS=?bKmV>BZ%Z{?NxNwE z#(Fi#VOE)%iB-%F&{2AX&4n9;WU}QKqQ%-5^ zNeE|LE#PWYm4&2}E_irc^YYEELA1r@gubT@3F%9BdCu$NSg8$jm8(h zq5rM?e~h8L5e@%9|DToB)wT7k|Ig~mg9l&ofBzx>eEl^MheRS&!7eh3Dzdry@`(LV zI5CSM{Za6Bc>nkM2Yqp{)p2uquVth(JmohpX~YdKo8b`DzC4tYts6x1$C7o{w6aZ_ zTndGHIOLGj*U33Dh{1{_i4mTUKV3F@an*jXC3dcjaBa2mu(A5|>C@kJwL$yj1(Ex9 zC*1sM>~imMR4iZYy`*ay7D;y$f0_nC>&@{|vxE9p^r3vk2~&cA*eu8#bisFa_K$bX z0Mv}={vcecm=UYt*CcCj4DE;5ZSf@yejUVvH1u7wH2=au)hA_;o9md)Bi92pMMbj_i4K206B)&9`V)2qsF>88h8}AK{WBX zWdJ+<5pmVe1A6ERQxWBSP{Y3;^1mPPzaR6zpYXq**1|PH0si+Y|9g!(xVbmbrK(%2RMGbZ zb*h5kdAoJo*=v5+Vs!YzCH%J4wqLh)cf-x_IsYI~iin9P^6PmpO~xJf)cy55U<0q; zR1GZjM1DOFU~=oY$KIbbmYAgQTz)+dQuin|&u9zqnLc)ZJr7`2)5rSrIW%z~7p4>Y z7rlX!sR!rR*u2d=p^;$r^c!Rz@J!q+_z40&^^yL39>7IJ9?37X5)G3%A0hivF%HKUW*ebF{E?TB^v;-1|)TOBMI0-wvC~x=v|^@@8AR2U|_X z4E^~$Xr3G&K#j%^^|w65F*Hx*NaEM)RuhFe^||~-yB-ZYooOuYv9`?)cRchXDKV5#DsRl|BWtPextE&P^lxO`*3ReS4b=kU0wk(q*R@jUy) zP1=HSsp8MO8gSS!V%p`vF_G`shaDIYo(KD=<-6N)klP3jk6PKk58B6>2l~y)e*UZ6 z6MUC_1T}vr8uaO2qB*(0p357$dk|@8-aUu3(ISBZ59HVL;NZo->J$0(Jjfyg-ejK; zw(T7^1<~+>{%-RhZTj`Ycl`5*@16%QPIh*;J5uzvwcXj>c>ys7uZ!P254Na#J01H6 zJ>TL7TlDMjkbfQ?((gBK`1hMP&jaibNj3Y;Jw6!TpY*PENWb|p|Dq?myT=CyJQe-< zJZNpbK47@ef1d}hTKhCU{+3_#gl4(5w#tv>Cq3J1zk0bR&EzLNYwww(#n0WJ&x6;^ z?^{?cUYOqw@lfITu;^T6UPyZfCifTK9Phr^Y0Jp=4|xvnIP)04pW?SX#k>HO zj#$(?VhAwpir+pDbYZ+EY$?&J@AU!ymZypWcF(mleI|RcyWini;lK3PvFZ6(`aaI| ze(d#s?2mA4$JqN$K`BCT_&oD~&%pM{-k}}>{KP3>VlC*ebem4#3D1OoJP(L7)2Yd? z=K*gO-|zVGJUD5$3Qs`Mb7_qzA#FfE>C$(&Wbp_j-B`fsx%a2M`}+)$)B1-0@Tsm` zisrB9zUCtQt(uE4qq%tQ>n%FRM<=c4Rs#`!j`AYg(aYv;+wbXfbQ$UF%v`p5!FKi@ za37AtsxC)eWH&b-X&;;%ZQ*4Q9JRJiXzz()5WRiXI+icallmk^Dmz%rdmsDWUpkq3uF<>T ztJ!G5J3N~209;VE1M`NxyXHQ?@(a3IFa`IRjXv`q<{k@R2r2gXL})yp4W|o<@p*kf zxPe;pNVQ~(Uz%`04DX2&8F_QR^+P*6KG;5h#X~nMgikD=EW!zV>@dWO4DsV)GJ6e` zs_dmj+Pj}H#tGKGW%1{$r3#onU}AHRMKX3du4Z>I2pU44TkQ>D0u}EtpDgZW;?zRl z${4y}Fj~B~PPk-`l3=M~&VdKWjf}Jw<_=5-RNz9e5_b zFpL|-kJB^L_L)H#L6*#8sKUdIXW@CDxEYqYd1pSw$e({i zgFtew$aFPu-A(yEQM4c^d^tG}8>nO!cJOb1(R01%gCKXMM#BxO3$*6^GFJ`rTy)vL zL9_CCF4oVSt8I@u;p{^kS))M;CJ?|VDkbCg^m4-GI;I&NDkfp#GR058`k`qr)~{&8 z&%uJoQuJy%N}-sntX3tFZtPrm;B*>uJ)c~xb4{XCb5E%k&J`(c9<2Kme`3x*YX(!N zVi#$p1^xgR2Y~7`%xSIaG85Lqairday*TY7DA%l4qj+V_epFF|j@=w@Rizz%&ebnR z$%GJZ$zHL~!f1HDxwN##LTyT(XiC;pvV5H0LPF`L<<(BZ; z-Yi@8wOW2A8L)*%#i?FGlV=E|VRFV@mi8pe`_ht(Bn{=GlF~gxCrkDP-S4GF$tRcy zRMeSY$LTZkkolU9E}~=xA#65%Gx@x+v1xhU*B=!eT%C!W*kaCw*6Vdx)lq)=g%dwv zF$8x`2z`I^epQM zU~W1TzQTgJ@A^+@hbfh^B*^1*bALMm<1@+mkVyCPH)5wk@;QT%7wQJSPq;ca;QeZ7 z@YH8vtL5;S?ylD&|I$K#5`Ww*--_S2pe^0mKJuYY+miaCzjK&p_gtIOf5JxTGf!!L z%GAk!*@^sTK71H^?r=<_i!_7NpG_0zq1wQt@49MCplatB1g&FwjD*{GA%Ag8h~Id$ z5#mu0>}-RX5vB>itEiZcpSwHlL;M#lMY^hb3v=zfuM0jYKT{$3@3VOGlp~>v*6&b@ zSP_Cl-=LIW_EKLDjr?i3I(}hsg!ktcD`frfT{SGD>z^f>;_cGX%6kF|QMq5usPqp> z3TQzytMqN9->N!wQrEwhdGNKBG`6>fG z15_OKi*%DGf>?^p)A3dBH{QR6hqzHpoy?Y)rpt_2I0KjtAJ+>K;QG`6(^}57TSUih zLZW#v{Zk{ABPA6+r5)nh+EoFoL9>$dOXNTsRm~4W^FR%<54_IotaP&+_P%2DH3%ho zfNrl^B%J`;q$4(_<-{-Z;=*D><&`%9!3|&fU>ama55_4vSNu)*>PY_6{&A1~4QmZ+ zos51*FK|(tRn4CsDjm1p?Cifh5HMJ+F3IDVF{WTtr|vgwhO8B@)|V=(n68SRN%Bs3 z-@Oa4_eOpPB=lXCU-3TuEP189S9K2d=;0GMJB0PMm6edSjwI3ylU_Lc<|_R8*RcGo ztljWG1XBjl#OsTYhyI^-@2@+Dofg{->h&|4kAp8OQ#v>dB7|(pd>T59bD9JYF)$$5 zP%s)QFQ|}RdKDCqS(J)`&8)o#(Be7hXdSowOHi00s{u6b~@pI5U!WKe@{( zD<=H@cWN&?KkeGhFn`#J+T_5U=N9b_E@B(qeHD7dk*@WM_h+@_w=-=TjpZBW=C$-j zxe@O5TS?~Q$B#24Gx}z7^$A4t-LtT+`|zjv&mKH@5Y~}OCJk5f-{0Zu9G$+~M;MYn z@(gYBULo3-bVq#wiFuIv5x?^&Eq>H5e(H}m3|v8c*<+zfA0ku%AR(!7@zWxD&x7)Cb++65aRaNqQRUDXiSm=wCL)rnf&(o@^%#mPSthlh zgn`44vX98z2p)rR>>|6fDMDHGH#o0riZ$^=9Evz>5_Wuz>4+wh?^#^20+WUJ*Z9a=^R9}3?L!h6;YzWDg7@d z>gZGIpH(Z=IyyQy+A!tVQR=GksQHimM@>B%Z=sD<%?(IXP@xDa*k!+ za5Hfl-m+!9%B&Xh*|W?RW&2{Y3#Yq;oq=8B4W;CRX?IP)9;)hBMbcAQWRWyc^{^)X zd$?ky)7vn{c9_GMn}+h+W$+^qXNqXJ!JYz0`6&?0J6Xuv4QrCgS}HwGe52Uw!*3$i zFoXB={vd(xPU7BYol64W8)ajGZ;CU+ZG;6LCUz1&0KR&D3rUfQz?t746GbI_nzOOU zUB!F_^d4_4_T0#M(1M*TbpA7pW%eaHLBctHb!zk@&=%n}oq=C|F*qUUmKzQ??IyRy zgH88g>C|T0_H7xOLwdtlP~G27U16UYjfF)f>+;|^p%4QzXMb=#C=p=>$5`+De2|>+ z&VHV1(zKHO5XoO+RNP4Yq>YkIS28P_%6*awgY!J{iEor-i5q#VjafQyDKp(LV=E4Q zumNk_fiAN9SYQb?Eq2(cdQf)56N=6OKg<~H!#PVfOA;9c6HV}Ael@t){0@}8K!ihR*rE86Rg>{*ju^4PKwE;g9m5vtbw&z^%1rm?s{%_Am& z?r%Z32z4_Sz>Tob9GJBdqU(Z_78W=&1fJUgKAUqw2y%W2b4`3#vBTE~`#(abHE#`9 z9U~Yf8B3Wrvm1hdY+}6OAQV|Wt)OHOQCJfzD>x|MirX1XHe(i9R2n3%m&y(-@D$A-BDNnbI9N9vcK@hw7k4{N#fMYu#Yj${HCH(i!asxa zNAN~}+d>{if~`rIN4_9U>yd_U*BcL?*47)3)~oQ(K_XNW#E(QA@h2|ih51;A9ytFT z*rJ`0$-~5@M`|A7~_`w zA1iB*ALi@-ASC=t{P!R54|}rL!>5ha1|qRF*Z=pLC1|y=Vyoe4r3#6E_RFn;$L9R> z*EVZo5NN-v4;!ni5*sT$a|utAgs7rL#zIsdvkv%G_w}R3WB=p+m$GC3mFFJ;4S)Rk zUt3#!Ao(92uCG6Qh~ISnSJuCr|3Bg%mXzuLhu1biFwnr%XXW|`oQzLvSJ@N`VTJgK zz*H#gvum;zKR_v=AxHztW>-lBtDy4oX1IN@-=f3)jTTcx!pv{Odi~q5dHl`R!C`yz zFZ|@s^?GQ3@QaPGvRW%O_geeSQms}3!mO97waR*}w0H15NoUO?^ZYSAw;!WHEByXo zyZMraHceKkNv*O{TcsY>s`Eo0e8)ef*yvl~Zy86MxTBFh6&QL)f?V<@X zUI>)`yw_U!7LhQc*?Gjtx+fb_xl`+9hKJmvX}pTYs87EUK3RLZVji#2XvAJlsz zZ2$1Ev9@O3t$&L&gA>r_eXc&c5w5J#QC?YJS${z1fBk{9e0j1@EnjNQ%81KW?*h>_ z!qpoAFEwpz;RW%rW!kxN5Y&0GgsLC3d@bsh0|utPN?3xL7yvCL=jSEArfhPqBcYpr zMdg7gO=n06J3~qA%=|=+l+I#C)mM8jH&eG}an*0x5_VIDl zz^s@PpN)ISu{Tc4Ua>ykjE9FNM{xX!wknhLQcFLZeDji&fF9z1_wj&(Dy4o)O-fJ^ zo^r8xR|;S{xt9FC&~s_Ubw43E%|PdPcwpw3sS%9A@$~OyQzxF4U|a|fo%Xp}yA(&| z&R+IEgT^v~*&BZ-?oG9$BFg^bj|CjHN4x#GVS60>o6dKf-SghP@EfXWdIU>Wd#VV6}6jj~J zC_>ze(E}gLAL0?M9M$LIQP|#V*W2Tm{zQ$9SxWm!Plx}jdpSjk4H7*sr#ATStVWpD zAB0jY-F!A4MAM(bRr>lIZ^HJ@Uj4ghLfbatug_?IFHj9<+6cF!H2i>UCODZQd&%RXnAtFVO*l_?!v9L?Nh560_eA%mJkrbfau83jH~@M;g}>BW zT3Zb(JEM=|Gh1-;q`f9Mna`VYD*P%RtTF6rZ4B*95$Q>3v(c3bLVHoExF z!L&~@cX&AXkLgcw_|q)xUyOi`G)H>hBU~PEYzn<$SP_soW`<7W=%?t?04MyIOmMr9 z_&&EH3vXl!jRoQaoxf!0MZMm=j3#iJSCkhrF+M}9Ln&gM3Q<1XKG9!XzS~p?Z*Mhg zVcfWA0BctsKV4mY@bvN12dht4)?TixJXn3Oz0!K{_`%aBPq!aGdiwI=cI(0V+RBsl zrz^;NwX#b5(8JXyV8&N4=C`PQwL@sb`v;MHNb@K8TuUaet*+>X1Fw#0UFXTD?&BBp z&IZQ_7y6tV7`PG1mY9ZD1jib~^dn#X!?3AeNf*?b@JNRU|MN`q3Js8)Xwqwh-zUK1M}$C_uvWh64~J~5^7k$DPXdoy+B)1LcA!*$5uX#XAuknSAFYr3r~r$@QhTpd zv;QJ&+fSxf$U}F5T@B&8Kr^IUV3>dtn#$yK1110?5e3vl zL+$p7ERMU7y)EsvN{z6c2o^9Eq3O{s1F_AH3^2`!e39AoaHC!^mu0TnI}G-{egJcA5>gw2jx5jl z{jG<~A0sZZ^I>^+>$^r{NSEBuvTg=P5sjFP2)T(NJPY@2z|SC zxU(;{OYzqkO9`)tcoMF1PN0Euq_c5-nn1N5XRo9kcLwZKx?J5}?$MNfoG}A?5wYvg zaZ?SK^cM?t;*^hZz4G!bc+icNrl@#!89sUPWJ5V1Fi5oi&C=moskT^^R9Qx$_9e2C~q z!!yEmR7^Gn5eRNj$`45}!_lD?O-;3)Z!8l{v`ZCe{hwg`z(pG~vwn&4r0~E^!b(bv z7tGt7X)NTr&XbfT%vjaeI|89y$_JKD;DIjY#(SNXe+aTEpw2Vm|?knWc}x? z$y?DlA{iTkq$x4SqG1Ha+I+XO&4;f@PH!FUY_;15`|{os%^$5iB%X0io@ZtAr^Ifq zJq%Z$JX{O6-fXR|uB|>;mxcv``a`grtB>fL$4}Q+neW`T$>za}8Ny9F>Rnj8Q+R7! zEh=U?I933}@~geoHNKG<->O(6hzou6m+<%ahv^aZw!thC$#SbJHT%nNrK4{C<<1>e zxF2RNYu<0KDXuHdcyDw+#O@hv<$!X7cX}q#L=;^p=rE=u0*17b#hvgQz{^2xHW1F^ zH;wdL2HGKhp36F&u_zg95s#}Vb!BRpwZM5FrW>p^`ba#k(Fah&D=yZFhmq0*ujV=z z-=Hg&h*SksXG)ZtE=;D)P0? zrjq`^mU2Le2NaCPFeu}aGQo|sinJ@ei|H6>;PC}r&sS^!C21obW$VpxRTBC=qL<0! zLn9>a|B8pWi~uEoO)nLrIbkrO9E$BCnwGU@V-iA!M~xZenlDtIHT>QL9Eh&Bsb(4nM`Nn5J0ggDw+p3PgXlbXFtu( zC;xd#A{ux`Ss2TzU8!$2JO61mnVrWY26~GCdxYFk%+iSfZU!JI5%)rJ+GTt`C6Uxf zw#Sh58sY2cEd2Kv;Q#-OFp;C#`D{q?+Z4-U{lpn9n@8E@;EFWv8r9h)@t3$Z@zQF< zAkm)#gjn&gKS3#)3;4XHB$iHSIU7vaL{YXJM^BFPzi|PS?x&a*dX3WF>I0RBA_N<(j5ykt) zPZZ>p<7SQ6R$_d&!2HsWW3df!vdiz=`-gP0j$it@X5@`L7eEr4$`*pDb4qeot%oQ- zJYY1Wp}{$#xlr3TSO@W6#K>p=;TM*J%)iL5oSK-3o z&&cR#nvp>GG-QyU4!z4Cy&qSG$6zvSONyB z7-d!`#1u@JstjVfcrKZO8Fr9e2O%ob^#|Sw(pJC%wTlpv1cE_Dn8~Uo3r285a<=g} zUA~XaFgi3TFC{0hm_#t7P~$PD@3Fk9>%hoH^^bXtWM1ti<|S78Nj+{@$&eElQQ6*_CU3#?pX?XR@EM-aNj8I!E$kO?cVX$qSUvohG^LWxv zXkOPFP|!JGvc3h8YPhKJ>X_yf$#xp1z-b_yOcO`oB!M8FQ*DzA;ZYpU1}gfT%{chi_1GcYRG& z{dLBm4L-C(bBdVffqa^#);WRI>>FG;H^u1vkx*Nl-sof0A8=YYNQh1)Y2_osG^yo* zi!5Y$k(<1(UIF&(qDMg!DoBnH7oqQvLtw4u6uo<_*?;I$chNrqX<8fu6V zJgJ|dboc5b{1*{TZu)^oT`D`}o|F}(dBF1_S4xQy?5=x0#+7X(;7Z0odKK_3$ z3Fsf{|GT=j`Y2!jZ+-po7yrLM;-BUFQvMUAf#i<4zZ`r`>?y>2lh}SG2ySd=63jk+s-dI$_;f~$yUKL0TE_>6$DQ4S{a3jTqCqqn-t;Mp;kl1SP=ChL<^HH~ zsZ#dh4)$BeJM_QK&VJ{0t{-8J@6ZQAAopKozsKE*G~=#mYrpwomoxQeKHh2`BX%ke zkmJ^y+@^bh>M=?YkT@Mv`f^#9?b zhhOObAHV;mV8I`F|37;8_`#!xuKwf7BfkGvR=@23A5;I)D^uapXlE*lb1_J1rL`dI z_v@~FIQ=nK_VM>E^(g7AkTJ>P{O*xc%5D%jL`%31VLM?22<&wJVU3FG=9sMsulSSS z`wcu}xgnX>Q~|1oE3iP=d^hvwPg&a{2?Wpx{mA7k+himUSHJkcVKEm%GpfJi60#OPLeYepPUd3W% zP_qRa^Q5#!XlpxIDoXUJ-;1rHn5}+JBN&M-P{z~&7?FWQZuDLQ7JV62RATH$#x9O9 z=8Gm&!bVFQr5a;#udvYoKT69b-r-JjucNj2xXvWdzn=fcQl7SHTT{2d1c=_7v46}k z>P`~G4n-rJ8322`_3~uD^41&Vea$3;eLH;6>7Q3nN#fJE@^)$UeJyEnQyb z|8NG=<@-zTtF^GcS~H203O`(4epf;JcfTyXtJ)8~THL;I-?gGGE@IKf z6=9kI08=sfxRJv@?wGdt?TvE*s*JjmO72ayiVYz2Z?(6Yhpmc#YO?zo+~Vu@b^~}< ztu8CQc>6v-2?vYJEw3IpQ&Z3HN{?&r7uz?jjBEQF{x6fRk92 z9ZZ0MORMGZ+mb_P^jR$hOKZhFFRjz2o70_{4x_@Yn9yi6{>zYo(7|m>(XP;2Vm(^T zt=F<`@b|!>7UDLK#-#ZdZaQg2{4QV0a!F(wrs<-L2hAi6qcC3O3Z@nj3M_6=GPZ3uYCKgFJuRjVH)G!~Fu(RJOGxP_qI$K+1Y6CTb2KK?7XFxZRb8;59K~s3P7G`Y2P9r0_2&Opw(FY(- z8Z+;IpAhGM&G;No;&bedw4`%<5sUX-pSU2LZfgY|!gfr1aZNklggfUbnL4B##>6bk zUzk}+XOrWz5x7LXY?;`cOcA!43>&3F4e2;LFaW*bQ@lXdu>_GGt%wsgM;`W54xt7G zRwj|f4PuxHd-{mW;P-l@*&q4}zT()dvjlFl#5oZs1dDfvn-UXDoxN?=|N8zL&Z9|O zJeVlC&~Qg}Ow~|RtfFSDT68PyAJpm6+1YQsuNHmr_TccC8n)m6hWkx9NGM7)s#tAq z*ji&(izXNB>5~d8Lu;l(mrkz-Kr;TcGM>cNU8D|pR%?oBeITs3Wkg`30HDweqmr2! zNYC?#fDdmu_?t1`McaoZOJza!Me9j`lWYM`0nKudQRd!Y-&r!fl(sx~jSU1%hZ9O) zGmAHo&Q?1f!M(>^uqN$K%^?nM4@qx!8JkIBNfuu4DuKV&wLL2%!4(AFjyc{7at2(( zOsDj{Np*xzdXr>qVJ?%G>RcDeY6YPmA5HfjNOd(U~U@EI6ZQSx5y?>ENQGH>j&t}pvLOg#(2p08>(CO zr}hd_2B#4a48m=={f#bWbg|nQ4BDDHqZIELZKnQ(?Mj&%^v^#=g9UbK%ZZ}r?LQ<;Bj_EY%DDhA7TE-d{GonqhRFJ#qZCB+Sc zc&#leDP_aBJ1+~?R1@43g4Q|N|F@Ha6vSlK#ZE zCW)9II;Oo?>e~i~E2(ttF$aSy0$Aq!H0gl-*x^L<@_FvKG>=}HEXDeMud}z)Zo@Q> z=cf8?&D^i`rJs@HH5&Ij%F6v(o&QK{89QgZ;x;(WHG84oxoe{|cV2(FVr@up@;&%^GQdi{d)cpk~Rx*W@oMF>VqZ5B^EeJS|376J(!%3C2CmW8wD=; zFtV_Sf-oO=_vLp@X;|}z;vM6cOb6+J+<>-H@3z~IQ-i$p<@Y<=Eo#}?ZF`-)f4j9+ zEY`A;#H$8Z+1jcWw>0{gTl=)7SmN_hu6eb1ys8Dm4GVbl=B_Jv^XBeLSkUXjHBkHN zf+2MkEGB1#M+k=D7rF3@T=?HrE)?!Q&z`xWbvLv3D$?*J_NMV8EBs3W&5=<@}3xxS>TPFG%OoMP^i3R&jr@* z(G*_CgE4|dbP^(pXdnt_CxqwUT@`s50;u}2FJ$lw8T{u|kF6Pt&|Y)@)o#nMY7kX! zAdoqGO6FULN&Hm)?7Sxd?aW%Tmgq#iefzhl{!_F5*OmIy&U=>G%t_7(Z?{at5v{gM z@rG}p5`pi|2%ciPRw;XRXt3Yn*|&>KDhK>k)~Mpa-!-ZFJLFh;`43^_ z%Q}5V9ng>cgX21j0H3Enqt-2s2#mEioD1n+iq1`W80}qBgdxX$e#LfjRyjbQF5a!I zsVMjwHvmU*YD8Jc7rd>7CxzPl05Z%i8o@E+i`&zei{$^cSFsXA|~w;Z|&jv3hAjh&@aJ{tWe9^^`KnBwUy_ z=(w>AM*!UQ5T#b1iPlAQGAXn#*GLdM>4g`ZCtCNJLw0#Vk`9Bv#WX7M1@G~T_BPUE z%_gICt~q-)$R}m?i-1*G3_(`mTWvtiT!C5vc?REvr-PK1GtFs{XOlP!%5d%5aJd(M zTprB^gVP}N3;e#l{~oErOK(b6>x_TC2AF#N9$?Iwb@aJ6?ybY}Naub0TZ%ko_ji68 z(2~Eot=E#RDDH|@dtYZ4KG&C7rCsI@;+KR(4kOey>eZ~(Lj9S}CdmhSFi2T9heBr& zgqHExgI52%#?*wv&_~@EE*b30zy)(fgQqFm`oKIIua7h>wgWo|(T;wUI(gJPQf7Pz zum(?U2Qndc6>P(o!Pb>gSFeQAA`l?pj|c~`5>98yY;4xlAp46RBPrU3^olq{-gO(x zf#D3yI{iTAP6vxG7jNoNWHT~Y;|J~98l&DER#XFnh{RzD=4}KhIUUT+a}-}$f9IZc zTTcc(lbh7PuUM@AQy{zpPtZUJ`6tCNqTL_0+9$immFqZFo~l3&&9f4Z=Uq3xuo7Qb ziGONVB4ZN~*I-i)^LCjq!)W+D6(|Y8=jddg4&~D7=F-ngtMw9_emKx%bkUj2 zM!zntm3|GZ`EE&sz3hCoo5DFd+o-lyNQ+b&_qfzRG!gqYCy3&7eQKp9!da(DK<&1} z&*3Fj<9jnZO--1B02n7J)wFIHoXHx+05TAmhf(w74g69&tv83w{cSNC@B}{*jP&zw zXd=IY>VCqEe)+|$akKPp>1V#HehrssqS5SA2N$PKxJ1i2Ns)Y)D{+dScQ0JxFTj-W zi_(&T7{h?Lty%2YitO??^NmY}#OK;MGdLZ00>!DmENfC7cF{-@b{D`Il($07t;#hE znt2`K7ef7oQ2%og>X!*;@BDYpR3eFgoV&9ghsxXYB!Py-GB(IgLLVBUbBhxXWcS zGRi-b2Z){b5ZfZgjsbXP90_DSwQMs@zfa64$$M6OQq%faib@zSb?dBy^yG4~)V;x3}Ofui2O(CYY$MSml{ASGeFY~;ldRsM zpj#HR6`79MDVAON2vg4cpCsl~u~tqa*M+U?UduGq1)Yw*h=~voCqoi|VEdF{41@U8 z>J(>FVtu%RgphQ|bOIo{H-Jn??3x1yA^wa#_uN@9Q)3vkSy>}8DCee1hOvaCrTt-l z5HW$dWm~af{c|q=B++jSN_E~ftKiM^KIRh^xzx%VylIZL*(|?Xsj8ql8cbNozRJZ%ap$7C5vL74zL2TS5<<5-EGxaAs-W)hoL z(bRBKM}R-)G1mK4D}>C(;np@EBD##m@nmq_$a!pYR9w!@Aj93)!nX)DU$FA*Vge8A z**(>3t}d#MRnEJz-7F$4Y2L+7dfE8GR)1lu|LG&h-GR&;T@m_RqY+GC|pKV zvZ?p!WudhZ&%$7GdF_6jdSaSa!su%&tTF#INz$|qUqMMs>RCNf4m1;MiSWziR7SvI zkz6?+z$0+5K5FzT0;UM3x04WY-ZFHKItX@(h#ZA{{6P>bw^kEdDeoV1N~~~npVRD5 z{p`tgo?BVCHdng{Y`pE;8at&7iXsoccM^I9T+Z3GP0(9y+(bL^Z2|er6Icz&*^#-% zJqsY_K~>NZ@Q&l2a&@P&BoSlGbRg5tiq}p%Zg^nx>5wU@8qm-MlUAc~FlyW^B1oRz zEGjq#*r+&6w4qUQ#NjCeqgelJ=scZ{!^_R^S}Jsi z^at$%FN_v-%Gq|y4Hw0f|C-IKqr{I)VjqCc@xj4v<*jaE_?AINKQ>tZn%Q9!EaHno zB!YRjT3GLf^|a(}ytjoN7(XYqMLhV5|G728(HG0ympk#F_D=i~LH&D2P@D8femKs} z&aUj_8ne1rk~)EQLQ8Ej=%=BLtB-corrV!%XM<>BmE{16pa=2@j+{Ry zC-_&@m#s~Y8WppV7wQ4LgDx7{Sk}3?x#!(a{mCr|9Hu5DxD^D^?RAL69iAM!PJZl| zY%7J$IVNIfe{1(-yH(hLI_exBHBFEuUBR$}YJMoF**Lyz-0g0bmIysWhiP!D11IB6 zFRhk*_2x~@|BBG*4qpMuYVIq>x%sck7v1hU%E6ZN-xIp}qXK)wyM3RFrIYWMR*Tmv zdaPpNA~7V;uU}*}3^}Nr?kBB}iO*q8vavO@#syMLRHte-k8+2>IEVd!a74)M;`t zOEn}((kYpviy{q@fI-8s!L&-Y0P30~2JXgqq?wX}Qrac%8K?X3^<@Z(aD6{Wq5QAKL9S)^{dyH z$%0`E6{1YX1b(Lb#0S?E1L3@{E_E;ulqWHFqY7PTnQ=BilouRlcP>ATZZG>pd=hR$ zn$1zdmE{}@oyT4Fv&^_z&SCc{q|o{(d|OVJ|MvC$ca^s`4CDR%ch&0B^1IdLaru4t z=diJ?^M{)yds&`y5&1EyvjEU@<3A(33B*~@#36I3A59l3rNac#&{a&=1}~-N(iG~A zM&g2Y1bIYDpC#6jb*R!-%$Wl;>(*J?6<@%Gdae8LN`97ked%6{BT+|t{56z6QS&zb)wVxO{KqBj zYIrUVrOYBNxjm4A@(DaHrD#aix@$(rx*_-1G`gtKnL&lQK3Anw6A8)B__8javMf)~ zxGoO{wik|>In#V?40JDP%LGMsVV%|H7BfFB#Uro+4x6t#oGgt6z0L3w35trQUzxhw z+6VjSe04?`^Fg18gD?H_?3pfi6jwuTVIIY4)OCm_6}WhFPwU+>)2`EcQnmr{DF@34 z177My>E%$$!j!ZR02g*oqAu)8ooJ3iQAEr}hm$1S`sN#luAHa~5H;48z_`q^%7utl zNaG9hapg`1$qT3*j6D*ZBLM2&ZrV*Y&d6$M-*kwlwTIo4#5Ja`anLqByb7no@!aF% zL+>N;wsHqw?>I=!-l+8?^hW&F`hACM-~P+0W*@;n7jzML=OFZ_;<=0GKU?}498Def z+pi?78@KM^`P@etfAYH!Py7L&^*yhY2cB}8gF-UB_i|-W%GA}A{0zfitxb8aK9c{>DSUexMONKf3KyI1n9K^E#ajdp*{m5V?k&g#Vd`x4^b7$ano+{TpJTHa6 zge>^PA;~=(jr&W>%jHuM2!&bHAVcHS29=%h5_Ks&jD8P@HImCElgyaoyM$#nQ%Q{& zYrbvtN8$;`A4{^OI2m&ycU}j?n`fM8Lu*mef(NKN7)@=j9KMHmE$-wMFm6ySUuQj5Q`is1vFoRWkR%vY0nVW>uqJPgCh}e_Uo`3_x>hlOQ>bNQ_8i zD(yrwbu;sKb(sv@j-Y%Po|gaib>qGRDoT+ksLSEf&1@dsFXL!JQmjiAU*Y|&Vlzzy zSLlfp%-QL%xSbiV!uy-y{kL!b7C!$U8_(arFO#q9+H%_9Hz_5B#fKsVU12@B+Xb|l$j^j z7*PGhDDAI(7)|JWL!x%IHbp7TH%i(~a1p7WS06Jy$xZ0w#<}$9f$qz)ofH92*uMF9 z=Fq4zmygaBimiBdLrsdAvSK^sIKfH6+5({mTq~V@Gb_?-mDR&j6Sb(OW4(54&47mL zFeHp`6#C0##98)mWHW5se@Fi;Er&mw*wpO%gi`Pah9H_5Pza; zTcuH_g|vGp@v&KyBbc(^pLZtTmZar-K9?aXJM4W2MCY;9X>hdCE$4z9EeY{jCWl^OfP?_e)Gq zZsj7R6Zi3EwkIc|WaO1nan`%r?Du!e1^V@^a>tfqG_Tti@o5i>KtV}3USBw z*_!SkZDf+uzhNaCWy`-3km z@dOHJyuJ?i;j%#+j|4468=tZ1nIU)vUwgv~1JuZvq<|o0hatWd<_-WTTxD*d4R58H z#g^WcO8U@SGc8dwaY(ic(b9PxR8o1mpAP2fo>!9xG62s5>=T?p1 zm!w@^uKa)gEB~Qi%LAo63J#WL-eB`!-9Eo_az7W%1z?R#mAA%R?I$yy_{Vr|N^il# zzlZk^vKKawVK-P>K`1gw`u(2kbt6PdKhG;izkk`>ZJTubclh4;QCYJc3lTX}UPn4* z1Ip5xrJve(Q+{%r&GOe}W63hF@yKhT)G{X}VP7gaU!kA1hhIHcA@iL3`n9y6zJmw* z@Lg$X^<9Y_cEqnolaDll6TOVZ^-cXBW0i5yo@G>XqkDZ0t{a>c!?;fm`e$%pM@Hm2 zQC1V5u8*xX9>EBjD2dC+wvk<}F1a_9EE`AcN7m_XcjpBh!!r?6*;jLpcU$HS?3O2o zwqk+JxOL_g{-}{&miP#{hzO>sS0f7%)5m6c zsltbGRu_ipH8ztb*!ONc~U(AIc|y%yby#Zx(W@vp5n z#Smz{Y1vm&c47CpV@7Umy*}tz3n_;;(Fq>M6He2>Vi1dRMmJhx9@0KWJbltLS}Abg zf%QWoG)+6)tfS5PqX2yn<9X5V-mhjH*4&Fuci02(Szg*}zS^N3+}kdD94MDTIey*Y zmqv~M>{-B$K0!7%g!l#mUo9l&fM&yyA=w5T+fkFa9ezy&n~q4uuRGx#gYDge!xoCM z7(4WUSeel#$F^i2jgsokUH!1LzrIEtf*9$iSN#z^>J0{&4&77q8Dw1tloZsFL=G2Q z#%sWT85-~VM4SLB8h^vCQpg%S7{mj0AOMZd8Qit24n8-Qc3d$9uQ7RB?FAW>Q|r`p z#vyOx=ps@#>WpI_VHh${B1HxLyhxIsyC_^8CP6R07zmy2(=E`S^glgfY=Rs;;-Xh7 z$Pxz#sZ>I=*x%hqN^ie@&xWf`C&7O^9Tk~4Ph-YQ4^%wR zUn^xj-0l&hQFdiJD9?ks@v`G;|`t*GsrhxbN^Kb^9W2zN`A6s|HQuU?(EZG z?`!z~g5H4o3*N9}N~UKLXO9n#TJL=__^Gs1@Ug18sdHZv|JqulkyMC|;WhhEuQi@D zh{caDx@oxDSYdl~d=*cgA@c_B2~HP-guAgI_V%FUk=46Xv9~~u?)3!`toz|FA^sZD znY%K7jIR`Rvm}^4#(!%ekvJUnT6i82J3Qa8*@iRl!q;>IZlCNCF{cC8n+?adp%_?6 zCL@kWrpKBvo}1093;M#PQq$?|EZiOp_97d6WFt4(z6jkI0wMc7&0Ca=H0h`5%Vck5 zA9C(iytDI2OS^8#n~0Cv+zf9jR#@D{{^2SBFX>R%$4ouZZ;8aj6X-gpMB<{Uir}42 zrPAr7(;m{ebUM|l8LEQI;XZV0Bx>^S>ND-iOr}Cuh5xTUbEC}93W#1SdXA&P%)jwe z1_@tY+S(FA=;6*Xp)sM(C@~Lyaj0ZWf=IZR-9TkQ!cv_^ECKeoOlU(1zc^jYAQs78 zF#(k%wKMnW5a06CMHH!kCb^ID8+<8oZ#)s2M(Wd`9>PvZ-tS&oXy&#uQn>Lbr#LQKm=iz?NB7}R9g`Y7R4P;4L6wdlpgziH*d2`ZPndu$3j z!$Z^P1|0>HqHLXJyWKiEzCmkIEEi?IHrC9diwTHsvvi`==45KsS;z+jupxD%o@xOC z&VNT5caWFK*hAlDnIOLEaWN+Yx=~Ym-8<&`6@s@o2HQ(qjo~{NqgiLr;~T~~-Wvsp z@G_Wsy>8Wk&MnsRFg&NXt84GyH||%%1#>6LU>FUaaMk=;)E=|-KCq7b^KSom^`3cm z>#e$=(_DmscZZlN?9#e%sX07vz!f;c364n*+q*Bf7S&MlUEb!tF?f@iM{jW69bp>m ztS~=L7K__IwmYwO4_-9!bMFN`IovsH-9-tvK;AFxuRw2-m%tZ_zKaA_Yb*p?Vghu) zFixT~Nq7)}$PdrxmQ-hTcz27rZOgo2@2b(Tz+C5bNn#F;&HkQ7g~_DkxPqbAQ%5wf zb1@*6ipUT5-Wm7DTv^^~g%GR+p#oXVLBOKfU}_@dkUtG+w@f6F#LIFKUm>P2oV}$! zP&*at!PHL%bVGka>0|WK)wFSbGI43~mp}a}d{%wW_K3>}PG|JKI{;Pg#n6kLLAaw8 z$^r~{V9KO%=`Z}+EWdsGVr#qg>WFsieOZ!)UBsWp&QVdm(Ra6JIGS#j-&IiBr~cQd{?q&S_9x=U5J1KQ9i#fM)h$G4#7cqbNDwgRHkv&Q?e6jb zpUx*k8euhjxAty5e7BzK4dIL8g@+``(u;UHO6L-NLtXY_0+*yo3uM2udp%7$U9{OO zc^+Wt^4}U^<9;Yf_?DKHyXw*wgzr|LEsx8k&zX*o&RD8hb+0#p)8(RRb?`w)Tjl4s z5d!*u3mMem(sCI7{O;Ym(z{jsyB1cc)A4jt4Of1x!F5c(T2hqAeC+*}eo6#$zmIqS z@@|d0DS5?w1-t8#-=^PnS^IpMy_3NFA4L66d`o2!l97>#x?@bN1Yx-o@0%ul^lGPl z{Db}Qay+A+QCfk{qiPd+u81(*D7|PJne>Id*dTgfuA#dj!|`Hds8pX7!1w-b*t2;2 z|H56r|C_g+fepn=!8TgD!i@}50ypdHRJ8{F2i~@$!GqlU?U(!Q;}hFNc)PE|*AhOr zb+r2uW<`+&Sd=2L5{4yX0_S9N9`&3Yp-sdUy!`3i&nvancfXctqSHzEDJ;KRS$$YO zg|H!&!@8)jK|CxdWp*+<8vm=lwJ`LJhFZ!)+*Xl!3DwCby&Oq~eTc|){d>c@WspRYT0)`w!F)tlOQ#=k0;lb!;Cb2t5}cW)@urlV1)j(5pXh!F7R$V zIsb%(mP%o%Q)0hR@yithq~6FNTU%PZ`@B!QVI#Qd_MD@p_usw^zk2`vUB%#{#mRS7 zc_sh8Pc7WM2s7obS(43LT3*ttL5Pv_+E>>j8=8qp@ZFqBnhD%rkT>w$@~1(*Sj>Hv zR;LB(!0^w1ZXLV~zGm$RiP+uoV3y*4fu8OXaoj%#Un3LqdB8_~H0+><4iUy@0V`w8 z6R@e3>d(Ixb@!|31EM@6X=>>8v{{bI&$9hIlQKUQlGJ|d zk>VB@qoIjS^?N6LF3@;}?|uoFZo-l9-M8Tq4^Va1%ajBaewHs01oTcxni6MrxDWM7 zxIDi$!4AUWHJm7f#~tb>U0>V%paWig}D~F+gRll z-lsJU*c&7Jl27k__ZW4Irgr_y_c^ieFdC0JWkx)`isO;bxw?|OvWZvuw-gON3@8*@UwI}^qw(9 zqK`2ITj;^?pOSqzr{AL&(y*W_ew+JZX_T;Co~Td$XPiwJ~3{5k$cSkXE6TyP^ z6_XP?p(VSD>^!`6&CZ|LfnIhHi)h7!aOlNlYU*Pq!-Pzg-zOrf+>1J^!M2{Bq zk?$CCpv3qcl!dcnil=g)7#_Q}VN;l@Z=tk4|OZ?k^dFUIw zyo=u;(|utoG-O)RT*YC*O8<<=x0f$#gY}B`9LF zZiZ}-@fW(Wsh#5jnW*qhR$4KRO^c+eo9}`<46wL|OuG_z;>^nD*Sl0Wi>2Foeimf? zsnknVP_k+OkbRkaQ0-!P7bTw4Gx`nL2cq3NY#ud_4~{-l(|2os(DbP_-DYN^tBTXc zYn9;yRSq%^VW{P>p%JWfWd8Nl;UP{8J$+V|%>CO3ZO@_k&C<`=QMEwSpEkoc^vmMk z30w>}mwx8|)=y`wH}Un*zZ#>`o23&;XJ?e+G+@;`P)JDMvGd<7)4YtSyc%ZDUcTu@ zIb&VINsSZ zPMG}oxN~^YeqAYO1sBe*zWT};&HVPJNj10=#8p^S4jn386N&5mtPS#WY1c-;PI-il zevQpK`+B68zXpNgA(jm^d~?5EKc^!CNYw#Tahf>dOldGehJ*NHJiso&+g(!kR@7z| zr7qqN0y<=hDsC3^Ze!T-hlye@r!@qYzI(g$p8vH{E92kg8i%x7l?A?}CE!b*)UV#5 zr1q=0rQX!*qoh8G<4eh$;XCnj@(Mh?g?JS^9bP8$5nq`jxdap9KzfJVjMjea}bJ z!qyXpf~EV+MPoVyrxl|Jq6tf$y$@Oi_VA#+^F}5wp)qZw5391XzK=AI6;}yyP{==2O>#mmN!CL;o>Rb!& zZ>cp+D=2$W);61H+W!favzU8iOV8SOXSHw@|9ZH(7M@*C;S9L?$oy(FY(lU~9yXh$ zQx>w9X!fV24DNerv~K>&YgjRxkpDueHqSrKj3|NPPG?h;Q!9HI?r?B*c6MY`YSdMj zuS>Vg>s0%gTb%1_(faJE^r!=lS6h_aHDn7EBDmeZ=uZizC!_u+V=HLlZdufgNfQ82@=G}PP{cSQv8*vPSnH6hcj< zK+7FcpZr5`ww?TuVAc>1xe2(md8qoF(9VasL(VP7x8$VXwH4`km&&GPS+yQM0yATX zd)LEX^DKwHU)k08tfky^=9ApyCA^uP4e4c#)nig5%oP&k9>S^wDW3bpF~Z6 zu!U@`E?2Jb!cVnHrZ+R|?B@kv36qqmT7L@{mD4YYJwVKFydCESTXY`&kM!NBocE5p z>$UUMKYr_c^$#HIR|r9cd#tX7Io05+4Xd+*5ukX2g&XD|oMAi*pdd59^{{z>3V)ZG z+!3Vz2o?A$i~Yrz{Z$d-ekGrjvWL~SHD3xD&#V@U&9Aj|hh6-Cee?cz*|X0FD%9D? zBz}Dsn+%}o5FsxU6&S!&e}$@xn;Sv!mCye>=6#;AFXsI74?O9Cd7Q627H1)Ey^xQ` z=gw##{D8F;@Cr)!iZD@<)_&z_q3JDOC-c)XJ+IuCq$$_)g)^X=pn)9Au8R9|qh z{A%#Xr|s5^@pX8RjKL890QOW;bc_cv3Q;k8!f87Qb4*HS%&K9QvB_exGivA$$yUx8 z2t+*QwC}vj;M;}078#$Or!(T>5n2J1fb%mOq!JgXI!T5aQ12>yc$p{AowZ0$NG2FX z15><|3*^#9a14DTV4V(QgD?Jya%VHo6%^yU;|{p9+z~;-v3JGi1dy=7r1+LSBaL3| z;LulL7HKD)?hK8IyT0?Xj=*G+kTQSQf2g0dw+@b4HNUL!+&}Ik zj$-zE**ZFCx9eL6dxtx_JNvKh9C-ejs`A{r{3;Cv^{PA@PlyZp?b3tyo+-fk!4~)e zbC@P8qI-kc2xS&Vn=8-c?@`j3aZF>?({P3(metWB{(C>>og|8DV+(LEOR_CU`Ty8n3;=&a`u@ zx6pH4+|Ws;o$Dks7oFYBJ>^^aeR-40^tHIRe9LTai@#g(K9S9y`@{asV#CcoF|4*` z)oX<~^y)MF8NWCmC6ivI8ve{dS^doiYtMeQPF-Q88o&=k{7_N^O>Tw~O3Z;*9-97= zUk^uWp(8o@^kL@gKT~x;1-(jW$j?p$s`Liw^-x~cN<7C>)r4l`I<(~Hna5bUPAZ{v z(y_hdzjwsS^gzd}H|P$Km0sre4CpUeFh#~=a7stC&|lxHhWj&|ES7$@a`vx2C*{e~ zmBzAj$-t1$!g*DuM_d2mLVY>ZL>FqqVLs&mRt=X{T`bF|IdIVXwcLB%y8` zys_X6&`Cz6x!2m|+~ZV(g#!&@!k9O>yywTl3 z(fUy@Q>5x`b{Ny9^xh9qlwN43D{p&)9@pJ0>T7Xt1+zuaCJ*z~+uS^*72Xtfs(2*t z=Vr$-JGl-Pbx}C0L2pnppXPc`Kg#0g`~SQV&`-%*Um=9)KTO}U!xRi8&29j3)pTHf z$$#;06QCaI59jU>Wa{_$eb1GC2Vhw!;no3YGgg+VDmIko~E1~ z0a!3cqcrA?UKQUK6~UoG+E!cec+n@Lr05G4tz`Qpczhu$a{IaXPDy)_+Z#eOIwg8Z zsN<#)G#7zR8nd$##})N%1Sa|_0;rDpTj6T%wPNu4Z*S=Uz+U{;1G=RK#<$%&7Mb&? z__>{VnK=vdj;wQ3W}XW0yo40cvVIvQ)goS?;1daQuin5p+-Yb9$!#+*kXzir;`!v5 z6>nPe5y%-%ZQh^Hk9EH($ysr9uhuwk!zp2QmQMTA88ek^0K1F_V<@apOLCH&LGz}{ zEh&d)Ez$@F;_9sNH0qidRZ}MyPG?gtfXkV8S#3wsPcNAvVG%3eda9C58^N12?roMe zrG2{mw>Qhn<$(T_#GoCXt2Pe8w=t%%T%IGC1*!Z z{CP#&XKS2K;`4YCkGimN%9Iw5R5;Ka8corT(M|xVNf2i+ zH+I>Ag=U5xJLVg2ZtkC@W%FN|*jB=YIH&0b$pV`tmIpX?^Ob}N+gQzwKz$WD2^WJ? zJ!e2PP7=^{Qrc456;1Ngq}dDBO0Z?><#;%4L}l9X?j<%_vL^FMFn;}&_)|9?Ps6>X z@3**eGiya9Wly<5BbTd!-PBaI6?`P3X*6_y%5GS1HiZJlc#Vna3SX)4?z0 z52DC3zm2|aZ$^HPNb&&2WoxtB^&V@29e$_3H#OIe*J^j08|-dx4toA$A~y1Zevq^? zBFVbsy|*daxRL#96X5rn?eFpX{k_f6(0i;od-$FH-qiFxUMtDs#*O6X=7#r{Q@HU< z{*`&>f;aHq{T7W6d7(h?)NQ>4=;j0zGyxw-T+3x(03AEm$6ZOOlEBO8Bd zg24&lXP@qa7$8dr|5YdayI(UIf?!cWf`GhdZc*s8`@D*qLi(<9rcCt+mAoL<@8@p_ z_^CH^;CEFM|MPAYy}VmPwIjI%i^8+kE$wSvGI}fdQ;JA?3tFOoA?IPbS*Ft;S_%*@Q3Iky_z&T2ivM;ruVR@$MyVz) zu{;=P2i?nI(hDCwcwjzu4QHcFQ_uTyI!H)sf9Xx3rXh^#9CtUed$c`+k`!HtrQfO5CECu8aG-Slcl(V+L&|C{o0s#X}3&z+~kM9Lv2j$j>Su_ zHs;)Xa@pDCGZe?vOqEFGT^W}zUa{mdZjKF?N{i{ux-sCM&x$j* zT5ROp!%eG9H4oEELY4W)SA&A4A^^=jchQye@8&qtrTmkO+R96T<8qMd&c&Y_6d>)~L z^qdv#9f;0MSq%boZxE^~$yZTu4>&4l(ghCMuIRy5SmEmC-+Y6=piQnC--P7sBN$ie z$p!te1(%&-q;+5Q*V0?cHN!8u-G<4UjhP{2LISaEv^y_KSIX&O8(CjWh741wG~9CD z(n5&+b(Ksntfn=E6Qw7dMGn3vnUBOhEYb92hAZ6PjErC(hf6=_G3D3#U@MnCm4JT{ zC8@XfTybl|CPTF;p&mV1SzEE8T9Qs&aMpn~yPl}mGj1fO^&x*>X6T^<@Lgj``JGB{ zk`&>ZUBK0;x908D2h+=gm2xpS#*FJSP*|VDDQEgvUkmGmr^sE7XVYX7*P{pJEEw2Q zLhL89!#p%U9^prlp0DeFALxG{de8!`*Xn-8VP5mV6Cxe7W4m)YP%oOO#bk0Bjnkxe zeRF55$w0bPwY1x|Tg0^`Ba5N-mK0>)d)?Xo5j+CNpWgtjb7ZXKu5u7rWZGd6ta+1m z_z$1t#N9no-(Bl_MzjuS4UBG5iXxuH5(OYVG1+AB@wsKq12f7d@7tAeiU-$4kX-N9cA z(*4=43wMEbzFe5s*cu@SJ80f}EidsL&_!}po6-Z4&dR0|Zrn)k8LjER5A?qe7fdmG z!?0XM`vD?siu}<;8guCzdBE;?h6}78J$m3gg7N7?!q_X9Tym%R=s~FUTa!uf)q;EM zg}KOlAISx6&qjod^|PG~lpa_n$l#Jm8-zRMf-T}-NW}FN(7=z?75i(|L-(Cj??oGU zP)K}jT0KwHJewi?Q;#_GzuXDX3y6IIS&xc{y$TJb#d!D4U&}cNB8s6&ZV3EeSmy3fb7__QIbBmap>P;yQ~CPFgF zQMi>LPq7y2Dw?SEQ^g5ovf^H&(Xc$&lvDYNwl}AH~y zw}RqCR>s-G)8a4ajssgW{zrwXsk@!*TnZ+?k5U1KmaO;Et*5qQj*!NjSiu9xz$tT~ z{_#}+*IB<#QIup<_60Zf9Fh5 zLF0pNCYqiaD=gL=nSC!xG@fm0GW?q}w788-aIxE2k-t+xXIe*RQOSwIk*^gO7Ww%| zd4(4-@%{G+_V+_Vpl+N>Dv@Ly4pE*yK`sHwXTpVbldF*$ZRgIpKe!%s=u6v%OyD1&b=?q`(xxA z=NpuQAYYc7Fj?5!G^|VTTfHlGg+2-gMx$6X!1fY?g4dw_Z3n|>BdE)|q;B+5DK0n< z=Iai%10DuTT!qSBcLnA#^D5}}+;3AVd&*{K>nTI%v+}G|lg2i>?vTj48;wW;K8~&jL~n@L30PE#G4V@JrEIy0w7#u!2h(^+pMbWrF42Yz z%_bArx?Sd-NqiAadYlr5E84n*wyqK937HWGK@1?KyY<61tn0nHur54oBnbNvMl1(28KbL*$@R@$*y+TljKeRAV zzxq)li)Q8}WIFb%)^R;3%Pis)^)E(=a^osKN)2DWh%QF`pEy7R*;j~$U!yFS#|_?=GH-Og6#bS*epHvlq|eWa+BiSA)t z18<&#k)8ktz8j>VFwFM5R4`b91d_!Ht6rE}i7$`LAuiGTOXT_k3&Zq)D~WQrs$O8{ zrt&e`aqJ1PN3d#9LsqdUh9>@7^Qlj*cCzr^pD-!Qvd$lu?=4ECG_rj+0)O!($UPyRzUFH;83)^wBk6fwOykuCG z9XFZE79v8~=K^o;r0i54aAuE9nQyJ3WU<}4m*iDM1zuT#9V>N@UbbN5lSTmUebC z&scB5>9SGChOPxeh=a*&WS@%y1%AHj`)v1AJdrvI47DC(gzOXJTfM)BxW6;FQiG0< zKE|Uyf_=hY!h&@0#)1A_xtuOH?uX0E_=%^u;%xbtrR-Q`_WNW{IkRQP$jxrV>?a35 z^>NgV>k2#1J5EsQzO3xN>#S#V1-6zPi9Wf3HUngp&5mtK_l;CJJBcr5g9zsJF|yZd zK$17Qc7TypcY%~ylW07a`|&ial$oxdR+r?0M-J;D!ohG_q=ag9p^OC@y@zsLuse4h^(wBstDH`jPZAaa~;n zq-=VD5p?(r!5Sm|82+I|DiS-ApOBh!NDjoa%T9-a&Wk7wBY9glYU0}6ILh6N(8M(c z!u?}}5e!g4)X%C5XM*C|=49%YfG&e=+lWjiZ7M?2SR!G_Uzp0ANW5vLcBkjrdkOmY zOuXH#I`w{Y6S@rxx?@q9a4?$OVmmM$=-!9x{--Km8q3Cx0qP{$cGG8910{Pzi%2B9=@FF9_*D29dD$KX-BW(!0Dd=0LyRAZ`z3L@ zqZB4wP3M#e6P%PQEURv_El4w1jc(*p)5q|e{}PX>55++fh3vqs8L1Q=itbo`cjv|7 z1{_^>w!9UJS9Qno5?;cq41#~4HqG539B%)(!yv}t`v|wy#h|$6UhqwGDF0HHNtp1j zrA{{mjO-Z=Jg@P1wZ`f##k^a!v0LH9R8Ga5kx{Q4#)82#?0Xx&_cG|ekG-88@7cS~ z)5$-AzjovP=qeieNb_JbVMT{wIC(BhCJ_)uaWEVJMn)aH%urSesilGlb#UaYN(CkM z6rcWt)+HYA5%oEeYcRlV0q?6KU@DBc02>Mj46Qbrp!Js9f?K_v(tfGT9hi}UG6Lcv zyb9h&Xt&kNUF&l*d;0$f_@lt7!Je4 z%Ynd1W%z>Dqb;wI#AK{jx$alwu@O_@YDRvWo)A$GTf{Td!{P-;oTF018iWCEM0lrH zmjD!G5mZtJE3izk(;gmth`?{{?uyC7;!Ap=iOxSa>BXPR;8nHreV3+1gVAL;^gAf1 zJeA=ThYjWC&kw!R=IOG>nNA@W&0xZob*Iax&1OB73G#$!Kx=Y%AJFx~LpXq~)9-Qx zp1jez_o@r6AIZ$j)tKBYa)>R)2G`?fHN<(sl6YAh-p zag8CHj;(7rrQ#BqZLJb1_y42+7foK2^!iP~teQM> zj#TSptKZ*)Qzm4o=atimz+UBi{#UUbiHS_j{otYDwo9VbW@*Oe;qei!sp&|yd2Xxo zN@C(R0)CC-t=s7;x|ZyAQKToHN1ik08|jFdM0mnahzTVh&Gx~5Iz$;7gOb=}7~NA& znK;S*uQc|H^;~sx9Ci>5Gq}ozLCmD%ITL8w^uiO+Vm@hIKM}s8R2;aNaiqim$T9RW znv{a3!Z?UW2s*)sWZm1JKp*^0E#LPQ2{IuAIzl1Q@l8s0>@fgbim=l2*DqI5weEDi zvQv2G7T`jmoglLV(6>1ofGS^1{}-Y9sn-0f^kAW8TU{^Q1&CmGyi^Ufe`WazJ>uC> zbew5D^tO4kwdFoy4MUWUz2DWZ^OO8x$MPF8VJZ)i~g3XcDk;&)c+O}0il zYIX@r%SqGwt9NqpsPX;T*>ba~6PMS0WMeSS@{9)LNS8}G?h6j9^j_Od;cN$el=I)R z)Y8{Tu(Xm)NCGPm;Ip)~R`*0$8DI!c-&CPyEfF+SBvGb~WNIizhP1kO6%SF)fTx^4 zIAQ_&%A;!N*ExD#^cpMaK2pq;8)=(TZtslJ*=CH}dNzu&fSbuHt(P9Ofu_RAcG6mb z7nCNYEB%P{og9S)N-ioP9gGW*(~5k6RNCj!=ROMZ$tB-vO|FFD89%H7f}B=V#lZaK z2@dR5t`nGL3rsE`OnST^INaRvS9kv$uLryp?^_Gv`8r3GSl2c*3jM43ixi3FPyKqM zaRGzSAZk_64$MHSjTBotv}Y%9X75~88AMo@rHuP@m5y<_kP4P;!7=e)S#mOi{au*2 z%;l5yczCnMLsKc3i=vG1>0h5Y+{F;T&cx@<#OxE0NH=|C83KFKepeGwwZtC7aALeY zDcg^Bdwcg~yNy?-h;Z9p10G2(rM^5bkU+We929Q7AUPUI)N>lfQfU$BID#8>vytYy zazsWVscQ^lv5Ho(??Zr8u*Ll<6?6JH#QRN!_=35RDYZ*Et#m|L%49cXo~p!+?^B}2 z7caNG)l>h^#e&6*gECgZ3J&Oe2R7WY2HKs3I z2*#q9E+`6lilF@qpArwJY|?60*-(Q3<2{iFed$ zqO~`1Tjp`C%}^1k-N#i_@dC#QDr9%(a*`L@YnkEDQ2y67?Llnx~+dqYP~>BNs&zV0tQytbP|YOhZtD9YP|31&~LHvswW1*s#nm!Hn3xD zfQ_I9vf+vWZMc+FSVLuLJ4m*94MfsGyxd5ol$8c>0Y4w_v5 z?y1`V(rWA@hegp;r>t}78Er4+3m2!DH23Q?ap*fd z7?vz-)!w=3;G~RsSzQ#!JF3c(?_yFhQ& zA|S#c>F1*La&%*R0WE1b}ZNN=JH0ZFE57CY!oNEktj#Oa2; z`#xAyPv^lbG_wL0+vJ6pzak&DFF0$Lc<3rbFYHFr0nV)dE0^CiF!E`oyAB?t+N(io z49WS-d{;F$V6(cCBInry@mWqZHXtttWT^^R9}F)^jgK5F!A7o}5|VF8O^@^~sb!8~ z8$gg0XaVl@ZiAwxNJL>?L)#4Tgpq+9FV^5(~FkHg5lRm38k9s_H1$ zKypce-n6$<3_`;mNZ1MvRxG`Vc?E}zgCAERSh4*`dpY)v3CeL1bjjznUn;n}$Xv{% zSrB0t>jy=l$83Qu} zBJ)w{Fav(R&bKx$uTI8OEw)r+!`6d+iN{4wzgX~is}4^(qE`kyL&Yr3gEz-(Gs9Lf z{k&->;|{jIji}SAp2K1wBx+p47|OTuxvh>+80~@1+huj&E~_gEoeN5E*%fu}uFd9r zt(YZ%i)bcYOP> zk}Jwx#dGl>Mki}VAuXAzvFkgeFF5U zd6m2oF1|HQiT+i*FlIpLR?P4tXkP`kP#8ci zlT@)s1=tbjHEYQ>lB}}l=ilrW-49h!Q!24WqrD-nND;<SCIpX931U&$e>M z#aALYH@z^xNwWv%K8I$(?xoqb#rmzf^_Y<3l5~v5xceo@Z)rUOzShXIl9wLmci2`0 zEADKb2HtNo@AG1`T{w?mm_+}@+Y>P)4_K(5) zS@5gYcAkT&(BdntbXw5(MbJ01r_U2iU|ktijbefE+MU-2Ush{}GR(r`Wwa1hCyY$# z!Gi}FGc4`|N;N?EK_f$)r$@4F?=QJwapqpC+@CfP4XwPK8)xcz`!8!wM9LY*Pf}QC zJ(n!g5u9Md_BgzZ60}(q0hfb%pPC7}T;x$KRvF4c#NvLs+>PqsLVa_)W%VehGYj`a z8_2ufl3Z?CYt@ajjM4ssB*@I)^TS}e$RUoJTM_qcU9@s)D=^2%!% z>UqCA{e5HABHeXEAAjD!+2LW%7sJhSqsE{QxDDr`pe!w0_5a)$#n<6@)G04YICZF) zJI&9cGf{UYVc|`}cFvf8u-CJJr+K_Y#|T_%6wuc0PiJR2Np#tMPaNrk#TS`%s<*Th zf0cRp+?lZ&sF@T;#BJik-Ge-JF||NKS3T>)5 zJ99X=A#)^!8uMTyg8eUA^fvytGoH}HqDPWhfUEOljnK|$Fv?@~6_j8;e1(R+#|!g| zxso{H*I?j)Y{OU4gz0kn>2h@*(JZ=?`Y&Tb^9L_y+zN-x@H2N9vj1!RtVU}qiX_DX zlL(XAZ52j;R;RDVAh{jTt@3~LN}yi+?ia-uO#bg~J<*8&4pvoxT0ez}MWMubj^X|J zI>nwrt;n8N7P}Pax_G1Dtrcp(ki_ev-E&%rQt4#AE?*m0QMVfo%T@+$l{8#`|9+m6JABwW|0F40YIH2R=79UfQF*Cn(K_oBr+mg`n1ejs69+ zGoJ*eqS*dA=gHhd*+Pa@b|%Hf&O6RH3jVI~t-9bR33Efu^E2Tf|r8Ff;hn8}anzrwG zySg$`KQLYn#k`Sj&hqMPw?kgWbvw*6L1gt>0Rz1p-Lltc0fG+7y^x&ArUE76)zTEu zYB&i)smMS|FyMyj5Z#p~%2}ganXY-MpkL9z`!N`LKhQOZfO$5F2LAhC=wDIlUq=B( z-VOYV@OhmswaoCNyX)yltYJLm<6Gb?$sJ-a!n-S4uQgA5>__t&2@HwupXlPsSKj-x z8^|vxrA_XlmwrxLxJEiFV#v8UU!R;9?etm3+=rF}NQ{{p2IGE2{{CU~R27KTvkbZ& zj9$dPyRH@q+jI{nq%Ozi3qS{8^uu9?9AGQd$+ZY~ticHs+T6KU^RR&H;?av$F_d>w z+7*<2xE(T+0GS&i50K~@an?BJC9QVW*--%rNE?LkRF_nJLxUq5S5kV1uh9Q9f>0Jp zgJ8(IJHRp$jMH-_Gi*`7BSMC(WLR)|uI{v{4XEV=c%3nUXJd0QgQqxF?7vCPG0%UI z)%!T)5kiwfo_dLQhd3h!N+}NjsP`hn_8MQR69kTQtoU z!POQq+$31&$~1;4C5J)6tu!#EaTm#?+xhm}y3#xk-p5gw99d&@lk37gu8`aK%&jlq ze3JQ}4<3g+SR=uS;(+pf9x4A;N%M5cUp}ohPgmBP4sWG|9>{|9*SzI*@6)=Qq4eOv zoKEf;cIxgOPO&?=$jaN3ytp1%St&w=i!myTD87Q#Ec{qQ;)O+Yl2!hqA$ll-h2{g+L`uOjp#Zyn z@oDvy(obImqw=oeXW!Z6d2?VgaHo~Jz}?O6-R^EaM;`)R!aSKj^G-mpB5wT!lMft- z&!k?ton+5-q<13z@KKrZFMs*V0(1519-A_Zy@z`-oMT`S%cjeov2Rf)l{EQpMVAg^ zT2Y92;En9bwoesR>+Dgz+kE+tfBREY@!==;++%qfDqv%A=~Tb&&R=)uFzwK0?x{Vy zbQtTVlUZJP?qOvtPNQcm;qK-1=J(%9A~ef;uTyM6qsw}W!?3f!j_~EQH@AheWjJ%B zIJSPP6Y|d`v8&VT)tR&OtEe(c2WNMGX7^@|j76KL*MC~(h-Np}Kz9FBOskof`h|Ha zL$tp{eM@m?w)FqrShN%e_yu*`+onB3uUfcts45*)Qs+LamGZnraWLIZFr*NV_yq@- z{DY{dsFoj>U@{p;z@y{_ZA6>ENvyk~cUbIA!XgP3WCa?ddmIou-qJy>NVZ)_g~~cy zgvo3Ttx{nri5@;$cPIo_@Sx8Pg_%b$ZSNR4ZTlkbyqe(abZUoUo zp^2K1+msoY;0KSB9hOv2uwxQyhM)EJud_%%IDjpKDwF)$qQM~SMl5`_onQT=qU9NY z#!LXE(tVyl9nDr}Q$w>7I!ny~dBq$r-7gm66XTnB_dRNaI7wZXUsN+FMr88=roIg^;5oXD;1GspudYaf)~@19OO=e6C)suHIb^E~X$T0jWonpx<+p_`}vv1e|ncvvcUD!l|Q01tUrHp&E z+!0vF;~MwmsR=5HzSopJ?!p7e{ky~PCSoa-8sV+BGK3d~*WPb%L&duXj{LalfB)3K zscSz)-ZkyOO2j~snebX1g$V)y@8|SYQ|R3Hp!Kd*K!9=JGThv(%T|oW;GIAGgXdRO zd^D*#P*)=60@mDh3Iwhnuer|sYF%y5#A0x)S`*%mK?i7^ctdx&8pL}bd?PY!Plmw= zc#ny`%o~j{+8vC~WB-v~EC^>8eG(MZXO&#{jqVWvg+8!yL-ip%x7)DOY@+hLw@UF= zbV92IDL`T+VQ**u;1Kh*yzl>1tFk{f0Yt71-K2*wBvG%r?tMa~YWAgNsa0cv9H*V0 zw`N=u_sOYlhZ{xqwtltb_C~p zuT|_`2Lzg@W-GTd0I0D|9?OZj??0FNEHn^2UJGuCrYoWxop*HD^8GZn$*@h7g_7u z3URkUh2GkJAinw8Uv8c*ot*sKJUd%Ht(_W}m2Xa0z9Ih*>*Bd`JTQ%H=67fvJ?;Sd zm(eSV&P*Ks?tWYOQOPY@gH!frlp@3Yn`q*#utJ?;C3N)C*@z{JVICitgDduKP8BBI z=t(itLV?lb3(Hu3gEfA)bz$?`RqPo$QNrJ~W^#ey-1=P(2wLW_Vhwx2G~GMt{Pw1;f^v*Sha`XC`BQWhBau1<}Jn%g9$#)^5^4VDCFwK z*GVppQVNbQ>iW3c7v42Wt+irK+lf3Q%(9K9=b}=rkk#^BlQe%Op9Hs; z&FZ6+cXHyNoi!WH%j$XMgI+wJuu`rvbNZ}y`*c=3zX*~mmO?Z-L?nHQZ~6fl z=ugo))q7g$QXC*6kpI$wE+JzJ&gsbnOPs?W;+rrt0zY>{zjo;Z8gHX<_&c)V9;q~~ z{i|Au(@So4fcA3TDyw=oJxiUUp>NRf{H|fALQB+|@hZ|tI3+OuBMyVe5sf8K7BhceMT;?l zT8Sj64jD)#iMqHOjkWO>cw#Et(z~~PlHfT+kbx9Yyewh-Y)?q{;|J+8y&x^hayVEZ zE|PrlkOU_z-*%7$d!X`-1S3mck#ZptoAE`^?p$^u7U;8E=5jw-sUzQdx@f!g_bi8m zIP7>iN?|VHo0W<3#25eQp~L)1OKdl8n1cX5t*O6Z+jCM?H-dONIZrPHsiaZS`Sp%( z=Tq_)l|AhDv^DX)GPc=cYu<9ysp*w#nG>s~erY>RdrWF>%gn95O)}>(%sFDMlpmw{ zNayYhv+}2}?U9pgr}Z#(+Yt*dhtoNyocYxAevdw~fW6GA?rz7Qc@tAOMmQ?7eHT6S zUSV*bKnc=Fu9l4Ap|bHnI`7KTRj{=#9yt0Q1~Nv|hDj`E0XQ`Tmw51)i1~NHUwfP~o zK_Vhkj!z~5i~OrMzj!4t8U z>5`6uIE{jw9Kw{AmAAXay77(2s~?xk@YgHX^6JF2L2wy$T8~#77tuuN)HjA)aOjqV zH&b>WnPXKPUUb>-o?y}Mp4cVf&6I=}UGTdncD-{NIYe`x25jSn?6%s65ceIF`U3)j1qy zujiL&i)+B{N1t(Z>J-fBBw&e|teiMSA50SpKhO1U@4mFE`JHXDzo~q&F}#zAaUMP@ z7xaTsKO$$GUM~P5BcxcF)Ikn7c6HG7k#4uB;1ODbaL5^^As6h1RUEOB-5p|%4Y0&l zSZLnIrU9t81Lb(5>-xpKgwh7WK&r$RAZw4{$rmS!9#`nd%%+050cZ(`IA1b0E_?3; zxlw<}gp!JXLQiecIz$zN;HTOn4C@0&#CXYu- z!G)v^IQ}_oRMnKCsZiUs<>>88xT-I75%;CbJ?A`ghXp%u&F#}8w;xW>ujvx`o~xPR z(^rtcDcg}gC*1u4v7mn_`0DrC43%yXzl3)2>0;)w!}5D~pUOga+5^70hu9I@qum!S zqTk%BU4dgb%j4Uhzfb#s!xUdjA{IEIXG6;_A_hpiaM$Z?eqlo2dnYQNOH$@x8R3xl zg>%&pE9z<_7lYoFvk!6ietf(0QlHKD zTi3CjPU2`qHaozZjT1;Ox~}z_P$z?!cNC};wL={N9RDsk!~Z)tG2d_o7K7_T~C4RL}claX6aV0qBE^3Ad=i3`cf@7Jj=k8{|C0)g36izyyslG9HaE(eH z9s$~La&7m!Sv|a5?4vyU=;j#c zdh41pobJlWzK4+sVU_RjIE+ zr1(LfV%Ly6lTNPnWYp7YW7-fRE%JfJq+6S=9gV>XjlNPYryRi2%QQSXR1ITxF-TG| zx0?r~m0i!dQ5kkE&k2&KtP>KvTGMf@Nc01+a0|z`_WNJw2+=+H=93IdJnt4)#;oq3 zK7`X9WI~EMKsm4jIkvrQIf-D|u2c`_L+>TJX_FZZlru8ainkq&OC7c>8HW~N>AGg@ z%BDMxQEjHnmO<@|b^(nBR+ue`6f(Ve-`LU@kg{7YHz>Y-fX`<+p?IVn2VKuI3DHOMzIXZi>GfTHz{a01H-4s1Cw9gK1wE=fG1maFI^})11 zi5lVx&$EcV=Ap>1fB|?+GH|t;D3F+VRHX}$PJ}i;Y;i*sH2NKJ0T#3OE9I$D`8RCz z(Ptl86OjoI5Lvn0fRa8M*Wl-%KMsQ~+T|yxrvRUnX<6*yZCW=TRwr}=i}h&$=n#=I z7SaQ1p0+|)G1jCDWIiSV6am8K29$6AxUsu*(gzCo-U$iWW`3)4#xcuJP zPM8x7+uhB`X+*1HMO4s{O5vbn1B*-yegRQO-=wu#eyK7nZ9jfWT*%y{; zK)*im#WZ?Bh4ys4PM@w0W%bd`VK0JZOO{<1aXi6T-fZuWH-^SUp^NUI(WM8ewHhZB z=)Myc{$)(ofXP)fl2E#Sas|bS9FcW8FmUgJOXlII6y3dIz(ysknIziAZcH|2C5iw% zp7vRtLz$|Y3Vh>ypob1iDBUn=YsMb~`{LkOyZ{q<4l&r|_K(smk7px9Y7R3Su4tp>max@DZJ)=Hk>> z=o8;v@5k5PKd148S#G+KMK2cGbK1Ik&WPbPV& zoEM-_hWn2$CSc#C9}W_J%1iao(_zEm`|g%UHf;NQ-q8=+yStLh_WWSEg#dys8FbVg za*)Y;5+@8}I!nRW^LvpIlK`4r;l>OMQqOYQS>(*qxjPX6*@L)!n3ha(I!T9NE)K;) zU(&}M0j55=W-QJjD$iY=R{$;tl(-|6(n&#Eov)^8%0Gy96hfx;ZPK^Gyq@b5&n}+l zsUvs$$a=dH2$rDNwh|QweNtz86pg}E(j;zox?xA*SN0=Ka2q%@i~udUiUYG3deZl# zXpv}e#?_6K)SL_OKIR1j3W&%o?!3b(q=>$1l2n9W^^Vq{B}*rem#)3`Xb3-MQTF2u zr2Uw}PzR|#79p-Gm4_D}y;S9Sh;0DmpzX&wi2Ko62B~JvXseB9AB!jR?_RNW^t&!*{~vGO#H)VXf2C)AH&0DcdlgmfxOMF!>Y>wobJnGi0eS z%r;ffPNo;hYS_y?~-`w6ma%E+5{Vr9-I*4^KHQ$6<@=&Ip;)KxA#`q3}OiARIvEw-x$ zbOR94A@ia4O8fk9qF$qW(#q?@gI9+ed)^W%id9~3Z2oQI)wWmpar^LS=U~5bytB7` zbiA?m8YMUT2gh*C-Mk8hm$2&&#C1D|Y$nenqFvVqoLqyy@jLQwZ@9OI=sPYR-HyqP z+0tgsTlxO`?;5L*9zCMK$=*@io1nu$?_~_6Q*5esh8^t10hB_4DL4F8JcdCA9%}MS zbonj>rsvruB>nYrIQ4_bA4I^1cc;(mR0CB^3WQ=|i)Ls-04AD<4{BCc8xItxLaKH=)P3(YATyjmcVP;K=s*H$#+2j=CgB3X zV1c48uPe!z4yvH45O}E53NSFtIPu!-9KVJx$Ha4kl=O3ZZaUaiF?+A#QOF!#G|}_O z4m`-H4WRtAbNs`>n`3Wd|L@*U8;8Iy9RGb?yH^X}hYX2TG`k-33FBvA#0?bsZ69v_ z03|kF?CkCw{~e`#FL#djw~vmzmj}RZd9ODPk9RiT>;mug`px0%gQIQKQw+7PpGM=% z*!F04#%SLSY-vB?KK~u2Q%*f3kOAgBj4&XQi32iw&QR{$kCnH)i8X}lc(ets77h~Q zXc8*p4`()^bQ*>0-qY{B;}CBi<41Mx1uPoOy0_syT3uOLX{wXF{+dH-NTaE)$qS_H(^t1no)4Z=Ww^8BwKJb}F-qna6kpqRE1f(mWq2 z=20j?FRsG=C?Pw0aBFyK%Kud=7-)k}g85fXeu=M_9*qHmF9Kl7`vFWT^bt$YMB;<0TR7CQU)ngN zj~j<2byAjheo+OK%Z*Ka2=Ggro0N5P6Ep23u6$e3GE?9$C00u5zzDzMLdOza2J$O4 zdqx6lj&`@GmfbCTI<8sspH4nFH@N$=932Y45ub~|0}Y$^;%JMkyJ3n@QGYlv1ZaPc z^6u|(PKg?4oM%eL5_z9&u@g$n`bOG|QL4~co29jn>ne2$y$COn{+5X+EbVQ)+SzPx z?m^G=qlO8qn;mzod0V@?BHBTVcGY4?MLN+cSLCUjS61BIcc+69&eg$-|Ji!8_ZkYx zQ*I%=FBn|Vo>Uj+FByAl>T8=nHn zh{ATy@0Tpm3{8{u?s)LDzTvx71Kxp%YZnY2gok(KEz8DNza--OYg(TNrWKwjHY^R% z0vq?Da$K%apWq0H7s%>bfX3qlKrC2h&3ArRcP{|GB zx=k-Wjy32IKjoc@#}|fH3AL!#>V;C#OtMu`Pgutm(ijsAFv5GVU>L^J#2B!k9~0bL z8?oA%|5CE02YfkVC6NE=fZUQX`=z1^au_MUAA1%A6gjvcFa=@kP1&0TiXtSe11&-J zab`Jn0B}ZTL9om#_fpdp5j%RU4J4c?dLl>^45KPkNhPE}1)BL6-(gH91dh@!s@QKf zrR(-lQ=OO&bvx~sII%4$dY9qkoYJsvl}DliNMXO10z+x}uz2Ssw3Lg#`OwvUeoiIU zPQGblFfHFPo<}lvNo1Snh+=6z(}}qtC(|+ZqUVX^*6U4&95Bc)rR2GcByL(ROg27) z>F!>W)y;g@C9vb+qC}@Ka+tyH9ti+#NxbHK*UvHIf=S?N`TU`X zGl|gQX!?@8;jmB5L{2K`u4Ne3&AA1S^}=2V*Ak=(aZEvo;pSMt(vup9MyAqC8%+1IUSx4*WY9oAyK%T%KtLz3dXkcbPbiauk3 z?`|ZM+rDNR{Ssd=5J-M3r3JV2EuC1(lho>*=?|rR0j`tZ{X~7zu6Z-9F{K72wQBN-w->;qSKkFH#2F@gyqE{vNKufrQC_lOlrY| z7EGq<5go+GctdT@1&&*JH9#t%(l_}NaqAWRk%q+6q%n5Bi@SW&3UVhW2K#DuK z;^D}NNHC&+v>cs`BUHe*ad55Y1v72R-c-uoBT{YIWU6!=3={Mcm93dZ395#ZAOOdU z$AHCurTlBjoLbbUMQY;qd+PRb6u^;h&J|}tjZPlzsX=z!RHSE7qNQLoTF(GZkXBS4 zTh(z6v=kIq8Qs;O6zPXf6MuS$HOlWmXuO1)D#Yy`7WvD}kO{LCO|6rziC2=_85J?u z@)@29(UVr6O^IBz7`{0Ek42z!EWIk(G(%3T9-N9*lr$Pc{Zas#sl+RnGl1>6gSX+xoFX~NR&B!F=T)u0vV@$- z5$d=`%6ycR#i2v5%yH3#mCBL8FGdZ zo+M3#bZZ%Bf&y34Db}&EK_r-k+BSi6Wgo@yS%_OJ_((Q4)8QSf$T3Q`E6IK)f)w4z zrhu0sYN&y%B;yW==hUT^5g)=Kv@Kr=7EDn(shq`QmH=3M8M2(pAsaGg=wGGn>Z+g~ zZ%(o~FdC*AnT$*wS}0-bzS!~zJ3SAoXugPZSO+-QSa8tF)0mNZvma=z6tjw)rmQO@ z<`e-fu`azwEcTjbRe)JdkG9g4QVb$Gi=4ti z$Gv%r%xOjLF}nRedVTVK(r(<9&J`M5upcDAV5Nk@GzR1UP!v7V@{SXcTI1;BI5(HQ z{sbMgcQ`9dJ*q=5Hxc3Z80G!6v;TOty}P}!-`?2YYVW}VepT1@&%~{~fAt)b>GU$bwA|hMll|0rzD$=5 z0n8ZTd}X$K(PsNXb+&ueXY**$7wToEW4^-YFFn&ZJteic2_UD@H3Uhk#cr~vVZYLJ$!;{bJ!;{&4 z;OA9%UinU59>dG(lSO(LB-pvpWUS|gloyvFrKlgv7qH37_b+M`H)236Krp`S)KT2@ z-X2~|RRhd*V~&$E(=^Tp+pNl_+e$m75GV@hzW5FL`YG{a7&dfLTJ=bF5WMC+o^HDA9n#Saww}eHWc`G;<4`hZ{ z9Dr@9OaZi70@P+HYCT%l-%g@4pzYs&OVALy^#QMqs?92DfTmMVPpe*D`dXC$6*L5J zE%Ls#8k(?g;pLt(xo(l>oQ2qsZ9R3tm>k?AfVh*;Rt%) zs!8+~gYE$#sX61oRp_~3#G@2IfoG=u8u{=al8pznpb|o=KNB%|;4W5f{|dm8oAQhDFw{Z4jR6$ofIk4w5({%lyqzRN4t<4zZrTIKnBz$}RUF}24$Al`&CFh$_q zkQONS=~>Ihwm<%nyZSA+{JHgw*5d~?pL%9`JaS7GkOsrxn$$|LzJKfB>T?;~Z+Wz+ zng=d2b7LB_E4hHazN5EKf(4&!JVJ_#xa!d2|zMBQ5fGOpWXW=rVd zBkMG;kHXGzK3~?RJff3Tfu+!bvNYx0oFd!78FA}>UcG*eegfEdfzJL>kAMKuvToFX zqE2rfHg{jrVSV>ygIpV6{Od&fHzzIS5ow``fbSukbZ;gU(4&sWL%!VZlSw-qG$#o| zz#|X=SCOu%Z6d_vmY{ob7W0xvg&Xu!jwj3Ot6P#aqj!Lqw25?77l0c71%0ofVPEB+ zRb$nkk|R?1>WtOCGVQP7fDYcLzFL-p%KTGL5 zbi$|6?6=zn9W0(;&t=Klb4t=1j(5%|X8D=E4p4*yFXvLz+6+NEdD>aY+f z^Rs7OdSp&oumASy=*%my9`a74Q?2LEi(BZ_cT)GxsJ4?)tMWlCUmF7E6FZj^wPUmx z1_FYeNjba23ppTl!?>35f`{pJXOMA^hZJO2tYar+R>Qabc(rmFPuLX((nRHf1BHL4A`Or}q3^|Cm^7`?khk(ucsncF)N z+TT_n6FK^Wr?TS@DKiQtC^y+YtCm^KDI4E%FcU6-qA8>K(MxG-=g3`4>K;m&8Ci=6 zX?Qxogp1)WG(_?FghnvgY3mY9erB~FZyfJz&RFd%7bslqRQ%tt+Ns`x)lT0&Z?#iz z7hLU>H@(`^{vz{Nd#Z)^x!Sc?!SrfZ-V-yc-Eyn=U$fecZ^h4C?F^u3$_iGyT1%PL zZWd8$wXbEBVcJ29O zz|Qem#K0bf#Ylo(LKBAB_O$r~BERkTNG2R3-Yl_5c?C_AjI`6x{~p4T9+%G~9}bw= z)0$68QtLELP#hv+V_iNeNiUYW5)`|XTC>WAlrcRJZ+Z)E?mOd-N4{CvgWC$J)FR?A+5dwv~({VJp_0S~J=fRf0cP)PRrgJ ze6!%3F8Rx+wbSx>8Nu28$mRl)X?c0s`zaWsz3Q6Yq)}$6RIDW?G%9?c?|`&mqfQV~ z9jYsfphTfHDZD6kPu$rSJxz)ys6tQFYVc*QD!&U$)5)MwA8QYzCFf)b#mcIQeh z5Dv=Q>xH7&tNl*Iy_5+S9^0@|g2FoEF=ByMGX?<5{@;v+zy2CL*r0 zVw0n$JnXs|fO$d5aB8=vQg_&=gZVo(fs{S^aQpwg*+KpScV*nGoqb&KTImgbsqz6v zj~w@~4frQ)SDmApTtve)qSv*O9fdG|5cOa=gXsddx#7IVdH3q#+B*n3BXU4jxcmK&_Ot^x^Qjr}lS@RKo+ zc+zPNfbGMp5V_Xl#W)=$cbVom zeL)!KPADk}y1+%1%U3{n3he9!7fIYlwN~K+DH6cR>1p%q3^nynPBt3<8#I17J6lt! z%Jb)#jne=ltId;>pWze#U2dNGr+%}l74J6#STpFV1h+xGs&Gr|Du3~+U*uU!wN-oV zJcWPXG{3p5o+~f^ieO>4U@>u*eA{<1&h$@1(nN{Y9uh}&Wn&#;vlC%Hg0&2Xcwdp;xj}LNksG=j? zkHoLOc)3-p<{caI(DV-~Y?xsQ)v=-=yTq=s^9x@&hnEyAPtV`(o#hV{+hRAxW$vcg z%iUtWa(50xnW0;fYy0r<;Be^#28`#M^b24Ld#Iw0tAhh)vcyJMoHja<)gm@4(QD+g zMEFVAB3|c24k#X*<*SGKV6YfY{8lU%o-Bazun@ONai)GZ#D*4Bkm*xcxBwDjI1)Vx znHG{r*2N0z<1prlwrOxBlPx>6hugac8(ZWLQZcA(Z^<_{YDasWa4G(pq_O`tv z>^y%-=xio-^TuhB1;)>xJFD)zIV6D|3}LK&=n6>Nji8>(e%E#&2;lOPTh+$63S*FV zJ($T@GAqMMWgQ%=Y}s=@Te9r!*T9+{$&qJo`}l_gJOEsYXGEg4#-{n!m}lb&{-Hh4 zJv=nSV$o)x##XfsqKe+lL$)$gw*n(HvLSh&w&ccuG3fgj7#MV9qD+iMjp-r#Qq3E9 zGbytIM+=;P zP9yZjgLWcAN0K9fiK^pJCV}jnlxL@NGk_#rT4oFHWfC*7k86|=0bVHS5z3lin*35J zV_QrS9x*aRbo11b)#u`*s#k(TUW9RS*CI(bdNQw!J#E{&FJbB)HNM9a5&bMTE`U=y zIoaDiJ3D&eEjj+IK3asLR@K#{*QXL|G)eN)*v-vp)+tAZNADyZKaoJJr6QB;J9JKY zUO+d1qcB=-M34Xc-IBjd4hB%>3iH0^VPfqs#hpq?{_3OUkMy{5m!-XwxWrU`KEB>) z9PS)#%BwHGwM7?vdT3|SQg=XAuc9&TKY;W2@ZEAP-wg)mQgWM#zUH|I)qxPW2;Pa+ zs4;8O4^brKy$fMM!S3;oDG4U2ig~kEPVGjIS7`&vUb>fO{XQfrKtbsdgJ9ZX5!yiE@n zUz-vhfB$INt1U`lQUcCP>?9CmWL;PN6@SIJksF0$a(qbVdOX&30=Dpj(cL)QE8T&9 z7qe=+dvjPduU5VLB+7m3$}Oj;N?qoRw4?z2yZgu2)8(`Pdf2qfA#%cPsd5z560154#=~bpFMvj zx5@jb)9aIyKmD1n7ct?<^7MN3t_{U{ zMcIokhvEqu_Z#KXNXc%w_YE8mY#Mlq!gd2@9PO zTkuCU>&8!K{NgPIFZ%O@Ta> z${bZX%-SlsYG(_HQMu6{T$i)?>*VB0WvcMV^aqqv*J@F zZyxObxV^u#y}!AAvILZ{cE(mki6=SKH5R$h*5TE}n>chFU1GBHiD5)yVs$Bove%vc zO&f-CN>>DiefLnwpxaH1{TzO6*p+Cn>N+~8wk<>N8T;`>&|dYzZcV_~Wjqi^Z(bZ7 zqoojf(*){tker}eJKgtL;q z*WCyR07=t=yAqHT-T7Ps0$`{QzZC&_=w3`|)>$_%VF;!dE2}WKqZ4ac(d~743yu2uN z$>gPTi4`e}gwc4AM`xiJ$E<@_V0{dzHf7NWlOc}MfwT`zT}sN5w#eq5>bMLi=+w<0 zJb|qhs9)bhhnAAsc;v6F_)ltN;+yf#{uI5lug>$%jzt~k?2gOzy5obq*rhsw$@k3- zyTb-~zaNDiY=3xz0uE73O}X`Et7oUU5OQiA((#MXX;NUk$?F(C1jP-)9q2uuNt(p9 zQ(;`m?q~xxB+OOkehQS3l@xWI)Nty3keE=YG!lWOIEeJ$9a=nnmF(jid=ehCR2*Q-3@IY?gGjLFGOF6??V(fA*hSnIejsx5r|CH%z?p1 zRf}Rtth0^OX4h1JyE2F2ElticbZ=RQ*WsMq7n+mLg?AMcS%JEPCh; z0d-slqsc9qA=p6GaM{fW;%#WA zWj(ub*nS(7ScqkUd8*QtC7XGvHL((8QScX76wSDE+>oxmyb;rF<(5p3GwMf+>xo9= z19Kd8;q5*(K8VvoF7}B=A|9r-{1mi}y@u>r4c?^T5RmPyg93r;=WMZVW_l?Y*z*jA zQh0TZFBI7q>xLtIV<@Pv#yU;NP$;c@&xp>-664jPQ2F2JcplcHY-84+t41h6@FJ3=6Ww;h6mlx#u2>D?m{P-uxhEqr9`x)dU5a z^*rqhXa%_h@&|O{rm3ON`(}2Bysy?yiJ#dHJ{*t9#(wF9q_%7NvXQUAvH5w|BL zbXm;*v)jFz({4(0c8|ggIplhQwk9Fav+g2|EvblcOP4ydVi%(X_v>EaIG>}RR2kna<9_wk7eG5*Hd})=drdrPH|B$^lwqq^qNTVjxscynjBNO){y2Fp( zL7#Dg@DfJJN?kM+Ft$Kl9jv*}L$NuOW4Jj@a|l^H7YY!Hx?4wgPYE7CF+f^1>hVc| z?(bk%xsE+@je#uBnv`pJJJeL&(iCop0dfYeF1`s(8^?VWwpE;_A$_&tl*w6&tZ7R{kpS!4v zmQ~JJ&=NRPE7{cvQbs+1ZtTS3pVJUy$ubRs25!kQ4LvK;$)SsR8IvUte1qi);a+Trj!WK2fv-uITt!E5F@V{lebJlel`X$X;+{;(_Lbo(aI&DD$ zMSgSIC|`ZEwY`Nz0%;U`Eaf)kf1{yNDfoD7y}Ukv#L5RC*H?5o}@cT5XrN52ftNGQCTRf-VH0-Xk0o>@BWt8h;4 zEF~Ajlch!S9hfj}n*m6H{&Io)Gx8urI(0JdxGvIhI zirP~2tnMw$xINCzYjJ_AbvR+xYI#)_Y`q92_v@M4%oEOi2hg~D?*yF+)XXU7d5v)9 znB^c)M{)Pex}w{W)xZ9 zbOG|Dn+{2N4NkSU7`Mn<-lBQMzw{S!#Wn%Dmy>{L&mugWUYR!kW__{9gS64D6&s0c zr7Q_yKk9}PQFNh49uJ#a0ZF!4E|er8&wLSC`jDIEmxPNEFQ zO3YtIGHy3WH!lT;g3CrdJ)pFyVZ*|ki1o@XQdZc?nwxI{lEw{O3!E|%rc<#s7q-(C2I)yScoC#x& zVjGMH+dOopk^D;Re=TBPf&t<2=#2W)1ph0QH_N)&=r>%Vw;~8SwszY=KME3Wsg~Xm zevf;C+hi<}YVynlm)#lW6)=qb-IfEbf~0sEEU?cYOxvNIagn)8Jze6=UCY|rcxGEoZ^gNrroFkA zEzlSW(k2&h0uInW8pdC}l`HWHUJ~1q7n_?{B8>&s;dLM(ZxmsC8ohe(a^8m zkPu?8(rp+^oxt$Sfl)%kLp;OO4;5dKwA)m0E++2F!}4%=8@Z z9=!M;pc|)^CESPbrDo_#f$Z4sNUi|c&Y%gXru>iLsC8C9O)E3g{NvY}R+l+BE4t=8 zIScaWwneXhh3aysK2cpZoG*LK-IT?&vJraKr0Kyi5!tY&*Q`p?&t6kMdlh&-pMeYW z&_0Kj7;hY3h)66hb+8?W#u8F)ZXn74_tHY;0@un?2{68(FQ3;FzW(3Y-(C`RZNUAy zw_=Ixx0Hp3w?fSu2g9VVBcUj7*Ml%gNG(p}v}h2HCc}Km)0aygglb!5YgLeTlD6!7^YZ1+ThS+K6>&aUM9T+Ib2Od4bX>3=BQa9) zU#A)PS=XnRrcpexR%!0?)WEEzX3~!HQi&w80E^vt;I{;zU!s*<%!swh^8ray^Q9vWQjy~DCmyZ*NSWADhM}^L2}s} zOw?&jMVe9it$b%i^d3eQx26QJj9iVWk|=Qiko{X5oLna-HZ0L*bb*N%UMWY|v&YVf zXpm7uq%7y?|+%RSi6Iisi!*|AnAnq`AyUXz>tTwg2fq2-T%FuV;h+ix^F%6hSJ755>j_4)I> zINK?5Xz7w-#HV?YGc{fntd=6K3f@>*+lI+R2Sy(6=?FBcA3PAxn{%U{g+K9 z(Q1GRuyD_+^1Bi%LE|~4?*~&IMt;p(PoKM`5lTK|#?une)PMGuoAtVu!MI0PBQoHb z(*3d`Vxch6jQ_e=8^P%7W1ngV#!*fQ0Df~kv#FlJG)3qZM7101Fn2G=rs}^JIw~mm zSulSa#GH*}dUSJ;>_(qqvuLI|?Bdzy5b-=Rt}qtbe(>h_^_%1N=E2_H#{SmP5}*CW ze<9o5550=`k9oPXyM3g+6{2e~(TeuU@pOW@Pu8NL{prTvm?a$%Fga za!u8!*SN~~QDQr;`ODvYqrzM|p53u2uMf1?1LN$FU?T9WyCKV@o`%f6HbOJ$qDFel z_6?Jfd!e^O@~;r+$ci4j;V?o~ao$+eqb5ed#Q&Bn*t1kIIlZ;YO{+Y*g;d3VKJ}Ye zuIv$ja7f;v5*S!N`uhoM9@xmGhOoOqg2Us0Viy) z4U-&Dr_$i$C?9osGfQsa$i6M|Yo6t%$BN;JL!`%|;^GwkYXUM_1#{|gvM;;!lvNco zi&?mvjS*>=YAQzP^}#VMKtRIm%@{B8ayqYluWXHZ(jJ850a2j|Cag&eaX1`iz~HQK z-r_t~RTztXv5uJiyWITwVY6G7#}n_t+45;cB_wr!nZ2D<%t$x?=wZ0mx((#Ck~BGf zJ$-AQt~4>W>&$_Hg}jTRko{M0Hje5*NGL}g_Ima7=JnRb@wWc3^=5DH@A4*^I1adY zs76NuhoNeq(ObjIhla7Xc1(yJIHLe#`%K6fGOO7$6IrA;c?vw_5Ym$j;s8WBBO&2a z$UaN77QMP2N%A#}2&JqM%vTzkk9|-tA(jP-{HQzDUx^oE6k-?@3n%Yda+Z>Y1*6?M zPvPeL@jg!t^$*J7u-&#GNuo@ z-kCR!H+BzR9oag76tGIs9OZgOE;(ha92nv7eKd}Tgo8@B>O0CFN5^WATcyui^F6-9 z!t1Ps=FY|j?Dua+s1%A3-rDJ*XHHeMy`{EL{@TbHTtrx6Q_*6vbRa8!OVkA?L_)9w~z4`khkO`o>v?Jq$8B zH9rGPNTHQELk9U@xnecF4AhTt5hIwdXR@cLUd}4D(Y8XMQsL0uf6j6%SL|2MY1nME zOEtpzs;EZcYPKsaTFx4k?aVo7tSc*5G_@)qrL)@n862xRsm|T&6(f5gzvAUxm>B^`qLJK3?i?YWIPU>e2e@>@bkUdAIV}`w3*T zU#(nfQXq$V#INP_2oZ<=Jeyul?ainUUCbPnn}^eWm^79%nBuUqy?jb8OSqT2aF=~J z?O&qHbN?cEhrj=-c{wW<7Brtp0L=5e4rL2v7P*6(4%%8@va$)x$#VD;*t>%fx`4HO z4*|JVe5tcN>g%>^QS*oso48 zQnNHD>jio#scT}}+eq;}@tyC0^TBLx7JSW%J&+ILaAO}jQjlZk2yz`9p>LDi?>}sB zY;7O5kB+wr8-hNo3tIp+K<)e61)q=q{(8H8@bYE*cvgm^o&Vh~%mLG~*@lrk*xZ8=X4BD??cs5s8^1fb9aJsj4etc9=RyFYrWZT<#o8L-+BI5|TF#A#ahvM2e z!|THxts9^{Kr@u1rITQM`HPQAfP-j~-~;-K4dG$fZ;N*}Zvaaz?)d1Rv)c`O@Nim! z$9{A{X=u0u57S`;iI{SmG)au%U!6HoA8`1f%3c`v+S4I`!~o2_%W#sIS9t5VZ`bq_ zUPfK07N4dOrCjn4z74{`s583t2Gijn7n1XP81<*)pzn83#E}wl+uv_}Z)ak(>n@@s z&Zu^%tjPUJ7UdSOHpFbB;Nln19RW2!7 z=cc8A0}7NCX$g)bsQd3P<2Bw3gzqnVr%MzXZu!*5UmqT7{&EEc&?C8H;ou*s+6-4) zt=2M4DZlrlQ5676CD{8=7ZME1jpn5NZ+AZIe!}$qn9#N;mMMiSkH>KDc1L;Wa;V zs&s3>K1oIHs&xW5Mi#{}Mt{+m?liqsN*(KAV1nrl9mA{4Bz&?3A7X z_SES^0c5R`=@hou{9Lcl?H_?-LA%-$<#68MMv>1*RfcU(OB~gt!Md@w7kk%EKw3Iw9~e`C`1*W36?UkP-)jBwi{(8FeS0VFGGXzkcE-buO%d9E<^fpz|AbzyIt*smA2%E5abx*NYExu!CQkz14s zbYAop&{hj@DPmv2!l_6Nq{{VjXCE5Em53S*$xlq7wt?O{En9V+mUFXn<(QS9D4Xh~ zc4v2Dh!_sDc423dPg*EcNI3%HImJ%H$ENbnfSty7$WT&{;_1W!CL*osq!3MRt@9VWi0d~5g7#ZEluMH6);gDdIA>7FAnFGgfS z#2ZAsn^W6Sgw?(qUL1{`f|h1P@6t5a$%P#h))ISL!f=OAWEg4K^G8h&nlpvjHad(h z%xB&Of)&#}PO?`BeVl$cx|r^!E&@{50G6oVdR(B_R;Dhp<%`XN()hglddzV;@xH>ZLBb`qfmDn%YLqxIiI8j41KCRr$2Xxh)kmL>@D_(?wzImny*JCFjAuee7s zivyQD2Hh?C78Xa_m%b=EdC&S{;(gNJaQm4AY5FDpp}W ze6eRKPa=VlQf4pLSA70?#y(6KLD8EbEX&DsNI^jBo@s<<*MEt+m3a7~e)aJPg2&xx zNb&5c(@v|53S-Gx6%3A-0-S-iU5TnYn4*x(XB|l^yOAI>1xzkS`U5pvy_r|Nl@;S% z^3$hke${s7vQvv{1m-1wSUIhEZ(WMRXAQHW7{G z`P=T^{=w`2cX)LC=EtAj{{4SV3)1eB^BfzUoN*W-zICSr?BB^5KBJR;9j+wLV>6en ztP0SFH)y9mSV3Fx8#4f9cHXEc&V(-+-X^M7XtkxSbQDHqcU6!dt zM|*sG7R}qK@yvZ%%S`{cDpy7tBS$$46T(A%c5LmXQlZyNb;eqW6DRDTKorlRmiJ2? zWiMPPM==m)4=GyghB84pOKa8H#tDb046oQ~8M&fEvK`LKl5D`1E`c&lVkzYiH8*}^ z5L2WZ4{fftYnB!yS-LB~^+l;V`mrUjRZi)Sd0Dm|+N@vCAeoK;Kt*$n*DF1s&{H6g zed&sd_`2BwH?9IoM}jP_4FdrhJD*GcRbuF;vW>Dp%CBraZ z6Y3Kg{t34p#~h4A>15FvMe}VA?L|qS4wO`^!U3$8u0okur_uVojvIvvZEiY?Dw+>}_XS~IkOq6@93$e?f`H+N3l(QUrNLxEL9%?13( z2eV0yO}DH7X$lng9R22-pbHCRnTH0xi_qMYOwgL|UbW;^Z6!=*Be34m-owjCMHc{O6d4Z)+x3C6B|-YVX|;ZC)EZ;(qx zyTBaEo}Dlwx|_d5JD0^~Dr4SFpOVVSMvPM<&i>M9wcZI+ zmq~i1HIcSKgIF-1%#O4|c|VqH$ooyMg}NV5sELnSzeexjR+87#4^JGMZ3&-Q>qZer zwK4*=b{&B<0sjL4Lk)R4Vr^W{tbmV!2Q_YI7si@lAPhiM69E}wuwpBLo5%}gQ^z99 zRpKMmgh5atLHzL5!4y!1;6$O=*%Lkhskg2L!+}=PeAM#kB6g;Ku|YcCQrM3y+wKHC zogV%?T>*+bkl?e%m&nDDs>e^<^0Wfg_&I1SPJ+%PK0gj4{a6)zWpJ*9f7AG2x72873@?n^n0Sk`X%yG)oMMgmDO z4_p5YGz{sZ=)_>2(-M`cES&wqs^pl(wnz8g2{}H8x}c2imw^WtsIGaZe~}y|eABvhvI| z+;fAD;{kPOp{pYvrY(lrMhOlk%LCG%ADOXzpvcjXyTx8Kax*UM5M!HAS6VUK#!dQd z-|UWi@9d5`@8->TB+YzoIYRIS!F;?KH@-bQ@I|HAR6D5S zE+Yn>>bW%}hY$7x*svdEQ`V0B6pp~fVLp1VYXDWp4^Z0m)`{wY?gM-52aWOxnKOEV zzkdnlcn~EO8{FVehK*Dn-H)0oJ0=oxedaO`s*bPT5@Yofvvm4MVz!R7W^Ocl1teGI zW9c66H%4mF1kP)%-{`71qP#m!Q?>p?)vV*{Xk&IMVX|SAIo?*z7Oh;msvaY*1`3N`Yns2Lj+p(Ay-xlS)ag>{+G*N?7OT*ugHM3(&Wm z1Ch(E0v$P0<>kXpiv_5+Py8p!_uoaE^c#lVBs#+yA|TTW&R?l+&Y;FCi;y}7k|xut zLEFJI9CtJbca$^HRF`mNf}dm(9R6!j6YbE0zmJBi_Q(_5a*Tm9ONs(XOgSjD z6MXcxMKTyypK#6Nt)edx%_P1zKDdcL7B&NQNdcf}EFM?R(c5sdZT9%5pV=r7F)ULR zN^uR5G_2$ls^fGTkLZK5IoNjq<&WG5*?jFUX|y+R!ztb3#iJ#$JHZO8SVG`$Ul-=J z-CUd2A1lOTJ^UG&^FTELeq)RZZFe@oM|(w2n7i zD6d#`fL`P>SL%v2s(XAs3$IT{aWwhiw85vZ#GoximBw;vNr5Wf7MsiG!3Z;gQ86&x z$4Gzls?8R57wzqoL37A|XUE({s|N%nzGw;TwBOQGvr=^@lb=eh_R{K6L#JMxd&%n; z5KZ;FKx;NYyusoa;Y!K%iG9IMlzEGwUGr*RkW|<4Q5vtP7?@9Qic>mrbP_xS%Dl;! zN$T}+dthlW=cIjAa?*SI{);DbbJ%Af5CDhnYR(`W+jV;7ApXR3aWkSsNN=**7p?n^ zoX6p2v=No@v^m}3Z`k*{>&t`BjBj*92AGo>i8h*X5AySF+*5Dye(IB%l@sTTj*7u? z3SB#|$zHPZJ#{~4FP?_n|Lyg&-&nn$8|9yK+VqR)HM6|Tj`_R5Ui^A7hKjgcTMaEk zbOte&*K*H{GmqE~2~A{sNKv&ig2AXbB$P6>8!s8;S^}w_dxBIc;V)tT{q_P!9@>o;DUQurQ3Hq)#(yNR+ zK|Z}P@kN_uQ*_YZ!t7PhdBY<#`dt{~<)XbjelnJmLXWV8|zr;OYP^4way zuG6~iE&goLxjWUlV+ieqr2e}U)eh%pM!z(tSqY5V)|3jF+qyLD@WhLBfk<^coSuT&smQLM%Mor@8Mf_@GvP(;eW-luB+BeSI?ECeh+D8Y6G40 z<$u}42Re>Bu%_?NB1l+LNfOd{vuULhOms{kn03)xg_f+SYS6C!CM>|d@`JnJ?|V$k zIyO5p=P|ixQ$98RqLsdd!a%&n$DQ4Mc|=%}3@pHahnRJMlP$8bmwNc6YXWo zj$@3>zNWQ(ct@X7LP9QTu)>$=fI*yv#IXT(O@*UryXr*496Cqs(DfpSMG}QjEW}H6 z^}(p=-Ccf{t2RULhYK5Fy1g^D70%>4(LtJ76l1|B&BhBTNtkP|%9*Ne&`2yL6R@}x z5OhYM#3bqjDDz=MESMM#2*tp~Mn;AV`i{lU0`25eN4|u&hGRsJVq!+yK2j8?fJ2v9 zw;m95(};f}I~KBsQ=VG)8=&>2hwIExm`Kl(Z+Ncg_+i|KRAS0h^7zinTkoL9{VS_x zN^A+%4Dd#-Me{=40}4mmP`c65{$usr2tIG0V-wOz%oPBsSq<{HF+?@bY@q$I;yQ{- z5@^?P{YBrw2SMq!*`+jyGT-1qZ{c5vx%EuDhVH~1TGzqp6hYo!Od?p>WNIh#C2eob zna(oS=&C@{`PocK+-Hv%Dpf-r!wVMGwu%^(U4#ud~D_WZ0~Ui#Q3cw46$tEG+-X=|~_;zbn90 zplv%wB!WoR2mo1%5jL>mY79;!%Xdtg>yXs8p1+h|&v}-0Rb65+^x$^rlV@LsNDi=j z2TxlZiToa7M@V1XZ|f-~y3s~xSVh$q%2Uc;6XVavqPkhDd2&Sy(N+H-kv9RJL08Mh(2E- zAY6xbRNN-f;`tVxmF_awP^LlDsfW;rVv7?WnlTEj(RRQdYk=P4(}}hf-!lvK43kOM zl}pcQVv?tK4Qp#2@jEUeZpDfD<0Y(Po~4AS7mK;%Gw?N_KA}4 z!X#Q9ZD~QATE6PU`C7v zw(Dbppr?os&XN@Rx=NCr+};lRv>jcGO6V2?XGTFrbLS-57RAGwMJj(Hs1YXqRAo)J zw=s}F&e8oP@c8BRsncDYpUHO;h?v6!%hOS#P$u5IMgPsDHx(Z73LA7wCIpOdb7| zx*~K-9c5-l7BoX)0W(Njky|1GyK5TiqexWr7A>JIf--neEl&M?A_(hV-19C<*i31Y z++tBV5Iy5p<2cv{daTep)K;J!E&(pvGG9u_=MbTQBSk+?W?OT%nu~@wj#)N=Hei$K z30Fuz6C1CY)NNb+BP2;?q#=+SsD?(Rsg+}&8v<-rt|TTUsT&hSGaS5t_r3{ zKrX!x+f93Lj&&M$av+xY=}D-D8{;;9)rU4KXG7cIq7}UzZa0Xhx@1Ern?1{k{DEd7 zRz`uU4{u1i9N0KD#Oa8oDBt{7*VF6Pd+8^BLA^^oDOSAALzx!X}S|PI?tir_K zf=y{b7f0A@b&JHw^zEv`{7k_zjKsIg=ye2<5o){ob}O@skp zV1qp>Kwwsl9GNBNM`o#dSE!%<{ZS|nfrbqb2T*6_={pU>sO*SpNGxc)u}KAJKIsxv zCmLKFo@+V{*~W7I)bKTgB*j$g;^TJ|`1i!5j#WSwtjC$(Rfx$M`5+Ht!I1{LeU8OY z3xB%6BJ-7+_C?~W6WpnnC{ervmO#U?gk9r~vLvAhyVh*RQK4vdK*56O5qJcJJyS6} zK*+N_RYyGy=+9)sa$1WeW+PNQt9YU*Gfj|*UXu+;5tf7+8&%QqESwY_$}WP7-OFhz zb4iovI{$Qd>M>b%>+A5Y;HP_Jv;<(f2AmyYEcWSBrCs!^U3f{pH7=elKkr;#m3|dF zws8As2*kIw)>e%_WOkc(Ws0BiL<-t#wh9VP#o8<)WR^A}>G(cj((*|~#V$lAOw2UW zBGclFqbQi{LZBk4QQ@hRFt469upx!9gX8)J%q(uUSQB(8P;8&HO6uylWs85=v%MDLQ`Nk>P7VBx9s5&U z2kBM10&o-iv<&=CnaDbt7v`7~=l!74wsNc3;^W$0w`sF>M`nrW)Tv1p=?kt8HeF$- z#xB2BWq3;MIkIqP1c#7k+P|QU*5kjFmBC-_%9eSlbsPZklfX1rZxN|j)Y}x8SzI=N zSLepmuWj~EMfD{;QhbG&I&_5g!I@4maWLbol|P(0^E zT|hYN$_B9KG)SYu#|usCC(t9d&}^|OPOgF8m<3G z$HHTf1?}c7qxVTVDG%}0K9)d^_s-Oh_jV}GeNJPkn81;X5-6iomNg#p_{@;B++(N~ zw+%VMTiTJ$ZYqGqFe%??bT}i)760kyzs5Ty;W5TP(IsPn=ne39u;#GeB*h>2^X0q_Y#LLM30U4Mc}L7+JzHfJi_ss)k!_ z0R{222ws7a6Sd=x05yZY-wU((n)?9wv1@sK-nO*PcO@~*@KV(yKTw!1ae-?%Io3V6 zaYpvCK0S`4$y|S=vAC)>^l#i9l$f;YUz;M|Kn&*veR#W?pAljw(+X`PvWNi56t|k^ zzY_d;-I+pTXz)R88;^`)_{?{k)-@w6CP}5n)YWw+0$*Sxw&k(qKhVA%wzPNi?;f?z zcI2&Zf~GI*s7AW3C|&AQ{X$rNm_`B_YZ!{(n9cgYS2ne^8XQ@PUfObSG4#Rv~;yQ?F4}-}hPeX=)rL1}p$wRSt ztd-$Ci0T8^ap8zLr7Z46fL9HAJ{JQNmFfQ^!sheZy3vqHG(GaXs@lyq*?>flL~s9s z+Nc21BoeAlaR8s2#%d>Xfw0G5CLf%tdMss$fvRj5T-b7*bMNBA=hY!;fAleKuAlT? z9Ot*!__xnK+(BBq@iqvIKu7e`PV%j?;cw> zb#)5gY;Yp`8TUVjX^*YR=S=NL5P+45_k=H}aUB>?2_SrAs3U$(Eo0M3FixV#Re(!c zL1rF_D$9WCcPxI7MDZwd{#iw&*tUf1H;L6-sK2tCbDb&Of#U-=sngRumXutngVvB> z0V%ry{*%kg(s@#()psMH=Z$i4Z8tCB1b%yYh739WKjI}hA?2YJo~+9RrwgO!~H~&LC962++AIzg05Z$ORfqdcI^3E zWPiEiFWG?oQQLqTzd(Zg4p@6OTwugFhhUK&Cs5jjk|0jHj26v4H?elY8eC#5GTwi* zlVs;QgS*2#8JlLZ>ULJmD))P$J`i2R7NTM6^7%Vqeky#qJU$N3-2AxS@7->gUatOL zDKl34AB57SD5F>8K|&P`tlQ&esddmYtoI*DF)D05ns(nLQ-n~1 zcx#gKG_pF}4}HmSY=q%(i*JbAwq$ak7yP1h>fnrf!Ey$t=(VWic_>u?{Mu}`<@|Po z%}Dq-qrU#|TJ_Y2TW4kPn?(g9%#X?7&Ly0+X8>Wu zx*&7lax~?=#!AlKj15;MeYPe++m%SBT*hIa?CXQTh1lHMaNppYS$pK%K-|F5-Uu7R zH3%qrLc}VeBi})y3HdZ0FZshQgnmr*y11nVZ>#Si)yB;K`*OP-P&W@O)A;D*_GGyB z!(41}LwwSoBOro=%Mmo5wq*^s#pQqdgR!z*p@5uvZMdz*YChz`w>olnuNnn_egs>o z5Ybjr0AhybsfNj{+aj24e(1X_Y~=a=5X%DinWm(&`*A6NIh%M+Go zc{QlP?$LTp6ixMjFb-$yf4wbuT3$Va97nq^`kS~>T+z5JI`@md%rGT=i$YqX5mk5r z{e(rpldzMq9|27nT8n@(2XR}SwshO7rsmDClNvG-McDAS#)BE}a`#B&d^!~XHn08U zFd*p}kHR1zG?@sii3}~JObXpEfqme<48xi(-SBS-UL?uicE%Se&M#xiu=Tzs=RYp{(7eXU+5Nve-x!?T%$Tth7AHya}k@AQwkAN&fDZM>BLci z-)OMk1g~-G7>Qq?TQ6VKTQ9n~297f*nh@RYMCKh@OiXzLMH?5HF11YzJS?2TikQ&* z_S3%4?z;5Ho0tB7nwyykEMu69=znAlKh~Im-V^Zi_|@Z}iq0B3vbueP5G&6!KAD`2 zTwCE9GQeT}s6xXr;D-U2~KqNM}tWCr~PZVUbQ4sD5>@_;bS#U*zH zyr0GcNWEW2LzQBC+Xrv|a`3trTk9$m(6&zVq88JVQGt8#A1K84xnksHFD@R|nLDfB zxX6B|ZGN4Je!kh4^|Up3xZ5xKI=J7o{rk*FHx~5>2%H28b@m(^M2Hz_aH*$`f8Y)v zDx-`+R-7veCvnbr81jSrp41a!;sZU!%`l-$c-aI`@nRp}J68GI5XS!gUKtkN`oF5I z#YF*qI(yN2zV&Qj`jNyV@NGt|aZ=`UbY!Y4K0Vrom?5alztEONaf9c#p%x?Rll|0x zb1Ul&Jdh@m2g0t8UTW9jp_@55GMvFUtepD-XYmbE;>{R1I_b%*g8Xk^6_-5jZ)k+vFZ>^pb$C-9@i5sxKL zxrw6DxV$gF?eFKuow~2&gwc(igyBTgZ)$PKJ8%wj`& zcMPR&`$bVd)9Ydhg(bjwfe+lF07w}pYQ9I6$SeNB4!I2Y8bZ?7SH_pGewi}Zr*1)C zRq+#FQUQ`OPRx>3oqQ9U2ro=P#1>3$!rL6-U@Y(vzKA4owlpM{v6DCpQxK+HEG9%Q z)SEO~PXS6CqYX%gwdeXY4}+LpA|?1%#u)UMca7ASj-ulYf1O^R*<{xJBbDg*O)Em| zN8(W?=TXhI_O2#>0_}#j`~2c9{Oeh*cmB@EYjSm{TAuY^`;)w6vYic>qd6`w`11PW zpT-_+yI?pgXHRXFvvfrhqYf64jkT(HZdrgo+9`#B78>SHVn<|%WiT@=!pVV{xhgS^ zj%ZKszGtUl|F(2be~RwECUewnJ#C@p{isrk|7>LO;~Mzw(6M9lrbof0>{3o^3F-B@uI6D%~<4GhRZ~>_<29G9$)OlAZpjx3ojVT5Gt-AXi zcfK@HL^Y~{)HI?5Jt=U|0LOZg#CuImLE^q)0e1kAe=WP(z|#j1m4pN>-VfK{9AoEW zmKj48|3j%sM5?Z6XVlfi(w{R|Pqj*TGJ!-BMdYbn7AY>if^3ouYr32b zGm}QeLb$Xb*>b!~q^9Eo`_qx!FV5c>WK1X2d*@qFAd!+xPLXKK8;m z4-XYLsPb$5oo&b6${qP&3pX5?!!5((IX9=yl5wQ8)jqFRtItiN${>GX_D6W7hXh^Y z{}ct6z0!2%y6ZzQS=WD;wRq3NjHFrE*Azk~Fi%RdlMw^gY;6)(3OOi|(Yfr(3!&K* z5{775U(Ay2KX4juHHG=xq(NJjEU?*JTI1}j)5J`b@FH^h%kD-DAwyKfZ51eM!xf{p zCUcdHe5Ax`vj913MT#4_%Mk@Sn7TkX+gI+-^7}lTN@R@#fl@F@TL^G|E8)GeO@L!CIK;l2qTPjJs6065(y^^kOmlO098U&Ul zt2TEzO0%d-#HRLA6&s3l;ZrtkAY+CLG#hl*i)PeQK=cZtAnhnSNCKpCfy zKdP&}EoxM}^{?K4s>{}1c<^_8mQFwstPLBOLU^2s`eKJW?#*`m1UC3SN>bArPz~@I zflDBdO9}esTN41ufoYsT64dp(oTdgQawiA!B2iB2GDQaOFGK0Z6fdB;#Kl{Xw@{kf zdGWxqWT`o;cJlf>pTa4dQ2 zM7$YdrxjU6jRj4tjuJ>!{sKQoaYP`9WA*(}u2(%Vw|e3%MLwE+M*Gh{K&LEGmP4`F zvH2(ud4i2tgP`vQlR}wlo;!d4*fqVQlrIJn?#XRe5=Nk_K`%sJeqzT*m+Ybzu@)CK zl&4Ee;@r31#3AGpS_1Jvi%LEHqMCd?;q?yRdCCRaX=09Mm~nfM?kD0o(l+G8yuc`U zCeDowBQgX{4l0VnG1~j{jsH3O^?&+O`iDS%AHQ+KDBB6~Ppw0AnLT#FeQ52jY+GzR zkkoICez!q%7ugNrdyG)l{+S`=Xz%kngfCM>hU2E`70E!3fXv!2E*%cLwq@b+o~bb9s%OM%zO(xwlnN2)gmqDpG~L(~%$EP~6- z88(Q%0R%IWM7@ITm@4|-IPMC^ew5m@vKu(HFewjS9xI@i2_`c&NxnW#SuEeqY`10+ zC?B)J-4|aRqP*cPs5YX>GCv&J!%tczPZVQZ-98=@Fa?AUa#%NYWbO%Jn7 zC6BPlWQ93^KTcy02W@S|960xJI9y3MwmxV$o_Eh>D_%z*U-hkR@NKR+M@jB?A4|2W zIFY)@{k&Ik7j?Y#Zc&ygov>=?|LLMt8+Xd&=>piWBv^EpAg3UpOfS<5azhZ^44(Q0 z0UF~o989YebVZ-UIjT^aK(ng*HhFaC6<6h~r;ntTxIa&GKtS)+Og+6i7j1HvVR}~y zyw88xZu0@QDHe?xAeV1E_W;GxcWqa?7#P~u=@HyZyNN| zxXq?vJ=N2TErurWmZ{7=s85WK^U<}#Z?t!IGxziQ79hXV1%pOkGDXw}Td>`r_<1~0 z2YyQcfBO6d>POB(nd8tUe^*(o3QxziRqy73_IaS|#}F<4jZ2<%_I{DIpO}n%e!n_@u+Kf`e1S_Y!uI&iL?ZLXa=V2-1OQ50ZB>nS%09LF`$&qs(Q$0gC9n7^ z;wuc9To{wPY40y8P)8nl(^DPzeY$Gxzp`R-!2rO-S0^G|`D05u-uPy#+Descc*x=k zYe_W^e!lw@0H`5jXngl*hXGL6Ocl*5cWwnZH`ZuwCZSgIxYl-FHOrHiKDY2RJ~2kD zah(`}5&b-N&B5;efs*@Hrsjb^uyq9%7r!?M>QnoW90UZZ8AGaDA(1 z<3Bn&$I+X=fD3o*GM4t_KJA7;o-iHM(-ZSa+xgXBdy5qVp$K?EqQU*76GG9Dm5sNX zT(m6g0CjilYWTH-|JID~ML=?xPiLL-)BYb|(WZGnMtXv+Cw1QISm4qRc8MCr8Vbl) z(0KCGp+#yZ)jFqcap?sM9e$0FWMPd^9OdLgMpvz3U5eo@f=SF(LFn8VC-cKnlB{XR zGj3sM!mzjr7J527uL##8>8!NEEzY;ThIH&Pxlsg4=@A>P`YKbxR{v-NjK}DBcz3QO zlB-Wy9^O$Znv10h6JuzUBI4HRHiw_ZX%660q`P!r&iPygW7H2moT6hfGzoDmvJ`Y; zJ%!m5$1)IN(Ky`(RH0c*ih{9i!`?+z2L&dOR7Vl>%M{4RJBOrkwjzkI8jH$zqRG3lhRBbz9j9N-svrT@IousUF z36Pr~wQmH}%rX1X8~menq+~T@CD6JCw#0L;4PSVoB9EIn$LD$?^TCEoz-W2|y=wWi zk7s~U%+IpmNft&$S3VW@qM%bob&9cU!;4oklV3!G4n)pHE(In|s#myh1}RsF$28sx z6|VUekQrV4cI@T5fQ17h&BrxIda6Q$4qDT;gQ&5~1LaP%yPJO@yS#`(%GFWM@vk2s zOG*8>^mcI1p1P zk_M!x4k!J3%MA5cuUO~I*xv4&TB$!xiTrr+XFW$6KJZ5N0h9@FzX`)_nUGQuuH{H$ z_8`3GmEi#0NlPUMC9AAhYNuPsp9;prcuixp zNQUsLGxW4jO(hSMm>4AD3=1Y}oVYiN7^)>$&Mx_Zt2tPIeD98L(`9a3pU1!4_C8Jd zUe4DJTa?QtyY(HN?G9+J%u;QAlf!XqWxJI8O zWaxOB)p0<`O>~z#5|~1m4+$vg{N^pb3Pp(Lpl5>bczB=4&U~Ubr&THqbpD^x`9_(B z4Xm8W>TX!P(ZUCCzl>l+PJ~*RwWH!2h)9N!kPl2rc+TW!MHG} z6Q*F&5S&Gl*n)$c)=FRwGhM9a94Gcr$_{MX&mY-7`V)f$(+;xNw+k6dMi6s^(E7ENL$szm3#U&dN>1o}OJYY#GSG zhCPO-wP5`89?Ic8sAM%HfQOW|CJw9xiHs1g9>NZT;9UQVNXYhV*c$91yCQA3v^Qpd z{LQtk^HOqt5N4&$L_|-Xz7{B(E|VcOhx)~BUIiq#g*lQe01LcOB%|uJWCbV7Z^ON1 zi;ULy)3w{-lx*x@x+DkJ&oRKybX&h$Fzf>|Y_tYh4#EE4cXp^P2}KQ47AWgpnXF8# zpQ_k<2oP(m!!T8fWb2#xZzQh018fPXq#-sM#inhlywYsnVIyyP-`OwUMf7iw!!P0$ z*>Gr#ib-5NJ6!W9!rC$^1r5n3Q~N^`_OFQ?5es%5t>}sXe0%Jv;9*CTHAcKaGKeAi;y=JJ(K_L z^#gXZGafQX9yFivNQ=Pl#gQ?=TA9Do*E%uexcHi3xlo*E`S3Q_Z=~x-cP-SY392Ey z2W!f-q+s~S9?&4Ll<%3w%B(7IWI)FAVf6)JfuC#xarMuCvmo;s#?m2oGdyBFDVJlg zuXfiltS(jtqN_>=l2sTbYS9jV*5(AcI(;JfV4A=@?OQ?1I{~8n=NZu)MHp|GKU8bW6{fg)i{Wu&#AmfLE#|qTek%phE|d09eU`Xr&7q~G*l_@o zM-5BHWFkF$VuhhH3eJ}~@eUNO$|esIu8t2+me(Akz;WES#EzA)bHO4q|Q1Fqxz4WxfFiY{gT_njpBB+!H< zj^Yyp-a);_T-Ci8V4?=>VvXmV{E@Kl8)$VL-#yvp0ish|_z9XgC;MNp#KpzC7<|y3V3JP)Mu^o{Al6R1h64WdVwZx~YmuVoX)Vlu^*Fa6?ZSMP4v^tP6GG;ugFo91xa_ zh>ey=T8vdq{az1GLcN;lygWj!z~^Tz#?WA8DjlYstTOyyQ?XI1M*|J2OR=Y2@0CUZ zBRn`ru)u)BaO!fI zOJf=i1ktS>+^@~hYiiA-nz^QCa-hK|Z(#$WYGHjR^M--g`jB1;~OnbvH?uw?$v^1Mwk zDKQ=~JweJk{xdX@$`b!E$uoXu@rG+U8Oik!b#m?Mu-G)|@^-1> z%%;NanH6;4%Z4{g{Ii&R+S1i^TLVHUWd3Kxykqp=?L`!(9xo!bjW&WU|9R;@M4tO6 z|84bNJ?L5dm{~74I4hpR(e!e*1Dk3OMPnB+-T$qPeA2!41MgfS&n5X6hC>J}hpJ(e z_?AW}J=KE2;KeRoQgTkapC#J-SO&;T0M?du4z^M;bCu!}WM3%$pV>ydT>=k3X6t`B zD9+o`7?)C$>&&=Pk<(_G&`Kv|&ZK&}>F2bua9kAqFNkUo+g{g9jdC#mf5XohJ`w2i zeE!?zA2(HkhD5h-(zH+K<|Iqb{kA48-QHSpuKOqbYs;$(sZ;+RxyG_}p-GdO@(hgG zaRyEH7V6F?2DF%hGAYrLh2+1lKai5&Hj$FOijT5Wk4TTB2}{kJ%#`M#&ybS2qQn(; z0IVAD10bny$$*0Uj+@D9Bk;3fQAg#d#*^YB^XcODH3rI*VV~(y*ynYI5Q3}OQZmMS zhvTuo6g*uPh69?zFfeEs%YLV-c5o{l7zQaa$h^t zOL1)Alq@BqX3dHJ*+1rA|4S$54h#(WQ zhW{6#7~x;}kEpX+tFbvxu;-f-RbsGU(Kb zM*HUf9e-=yA)vkg^p|}^p!yH+8Se$Jj}`eVAYWx47Z=HUSh?UQE6__&l&-I;Vknc1 z{96C>*}Sot)l6)b`{oex*$+1H57YcMznnD1ktZeRGcW%SJe~?Z^?N4|`@F~Kq=Z!I zK0m2ALXdik$lCbV5mgG~e*i<_`#6ySJe6J^#VPsvxjmVHI%Z}0Rg;~Fhb5EW#!U>G`pQZ-`TZx}aM{$u zjH|lpZe)6DvJFSN+RYdx6vriJ@UZywzc^)~?PGKkc=#_;r1fI7ihijpHz`c)|G@s; z%9ft}>GLoA4$yxIfuga*GNWXa9lpku@+fk9OTCIQ+o(_DCmHcqggx|UL@teC#mpW# zA29u3(!85vdV2qVVdcRRWSJR{C!5a?E^Whw8$U-;tou&F|Lws!-luE4&*V@xB4?P^sWSqpp*>HVuwbnzX<;K%#H}8 zF|G}xT!xRVNTv0$Ntd}F8F|=PBzJ6%9>bFJf*6HKsnxg2$P=t&#x_J}iWC?9?Xx_a zi1&Rm^9AVjw4jjpL#0Y@8X-fG0cahk=bz$W`B4%oV%Cm@g!Zz^?_-2m#_yA}?hB3x z5phY^>L{lYN6VadrTs`{yz->)j+MbeX@f2Djy7p2qCk4;YX?_fH)cl}F)N#7_+o3+ zks@CSeCt&tly%|wEto_$7;Km|gDYa2GY@bK&lZwfN_#cNpQaVc7nE0&qQop-6qb%2 zxUe}UpxFTXi!_a{PNTULWJ@GfI9|$e#a1Kb#CeGjn3 zkEt2r3vS#bq@e9vpaKu1Floaa=i+)7MijHbzYrNvPLKz1N-6m2<5z{9{q!il3hwYH z+z{X}Ycir4AXM4)gN4PNV|)_T2^n*S1|uy|s?Ajb;uYt;l_nM~yi=!x!_yW%fMhA7 z^@%&f2#KhWq05C;UQWZe_vdFD(1<+vqQa4V$#keF>w}j>%{(o}1 zJzTY{+0t4d*$>3!P+FV0Ij7j^|Jo3qQuTj!$A5QJzjIchoNCNC8<*m6IS7Se!G26> zc9;cejw$B+UP^{`(q)g~70fgnW;JU;kL=HfqBW`gEB4IU&Km7-y9wRx0G$TPfHUL) z9H-RnjciA$Y8u1imk}V4XZ$5Zj{2{6H_AEi2e`}v zrPkZ2^A28yhxx%a3cYpCwD!+RVu_EQT%^GXK$XMl`WlFd+=)+R%2c9MfCX9(r^Xv( zYMooQB+7r%Y&s;|<8oR9XkAhcHm4h8Zf#0-DJpP!QV$60-WC8;KP_8k8c$ck#!g%B zu{KR!23C^r8(1}1Z&T}~i%Q&%Z47I8iv|no#nx?-j^0l0lPU}~O&#{b=2wM`CdK05 zN?i_Mtcn|fD(*b2djl^Alq`o9GSQp;*Su{#Ob4M;qz1v3Qu5nV4b|OKjW(>e;_FUt z3-A$o17Bwe$r2W_hwREpY*=?!zj>gfxwJ5`JZ>0~q*!_msWudv04^W5S1KC|q1&?s ztYRzA7cSgv5LDyETznw>qr-+`EMsyHRhO#=Mr0d1kZiyLg&6uzx3RNyzIhnOH`Gzw zn;6;d7H!Pi>-IVC`(>}oy8g4d6~%{joGeV?>j#~zDYckKn|=2wfqFr9OxbpaKib#2 z!E_tDv%jyDKa|ek+05X#Tyk-{`L;P%`R{#pxL+L(>K_kAuCi=@D)wTHP4(eG31SZR z`r$)6QQy*hw>CC|zbz2*Rch#T=o~6QffVKy0?fH#=9+Z*dyi+eiS8>|Qdj#|IRXNb zgzT(H{8rCtkLi)|(zRtlHD{=|Gh@$;F{6L!IwiCH>p!tJ`K6@ZzV~qawUI|=Tf4p%nrkRN|As-g)0Ix3$Lr|5S&;!xF_;F+&JX((`T(FTE`;+ zSZ`iuz-D$7rQ!54*YGjxvAKk1bh32ANQso&ZFhsLNmU6@%dNH8`M&8Z8B>Px;3rJZ zv}Lt7-Rg>1a-Nwa|?mSPIjsWf1#3On0sb1^;#1~Ty)%!jjT8}j_@E=30#e3KklP#J12bePEq zo?2F(>hbI6T@IE}Ug@0V^S8!n*0i@}j+!sW>P9Vyj|Vg-i4q?E&<|S&wuFq$hd46K zV{Y!qL`vL+$Z1X{8EJ_QR(+4)^^^@^7WrDl3@R*&oM)VR?2v#hEC9-z`3MERpJ|AZ zK_r5{uR3{me}ZYVf?(OCZJ@U>(mn@nLte#N!JF!n5r!I~I3VnP84(9G9|1LGB@~2$ zm_Y}PDpVM$>h=EtazKs0rf0E6b>e}HkYn{Ct+K$)Y7=Z~dYH5G8(+|sSO?{1=C0Bn zXfAB&f1+eUZ%jYOI%MrEC?;7Sp53%;ML*A9^&+LNHPMI5)TXEm5z8llgBC{7bL8H@n&at z%M%|ivVY-p(pPps=y9Ht%PH*XvL&;1><$rv^JC&7r9ju59^Szkb=zxXjJHg zVCu_`k_qhgOEzSeo+)<_FSj?2-yCkcyS>t}P#>4b#}zOV+UbFO zX${GMC!KuK+Bkf5=4IfVKr+f*&zvSG!qB!^wp}P&;qPV;|Zc$2_U$hq_ zlZGIp0KolifDX$Lz3_W#J4*plBPh|#kc7U21w=76@EHeWN$!2n_dW`)5%c>pm^BB= zn1T|d7(W<>E)h<^OqvGn)-B)WIpv4_#O9m1Jnr249NJ(v7+y~CKqbMkEZlr8d^qDK zDF}(1L4``ROM8--LL{ZFrM_kwpgvf5Y}cW&nB4*lrwy1ziy$Ql&{1M8Hq9jsIRJmP z|HkWg^}LW%VgWM(6mb5D6J~4=?Xj)kzUh>*f?;@k#)P7XqF9!NTn&< z(dRF`m~{I%ob+dP5kB9ghXz`42L)t)|4K(Jvgq}v=uZ<+HTUF>c)Pi2=Gwv&@j#6k z=t!T*(CY`6xR6A=#y8o~@SXZp_fRU}HFlq&E*3QEIo=iEjU!#J8#05cD5*0A;1{ym zU0B4{{gwuVjS@K;HLAJ!?YFd@k7GEsC2^_+JI~aZr(2P#R=M>gKdA+6ut9MVQk0xcJx7YB;M(Ndx*MAq6&;S%(eiHA@Z#2TW~V}W zbUn$14u75RkWBjxhxl;&OHlvN@_hTQ7Vo}cx0O9)+8CN3Y&bzv|NW;>ZovJE�tXTZ`Nv+9T#Ymn-Q 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‰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�$k_J@TZ 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 From d9338ee28c297941f9e25e203d2a15ab924f79c9 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 15:39:43 +0200 Subject: [PATCH 019/630] gsmopen: cleaning gsmlib --- .../noaudio_gsmlib_cplusplus/mod_gsmopen/Makefile | 6 ------ .../noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen.h | 1 - .../mod_gsmopen/gsmopen_protocol.cpp | 1 - .../noaudio_gsmlib_cplusplus/mod_gsmopen/mod_gsmopen.cpp | 1 - 4 files changed, 9 deletions(-) delete mode 100644 src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/Makefile delete mode 120000 src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen.h delete mode 120000 src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen_protocol.cpp delete mode 120000 src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/mod_gsmopen.cpp diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/Makefile deleted file mode 100644 index c2cf8be76b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -MODNAME=mod_gsmopen -SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' -LOCAL_CFLAGS += $(SVNDEF) -DNO_ALSA -I../../../../../../libs/spandsp/src -I../../../../../..//libs/tiff-3.8.2/libtiff -LOCAL_LDFLAGS=-lgsmme -L../../../../../../libs/spandsp/src -avoid-version -module -no-undefined -shared -lspandsp -LOCAL_OBJS=gsmopen_protocol.o -include ../../../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen.h deleted file mode 120000 index 663f1cbc4d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen.h +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen_protocol.cpp deleted file mode 120000 index b03564bdd9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/gsmopen_protocol.cpp +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen_protocol.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/mod_gsmopen.cpp deleted file mode 120000 index a0686ea786..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_gsmlib_cplusplus/mod_gsmopen/mod_gsmopen.cpp +++ /dev/null @@ -1 +0,0 @@ -../../mod_gsmopen.cpp \ No newline at end of file From eaa37c3e4109d3277b987662dfb74caf849c3a99 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 2 Apr 2012 19:01:45 +0200 Subject: [PATCH 020/630] gsmopen: windows now works --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 +- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 8 ++++---- .../endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc | 6 +++--- src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj | 6 +++--- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 7c72dcf651..f13d27775e 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -642,7 +642,7 @@ int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message) int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message); -int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed); +int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio_speed); int serial_audio_init(private_t * tech_pvt); int serial_audio_shutdown(private_t * tech_pvt); diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 3943ede712..0ae0eb255f 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -55,12 +55,12 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz) /***************/ #endif /* WIN32 */ -int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) +int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) { tech_pvt->serialPort_serial_control = new ctb::SerialPort(); - if( tech_pvt->serialPort_serial_control->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + if( tech_pvt->serialPort_serial_control->Open( "COM9", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); } else { ERRORA("port NOT open\n", GSMOPEN_P_LOG); @@ -3574,11 +3574,11 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) } -int gsmopen_serial_init_audio_port(private_t * tech_pvt, speed_t controldevice_audio_speed) +int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio_speed) { tech_pvt->serialPort_serial_audio = new ctb::SerialPort(); - if( tech_pvt->serialPort_serial_audio->Open( "/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + if( tech_pvt->serialPort_serial_audio->Open( "COM8", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); } else { ERRORA("port NOT open\n", GSMOPEN_P_LOG); diff --git a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc index 62e7b56371..6b773f429b 100644 --- a/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc +++ b/src/mod/endpoints/mod_gsmopen/libctb-0.16/build/makefile.vc @@ -44,7 +44,7 @@ INSTALLDIR = $(WXWIN) ### Variables: ### -CTB_LIB_CXXFLAGS = /MT$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ +CTB_LIB_CXXFLAGS = /MD$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ $(______DEBUG) /Fd..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb \ $(__OPTIMIZE_FLAG) /I..\include /GR /EHsc $(CPPFLAGS) $(CXXFLAGS) CTB_LIB_OBJECTS = \ @@ -56,7 +56,7 @@ CTB_LIB_OBJECTS = \ $(OUTPUT)\ctb_lib_serport.obj \ $(OUTPUT)\ctb_lib_timer.obj \ $(____GPIBSRC_FILENAMES_OBJECTS) -CTB_DLL_CXXFLAGS = /MT$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ +CTB_DLL_CXXFLAGS = /MD$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ $(______DEBUG) /Fd..\lib\ctb$(LIBFLAG)$(GPIBFLAG)-0.16.pdb \ $(__OPTIMIZE_FLAG) /I..\include /GR /EHsc $(CPPFLAGS) $(CXXFLAGS) CTB_DLL_OBJECTS = \ @@ -68,7 +68,7 @@ CTB_DLL_OBJECTS = \ $(OUTPUT)\ctb_dll_serport.obj \ $(OUTPUT)\ctb_dll_timer.obj \ $(____GPIBSRC_FILENAMES_1_OBJECTS) -CTBTEST_CXXFLAGS = /MT$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ +CTBTEST_CXXFLAGS = /MD$(____DEBUG_4) /DWIN32 $(____DEBUG) $(____DEBUG_2) \ $(______DEBUG) /Fd$(OUTPUT)\ctbtest.pdb /DGPIB=$(GPIB) $(__OPTIMIZE_FLAG) \ /I..\include /GR /EHsc $(CPPFLAGS) $(CXXFLAGS) CTBTEST_OBJECTS = \ diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj index 98c5d842ab..2233a61624 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj @@ -39,7 +39,7 @@ /> diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 896c38ed7a..54996cad63 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -919,7 +919,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; #ifdef BIGENDIAN if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { - switch_swap_linear((*frame)->data, (int) (*frame)->datalen / 2); + switch_swap_linear((int16_t *)(*frame)->data, (int) (*frame)->datalen / 2); } #endif //WARNINGA("HERE\n", GSMOPEN_P_LOG); From 982cb1fe1c5f0b4b6db4f9656f9591d54af6d73b Mon Sep 17 00:00:00 2001 From: Tamas Cseke Date: Mon, 2 Apr 2012 17:50:37 +0200 Subject: [PATCH 021/630] safe strdup FS-4062 --- .../mod_json_cdr/mod_json_cdr.c | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c index aad224655c..4370ee7f91 100644 --- a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c +++ b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c @@ -181,60 +181,61 @@ static switch_status_t set_json_cdr_log_dirs() return status; } +#define json_object_safe_new_string(str) json_object_new_string(str ? str : "") #define JSON_ENSURE_SUCCESS(obj) if (is_error(obj)) { return; } static void set_json_profile_data(struct json_object *json, switch_caller_profile_t *caller_profile) { struct json_object *param = NULL; - param = json_object_new_string((char *)caller_profile->username); + param = json_object_safe_new_string((char *)caller_profile->username); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "username", param); - param = json_object_new_string((char *)caller_profile->dialplan); + param = json_object_safe_new_string((char *)caller_profile->dialplan); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "dialplan", param); - param = json_object_new_string((char *)caller_profile->caller_id_name); + param = json_object_safe_new_string((char *)caller_profile->caller_id_name); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "caller_id_name", param); - param = json_object_new_string((char *)caller_profile->ani); + param = json_object_safe_new_string((char *)caller_profile->ani); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "ani", param); - param = json_object_new_string((char *)caller_profile->aniii); + param = json_object_safe_new_string((char *)caller_profile->aniii); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "aniii", param); - param = json_object_new_string((char *)caller_profile->caller_id_number); + param = json_object_safe_new_string((char *)caller_profile->caller_id_number); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "caller_id_number", param); - param = json_object_new_string((char *)caller_profile->network_addr); + param = json_object_safe_new_string((char *)caller_profile->network_addr); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "network_addr", param); - param = json_object_new_string((char *)caller_profile->rdnis); + param = json_object_safe_new_string((char *)caller_profile->rdnis); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "rdnis", param); - param = json_object_new_string(caller_profile->destination_number); + param = json_object_safe_new_string(caller_profile->destination_number); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "destination_number", param); - param = json_object_new_string(caller_profile->uuid); + param = json_object_safe_new_string(caller_profile->uuid); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "uuid", param); - param = json_object_new_string((char *)caller_profile->source); + param = json_object_safe_new_string((char *)caller_profile->source); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "source", param); - param = json_object_new_string((char *)caller_profile->context); + param = json_object_safe_new_string((char *)caller_profile->context); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "context", param); - param = json_object_new_string(caller_profile->chan_name); + param = json_object_safe_new_string(caller_profile->chan_name); JSON_ENSURE_SUCCESS(param); json_object_object_add(json, "chan_name", param); @@ -260,7 +261,7 @@ static void set_json_chan_vars(struct json_object *json, switch_channel_t *chann } } - variable = json_object_new_string(data); + variable = json_object_safe_new_string(data); if (!is_error(variable)) { json_object_object_add(json, hi->name, variable); } @@ -297,10 +298,10 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct json_object_object_add(cdr, "channel_data", j_channel_data); - j_field = json_object_new_string((char *) switch_channel_state_name(switch_channel_get_state(channel))); + j_field = json_object_safe_new_string((char *) switch_channel_state_name(switch_channel_get_state(channel))); json_object_object_add(j_channel_data, "state", j_field); - j_field = json_object_new_string(switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound"); + j_field = json_object_safe_new_string(switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound"); json_object_object_add(j_channel_data, "direction", j_field); @@ -311,13 +312,13 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct if ((f = switch_channel_get_flag_string(channel))) { - j_field = json_object_new_string((char *) f); + j_field = json_object_safe_new_string((char *) f); json_object_object_add(j_channel_data, "flags", j_field); free(f); } if ((f = switch_channel_get_cap_string(channel))) { - j_field = json_object_new_string((char *) f); + j_field = json_object_safe_new_string((char *) f); json_object_object_add(j_channel_data, "caps", j_field); free(f); } @@ -351,8 +352,8 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct goto error; } - json_object_object_add(j_application, "app_name", json_object_new_string(ap->app)); - json_object_object_add(j_application, "app_data", json_object_new_string(ap->arg ? ap->arg : "")); + json_object_object_add(j_application, "app_name", json_object_safe_new_string(ap->app)); + json_object_object_add(j_application, "app_data", json_object_safe_new_string(ap->arg)); json_object_object_add(j_apps, "application", j_application); } @@ -372,11 +373,11 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct json_object_object_add(cdr, "callflow", j_callflow); if (!zstr(caller_profile->dialplan)) { - json_object_object_add(j_callflow, "dialplan", json_object_new_string((char *)caller_profile->dialplan)); + json_object_object_add(j_callflow, "dialplan", json_object_safe_new_string((char *)caller_profile->dialplan)); } if (!zstr(caller_profile->profile_index)) { - json_object_object_add(j_callflow, "profile_index", json_object_new_string((char *)caller_profile->profile_index)); + json_object_object_add(j_callflow, "profile_index", json_object_safe_new_string((char *)caller_profile->profile_index)); } if (caller_profile->caller_extension) { @@ -390,11 +391,11 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct json_object_object_add(j_callflow, "extension", j_caller_extension); - json_object_object_add(j_caller_extension, "name", json_object_new_string(caller_profile->caller_extension->extension_name)); - json_object_object_add(j_caller_extension, "number", json_object_new_string(caller_profile->caller_extension->extension_number)); + json_object_object_add(j_caller_extension, "name", json_object_safe_new_string(caller_profile->caller_extension->extension_name)); + json_object_object_add(j_caller_extension, "number", json_object_safe_new_string(caller_profile->caller_extension->extension_number)); if (caller_profile->caller_extension->current_application) { - json_object_object_add(j_caller_extension, "current_app", json_object_new_string(caller_profile->caller_extension->current_application->application_name)); + json_object_object_add(j_caller_extension, "current_app", json_object_safe_new_string(caller_profile->caller_extension->current_application->application_name)); } for (ap = caller_profile->caller_extension->applications; ap; ap = ap->next) { @@ -410,8 +411,8 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct if (ap == caller_profile->caller_extension->current_application) { json_object_object_add(j_application, "last_executed", json_object_new_string("true")); } - json_object_object_add(j_application, "app_name", json_object_new_string(ap->application_name)); - json_object_object_add(j_application, "app_data", json_object_new_string(switch_str_nil(ap->application_data))); + json_object_object_add(j_application, "app_name", json_object_safe_new_string(ap->application_name)); + json_object_object_add(j_application, "app_data", json_object_safe_new_string(switch_str_nil(ap->application_data))); } if (caller_profile->caller_extension->children) { @@ -437,13 +438,13 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct json_object_object_add(j_inner_extension, "extension", j_caller_extension); - json_object_object_add(j_caller_extension, "name", json_object_new_string(cp->caller_extension->extension_name)); - json_object_object_add(j_caller_extension, "number", json_object_new_string(cp->caller_extension->extension_number)); + json_object_object_add(j_caller_extension, "name", json_object_safe_new_string(cp->caller_extension->extension_name)); + json_object_object_add(j_caller_extension, "number", json_object_safe_new_string(cp->caller_extension->extension_number)); - json_object_object_add(j_caller_extension, "dialplan", json_object_new_string((char *)cp->dialplan)); + json_object_object_add(j_caller_extension, "dialplan", json_object_safe_new_string((char *)cp->dialplan)); if (cp->caller_extension->current_application) { - json_object_object_add(j_caller_extension, "current_app", json_object_new_string(cp->caller_extension->current_application->application_name)); + json_object_object_add(j_caller_extension, "current_app", json_object_safe_new_string(cp->caller_extension->current_application->application_name)); } for (ap = cp->caller_extension->applications; ap; ap = ap->next) { @@ -457,8 +458,8 @@ static switch_status_t generate_json_cdr(switch_core_session_t *session, struct if (ap == cp->caller_extension->current_application) { json_object_object_add(j_application, "last_executed", json_object_new_string("true")); } - json_object_object_add(j_application, "app_name", json_object_new_string(ap->application_name)); - json_object_object_add(j_application, "app_data", json_object_new_string(switch_str_nil(ap->application_data))); + json_object_object_add(j_application, "app_name", json_object_safe_new_string(ap->application_name)); + json_object_object_add(j_application, "app_data", json_object_safe_new_string(switch_str_nil(ap->application_data))); } } } From b83b567dae390ed481b953b446791bfe0b47f2a0 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 3 Apr 2012 21:14:52 +0000 Subject: [PATCH 022/630] set sdp_zrtp_hash_string earlier when inbound-late-negotiation is enabled Previously in this case it was only being set after the dialplan had already executed. --- src/mod/endpoints/mod_sofia/sofia_glue.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index de42845ba4..0d7d3ac6e1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -3892,13 +3892,25 @@ void sofia_glue_set_r_sdp_codec_string(switch_core_session_t *session, const cha if (zstr(attr->a_name)) { continue; } - if (!strcasecmp(attr->a_name, "ptime")) { dptime = atoi(attr->a_value); break; } } + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Looking for zrtp-hash to set sdp_zrtp_hash_string\n"); + for (m = sdp->sdp_media; m; m = m->m_next) { + for (attr = m->m_attributes; attr; attr = attr->a_next) { + if (zstr(attr->a_name)) continue; + if (!strcasecmp(attr->a_name, "zrtp-hash") && attr->a_value) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Found zrtp-hash, setting sdp_zrtp_hash_string=%s\n", attr->a_value); + switch_channel_set_variable(channel, "sdp_zrtp_hash_string", attr->a_value); + switch_channel_set_flag(channel, CF_ZRTP_HASH); + break; + } + } + } + for (m = sdp->sdp_media; m; m = m->m_next) { ptime = dptime; if (m->m_type == sdp_media_image && m->m_port) { From 01a227d462bd43e3d2a45cde249d5536ee765f0c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 3 Apr 2012 21:19:45 +0000 Subject: [PATCH 023/630] gitignore httapi/Makefile --- src/mod/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/.gitignore b/src/mod/.gitignore index f7a1c41eea..064b64c73d 100644 --- a/src/mod/.gitignore +++ b/src/mod/.gitignore @@ -14,6 +14,7 @@ /applications/mod_fax/mod_fax.log /applications/mod_fifo/Makefile /applications/mod_fsv/Makefile +/applications/mod_httapi/Makefile /applications/mod_limit/Makefile /applications/mod_sms/Makefile /applications/mod_spandsp/Makefile From c5d88190bbdb58c0cec84703d40d15367657a113 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 3 Apr 2012 21:33:47 +0000 Subject: [PATCH 024/630] alphabetize modules in build/modules.conf.in --- build/modules.conf.in | 193 +++++++++++++++++++++--------------------- 1 file changed, 97 insertions(+), 96 deletions(-) diff --git a/build/modules.conf.in b/build/modules.conf.in index a9993c1e87..18babbfec9 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -1,131 +1,132 @@ -loggers/mod_console -loggers/mod_logfile -loggers/mod_syslog -#applications/mod_cidlookup +#applications/mod_abstraction +#applications/mod_avmd #applications/mod_blacklist +#applications/mod_callcenter +#applications/mod_cidlookup +applications/mod_cluechoo applications/mod_commands applications/mod_conference -applications/mod_dptools -applications/mod_enum -#applications/mod_osp -applications/mod_fifo #applications/mod_curl applications/mod_db -applications/mod_hash -#applications/mod_http_cache -#applications/mod_redis -applications/mod_voicemail -#applications/mod_voicemail_ivr #applications/mod_directory -#applications/mod_lcr -applications/mod_expr -applications/mod_esf -#applications/mod_easyroute -applications/mod_fsv -#applications/mod_nibblebill -#applications/mod_soundtouch -#applications/mod_rss -applications/mod_spandsp -#applications/mod_snom -#applications/mod_vmd -#applications/mod_avmd -#applications/mod_memcache -#applications/mod_spy -applications/mod_cluechoo -applications/mod_valet_parking #applications/mod_distributor -#applications/mod_stress +applications/mod_dptools +#applications/mod_easyroute +applications/mod_enum +applications/mod_esf +#applications/mod_esl +applications/mod_expr +applications/mod_fifo +#applications/mod_fsk +applications/mod_fsv +applications/mod_hash +applications/mod_httapi +#applications/mod_http_cache +#applications/mod_ladspa +#applications/mod_lcr +#applications/mod_memcache +#applications/mod_mongo +#applications/mod_nibblebill +#applications/mod_osp +#applications/mod_redis +#applications/mod_rss +applications/mod_sms #applications/mod_snapshot #applications/mod_snipe_hunt -#applications/mod_callcenter -#applications/mod_fsk -#applications/mod_ladspa -#applications/mod_mongo -#applications/mod_abstraction -#applications/mod_esl -applications/mod_sms -applications/mod_httapi -codecs/mod_g723_1 -codecs/mod_amr -#codecs/mod_amrwb -#codecs/mod_silk -#codecs/mod_codec2 -codecs/mod_g729 -#codecs/mod_com_g729 -codecs/mod_h26x -codecs/mod_bv -codecs/mod_ilbc -codecs/mod_speex -codecs/mod_siren -#codecs/mod_celt -#codecs/mod_opus -#codecs/mod_sangoma_codec -#codecs/mod_dahdi_codec -#codecs/mod_isac -#dialplans/mod_dialplan_directory -dialplans/mod_dialplan_xml -dialplans/mod_dialplan_asterisk -#directories/mod_ldap -#endpoints/mod_dingaling -#endpoints/mod_portaudio -endpoints/mod_sofia -endpoints/mod_loopback -#endpoints/mod_alsa -#endpoints/mod_opal -#endpoints/mod_skinny -#endpoints/mod_skypopen -#endpoints/mod_h323 -#endpoints/mod_khomp -#endpoints/mod_rtmp -#../../libs/openzap/mod_openzap -#../../libs/freetdm/mod_freetdm -#asr_tts/mod_unimrcp +#applications/mod_snom +#applications/mod_soundtouch +applications/mod_spandsp +#applications/mod_spy +#applications/mod_stress +applications/mod_valet_parking +#applications/mod_vmd +applications/mod_voicemail +#applications/mod_voicemail_ivr +#asr_tts/mod_cepstral #asr_tts/mod_flite #asr_tts/mod_pocketsphinx -#asr_tts/mod_cepstral #asr_tts/mod_tts_commandline +#asr_tts/mod_unimrcp +codecs/mod_amr +#codecs/mod_amrwb +codecs/mod_bv +#codecs/mod_celt +#codecs/mod_codec2 +#codecs/mod_com_g729 +#codecs/mod_dahdi_codec +codecs/mod_g723_1 +codecs/mod_g729 +codecs/mod_h26x +codecs/mod_ilbc +#codecs/mod_isac +#codecs/mod_opus +#codecs/mod_sangoma_codec +#codecs/mod_silk +codecs/mod_siren +codecs/mod_speex +dialplans/mod_dialplan_asterisk +#dialplans/mod_dialplan_directory +dialplans/mod_dialplan_xml +#directories/mod_ldap +#endpoints/mod_alsa +#endpoints/mod_dingaling +#endpoints/mod_h323 +#endpoints/mod_khomp +endpoints/mod_loopback +#endpoints/mod_opal +#endpoints/mod_portaudio +#endpoints/mod_rtmp +#endpoints/mod_skinny +#endpoints/mod_skypopen +endpoints/mod_sofia +event_handlers/mod_cdr_csv +#event_handlers/mod_cdr_mongodb +#event_handlers/mod_cdr_pg_csv +event_handlers/mod_cdr_sqlite +#event_handlers/mod_erlang_event #event_handlers/mod_event_multicast event_handlers/mod_event_socket #event_handlers/mod_event_zmq -event_handlers/mod_cdr_csv -event_handlers/mod_cdr_sqlite -#event_handlers/mod_cdr_mongodb -#event_handlers/mod_cdr_pg_csv #event_handlers/mod_radius_cdr -#event_handlers/mod_erlang_event #event_handlers/mod_snmp -formats/mod_native_file -formats/mod_sndfile -#formats/mod_shout formats/mod_local_stream -formats/mod_tone_stream +formats/mod_native_file #formats/mod_portaudio_stream #formats/mod_shell_stream +#formats/mod_shout +formats/mod_sndfile +formats/mod_tone_stream +#languages/mod_java +languages/mod_lua +#languages/mod_managed +#languages/mod_perl #languages/mod_python languages/mod_spidermonkey -languages/mod_lua -#languages/mod_perl #languages/mod_yaml -#languages/mod_java -#languages/mod_managed -xml_int/mod_xml_rpc -#xml_int/mod_xml_curl -xml_int/mod_xml_cdr -#xml_int/mod_xml_ldap -say/mod_say_en +loggers/mod_console +loggers/mod_logfile +loggers/mod_syslog #say/mod_say_de +say/mod_say_en #say/mod_say_es #say/mod_say_fr +#say/mod_say_he +#say/mod_say_hu #say/mod_say_it #say/mod_say_nl #say/mod_say_pt #say/mod_say_ru -#say/mod_say_zh -#say/mod_say_hu #say/mod_say_th -#say/mod_say_he -#timers/mod_timerfd +#say/mod_say_zh #timers/mod_posix_timer +#timers/mod_timerfd +xml_int/mod_xml_cdr +#xml_int/mod_xml_curl +#xml_int/mod_xml_ldap +xml_int/mod_xml_rpc + +#../../libs/freetdm/mod_freetdm +#../../libs/openzap/mod_openzap ## Experimental Modules (don't cry if they're broken) #../../contrib/mod/xml_int/mod_xml_odbc From bf71d26c73bcd5acbe9857682ef2b9b3e6732db0 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 18:53:44 +0000 Subject: [PATCH 025/630] libzrtp: add acinclude.m4 file with AX_PREFIX_CONFIG_H macro --- libs/libzrtp/projects/gnu/acinclude.m4 | 94 ++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 libs/libzrtp/projects/gnu/acinclude.m4 diff --git a/libs/libzrtp/projects/gnu/acinclude.m4 b/libs/libzrtp/projects/gnu/acinclude.m4 new file mode 100644 index 0000000000..f5879955c2 --- /dev/null +++ b/libs/libzrtp/projects/gnu/acinclude.m4 @@ -0,0 +1,94 @@ +AC_DEFUN([AX_PREFIX_CONFIG_H],[dnl +AC_BEFORE([AC_CONFIG_HEADERS],[$0])dnl +AC_CONFIG_COMMANDS([ifelse($1,,$PACKAGE-config.h,$1)],[dnl +AS_VAR_PUSHDEF([_OUT],[ac_prefix_conf_OUT])dnl +AS_VAR_PUSHDEF([_DEF],[ac_prefix_conf_DEF])dnl +AS_VAR_PUSHDEF([_PKG],[ac_prefix_conf_PKG])dnl +AS_VAR_PUSHDEF([_LOW],[ac_prefix_conf_LOW])dnl +AS_VAR_PUSHDEF([_UPP],[ac_prefix_conf_UPP])dnl +AS_VAR_PUSHDEF([_INP],[ac_prefix_conf_INP])dnl +m4_pushdef([_script],[conftest.prefix])dnl +m4_pushdef([_symbol],[m4_cr_Letters[]m4_cr_digits[]_])dnl +_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)` +_DEF=`echo _$_OUT | sed -e "y:m4_cr_letters:m4_cr_LETTERS[]:" -e "s/@<:@^m4_cr_Letters@:>@/_/g"` +_PKG=`echo ifelse($2, , $PACKAGE, $2)` +_LOW=`echo _$_PKG | sed -e "y:m4_cr_LETTERS-:m4_cr_letters[]_:"` +_UPP=`echo $_PKG | sed -e "y:m4_cr_letters-:m4_cr_LETTERS[]_:" -e "/^@<:@m4_cr_digits@:>@/s/^/_/"` +_INP=`echo "ifelse($3,,,$3)" | sed -e 's/ *//'` +if test ".$_INP" = "."; then + for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue + case "$ac_file" in + *.h) _INP=$ac_file ;; + *) + esac + test ".$_INP" != "." && break + done +fi +if test ".$_INP" = "."; then + case "$_OUT" in + */*) _INP=`basename "$_OUT"` + ;; + *-*) _INP=`echo "$_OUT" | sed -e "s/@<:@_symbol@:>@*-//"` + ;; + *) _INP=config.h + ;; + esac +fi +if test -z "$_PKG" ; then + AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) +else + if test ! -f "$_INP" ; then if test -f "$srcdir/$_INP" ; then + _INP="$srcdir/$_INP" + fi fi + AC_MSG_NOTICE(creating $_OUT - prefix $_UPP for $_INP defines) + if test -f $_INP ; then + echo "s/^@%:@undef *\\(@<:@m4_cr_LETTERS[]_@:>@\\)/@%:@undef $_UPP""_\\1/" > _script + echo "s/^@%:@undef *\\(@<:@m4_cr_letters@:>@\\)/@%:@undef $_LOW""_\\1/" >> _script + echo "s/^@%:@def[]ine *\\(@<:@m4_cr_LETTERS[]_@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_UPP""_\\1 \\" >> _script + echo "@%:@def[]ine $_UPP""_\\1 \\2 \\" >> _script + echo "@%:@endif/" >>_script + echo "s/^@%:@def[]ine *\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_LOW""_\\1 \\" >> _script + echo "@%:@define $_LOW""_\\1 \\2 \\" >> _script + echo "@%:@endif/" >> _script + # now executing _script on _DEF input to create _OUT output file + echo "@%:@ifndef $_DEF" >$tmp/pconfig.h + echo "@%:@def[]ine $_DEF 1" >>$tmp/pconfig.h + echo ' ' >>$tmp/pconfig.h + echo /'*' $_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h + + sed -f _script $_INP >>$tmp/pconfig.h + echo ' ' >>$tmp/pconfig.h + echo '/* once:' $_DEF '*/' >>$tmp/pconfig.h + echo "@%:@endif" >>$tmp/pconfig.h + if cmp -s $_OUT $tmp/pconfig.h 2>/dev/null; then + AC_MSG_NOTICE([$_OUT is unchanged]) + else + ac_dir=`AS_DIRNAME(["$_OUT"])` + AS_MKDIR_P(["$ac_dir"]) + rm -f "$_OUT" + mv $tmp/pconfig.h "$_OUT" + fi + cp _script _configs.sed + else + AC_MSG_ERROR([input file $_INP does not exist - skip generating $_OUT]) + fi + rm -f conftest.* +fi +m4_popdef([_symbol])dnl +m4_popdef([_script])dnl +AS_VAR_POPDEF([_INP])dnl +AS_VAR_POPDEF([_UPP])dnl +AS_VAR_POPDEF([_LOW])dnl +AS_VAR_POPDEF([_PKG])dnl +AS_VAR_POPDEF([_DEF])dnl +AS_VAR_POPDEF([_OUT])dnl +],[PACKAGE="$PACKAGE"])]) + +dnl implementation note: a bug report (31.5.2005) from Marten Svantesson points +dnl out a problem where `echo "\1"` results in a Control-A. The unix standard +dnl http://www.opengroup.org/onlinepubs/000095399/utilities/echo.html +dnl defines all backslash-sequences to be inherently non-portable asking +dnl for replacement mit printf. Some old systems had problems with that +dnl one either. However, the latest libtool (!) release does export an $ECHO +dnl (and $echo) that does the right thing - just one question is left: what +dnl was the first version to have it? Is it greater 2.58 ? From 176af123d03159df69a6fe75d0322b6297e99834 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 4 Apr 2012 13:52:54 -0500 Subject: [PATCH 026/630] FS-4067 --- src/mod/applications/mod_esf/mod_esf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_esf/mod_esf.c b/src/mod/applications/mod_esf/mod_esf.c index 39952f2a8c..5dd4782519 100644 --- a/src/mod/applications/mod_esf/mod_esf.c +++ b/src/mod/applications/mod_esf/mod_esf.c @@ -226,7 +226,7 @@ SWITCH_STANDARD_APP(bcast_function) bytes = 16; switch_socket_sendto(socket, control_packet_addr, 0, (void *) &control_packet, &bytes); - for (;;) { + while (switch_channel_ready(channel)) { status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); From 68d44c2e01194236889cf5a3aeb3bfed508b7d66 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 20:52:41 +0000 Subject: [PATCH 027/630] libzrtp: add bootstrap script --- libs/libzrtp/projects/gnu/autoreconf.sh | 5 ----- libs/libzrtp/projects/gnu/bootstrap.sh | 13 +++++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) delete mode 100755 libs/libzrtp/projects/gnu/autoreconf.sh create mode 100755 libs/libzrtp/projects/gnu/bootstrap.sh diff --git a/libs/libzrtp/projects/gnu/autoreconf.sh b/libs/libzrtp/projects/gnu/autoreconf.sh deleted file mode 100755 index fb8e583f63..0000000000 --- a/libs/libzrtp/projects/gnu/autoreconf.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -aclocal -I ./config/ -autoheader -autoconf -automake diff --git a/libs/libzrtp/projects/gnu/bootstrap.sh b/libs/libzrtp/projects/gnu/bootstrap.sh new file mode 100755 index 0000000000..a19fe3c0cf --- /dev/null +++ b/libs/libzrtp/projects/gnu/bootstrap.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +reconf () { + aclocal + libtoolize --copy --automake + autoconf + autoheader + automake --no-force --add-missing --copy +} + +(cd ../../third_party/bnlib && reconf) +reconf + From 79c214d4429e0255fa95a461f605a7d3db6372e7 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 20:59:02 +0000 Subject: [PATCH 028/630] libzrtp: remove old convenience script --- libs/libzrtp/projects/gnu/cfg | 2 -- 1 file changed, 2 deletions(-) delete mode 100755 libs/libzrtp/projects/gnu/cfg diff --git a/libs/libzrtp/projects/gnu/cfg b/libs/libzrtp/projects/gnu/cfg deleted file mode 100755 index 8f19122fb7..0000000000 --- a/libs/libzrtp/projects/gnu/cfg +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -./configure --enable-enterprise \ No newline at end of file From 92fb3394344e1b9f85cd3c098e7948de9af46a97 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 4 Apr 2012 16:18:53 -0500 Subject: [PATCH 029/630] FS-4071 --resolve --- libs/ldns/install-sh | 29 ++++++++++++------- libs/libnatpmp/natpmp.c | 13 +++++++-- libs/sofia-sip/.update | 2 +- .../libsofia-sip-ua/su/su_localinfo.c | 6 ++-- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/libs/ldns/install-sh b/libs/ldns/install-sh index 6781b987bd..a9244eb078 100755 --- a/libs/ldns/install-sh +++ b/libs/ldns/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,6 +156,10 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -200,7 +208,11 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,9 +240,9 @@ fi for src do - # Protect names starting with `-'. + # Protect names problematic for `test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -252,12 +264,7 @@ do 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. @@ -385,7 +392,7 @@ do case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ do for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then diff --git a/libs/libnatpmp/natpmp.c b/libs/libnatpmp/natpmp.c index d4b9dcbe31..c79e92bdfd 100644 --- a/libs/libnatpmp/natpmp.c +++ b/libs/libnatpmp/natpmp.c @@ -165,15 +165,22 @@ int sendnewportmappingrequest(natpmp_t * p, int protocol, uint16_t privateport, uint16_t publicport, uint32_t lifetime) { + uint16_t *n; + uint32_t *m; + if(!p || (protocol!=NATPMP_PROTOCOL_TCP && protocol!=NATPMP_PROTOCOL_UDP)) return NATPMP_ERR_INVALIDARGS; p->pending_request[0] = 0; p->pending_request[1] = (char)protocol; p->pending_request[2] = 0; p->pending_request[3] = 0; - *((uint16_t *)(intptr_t)(p->pending_request + 4)) = htons(privateport); - *((uint16_t *)(intptr_t)(p->pending_request + 6)) = htons(publicport); - *((uint32_t *)(intptr_t)(p->pending_request + 8)) = htonl(lifetime); + n = (uint16_t *)(p->pending_request + 4); *n = htons(privateport); + n = (uint16_t *)(p->pending_request + 6); *n = htons(publicport); + m = (uint32_t *)(p->pending_request + 8); *m = htonl(lifetime); + + //*((uint16_t *)(p->pending_request + 4)) = htons(privateport); + //*((uint16_t *)(p->pending_request + 6)) = htons(publicport); + //*((uint32_t *)(p->pending_request + 8)) = htonl(lifetime); p->pending_request_len = 12; return sendnatpmprequest(p); } diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index c35540c4f5..4c9b84cadf 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Thu Mar 1 10:03:45 CST 2012 +Wed Apr 4 16:17:37 CDT 2012 diff --git a/libs/sofia-sip/libsofia-sip-ua/su/su_localinfo.c b/libs/sofia-sip/libsofia-sip-ua/su/su_localinfo.c index 523599c7a7..c1c4fd23df 100644 --- a/libs/sofia-sip/libsofia-sip-ua/su/su_localinfo.c +++ b/libs/sofia-sip/libsofia-sip-ua/su/su_localinfo.c @@ -409,8 +409,10 @@ static int li_scope6(struct in6_addr const *ip6) { if (IN6_IS_ADDR_V4MAPPED(ip6) || IN6_IS_ADDR_V4COMPAT(ip6)) { - uint32_t ip4 = *(uint32_t *)(ip6->s6_addr + 12); - return li_scope4(ip4); + uint32_t *u = (uint32_t *)(ip6->s6_addr + 12); + + uint32_t ip4 = *u; + return li_scope4(ip4); } else if (IN6_IS_ADDR_LOOPBACK(ip6)) return LI_SCOPE_HOST; From c219a0949909eff988d0ae664bcd1edcfecc3620 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 21:24:35 +0000 Subject: [PATCH 030/630] Add option to ./bootstrap.sh to specify which directories to bootstrap --- bootstrap.sh | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index ff1f4550d0..9cfdfad648 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -2,22 +2,24 @@ echo "bootstrap: checking installation..." BGJOB=false -while getopts jh arg -do - case $arg in - j) BGJOB=true;; - h) echo "Usage: $0 " - echo " Options:" - echo " -j => Run Jobs in Background" - exit;; - esac -done - BASEDIR=`pwd`; LIBDIR=${BASEDIR}/libs; SUBDIRS="ilbc curl iksemel js js/nsprpub ldns libdingaling libedit libsndfile pcre sofia-sip \ speex sqlite srtp openzap freetdm spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice silk libcodec2"; +while getopts 'jhd:' o; do + case "$o" in + j) BGJOB=true;; + d) SUBDIRS="$OPTARG";; + h) echo "Usage: $0 " + echo " Options:" + echo " -d 'library1 library2'" + echo " => Override directories to bootstrap" + echo " -j => Run Jobs in Background" + exit;; + esac +done + if [ ! -f modules.conf ]; then cp build/modules.conf.in modules.conf fi From df8d2f1ecd33f4d06af1082dfe537bfd2ca5fdd5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 4 Apr 2012 17:20:17 -0500 Subject: [PATCH 031/630] FS-4038 --resolve --- src/switch_ivr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 955f7b50d6..1814fb70e4 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -1556,7 +1556,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_medi } switch_core_session_receive_message(other_session, &msg); switch_channel_wait_for_flag(other_channel, CF_REQ_MEDIA, SWITCH_FALSE, 10000, NULL); - switch_channel_wait_for_flag(other_channel, CF_MEDIA_ACK, SWITCH_TRUE, 10000, NULL); + //switch_channel_wait_for_flag(other_channel, CF_MEDIA_ACK, SWITCH_TRUE, 10000, NULL); switch_channel_wait_for_flag(other_channel, CF_MEDIA_SET, SWITCH_TRUE, 10000, NULL); } From 277c1141c4021f5b6cceceed9e5d1a063b86338c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Apr 2012 17:20:35 -0500 Subject: [PATCH 032/630] a few perf tweaks --- src/include/switch_xml.h | 2 +- src/mod/endpoints/mod_sofia/sofia_glue.c | 2 +- src/switch_channel.c | 5 ++--- src/switch_core_io.c | 14 +++++++------- src/switch_xml.c | 12 +++++++++++- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/include/switch_xml.h b/src/include/switch_xml.h index 0d436fac2f..558b8522f4 100644 --- a/src/include/switch_xml.h +++ b/src/include/switch_xml.h @@ -214,7 +214,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_get(_In_ switch_xml_t xml,...); ///\param prn_header add header too ///\return the xml text string SWITCH_DECLARE(char *) switch_xml_toxml(_In_ switch_xml_t xml, _In_ switch_bool_t prn_header); - +SWITCH_DECLARE(char *) switch_xml_toxml_nolock(switch_xml_t xml, _In_ switch_bool_t prn_header); ///\brief Converts an switch_xml structure back to xml using the buffer passed in the parameters. ///\param xml the xml node ///\param buf buffer to use diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 0d7d3ac6e1..5786ec8f14 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -5971,7 +5971,7 @@ void sofia_glue_tech_track(sofia_profile_t *profile, switch_core_session_t *sess } if (switch_ivr_generate_xml_cdr(session, &cdr) == SWITCH_STATUS_SUCCESS) { - xml_cdr_text = switch_xml_toxml(cdr, SWITCH_FALSE); + xml_cdr_text = switch_xml_toxml_nolock(cdr, SWITCH_FALSE); switch_xml_free(cdr); } diff --git a/src/switch_channel.c b/src/switch_channel.c index 76161bc9c5..b15b0948a7 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1868,12 +1868,11 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_set_running_state( switch_channel_clear_flag(channel, CF_TAGGED); - - switch_mutex_lock(channel->state_mutex); - switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_DEBUG, "(%s) Running State Change %s\n", channel->name, state_names[state]); + switch_mutex_lock(channel->state_mutex); + channel->running_state = state; if (state == CS_ROUTING || state == CS_HANGUP) { diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 8b147327a2..952b345e67 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -41,7 +41,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(switch_cor switch_io_event_hook_video_write_frame_t *ptr; switch_status_t status = SWITCH_STATUS_FALSE; - if (switch_channel_down_nosig(session->channel)) { + if (switch_channel_down(session->channel)) { return SWITCH_STATUS_FALSE; } @@ -65,7 +65,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(switch_core switch_assert(session != NULL); - if (switch_channel_down_nosig(session->channel)) { + if (switch_channel_down(session->channel)) { return SWITCH_STATUS_FALSE; } @@ -153,7 +153,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi } } - if (switch_channel_down_nosig(session->channel) || !switch_core_codec_ready(session->read_codec)) { + if (switch_channel_down(session->channel) || !switch_core_codec_ready(session->read_codec)) { *frame = NULL; status = SWITCH_STATUS_FALSE; goto even_more_done; @@ -1114,7 +1114,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess while (switch_buffer_inuse(session->raw_write_buffer) >= session->write_impl.decoded_bytes_per_packet) { int rate; - if (switch_channel_down_nosig(session->channel) || !session->raw_write_buffer) { + if (switch_channel_down(session->channel) || !session->raw_write_buffer) { goto error; } if ((session->raw_write_frame.datalen = (uint32_t) @@ -1296,7 +1296,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_recv_dtmf(switch_core_sessio switch_dtmf_t new_dtmf; int fed = 0; - if (switch_channel_down_nosig(session->channel)) { + if (switch_channel_down(session->channel)) { return SWITCH_STATUS_FALSE; } @@ -1339,7 +1339,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_send_dtmf(switch_core_sessio switch_status_t status = SWITCH_STATUS_FALSE; switch_dtmf_t new_dtmf; - if (switch_channel_down_nosig(session->channel)) { + if (switch_channel_down(session->channel)) { return SWITCH_STATUS_FALSE; } @@ -1418,7 +1418,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_send_dtmf_string(switch_core dtmf.flags = 0; } - if (switch_channel_down_nosig(session->channel)) { + if (switch_channel_down(session->channel)) { return SWITCH_STATUS_FALSE; } diff --git a/src/switch_xml.c b/src/switch_xml.c index 2c687839c8..ce85efad4c 100644 --- a/src/switch_xml.c +++ b/src/switch_xml.c @@ -2451,12 +2451,22 @@ static char *switch_xml_toxml_r(switch_xml_t xml, char **s, switch_size_t *len, } } +SWITCH_DECLARE(char *) switch_xml_toxml_nolock(switch_xml_t xml, switch_bool_t prn_header) +{ + char *s = (char *) malloc(SWITCH_XML_BUFSIZE); + switch_assert(s); + return switch_xml_toxml_buf(xml, s, SWITCH_XML_BUFSIZE, 0, prn_header); +} + + SWITCH_DECLARE(char *) switch_xml_toxml(switch_xml_t xml, switch_bool_t prn_header) { char *r, *s; - switch_mutex_lock(XML_GEN_LOCK); + s = (char *) malloc(SWITCH_XML_BUFSIZE); switch_assert(s); + + switch_mutex_lock(XML_GEN_LOCK); r = switch_xml_toxml_buf(xml, s, SWITCH_XML_BUFSIZE, 0, prn_header); switch_mutex_unlock(XML_GEN_LOCK); return r; From c6275ab22455e9488d80592a24899c3d6685e184 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 22:21:56 +0000 Subject: [PATCH 033/630] Refactor bootstrap.sh with more function points --- bootstrap.sh | 648 +++++++++++++++++++++++++++------------------------ 1 file changed, 339 insertions(+), 309 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 9cfdfad648..ae66c38ceb 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,4 +1,7 @@ #!/bin/sh +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- +##### bootstrap FreeSWITCH and FreeSWITCH libraries + echo "bootstrap: checking installation..." BGJOB=false @@ -12,291 +15,313 @@ while getopts 'jhd:' o; do j) BGJOB=true;; d) SUBDIRS="$OPTARG";; h) echo "Usage: $0 " - echo " Options:" - echo " -d 'library1 library2'" - echo " => Override directories to bootstrap" - echo " -j => Run Jobs in Background" - exit;; + echo " Options:" + echo " -d 'library1 library2'" + echo " => Override directories to bootstrap" + echo " -j => Run Jobs in Background" + exit;; esac done -if [ ! -f modules.conf ]; then +setup_modules() { + if [ ! -f modules.conf ]; then cp build/modules.conf.in modules.conf -fi + fi +} -# keep automake from making us magically GPL, and to stop complaining about missing files. -cp -f docs/COPYING . -cp -f docs/AUTHORS . -cp -f docs/ChangeLog . -touch NEWS -touch README +setup_gnu() { + # keep automake from making us magically GPL, and to stop + # complaining about missing files. + cp -f docs/COPYING . + cp -f docs/AUTHORS . + cp -f docs/ChangeLog . + touch NEWS + touch README +} -# autoconf 2.59 or newer -ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;s/[- ].*//g;q'` -if test -z "$ac_version"; then -echo "bootstrap: autoconf not found." -echo " You need autoconf version 2.59 or newer installed" -echo " to build FreeSWITCH from source." -exit 1 -fi +check_ac_ver() { + # autoconf 2.59 or newer + ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;s/[- ].*//g;q'` + if test -z "$ac_version"; then + echo "bootstrap: autoconf not found." + echo " You need autoconf version 2.59 or newer installed" + echo " to build FreeSWITCH from source." + exit 1 + fi + if test `uname -s` = "OpenBSD" && test "$ac_version" = "2.62"; then + echo "Autoconf 2.62 is broken on OpenBSD, please try another version" + exit 1 + fi + IFS=_; set $ac_version; IFS=' ' + ac_version=$1 + IFS=.; set $ac_version; IFS=' ' + if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then + echo "bootstrap: autoconf version $ac_version found." + echo " You need autoconf version 2.59 or newer installed" + echo " to build FreeSWITCH from source." + exit 1 + else + echo "bootstrap: autoconf version $ac_version (ok)" + fi +} -if test `uname -s` = "OpenBSD" && test "$ac_version" = "2.62"; then -echo "Autoconf 2.62 is broken on OpenBSD, please try another version" -exit 1 -fi +check_am_ver() { + # automake 1.7 or newer + am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;s/[- ].*//g;q'` + if test -z "$am_version"; then + echo "bootstrap: automake not found." + echo " You need automake version 1.7 or newer installed" + echo " to build FreeSWITCH from source." + exit 1 + fi + IFS=_; set $am_version; IFS=' ' + am_version=$1 + IFS=.; set $am_version; IFS=' ' + if test "$1" = "1" -a "$2" -lt "7"; then + echo "bootstrap: automake version $am_version found." + echo " You need automake version 1.7 or newer installed" + echo " to build FreeSWITCH from source." + exit 1 + else + echo "bootstrap: automake version $am_version (ok)" + fi +} -IFS=_; set $ac_version; IFS=' ' -ac_version=$1 -IFS=.; set $ac_version; IFS=' ' -if test "$1" = "2" -a "$2" -lt "59" || test "$1" -lt "2"; then -echo "bootstrap: autoconf version $ac_version found." -echo " You need autoconf version 2.59 or newer installed" -echo " to build FreeSWITCH from source." -exit 1 -else -echo "bootstrap: autoconf version $ac_version (ok)" -fi +check_acl_ver() { + # aclocal 1.7 or newer + acl_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;s/[- ].*//g;q'` + if test -z "$acl_version"; then + echo "bootstrap: aclocal not found." + echo " You need aclocal version 1.7 or newer installed" + echo " to build FreeSWITCH from source." + exit 1 + fi + IFS=_; set $acl_version; IFS=' ' + acl_version=$1 + IFS=.; set $acl_version; IFS=' ' + if test "$1" = "1" -a "$2" -lt "7"; then + echo "bootstrap: aclocal version $acl_version found." + echo " You need aclocal version 1.7 or newer installed" + echo " to build FreeSWITCH from source." + exit 1 + else + echo "bootstrap: aclocal version $acl_version (ok)" + fi +} +check_lt_ver() { + # Sample libtool --version outputs: + # ltmain.sh (GNU libtool) 1.3.3 (1.385.2.181 1999/07/02 15:49:11) + # ltmain.sh (GNU libtool 1.1361 2004/01/02 23:10:52) 1.5a + # output is multiline from 1.5 onwards -# automake 1.7 or newer + # Require libtool 1.4 or newer + libtool=${LIBTOOL:-`${LIBDIR}/apr/build/PrintPath glibtool libtool libtool22 libtool15 libtool14`} + lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` + if test -z "$lt_pversion"; then + echo "bootstrap: libtool not found." + echo " You need libtool version 1.5.14 or newer to build FreeSWITCH from source." + exit 1 + fi + lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'` + IFS=.; set $lt_version; IFS=' ' + lt_status="good" -am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;s/[- ].*//g;q'` -if test -z "$am_version"; then -echo "bootstrap: automake not found." -echo " You need automake version 1.7 or newer installed" -echo " to build FreeSWITCH from source." -exit 1 -fi -IFS=_; set $am_version; IFS=' ' -am_version=$1 -IFS=.; set $am_version; IFS=' ' -if test "$1" = "1" -a "$2" -lt "7"; then -echo "bootstrap: automake version $am_version found." -echo " You need automake version 1.7 or newer installed" -echo " to build FreeSWITCH from source." -exit 1 -else -echo "bootstrap: automake version $am_version (ok)" -fi + if test -z "$1"; then a=0 ; else a=$1;fi + if test -z "$2"; then b=0 ; else b=$2;fi + if test -z "$3"; then c=0 ; else c=$3;fi + lt_major=$a -# aclocal 1.7 or newer - -acl_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|sed -e 's/^[^0-9]*//;s/[a-z]* *$//;s/[- ].*//g;q'` -if test -z "$acl_version"; then -echo "bootstrap: aclocal not found." -echo " You need aclocal version 1.7 or newer installed" -echo " to build FreeSWITCH from source." -exit 1 -fi -IFS=_; set $acl_version; IFS=' ' -acl_version=$1 -IFS=.; set $acl_version; IFS=' ' -if test "$1" = "1" -a "$2" -lt "7"; then -echo "bootstrap: aclocal version $acl_version found." -echo " You need aclocal version 1.7 or newer installed" -echo " to build FreeSWITCH from source." -exit 1 -else -echo "bootstrap: aclocal version $acl_version (ok)" -fi - -# Sample libtool --version outputs: -# ltmain.sh (GNU libtool) 1.3.3 (1.385.2.181 1999/07/02 15:49:11) -# ltmain.sh (GNU libtool 1.1361 2004/01/02 23:10:52) 1.5a -# output is multiline from 1.5 onwards - -# Require libtool 1.4 or newer -libtool=${LIBTOOL:-`${LIBDIR}/apr/build/PrintPath glibtool libtool libtool22 libtool15 libtool14`} -lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` -if test -z "$lt_pversion"; then - echo "bootstrap: libtool not found." - echo " You need libtool version 1.5.14 or newer to build FreeSWITCH from source." - exit 1 -fi -lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'` -IFS=.; set $lt_version; IFS=' ' -lt_status="good" - -if test -z "$1"; then a=0 ; else a=$1;fi -if test -z "$2"; then b=0 ; else b=$2;fi -if test -z "$3"; then c=0 ; else c=$3;fi -lt_major=$a - -if test "$a" -eq "2"; then - lt_status="good" -elif test "$a" -lt "2"; then - if test "$b" -lt "5" -o "$b" = "5" -a "$c" -lt "14" ; then + if test "$a" -eq "2"; then + lt_status="good" + elif test "$a" -lt "2"; then + if test "$b" -lt "5" -o "$b" = "5" -a "$c" -lt "14" ; then lt_status="bad" - fi -else + fi + else lt_status="bad" -fi -if test $lt_status = "good"; then - echo "bootstrap: libtool version $lt_pversion (ok)" -else - echo "bootstrap: libtool version $lt_pversion found." - echo " You need libtool version 1.5.14 or newer to build FreeSWITCH from source." - exit 1 -fi + fi + if test $lt_status = "good"; then + echo "bootstrap: libtool version $lt_pversion (ok)" + else + echo "bootstrap: libtool version $lt_pversion found." + echo " You need libtool version 1.5.14 or newer to build FreeSWITCH from source." + exit 1 + fi +} -# check libtoolize availability -if [ -n "${LIBTOOL}" ]; then +check_libtoolize() { + # check libtoolize availability + if [ -n "${LIBTOOL}" ]; then libtoolize=${LIBTOOLIZE:-`dirname "${libtool}"`/libtoolize} -else + else libtoolize=${LIBTOOLIZE:-`${LIBDIR}/apr/build/PrintPath glibtoolize libtoolize libtoolize22 libtoolize15 libtoolize14`} -fi -if [ "x$libtoolize" = "x" ]; then + fi + if [ "x$libtoolize" = "x" ]; then echo "libtoolize not found in path" exit 1 -fi -if [ ! -x "$libtoolize" ]; then + fi + if [ ! -x "$libtoolize" ]; then echo "$libtoolize does not exist or is not executable" exit 1 -fi - -# compare libtool and libtoolize version -ltl_pversion=`$libtoolize --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` -ltl_version=`echo $ltl_pversion|sed -e 's/\([a-z]*\)$/.\1/'` -IFS=.; set $ltl_version; IFS=' ' - -if [ "x${lt_version}" != "x${ltl_version}" ]; then - echo "$libtool and $libtoolize have different versions" - exit 1 -fi - - -# -# Info output -# -echo "Bootstrapping using:" -echo " autoconf : ${AUTOCONF:-`which autoconf`}" -echo " automake : ${AUTOMAKE:-`which automake`}" -echo " aclocal : ${ACLOCAL:-`which aclocal`}" -echo " libtool : ${libtool} (${lt_version})" -echo " libtoolize: ${libtoolize}" -echo - -echo "Entering directory ${LIBDIR}/apr" -cd ${LIBDIR}/apr - -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# - -# bootstrap: Build the support scripts needed to compile from a -# checked-out version of the source code. - -# Create the libtool helper files -# -# Note: we copy (rather than link) them to simplify distribution. -# Note: APR supplies its own config.guess and config.sub -- we do not -# rely on libtool's versions -# -echo "Copying libtool helper files ..." - -# Remove any libtool files so one can switch between libtool 1.3 -# and libtool 1.4 by simply rerunning the bootstrap script. -(cd build ; rm -f ltconfig ltmain.sh libtool.m4) - -if ${libtoolize} -n --install >/dev/null 2>&1 ; then - $libtoolize --force --copy --install -else - $libtoolize --force --copy -fi - -if [ -f libtool.m4 ]; then - ltfile=`pwd`/libtool.m4 -else - if [ $lt_major -eq 2 ]; then - ltfindcmd="`sed -n \"/aclocaldir=/{s/.*=/echo /p;q;}\" < $libtoolize`" - ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`/libtool.m4} - else - ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \ - < $libtoolize`" - ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`} - fi - # Expecting the code above to be very portable, but just in case... - if [ -z "$ltfile" -o ! -f "$ltfile" ]; then - ltpath=`dirname $libtoolize` - ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4 - fi -fi - -if [ ! -f $ltfile ]; then - echo "$ltfile not found" - exit 1 -fi - -echo "bootstrap: Using libtool.m4 at ${ltfile}." - -cat $ltfile | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4 - -# libtool.m4 from 1.6 requires ltsugar.m4 -if [ -f ltsugar.m4 ]; then - rm -f build/ltsugar.m4 - mv ltsugar.m4 build/ltsugar.m4 -fi - -# Clean up any leftovers -rm -f aclocal.m4 libtool.m4 - -# fix for FreeBSD (at least): -# libtool.m4 is in share/aclocal, while e.g. aclocal19 only looks in share/aclocal19 -# get aclocal's default directory and include the libtool.m4 directory via -I if -# it's in a different location - -aclocal_dir="`${ACLOCAL:-aclocal} --print-ac-dir`" - -if [ -n "${aclocal_dir}" -a -n "${ltfile}" -a "`dirname ${ltfile}`" != "${aclocal_dir}" ] ; then - ACLOCAL_OPTS="-I `dirname ${ltfile}`" -fi - -### run aclocal -echo "Re-creating aclocal.m4 ..." -${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} - -### do some work to toss config.cache? -echo "Creating configure ..." -${AUTOCONF:-autoconf} - -# -# Generate the autoconf header -# -echo "Creating include/arch/unix/apr_private.h.in ..." -${AUTOHEADER:-autoheader} - -# Libs automake automation function -libbootstrap() -{ - i=$1 - if [ -d ${LIBDIR}/${i} ] ; then - echo "Entering directory ${LIBDIR}/${i}" - cd ${LIBDIR}/${i} - rm -f aclocal.m4 - CFFILE= - if [ -f ${LIBDIR}/${i}/configure.in ] ; then - CFFILE="${LIBDIR}/${i}/configure.in" - else - if [ -f ${LIBDIR}/${i}/configure.ac ] ; then - CFFILE="${LIBDIR}/${i}/configure.ac" - fi fi - if [ ! -z ${CFFILE} ] ; then + # compare libtool and libtoolize version + ltl_pversion=`$libtoolize --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` + ltl_version=`echo $ltl_pversion|sed -e 's/\([a-z]*\)$/.\1/'` + IFS=.; set $ltl_version; IFS=' ' + if [ "x${lt_version}" != "x${ltl_version}" ]; then + echo "$libtool and $libtoolize have different versions" + exit 1 + fi +} + +print_autotools_vers() { + # + # Info output + # + echo "Bootstrapping using:" + echo " autoconf : ${AUTOCONF:-`which autoconf`}" + echo " automake : ${AUTOMAKE:-`which automake`}" + echo " aclocal : ${ACLOCAL:-`which aclocal`}" + echo " libtool : ${libtool} (${lt_version})" + echo " libtoolize: ${libtoolize}" + echo +} + +bootstrap_apr() { + echo "Entering directory ${LIBDIR}/apr" + cd ${LIBDIR}/apr + + # Licensed to the Apache Software Foundation (ASF) under one or more + # contributor license agreements. See the NOTICE file distributed with + # this work for additional information regarding copyright ownership. + # The ASF licenses this file to You under the Apache License, Version 2.0 + # (the "License"); you may not use this file except in compliance with + # the License. You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + # + # + + # bootstrap: Build the support scripts needed to compile from a + # checked-out version of the source code. + + # Create the libtool helper files + # + # Note: we copy (rather than link) them to simplify distribution. + # Note: APR supplies its own config.guess and config.sub -- we do not + # rely on libtool's versions + # + echo "Copying libtool helper files ..." + + # Remove any libtool files so one can switch between libtool 1.3 + # and libtool 1.4 by simply rerunning the bootstrap script. + (cd build ; rm -f ltconfig ltmain.sh libtool.m4) + + if ${libtoolize} -n --install >/dev/null 2>&1 ; then + $libtoolize --force --copy --install + else + $libtoolize --force --copy + fi + + if [ -f libtool.m4 ]; then + ltfile=`pwd`/libtool.m4 + else + if [ $lt_major -eq 2 ]; then + ltfindcmd="`sed -n \"/aclocaldir=/{s/.*=/echo /p;q;}\" < $libtoolize`" + ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`/libtool.m4} + else + ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \ + < $libtoolize`" + ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`} + fi + # Expecting the code above to be very portable, but just in case... + if [ -z "$ltfile" -o ! -f "$ltfile" ]; then + ltpath=`dirname $libtoolize` + ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4 + fi + fi + + if [ ! -f $ltfile ]; then + echo "$ltfile not found" + exit 1 + fi + + echo "bootstrap: Using libtool.m4 at ${ltfile}." + + cat $ltfile | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4 + + # libtool.m4 from 1.6 requires ltsugar.m4 + if [ -f ltsugar.m4 ]; then + rm -f build/ltsugar.m4 + mv ltsugar.m4 build/ltsugar.m4 + fi + + # Clean up any leftovers + rm -f aclocal.m4 libtool.m4 + + # fix for FreeBSD (at least): + # libtool.m4 is in share/aclocal, while e.g. aclocal19 only looks in share/aclocal19 + # get aclocal's default directory and include the libtool.m4 directory via -I if + # it's in a different location + + aclocal_dir="`${ACLOCAL:-aclocal} --print-ac-dir`" + + if [ -n "${aclocal_dir}" -a -n "${ltfile}" -a "`dirname ${ltfile}`" != "${aclocal_dir}" ] ; then + ACLOCAL_OPTS="-I `dirname ${ltfile}`" + fi + + ### run aclocal + echo "Re-creating aclocal.m4 ..." + ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} + + ### do some work to toss config.cache? + echo "Creating configure ..." + ${AUTOCONF:-autoconf} + + # + # Generate the autoconf header + # + echo "Creating include/arch/unix/apr_private.h.in ..." + ${AUTOHEADER:-autoheader} + + # Remove autoconf 2.5x's cache directory + rm -rf autom4te*.cache + + echo "Entering directory ${LIBDIR}/apr-util" + cd ${LIBDIR}/apr-util + if [ "${BGJOB}" = "false" ]; then + ./buildconf + else + ./buildconf & + fi +} + +# Libs automake automation function +libbootstrap() { + i=$1 + if [ -d ${LIBDIR}/${i} ]; then + echo "Entering directory ${LIBDIR}/${i}" + cd ${LIBDIR}/${i} + rm -f aclocal.m4 + CFFILE= + if [ -f ${LIBDIR}/${i}/configure.in ]; then + CFFILE="${LIBDIR}/${i}/configure.in" + else + if [ -f ${LIBDIR}/${i}/configure.ac ]; then + CFFILE="${LIBDIR}/${i}/configure.ac" + fi + fi + + if [ ! -z ${CFFILE} ]; then LTTEST=`grep "AC_PROG_LIBTOOL" ${CFFILE}` LTTEST2=`grep "AM_PROG_LIBTOOL" ${CFFILE}` AMTEST=`grep "AM_INIT_AUTOMAKE" ${CFFILE}` @@ -307,69 +332,74 @@ libbootstrap() echo "Creating aclocal.m4" ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} ${ACLOCAL_FLAGS} -#only run if AC_PROG_LIBTOOL is in configure.in/configure.ac - if [ ! -z "${LTTEST}" -o "${LTTEST2}" -o "${AXTEST}" ] ; then - echo "Running libtoolize..." - if ${libtoolize} -n --install >/dev/null 2>&1 ; then - $libtoolize --force --copy --install - else - $libtoolize --force --copy - fi + # only run if AC_PROG_LIBTOOL is in configure.in/configure.ac + if [ ! -z "${LTTEST}" -o "${LTTEST2}" -o "${AXTEST}" ]; then + echo "Running libtoolize..." + if ${libtoolize} -n --install >/dev/null 2>&1; then + $libtoolize --force --copy --install + else + $libtoolize --force --copy + fi fi echo "Creating configure" ${AUTOCONF:-autoconf} -#only run if AC_CONFIG_HEADERS is found in configure.in/configure.ac - if [ ! -z "${AHTEST}" ] ; then - echo "Running autoheader..." - ${AUTOHEADER:-autoheader} ; + # only run if AC_CONFIG_HEADERS is found in configure.in/configure.ac + if [ ! -z "${AHTEST}" ]; then + echo "Running autoheader..." + ${AUTOHEADER:-autoheader}; fi -#run if AM_INIT_AUTOMAKE / AC_PROG_INSTALL is in configure.in/configure.ac - if [ ! -z "${AMTEST}" -o "${AMTEST2}" ] ; then - echo "Creating Makefile.in" - ${AUTOMAKE:-automake} --no-force --add-missing --copy ; + # run if AM_INIT_AUTOMAKE / AC_PROG_INSTALL is in configure.in/configure.ac + if [ ! -z "${AMTEST}" -o "${AMTEST2}" ]; then + echo "Creating Makefile.in" + ${AUTOMAKE:-automake} --no-force --add-missing --copy; fi rm -rf autom4te*.cache - fi + fi else - echo "Skipping directory ${LIBDIR}/${i}" + echo "Skipping directory ${LIBDIR}/${i}" fi } +bootstrap_fs() { + cd ${BASEDIR} + rm -f aclocal.m4 + ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} + $libtoolize --copy --automake + ${AUTOCONF:-autoconf} + ${AUTOHEADER:-autoheader} + ${AUTOMAKE:-automake} --no-force --add-missing --copy + rm -rf autom4te*.cache +} -# Remove autoconf 2.5x's cache directory -rm -rf autom4te*.cache +bootstrap_libs() { + for i in ${SUBDIRS}; do + if [ "${BGJOB}" = "false" ]; then + libbootstrap ${i} + else + libbootstrap ${i} & + fi + done +} -echo "Entering directory ${LIBDIR}/apr-util" -cd ${LIBDIR}/apr-util -if [ "${BGJOB}" = "false" ] ; then - ./buildconf -else - ./buildconf & -fi - - -for i in ${SUBDIRS} -do - if [ "${BGJOB}" = "false" ] ; then - libbootstrap ${i} - else - libbootstrap ${i} & +run() { + setup_modules + setup_gnu + check_ac_ver + check_am_ver + check_acl_ver + check_lt_ver + check_libtoolize + print_autotools_vers + bootstrap_apr + bootstrap_libs + bootstrap_fs + if [ "${BGJOB}" = "true" ]; then + wait fi -done +} -if [ "${BGJOB}" = "true" ] ; then - wait -fi -cd ${BASEDIR} - -rm -f aclocal.m4 -${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} -$libtoolize --copy --automake -${AUTOCONF:-autoconf} -${AUTOHEADER:-autoheader} -${AUTOMAKE:-automake} --no-force --add-missing --copy -rm -rf autom4te*.cache +run From 5d3c1da39c08012dddbec319f1b401c05af82f87 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 22:39:43 +0000 Subject: [PATCH 034/630] improve the -d option to ./bootstrap.sh --- bootstrap.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index ae66c38ceb..bd8c7679b2 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -9,15 +9,16 @@ BASEDIR=`pwd`; LIBDIR=${BASEDIR}/libs; SUBDIRS="ilbc curl iksemel js js/nsprpub ldns libdingaling libedit libsndfile pcre sofia-sip \ speex sqlite srtp openzap freetdm spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice silk libcodec2"; +SUBDIRS_ONLY=false while getopts 'jhd:' o; do case "$o" in j) BGJOB=true;; - d) SUBDIRS="$OPTARG";; + d) SUBDIRS="$OPTARG" SUBDIRS_ONLY=true;; h) echo "Usage: $0 " echo " Options:" echo " -d 'library1 library2'" - echo " => Override directories to bootstrap" + echo " => Bootstrap only specified subdirectories" echo " -j => Run Jobs in Background" exit;; esac @@ -393,9 +394,9 @@ run() { check_lt_ver check_libtoolize print_autotools_vers - bootstrap_apr + test $SUBDIRS_ONLY || bootstrap_apr bootstrap_libs - bootstrap_fs + test $SUBDIRS_ONLY || bootstrap_fs if [ "${BGJOB}" = "true" ]; then wait fi From 8f3bb106bac8b02e843526bf53dac8285f2c3caf Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 22:55:20 +0000 Subject: [PATCH 035/630] bootstrap.sh: refactor --- bootstrap.sh | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index bd8c7679b2..8dede07901 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -7,14 +7,15 @@ echo "bootstrap: checking installation..." BGJOB=false BASEDIR=`pwd`; LIBDIR=${BASEDIR}/libs; -SUBDIRS="ilbc curl iksemel js js/nsprpub ldns libdingaling libedit libsndfile pcre sofia-sip \ - speex sqlite srtp openzap freetdm spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice silk libcodec2"; -SUBDIRS_ONLY=false +SUBDIRS="apr \ + ilbc curl iksemel js js/nsprpub ldns libdingaling libedit libsndfile pcre sofia-sip \ + speex sqlite srtp openzap freetdm spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice silk libcodec2 \ + fs"; while getopts 'jhd:' o; do case "$o" in j) BGJOB=true;; - d) SUBDIRS="$OPTARG" SUBDIRS_ONLY=true;; + d) SUBDIRS="$OPTARG";; h) echo "Usage: $0 " echo " Options:" echo " -d 'library1 library2'" @@ -377,6 +378,9 @@ bootstrap_fs() { bootstrap_libs() { for i in ${SUBDIRS}; do + case "$i" in + apr|fs) bootstrap_$i && continue ;; + esac if [ "${BGJOB}" = "false" ]; then libbootstrap ${i} else @@ -394,9 +398,7 @@ run() { check_lt_ver check_libtoolize print_autotools_vers - test $SUBDIRS_ONLY || bootstrap_apr bootstrap_libs - test $SUBDIRS_ONLY || bootstrap_fs if [ "${BGJOB}" = "true" ]; then wait fi From cdf6e17713c85a83a6c17b1bd5cd21bf3910e140 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 22:59:45 +0000 Subject: [PATCH 036/630] bootstrap.sh: add support for libzrtp --- bootstrap.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 8dede07901..ae16cfa8d6 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -8,7 +8,7 @@ BGJOB=false BASEDIR=`pwd`; LIBDIR=${BASEDIR}/libs; SUBDIRS="apr \ - ilbc curl iksemel js js/nsprpub ldns libdingaling libedit libsndfile pcre sofia-sip \ + libzrtp ilbc curl iksemel js js/nsprpub ldns libdingaling libedit libsndfile pcre sofia-sip \ speex sqlite srtp openzap freetdm spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice silk libcodec2 \ fs"; @@ -307,6 +307,10 @@ bootstrap_apr() { fi } +bootstrap_libzrtp() { + (cd ${LIBDIR}/libzrtp/projects/gnu && ./bootstrap.sh) +} + # Libs automake automation function libbootstrap() { i=$1 @@ -379,7 +383,7 @@ bootstrap_fs() { bootstrap_libs() { for i in ${SUBDIRS}; do case "$i" in - apr|fs) bootstrap_$i && continue ;; + apr|fs|libzrtp) bootstrap_$i && continue ;; esac if [ "${BGJOB}" = "false" ]; then libbootstrap ${i} From dfc68a72d585e363a712a1ea5a42b97c82486def Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 23:23:07 +0000 Subject: [PATCH 037/630] bootstrap.sh: ensure some parts of bootstrap are serialized --- bootstrap.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bootstrap.sh b/bootstrap.sh index ae16cfa8d6..5ccf450f97 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -383,7 +383,10 @@ bootstrap_fs() { bootstrap_libs() { for i in ${SUBDIRS}; do case "$i" in - apr|fs|libzrtp) bootstrap_$i && continue ;; + apr|fs|libzrtp) + [ "${BGJOB}" = "true" ] && wait + bootstrap_$i && continue + ;; esac if [ "${BGJOB}" = "false" ]; then libbootstrap ${i} From 3282a35d99d59128d894d69cd8fa20230451d911 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 23:34:06 +0000 Subject: [PATCH 038/630] bootstrap.sh: refactor --- bootstrap.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 5ccf450f97..ed72523f31 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -300,7 +300,7 @@ bootstrap_apr() { echo "Entering directory ${LIBDIR}/apr-util" cd ${LIBDIR}/apr-util - if [ "${BGJOB}" = "false" ]; then + if ! ${BGJOB}; then ./buildconf else ./buildconf & @@ -384,11 +384,12 @@ bootstrap_libs() { for i in ${SUBDIRS}; do case "$i" in apr|fs|libzrtp) - [ "${BGJOB}" = "true" ] && wait - bootstrap_$i && continue + ${BGJOB} && wait + bootstrap_$i + continue ;; esac - if [ "${BGJOB}" = "false" ]; then + if ! ${BGJOB}; then libbootstrap ${i} else libbootstrap ${i} & @@ -406,7 +407,7 @@ run() { check_libtoolize print_autotools_vers bootstrap_libs - if [ "${BGJOB}" = "true" ]; then + if ${BGJOB}; then wait fi } From d93c10e189728d24602c0be1e29554c24e3dc8b4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 4 Apr 2012 23:39:55 +0000 Subject: [PATCH 039/630] bootstrap.sh: refactor --- bootstrap.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index ed72523f31..102df82eed 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -407,9 +407,7 @@ run() { check_libtoolize print_autotools_vers bootstrap_libs - if ${BGJOB}; then - wait - fi + ${BGJOB} && wait } run From 9e25cc2c0ff337a68f8ca24e6b44943c3ac809d2 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 00:23:23 +0000 Subject: [PATCH 040/630] bootstrap.sh: ensure bootstrap script returns 0 on success --- bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bootstrap.sh b/bootstrap.sh index 102df82eed..ec13fdd669 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -408,6 +408,7 @@ run() { print_autotools_vers bootstrap_libs ${BGJOB} && wait + return 0 } run From 393b63b7bd9155d2240b4bb7a3bd4b2da8b69d18 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 04:10:55 +0000 Subject: [PATCH 041/630] integrate in-tree libzrtp into the build system Thanks to Ken Rice for working with me late into the night to get this done. --- Makefile.am | 9 ++++++++- configure.in | 11 ++++------- src/switch_rtp.c | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 9f6ab76916..0c242d6c33 100644 --- a/Makefile.am +++ b/Makefile.am @@ -147,7 +147,11 @@ libfreeswitch_la_LDFLAGS += $(ODBC_LIB_FLAGS) endif if ENABLE_ZRTP -libfreeswitch_la_LDFLAGS += -lzrtp -lbn +CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes +CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib +CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/include +libfreeswitch_la_LDFLAGS += -Llibs/libzrtp/third_party/bnlib -lbn -Llibs/libzrtp/projects/gnu/build -lzrtp +CORE_LIBS += libs/libzrtp/projects/gnu/libzrtp.a endif library_includedir = $(includedir) @@ -460,6 +464,9 @@ libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update @cd libs/srtp && $(MAKE) @$(TOUCH_TARGET) +libs/libzrtp/projects/gnu/libzrtp.a: libs/libzrtp libs/libzrtp/projects/gnu/.update + @cd libs/libzrtp/projects/gnu && $(MAKE) + @$(TOUCH_TARGET) ## ## helper targets diff --git a/configure.in b/configure.in index d362db9dd0..3df878551d 100644 --- a/configure.in +++ b/configure.in @@ -363,13 +363,7 @@ AM_CONDITIONAL([ENABLE_SRTP],[test "${enable_srtp}" = "yes"]) AC_ARG_ENABLE(zrtp, [AS_HELP_STRING([--enable-zrtp], [Compile with zrtp Support])],,[enable_zrtp="no"]) if test "x$enable_zrtp" = "xyes" ; then - saved_LIBS="$LIBS" - LIBS="$saved_LIBS -L/usr/local/lib -lbn -lpthread" - AC_CHECK_LIB(zrtp, zrtp_init, [has_zrtp="yes"], [has_zrtp="no"]) - LIBS="$saved_LIBS" - if test "x$has_zrtp" = "xno"; then - AC_ERROR([Cannot locate zrtp libraries]) - fi + LIBS="-lpthread $LIBS" APR_ADDTO(SWITCH_AM_CFLAGS, -DENABLE_ZRTP) fi @@ -1090,6 +1084,9 @@ AC_CONFIG_SUBDIRS([libs/broadvoice]) AC_CONFIG_SUBDIRS([libs/libg722_1]) AC_CONFIG_SUBDIRS([libs/silk]) AC_CONFIG_SUBDIRS([libs/libcodec2]) +if test "x${enable_zrtp}" = "xyes"; then + AC_CONFIG_SUBDIRS([libs/libzrtp/projects/gnu]) +fi case $host in *-openbsd*) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 5e741c4eb7..932485eae7 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -71,7 +71,7 @@ static switch_mutex_t *port_lock = NULL; typedef srtp_hdr_t rtp_hdr_t; #ifdef ENABLE_ZRTP -#include +#include "zrtp.h" static zrtp_global_t *zrtp_global; static zrtp_zid_t zid = { "FreeSWITCH01" }; static int zrtp_on = 0; From c307b67e35698b31a30458f22da316dd9f6a812a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 04:26:27 +0000 Subject: [PATCH 042/630] libzrtp: add .gitignore files --- libs/libzrtp/.gitignore | 2 ++ libs/libzrtp/projects/gnu/.gitignore | 10 ++++++++++ libs/libzrtp/third_party/bnlib/.gitignore | 2 ++ 3 files changed, 14 insertions(+) create mode 100644 libs/libzrtp/.gitignore create mode 100644 libs/libzrtp/projects/gnu/.gitignore create mode 100644 libs/libzrtp/third_party/bnlib/.gitignore diff --git a/libs/libzrtp/.gitignore b/libs/libzrtp/.gitignore new file mode 100644 index 0000000000..4bb1123214 --- /dev/null +++ b/libs/libzrtp/.gitignore @@ -0,0 +1,2 @@ +# -*- mode:conf -*- +/include/zrtp_config_unix.h diff --git a/libs/libzrtp/projects/gnu/.gitignore b/libs/libzrtp/projects/gnu/.gitignore new file mode 100644 index 0000000000..0920c730f6 --- /dev/null +++ b/libs/libzrtp/projects/gnu/.gitignore @@ -0,0 +1,10 @@ +# -*- mode:conf -*- +/Makefile +/Makefile.in +/_configs.sed +/build/Makefile +/build/Makefile.in +/build/test/Makefile +/build/test/Makefile.in +/config/config.h +/config/stamp-h1 diff --git a/libs/libzrtp/third_party/bnlib/.gitignore b/libs/libzrtp/third_party/bnlib/.gitignore new file mode 100644 index 0000000000..73fb01bbeb --- /dev/null +++ b/libs/libzrtp/third_party/bnlib/.gitignore @@ -0,0 +1,2 @@ +# -*- mode:conf -*- +/bnconfig.h From 0b6023b26140d3cc8d5d0b4da3986852b317894e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 04:44:26 +0000 Subject: [PATCH 043/630] fix libzrtp build --- Makefile.am | 2 +- libs/ldns/install-sh | 29 +++++++++++------------------ 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/Makefile.am b/Makefile.am index 0c242d6c33..bcc205029b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -464,7 +464,7 @@ libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update @cd libs/srtp && $(MAKE) @$(TOUCH_TARGET) -libs/libzrtp/projects/gnu/libzrtp.a: libs/libzrtp libs/libzrtp/projects/gnu/.update +libs/libzrtp/projects/gnu/build/libzrtp.a: libs/libzrtp libs/libzrtp/projects/gnu/.update @cd libs/libzrtp/projects/gnu && $(MAKE) @$(TOUCH_TARGET) diff --git a/libs/ldns/install-sh b/libs/ldns/install-sh index a9244eb078..6781b987bd 100755 --- a/libs/ldns/install-sh +++ b/libs/ldns/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,10 +156,6 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac shift;; -T) no_target_directory=true;; @@ -190,10 +186,6 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac done fi @@ -208,11 +200,7 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 + 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. @@ -240,9 +228,9 @@ fi for src do - # Protect names problematic for `test' and other utilities. + # Protect names starting with `-'. case $src in - -* | [=\(\)!]) src=./$src;; + -*) src=./$src;; esac if test -n "$dir_arg"; then @@ -264,7 +252,12 @@ do 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. @@ -392,7 +385,7 @@ do case $dstdir in /*) prefix='/';; - [-=\(\)!]*) prefix='./';; + -*) prefix='./';; *) prefix='';; esac @@ -410,7 +403,7 @@ do for d do - test X"$d" = X && continue + test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then From a5cbd2c650e726309df2782740c1ae8db6165868 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 04:57:39 +0000 Subject: [PATCH 044/630] Revert unintended changes to libs/ldns/install-sh I hate this file; we need to do something about this. Partially revert "fix libzrtp build" commit 0b6023b26140d3cc8d5d0b4da3986852b317894e --- libs/ldns/install-sh | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/libs/ldns/install-sh b/libs/ldns/install-sh index 6781b987bd..a9244eb078 100755 --- a/libs/ldns/install-sh +++ b/libs/ldns/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -156,6 +156,10 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -200,7 +208,11 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,9 +240,9 @@ fi for src do - # Protect names starting with `-'. + # Protect names problematic for `test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -252,12 +264,7 @@ do 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. @@ -385,7 +392,7 @@ do case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ do for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then From 1f5ab2354f2d71e83b2c65b1c8bbe4a1f78f5952 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 05:02:01 +0000 Subject: [PATCH 045/630] fix for libzrtp build --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index bcc205029b..d98116e43c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -151,7 +151,7 @@ CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/include libfreeswitch_la_LDFLAGS += -Llibs/libzrtp/third_party/bnlib -lbn -Llibs/libzrtp/projects/gnu/build -lzrtp -CORE_LIBS += libs/libzrtp/projects/gnu/libzrtp.a +CORE_LIBS += libs/libzrtp/projects/gnu/build/libzrtp.a endif library_includedir = $(includedir) From 9db7706061ead0be8754d9d3e339ac84bb529e42 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 5 Apr 2012 00:13:45 -0500 Subject: [PATCH 046/630] stop recursive recursion --- Makefile.am | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index d98116e43c..d5c862e5e8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -433,6 +433,9 @@ src/include/switch_version.h: src/include/switch_version.h.in .version $(libfree libs/libedit/src/.libs/libedit.a: cd libs/libedit && $(MAKE) +libs/libzrtp/projects/gnu/build/libzrtp.a: + cd libs/libzrtp/projects/gnu && $(MAKE) + libs/curl/Makefile: cd libs/curl && sh ./configure.gnu --prefix=$(prefix) @@ -464,10 +467,6 @@ libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update @cd libs/srtp && $(MAKE) @$(TOUCH_TARGET) -libs/libzrtp/projects/gnu/build/libzrtp.a: libs/libzrtp libs/libzrtp/projects/gnu/.update - @cd libs/libzrtp/projects/gnu && $(MAKE) - @$(TOUCH_TARGET) - ## ## helper targets ## From 4792515ed06b40b3938885b8fe1584c80a17b630 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 05:15:01 +0000 Subject: [PATCH 047/630] whitespace --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index d5c862e5e8..ec182b3ea8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -433,7 +433,7 @@ src/include/switch_version.h: src/include/switch_version.h.in .version $(libfree libs/libedit/src/.libs/libedit.a: cd libs/libedit && $(MAKE) -libs/libzrtp/projects/gnu/build/libzrtp.a: +libs/libzrtp/projects/gnu/build/libzrtp.a: cd libs/libzrtp/projects/gnu && $(MAKE) libs/curl/Makefile: From 115d849a0c11236c2eb69c12cafaf8a2bb25eccd Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 06:08:21 +0000 Subject: [PATCH 048/630] work around libzrtp warnings This workaround makes the build work exactly as it did when libzrtp was installed as a system library. By default gcc ignores warnings caused by system headers, so for the moment we'll continue to pretend that libzrtp headers come from the system. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index ec182b3ea8..a6aa32de2a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -149,7 +149,7 @@ endif if ENABLE_ZRTP CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib -CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/include +CORE_CFLAGS += -isystem $(switch_srcdir)/libs/libzrtp/include libfreeswitch_la_LDFLAGS += -Llibs/libzrtp/third_party/bnlib -lbn -Llibs/libzrtp/projects/gnu/build -lzrtp CORE_LIBS += libs/libzrtp/projects/gnu/build/libzrtp.a endif From a05685cf6061c30584ede2b8433e71517f106915 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 06:32:38 +0000 Subject: [PATCH 049/630] fix linking of libzrtp build --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index a6aa32de2a..c2969f7069 100644 --- a/Makefile.am +++ b/Makefile.am @@ -152,6 +152,7 @@ CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib CORE_CFLAGS += -isystem $(switch_srcdir)/libs/libzrtp/include libfreeswitch_la_LDFLAGS += -Llibs/libzrtp/third_party/bnlib -lbn -Llibs/libzrtp/projects/gnu/build -lzrtp CORE_LIBS += libs/libzrtp/projects/gnu/build/libzrtp.a +LIBS += libs/libzrtp/third_party/bnlib/libbn.a endif library_includedir = $(includedir) From ad9d2fed21c86733cabcfc54aa38bc2c9ef0c498 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 07:10:07 +0000 Subject: [PATCH 050/630] refactor libzrtp linking --- Makefile.am | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index c2969f7069..1e6d72f0c7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -150,7 +150,11 @@ if ENABLE_ZRTP CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib CORE_CFLAGS += -isystem $(switch_srcdir)/libs/libzrtp/include -libfreeswitch_la_LDFLAGS += -Llibs/libzrtp/third_party/bnlib -lbn -Llibs/libzrtp/projects/gnu/build -lzrtp +ZRTP_LDFLAGS = -Llibs/libzrtp/third_party/bnlib +ZRTP_LDFLAGS += -Llibs/libzrtp/projects/gnu/build +ZRTP_LIBS = -lbn -lzrtp +libfreeswitch_la_LDFLAGS += $(ZRTP_LDFLAGS) +libfreeswitch_la_LIBADD += $(ZRTP_LIBS) CORE_LIBS += libs/libzrtp/projects/gnu/build/libzrtp.a LIBS += libs/libzrtp/third_party/bnlib/libbn.a endif From 9468eeb5c89cfc0804c182bd0bda075a8a0b609c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 07:34:32 +0000 Subject: [PATCH 051/630] libzrtp: remove an autogenerated file --- libs/libzrtp/third_party/bnlib/Makefile | 182 ------------------------ 1 file changed, 182 deletions(-) delete mode 100644 libs/libzrtp/third_party/bnlib/Makefile diff --git a/libs/libzrtp/third_party/bnlib/Makefile b/libs/libzrtp/third_party/bnlib/Makefile deleted file mode 100644 index 9d0890ce82..0000000000 --- a/libs/libzrtp/third_party/bnlib/Makefile +++ /dev/null @@ -1,182 +0,0 @@ -# -# This code is pretty well tested, but not optimizing it will have -# a *major* effect on speed, so its optimzation flags are separate -# from the rest of the release. -# -# For the SPARC v8, at least, gcc produces a *much* faster library than -# the SunPro C compiler. On a 50 MHz TI TMS390Z50 SuperSPARC: -# 14.5 vs. 47.2 ms per 256-bit modular exponentiation. -# 77.4 vs. 317.8 ms per 512-bit modular exponentiation. -# 249.0 vs. 1031.5 ms per 1024-bit modular exponentiation -# -CC=gcc -# for libzrtp support -CFLAGS= -Wno-unused-parameter -fno-strict-aliasing -fPIC -DZRTP_AUTOMAKE=1 -DHAVE_CONFIG_H $(DEFINE) -I../../include -I../../include/enterprise -I../../projects/gnu/config -I../../third_party/bgaes -srcdir=. - - -# Extra object files (e.g. lbnalpha.o for Alpha assembly routines) -AUXOBJS= -# Extra definitions (e.g. -DBNINCLUDE=lbnalpha.h) -DEFINE= - -SHELL = /bin/sh -.SUFFIXES: -.SUFFIXES: .c .h .o .s - -LD =$(CC) -LDFLAGS = -LIBS= -RANLIB=ranlib - -# If you have a machine-specific assembly file, add it to AUXOBJS. -OBJS = bn00.o lbn00.o bn.o lbnmem.o sieve.o prime.o \ - bnprint.o jacobi.o germain.o $(AUXOBJS) - -BNLIB = libbn.a - -# for libzrtp support -all: $(BNLIB) bntest32.c bntest64.c -# bntest germtest - -# for libzrtp support -install: all - test -d /usr/local/include/libzrtp || mkdir /usr/local/include/libzrtp - cp *.h /usr/local/include/libzrtp - cp 'libbn.a' '/usr/local/lib/libbn.a' - chmod 644 /usr/local/lib/libbn.a - chown 0:0 /usr/local/lib/libbn.a - $(RANLIB) '/usr/local/lib/libbn.a' - -# for libzrtp support -#check: bntest -# ./bntest -check: - -bntest: bntest00.o $(BNLIB) - $(LD) $(LDFLAGS) -o $@ bntest00.o $(BNLIB) $(LIBS) - -germtest: germtest.o $(BNLIB) - $(LD) $(LDFLAGS) -o $@ germtest.o $(BNLIB) $(LIBS) - -$(BNLIB): $(OBJS) - $(AR) r $@ $? - $(RANLIB) $@ - -# Here we get tricky... if we're compiling with GCC, then GCCMAGIC1 and -# GCCMAGIC2 are set so that we actually do a link, but with the -r flag -# (produce relocatable output) and with -lgcc *only*. This is so that -# the result can be linked cleanly with code compiled with another cc, -# which doesn't know about -lgcc. Presumably the lbnXX.o file, which -# has by far the most math in it, will have a call to every interesting -# support-library function. - -lbn00.o: $(srcdir)/lbn00.c $(HDRS) bnconfig.h - $(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ -Wl,-r -nostdlib lbn00.c -lgcc - -lbn16.o: $(srcdir)/lbn16.c $(HDRS) bnconfig.h - $(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ -Wl,-r -nostdlib lbn16.c -lgcc - -lbn32.o: $(srcdir)/lbn32.c $(HDRS) bnconfig.h - $(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ -Wl,-r -nostdlib lbn32.c -lgcc - -lbn64.o: $(srcdir)/lbn64.c $(HDRS) bnconfig.h - $(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ -Wl,-r -nostdlib lbn64.c -lgcc - -# The default .o rule. -.c.o: bnconfig.h - $(CC) $(CPPFLAGS) $(CFLAGS) -I. -I$(srcdir) -o $@ -c $< - -# Extra, non-obvious dependencies. Bnlib can be compiled in three -# word sizes, and the *00.c files #include the right .c files based -# on , which means that a single compilation will only use a -# subset of these files. Duplicated here in case someone regenerates -# dependencies with cc -M and they get lost. - -lbn00.o: lbn16.c lbn32.c lbn64.c lbn16.h lbn32.h lbn64.h -bn00.o: bn16.c bn32.c bn64.c bn16.h bn32.h bn64.h \ - bninit16.c bninit32.c bninit64.c -bntest00.o: bntest16.c bntest32.c bntest64.c lbn16.h lbn32.h lbn64.h - -# Actual build commented out to prevent confusion by people without autoconf. -# Do it manually for now. -configure: configure.in - @echo "configure script is out of date; run autoconf" -# autoconf - -clean: - $(RM) -f *.o *32.[ch] *64.[ch] - -distclean: clean - -rm -f Makefile - -BNSOURCES = lbn32.c lbn32.h bn32.c bn32.h bninit32.c bntest32.c \ - lbn64.c lbn64.h bn64.c bn64.h bninit64.c bntest64.c - -# An explicit target that can be made before distribution for -# machines that don't have sed. -bnsources: $(BNSOURCES) - -# The 16-bit versions of the code are the master versions; all else is -# generated from them. This fiddling about makes them unwriteable -# to discourage improper edits. - -# (You didn't know that suffixes for suffix rules didn't have to begin -# with a period, did you?) -.SUFFIXES: 16.c 16.h 32.c 32.h 64.c 64.h -16.c32.c: - @test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@ - sed -e s/32/64/g -e s/16/32/g $< > $@ - @chmod a-w $@ - -16.h32.h: - @test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@ - sed -e s/32/64/g -e s/16/32/g $< > $@ - @chmod a-w $@ - -16.c64.c: - @test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@ - sed -e s/32/128/g -e s/16/64/g $< > $@ - @chmod a-w $@ - -16.h64.h: - @test ! -f $@ -o -w $@ || chmod u+w $@ && test -w $@ || rm -f $@ - sed -e s/32/128/g -e s/16/64/g $< > $@ - @chmod a-w $@ - -### Dependencies -bn.o: bn.c bn.h -bn00.o: bn00.c bnsize00.h lbn.h bn16.c bn32.c bn64.c lbn16.c lbn32.h \ - lbn64.h lbnmem.h bn16.h bn32.h bn64.h bn.h kludge.h bninit16.c \ - bninit32.c bninit64.c -bn16.o: bn16.c lbn.h lbn16.h lbnmem.h bn16.h bn.h kludge.h -bn32.o: bn32.c lbn.h lbn32.h lbnmem.h bn32.h bn.h kludge.h -bn64.o: bn64.c lbn.h lbn64.h lbnmem.h bn64.h bn.h kludge.h -bn68000.o: bn68000.c lbn.h lbn68000.h bn16.h bn32.h -bn8086.o: bn8086.c lbn.h bn64.h lbn8086.h bn32.h -bninit16.o: bninit16.c bn.h bn16.h -bninit32.o: bninit32.c bn.h bn32.h -bninit64.o: bninit64.c bn.h bn64.h -bnprint.o: bnprint.c bn.h bnprint.h kludge.h -bntest00.o: bntest00.c bnsize00.h lbn.h bntest16.c bntest32.c \ - bntest64.c cputime.h lbn16.h lbn32.h lbn64.h kludge.h -bntest16.o: bntest16.c cputime.h lbn16.h lbn.h kludge.h -bntest32.o: bntest32.c cputime.h lbn32.h lbn.h kludge.h -bntest64.o: bntest64.c cputime.h lbn64.h lbn.h kludge.h -germain.o: germain.c bn.h germain.h jacobi.h lbnmem.h sieve.h kludge.h -germtest.o: germtest.c bn.h germain.h sieve.h cputime.h bnprint.h -jacobi.o: jacobi.c bn.h jacobi.h -lbn00.o: lbn00.c bnsize00.h lbn.h lbn16.c lbn16.h lbn32.c lbn32.h \ - lbn64.c lbn64.h lbnmem.h kludge.h -lbn16.o: lbn16.c lbn.h lbn16.h lbnmem.h kludge.h -lbn32.o: lbn32.c lbn.h lbn32.h lbnmem.h kludge.h -lbn64.o: lbn64.c lbn.h lbn64.h lbnmem.h kludge.h -lbn68000.o: lbn68000.c lbn.h lbn68000.h -lbn68020.o: lbn68020.c lbn.h lbn68020.h -lbnmem.o: lbnmem.c lbn.h lbnmem.h kludge.h -lbnppc.o: lbnppc.c lbnppc.h ppcasm.h -prime.o: prime.c bn.h lbnmem.h prime.h sieve.h kludge.h -sieve.o: sieve.c bn.h sieve.h kludge.h -sizetest.c: bnsize00.h - -distdir: From a08262384ae5f7598455228ceb3be705f8060d5e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 07:51:09 +0000 Subject: [PATCH 052/630] prevent accidental updates to libs/ldns/install-sh --- bootstrap.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/bootstrap.sh b/bootstrap.sh index ec13fdd669..6254f8d5f1 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -380,6 +380,23 @@ bootstrap_fs() { rm -rf autom4te*.cache } +bootstrap_libs_pre() { + case "$i" in + ldns) + # This file shouldn't even be in the tree as it's autogenerated + # during bootstrap, but some people report it breaks the build + # if it's not there. Let's prevent it from getting accidentally + # updated. + (cd $BASEDIR/libs/ldns && cp -a install-sh install-sh~) ;; + esac +} + +bootstrap_libs_post() { + case "$i" in + ldns) (cd $BASEDIR/libs/ldns && mv install-sh~ install-sh) ;; + esac +} + bootstrap_libs() { for i in ${SUBDIRS}; do case "$i" in @@ -389,11 +406,13 @@ bootstrap_libs() { continue ;; esac + bootstrap_libs_pre if ! ${BGJOB}; then libbootstrap ${i} else libbootstrap ${i} & fi + bootstrap_libs_post done } From 5ba478ef5efe4bc8965d6a2df22867f6190dea26 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 08:00:43 +0000 Subject: [PATCH 053/630] bootstrap.sh: fix some issues with a08262384a --- bootstrap.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 6254f8d5f1..83e15e962d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -381,7 +381,7 @@ bootstrap_fs() { } bootstrap_libs_pre() { - case "$i" in + case "$1" in ldns) # This file shouldn't even be in the tree as it's autogenerated # during bootstrap, but some people report it breaks the build @@ -392,7 +392,7 @@ bootstrap_libs_pre() { } bootstrap_libs_post() { - case "$i" in + case "$1" in ldns) (cd $BASEDIR/libs/ldns && mv install-sh~ install-sh) ;; esac } @@ -406,13 +406,12 @@ bootstrap_libs() { continue ;; esac - bootstrap_libs_pre + bootstrap_libs_pre ${i} if ! ${BGJOB}; then - libbootstrap ${i} + libbootstrap ${i} ; bootstrap_libs_post ${i} else - libbootstrap ${i} & + ((libbootstrap ${i} ; bootstrap_libs_post ${i}) &) fi - bootstrap_libs_post done } From 735d98710cb48f5ecdf5c01b05f212a47bc9fe9e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 08:18:55 +0000 Subject: [PATCH 054/630] libzrtp: gitignore bnlib/Makefile --- libs/libzrtp/third_party/bnlib/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/libzrtp/third_party/bnlib/.gitignore b/libs/libzrtp/third_party/bnlib/.gitignore index 73fb01bbeb..93a51e214c 100644 --- a/libs/libzrtp/third_party/bnlib/.gitignore +++ b/libs/libzrtp/third_party/bnlib/.gitignore @@ -1,2 +1,3 @@ # -*- mode:conf -*- +/Makefile /bnconfig.h From aad8daffa097431eb8055f253e909a3fbc28d006 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 18:02:53 +0000 Subject: [PATCH 055/630] libzrtp: make bootstrap work on CentOS 5 --- libs/libzrtp/projects/gnu/bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/libzrtp/projects/gnu/bootstrap.sh b/libs/libzrtp/projects/gnu/bootstrap.sh index a19fe3c0cf..abc867ebf8 100755 --- a/libs/libzrtp/projects/gnu/bootstrap.sh +++ b/libs/libzrtp/projects/gnu/bootstrap.sh @@ -2,6 +2,7 @@ reconf () { aclocal + mkdir -p config libtoolize --copy --automake autoconf autoheader From 153a3b3d969a1207b12a7a77ee7d3510f689e1a0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 4 Apr 2012 15:52:01 -0500 Subject: [PATCH 056/630] fix null warning --- src/mod/endpoints/mod_sofia/sofia.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index ebd083cae1..6a6e8294ed 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -8282,8 +8282,10 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ tech_pvt->caller_profile->callee_id_number = switch_core_strdup(tech_pvt->caller_profile->pool, orig_cp->caller_id_number); } } - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Setting NAT mode based on %s\n", is_nat); + + if (is_nat) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Setting NAT mode based on %s\n", is_nat); + } if (app && data && !strcasecmp(app, "conference")) { From d6eec9ea724641572e2f435da7d9f2ce5e166836 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 5 Apr 2012 10:27:47 -0500 Subject: [PATCH 057/630] FS-4075 --- conf/vanilla/autoload_configs/httapi.conf.xml | 2 +- src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt | 2 +- src/mod/applications/mod_httapi/mod_httapi.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/vanilla/autoload_configs/httapi.conf.xml b/conf/vanilla/autoload_configs/httapi.conf.xml index c2fe584a02..50bbe78f40 100644 --- a/conf/vanilla/autoload_configs/httapi.conf.xml +++ b/conf/vanilla/autoload_configs/httapi.conf.xml @@ -119,7 +119,7 @@ - + diff --git a/src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt b/src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt index 8690a62fc8..99970d88c9 100644 --- a/src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt +++ b/src/mod/applications/mod_httapi/docs/mod_httapi_doc.txt @@ -319,7 +319,7 @@ user-agent : mod_httapi/1.0 User Agent header value. : * = default - + *set-params : tag can be parsed for session params. set-vars : tag can be parsed to set channel vars. diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index fba7736363..2c93cf02bd 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -1498,7 +1498,7 @@ static switch_status_t httapi_sync(client_t *client) switch_curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, headers); - if (method != NULL && strcasecmp(method, "get") && strcasecmp(method, "post")) { + if (!zstr(method)) { switch_curl_easy_setopt(curl_handle, CURLOPT_CUSTOMREQUEST, method); } From 82520c687de07f58ee8865a0a98606a2223bace4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 5 Apr 2012 18:38:13 +0000 Subject: [PATCH 058/630] bootstrap: add a verbose option --- bootstrap.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 83e15e962d..17c52f386d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -5,6 +5,7 @@ echo "bootstrap: checking installation..." BGJOB=false +VERBOSE=false BASEDIR=`pwd`; LIBDIR=${BASEDIR}/libs; SUBDIRS="apr \ @@ -12,10 +13,11 @@ SUBDIRS="apr \ speex sqlite srtp openzap freetdm spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice silk libcodec2 \ fs"; -while getopts 'jhd:' o; do +while getopts 'jhd:v' o; do case "$o" in j) BGJOB=true;; d) SUBDIRS="$OPTARG";; + v) VERBOSE=true;; h) echo "Usage: $0 " echo " Options:" echo " -d 'library1 library2'" @@ -25,6 +27,11 @@ while getopts 'jhd:' o; do esac done +ex() { + test $VERBOSE && echo "bootstrap: $@" >&2 + $@ +} + setup_modules() { if [ ! -f modules.conf ]; then cp build/modules.conf.in modules.conf @@ -316,8 +323,8 @@ libbootstrap() { i=$1 if [ -d ${LIBDIR}/${i} ]; then echo "Entering directory ${LIBDIR}/${i}" - cd ${LIBDIR}/${i} - rm -f aclocal.m4 + ex cd ${LIBDIR}/${i} + ex rm -f aclocal.m4 CFFILE= if [ -f ${LIBDIR}/${i}/configure.in ]; then CFFILE="${LIBDIR}/${i}/configure.in" @@ -336,33 +343,33 @@ libbootstrap() { AXTEST=`grep "ACX_LIBTOOL_C_ONLY" ${CFFILE}` echo "Creating aclocal.m4" - ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} ${ACLOCAL_FLAGS} + ex ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} ${ACLOCAL_FLAGS} # only run if AC_PROG_LIBTOOL is in configure.in/configure.ac if [ ! -z "${LTTEST}" -o "${LTTEST2}" -o "${AXTEST}" ]; then echo "Running libtoolize..." if ${libtoolize} -n --install >/dev/null 2>&1; then - $libtoolize --force --copy --install + ex $libtoolize --force --copy --install else - $libtoolize --force --copy + ex $libtoolize --force --copy fi fi echo "Creating configure" - ${AUTOCONF:-autoconf} + ex ${AUTOCONF:-autoconf} # only run if AC_CONFIG_HEADERS is found in configure.in/configure.ac if [ ! -z "${AHTEST}" ]; then echo "Running autoheader..." - ${AUTOHEADER:-autoheader}; + ex ${AUTOHEADER:-autoheader}; fi # run if AM_INIT_AUTOMAKE / AC_PROG_INSTALL is in configure.in/configure.ac if [ ! -z "${AMTEST}" -o "${AMTEST2}" ]; then echo "Creating Makefile.in" - ${AUTOMAKE:-automake} --no-force --add-missing --copy; + ex ${AUTOMAKE:-automake} --no-force --add-missing --copy; fi - rm -rf autom4te*.cache + ex rm -rf autom4te*.cache fi else echo "Skipping directory ${LIBDIR}/${i}" From 3668d788dab98ac6933ec9a87e109d41577e9d1a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 5 Apr 2012 12:39:47 -0500 Subject: [PATCH 059/630] create indexes in independant stmts --- src/switch_core_sqldb.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index af947f7b11..fa4c9cf3a4 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -1628,10 +1628,7 @@ static char create_channels_sql[] = " call_uuid VARCHAR(256),\n" " sent_callee_name VARCHAR(1024),\n" " sent_callee_num VARCHAR(256)\n" - ");\n" - "create index chidx1 on channels (hostname);\n" - "create index uuindex on channels (uuid);\n" - "create index uuindex2 on channels (call_uuid);\n"; + ");\n"; static char create_calls_sql[] = "CREATE TABLE calls (\n" @@ -1641,11 +1638,7 @@ static char create_calls_sql[] = " caller_uuid VARCHAR(256),\n" " callee_uuid VARCHAR(256),\n" " hostname VARCHAR(256)\n" - ");\n" - "create index callsidx1 on calls (hostname);\n" - "create index eruuindex on calls (caller_uuid);\n" - "create index eeuuindex on calls (callee_uuid);\n" - "create index eeuuindex2 on calls (call_uuid);\n"; + ");\n"; static char create_interfaces_sql[] = "CREATE TABLE interfaces (\n" @@ -1688,8 +1681,8 @@ static char create_registrations_sql[] = " network_port VARCHAR(256),\n" " network_proto VARCHAR(256),\n" " hostname VARCHAR(256)\n" - ");\n" - "create index regindex1 on registrations (reg_user,realm,hostname);\n"; + ");\n"; + @@ -2051,6 +2044,15 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_ switch_cache_db_execute_sql(dbh, "create index nat_map_port_proto on nat (port,proto,hostname)", NULL); switch_cache_db_execute_sql(dbh, "create index channels1 on channels(hostname)", NULL); switch_cache_db_execute_sql(dbh, "create index calls1 on calls(hostname)", NULL); + switch_cache_db_execute_sql(dbh, "create index chidx1 on channels (hostname)", NULL); + switch_cache_db_execute_sql(dbh, "create index uuindex on channels (uuid)", NULL); + switch_cache_db_execute_sql(dbh, "create index uuindex2 on channels (call_uuid)", NULL); + switch_cache_db_execute_sql(dbh, "create index callsidx1 on calls (hostname)", NULL); + switch_cache_db_execute_sql(dbh, "create index eruuindex on calls (caller_uuid)", NULL); + switch_cache_db_execute_sql(dbh, "create index eeuuindex on calls (callee_uuid)", NULL); + switch_cache_db_execute_sql(dbh, "create index eeuuindex2 on calls (call_uuid)", NULL); + switch_cache_db_execute_sql(dbh, "create index regindex1 on registrations (reg_user,realm,hostname)", NULL); + skip: From 845330eefa7943e3453cc1af19e58e4cc307873a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 5 Apr 2012 13:15:45 -0500 Subject: [PATCH 060/630] FS-3399 --resolve --- src/switch_ivr_play_say.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index b4178e9e85..a29f4c6f22 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -2181,6 +2181,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session } } + switch_channel_audio_sync(channel); + ilen = len; for (;;) { switch_event_t *event; @@ -2346,7 +2348,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session } } } - } done: @@ -2377,8 +2378,12 @@ SWITCH_DECLARE(void) switch_ivr_clear_speech_cache(switch_core_session_t *sessio if (cache_obj->timer.interval) { switch_core_timer_destroy(&cache_obj->timer); } - switch_core_speech_close(&cache_obj->sh, &flags); - switch_core_codec_destroy(&cache_obj->codec); + if (&cache_obj->sh && cache_obj->sh.speech_interface) { + switch_core_speech_close(&cache_obj->sh, &flags); + } + if (&cache_obj->codec) { + switch_core_codec_destroy(&cache_obj->codec); + } switch_channel_set_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME, NULL); } } @@ -2412,7 +2417,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text(switch_core_session_t *ses timer = <imer; if ((var = switch_channel_get_variable(channel, SWITCH_CACHE_SPEECH_HANDLES_VARIABLE)) && switch_true(var)) { - if ((cache_obj = switch_channel_get_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME))) { + if ((cache_obj = (cached_speech_handle_t *) switch_channel_get_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME))) { need_create = 0; if (!strcasecmp(cache_obj->tts_name, tts_name)) { need_alloc = 0; @@ -2422,7 +2427,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text(switch_core_session_t *ses } if (!cache_obj) { - cache_obj = switch_core_session_alloc(session, sizeof(*cache_obj)); + cache_obj = (cached_speech_handle_t *) switch_core_session_alloc(session, sizeof(*cache_obj)); } if (need_alloc) { switch_copy_string(cache_obj->tts_name, tts_name, sizeof(cache_obj->tts_name)); From c41a16d4da55b66e86344c1700a450d74e7836ba Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 5 Apr 2012 14:28:01 -0500 Subject: [PATCH 061/630] shutdown socket before closing to avoid blocking --- libs/esl/src/esl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 02ab7ef271..719912b1e8 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -51,7 +51,7 @@ #include #ifndef WIN32 -#define closesocket(x) close(x) +#define closesocket(x) shutdown(x, 2); close(x) #include #include #else From d0b65a9f58d4ce14a0f3ff211b56795f8c766fc3 Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Fri, 6 Apr 2012 14:38:30 +0000 Subject: [PATCH 062/630] Add test driver for mod_posix_timer --- src/mod/timers/mod_posix_timer/test/Makefile | 6 + src/mod/timers/mod_posix_timer/test/README | 2 + src/mod/timers/mod_posix_timer/test/main.c | 44 +++++++ src/mod/timers/mod_posix_timer/test/switch.c | 69 +++++++++++ src/mod/timers/mod_posix_timer/test/switch.h | 122 +++++++++++++++++++ 5 files changed, 243 insertions(+) create mode 100644 src/mod/timers/mod_posix_timer/test/Makefile create mode 100644 src/mod/timers/mod_posix_timer/test/README create mode 100644 src/mod/timers/mod_posix_timer/test/main.c create mode 100644 src/mod/timers/mod_posix_timer/test/switch.c create mode 100644 src/mod/timers/mod_posix_timer/test/switch.h diff --git a/src/mod/timers/mod_posix_timer/test/Makefile b/src/mod/timers/mod_posix_timer/test/Makefile new file mode 100644 index 0000000000..856345298b --- /dev/null +++ b/src/mod/timers/mod_posix_timer/test/Makefile @@ -0,0 +1,6 @@ +all: + gcc ../mod_posix_timer.c main.c switch.c -I. -o timer_test -lpthread -lrt -g -DLOG_LEVEL=-1 + +clean: + -rm timer_test + diff --git a/src/mod/timers/mod_posix_timer/test/README b/src/mod/timers/mod_posix_timer/test/README new file mode 100644 index 0000000000..f47c511272 --- /dev/null +++ b/src/mod/timers/mod_posix_timer/test/README @@ -0,0 +1,2 @@ +Stress test for mod_posix_timer. Runs without FreeSWITCH. + diff --git a/src/mod/timers/mod_posix_timer/test/main.c b/src/mod/timers/mod_posix_timer/test/main.c new file mode 100644 index 0000000000..1df054566d --- /dev/null +++ b/src/mod/timers/mod_posix_timer/test/main.c @@ -0,0 +1,44 @@ + +#include +#include + +extern SWITCH_MODULE_LOAD_FUNCTION(mod_posix_timer_load); +extern SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_posix_timer_shutdown); + +switch_loadable_module_interface_t *mod = NULL; +switch_memory_pool_t pool = { 0 }; + +int main (int argc, char **argv) +{ + int i; + switch_timer_interface_t *timer_if; + switch_timer_t *timer[1000]; + + mod_posix_timer_load(&mod, &pool); + timer_if = mod->timer; + + + // TODO create multi-threaded test + + // create 10 ms timers + for (i = 0; i < 1000; i++) { + timer[i] = malloc(sizeof(switch_timer_t)); + memset(timer[i], 0, sizeof(switch_timer_t)); + timer[i]->interval = 1; + timer[i]->samples = 8; + timer_if->timer_init(timer[i]); + } + + for (i = 0; i < 50000; i++) { + timer_if->timer_next(timer[0]); + } + + // destroy timers + for (i = 0; i < 1000; i++) { + timer_if->timer_destroy(timer[i]); + free(timer[i]); + } + + mod_posix_timer_shutdown(); + return 0; +} diff --git a/src/mod/timers/mod_posix_timer/test/switch.c b/src/mod/timers/mod_posix_timer/test/switch.c new file mode 100644 index 0000000000..7ac7a3a97c --- /dev/null +++ b/src/mod/timers/mod_posix_timer/test/switch.c @@ -0,0 +1,69 @@ +#include +#include +#include +#include + + +switch_loadable_module_interface_t * switch_loadable_module_create_module_interface(switch_memory_pool_t *pool, const char *name) +{ + return malloc(sizeof(switch_loadable_module_interface_t)); +} + +void * switch_loadable_module_create_interface(switch_loadable_module_interface_t *mod, int iname) +{ + mod->timer = malloc(sizeof(switch_timer_interface_t)); + return mod->timer; +} + +switch_status_t switch_mutex_lock(switch_mutex_t *mutex) +{ + return pthread_mutex_lock(mutex); +} + +switch_status_t switch_mutex_unlock(switch_mutex_t *mutex) +{ + return pthread_mutex_unlock(mutex); +} + +switch_status_t switch_mutex_init(switch_mutex_t **mutex, int flags, switch_memory_pool_t *pool) +{ + pthread_mutexattr_t atts = { 0 }; + pthread_mutexattr_init(&atts); + if (flags == SWITCH_MUTEX_NESTED) { + pthread_mutexattr_settype(&atts, PTHREAD_MUTEX_RECURSIVE_NP); + } + *mutex = malloc(sizeof(switch_mutex_t)); + return pthread_mutex_init(*mutex, &atts); +} + +switch_status_t switch_thread_cond_create(switch_thread_cond_t **cond, switch_memory_pool_t *pool) +{ + *cond = malloc(sizeof(switch_thread_cond_t)); + return pthread_cond_init(*cond, NULL); +} + +switch_status_t switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, int wait) +{ + struct timespec dur = { 0, 0 }; + clock_gettime(CLOCK_REALTIME, &dur); + dur.tv_sec = wait / 1000000000; + dur.tv_nsec = wait % 1000000000; + return pthread_cond_timedwait(cond, mutex, &dur); +} + +switch_status_t switch_thread_cond_broadcast(switch_thread_cond_t *cond) +{ + return pthread_cond_broadcast(cond); +} + +void switch_log_printf(int dummy, int level, char *format, ...) +{ + va_list vl; + va_start(vl, format); + if (level > LOG_LEVEL) { + vprintf(format, vl); + } + va_end(vl); +} + + diff --git a/src/mod/timers/mod_posix_timer/test/switch.h b/src/mod/timers/mod_posix_timer/test/switch.h new file mode 100644 index 0000000000..25391943fb --- /dev/null +++ b/src/mod/timers/mod_posix_timer/test/switch.h @@ -0,0 +1,122 @@ +#ifndef SWITCH_H +#define SWITCH_H + +#include +#include +#include +#include + +#define SWITCH_STATUS_SUCCESS 0 +#define SWITCH_STATUS_GENERR 1 +#define SWITCH_STATUS_FALSE 2 + +#define SWITCH_MUTEX_NESTED 1 + +#define SWITCH_CHANNEL_LOG 0 + +#define SWITCH_LOG_INFO 0 + +typedef int switch_status_t; +typedef size_t switch_size_t; +typedef pthread_mutex_t switch_mutex_t; +typedef pthread_cond_t switch_thread_cond_t; +typedef int switch_memory_pool_t; +typedef int switch_bool_t; + +#define SWITCH_TIMER_INTERFACE 0 + +typedef struct switch_loadable_module_interface switch_loadable_module_interface_t; +typedef struct switch_timer_interface switch_timer_interface_t; + +typedef int switch_module_flag_t; +#define SWITCH_API_VERSION 0 +#define SWITCH_MOD_DECLARE_DATA +#define SMODF_NONE 0 +#define SWITCH_MODULE_LOAD_ARGS (switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) +#define SWITCH_MODULE_RUNTIME_ARGS (void) +#define SWITCH_MODULE_SHUTDOWN_ARGS (void) +typedef switch_status_t (*switch_module_load_t) SWITCH_MODULE_LOAD_ARGS; +typedef switch_status_t (*switch_module_runtime_t) SWITCH_MODULE_RUNTIME_ARGS; +typedef switch_status_t (*switch_module_shutdown_t) SWITCH_MODULE_SHUTDOWN_ARGS; +#define SWITCH_MODULE_LOAD_FUNCTION(name) switch_status_t name SWITCH_MODULE_LOAD_ARGS +#define SWITCH_MODULE_RUNTIME_FUNCTION(name) switch_status_t name SWITCH_MODULE_RUNTIME_ARGS +#define SWITCH_MODULE_SHUTDOWN_FUNCTION(name) switch_status_t name SWITCH_MODULE_SHUTDOWN_ARGS +typedef struct switch_loadable_module_function_table { + int switch_api_version; + switch_module_load_t load; + switch_module_shutdown_t shutdown; + switch_module_runtime_t runtime; + switch_module_flag_t flags; +} switch_loadable_module_function_table_t; + +#define SWITCH_MODULE_DEFINITION_EX(name, load, shutdown, runtime, flags) \ +static const char modname[] = #name ; \ +SWITCH_MOD_DECLARE_DATA switch_loadable_module_function_table_t name##_module_interface = { \ + SWITCH_API_VERSION, \ + load, \ + shutdown, \ + runtime, \ + flags \ +} + +#define SWITCH_MODULE_DEFINITION(name, load, shutdown, runtime) \ + SWITCH_MODULE_DEFINITION_EX(name, load, shutdown, runtime, SMODF_NONE) + + + +switch_loadable_module_interface_t * switch_loadable_module_create_module_interface(switch_memory_pool_t *pool, const char *name); + +typedef struct { + int id; + int interval; + int tick; + int samplecount; + int samples; + int diff; + void *private_info; +} switch_timer_t; + + +/*! \brief A table of functions that a timer module implements */ +struct switch_timer_interface { + /*! the name of the interface */ + const char *interface_name; + /*! function to allocate the timer */ + switch_status_t (*timer_init) (switch_timer_t *); + /*! function to wait for one cycle to pass */ + switch_status_t (*timer_next) (switch_timer_t *); + /*! function to step the timer one step */ + switch_status_t (*timer_step) (switch_timer_t *); + /*! function to reset the timer */ + switch_status_t (*timer_sync) (switch_timer_t *); + /*! function to check if the current step has expired */ + switch_status_t (*timer_check) (switch_timer_t *, switch_bool_t); + /*! function to deallocate the timer */ + switch_status_t (*timer_destroy) (switch_timer_t *); + int refs; + switch_mutex_t *reflock; + switch_loadable_module_interface_t *parent; + struct switch_timer_interface *next; +}; + +struct switch_loadable_module_interface { + switch_timer_interface_t *timer; +}; + +void * switch_loadable_module_create_interface(switch_loadable_module_interface_t *mod, int iname); + +switch_status_t switch_mutex_lock(switch_mutex_t *mutex); + +switch_status_t switch_mutex_unlock(switch_mutex_t *mutex); + +switch_status_t switch_mutex_init(switch_mutex_t **mutex, int flags, switch_memory_pool_t *pool); + +switch_status_t switch_thread_cond_create(switch_thread_cond_t **cond, switch_memory_pool_t *pool); + +switch_status_t switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, int wait); + +switch_status_t switch_thread_cond_broadcast(switch_thread_cond_t *cond); + +void switch_log_printf(int dummy, int level, char *format, ...); + +#endif From 35d8aa44f8a0520d99e3d9f69dbb26afb6848dc4 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 18:59:51 +0200 Subject: [PATCH 063/630] gsmopen: windows again, back to linux --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 11 ++-- .../mod_gsmopen/gsmopen_protocol.cpp | 19 ++++++- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 51 ++++++++++++++++--- 3 files changed, 67 insertions(+), 14 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index f13d27775e..88dc41e51a 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -505,6 +505,9 @@ struct private_object { ctb::SerialPort* serialPort_serial_control; + char buffer2[320]; + int buffer2_full; + }; typedef struct private_object private_t; @@ -554,11 +557,11 @@ int gsmopen_socket_create_and_bind(private_t * tech_pvt, int *which_port); void *gsmopen_do_controldev_thread(void *data); -#ifdef WIN32 +//#ifdef WIN32 int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed); -#else -int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed); -#endif //WIN32 +//#else +//int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed); +//#endif //WIN32 int gsmopen_serial_monitor(private_t * tech_pvt); int gsmopen_serial_sync(private_t * tech_pvt); int gsmopen_serial_sync_AT(private_t * tech_pvt); diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 0ae0eb255f..3944fffda1 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -60,7 +60,8 @@ int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) tech_pvt->serialPort_serial_control = new ctb::SerialPort(); - if( tech_pvt->serialPort_serial_control->Open( "COM9", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + //if( tech_pvt->serialPort_serial_control->Open( "COM9", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + if( tech_pvt->serialPort_serial_control->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); } else { ERRORA("port NOT open\n", GSMOPEN_P_LOG); @@ -214,6 +215,16 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) /* go until first empty preinit string, or last preinit string */ while (1) { + char trash[4096]; + res=tech_pvt->serialPort_serial_control->Read(trash, 4096); + if(res) + ERRORA("READ %d on serialport init\n", GSMOPEN_P_LOG, res); + + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); + if (res) { + ERRORA("no response to AT^CURC=0\n", GSMOPEN_P_LOG); + return -1; + } if (strlen(tech_pvt->at_preinit_1)) { res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_1, tech_pvt->at_preinit_1_expect); if (res) { @@ -274,6 +285,9 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) ERRORA("no response to AT\n", GSMOPEN_P_LOG); return -1; } + + + /* for motorola, bring it back to "normal" mode if it happens to be in another mode */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+mode=0"); if (res) { @@ -3578,7 +3592,8 @@ int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio { tech_pvt->serialPort_serial_audio = new ctb::SerialPort(); - if( tech_pvt->serialPort_serial_audio->Open( "COM8", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + //if( tech_pvt->serialPort_serial_audio->Open( "COM8", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + if( tech_pvt->serialPort_serial_audio->Open( "/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); } else { ERRORA("port NOT open\n", GSMOPEN_P_LOG); diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 54996cad63..d66759a86d 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -810,7 +810,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch int samples; int samples2; char digit_str[256]; - short buffer2[640]; + char buffer2[640]; channel = switch_core_session_get_channel(session); @@ -842,9 +842,23 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) #endif// GSMOPEN_ALSA - if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) - { +// if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) +if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) + { + tech_pvt->buffer2_full = 0; + + + + if(samples >= 640){ + DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + memcpy(tech_pvt->buffer2, buffer2+320, 320); + tech_pvt->buffer2_full = 1; + } + samples=320; + + + memcpy(tech_pvt->read_frame.data, buffer2, 320); tech_pvt->read_frame.datalen = samples; tech_pvt->read_frame.samples = samples/2; @@ -852,14 +866,35 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; - if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - - } + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} //status = SWITCH_STATUS_SUCCESS; switch_set_flag(tech_pvt, TFLAG_VOICE); - } + }else{ + DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); + if(tech_pvt->buffer2_full){ + memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); + tech_pvt->buffer2_full = 0; + samples=320; + DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); + + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples/2; + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + + *frame = &tech_pvt->read_frame; + + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } + + +} //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); if (samples != 320) { DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); From 907254061d561702c395cd23706ae0205de29abc Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 19:49:13 +0200 Subject: [PATCH 064/630] gsmopen: indented --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 185 ++-- .../mod_gsmopen/gsmopen_protocol.cpp | 323 +++---- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 795 ++++++++---------- 3 files changed, 590 insertions(+), 713 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 88dc41e51a..47dd3d21da 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -52,10 +52,6 @@ #define ALARM_NETWORK_NO_SIGNAL 4 #define ALARM_NETWORK_LOW_SIGNAL 5 - - - - #undef GIOVA48 #ifndef GIOVA48 @@ -64,7 +60,6 @@ #define SAMPLES_PER_FRAME 960 #endif // GIOVA48 - #ifndef GIOVA48 #define GSMOPEN_FRAME_SIZE 160 #else //GIOVA48 @@ -90,7 +85,6 @@ #include #endif /* GSMOPEN_ALSA */ - //#include "celliax_spandsp.h" #ifndef WIN32 #include @@ -342,7 +336,6 @@ struct private_object { unsigned long ib_failed_calls; unsigned long ob_failed_calls; - char controldevice_name[50]; /*!< \brief name of the serial device controlling the interface, possibly none */ int controldevprotocol; /*!< \brief which protocol is used for serial control of this interface */ char controldevprotocolname[50]; /*!< \brief name of the serial device controlling protocol, one of "at" "fbus2" "no_serial" "alsa_voicemodem" */ @@ -352,7 +345,7 @@ struct private_object { int controldevice_speed; #else speed_t controldevice_speed; -#endif// WIN32 +#endif // WIN32 int controldev_dead; char at_dial_pre_number[64]; @@ -429,7 +422,6 @@ struct private_object { time_t gsmopen_serial_synced_timestamp; struct s_result line_array; - int unread_sms_msg_id; int reading_sms_msg; char sms_message[4800]; @@ -443,7 +435,6 @@ struct private_object { int sms_pdu_not_supported; //char sms_receiving_program[256]; - struct timeval call_incoming_time; switch_mutex_t *controldev_lock; @@ -483,27 +474,27 @@ struct private_object { int no_sound; - dtmf_rx_state_t dtmf_state; - int active; - int home_network_registered; - int roaming_registered; - int not_registered; - int got_signal; - char imei[128]; - int requesting_imei; - char imsi[128]; - int requesting_imsi; - int network_creg_not_supported; - char creg[128]; + dtmf_rx_state_t dtmf_state; + int active; + int home_network_registered; + int roaming_registered; + int not_registered; + int got_signal; + char imei[128]; + int requesting_imei; + char imsi[128]; + int requesting_imsi; + int network_creg_not_supported; + char creg[128]; char controldevice_audio_name[50]; - int controldev_audio_fd; + int controldev_audio_fd; int controldevice_audio_speed; int controldev_audio_dead; switch_mutex_t *controldev_audio_lock; - ctb::SerialPort* serialPort_serial_audio; + ctb::SerialPort * serialPort_serial_audio; - ctb::SerialPort* serialPort_serial_control; + ctb::SerialPort * serialPort_serial_control; char buffer2[320]; int buffer2_full; @@ -512,30 +503,30 @@ struct private_object { typedef struct private_object private_t; -void *SWITCH_THREAD_FUNC gsmopen_api_thread_func(switch_thread_t * thread, void *obj); -int gsmopen_audio_read(private_t * tech_pvt); -int gsmopen_audio_init(private_t * tech_pvt); -int gsmopen_signaling_read(private_t * tech_pvt); +void *SWITCH_THREAD_FUNC gsmopen_api_thread_func(switch_thread_t *thread, void *obj); +int gsmopen_audio_read(private_t *tech_pvt); +int gsmopen_audio_init(private_t *tech_pvt); +int gsmopen_signaling_read(private_t *tech_pvt); -int gsmopen_call(private_t * tech_pvt, char *idest, int timeout); -int gsmopen_senddigit(private_t * tech_pvt, char digit); +int gsmopen_call(private_t *tech_pvt, char *idest, int timeout); +int gsmopen_senddigit(private_t *tech_pvt, char digit); void *gsmopen_do_tcp_srv_thread_func(void *obj); -void *SWITCH_THREAD_FUNC gsmopen_do_tcp_srv_thread(switch_thread_t * thread, void *obj); +void *SWITCH_THREAD_FUNC gsmopen_do_tcp_srv_thread(switch_thread_t *thread, void *obj); void *gsmopen_do_tcp_cli_thread_func(void *obj); -void *SWITCH_THREAD_FUNC gsmopen_do_tcp_cli_thread(switch_thread_t * thread, void *obj); +void *SWITCH_THREAD_FUNC gsmopen_do_tcp_cli_thread(switch_thread_t *thread, void *obj); void *gsmopen_do_gsmopenapi_thread_func(void *obj); -void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t * thread, void *obj); -int dtmf_received(private_t * tech_pvt, char *value); -int start_audio_threads(private_t * tech_pvt); -int new_inbound_channel(private_t * tech_pvt); -int outbound_channel_answered(private_t * tech_pvt); +void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t *thread, void *obj); +int dtmf_received(private_t *tech_pvt, char *value); +int start_audio_threads(private_t *tech_pvt); +int new_inbound_channel(private_t *tech_pvt); +int outbound_channel_answered(private_t *tech_pvt); //int gsmopen_signaling_write(private_t * tech_pvt, char *msg_to_gsmopen); #if defined(WIN32) && !defined(__CYGWIN__) -int gsmopen_pipe_read(switch_file_t * pipe, short *buf, int howmany); -int gsmopen_pipe_write(switch_file_t * pipe, short *buf, int howmany); +int gsmopen_pipe_read(switch_file_t *pipe, short *buf, int howmany); +int gsmopen_pipe_write(switch_file_t *pipe, short *buf, int howmany); /* Visual C do not have strsep ? */ char *strsep(char **stringp, const char *delim); #else @@ -543,30 +534,26 @@ int gsmopen_pipe_read(int pipe, short *buf, int howmany); int gsmopen_pipe_write(int pipe, short *buf, int howmany); #endif /* WIN32 */ int gsmopen_close_socket(unsigned int fd); -private_t *find_available_gsmopen_interface_rr(private_t * tech_pvt_calling); -int remote_party_is_ringing(private_t * tech_pvt); -int remote_party_is_early_media(private_t * tech_pvt); +private_t *find_available_gsmopen_interface_rr(private_t *tech_pvt_calling); +int remote_party_is_ringing(private_t *tech_pvt); +int remote_party_is_early_media(private_t *tech_pvt); //int gsmopen_answer(private_t * tech_pvt, char *id, char *value); #if 0 -int gsmopen_transfer(private_t * tech_pvt, char *id, char *value); +int gsmopen_transfer(private_t *tech_pvt, char *id, char *value); #endif //0 -int gsmopen_socket_create_and_bind(private_t * tech_pvt, int *which_port); - - - - +int gsmopen_socket_create_and_bind(private_t *tech_pvt, int *which_port); void *gsmopen_do_controldev_thread(void *data); //#ifdef WIN32 -int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed); +int gsmopen_serial_init(private_t *tech_pvt, int controldevice_speed); //#else //int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed); //#endif //WIN32 -int gsmopen_serial_monitor(private_t * tech_pvt); -int gsmopen_serial_sync(private_t * tech_pvt); -int gsmopen_serial_sync_AT(private_t * tech_pvt); -int gsmopen_serial_config(private_t * tech_pvt); -int gsmopen_serial_config_AT(private_t * tech_pvt); +int gsmopen_serial_monitor(private_t *tech_pvt); +int gsmopen_serial_sync(private_t *tech_pvt); +int gsmopen_serial_sync_AT(private_t *tech_pvt); +int gsmopen_serial_config(private_t *tech_pvt); +int gsmopen_serial_config_AT(private_t *tech_pvt); #define gsmopen_serial_write_AT_expect(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 0) #define gsmopen_serial_write_AT_expect_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 0) @@ -574,28 +561,28 @@ int gsmopen_serial_config_AT(private_t * tech_pvt); // 20.5 sec timeout, used for querying the SIM and sending SMSs #define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 20) #define gsmopen_serial_write_AT_expect_longtime_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 20) -int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data); -int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data); -int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data); -int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *data); -int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data); -int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds); -int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, int expect_crlf, int seconds); -int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf); -int gsmopen_serial_read(private_t * tech_pvt); +int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data); +int gsmopen_serial_write_AT_nocr(private_t *tech_pvt, const char *data); +int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data); +int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *data); +int gsmopen_serial_write_AT_noack(private_t *tech_pvt, const char *data); +int gsmopen_serial_write_AT_expect1(private_t *tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds); +int gsmopen_serial_AT_expect(private_t *tech_pvt, const char *expected_string, int expect_crlf, int seconds); +int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf); +int gsmopen_serial_read(private_t *tech_pvt); #ifdef NOTDEF -int gsmopen_serial_getstatus(private_t * tech_pvt); -int gsmopen_serial_hangup(private_t * tech_pvt); -int gsmopen_serial_answer(private_t * tech_pvt); -int gsmopen_serial_answer_AT(private_t * tech_pvt); -int gsmopen_serial_hangup_AT(private_t * tech_pvt); -int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr); -int gsmopen_serial_getstatus_AT(private_t * tech_pvt); +int gsmopen_serial_getstatus(private_t *tech_pvt); +int gsmopen_serial_hangup(private_t *tech_pvt); +int gsmopen_serial_answer(private_t *tech_pvt); +int gsmopen_serial_answer_AT(private_t *tech_pvt); +int gsmopen_serial_hangup_AT(private_t *tech_pvt); +int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr); +int gsmopen_serial_getstatus_AT(private_t *tech_pvt); #endif // NOTDEF #define RESULT_FAILURE 0 #define RESULT_SUCCESS 1 -int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft); -int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft); +int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft); +int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft); //#define PUSHA_UNLOCKA(x) pthread_cleanup_push(gsmopen_unlocka_log, (void *) x); //#define POPPA_UNLOCKA(x) pthread_cleanup_pop(0); @@ -610,42 +597,38 @@ int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t out #define ast_setstate(x, y) ERRORA("ast_setstate: %p, %d\n", GSMOPEN_P_LOG, (void *)x, y); -int gsmopen_serial_read(private_t * tech_pvt); -int gsmopen_answer(private_t * tech_pvt); -int gsmopen_serial_answer(private_t * tech_pvt); -int gsmopen_serial_answer_AT(private_t * tech_pvt); -int gsmopen_serial_hangup(private_t * tech_pvt); -int gsmopen_serial_hangup_AT(private_t * tech_pvt); -int gsmopen_hangup(private_t * tech_pvt); -int gsmopen_serial_call(private_t * tech_pvt, char *dstr); -int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr); -int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text); +int gsmopen_serial_read(private_t *tech_pvt); +int gsmopen_answer(private_t *tech_pvt); +int gsmopen_serial_answer(private_t *tech_pvt); +int gsmopen_serial_answer_AT(private_t *tech_pvt); +int gsmopen_serial_hangup(private_t *tech_pvt); +int gsmopen_serial_hangup_AT(private_t *tech_pvt); +int gsmopen_hangup(private_t *tech_pvt); +int gsmopen_serial_call(private_t *tech_pvt, char *dstr); +int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr); +int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text); #ifdef GSMOPEN_ALSA -int alsa_init(private_t * tech_pvt); -int alsa_shutdown(private_t * tech_pvt); -snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream); -int alsa_write(private_t * tech_pvt, short *data, int datalen); -int alsa_read(private_t * tech_pvt, short *data, int datalen); +int alsa_init(private_t *tech_pvt); +int alsa_shutdown(private_t *tech_pvt); +snd_pcm_t *alsa_open_dev(private_t *tech_pvt, snd_pcm_stream_t stream); +int alsa_write(private_t *tech_pvt, short *data, int datalen); +int alsa_read(private_t *tech_pvt, short *data, int datalen); #endif /* GSMOPEN_ALSA */ - void gsmopen_store_boost(char *s, double *boost); int gsmopen_sound_boost(void *data, int samples_num, double boost); -int sms_incoming(private_t * tech_pvt); -int gsmopen_ring(private_t * tech_pvt); - -int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft); -int gsmopen_serial_getstatus_AT(private_t * tech_pvt); +int sms_incoming(private_t *tech_pvt); +int gsmopen_ring(private_t *tech_pvt); +int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft); +int gsmopen_serial_getstatus_AT(private_t *tech_pvt); int dump_event(private_t *tech_pvt); -int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message); -int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message); - - -int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio_speed); -int serial_audio_init(private_t * tech_pvt); -int serial_audio_shutdown(private_t * tech_pvt); +int alarm_event(private_t *tech_pvt, int alarm_code, const char *alarm_message); +int dump_event_full(private_t *tech_pvt, int is_alarm, int alarm_code, const char *alarm_message); +int gsmopen_serial_init_audio_port(private_t *tech_pvt, int controldevice_audio_speed); +int serial_audio_init(private_t *tech_pvt); +int serial_audio_shutdown(private_t *tech_pvt); diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 3944fffda1..08ef778dfc 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,8 +1,8 @@ #include "gsmopen.h" -extern int running; //FIXME -int gsmopen_dir_entry_extension = 1; //FIXME -int option_debug = 100; //FIXME +extern int running; //FIXME +int gsmopen_dir_entry_extension = 1; //FIXME +int option_debug = 100; //FIXME #define gsmopen_sleep switch_sleep #define gsmopen_strncpy switch_copy_string @@ -55,13 +55,13 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz) /***************/ #endif /* WIN32 */ -int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) +int gsmopen_serial_init(private_t *tech_pvt, int controldevice_speed) { tech_pvt->serialPort_serial_control = new ctb::SerialPort(); //if( tech_pvt->serialPort_serial_control->Open( "COM9", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { - if( tech_pvt->serialPort_serial_control->Open( "/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + if (tech_pvt->serialPort_serial_control->Open("/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) { ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); } else { ERRORA("port NOT open\n", GSMOPEN_P_LOG); @@ -148,11 +148,10 @@ int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) return -1; } return (fd); -#endif// NOTDEF +#endif // NOTDEF } - -int gsmopen_serial_read(private_t * tech_pvt) +int gsmopen_serial_read(private_t *tech_pvt) { if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_read_AT(tech_pvt, 0, 100000, 0, NULL, 1); // a 10th of a second timeout @@ -167,8 +166,7 @@ int gsmopen_serial_read(private_t * tech_pvt) return -1; } - -int gsmopen_serial_sync(private_t * tech_pvt) +int gsmopen_serial_sync(private_t *tech_pvt) { if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_sync_AT(tech_pvt); @@ -184,7 +182,7 @@ int gsmopen_serial_sync(private_t * tech_pvt) return -1; } -int gsmopen_serial_config(private_t * tech_pvt) +int gsmopen_serial_config(private_t *tech_pvt) { if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_config_AT(tech_pvt); @@ -200,7 +198,7 @@ int gsmopen_serial_config(private_t * tech_pvt) return -1; } -int gsmopen_serial_config_AT(private_t * tech_pvt) +int gsmopen_serial_config_AT(private_t *tech_pvt) { int res; char at_command[5]; @@ -216,15 +214,15 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) while (1) { char trash[4096]; - res=tech_pvt->serialPort_serial_control->Read(trash, 4096); - if(res) + res = tech_pvt->serialPort_serial_control->Read(trash, 4096); + if (res) ERRORA("READ %d on serialport init\n", GSMOPEN_P_LOG, res); - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); - if (res) { - ERRORA("no response to AT^CURC=0\n", GSMOPEN_P_LOG); - return -1; - } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); + if (res) { + ERRORA("no response to AT^CURC=0\n", GSMOPEN_P_LOG); + return -1; + } if (strlen(tech_pvt->at_preinit_1)) { res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_1, tech_pvt->at_preinit_1_expect); if (res) { @@ -286,8 +284,6 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) return -1; } - - /* for motorola, bring it back to "normal" mode if it happens to be in another mode */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+mode=0"); if (res) { @@ -342,7 +338,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) DEBUGA_GSMOPEN("AT+CREG=1 failed\n", GSMOPEN_P_LOG); tech_pvt->network_creg_not_supported = 1; } - if(!tech_pvt->network_creg_not_supported){ + if (!tech_pvt->network_creg_not_supported) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CREG?"); if (res) { DEBUGA_GSMOPEN("AT+CREG? failed\n", GSMOPEN_P_LOG); @@ -420,7 +416,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG); tech_pvt->no_ucs2 = 1; } -#ifdef NOTDEF //GSMLIB? +#ifdef NOTDEF //GSMLIB? if (tech_pvt->no_ucs2) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); if (res) { @@ -470,7 +466,7 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) } else { tech_pvt->at_has_ecam = 1; } -#endif// NOTDEF +#endif // NOTDEF /* disable unsolicited signaling of call list */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CLCC=0"); @@ -549,14 +545,14 @@ int gsmopen_serial_config_AT(private_t * tech_pvt) return 0; } - -int gsmopen_serial_sync_AT(private_t * tech_pvt) +int gsmopen_serial_sync_AT(private_t *tech_pvt) { - gsmopen_sleep(10000); /* 10msec */ + gsmopen_sleep(10000); /* 10msec */ time(&tech_pvt->gsmopen_serial_synced_timestamp); return 0; } -int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf) + +int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf) { int select_err = 1; int res; @@ -571,17 +567,16 @@ int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_u int la_counter = 0; int at_ack = -1; int la_read = 0; -int timeout1; + int timeout1; -timeout1 = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ); + timeout1 = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0); -if(timeout1 != 100) - ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout1); + if (timeout1 != 100) + ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout1); - if(!running || !tech_pvt->running){ + if (!running || !tech_pvt->running) { return -1; } - ////FD_ZERO(&read_fds); //FD_SET(tech_pvt->controldevfd, &read_fds); @@ -595,7 +590,10 @@ if(timeout1 != 100) LOKKA(tech_pvt->controldev_lock); //while ((!tech_pvt->controldev_dead) && ((select_err = select(tech_pvt->controldevfd + 1, &read_fds, NULL, NULL, &timeout)) > 0)) { - while ( (!tech_pvt->controldev_dead) && (read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ) ) > 0) ) { + while ((!tech_pvt->controldev_dead) + && (read_count = + tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), + (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)) > 0)) { char *token_ptr; timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it @@ -609,10 +607,10 @@ if(timeout1 != 100) tech_pvt->controldev_dead = 1; //cicopet close(tech_pvt->controldevfd); ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running=0; + tech_pvt->running = 0; alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active=0; - tech_pvt->name[0]='\0'; + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; UNLOCKA(tech_pvt->controldev_lock); if (tech_pvt->owner) { @@ -629,7 +627,6 @@ if(timeout1 != 100) } tmp_answer_ptr = tmp_answer_ptr + read_count; - la_counter = 0; memset(tmp_answer2, 0, sizeof(char) * AT_BUFSIZ); strcpy(tmp_answer2, tmp_answer); @@ -755,7 +752,6 @@ if(timeout1 != 100) memset(tech_pvt->callid_name, 0, sizeof(tech_pvt->callid_name)); memset(tech_pvt->callid_number, 0, sizeof(tech_pvt->callid_number)); - for (a = 7; a < strlen(tech_pvt->line_array.result[i]); a++) { if (tech_pvt->line_array.result[i][a] == ',') { commacount++; @@ -918,14 +914,14 @@ if(timeout1 != 100) ERRORA ("|%s| CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->got_signal=0; - alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna"); + tech_pvt->got_signal = 0; + alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna"); } else if (signal_quality < 15) { WARNINGA("|%s| CELLPHONE GETS SIGNAL LOW\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->got_signal=1; - alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "CELLPHONE GETS SIGNAL LOW"); + tech_pvt->got_signal = 1; + alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "CELLPHONE GETS SIGNAL LOW"); } else { - tech_pvt->got_signal=2; + tech_pvt->got_signal = 2; } } @@ -941,25 +937,26 @@ if(timeout1 != 100) DEBUGA_GSMOPEN("|%s| +CREG: Display: %d, Registration=%d\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], n, stat); if (err < 2) { WARNINGA("|%s| is not formatted as: |+CREG: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - } - if (stat==0) { + } + if (stat == 0) { ERRORA ("|%s| CELLPHONE is not registered to network, consider to move it or additional antenna\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->not_registered=1; - tech_pvt->home_network_registered=0; - tech_pvt->roaming_registered=0; - alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, "CELLPHONE is not registered to network, consider to move it or additional antenna"); - } else if (stat==1) { + tech_pvt->not_registered = 1; + tech_pvt->home_network_registered = 0; + tech_pvt->roaming_registered = 0; + alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, + "CELLPHONE is not registered to network, consider to move it or additional antenna"); + } else if (stat == 1) { DEBUGA_GSMOPEN("|%s| CELLPHONE is registered to the HOME network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->not_registered=0; - tech_pvt->home_network_registered=1; - tech_pvt->roaming_registered=0; - }else { + tech_pvt->not_registered = 0; + tech_pvt->home_network_registered = 1; + tech_pvt->roaming_registered = 0; + } else { ERRORA("|%s| CELLPHONE is registered to a ROAMING network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->not_registered=0; - tech_pvt->home_network_registered=0; - tech_pvt->roaming_registered=1; + tech_pvt->not_registered = 0; + tech_pvt->home_network_registered = 0; + tech_pvt->roaming_registered = 1; alarm_event(tech_pvt, ALARM_ROAMING_NETWORK_REGISTRATION, "CELLPHONE is registered to a ROAMING network"); } @@ -1048,16 +1045,6 @@ if(timeout1 != 100) ERRORA("Why NO CARRIER now?\n", GSMOPEN_P_LOG); } - - - - - - - - - - } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_incoming) == 0)) { @@ -1277,7 +1264,6 @@ if(timeout1 != 100) tech_pvt->reading_sms_msg++; } - if ((strcmp(tech_pvt->line_array.result[i], "+MCST: 17") == 0)) { /* motorola call processing unsolicited messages */ tech_pvt->phone_callflow = CALLFLOW_CALL_INFLUX; if (option_debug > 1) @@ -1510,51 +1496,51 @@ if(timeout1 != 100) /* at_indicator_* are unsolicited messages sent by the phone to signal us that some of its visual indicators on its screen has changed, based on CIND CMER ETSI docs */ if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_noservice_string) == 0)) { - ERRORA("|%s| at_indicator_noservice_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - alarm_event(tech_pvt, ALARM_NETWORK_NO_SERVICE, "at_indicator_noservice_string"); + ERRORA("|%s| at_indicator_noservice_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + alarm_event(tech_pvt, ALARM_NETWORK_NO_SERVICE, "at_indicator_noservice_string"); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nosignal_string) == 0)) { - ERRORA("|%s| at_indicator_nosignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "at_indicator_nosignal_string"); + ERRORA("|%s| at_indicator_nosignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "at_indicator_nosignal_string"); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_lowsignal_string) == 0)) { - WARNINGA("|%s| at_indicator_lowsignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "at_indicator_lowsignal_string"); + WARNINGA("|%s| at_indicator_lowsignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "at_indicator_lowsignal_string"); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_lowbattchg_string) == 0)) { - WARNINGA("|%s| at_indicator_lowbattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + WARNINGA("|%s| at_indicator_lowbattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nobattchg_string) == 0)) { - ERRORA("|%s| at_indicator_nobattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + ERRORA("|%s| at_indicator_nobattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callactive_string) == 0)) { - DEBUGA_GSMOPEN("|%s| at_indicator_callactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + DEBUGA_GSMOPEN("|%s| at_indicator_callactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nocallactive_string) == 0)) { - DEBUGA_GSMOPEN("|%s| at_indicator_nocallactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + DEBUGA_GSMOPEN("|%s| at_indicator_nocallactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nocallsetup_string) == 0)) { - DEBUGA_GSMOPEN("|%s| at_indicator_nocallsetup_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + DEBUGA_GSMOPEN("|%s| at_indicator_nocallsetup_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupincoming_string) == 0)) { - DEBUGA_GSMOPEN("|%s| at_indicator_callsetupincoming_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + DEBUGA_GSMOPEN("|%s| at_indicator_callsetupincoming_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupoutgoing_string) == 0)) { - DEBUGA_GSMOPEN("|%s| at_indicator_callsetupoutgoing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + DEBUGA_GSMOPEN("|%s| at_indicator_callsetupoutgoing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupremoteringing_string) == 0)) { - DEBUGA_GSMOPEN("|%s| at_indicator_callsetupremoteringing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + DEBUGA_GSMOPEN("|%s| at_indicator_callsetupremoteringing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } } @@ -1614,24 +1600,23 @@ if(timeout1 != 100) memset(content, '\0', sizeof(content)); - for (c = 0; c < strlen(tech_pvt->line_array.result[i]); c++) { if (tech_pvt->line_array.result[i][c] == ',' && tech_pvt->line_array.result[i][c - 1] != '\\' && inside_quote == 0) { if (inside_comma) { inside_comma = 0; DEBUGA_GSMOPEN("inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, - &tech_pvt->line_array.result[i][c]); + &tech_pvt->line_array.result[i][c]); } else { inside_comma = 1; DEBUGA_GSMOPEN("inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, - &tech_pvt->line_array.result[i][c]); + &tech_pvt->line_array.result[i][c]); } } if (tech_pvt->line_array.result[i][c] == '"' && tech_pvt->line_array.result[i][c - 1] != '\\') { if (inside_quote) { inside_quote = 0; DEBUGA_GSMOPEN("END_CONTENT inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, - &tech_pvt->line_array.result[i][c]); + &tech_pvt->line_array.result[i][c]); DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content); //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); @@ -1671,7 +1656,7 @@ if(timeout1 != 100) } else { inside_quote = 1; DEBUGA_GSMOPEN("START_CONTENT inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, - &tech_pvt->line_array.result[i][c]); + &tech_pvt->line_array.result[i][c]); } } if (inside_quote && tech_pvt->line_array.result[i][c] != '"') { @@ -1693,7 +1678,6 @@ if(timeout1 != 100) //int howmanyleft; - DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message); ucs2_to_utf8(tech_pvt, tech_pvt->sms_message, content3, sizeof(content3)); DEBUGA_GSMOPEN("content3=%s\n", GSMOPEN_P_LOG, content3); @@ -1749,13 +1733,13 @@ if(timeout1 != 100) tech_pvt->controldev_dead = 1; //cicopet close(tech_pvt->controldevfd); - tech_pvt->running=0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead"); - tech_pvt->active=0; - tech_pvt->name[0]='\0'; + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; if (tech_pvt->owner) gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - switch_sleep(1000000); + switch_sleep(1000000); return -1; } @@ -1819,13 +1803,13 @@ if(timeout1 != 100) } //cicopet int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data) -int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data) +int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data) { int howmany; int i; int res; int count; -char *Data=(char *)data; + char *Data = (char *) data; howmany = strlen(Data); @@ -1854,18 +1838,18 @@ char *Data=(char *)data; } if (option_debug > 1) DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &Data[i]); - gsmopen_sleep(1000); /* release the cpu */ + gsmopen_sleep(1000); /* release the cpu */ } //cicopet res = write(tech_pvt->controldevfd, "\r", 1); - res = tech_pvt->serialPort_serial_control->Write((char *)"\r", 1); + res = tech_pvt->serialPort_serial_control->Write((char *) "\r", 1); if (res != 1) { DEBUGA_GSMOPEN("Error sending (carriage return): %d (%s)\n", GSMOPEN_P_LOG, res, strerror(errno)); gsmopen_sleep(100000); for (count = 0; count < 10; count++) { //cicopet res = write(tech_pvt->controldevfd, "\r", 1); - res = tech_pvt->serialPort_serial_control->Write((char *)"\r", 1); + res = tech_pvt->serialPort_serial_control->Write((char *) "\r", 1); if (res == 1) { DEBUGA_GSMOPEN("Successfully RE-sent carriage return: %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); @@ -1882,18 +1866,18 @@ char *Data=(char *)data; } if (option_debug > 1) DEBUGA_GSMOPEN("sent (carriage return)\n", GSMOPEN_P_LOG); - gsmopen_sleep(1000); /* release the cpu */ + gsmopen_sleep(1000); /* release the cpu */ return howmany; } -int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data) +int gsmopen_serial_write_AT_nocr(private_t *tech_pvt, const char *data) { int howmany; int i; int res; int count; -char *Data=(char *)data; + char *Data = (char *) data; howmany = strlen(Data); @@ -1921,15 +1905,15 @@ char *Data=(char *)data; } if (option_debug > 1) DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &Data[i]); - gsmopen_sleep(1000); /* release the cpu */ + gsmopen_sleep(1000); /* release the cpu */ } - gsmopen_sleep(1000); /* release the cpu */ + gsmopen_sleep(1000); /* release the cpu */ return howmany; } -int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data) +int gsmopen_serial_write_AT_noack(private_t *tech_pvt, const char *data) { if (option_debug > 1) @@ -1949,7 +1933,7 @@ int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data) return 0; } -int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data) +int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data) { int at_result = AT_ERROR; @@ -1962,8 +1946,7 @@ int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data) UNLOCKA(tech_pvt->controldev_lock); return -1; } - - //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout + //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, 0, NULL, 1); // 1/10th sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); @@ -1972,7 +1955,7 @@ int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data) } -int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *data) +int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *data) { int at_result = AT_ERROR; @@ -1994,7 +1977,7 @@ int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char * } -int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds) +int gsmopen_serial_write_AT_expect1(private_t *tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds) { int at_result = AT_ERROR; @@ -2016,7 +1999,7 @@ int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, cons } -int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, int expect_crlf, int seconds) +int gsmopen_serial_AT_expect(private_t *tech_pvt, const char *expected_string, int expect_crlf, int seconds) { int at_result = AT_ERROR; @@ -2025,7 +2008,7 @@ int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, if (option_debug > 1) DEBUGA_GSMOPEN("expecting: %s\n", GSMOPEN_P_LOG, expected_string); - //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs + //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs at_result = gsmopen_serial_read_AT(tech_pvt, 1, 100000, seconds, expected_string, expect_crlf); // minimum 1/10th sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); @@ -2034,7 +2017,7 @@ int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, } -int gsmopen_serial_answer(private_t * tech_pvt) +int gsmopen_serial_answer(private_t *tech_pvt) { if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_answer_AT(tech_pvt); @@ -2049,8 +2032,7 @@ int gsmopen_serial_answer(private_t * tech_pvt) return -1; } - -int gsmopen_serial_answer_AT(private_t * tech_pvt) +int gsmopen_serial_answer_AT(private_t *tech_pvt) { int res; @@ -2073,7 +2055,7 @@ int gsmopen_serial_answer_AT(private_t * tech_pvt) return 0; } -int gsmopen_serial_hangup(private_t * tech_pvt) +int gsmopen_serial_hangup(private_t *tech_pvt) { if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_hangup_AT(tech_pvt); @@ -2088,8 +2070,7 @@ int gsmopen_serial_hangup(private_t * tech_pvt) return -1; } - -int gsmopen_serial_hangup_AT(private_t * tech_pvt) +int gsmopen_serial_hangup_AT(private_t *tech_pvt) { int res; @@ -2117,8 +2098,7 @@ int gsmopen_serial_hangup_AT(private_t * tech_pvt) return 0; } - -int gsmopen_serial_call(private_t * tech_pvt, char *dstr) +int gsmopen_serial_call(private_t *tech_pvt, char *dstr) { if (tech_pvt->controldevprotocol == PROTOCOL_AT) return gsmopen_serial_call_AT(tech_pvt, dstr); @@ -2135,7 +2115,7 @@ int gsmopen_serial_call(private_t * tech_pvt, char *dstr) return -1; } -int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr) +int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr) { int res; char at_command[256]; @@ -2171,7 +2151,7 @@ int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr) return 0; } -int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft) +int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft) { char converted[16000]; #ifndef WIN32 @@ -2201,7 +2181,7 @@ int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t out inbuf = converted; iconv_format = iconv_open("UTF8", "UCS-2BE"); - if (iconv_format == (iconv_t) - 1) { + if (iconv_format == (iconv_t) -1) { ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); return -1; } @@ -2227,7 +2207,7 @@ int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t out return 0; } -int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft) +int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft) { char converted[16000]; #ifndef WIN32 @@ -2249,12 +2229,11 @@ int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out inbuf = iso_8859_1_in; iconv_format = iconv_open("UTF8", "ISO_8859-1"); - if (iconv_format == (iconv_t) - 1) { + if (iconv_format == (iconv_t) -1) { ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); return -1; } - inbytesleft = strlen(iso_8859_1_in) * 2; iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (iconv_res == (size_t) -1) { @@ -2267,16 +2246,13 @@ int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out (" strlen(iso_8859_1_in)=%d, iconv_res=%d, inbuf=%s, inleft=%d, out=%s, outleft=%d, utf8_out=%s\n", GSMOPEN_P_LOG, (int) strlen(iso_8859_1_in), iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_out); - - iconv_close(iconv_format); #endif //WIN32 return 0; } - -int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft) +int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft) { /* cicopet */ #ifndef WIN32 @@ -2295,7 +2271,7 @@ int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *uc inbuf = utf_in; iconv_format = iconv_open("UCS-2BE", "UTF8"); - if (iconv_format == (iconv_t) - 1) { + if (iconv_format == (iconv_t) -1) { ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); return -1; } @@ -2327,10 +2303,9 @@ int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *uc return 0; } - /*! \brief Answer incoming call, * Part of PBX interface */ -int gsmopen_answer(private_t * tech_pvt) +int gsmopen_answer(private_t *tech_pvt) { int res; @@ -2351,7 +2326,7 @@ int gsmopen_answer(private_t * tech_pvt) tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE; while (tech_pvt->interface_state == GSMOPEN_STATE_RING) { - gsmopen_sleep(10000); //10msec + gsmopen_sleep(10000); //10msec } if (tech_pvt->interface_state != GSMOPEN_STATE_UP) { ERRORA("call answering failed\n", GSMOPEN_P_LOG); @@ -2376,7 +2351,7 @@ int gsmopen_answer(private_t * tech_pvt) return res; } -int gsmopen_ring(private_t * tech_pvt) +int gsmopen_ring(private_t *tech_pvt) { int res = 0; switch_core_session_t *session = NULL; @@ -2412,18 +2387,16 @@ int gsmopen_ring(private_t * tech_pvt) } - if (option_debug) { DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); } return res; } - /*! \brief Hangup gsmopen call * Part of PBX interface, called from ast_hangup */ -int gsmopen_hangup(private_t * tech_pvt) +int gsmopen_hangup(private_t *tech_pvt) { /* if there is not gsmopen pvt why we are here ? */ @@ -2434,7 +2407,6 @@ int gsmopen_hangup(private_t * tech_pvt) DEBUGA_GSMOPEN("ENTERING FUNC\n", GSMOPEN_P_LOG); - if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL) { if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { /* actually hangup through the serial port */ @@ -2472,8 +2444,6 @@ int gsmopen_hangup(private_t * tech_pvt) return 0; } - - #ifdef GSMOPEN_ALSA /*! \brief ALSA pcm format, according to endianess */ #if __BYTE_ORDER == __LITTLE_ENDIAN @@ -2490,7 +2460,7 @@ snd_pcm_format_t gsmopen_format = SND_PCM_FORMAT_S16_BE; * * \return zero on success, -1 on error. */ -int alsa_init(private_t * tech_pvt) +int alsa_init(private_t *tech_pvt) { tech_pvt->alsac = alsa_open_dev(tech_pvt, SND_PCM_STREAM_CAPTURE); if (!tech_pvt->alsac) { @@ -2525,7 +2495,7 @@ int alsa_init(private_t * tech_pvt) * \return zero on success, -1 on error. */ -int alsa_shutdown(private_t * tech_pvt) +int alsa_shutdown(private_t *tech_pvt) { int err; @@ -2569,7 +2539,7 @@ int alsa_shutdown(private_t * tech_pvt) * * \return zero on success, -1 on error. */ -snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream) +snd_pcm_t *alsa_open_dev(private_t *tech_pvt, snd_pcm_stream_t stream) { snd_pcm_t *handle = NULL; @@ -2825,7 +2795,7 @@ snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream) /*! \brief Write audio frames to interface */ #endif /* GSMOPEN_ALSA */ -int gsmopen_call(private_t * tech_pvt, char *rdest, int timeout) +int gsmopen_call(private_t *tech_pvt, char *rdest, int timeout) { //gsmopen_sleep(5000); @@ -2842,8 +2812,7 @@ int gsmopen_call(private_t * tech_pvt, char *rdest, int timeout) return 0; } - -int gsmopen_senddigit(private_t * tech_pvt, char digit) +int gsmopen_senddigit(private_t *tech_pvt, char digit) { DEBUGA_GSMOPEN("DIGIT received: %c\n", GSMOPEN_P_LOG, digit); @@ -2864,7 +2833,7 @@ int gsmopen_senddigit(private_t * tech_pvt, char digit) #ifdef GSMOPEN_ALSA /*! \brief Write audio frames to interface */ -int alsa_write(private_t * tech_pvt, short *data, int datalen) +int alsa_write(private_t *tech_pvt, short *data, int datalen) { static char sizbuf[8000]; static char sizbuf2[16000]; @@ -2876,14 +2845,13 @@ int alsa_write(private_t * tech_pvt, short *data, int datalen) time_t now_timestamp; /* size_t frames = 0; */ snd_pcm_state_t state; - snd_pcm_sframes_t delayp1=0; - snd_pcm_sframes_t delayp2=0; + snd_pcm_sframes_t delayp1 = 0; + snd_pcm_sframes_t delayp2 = 0; - if(tech_pvt->no_sound==1){ + if (tech_pvt->no_sound == 1) { return res; } - memset(sizbuf, 255, sizeof(sizbuf)); memset(sizbuf2, 255, sizeof(sizbuf)); memset(silencebuf, 255, sizeof(sizbuf)); @@ -2899,7 +2867,6 @@ int alsa_write(private_t * tech_pvt, short *data, int datalen) len += datalen; pos = 0; - #ifdef ALSA_MONITOR alsa_monitor_write(sizbuf, len); #endif @@ -3086,7 +3053,7 @@ int alsa_write(private_t * tech_pvt, short *data, int datalen) } #define AST_FRIENDLY_OFFSET 0 -int alsa_read(private_t * tech_pvt, short *data, int datalen) +int alsa_read(private_t *tech_pvt, short *data, int datalen) { //static struct ast_frame f; static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; @@ -3105,15 +3072,12 @@ int alsa_read(private_t * tech_pvt, short *data, int datalen) //DEBUGA_GSMOPEN("buf=%p, datalen=%d, left=%d\n", GSMOPEN_P_LOG, (void *)buf, datalen, left); //memset(&f, 0, sizeof(struct ast_frame)); //giova - - - if(tech_pvt->no_sound==1){ + if (tech_pvt->no_sound == 1) { return r; } left = datalen; - state = snd_pcm_state(tech_pvt->alsac); if (state != SND_PCM_STATE_RUNNING) { DEBUGA_GSMOPEN("ALSA read state is not SND_PCM_STATE_RUNNING\n", GSMOPEN_P_LOG); @@ -3164,7 +3128,7 @@ int alsa_read(private_t * tech_pvt, short *data, int datalen) return r; } else if (r == -EAGAIN) { - int count=0; + int count = 0; while (r == -EAGAIN) { gsmopen_sleep(10000); DEBUGA_GSMOPEN("%d ALSA read -EAGAIN, the soundcard is not ready to be read by gsmopen\n", GSMOPEN_P_LOG, count); @@ -3210,11 +3174,7 @@ int alsa_read(private_t * tech_pvt, short *data, int datalen) #endif // GSMOPEN_ALSA - - - - -int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text) +int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) { //char *idest = data; //char rdest[256]; @@ -3251,7 +3211,6 @@ int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text) ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); } - if (tech_pvt->no_ucs2) { sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //TODO: support phones that only accept pdu mode } else { @@ -3268,7 +3227,7 @@ int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text) } //TODO: support phones that only accept pdu mode //TODO would be better to lock controldev here - //sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //FIXME: nokia e63 want this + //sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //FIXME: nokia e63 want this err = gsmopen_serial_write_AT_noack(tech_pvt, smscommand); if (err) { ERRORA("Error sending SMS\n", GSMOPEN_P_LOG); @@ -3368,7 +3327,6 @@ int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text) DEBUGA_GSMOPEN("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } - DEBUGA_GSMOPEN("FINISH\n", GSMOPEN_P_LOG); if (failed) return -1; @@ -3404,7 +3362,7 @@ void gsmopen_store_boost(char *s, double *boost) *boost = BOOST_MAX; } #ifdef WIN32 - *boost = exp(log ((double)10) * *boost / 20) * BOOST_SCALE; + *boost = exp(log((double) 10) * *boost / 20) * BOOST_SCALE; #else *boost = exp(log(10) * *boost / 20) * BOOST_SCALE; #endif //WIN32 @@ -3412,11 +3370,10 @@ void gsmopen_store_boost(char *s, double *boost) DEBUGA_GSMOPEN("setting boost %s to %f\n", GSMOPEN_P_LOG, s, *boost); } - int gsmopen_sound_boost(void *data, int samples_num, double boost) { /* LUIGI RIZZO's magic */ - if (boost != 0 && (boost < 511 || boost > 513)) { /* scale and clip values */ + if (boost != 0 && (boost < 511 || boost > 513)) { /* scale and clip values */ int i, x; int16_t *ptr = (int16_t *) data; @@ -3437,8 +3394,7 @@ int gsmopen_sound_boost(void *data, int samples_num, double boost) return 0; } - -int gsmopen_serial_getstatus_AT(private_t * tech_pvt) +int gsmopen_serial_getstatus_AT(private_t *tech_pvt) { int res; private_t *p = tech_pvt; @@ -3452,7 +3408,6 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) } #endif - PUSHA_UNLOCKA(p->controldev_lock); LOKKA(p->controldev_lock); res = gsmopen_serial_write_AT_ack(p, "AT"); @@ -3484,7 +3439,6 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) } gsmopen_sleep(1000); } - //FIXME all the following commands in config! if (p->sms_cnmi_not_supported) { @@ -3587,13 +3541,12 @@ int gsmopen_serial_getstatus_AT(private_t * tech_pvt) return 0; } - -int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio_speed) +int gsmopen_serial_init_audio_port(private_t *tech_pvt, int controldevice_audio_speed) { tech_pvt->serialPort_serial_audio = new ctb::SerialPort(); //if( tech_pvt->serialPort_serial_audio->Open( "COM8", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { - if( tech_pvt->serialPort_serial_audio->Open( "/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { + if (tech_pvt->serialPort_serial_audio->Open("/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) { ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); } else { ERRORA("port NOT open\n", GSMOPEN_P_LOG); @@ -3602,22 +3555,23 @@ int gsmopen_serial_init_audio_port(private_t * tech_pvt, int controldevice_audio return 0; } -int serial_audio_init(private_t * tech_pvt) +int serial_audio_init(private_t *tech_pvt) { int res; int err; - res=gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed); + res = gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed); ERRORA("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res); - if(res == 0) - err=0; + if (res == 0) + err = 0; else - err=1; + err = 1; return err; } -int serial_audio_shutdown(private_t * tech_pvt) + +int serial_audio_shutdown(private_t *tech_pvt) { int res; @@ -3629,4 +3583,3 @@ int serial_audio_shutdown(private_t * tech_pvt) return err; } - diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index d66759a86d..9d744efbc9 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -83,14 +83,13 @@ int gettimeofday(struct timeval *tv, struct sk_timezone *tz) /***************/ #endif /* WIN32 */ #endif //0 -SWITCH_BEGIN_EXTERN_C -SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load); +SWITCH_BEGIN_EXTERN_C SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown); SWITCH_MODULE_DEFINITION(mod_gsmopen, mod_gsmopen_load, mod_gsmopen_shutdown, NULL); SWITCH_END_EXTERN_C #define GSMOPEN_CHAT_PROTO "sms" #if 1 -SWITCH_STANDARD_API(gsm_function); + SWITCH_STANDARD_API(gsm_function); /* BEGIN: Changes here */ #define GSM_SYNTAX "list [full] || console || AT_command || remove < interface_name | interface_id > || reload" /* END: Changes heres */ @@ -123,6 +122,7 @@ const char *interface_status[] = { /* should match GSMOPEN_STATE_xxx in gsmopen. "HANG_RQ", "PREANSW" }; + const char *phone_callflow[] = { /* should match CALLFLOW_XXX in gsmopen.h */ "CALL_IDLE", "CALL_DOWN", @@ -153,7 +153,6 @@ const char *phone_callflow[] = { /* should match CALLFLOW_XXX in gsmopen.h */ "STATUS_RMTEHOLD" }; - static struct { int debug; char *ip; @@ -210,9 +209,9 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); -static switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *session); +static switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session); -static switch_status_t gsmopen_codec(private_t * tech_pvt, int sample_rate, int codec_ms) +static switch_status_t gsmopen_codec(private_t *tech_pvt, int sample_rate, int codec_ms) { switch_core_session_t *session = NULL; @@ -249,14 +248,14 @@ static switch_status_t gsmopen_codec(private_t * tech_pvt, int sample_rate, int } -switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *session) +switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session) { #ifdef WANT_SPEEX int ciapa; long level; int tmp; -#endif// WANT_SPEEX +#endif // WANT_SPEEX switch_assert(tech_pvt != NULL); switch_assert(session != NULL); tech_pvt->read_frame.data = tech_pvt->databuf; @@ -275,19 +274,19 @@ switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *s } //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, tech_pvt->read_codec.implementation->actual_samples_per_second); //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, 8000); - dtmf_rx_init(&tech_pvt->dtmf_state, NULL, NULL); - dtmf_rx_parms(&tech_pvt->dtmf_state, 0, 10, 10, -99); + dtmf_rx_init(&tech_pvt->dtmf_state, NULL, NULL); + dtmf_rx_parms(&tech_pvt->dtmf_state, 0, 10, 10, -99); #ifdef GSMOPEN_ALSA - if(tech_pvt->no_sound==0){ + if (tech_pvt->no_sound == 0) { if (alsa_init(tech_pvt)) { ERRORA("alsa_init failed\n", GSMOPEN_P_LOG); return SWITCH_STATUS_FALSE; } } -#endif// GSMOPEN_ALSA - if(tech_pvt->no_sound==0){ +#endif // GSMOPEN_ALSA + if (tech_pvt->no_sound == 0) { if (serial_audio_init(tech_pvt)) { ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); return SWITCH_STATUS_FALSE; @@ -312,96 +311,92 @@ switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *s switch_core_timer_sync(&tech_pvt->timer_write); #ifdef WANT_SPEEX - /* Echo canceller with 100 ms tail length */ + /* Echo canceller with 100 ms tail length */ #ifndef GIOVA48 - tech_pvt->echo_state = speex_echo_state_init(160, 1024); - ciapa = 8000; -#else// GIOVA48 - tech_pvt->echo_state = speex_echo_state_init(960, 4800); - ciapa = 48000; + tech_pvt->echo_state = speex_echo_state_init(160, 1024); + ciapa = 8000; +#else // GIOVA48 + tech_pvt->echo_state = speex_echo_state_init(960, 4800); + ciapa = 48000; #endif // GIOVA48 - speex_echo_ctl(tech_pvt->echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &ciapa); + speex_echo_ctl(tech_pvt->echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &ciapa); -#if 1 //NO MORE - /* Setup preprocessor and associate with echo canceller for residual echo suppression */ +#if 1 //NO MORE + /* Setup preprocessor and associate with echo canceller for residual echo suppression */ #ifndef GIOVA48 - tech_pvt->preprocess = speex_preprocess_state_init(160, 8000); -#else// GIOVA48 - tech_pvt->preprocess = speex_preprocess_state_init(960, 48000); + tech_pvt->preprocess = speex_preprocess_state_init(160, 8000); +#else // GIOVA48 + tech_pvt->preprocess = speex_preprocess_state_init(960, 48000); #endif // GIOVA48 - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE, - tech_pvt->echo_state); + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE, tech_pvt->echo_state); #if 0 - /* Setup preprocessor various other goodies */ - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC, &tmp); - //level=8000.1; - //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC_LEVEL, &level); + /* Setup preprocessor various other goodies */ + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC, &tmp); + //level=8000.1; + //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC_LEVEL, &level); - // Let's turn off all of the 'denoisers' (eg denoise and dereverb, and vad too) because they start automatic gain on mic input on cm108 usb, also if it (the agc on usb) disbled through mixer - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DEREVERB, &tmp); - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_VAD, &tmp); + // Let's turn off all of the 'denoisers' (eg denoise and dereverb, and vad too) because they start automatic gain on mic input on cm108 usb, also if it (the agc on usb) disbled through mixer + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DEREVERB, &tmp); + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_VAD, &tmp); #endif - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC, &tmp); - fprintf(stderr, "AGC is: %d\n", tmp); - level = 1.0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_LEVEL, &level); - fprintf(stderr, "AGC_LEVEL is: %f\n", level); - //tmp=1; - //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_TARGET, &tmp); - //fprintf( stderr, "AGC_TARGET is: %d\n", tmp ); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DENOISE, &tmp); - fprintf(stderr, "DENOISE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DEREVERB, &tmp); - fprintf(stderr, "DEREVERB is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_VAD, &tmp); - fprintf(stderr, "VAD is: %d\n", tmp); + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC, &tmp); + fprintf(stderr, "AGC is: %d\n", tmp); + level = 1.0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_LEVEL, &level); + fprintf(stderr, "AGC_LEVEL is: %f\n", level); + //tmp=1; + //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_TARGET, &tmp); + //fprintf( stderr, "AGC_TARGET is: %d\n", tmp ); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DENOISE, &tmp); + fprintf(stderr, "DENOISE is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DEREVERB, &tmp); + fprintf(stderr, "DEREVERB is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_VAD, &tmp); + fprintf(stderr, "VAD is: %d\n", tmp); #if 0 - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_NOISE_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_NOISE_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE, - &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_START, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_START is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_CONTINUE, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_CONTINUE is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_NOISE_SUPPRESS, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_NOISE_SUPPRESS is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_START, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_START is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_CONTINUE, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_CONTINUE is: %d\n", tmp); #endif //0 -#endif// 0 //NO MORE +#endif // 0 //NO MORE #endif // WANT_SPEEX - - switch_clear_flag(tech_pvt, TFLAG_HANGUP); DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; @@ -434,7 +429,6 @@ static switch_status_t interface_exists(char *the_interface) } } else { /* look by gsmopen_user */ - for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { if (strlen(globals.GSMOPEN_INTERFACES[i].gsmopen_user)) { if (strcmp(globals.GSMOPEN_INTERFACES[i].gsmopen_user, the_interface) == 0) { @@ -457,31 +451,30 @@ static switch_status_t remove_interface(char *the_interface) //running = 0; + //XXX if (*the_interface == '#') { /* remove by interface id or interface name */ + //XXX the_interface++; + switch_assert(the_interface); + interface_id = atoi(the_interface); - //XXX if (*the_interface == '#') { /* remove by interface id or interface name */ - //XXX the_interface++; - switch_assert(the_interface); - interface_id = atoi(the_interface); + if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { + /* take a number as interface id */ + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + } else { - if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { - /* take a number as interface id */ - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - } else { - - for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { - if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - break; - } + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + break; } } - //XXX } //else { /* remove by gsmopen_user */ - //for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { - //if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) { - //tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - //break; - //} - //} + } + //XXX } //else { /* remove by gsmopen_user */ + //for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + //if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) { + //tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + //break; + //} + //} //} if (!tech_pvt) { @@ -604,7 +597,6 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) tech_pvt = (private_t *) switch_core_session_get_private(session); - if (tech_pvt) { DEBUGA_GSMOPEN("%s CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); @@ -620,14 +612,13 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) switch_core_timer_destroy(&tech_pvt->timer_write); #ifdef GSMOPEN_ALSA - if(tech_pvt->no_sound==0){ - alsa_shutdown(tech_pvt); - } -#endif// GSMOPEN_ALSA - if(tech_pvt->no_sound==0){ - serial_audio_shutdown(tech_pvt); - } - + if (tech_pvt->no_sound == 0) { + alsa_shutdown(tech_pvt); + } +#endif // GSMOPEN_ALSA + if (tech_pvt->no_sound == 0) { + serial_audio_shutdown(tech_pvt); + } *tech_pvt->session_uuid_str = '\0'; tech_pvt->interface_state = GSMOPEN_STATE_IDLE; @@ -647,7 +638,6 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session) switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; - channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); @@ -664,7 +654,6 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session) } } - DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); switch_clear_flag(tech_pvt, TFLAG_IO); switch_clear_flag(tech_pvt, TFLAG_VOICE); @@ -757,6 +746,7 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int return SWITCH_STATUS_SUCCESS; } + static switch_status_t channel_on_consume_media(switch_core_session_t *session) { private_t *tech_pvt = NULL; @@ -767,7 +757,6 @@ static switch_status_t channel_on_consume_media(switch_core_session_t *session) return SWITCH_STATUS_SUCCESS; } - static switch_status_t channel_on_exchange_media(switch_core_session_t *session) { private_t *tech_pvt = NULL; @@ -802,7 +791,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; switch_byte_t *data; -#if defined(GSMOPEN_ALSA) +#if defined(GSMOPEN_ALSA) int samples; char digit_str[256]; #endif // defined(GSMOPEN_ALSA) @@ -812,7 +801,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch char digit_str[256]; char buffer2[640]; - channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); @@ -825,7 +813,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch return SWITCH_STATUS_FALSE; } - tech_pvt->read_frame.flags = SFF_NONE; *frame = NULL; @@ -835,67 +822,62 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_core_timer_next(&tech_pvt->timer_read); - if(tech_pvt->no_sound==1){ + if (tech_pvt->no_sound == 1) { goto cng; - } + } #ifdef GSMOPEN_ALSA //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) - if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) -#endif// GSMOPEN_ALSA -// if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) + if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) +#endif // GSMOPEN_ALSA +// if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) -if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) - { + if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { tech_pvt->buffer2_full = 0; - - - if(samples >= 640){ - DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); - memcpy(tech_pvt->buffer2, buffer2+320, 320); + if (samples >= 640) { + DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + memcpy(tech_pvt->buffer2, buffer2 + 320, 320); tech_pvt->buffer2_full = 1; - } - samples=320; + } + samples = 320; - - memcpy(tech_pvt->read_frame.data, buffer2, 320); - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples/2; + memcpy(tech_pvt->read_frame.data, buffer2, 320); + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples / 2; - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; - *frame = &tech_pvt->read_frame; + *frame = &tech_pvt->read_frame; - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); - }else{ - DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); - if(tech_pvt->buffer2_full){ + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } else { + DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); + if (tech_pvt->buffer2_full) { memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); tech_pvt->buffer2_full = 0; - samples=320; + samples = 320; DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); - - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples/2; - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples / 2; - *frame = &tech_pvt->read_frame; + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + + *frame = &tech_pvt->read_frame; + + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); } - - -} - //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); + //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); if (samples != 320) { DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); goto cng; @@ -905,15 +887,13 @@ if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) //usleep(17000); //usleep(17000); - - memset(digit_str, 0, sizeof(digit_str)); //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); //teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str)); - dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); - dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str)); + dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); + dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str)); - gsmopen_sound_boost(tech_pvt->read_frame.data, tech_pvt->read_frame.samples, tech_pvt->capture_boost); + gsmopen_sound_boost(tech_pvt->read_frame.data, tech_pvt->read_frame.samples, tech_pvt->capture_boost); if (digit_str[0]) { switch_time_t new_dtmf_timestamp = switch_time_now(); @@ -922,7 +902,7 @@ if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) switch_channel_t *channel = switch_core_session_get_channel(session); while (p && *p) { - switch_dtmf_t dtmf = {0}; + switch_dtmf_t dtmf = { 0 }; dtmf.digit = *p; dtmf.duration = SWITCH_DEFAULT_DTMF_DURATION; switch_channel_queue_dtmf(channel, &dtmf); @@ -954,7 +934,7 @@ if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) *frame = &tech_pvt->read_frame; #ifdef BIGENDIAN if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { - switch_swap_linear((int16_t *)(*frame)->data, (int) (*frame)->datalen / 2); + switch_swap_linear((int16_t *) (*frame)->data, (int) (*frame)->datalen / 2); } #endif //WARNINGA("HERE\n", GSMOPEN_P_LOG); @@ -1004,7 +984,7 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc #ifdef BIGENDIAN if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { #ifdef WIN32 - switch_swap_linear((int16_t *)frame->data, (int) frame->datalen / 2); + switch_swap_linear((int16_t *) frame->data, (int) frame->datalen / 2); #else switch_swap_linear(frame->data, (int) frame->datalen / 2); #endif //WIN32 @@ -1019,7 +999,7 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); #ifdef GSMOPEN_ALSA - + switch_core_timer_next(&tech_pvt->timer_write); sent = alsa_write(tech_pvt, (short *) frame->data, (int) (frame->datalen)); //DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); @@ -1027,14 +1007,12 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc if (sent && sent != frame->datalen / 2 && sent != -1) { DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); } -#endif// GSMOPEN_ALSA +#endif // GSMOPEN_ALSA sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); if (sent && sent != frame->datalen && sent != -1) { DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); } - - //NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent); return SWITCH_STATUS_SUCCESS; } @@ -1065,21 +1043,6 @@ static switch_status_t channel_answer_channel(switch_core_session_t *session) switch_mutex_unlock(globals.mutex); DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); - - - - - - - - - - - - - - - DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; @@ -1089,7 +1052,7 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s { switch_channel_t *channel; private_t *tech_pvt; -#if defined(GSMOPEN_ALSA) +#if defined(GSMOPEN_ALSA) int samples; short tmp_buffer[1280]; #endif // defined(GSMOPEN_ALSA) @@ -1117,10 +1080,9 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s while ((samples = alsa_read(tech_pvt, tmp_buffer, tech_pvt->read_codec.implementation->samples_per_packet * 4)) > 160) { //WARNINGA("read %d samples\n", GSMOPEN_P_LOG, samples); } -#endif// GSMOPEN_ALSA +#endif // GSMOPEN_ALSA break; - default: { DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); @@ -1188,7 +1150,6 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi DEBUGA_GSMOPEN("1 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); switch_core_session_add_stream(*new_session, NULL); - if (!zstr(outbound_profile->destination_number)) { int i; char *slash; @@ -1265,7 +1226,6 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } - if (outbound_profile) { char name[128]; @@ -1370,7 +1330,6 @@ static switch_status_t load_config(int reload_type) char *fail_dial_regex = NULL; const char *enable_callerid = "true"; - const char *at_dial_pre_number = "ATD"; const char *at_dial_post_number = ";"; const char *at_dial_expect = "OK"; @@ -1436,7 +1395,7 @@ static switch_status_t load_config(int reload_type) const char *playback_boost = "0"; #if defined(GSMOPEN_ALSA) const char *no_sound = "0"; -#else +#else const char *no_sound = "0"; #endif // defined(GSMOPEN_ALSA) const char *portaudiocindex = "1"; @@ -1455,8 +1414,6 @@ static switch_status_t load_config(int reload_type) uint32_t running = 1; //FIXME TODO const char *gsmopen_serial_sync_period = "300"; //FIXME TODO - - tech_pvt = NULL; for (param = switch_xml_child(myinterface, "param"); param; param = param->next) { @@ -1631,7 +1588,6 @@ static switch_status_t load_config(int reload_type) gsmopen_serial_sync_period = val; } - } /* BEGIN: Changes here */ @@ -1712,11 +1668,11 @@ static switch_status_t load_config(int reload_type) continue; } if (!switch_is_number(gsmopen_serial_sync_period)) { - ERRORA("interface param 'gsmopen_serial_sync_period' MUST be a number, now gsmopen_serial_sync_period='%s'\n", GSMOPEN_P_LOG, gsmopen_serial_sync_period); + ERRORA("interface param 'gsmopen_serial_sync_period' MUST be a number, now gsmopen_serial_sync_period='%s'\n", GSMOPEN_P_LOG, + gsmopen_serial_sync_period); continue; } - if (interface_id && interface_id < GSMOPEN_MAX_INTERFACES) { private_t newconf; switch_threadattr_t *gsmopen_api_thread_attr = NULL; @@ -1725,13 +1681,11 @@ static switch_status_t load_config(int reload_type) memset(&newconf, '\0', sizeof(newconf)); globals.GSMOPEN_INTERFACES[interface_id] = newconf; - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_audio_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].id, id); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].name, name); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].context, context); @@ -1795,7 +1749,7 @@ static switch_status_t load_config(int reload_type) #ifdef GSMOPEN_ALSA switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsacname, alsacname); switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsapname, alsapname); -#endif// GSMOPEN_ALSA +#endif // GSMOPEN_ALSA globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio); globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause); @@ -1808,24 +1762,20 @@ static switch_status_t load_config(int reload_type) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_sound_rate = atoi(gsmopen_sound_rate); globals.GSMOPEN_INTERFACES[interface_id].alsa_play_is_mono = atoi(alsa_play_is_mono); globals.GSMOPEN_INTERFACES[interface_id].alsa_capture_is_mono = atoi(alsa_capture_is_mono); -#endif// GSMOPEN_ALSA +#endif // GSMOPEN_ALSA globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost); globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost); #if defined(GSMOPEN_ALSA) globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); -#else +#else globals.GSMOPEN_INTERFACES[interface_id].no_sound = 0; #endif // defined(GSMOPEN_ALSA) - globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); - - + globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed = controldevice_speed; //FIXME globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol = controldevprotocol; //FIXME globals.GSMOPEN_INTERFACES[interface_id].running = running; //FIXME - - WARNINGA("STARTING interface_id=%d\n", GSMOPEN_P_LOG, interface_id); DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].id); DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].name); @@ -1838,13 +1788,10 @@ static switch_status_t load_config(int reload_type) #ifdef GSMOPEN_ALSA DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsacname); DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsapname); -#endif// GSMOPEN_ALSA - - - DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); - - +#endif // GSMOPEN_ALSA + DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, + (int) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); /* init the serial port */ if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { @@ -1854,10 +1801,10 @@ static switch_status_t load_config(int reload_type) ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; continue; } } @@ -1868,8 +1815,8 @@ static switch_status_t load_config(int reload_type) if (res) { int count = 0; ERRORA("gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG); - while(res && count < 5){ - switch_sleep(100000); //0.1 seconds + while (res && count < 5) { + switch_sleep(100000); //0.1 seconds res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); count++; if (res) { @@ -1879,25 +1826,25 @@ static switch_status_t load_config(int reload_type) if (res) { ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_config failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; continue; } } } - if(globals.GSMOPEN_INTERFACES[interface_id].no_sound==0){ + if (globals.GSMOPEN_INTERFACES[interface_id].no_sound == 0) { #ifdef GSMOPEN_ALSA if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) { ERRORA("alsa_init failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "alsa_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; continue; } @@ -1906,22 +1853,22 @@ static switch_status_t load_config(int reload_type) ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "alsa_shutdown failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; continue; } -#endif// GSMOPEN_ALSA +#endif // GSMOPEN_ALSA if (serial_audio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; continue; } @@ -1930,20 +1877,17 @@ static switch_status_t load_config(int reload_type) ERRORA("serial_audio_shutdown failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running=0; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_shutdown failed"); - globals.GSMOPEN_INTERFACES[interface_id].active=0; - globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; continue; } - - - } - globals.GSMOPEN_INTERFACES[interface_id].active=1; + globals.GSMOPEN_INTERFACES[interface_id].active = 1; //gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME //gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME @@ -1984,8 +1928,8 @@ static switch_status_t load_config(int reload_type) #ifdef GSMOPEN_ALSA DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsacname); DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsapname); -#endif// GSMOPEN_ALSA - DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); +#endif // GSMOPEN_ALSA + DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int) globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); } } @@ -2004,12 +1948,12 @@ static switch_status_t chat_send(switch_event_t *message_event) private_t *tech_pvt = NULL; int i = 0, found = 0; - const char *proto; - const char *from; - const char *to; - const char *subject; - const char *body; - //const char *type; + const char *proto; + const char *from; + const char *to; + const char *subject; + const char *body; + //const char *type; const char *hint; proto = switch_event_get_header(message_event, "proto"); @@ -2022,7 +1966,7 @@ static switch_status_t chat_send(switch_event_t *message_event) switch_assert(proto != NULL); - DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, + DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, hint ? hint : "NULL"); if (!to || !strlen(to)) { @@ -2044,7 +1988,7 @@ static switch_status_t chat_send(switch_event_t *message_event) } } - if (hint==NULL || !strlen(hint)) { //FIXME FIXME FIXME + if (hint == NULL || !strlen(hint)) { //FIXME FIXME FIXME hint = from; } if (to && (user = strdup(to))) { @@ -2094,30 +2038,30 @@ static switch_status_t chat_send(switch_event_t *message_event) } static switch_status_t compat_chat_send(const char *proto, const char *from, const char *to, - const char *subject, const char *body, const char *type, const char *hint) + const char *subject, const char *body, const char *type, const char *hint) { - switch_event_t *message_event; - switch_status_t status; + switch_event_t *message_event; + switch_status_t status; - if (switch_event_create(&message_event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "proto", proto); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "from", from); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "to", to); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "subject", subject); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "type", type); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "hint", hint); + if (switch_event_create(&message_event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "proto", proto); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "from", from); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "to", to); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "subject", subject); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "type", type); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "hint", hint); - if (body) { - switch_event_add_body(message_event, "%s", body); - } - } else { - abort(); - } + if (body) { + switch_event_add_body(message_event, "%s", body); + } + } else { + abort(); + } - status = chat_send(message_event); - switch_event_destroy(&message_event); + status = chat_send(message_event); + switch_event_destroy(&message_event); - return status; + return status; } @@ -2153,7 +2097,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load) SWITCH_ADD_API(commands_api_interface, "gsm", "gsm console AT_command", gsm_function, GSM_SYNTAX); SWITCH_ADD_API(commands_api_interface, "gsmopen", "gsmopen interface AT_command", gsmopen_function, GSMOPEN_SYNTAX); #endif //0 - SWITCH_ADD_API(commands_api_interface, "gsmopen_boost_audio", "gsmopen_boost_audio interface AT_command", gsmopen_boost_audio_function, GSMOPEN_BOOST_AUDIO_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen_boost_audio", "gsmopen_boost_audio interface AT_command", gsmopen_boost_audio_function, + GSMOPEN_BOOST_AUDIO_SYNTAX); SWITCH_ADD_API(commands_api_interface, "gsmopen_dump", "gsmopen_dump interface", gsmopen_dump_function, GSMOPEN_DUMP_SYNTAX); SWITCH_ADD_API(commands_api_interface, "gsmopen_sendsms", "gsmopen_sendsms interface destination_number SMS_text", sendsms_function, SENDSMS_SYNTAX); @@ -2242,13 +2187,12 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown) return SWITCH_STATUS_SUCCESS; } - -void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t * thread, void *obj) +void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t *thread, void *obj) { return gsmopen_do_gsmopenapi_thread_func(obj); } -int dtmf_received(private_t * tech_pvt, char *value) +int dtmf_received(private_t *tech_pvt, char *value) { switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2279,7 +2223,7 @@ int dtmf_received(private_t * tech_pvt, char *value) return 0; } -int new_inbound_channel(private_t * tech_pvt) +int new_inbound_channel(private_t *tech_pvt) { switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2327,7 +2271,7 @@ int new_inbound_channel(private_t * tech_pvt) return 0; } -int remote_party_is_ringing(private_t * tech_pvt) +int remote_party_is_ringing(private_t *tech_pvt) { switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2357,7 +2301,7 @@ int remote_party_is_ringing(private_t * tech_pvt) return 0; } -int remote_party_is_early_media(private_t * tech_pvt) +int remote_party_is_early_media(private_t *tech_pvt) { switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2391,7 +2335,7 @@ int remote_party_is_early_media(private_t * tech_pvt) return 0; } -int outbound_channel_answered(private_t * tech_pvt) +int outbound_channel_answered(private_t *tech_pvt) { switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; @@ -2425,7 +2369,7 @@ int outbound_channel_answered(private_t * tech_pvt) return 0; } -private_t *find_available_gsmopen_interface_rr(private_t * tech_pvt_calling) +private_t *find_available_gsmopen_interface_rr(private_t *tech_pvt_calling) { private_t *tech_pvt = NULL; int i; @@ -2659,7 +2603,7 @@ SWITCH_STANDARD_API(gsmopen_dump_function) for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { tech_pvt = &globals.GSMOPEN_INTERFACES[i]; //stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); found = 1; @@ -2675,56 +2619,55 @@ SWITCH_STANDARD_API(gsmopen_dump_function) stream->write_function(stream, "dumping interface '%s'\n\n", globals.GSMOPEN_INTERFACES[i].name); tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->active); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); stream->write_function(stream, "active = %s\n", value); - if(!tech_pvt->network_creg_not_supported){ - snprintf(value, sizeof(value)-1, "%d", tech_pvt->not_registered); + if (!tech_pvt->network_creg_not_supported) { + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); stream->write_function(stream, "not_registered = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->home_network_registered); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); stream->write_function(stream, "home_network_registered = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->roaming_registered); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); stream->write_function(stream, "roaming_registered = %s\n", value); - }else{ + } else { stream->write_function(stream, "not_registered = %s\n", "N/A"); stream->write_function(stream, "home_network_registered = %s\n", "N/A"); stream->write_function(stream, "roaming_registered = %s\n", "N/A"); } - snprintf(value, sizeof(value)-1, "%d", tech_pvt->got_signal); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); stream->write_function(stream, "got_signal = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->running); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); stream->write_function(stream, "running = %s\n", value); stream->write_function(stream, "imei = %s\n", tech_pvt->imei); stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->controldev_dead); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); stream->write_function(stream, "controldev_dead = %s\n", value); stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->no_sound); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); stream->write_function(stream, "no_sound = %s\n", value); #ifdef GSMOPEN_ALSA stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); -#endif// GSMOPEN_ALSA - snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); +#endif // GSMOPEN_ALSA + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); stream->write_function(stream, "playback_boost = %s\n", value); - snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); stream->write_function(stream, "capture_boost = %s\n", value); stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); stream->write_function(stream, "context = %s\n", tech_pvt->context); stream->write_function(stream, "destination = %s\n", tech_pvt->destination); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); stream->write_function(stream, "ib_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); stream->write_function(stream, "ob_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_failed_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); stream->write_function(stream, "ib_failed_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_failed_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); stream->write_function(stream, "ob_failed_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->interface_state); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); stream->write_function(stream, "interface_state = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->phone_callflow); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); stream->write_function(stream, "phone_callflow = %s\n", value); stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); stream->write_function(stream, "\n"); @@ -2734,76 +2677,76 @@ SWITCH_STANDARD_API(gsmopen_dump_function) } - } else if(found){ + } else if (found) { stream->write_function(stream, "dumping interface '%s'\n\n", argv[0]); tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->active); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); stream->write_function(stream, "active = %s\n", value); - if(!tech_pvt->network_creg_not_supported){ - snprintf(value, sizeof(value)-1, "%d", tech_pvt->not_registered); + if (!tech_pvt->network_creg_not_supported) { + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); stream->write_function(stream, "not_registered = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->home_network_registered); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); stream->write_function(stream, "home_network_registered = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->roaming_registered); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); stream->write_function(stream, "roaming_registered = %s\n", value); - }else{ + } else { stream->write_function(stream, "not_registered = %s\n", "N/A"); stream->write_function(stream, "home_network_registered = %s\n", "N/A"); stream->write_function(stream, "roaming_registered = %s\n", "N/A"); } - snprintf(value, sizeof(value)-1, "%d", tech_pvt->got_signal); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); stream->write_function(stream, "got_signal = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->running); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); stream->write_function(stream, "running = %s\n", value); stream->write_function(stream, "imei = %s\n", tech_pvt->imei); stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->controldev_dead); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); stream->write_function(stream, "controldev_dead = %s\n", value); stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->no_sound); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); stream->write_function(stream, "no_sound = %s\n", value); #ifdef GSMOPEN_ALSA stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); -#endif// GSMOPEN_ALSA - snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); +#endif // GSMOPEN_ALSA + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); stream->write_function(stream, "playback_boost = %s\n", value); - snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); stream->write_function(stream, "capture_boost = %s\n", value); stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); stream->write_function(stream, "context = %s\n", tech_pvt->context); stream->write_function(stream, "destination = %s\n", tech_pvt->destination); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); stream->write_function(stream, "ib_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); stream->write_function(stream, "ob_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_failed_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); stream->write_function(stream, "ib_failed_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_failed_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); stream->write_function(stream, "ob_failed_calls = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->interface_state); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); stream->write_function(stream, "interface_state = %s\n", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->phone_callflow); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); stream->write_function(stream, "phone_callflow = %s\n", value); stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); stream->write_function(stream, "\n"); dump_event(tech_pvt); - } else{ + } else { stream->write_function(stream, "interface '%s' was not found\n", argv[0]); } } else { stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); } -end: + end: switch_safe_free(mycmd); return SWITCH_STATUS_SUCCESS; } + SWITCH_STANDARD_API(gsmopen_boost_audio_function) { char *mycmd = NULL, *argv[10] = { 0 }; @@ -2814,14 +2757,14 @@ SWITCH_STANDARD_API(gsmopen_boost_audio_function) argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); } - if (argc == 1 || argc==3) { + if (argc == 1 || argc == 3) { int i; int found = 0; for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { tech_pvt = &globals.GSMOPEN_INTERFACES[i]; stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); found = 1; @@ -2834,21 +2777,27 @@ SWITCH_STANDARD_API(gsmopen_boost_audio_function) } else { if (argc == 1) { - stream->write_function(stream,"[%s] capture boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].capture_boost); - stream->write_function(stream,"[%s] playback boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].playback_boost); + stream->write_function(stream, "[%s] capture boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].capture_boost); + stream->write_function(stream, "[%s] playback boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].playback_boost); stream->write_function(stream, "%s usage: %s", argv[0], GSMOPEN_BOOST_AUDIO_SYNTAX); goto end; } else if ((strncmp("play", argv[1], strlen(argv[1])) == 0)) { if (switch_is_number(argv[2])) { - stream->write_function(stream,"[%s] playback boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].playback_boost); + stream->write_function(stream, "[%s] playback boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].playback_boost); gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].playback_boost); //FIXME - stream->write_function(stream,"[%s] playback boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].playback_boost); + stream->write_function(stream, "[%s] playback boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].playback_boost); } - }else if ((strncmp("capt", argv[1], strlen(argv[1])) == 0)) { + } else if ((strncmp("capt", argv[1], strlen(argv[1])) == 0)) { if (switch_is_number(argv[2])) { - stream->write_function(stream,"[%s] capture boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].capture_boost); + stream->write_function(stream, "[%s] capture boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].capture_boost); gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].capture_boost); //FIXME - stream->write_function(stream,"[%s] capture boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].capture_boost); + stream->write_function(stream, "[%s] capture boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].capture_boost); } } else { stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); @@ -2863,9 +2812,8 @@ SWITCH_STANDARD_API(gsmopen_boost_audio_function) return SWITCH_STATUS_SUCCESS; } - #if 0 -int gsmopen_transfer(private_t * tech_pvt, char *id, char *value) +int gsmopen_transfer(private_t *tech_pvt, char *id, char *value) { char msg_to_gsmopen[1024]; int i; @@ -2993,68 +2941,63 @@ void *gsmopen_do_gsmopenapi_thread_func(void *obj) time_t now_timestamp; //if (gsmopen_present(GSMopenHandles)) - while (running && tech_pvt->running) { - int res; - //gsmopen_sleep(1000000); //1 sec - //DEBUGA_GSMOPEN("ciao!\n", GSMOPEN_P_LOG); - res = gsmopen_serial_read(tech_pvt); - if (res == -1) { //manage the graceful interface shutdown - tech_pvt->controldev_dead = 1; - close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running=0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active=0; - tech_pvt->name[0]='\0'; - switch_sleep(1000000); - } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_RING - && tech_pvt->phone_callflow != CALLFLOW_CALL_HANGUP_REQUESTED) { - //WARNINGA("INCOMING RING\n", GSMOPEN_P_LOG); + while (running && tech_pvt->running) { + int res; + //gsmopen_sleep(1000000); //1 sec + //DEBUGA_GSMOPEN("ciao!\n", GSMOPEN_P_LOG); + res = gsmopen_serial_read(tech_pvt); + if (res == -1) { //manage the graceful interface shutdown + tech_pvt->controldev_dead = 1; + close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + switch_sleep(1000000); + } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_RING + && tech_pvt->phone_callflow != CALLFLOW_CALL_HANGUP_REQUESTED) { + //WARNINGA("INCOMING RING\n", GSMOPEN_P_LOG); - gsmopen_ring(tech_pvt); + gsmopen_ring(tech_pvt); - //FIXME gsmopen_answer(tech_pvt); - //new_inbound_channel(tech_pvt); - //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { - //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); - //FIXME } + //FIXME gsmopen_answer(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) { + WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); + tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA; + remote_party_is_early_media(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } - } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) { - WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); - tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA; - remote_party_is_early_media(tech_pvt); - //new_inbound_channel(tech_pvt); - //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { - //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); - //FIXME } - - - - - } else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) { - WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); - outbound_channel_answered(tech_pvt); - //new_inbound_channel(tech_pvt); - //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { - //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); - //FIXME } - } - switch_sleep(100); //give other threads a chance - time(&now_timestamp); - - if ((now_timestamp - tech_pvt->gsmopen_serial_synced_timestamp) > tech_pvt->gsmopen_serial_sync_period) { //TODO find a sensible period. 5min? in config? - gsmopen_serial_sync(tech_pvt); - gsmopen_serial_getstatus_AT(tech_pvt); - } + } else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) { + WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); + outbound_channel_answered(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } } + switch_sleep(100); //give other threads a chance + time(&now_timestamp); + + if ((now_timestamp - tech_pvt->gsmopen_serial_synced_timestamp) > tech_pvt->gsmopen_serial_sync_period) { //TODO find a sensible period. 5min? in config? + gsmopen_serial_sync(tech_pvt); + gsmopen_serial_getstatus_AT(tech_pvt); + } + } DEBUGA_GSMOPEN("EXIT\n", GSMOPEN_P_LOG); //running = 0; return NULL; } - SWITCH_STANDARD_API(sendsms_function) { char *mycmd = NULL, *argv[3] = { 0 }; @@ -3111,7 +3054,7 @@ SWITCH_STANDARD_API(sendsms_function) return SWITCH_STATUS_SUCCESS; } -int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message) +int dump_event_full(private_t *tech_pvt, int is_alarm, int alarm_code, const char *alarm_message) { switch_event_t *event; char value[512]; @@ -3120,72 +3063,72 @@ int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const ch switch_status_t status; session = switch_core_session_locate(tech_pvt->session_uuid_str); - if(session){ + if (session) { channel = switch_core_session_get_channel(session); } - if (is_alarm){ - ERRORA("ALARM on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name ); + if (is_alarm) { + ERRORA("ALARM on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name); status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_ALARM); - }else{ - DEBUGA_GSMOPEN("DUMP on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name ); + } else { + DEBUGA_GSMOPEN("DUMP on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name); status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_DUMP); } if (status == SWITCH_STATUS_SUCCESS) { - if (is_alarm){ - snprintf(value, sizeof(value)-1, "%d", alarm_code); + if (is_alarm) { + snprintf(value, sizeof(value) - 1, "%d", alarm_code); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_code", value); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_message", alarm_message); } switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_name", tech_pvt->name); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_id", tech_pvt->id); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->active); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "active", value); - if(!tech_pvt->network_creg_not_supported){ - snprintf(value, sizeof(value)-1, "%d", tech_pvt->not_registered); + if (!tech_pvt->network_creg_not_supported) { + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->home_network_registered); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->roaming_registered); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", value); - }else{ + } else { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", "N/A"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", "N/A"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", "N/A"); } - snprintf(value, sizeof(value)-1, "%d", tech_pvt->got_signal); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "got_signal", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->running); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "running", value); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imei", tech_pvt->imei); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imsi", tech_pvt->imsi); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->controldev_dead); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldev_dead", value); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldevice_name", tech_pvt->controldevice_name); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->no_sound); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "no_sound", value); #ifdef GSMOPEN_ALSA switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsacname", tech_pvt->alsacname); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsapname", tech_pvt->alsapname); -#endif// GSMOPEN_ALSA - snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); +#endif // GSMOPEN_ALSA + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "playback_boost", value); - snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "capture_boost", value); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialplan", tech_pvt->dialplan); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "context", tech_pvt->context); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "destination", tech_pvt->destination); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_calls", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_calls", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_failed_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_failed_calls", value); - snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_failed_calls); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_failed_calls", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->interface_state); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_state", value); - snprintf(value, sizeof(value)-1, "%d", tech_pvt->phone_callflow); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "phone_callflow", value); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "session_uuid_str", tech_pvt->session_uuid_str); if (strlen(tech_pvt->session_uuid_str)) { @@ -3207,18 +3150,17 @@ int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const ch return 0; } -int dump_event(private_t * tech_pvt) +int dump_event(private_t *tech_pvt) { return dump_event_full(tech_pvt, 0, 0, NULL); } - -int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message) +int alarm_event(private_t *tech_pvt, int alarm_code, const char *alarm_message) { return dump_event_full(tech_pvt, 1, alarm_code, alarm_message); } -int sms_incoming(private_t * tech_pvt) +int sms_incoming(private_t *tech_pvt) { switch_event_t *event; switch_core_session_t *session = NULL; @@ -3295,7 +3237,6 @@ int sms_incoming(private_t * tech_pvt) return 0; } - #ifdef NOTDEF SWITCH_STANDARD_API(gsmopen_chat_function) { @@ -3342,8 +3283,9 @@ SWITCH_STANDARD_API(gsmopen_chat_function) //chat_send(p*roto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); //chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, hint); - NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, - argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), tech_pvt->name); + NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, + tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), + tech_pvt->name); chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, tech_pvt->name); @@ -3390,7 +3332,6 @@ SWITCH_STANDARD_API(gsmopen_chat_function) } #endif // NOTDEF - /* For Emacs: * Local Variables: * mode:c From 8366037fa2641c8fde31f54dd882ec2b15a62558 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 21:18:22 +0200 Subject: [PATCH 065/630] gsmopen: cleaned speex --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 92 ------------------- 1 file changed, 92 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 9d744efbc9..dac9aaeecb 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -251,11 +251,6 @@ static switch_status_t gsmopen_codec(private_t *tech_pvt, int sample_rate, int c switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session) { -#ifdef WANT_SPEEX - int ciapa; - long level; - int tmp; -#endif // WANT_SPEEX switch_assert(tech_pvt != NULL); switch_assert(session != NULL); tech_pvt->read_frame.data = tech_pvt->databuf; @@ -310,93 +305,6 @@ switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *se switch_core_timer_sync(&tech_pvt->timer_write); -#ifdef WANT_SPEEX - /* Echo canceller with 100 ms tail length */ -#ifndef GIOVA48 - tech_pvt->echo_state = speex_echo_state_init(160, 1024); - ciapa = 8000; -#else // GIOVA48 - tech_pvt->echo_state = speex_echo_state_init(960, 4800); - ciapa = 48000; -#endif // GIOVA48 - speex_echo_ctl(tech_pvt->echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &ciapa); - -#if 1 //NO MORE - /* Setup preprocessor and associate with echo canceller for residual echo suppression */ -#ifndef GIOVA48 - tech_pvt->preprocess = speex_preprocess_state_init(160, 8000); -#else // GIOVA48 - tech_pvt->preprocess = speex_preprocess_state_init(960, 48000); -#endif // GIOVA48 - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE, tech_pvt->echo_state); - -#if 0 - /* Setup preprocessor various other goodies */ - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC, &tmp); - //level=8000.1; - //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC_LEVEL, &level); - - // Let's turn off all of the 'denoisers' (eg denoise and dereverb, and vad too) because they start automatic gain on mic input on cm108 usb, also if it (the agc on usb) disbled through mixer - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DEREVERB, &tmp); - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_VAD, &tmp); -#endif - - tmp = 0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC, &tmp); - fprintf(stderr, "AGC is: %d\n", tmp); - level = 1.0; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_LEVEL, &level); - fprintf(stderr, "AGC_LEVEL is: %f\n", level); - //tmp=1; - //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_TARGET, &tmp); - //fprintf( stderr, "AGC_TARGET is: %d\n", tmp ); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DENOISE, &tmp); - fprintf(stderr, "DENOISE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DEREVERB, &tmp); - fprintf(stderr, "DEREVERB is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_VAD, &tmp); - fprintf(stderr, "VAD is: %d\n", tmp); - -#if 0 - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_NOISE_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_NOISE_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_START, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_START is: %d\n", tmp); - tmp = 1; - speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_CONTINUE, &tmp); - fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_CONTINUE is: %d\n", tmp); -#endif //0 -#endif // 0 //NO MORE - -#endif // WANT_SPEEX - switch_clear_flag(tech_pvt, TFLAG_HANGUP); DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; From f2f4b9e8617d03fdd2c478e24f264fbb8a16f81b Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 21:21:14 +0200 Subject: [PATCH 066/630] gsmopen: removed files from src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/ --- .../mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h | 1 - .../alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c | 1 - .../alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c | 1 - 3 files changed, 3 deletions(-) delete mode 120000 src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h delete mode 120000 src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c delete mode 120000 src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h deleted file mode 120000 index 663f1cbc4d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c deleted file mode 120000 index b03564bdd9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen_protocol.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c deleted file mode 120000 index a0686ea786..0000000000 --- a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c +++ /dev/null @@ -1 +0,0 @@ -../../mod_gsmopen.cpp \ No newline at end of file From 7242c94ea49582dd5ca4376017cb56d3e6d4fee3 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 21:22:31 +0200 Subject: [PATCH 067/630] gsmopen: committed files from master (old gsmopen) in src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/ --- .../mod_gsmopen/gsmopen.h | 665 +++ .../mod_gsmopen/gsmopen_protocol.cpp | 4004 +++++++++++++++++ .../mod_gsmopen/mod_gsmopen.cpp | 3474 ++++++++++++++ 3 files changed, 8143 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h create mode 100644 src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.cpp create mode 100644 src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.cpp diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h new file mode 100644 index 0000000000..37eb15741c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h @@ -0,0 +1,665 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005/2011, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * This module (mod_gsmopen) has been contributed by: + * + * Giovanni Maruzzelli (gmaruzz@gmail.com) + * + * + * Further Contributors: + * + * + * + * mod_gsmopen.c -- GSM compatible Endpoint Module + * + */ + +#define __STDC_LIMIT_MACROS + +#ifdef WIN32 +#define HAVE_VSNPRINTF +#pragma warning(disable: 4290) +#endif //WIN32 + +#define MY_EVENT_INCOMING_SMS "gsmopen::incoming_sms" +#define MY_EVENT_DUMP "gsmopen::dump_event" +#define MY_EVENT_ALARM "gsmopen::alarm" + +#define ALARM_FAILED_INTERFACE 0 +#define ALARM_NO_NETWORK_REGISTRATION 1 +#define ALARM_ROAMING_NETWORK_REGISTRATION 2 +#define ALARM_NETWORK_NO_SERVICE 3 +#define ALARM_NETWORK_NO_SIGNAL 4 +#define ALARM_NETWORK_LOW_SIGNAL 5 + + + + + +#undef GIOVA48 + +#ifndef GIOVA48 +#define SAMPLES_PER_FRAME 160 +#else // GIOVA48 +#define SAMPLES_PER_FRAME 960 +#endif // GIOVA48 + + +#ifndef GIOVA48 +#define GSMOPEN_FRAME_SIZE 160 +#else //GIOVA48 +#define GSMOPEN_FRAME_SIZE 960 +#endif //GIOVA48 +#define SAMPLERATE_GSMOPEN 8000 + +#ifndef NO_ALSA +#define GSMOPEN_ALSA +#endif // NO_ALSA +#include +#include +#ifndef WIN32 +#include +#include +#include +#endif //WIN32 +//#include + +#ifdef GSMOPEN_ALSA +#define ALSA_PCM_NEW_HW_PARAMS_API +#define ALSA_PCM_NEW_SW_PARAMS_API +#include +#endif /* GSMOPEN_ALSA */ + +#ifdef GSMOPEN_PORTAUDIO +#include "pablio.h" +#undef WANT_SPEEX +#ifdef WANT_SPEEX +#include "speex/speex_preprocess.h" +#include "speex/speex_echo.h" +#endif /* WANT_SPEEX */ +#endif// GSMOPEN_PORTAUDIO + +//#include "celliax_spandsp.h" +#ifndef WIN32 +#include +//#include +//#include +//#include +#endif //WIN32 + +#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES +#include +#include + +#ifdef _MSC_VER +//Windows macro for FD_SET includes a warning C4127: conditional expression is constant +#pragma warning(push) +#pragma warning(disable:4127) +#endif + +#define PROTOCOL_ALSA_VOICEMODEM 4 +#define PROTOCOL_AT 2 +#define PROTOCOL_FBUS2 1 +#define PROTOCOL_NO_SERIAL 3 + +#define AT_BUFSIZ 8192 +//FIXME FIXME FIXME #define AT_MESG_MAX_LENGTH 2048 /* much more than 10 SMSs */ +#define AT_MESG_MAX_LENGTH 2048 /* much more than 10 SMSs */ +//FIXME FIXME FIXME #define AT_MESG_MAX_LINES 256 /* 256 lines, so it can contains the results of AT+CLAC, that gives all the AT commands the phone supports */ +#define AT_MESG_MAX_LINES 20 /* 256 lines, so it can contains the results of AT+CLAC, that gives all the AT commands the phone supports */ + +//#define SAMPLERATE_GSMOPEN 16000 +//#define SAMPLES_PER_FRAME SAMPLERATE_GSMOPEN/50 + +#ifndef GSMOPEN_SVN_VERSION +#define GSMOPEN_SVN_VERSION SWITCH_VERSION_REVISION +#endif /* GSMOPEN_SVN_VERSION */ + +typedef enum { + TFLAG_IO = (1 << 0), + TFLAG_INBOUND = (1 << 1), + TFLAG_OUTBOUND = (1 << 2), + TFLAG_DTMF = (1 << 3), + TFLAG_VOICE = (1 << 4), + TFLAG_HANGUP = (1 << 5), + TFLAG_LINEAR = (1 << 6), + TFLAG_CODEC = (1 << 7), + TFLAG_BREAK = (1 << 8) +} TFLAGS; + +typedef enum { + GFLAG_MY_CODEC_PREFS = (1 << 0) +} GFLAGS; + +#define DEBUGA_GSMOPEN(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "rev "GSMOPEN_SVN_VERSION "[%p|%-7lx][DEBUG_GSMOPEN %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_CALL(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "rev "GSMOPEN_SVN_VERSION "[%p|%-7lx][DEBUG_CALL %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define DEBUGA_PBX(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "rev "GSMOPEN_SVN_VERSION "[%p|%-7lx][DEBUG_PBX %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define ERRORA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "rev "GSMOPEN_SVN_VERSION "[%p|%-7lx][ERRORA %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define WARNINGA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "rev "GSMOPEN_SVN_VERSION "[%p|%-7lx][WARNINGA %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); +#define NOTICA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "rev "GSMOPEN_SVN_VERSION "[%p|%-7lx][NOTICA %-5d][%-10s][%2d,%2d,%2d] " __VA_ARGS__ ); + +#define GSMOPEN_P_LOG (void *)NULL, (unsigned long)55, __LINE__, tech_pvt ? tech_pvt->name ? tech_pvt->name : "none" : "none", -1, tech_pvt ? tech_pvt->interface_state : -1, tech_pvt ? tech_pvt->phone_callflow : -1 + +/*********************************/ +#define GSMOPEN_CAUSE_NORMAL 1 +#define GSMOPEN_CAUSE_FAILURE 2 +#define GSMOPEN_CAUSE_NO_ANSWER 3 +/*********************************/ +#define GSMOPEN_FRAME_DTMF 1 +/*********************************/ +#define GSMOPEN_CONTROL_RINGING 1 +#define GSMOPEN_CONTROL_ANSWER 2 +#define GSMOPEN_CONTROL_HANGUP 3 +#define GSMOPEN_CONTROL_BUSY 4 + +/*********************************/ +#define GSMOPEN_STATE_IDLE 0 +#define GSMOPEN_STATE_DOWN 1 +#define GSMOPEN_STATE_RING 2 +#define GSMOPEN_STATE_DIALING 3 +#define GSMOPEN_STATE_BUSY 4 +#define GSMOPEN_STATE_UP 5 +#define GSMOPEN_STATE_RINGING 6 +#define GSMOPEN_STATE_PRERING 7 +#define GSMOPEN_STATE_ERROR_DOUBLE_CALL 8 +#define GSMOPEN_STATE_SELECTED 9 +#define GSMOPEN_STATE_HANGUP_REQUESTED 10 +#define GSMOPEN_STATE_PREANSWER 11 +/*********************************/ +/* call flow from the device */ +#define CALLFLOW_CALL_IDLE 0 +#define CALLFLOW_CALL_DOWN 1 +#define CALLFLOW_INCOMING_RING 2 +#define CALLFLOW_CALL_DIALING 3 +#define CALLFLOW_CALL_LINEBUSY 4 +#define CALLFLOW_CALL_ACTIVE 5 +#define CALLFLOW_INCOMING_HANGUP 6 +#define CALLFLOW_CALL_RELEASED 7 +#define CALLFLOW_CALL_NOCARRIER 8 +#define CALLFLOW_CALL_INFLUX 9 +#define CALLFLOW_CALL_INCOMING 10 +#define CALLFLOW_CALL_FAILED 11 +#define CALLFLOW_CALL_NOSERVICE 12 +#define CALLFLOW_CALL_OUTGOINGRESTRICTED 13 +#define CALLFLOW_CALL_SECURITYFAIL 14 +#define CALLFLOW_CALL_NOANSWER 15 +#define CALLFLOW_STATUS_FINISHED 16 +#define CALLFLOW_STATUS_CANCELLED 17 +#define CALLFLOW_STATUS_FAILED 18 +#define CALLFLOW_STATUS_REFUSED 19 +#define CALLFLOW_STATUS_RINGING 20 +#define CALLFLOW_STATUS_INPROGRESS 21 +#define CALLFLOW_STATUS_UNPLACED 22 +#define CALLFLOW_STATUS_ROUTING 23 +#define CALLFLOW_STATUS_EARLYMEDIA 24 +#define CALLFLOW_INCOMING_CALLID 25 +#define CALLFLOW_STATUS_REMOTEHOLD 26 +#define CALLFLOW_CALL_REMOTEANSWER 27 +#define CALLFLOW_CALL_HANGUP_REQUESTED 28 + +/*********************************/ + +#define AT_OK 0 +#define AT_ERROR 1 + +#define GSMOPEN_MAX_INTERFACES 64 + +#ifndef WIN32 +struct GSMopenHandles { + //Window gsmopen_win; + //Display *disp; + //Window win; + int currentuserhandle; + int api_connected; + int fdesc[2]; +}; +#else //WIN32 + +struct GSMopenHandles { + HWND win32_hInit_MainWindowHandle; + HWND win32_hGlobal_GSMAPIWindowHandle; + HINSTANCE win32_hInit_ProcessHandle; + char win32_acInit_WindowClassName[128]; + UINT win32_uiGlobal_MsgID_GSMControlAPIAttach; + UINT win32_uiGlobal_MsgID_GSMControlAPIDiscover; + int currentuserhandle; + int api_connected; + switch_file_t *fdesc[2]; +}; + +#endif //WIN32 + +/*! + * \brief structure for storing the results of AT commands, in an array of AT_MESG_MAX_LINES * AT_MESG_MAX_LENGTH chars + */ +struct s_result { + int elemcount; + char result[AT_MESG_MAX_LINES][AT_MESG_MAX_LENGTH]; +}; + +struct ciapa_struct { + int state; + int hangupcause; +}; +typedef struct ciapa_struct ciapa_t; + +struct private_object { + unsigned int flags; + switch_codec_t read_codec; + switch_codec_t write_codec; + switch_frame_t read_frame; + unsigned char databuf[SWITCH_RECOMMENDED_BUFFER_SIZE]; + char session_uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1]; + switch_caller_profile_t *caller_profile; + switch_mutex_t *mutex; + switch_mutex_t *flag_mutex; + + char id[80]; + char name[80]; + char dialplan[80]; + char context[80]; + char dial_regex[256]; + char fail_dial_regex[256]; + char hold_music[256]; + char type[256]; + char X11_display[256]; +#ifdef WIN32 + unsigned short tcp_cli_port; + unsigned short tcp_srv_port; +#else + int tcp_cli_port; + int tcp_srv_port; +#endif + struct GSMopenHandles GSMopenHandles; + + int interface_state; /*!< \brief 'state' of the interface (channel) */ + char language[80]; /*!< \brief default Asterisk dialplan language for this interface */ + char exten[80]; /*!< \brief default Asterisk dialplan extension for this interface */ + int gsmopen_sound_rate; /*!< \brief rate of the sound device, in Hz, eg: 8000 */ + char callid_name[50]; + char callid_number[50]; + double playback_boost; + double capture_boost; + int stripmsd; + char gsmopen_call_id[512]; + int gsmopen_call_ongoing; + char gsmopen_friends[4096]; + char gsmopen_fullname[512]; + char gsmopen_displayname[512]; + int phone_callflow; /*!< \brief 'callflow' of the gsmopen interface (as opposed to phone interface) */ + int gsmopen; /*!< \brief config flag, bool, GSM support on this interface (0 if false, -1 if true) */ + int control_to_send; +#ifdef WIN32 + switch_file_t *audiopipe[2]; + switch_file_t *audiogsmopenpipe[2]; + switch_file_t *gsmopen_sound_capt_fd; /*!< \brief file descriptor for sound capture dev */ +#else /* WIN32 */ + int audiopipe[2]; + int audiogsmopenpipe[2]; + int gsmopen_sound_capt_fd; /*!< \brief file descriptor for sound capture dev */ +#endif /* WIN32 */ + switch_thread_t *tcp_srv_thread; + switch_thread_t *tcp_cli_thread; + switch_thread_t *gsmopen_signaling_thread; + switch_thread_t *gsmopen_api_thread; + //short audiobuf[SAMPLES_PER_FRAME]; + //int audiobuf_is_loaded; + + //int phonebook_listing; + //int phonebook_querying; + //int phonebook_listing_received_calls; + + //int phonebook_first_entry; + //int phonebook_last_entry; + //int phonebook_number_lenght; + //int phonebook_text_lenght; + int gsmopen_dir_entry_extension_prefix; + char gsmopen_user[256]; + char gsmopen_password[256]; + char destination[256]; + struct timeval answer_time; + + struct timeval transfer_time; + char transfer_callid_number[50]; + char gsmopen_transfer_call_id[512]; + int running; + unsigned long ib_calls; + unsigned long ob_calls; + unsigned long ib_failed_calls; + unsigned long ob_failed_calls; + + + char controldevice_name[50]; /*!< \brief name of the serial device controlling the interface, possibly none */ + int controldevprotocol; /*!< \brief which protocol is used for serial control of this interface */ + char controldevprotocolname[50]; /*!< \brief name of the serial device controlling protocol, one of "at" "fbus2" "no_serial" "alsa_voicemodem" */ + int controldevfd; /*!< \brief serial controlling file descriptor for this interface */ + //pthread_t controldev_thread; /*!< \brief serial control thread for this interface, running during the call */ +#ifdef WIN32 + int controldevice_speed; +#else + speed_t controldevice_speed; +#endif// WIN32 + int controldev_dead; + + char at_dial_pre_number[64]; + char at_dial_post_number[64]; + char at_dial_expect[64]; + unsigned int at_early_audio; + char at_hangup[64]; + char at_hangup_expect[64]; + char at_answer[64]; + char at_answer_expect[64]; + unsigned int at_initial_pause; + char at_preinit_1[64]; + char at_preinit_1_expect[64]; + char at_preinit_2[64]; + char at_preinit_2_expect[64]; + char at_preinit_3[64]; + char at_preinit_3_expect[64]; + char at_preinit_4[64]; + char at_preinit_4_expect[64]; + char at_preinit_5[64]; + char at_preinit_5_expect[64]; + unsigned int at_after_preinit_pause; + + char at_postinit_1[64]; + char at_postinit_1_expect[64]; + char at_postinit_2[64]; + char at_postinit_2_expect[64]; + char at_postinit_3[64]; + char at_postinit_3_expect[64]; + char at_postinit_4[64]; + char at_postinit_4_expect[64]; + char at_postinit_5[64]; + char at_postinit_5_expect[64]; + + char at_send_dtmf[64]; + + char at_query_battchg[64]; + char at_query_battchg_expect[64]; + char at_query_signal[64]; + char at_query_signal_expect[64]; + char at_call_idle[64]; + char at_call_incoming[64]; + char at_call_active[64]; + char at_call_failed[64]; + char at_call_calling[64]; + +#define CIEV_STRING_SIZE 64 + char at_indicator_noservice_string[64]; + char at_indicator_nosignal_string[64]; + char at_indicator_lowsignal_string[64]; + char at_indicator_lowbattchg_string[64]; + char at_indicator_nobattchg_string[64]; + char at_indicator_callactive_string[64]; + char at_indicator_nocallactive_string[64]; + char at_indicator_nocallsetup_string[64]; + char at_indicator_callsetupincoming_string[64]; + char at_indicator_callsetupoutgoing_string[64]; + char at_indicator_callsetupremoteringing_string[64]; + + int at_indicator_callp; + int at_indicator_callsetupp; + int at_indicator_roamp; + int at_indicator_battchgp; + int at_indicator_servicep; + int at_indicator_signalp; + + int at_has_clcc; + int at_has_ecam; + + char at_cmgw[16]; + int no_ucs2; + time_t gsmopen_serial_sync_period; + + time_t gsmopen_serial_synced_timestamp; + struct s_result line_array; + + + int unread_sms_msg_id; + int reading_sms_msg; + char sms_message[4800]; + char sms_sender[256]; + char sms_date[256]; + char sms_body[4800]; + char sms_datacodingscheme[256]; + char sms_servicecentreaddress[256]; + int sms_messagetype; + int sms_cnmi_not_supported; + int sms_pdu_not_supported; + //char sms_receiving_program[256]; + + + struct timeval call_incoming_time; + switch_mutex_t *controldev_lock; + + int phonebook_listing; + int phonebook_querying; + int phonebook_listing_received_calls; + + int phonebook_first_entry; + int phonebook_last_entry; + int phonebook_number_lenght; + int phonebook_text_lenght; + FILE *phonebook_writing_fp; + + struct timeval ringtime; + ciapa_t *owner; +#ifdef GSMOPEN_ALSA + snd_pcm_t *alsac; /*!< \brief handle of the ALSA capture audio device */ + snd_pcm_t *alsap; /*!< \brief handle of the ALSA playback audio device */ + char alsacname[50]; /*!< \brief name of the ALSA capture audio device */ + char alsapname[50]; /*!< \brief name of the ALSA playback audio device */ + int alsa_period_size; /*!< \brief ALSA period_size, in byte */ + int alsa_periods_in_buffer; /*!< \brief how many periods in ALSA buffer, to calculate buffer_size */ + unsigned long int alsa_buffer_size; /*!< \brief ALSA buffer_size, in byte */ + int alsawrite_filled; + int alsa_capture_is_mono; + int alsa_play_is_mono; + struct pollfd pfd; +#endif // GSMOPEN_ALSA + + time_t audio_play_reset_timestamp; + int audio_play_reset_period; + + switch_timer_t timer_read; + switch_timer_t timer_write; + teletone_dtmf_detect_state_t dtmf_detect; + switch_time_t old_dtmf_timestamp; + + int no_sound; + +#ifdef GSMOPEN_PORTAUDIO + int speexecho; + int speexpreprocess; + int portaudiocindex; /*!< \brief Index of the Portaudio capture audio device */ + int portaudiopindex; /*!< \brief Index of the Portaudio playback audio device */ + PABLIO_Stream *stream; + +#ifdef WANT_SPEEX + SpeexPreprocessState *preprocess; + SpeexEchoState *echo_state; +#endif// WANT_SPEEX +#endif// GSMOPEN_PORTAUDIO + dtmf_rx_state_t dtmf_state; + int active; + int home_network_registered; + int roaming_registered; + int not_registered; + int got_signal; + char imei[128]; + int requesting_imei; + char imsi[128]; + int requesting_imsi; + int network_creg_not_supported; + char creg[128]; + +}; + +typedef struct private_object private_t; + +void *SWITCH_THREAD_FUNC gsmopen_api_thread_func(switch_thread_t * thread, void *obj); +int gsmopen_audio_read(private_t * tech_pvt); +int gsmopen_audio_init(private_t * tech_pvt); +int gsmopen_signaling_read(private_t * tech_pvt); + +int gsmopen_call(private_t * tech_pvt, char *idest, int timeout); +int gsmopen_senddigit(private_t * tech_pvt, char digit); + +void *gsmopen_do_tcp_srv_thread_func(void *obj); +void *SWITCH_THREAD_FUNC gsmopen_do_tcp_srv_thread(switch_thread_t * thread, void *obj); + +void *gsmopen_do_tcp_cli_thread_func(void *obj); +void *SWITCH_THREAD_FUNC gsmopen_do_tcp_cli_thread(switch_thread_t * thread, void *obj); + +void *gsmopen_do_gsmopenapi_thread_func(void *obj); +void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t * thread, void *obj); +int dtmf_received(private_t * tech_pvt, char *value); +int start_audio_threads(private_t * tech_pvt); +int new_inbound_channel(private_t * tech_pvt); +int outbound_channel_answered(private_t * tech_pvt); +//int gsmopen_signaling_write(private_t * tech_pvt, char *msg_to_gsmopen); +#if defined(WIN32) && !defined(__CYGWIN__) +int gsmopen_pipe_read(switch_file_t * pipe, short *buf, int howmany); +int gsmopen_pipe_write(switch_file_t * pipe, short *buf, int howmany); +/* Visual C do not have strsep ? */ +char *strsep(char **stringp, const char *delim); +#else +int gsmopen_pipe_read(int pipe, short *buf, int howmany); +int gsmopen_pipe_write(int pipe, short *buf, int howmany); +#endif /* WIN32 */ +int gsmopen_close_socket(unsigned int fd); +private_t *find_available_gsmopen_interface_rr(private_t * tech_pvt_calling); +int remote_party_is_ringing(private_t * tech_pvt); +int remote_party_is_early_media(private_t * tech_pvt); +//int gsmopen_answer(private_t * tech_pvt, char *id, char *value); +#if 0 +int gsmopen_transfer(private_t * tech_pvt, char *id, char *value); +#endif //0 +int gsmopen_socket_create_and_bind(private_t * tech_pvt, int *which_port); + + + + + +void *gsmopen_do_controldev_thread(void *data); +#ifdef WIN32 +int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed); +#else +int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed); +#endif //WIN32 +int gsmopen_serial_monitor(private_t * tech_pvt); +int gsmopen_serial_sync(private_t * tech_pvt); +int gsmopen_serial_sync_AT(private_t * tech_pvt); +int gsmopen_serial_config(private_t * tech_pvt); +int gsmopen_serial_config_AT(private_t * tech_pvt); + +#define gsmopen_serial_write_AT_expect(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 2) +#define gsmopen_serial_write_AT_expect_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 2) +#define gsmopen_serial_write_AT_expect_noexpcr_tout(P, D, S, T) gsmopen_serial_write_AT_expect1(P, D, S, 0, T) +// 20.5 sec timeout, used for querying the SIM and sending SMSs +#define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 20) +#define gsmopen_serial_write_AT_expect_longtime_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 20) +int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data); +int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data); +int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data); +int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *data); +int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data); +int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds); +int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, int expect_crlf, int seconds); +int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf); +int gsmopen_serial_read(private_t * tech_pvt); +#ifdef NOTDEF +int gsmopen_serial_getstatus(private_t * tech_pvt); +int gsmopen_serial_hangup(private_t * tech_pvt); +int gsmopen_serial_answer(private_t * tech_pvt); +int gsmopen_serial_answer_AT(private_t * tech_pvt); +int gsmopen_serial_hangup_AT(private_t * tech_pvt); +int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr); +int gsmopen_serial_getstatus_AT(private_t * tech_pvt); +#endif // NOTDEF +#define RESULT_FAILURE 0 +#define RESULT_SUCCESS 1 +int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft); +int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft); +//#define PUSHA_UNLOCKA(x) pthread_cleanup_push(gsmopen_unlocka_log, (void *) x); +//#define POPPA_UNLOCKA(x) pthread_cleanup_pop(0); + +#define PUSHA_UNLOCKA(x) if(option_debug > 100) ERRORA("PUSHA_UNLOCKA: %p\n", GSMOPEN_P_LOG, (void *)x); +#define POPPA_UNLOCKA(x) if(option_debug > 100) ERRORA("POPPA_UNLOCKA: %p\n", GSMOPEN_P_LOG, (void *)x); +//#define LOKKA(x) if(option_debug > 100) ERRORA("LOKKA: %p\n", GSMOPEN_P_LOG, (void *)x); +#define LOKKA(x) switch_mutex_lock(x); +#define UNLOCKA(x) switch_mutex_unlock(x); +//#define UNLOCKA(x) if(option_debug > 100) ERRORA("UNLOCKA: %p\n", GSMOPEN_P_LOG, (void *)x); + +#define gsmopen_queue_control(x, y) ERRORA("gsmopen_queue_control: %p, %d\n", GSMOPEN_P_LOG, (void *)x, y); + +#define ast_setstate(x, y) ERRORA("ast_setstate: %p, %d\n", GSMOPEN_P_LOG, (void *)x, y); + +int gsmopen_serial_read(private_t * tech_pvt); +int gsmopen_answer(private_t * tech_pvt); +int gsmopen_serial_answer(private_t * tech_pvt); +int gsmopen_serial_answer_AT(private_t * tech_pvt); +int gsmopen_serial_hangup(private_t * tech_pvt); +int gsmopen_serial_hangup_AT(private_t * tech_pvt); +int gsmopen_hangup(private_t * tech_pvt); +int gsmopen_serial_call(private_t * tech_pvt, char *dstr); +int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr); +int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text); + +#ifdef GSMOPEN_ALSA +int alsa_init(private_t * tech_pvt); +int alsa_shutdown(private_t * tech_pvt); +snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream); +int alsa_write(private_t * tech_pvt, short *data, int datalen); +int alsa_read(private_t * tech_pvt, short *data, int datalen); + +#endif /* GSMOPEN_ALSA */ + + +void gsmopen_store_boost(char *s, double *boost); +int gsmopen_sound_boost(void *data, int samples_num, double boost); +int sms_incoming(private_t * tech_pvt); +int gsmopen_ring(private_t * tech_pvt); + +int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft); +int gsmopen_serial_getstatus_AT(private_t * tech_pvt); + + +#ifdef GSMOPEN_PORTAUDIO + +int gsmopen_portaudio_devlist(private_t *tech_pvt); + +int gsmopen_portaudio_init(private_t *tech_pvt); + +int gsmopen_portaudio_write(private_t * tech_pvt, short *data, int datalen); + +int gsmopen_portaudio_read(private_t * tech_pvt, short *data, int datalen); + + +int gsmopen_portaudio_shutdown(private_t *tech_pvt); + +#endif // GSMOPEN_PORTAUDIO +int dump_event(private_t *tech_pvt); +int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message); +int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message); diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.cpp new file mode 100644 index 0000000000..6834a1d880 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.cpp @@ -0,0 +1,4004 @@ +#include "gsmopen.h" +//#include + +#ifndef NO_GSMLIB +#include +#ifdef WIN32 +#include +#else +#include +#endif +#include +#include + + +using namespace std; +using namespace gsmlib; +#endif// NO_GSMLIB + +#ifdef ASTERISK +#define gsmopen_sleep usleep +#define gsmopen_strncpy strncpy +#define tech_pvt p +extern int gsmopen_debug; +extern char *gsmopen_console_active; +#else /* FREESWITCH */ +#define gsmopen_sleep switch_sleep +#define gsmopen_strncpy switch_copy_string +extern switch_memory_pool_t *gsmopen_module_pool; +extern switch_endpoint_interface_t *gsmopen_endpoint_interface; +#endif /* ASTERISK */ +//int samplerate_gsmopen = SAMPLERATE_GSMOPEN; + +extern int running; +int gsmopen_dir_entry_extension = 1; + +int option_debug = 100; + + +#ifdef WIN32 +#define GSMLIBGIO +#else //WIN32 +#undef GSMLIBGIO +#endif //WIN32 + +#ifdef WIN32 +/***************/ +// from http://www.openasthra.com/c-tidbits/gettimeofday-function-for-windows/ + +#include + +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 +#else /* */ +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL +#endif /* */ +struct sk_timezone { + int tz_minuteswest; /* minutes W of Greenwich */ + int tz_dsttime; /* type of dst correction */ +}; +int gettimeofday(struct timeval *tv, struct sk_timezone *tz) +{ + FILETIME ft; + unsigned __int64 tmpres = 0; + static int tzflag; + if (NULL != tv) { + GetSystemTimeAsFileTime(&ft); + tmpres |= ft.dwHighDateTime; + tmpres <<= 32; + tmpres |= ft.dwLowDateTime; + + /*converting file time to unix epoch */ + tmpres /= 10; /*convert into microseconds */ + tmpres -= DELTA_EPOCH_IN_MICROSECS; + tv->tv_sec = (long) (tmpres / 1000000UL); + tv->tv_usec = (long) (tmpres % 1000000UL); + } + if (NULL != tz) { + if (!tzflag) { + _tzset(); + tzflag++; + } + tz->tz_minuteswest = _timezone / 60; + tz->tz_dsttime = _daylight; + } + return 0; +} + +/***************/ +#endif /* WIN32 */ + +#ifdef GSMOPEN_PORTAUDIO +#include "pablio.h" + +#ifndef GIOVA48 +#define SAMPLES_PER_FRAME 160 +#else // GIOVA48 +#define SAMPLES_PER_FRAME 960 +#endif // GIOVA48 + +int gsmopen_portaudio_devlist(private_t *tech_pvt) +{ + int i, numDevices; + const PaDeviceInfo *deviceInfo; + + numDevices = Pa_GetDeviceCount(); + if (numDevices < 0) { + return 0; + } + for (i = 0; i < numDevices; i++) { + deviceInfo = Pa_GetDeviceInfo(i); + NOTICA + ("Found PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", + GSMOPEN_P_LOG, i, deviceInfo->name, deviceInfo->maxInputChannels, + deviceInfo->maxOutputChannels); + } + + return numDevices; +} + +int gsmopen_portaudio_init(private_t *tech_pvt) +{ + PaError err; + int c; + PaStreamParameters inputParameters, outputParameters; + int numdevices; + const PaDeviceInfo *deviceInfo; + +#ifndef GIOVA48 + setenv("PA_ALSA_PLUGHW", "1", 1); +#endif // GIOVA48 + + err = Pa_Initialize(); + if (err != paNoError) + return err; + + numdevices = gsmopen_portaudio_devlist(tech_pvt); + + if (tech_pvt->portaudiocindex > (numdevices - 1)) { + ERRORA("Portaudio Capture id=%d is out of range: valid id are from 0 to %d\n", + GSMOPEN_P_LOG, tech_pvt->portaudiocindex, (numdevices - 1)); + return -1; + } + + if (tech_pvt->portaudiopindex > (numdevices - 1)) { + ERRORA("Portaudio Playback id=%d is out of range: valid id are from 0 to %d\n", + GSMOPEN_P_LOG, tech_pvt->portaudiopindex, (numdevices - 1)); + return -1; + } + //inputParameters.device = 0; + if (tech_pvt->portaudiocindex != -1) { + inputParameters.device = tech_pvt->portaudiocindex; + } else { + inputParameters.device = Pa_GetDefaultInputDevice(); + } + deviceInfo = Pa_GetDeviceInfo(inputParameters.device); + NOTICA + ("Using INPUT PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", + GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, + deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); + if (deviceInfo->maxInputChannels == 0) { + ERRORA + ("No INPUT channels on device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", + GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, + deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); + return -1; + } + inputParameters.channelCount = 1; + inputParameters.sampleFormat = paInt16; + //inputParameters.suggestedLatency = Pa_GetDeviceInfo(inputParameters.device)->defaultHighInputLatency; + inputParameters.suggestedLatency = 0.1; + inputParameters.hostApiSpecificStreamInfo = NULL; + + //outputParameters.device = 3; + if (tech_pvt->portaudiopindex != -1) { + outputParameters.device = tech_pvt->portaudiopindex; + } else { + outputParameters.device = Pa_GetDefaultOutputDevice(); + } + deviceInfo = Pa_GetDeviceInfo(outputParameters.device); + NOTICA + ("Using OUTPUT PORTAUDIO device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", + GSMOPEN_P_LOG, outputParameters.device, deviceInfo->name, + deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); + if (deviceInfo->maxOutputChannels == 0) { + ERRORA + ("No OUTPUT channels on device: id=%d\tname=%s\tmax input channels=%d\tmax output channels=%d\n", + GSMOPEN_P_LOG, inputParameters.device, deviceInfo->name, + deviceInfo->maxInputChannels, deviceInfo->maxOutputChannels); + return -1; + } +#ifndef GIOVA48 + outputParameters.channelCount = 1; +#else // GIOVA48 + outputParameters.channelCount = 2; +#endif // GIOVA48 + outputParameters.sampleFormat = paInt16; + //outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultHighOutputLatency; + outputParameters.suggestedLatency = 0.1; + outputParameters.hostApiSpecificStreamInfo = NULL; + +/* build the pipe that will be polled on by pbx */ + c = pipe(tech_pvt->audiopipe); + if (c) { + ERRORA("Unable to create audio pipe\n", GSMOPEN_P_LOG); + return -1; + } + fcntl(tech_pvt->audiopipe[0], F_SETFL, O_NONBLOCK); + fcntl(tech_pvt->audiopipe[1], F_SETFL, O_NONBLOCK); + + err = +#ifndef GIOVA48 + OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 8000, + paClipOff|paDitherOff, SAMPLES_PER_FRAME, 0); + //&tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner); + +#else // GIOVA48 + OpenAudioStream(&tech_pvt->stream, &inputParameters, &outputParameters, 48000, + paDitherOff | paClipOff, SAMPLES_PER_FRAME, tech_pvt->audiopipe[1], + &tech_pvt->speexecho, &tech_pvt->speexpreprocess, &tech_pvt->owner); + + +#endif// GIOVA48 + if (err != paNoError) { + ERRORA("Unable to open audio stream: %s\n", GSMOPEN_P_LOG, Pa_GetErrorText(err)); + return -1; + } + +/* the pipe is our audio fd for pbx to poll on */ + tech_pvt->gsmopen_sound_capt_fd = tech_pvt->audiopipe[0]; + + return 0; +} +//int gsmopen_portaudio_write(private_t *tech_pvt, struct ast_frame *f) +int gsmopen_portaudio_write(private_t * tech_pvt, short *data, int datalen) +{ + int samples; +#ifdef GIOVA48 + //short buf[GSMOPEN_FRAME_SIZE * 2]; + short buf[3840]; + short *buf2; + + //ERRORA("1 f->datalen=: %d\n", GSMOPEN_P_LOG, f->datalen); + + + + + memset(buf, '\0', GSMOPEN_FRAME_SIZE *2); + + buf2 = f->data; + + int i=0, a=0; + + for(i=0; i< f->datalen / sizeof(short); i++){ +//stereo, 2 chan 48 -> mono 8 + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + buf[a] = buf2[i]; + a++; + /* + */ + } + f->data = &buf; + f->datalen = f->datalen * 6; + //ERRORA("2 f->datalen=: %d\n", GSMOPEN_P_LOG, f->datalen); + //f->datalen = f->datalen; +#endif // GIOVA48 + + + samples = + WriteAudioStream(tech_pvt->stream, (short *) data, (int) (datalen / sizeof(short)), &tech_pvt->timer_write); + + if (samples != (int) (datalen / sizeof(short))) + ERRORA("WriteAudioStream wrote: %d of %d\n", GSMOPEN_P_LOG, samples, + (int) (datalen / sizeof(short))); + + return samples; +} +//struct ast_frame *gsmopen_portaudio_read(private_t *tech_pvt) +#define AST_FRIENDLY_OFFSET 0 +int gsmopen_portaudio_read(private_t * tech_pvt, short *data, int datalen) +{ +#if 0 + //static struct ast_frame f; + static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; + short *buf; + static short __buf2[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; + short *buf2; + int samples; + //char c; + + memset(__buf, '\0', (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); + + buf = __buf + AST_FRIENDLY_OFFSET / 2; + + memset(__buf2, '\0', (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2)); + + buf2 = __buf2 + AST_FRIENDLY_OFFSET / 2; + +#if 0 + f.frametype = AST_FRAME_NULL; + f.subclass = 0; + f.samples = 0; + f.datalen = 0; + +#ifdef ASTERISK_VERSION_1_6_1 + f.data.ptr = NULL; +#else + f.data = NULL; +#endif /* ASTERISK_VERSION_1_6_1 */ + f.offset = 0; + f.src = gsmopen_type; + f.mallocd = 0; + f.delivery.tv_sec = 0; + f.delivery.tv_usec = 0; +#endif //0 + + //if ((samples = ReadAudioStream(tech_pvt->stream, buf, SAMPLES_PER_FRAME)) == 0) + //if ((samples = ReadAudioStream(tech_pvt->stream, data, datalen/sizeof(short))) == 0) + if (samples = ReadAudioStream(tech_pvt->stream, (short *)data, datalen, &tech_pvt->timer_read) == 0) { + //do nothing + } else { +#ifdef GIOVA48 + int i=0, a=0; + + samples = samples / 6; + for(i=0; i< samples; i++){ + buf2[i] = buf[a]; + a = a + 6; //mono, 1 chan 48 -> 8 + } + buf = buf2; + +#if 0 + /* A real frame */ + f.frametype = AST_FRAME_VOICE; + f.subclass = AST_FORMAT_SLINEAR; + f.samples = GSMOPEN_FRAME_SIZE/6; + f.datalen = GSMOPEN_FRAME_SIZE * 2/6; +#endif //0 +#else// GIOVA48 +#if 0 + /* A real frame */ + f.frametype = AST_FRAME_VOICE; + f.subclass = AST_FORMAT_SLINEAR; + f.samples = GSMOPEN_FRAME_SIZE; + f.datalen = GSMOPEN_FRAME_SIZE * 2; +#endif //0 +#endif// GIOVA48 + +#if 0 +#ifdef ASTERISK_VERSION_1_6_1 + f.data.ptr = buf; +#else + f.data = buf; +#endif /* ASTERISK_VERSION_1_6_1 */ + f.offset = AST_FRIENDLY_OFFSET; + f.src = gsmopen_type; + f.mallocd = 0; +#endif //0 + } + +#if 0 + read(tech_pvt->audiopipe[0], &c, 1); + + return &f; +#endif //0 +#endif //0 + + int samples; + samples = ReadAudioStream(tech_pvt->stream, (short *)data, datalen, &tech_pvt->timer_read); + //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); + + return samples; +} +int gsmopen_portaudio_shutdown(private_t *tech_pvt) +{ + PaError err; + + err = CloseAudioStream(tech_pvt->stream); + + if (err != paNoError) + ERRORA("not able to CloseAudioStream\n", GSMOPEN_P_LOG); + + Pa_Terminate(); + return 0; +} + + + + +#endif // GSMOPEN_PORTAUDIO +#ifndef GSMLIBGIO +int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) +{ + int fd; + int rt; + struct termios tp; + unsigned int status = 0; + unsigned int flags = TIOCM_DTR; + +/* if there is a file descriptor, close it. But it is probably just an old value, so don't check for close success*/ + fd = tech_pvt->controldevfd; + if (fd) { + close(fd); + } +/* open the serial port */ +//#ifdef __CYGWIN__ + fd = open(tech_pvt->controldevice_name, O_RDWR | O_NOCTTY | O_NONBLOCK); + sleep(1); + close(fd); +//#endif /* __CYGWIN__ */ + fd = open(tech_pvt->controldevice_name, O_RDWR | O_NOCTTY | O_NONBLOCK); + if (fd == -1) { + perror("open error "); + DEBUGA_GSMOPEN("serial error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + tech_pvt->controldevfd = fd; + return -1; + } +/* flush it */ + rt = tcflush(fd, TCIFLUSH); + if (rt == -1) { + ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +/* attributes */ + tp.c_cflag = B0 | CS8 | CLOCAL | CREAD | HUPCL; + tp.c_iflag = IGNPAR; + tp.c_cflag &= ~CRTSCTS; + tp.c_oflag = 0; + tp.c_lflag = 0; + tp.c_cc[VMIN] = 1; + tp.c_cc[VTIME] = 0; +/* set controldevice_speed */ + rt = cfsetispeed(&tp, tech_pvt->controldevice_speed); + if (rt == -1) { + ERRORA("serial error: %s, speed was: %d", GSMOPEN_P_LOG, strerror(errno), tech_pvt->controldevice_speed); + } + rt = cfsetospeed(&tp, tech_pvt->controldevice_speed); + if (rt == -1) { + ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +/* set port attributes */ + if (tcsetattr(fd, TCSADRAIN, &tp) == -1) { + ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } + rt = tcsetattr(fd, TCSANOW, &tp); + if (rt == -1) { + ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); + } +#ifndef __CYGWIN__ + ioctl(fd, TIOCMGET, &status); + status |= TIOCM_DTR; /* Set DTR high */ + status &= ~TIOCM_RTS; /* Set RTS low */ + ioctl(fd, TIOCMSET, &status); + ioctl(fd, TIOCMGET, &status); + ioctl(fd, TIOCMBIS, &flags); + flags = TIOCM_RTS; + ioctl(fd, TIOCMBIC, &flags); + ioctl(fd, TIOCMGET, &status); +#else /* __CYGWIN__ */ + ioctl(fd, TIOCMGET, &status); + status |= TIOCM_DTR; /* Set DTR high */ + status &= ~TIOCM_RTS; /* Set RTS low */ + ioctl(fd, TIOCMSET, &status); +#endif /* __CYGWIN__ */ + tech_pvt->controldevfd = fd; + DEBUGA_GSMOPEN("Syncing Serial, fd=%d, protocol=%d\n", GSMOPEN_P_LOG, fd, tech_pvt->controldevprotocol); + rt = gsmopen_serial_sync(tech_pvt); + if (rt == -1) { + ERRORA("Serial init error\n", GSMOPEN_P_LOG); + return -1; + } + return (fd); +} +#else //GSMLIBGIO +#ifdef WIN32 +int gsmopen_serial_init(private_t * tech_pvt, int controldevice_speed) +#else +int gsmopen_serial_init(private_t * tech_pvt, speed_t controldevice_speed) +#endif //WIN32 +{ + int i; + string ciapa; + SMSMessageRef sms; + char content2[1000]; + int size; + +#ifdef WIN32 + Ref port = new Win32SerialPort((string) tech_pvt->controldevice_name, 38400); +#else + //Ref port = new UnixSerialPort((string)argv[1], B38400); + Ref < Port > port = new UnixSerialPort((string) tech_pvt->controldevice_name, B115200); +#endif + MeTa m(port); + + //cout << "Creating GsmAt object" << endl; + Ref gsmat = new GsmAt(m); + + //cout << "Using GsmAt object" << endl; + //cout << gsmat->chat("AT", "OK", false, false) << endl; + //cout << gsmat->chat("D3472665618;") << endl; + gsmat->putLine("AT+cgmm", true); + for (i = 0; i < 4; i++) { + ciapa = gsmat->getLine(); + //cout << "PRESO: |||" << ciapa << "|||" << endl; + NOTICA("PRESO %d |||%s|||\n", GSMOPEN_P_LOG, i, ciapa.c_str()); + //gsmopen_sleep(5000); + } + + sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 + NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 + NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 + NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 + NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + +#if 0 + size = MultiByteToWideChar(CP_OEMCP, 0, username, strlen(username)+1, UserName, 0); + UserName=(wchar_t*)GlobalAlloc(GME­ M_ZEROINIT, size); + ret = MultiByteToWideChar(CP_OEMCP, 0, username, strlen(username)+1, UserName, size); + if(ret == 0) + getError(GetLastError()); +#endif //0 + return (-1); +} + +#endif //GSMLIBGIO + + +int gsmopen_serial_read(private_t * tech_pvt) +{ + if (tech_pvt->controldevprotocol == PROTOCOL_AT) + return gsmopen_serial_read_AT(tech_pvt, 0, 100000, 0, NULL, 1); // a 10th of a second timeout +#ifdef GSMOPEN_FBUS2 + if (tech_pvt->controldevprotocol == PROTOCOL_FBUS2) + return gsmopen_serial_read_FBUS2(tech_pvt); +#endif /* GSMOPEN_FBUS2 */ +#ifdef GSMOPEN_CVM + if (tech_pvt->controldevprotocol == PROTOCOL_CVM_BUSMAIL) + return gsmopen_serial_read_CVM_BUSMAIL(tech_pvt); +#endif /* GSMOPEN_CVM */ + return -1; +} + + +int gsmopen_serial_sync(private_t * tech_pvt) +{ + if (tech_pvt->controldevprotocol == PROTOCOL_AT) + return gsmopen_serial_sync_AT(tech_pvt); +#ifdef GSMOPEN_FBUS2 + if (tech_pvt->controldevprotocol == PROTOCOL_FBUS2) + return gsmopen_serial_sync_FBUS2(tech_pvt); +#endif /* GSMOPEN_FBUS2 */ +#ifdef GSMOPEN_CVM + if (tech_pvt->controldevprotocol == PROTOCOL_CVM_BUSMAIL) + return gsmopen_serial_sync_CVM_BUSMAIL(tech_pvt); +#endif /* GSMOPEN_CVM */ + + return -1; +} + +int gsmopen_serial_config(private_t * tech_pvt) +{ +#ifndef NO_GSMLIB + SMSMessageRef sms; + char content2[1000]; + //sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 + //sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 + //sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 + sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + //sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 + //NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + + } + //NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + //NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); +#endif// NO_GSMLIB + + if (tech_pvt->controldevprotocol == PROTOCOL_AT) + return gsmopen_serial_config_AT(tech_pvt); +#ifdef GSMOPEN_FBUS2 + if (tech_pvt->controldevprotocol == PROTOCOL_FBUS2) + return gsmopen_serial_config_FBUS2(tech_pvt); +#endif /* GSMOPEN_FBUS2 */ +#ifdef GSMOPEN_CVM + if (tech_pvt->controldevprotocol == PROTOCOL_CVM_BUSMAIL) + return gsmopen_serial_config_CVM_BUSMAIL(tech_pvt); +#endif /* GSMOPEN_CVM */ + + return -1; +} + +int gsmopen_serial_config_AT(private_t * tech_pvt) +{ + int res; + char at_command[5]; + int i; + +/* initial_pause? */ + if (tech_pvt->at_initial_pause) { + DEBUGA_GSMOPEN("sleeping for %d usec\n", GSMOPEN_P_LOG, tech_pvt->at_initial_pause); + gsmopen_sleep(tech_pvt->at_initial_pause); + } + +/* go until first empty preinit string, or last preinit string */ + while (1) { + + if (strlen(tech_pvt->at_preinit_1)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_1, tech_pvt->at_preinit_1_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_preinit_1, tech_pvt->at_preinit_1_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_preinit_2)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_2, tech_pvt->at_preinit_2_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_preinit_2, tech_pvt->at_preinit_2_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_preinit_3)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_3, tech_pvt->at_preinit_3_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_preinit_3, tech_pvt->at_preinit_3_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_preinit_4)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_4, tech_pvt->at_preinit_4_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_preinit_4, tech_pvt->at_preinit_4_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_preinit_5)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_5, tech_pvt->at_preinit_5_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_preinit_5, tech_pvt->at_preinit_5_expect); + } + } else { + break; + } + + break; + } + +/* after_preinit_pause? */ + if (tech_pvt->at_after_preinit_pause) { + DEBUGA_GSMOPEN("sleeping for %d usec\n", GSMOPEN_P_LOG, tech_pvt->at_after_preinit_pause); + gsmopen_sleep(tech_pvt->at_after_preinit_pause); + } + + /* phone, brother, art you alive? */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT"); + if (res) { + ERRORA("no response to AT\n", GSMOPEN_P_LOG); + return -1; + } + /* for motorola, bring it back to "normal" mode if it happens to be in another mode */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+mode=0"); + if (res) { + DEBUGA_GSMOPEN("AT+mode=0 does not get OK from the phone. If it is NOT Motorola," " no problem.\n", GSMOPEN_P_LOG); + } + gsmopen_sleep(50000); + /* for motorola end */ + + /* reset AT configuration to phone default */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "ATZ"); + if (res) { + DEBUGA_GSMOPEN("ATZ failed\n", GSMOPEN_P_LOG); + } + + /* disable AT command echo */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "ATE0"); + if (res) { + DEBUGA_GSMOPEN("ATE0 failed\n", GSMOPEN_P_LOG); + } + + /* disable extended error reporting */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMEE=0"); + if (res) { + DEBUGA_GSMOPEN("AT+CMEE failed\n", GSMOPEN_P_LOG); + } + + /* various phone manufacturer identifier */ + for (i = 0; i < 10; i++) { + memset(at_command, 0, sizeof(at_command)); + sprintf(at_command, "ATI%d", i); + res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); + if (res) { + DEBUGA_GSMOPEN("ATI%d command failed, continue\n", GSMOPEN_P_LOG, i); + } + } + + /* phone manufacturer */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CGMI"); + if (res) { + DEBUGA_GSMOPEN("AT+CGMI failed\n", GSMOPEN_P_LOG); + } + + /* phone model */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CGMM"); + if (res) { + DEBUGA_GSMOPEN("AT+CGMM failed\n", GSMOPEN_P_LOG); + } + + /* signal network registration with a +CREG unsolicited msg */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CREG=1"); + if (res) { + DEBUGA_GSMOPEN("AT+CREG=1 failed\n", GSMOPEN_P_LOG); + tech_pvt->network_creg_not_supported = 1; + } + if(!tech_pvt->network_creg_not_supported){ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CREG?"); + if (res) { + DEBUGA_GSMOPEN("AT+CREG? failed\n", GSMOPEN_P_LOG); + } + } + /* query signal strength */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSQ"); + if (res) { + DEBUGA_GSMOPEN("AT+CSQ failed\n", GSMOPEN_P_LOG); + } + /* IMEI */ + tech_pvt->requesting_imei = 1; + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+GSN"); + tech_pvt->requesting_imei = 0; + if (res) { + DEBUGA_GSMOPEN("AT+GSN failed\n", GSMOPEN_P_LOG); + tech_pvt->requesting_imei = 1; + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CGSN"); + tech_pvt->requesting_imei = 0; + if (res) { + DEBUGA_GSMOPEN("AT+CGSN failed\n", GSMOPEN_P_LOG); + } + } + /* IMSI */ + tech_pvt->requesting_imsi = 1; + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CIMI"); + tech_pvt->requesting_imsi = 0; + if (res) { + DEBUGA_GSMOPEN("AT+CIMI failed\n", GSMOPEN_P_LOG); + } + + /* signal incoming SMS with a +CMTI unsolicited msg */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=3,1,0,0,0"); + if (res) { + DEBUGA_GSMOPEN("AT+CNMI=3,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); + tech_pvt->sms_cnmi_not_supported = 1; + tech_pvt->gsmopen_serial_sync_period = 30; //FIXME in config + } + /* what is the Message Center address (number) to which the SMS has to be sent? */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCA?"); + if (res) { + DEBUGA_GSMOPEN("AT+CSCA? failed, continue\n", GSMOPEN_P_LOG); + } + /* what is the Message Format of SMSs? */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF?"); + if (res) { + DEBUGA_GSMOPEN("AT+CMGF? failed, continue\n", GSMOPEN_P_LOG); + } +#ifdef NO_GSMLIB + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); + if (res) { + ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); + } + tech_pvt->sms_pdu_not_supported = 1; +#else // NO_GSMLIB + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); + if (res) { + WARNINGA("Error setting SMS sending mode to PDU on the cellphone, falling back to TEXT mode. Continuing\n", GSMOPEN_P_LOG); + tech_pvt->sms_pdu_not_supported = 1; + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); + if (res) { + ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); + } + } +#endif // NO_GSMLIB + /* what is the Charset of SMSs? */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS?"); + if (res) { + DEBUGA_GSMOPEN("AT+CSCS? failed, continue\n", GSMOPEN_P_LOG); + } + + tech_pvt->no_ucs2 = 0; + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"UCS2\""); + if (res) { + WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG); + tech_pvt->no_ucs2 = 1; + } + + if (tech_pvt->no_ucs2) { + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); + if (res) { + WARNINGA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,16"); //"flash", class 0 sms 7 bit + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,0"); //normal, 7 bit message + if (res) { + WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); + } + } else { + //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,20"); //"flash", class 0 sms 16 bit unicode + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,8"); //unicode, 16 bit message + if (res) { + WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); + } + } + + /* is the unsolicited reporting of mobile equipment event supported? */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMER=?"); + if (res) { + DEBUGA_GSMOPEN("AT+CMER=? failed, continue\n", GSMOPEN_P_LOG); + } + /* request unsolicited reporting of mobile equipment indicators' events, to be screened by categories reported by +CIND=? */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMER=3,0,0,1"); + if (res) { + DEBUGA_GSMOPEN("AT+CMER=? failed, continue\n", GSMOPEN_P_LOG); + } + + /* is the solicited reporting of mobile equipment indications supported? */ + + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CIND=?"); + if (res) { + DEBUGA_GSMOPEN("AT+CIND=? failed, continue\n", GSMOPEN_P_LOG); + } + + /* is the unsolicited reporting of call monitoring supported? sony-ericsson specific */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT*ECAM=?"); + if (res) { + DEBUGA_GSMOPEN("AT*ECAM=? failed, continue\n", GSMOPEN_P_LOG); + } + /* enable the unsolicited reporting of call monitoring. sony-ericsson specific */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT*ECAM=1"); + if (res) { + DEBUGA_GSMOPEN("AT*ECAM=1 failed, continue\n", GSMOPEN_P_LOG); + tech_pvt->at_has_ecam = 0; + } else { + tech_pvt->at_has_ecam = 1; + } + + /* disable unsolicited signaling of call list */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CLCC=0"); + if (res) { + DEBUGA_GSMOPEN("AT+CLCC=0 failed, continue\n", GSMOPEN_P_LOG); + tech_pvt->at_has_clcc = 0; + } else { + tech_pvt->at_has_clcc = 1; + } + + /* give unsolicited caller id when incoming call */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CLIP=1"); + if (res) { + DEBUGA_GSMOPEN("AT+CLIP failed, continue\n", GSMOPEN_P_LOG); + } + /* for motorola */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+MCST=1"); /* motorola call control codes + (to know when call is disconnected (they + don't give you "no carrier") */ + if (res) { + DEBUGA_GSMOPEN("AT+MCST=1 does not get OK from the phone. If it is NOT Motorola," " no problem.\n", GSMOPEN_P_LOG); + } + /* for motorola end */ + +/* go until first empty postinit string, or last postinit string */ + while (1) { + + if (strlen(tech_pvt->at_postinit_1)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_postinit_1, tech_pvt->at_postinit_1_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_postinit_1, tech_pvt->at_postinit_1_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_postinit_2)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_postinit_2, tech_pvt->at_postinit_2_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_postinit_2, tech_pvt->at_postinit_2_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_postinit_3)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_postinit_3, tech_pvt->at_postinit_3_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_postinit_3, tech_pvt->at_postinit_3_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_postinit_4)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_postinit_4, tech_pvt->at_postinit_4_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_postinit_4, tech_pvt->at_postinit_4_expect); + } + } else { + break; + } + + if (strlen(tech_pvt->at_postinit_5)) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_postinit_5, tech_pvt->at_postinit_5_expect); + if (res) { + DEBUGA_GSMOPEN("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, tech_pvt->at_postinit_5, tech_pvt->at_postinit_5_expect); + } + } else { + break; + } + + break; + } + + return 0; +} + + +int gsmopen_serial_sync_AT(private_t * tech_pvt) +{ + gsmopen_sleep(10000); /* 10msec */ + time(&tech_pvt->gsmopen_serial_synced_timestamp); + return 0; +} +int gsmopen_serial_read_AT(private_t * tech_pvt, int look_for_ack, int timeout_usec, int timeout_sec, const char *expected_string, int expect_crlf) +{ + int select_err = 1; + int res; + fd_set read_fds; + struct timeval timeout; + char tmp_answer[AT_BUFSIZ]; + char tmp_answer2[AT_BUFSIZ]; + char *tmp_answer_ptr; + char *last_line_ptr; + int i = 0; + int read_count = 0; + int la_counter = 0; + int at_ack = -1; + int la_read = 0; + + if(!running || !tech_pvt->running){ + return -1; + } + + FD_ZERO(&read_fds); + FD_SET(tech_pvt->controldevfd, &read_fds); + + //NOTICA (" INSIDE this gsmopen_serial_device %s \n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tmp_answer_ptr = tmp_answer; + memset(tmp_answer, 0, sizeof(char) * AT_BUFSIZ); + + timeout.tv_sec = timeout_sec; + timeout.tv_usec = timeout_usec; + PUSHA_UNLOCKA(tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + + while ((!tech_pvt->controldev_dead) && ((select_err = select(tech_pvt->controldevfd + 1, &read_fds, NULL, NULL, &timeout)) > 0)) { + char *token_ptr; + timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it + timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it + read_count = read(tech_pvt->controldevfd, tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); + + if (read_count == 0) { + ERRORA + ("read 0 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running=0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active=0; + tech_pvt->name[0]='\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + return -1; + } + + if (option_debug > 90) { + //DEBUGA_GSMOPEN("1 read %d bytes, --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer_ptr); + //DEBUGA_GSMOPEN("2 read %d bytes, --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer); + } + tmp_answer_ptr = tmp_answer_ptr + read_count; + + + la_counter = 0; + memset(tmp_answer2, 0, sizeof(char) * AT_BUFSIZ); + strcpy(tmp_answer2, tmp_answer); + if ((token_ptr = strtok(tmp_answer2, "\n\r"))) { + last_line_ptr = token_ptr; + strncpy(tech_pvt->line_array.result[la_counter], token_ptr, AT_MESG_MAX_LENGTH); + if (strlen(token_ptr) > AT_MESG_MAX_LENGTH) { + WARNINGA + ("AT mesg longer than buffer, original message was: |%s|, in buffer only: |%s|\n", + GSMOPEN_P_LOG, token_ptr, tech_pvt->line_array.result[la_counter]); + } + la_counter++; + while ((token_ptr = strtok(NULL, "\n\r"))) { + last_line_ptr = token_ptr; + strncpy(tech_pvt->line_array.result[la_counter], token_ptr, AT_MESG_MAX_LENGTH); + if (strlen(token_ptr) > AT_MESG_MAX_LENGTH) { + WARNINGA + ("AT mesg longer than buffer, original message was: |%s|, in buffer only: |%s|\n", + GSMOPEN_P_LOG, token_ptr, tech_pvt->line_array.result[la_counter]); + } + la_counter++; + } + } else { + last_line_ptr = tmp_answer; + } + + if (expected_string && !expect_crlf) { + DEBUGA_GSMOPEN + ("last_line_ptr=|%s|, expected_string=|%s|, expect_crlf=%d, memcmp(last_line_ptr, expected_string, strlen(expected_string)) = %d\n", + GSMOPEN_P_LOG, last_line_ptr, expected_string, expect_crlf, memcmp(last_line_ptr, expected_string, strlen(expected_string))); + } + + if (expected_string && !expect_crlf && !memcmp(last_line_ptr, expected_string, strlen(expected_string)) + ) { + strncpy(tech_pvt->line_array.result[la_counter], last_line_ptr, AT_MESG_MAX_LENGTH); + // match expected string -> accept it withtout CRLF + la_counter++; + + } + /* if the last line read was not a complete line, we'll read the rest in the future */ + else if (tmp_answer[strlen(tmp_answer) - 1] != '\r' && tmp_answer[strlen(tmp_answer) - 1] != '\n') + la_counter--; + + /* let's list the complete lines read so far, without re-listing the lines that has yet been listed */ + if (option_debug > 1) { + for (i = la_read; i < la_counter; i++) + DEBUGA_GSMOPEN("Read line %d: |%s|\n", GSMOPEN_P_LOG, i, tech_pvt->line_array.result[i]); + } + + /* let's interpret the complete lines read so far (WITHOUT looking for OK, ERROR, and EXPECTED_STRING), without re-interpreting the lines that has been yet interpreted, so we're sure we don't miss anything */ + for (i = la_read; i < la_counter; i++) { + + if ((strcmp(tech_pvt->line_array.result[i], "RING") == 0)) { + /* with first RING we wait for callid */ + gettimeofday(&(tech_pvt->ringtime), NULL); + /* give CALLID (+CLIP) a chance, wait for the next RING before answering */ + if (tech_pvt->phone_callflow == CALLFLOW_INCOMING_RING) { + /* we're at the second ring, set the interface state, will be answered by gsmopen_do_monitor */ + DEBUGA_GSMOPEN("|%s| got second RING\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->interface_state = GSMOPEN_STATE_RING; + } else { + /* we're at the first ring, so there is no CALLID yet thus clean the previous one + just in case we don't receive the caller identification in this new call */ + memset(tech_pvt->callid_name, 0, sizeof(tech_pvt->callid_name)); + memset(tech_pvt->callid_number, 0, sizeof(tech_pvt->callid_number)); + /* only send AT+CLCC? if the device previously reported its support */ + if (tech_pvt->at_has_clcc != 0) { + /* we're at the first ring, try to get CALLID (with +CLCC) */ + DEBUGA_GSMOPEN("|%s| got first RING, sending AT+CLCC?\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + res = gsmopen_serial_write_AT_noack(tech_pvt, "AT+CLCC?"); + if (res) { + ERRORA("AT+CLCC? (call list) was not correctly sent to the phone\n", GSMOPEN_P_LOG); + } + } else { + DEBUGA_GSMOPEN("|%s| got first RING, but not sending AT+CLCC? as this device " + "seems not to support\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + } + tech_pvt->phone_callflow = CALLFLOW_INCOMING_RING; + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CLCC", 5) == 0)) { + int commacount = 0; + int a = 0; + int b = 0; + int c = 0; + /* with clcc we wait for clip */ + memset(tech_pvt->callid_name, 0, sizeof(tech_pvt->callid_name)); + memset(tech_pvt->callid_number, 0, sizeof(tech_pvt->callid_number)); + + for (a = 0; a < strlen(tech_pvt->line_array.result[i]); a++) { + + if (tech_pvt->line_array.result[i][a] == ',') { + commacount++; + } + if (commacount == 5) { + if (tech_pvt->line_array.result[i][a] != ',' && tech_pvt->line_array.result[i][a] != '"') { + tech_pvt->callid_number[b] = tech_pvt->line_array.result[i][a]; + b++; + } + } + if (commacount == 7) { + if (tech_pvt->line_array.result[i][a] != ',' && tech_pvt->line_array.result[i][a] != '"') { + tech_pvt->callid_name[c] = tech_pvt->line_array.result[i][a]; + c++; + } + } + } + + tech_pvt->phone_callflow = CALLFLOW_INCOMING_RING; + DEBUGA_GSMOPEN("|%s| CLCC CALLID: name is %s, number is %s\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i], + tech_pvt->callid_name[0] ? tech_pvt->callid_name : "not available", + tech_pvt->callid_number[0] ? tech_pvt->callid_number : "not available"); + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CLIP", 5) == 0)) { + int commacount = 0; + int a = 0; + int b = 0; + int c = 0; + /* with CLIP, we want to answer right away */ + memset(tech_pvt->callid_name, 0, sizeof(tech_pvt->callid_name)); + memset(tech_pvt->callid_number, 0, sizeof(tech_pvt->callid_number)); + + + for (a = 7; a < strlen(tech_pvt->line_array.result[i]); a++) { + if (tech_pvt->line_array.result[i][a] == ',') { + commacount++; + } + if (commacount == 0) { + if (tech_pvt->line_array.result[i][a] != ',' && tech_pvt->line_array.result[i][a] != '"') { + tech_pvt->callid_number[b] = tech_pvt->line_array.result[i][a]; + b++; + } + } + if (commacount == 4) { + if (tech_pvt->line_array.result[i][a] != ',' && tech_pvt->line_array.result[i][a] != '"') { + tech_pvt->callid_name[c] = tech_pvt->line_array.result[i][a]; + c++; + } + } + } + + if (tech_pvt->interface_state != GSMOPEN_STATE_RING) { + gettimeofday(&(tech_pvt->call_incoming_time), NULL); + DEBUGA_GSMOPEN("GSMOPEN_STATE_RING call_incoming_time.tv_sec=%ld\n", GSMOPEN_P_LOG, tech_pvt->call_incoming_time.tv_sec); + + } + + tech_pvt->interface_state = GSMOPEN_STATE_RING; + tech_pvt->phone_callflow = CALLFLOW_INCOMING_RING; + DEBUGA_GSMOPEN("|%s| CLIP INCOMING CALLID: name is %s, number is %s\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i], + (strlen(tech_pvt->callid_name) && tech_pvt->callid_name[0] != 1) ? tech_pvt->callid_name : "not available", + strlen(tech_pvt->callid_number) ? tech_pvt->callid_number : "not available"); + + if (!strlen(tech_pvt->callid_number)) { + strcpy(tech_pvt->callid_number, "not available"); + } + + if (!strlen(tech_pvt->callid_name) && tech_pvt->callid_name[0] != 1) { + strncpy(tech_pvt->callid_name, tech_pvt->callid_number, sizeof(tech_pvt->callid_name)); + //strncpy(tech_pvt->callid_name, tech_pvt->callid_number, sizeof(tech_pvt->callid_name)) ; + snprintf(tech_pvt->callid_name, sizeof(tech_pvt->callid_name), "GSMopen: %s", tech_pvt->callid_number); + } + + DEBUGA_GSMOPEN("|%s| CLIP INCOMING CALLID: NOW name is %s, number is %s\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i], tech_pvt->callid_name, tech_pvt->callid_number); + } + + if ((strcmp(tech_pvt->line_array.result[i], "BUSY") == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_LINEBUSY; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_LINEBUSY\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + //if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner && tech_pvt->phone_callflow != CALLFLOW_CALL_DOWN) { + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->phone_callflow != CALLFLOW_CALL_DOWN) { + //ast_setstate(tech_pvt->owner, GSMOPEN_STATE_BUSY); + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_BUSY); + //cicopet + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + channel = switch_core_session_get_channel(session); + //gsmopen_hangup(tech_pvt); + switch_core_session_rwunlock(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NONE); + } + // + //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + + } else { + ERRORA("Why BUSY now?\n", GSMOPEN_P_LOG); + } + } + if ((strcmp(tech_pvt->line_array.result[i], "NO ANSWER") == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_NOANSWER; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_NOANSWER\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_NO_ANSWER; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } else { + ERRORA("Why NO ANSWER now?\n", GSMOPEN_P_LOG); + } + } + if ((strcmp(tech_pvt->line_array.result[i], "NO CARRIER") == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_NOCARRIER; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_NOCARRIER\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + //cicopet + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + channel = switch_core_session_get_channel(session); + //gsmopen_hangup(tech_pvt); + switch_core_session_rwunlock(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NONE); + } + // + //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } else { + ERRORA("Why NO CARRIER now?\n", GSMOPEN_P_LOG); + } + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CBC:", 5) == 0)) { + int power_supply, battery_strenght, err; + + power_supply = battery_strenght = 0; + + err = sscanf(&tech_pvt->line_array.result[i][6], "%d,%d", &power_supply, &battery_strenght); + if (err < 2) { + DEBUGA_GSMOPEN("|%s| is not formatted as: |+CBC: xx,yy| now trying |+CBC:xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + err = sscanf(&tech_pvt->line_array.result[i][5], "%d,%d", &power_supply, &battery_strenght); + DEBUGA_GSMOPEN("|%s| +CBC: Powered by %s, battery strenght=%d\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i], power_supply ? "power supply" : "battery", battery_strenght); + + } + + if (err < 2) { + DEBUGA_GSMOPEN("|%s| is not formatted as: |+CBC:xx,yy| giving up\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + else { + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| +CBC: Powered by %s, battery strenght=%d\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i], power_supply ? "power supply" : "battery", battery_strenght); + if (!power_supply) { + if (battery_strenght < 10) { + ERRORA("|%s| BATTERY ALMOST EXHAUSTED\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else if (battery_strenght < 20) { + WARNINGA("|%s| BATTERY LOW\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + } + + } + } + + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CSQ:", 5) == 0)) { + int signal_quality, ber, err; + + signal_quality = ber = 0; + + err = sscanf(&tech_pvt->line_array.result[i][6], "%d,%d", &signal_quality, &ber); + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| +CSQ: Signal Quality: %d, Error Rate=%d\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], signal_quality, ber); + if (err < 2) { + ERRORA("|%s| is not formatted as: |+CSQ: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else { + if (signal_quality < 11 || signal_quality == 99) { + ERRORA + ("|%s| CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna\n", + GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->got_signal=0; + alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna"); + } else if (signal_quality < 15) { + WARNINGA("|%s| CELLPHONE GETS SIGNAL LOW\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->got_signal=1; + alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "CELLPHONE GETS SIGNAL LOW"); + } else { + tech_pvt->got_signal=2; + } + + } + + } + if ((strncmp(tech_pvt->line_array.result[i], "+CREG:", 6) == 0)) { + int n, stat, err; + + n = stat = 0; + + err = sscanf(&tech_pvt->line_array.result[i][6], "%d,%d", &n, &stat); + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| +CREG: Display: %d, Registration=%d\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], n, stat); + if (err < 2) { + WARNINGA("|%s| is not formatted as: |+CREG: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + if (stat==0) { + ERRORA + ("|%s| CELLPHONE is not registered to network, consider to move it or additional antenna\n", + GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->not_registered=1; + tech_pvt->home_network_registered=0; + tech_pvt->roaming_registered=0; + alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, "CELLPHONE is not registered to network, consider to move it or additional antenna"); + } else if (stat==1) { + DEBUGA_GSMOPEN("|%s| CELLPHONE is registered to the HOME network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->not_registered=0; + tech_pvt->home_network_registered=1; + tech_pvt->roaming_registered=0; + }else { + ERRORA("|%s| CELLPHONE is registered to a ROAMING network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->not_registered=0; + tech_pvt->home_network_registered=0; + tech_pvt->roaming_registered=1; + alarm_event(tech_pvt, ALARM_ROAMING_NETWORK_REGISTRATION, "CELLPHONE is registered to a ROAMING network"); + } + + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CMGW:", 6) == 0)) { + int err; + + err = sscanf(&tech_pvt->line_array.result[i][7], "%s", tech_pvt->at_cmgw); + DEBUGA_GSMOPEN("|%s| +CMGW: %s\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], tech_pvt->at_cmgw); + if (err < 1) { + ERRORA("|%s| is not formatted as: |+CMGW: xxxx|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + } + + /* at_call_* are unsolicited messages sent by the modem to signal us about call processing activity and events */ + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_idle) == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_IDLE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + DEBUGA_GSMOPEN("just received a remote HANGUP\n", GSMOPEN_P_LOG); + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_NORMAL; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + DEBUGA_GSMOPEN("just sent GSMOPEN_CONTROL_HANGUP\n", GSMOPEN_P_LOG); + } + + tech_pvt->phone_callflow = CALLFLOW_CALL_NOCARRIER; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_NOCARRIER\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + //cicopet + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + channel = switch_core_session_get_channel(session); + //gsmopen_hangup(tech_pvt); + switch_core_session_rwunlock(session); + switch_channel_hangup(channel, SWITCH_CAUSE_NONE); + } + // + //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } else { + ERRORA("Why NO CARRIER now?\n", GSMOPEN_P_LOG); + } + + + + + + + + + + + + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_incoming) == 0)) { + + //char list_command[64]; + + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_INCOMING\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + if (tech_pvt->phone_callflow != CALLFLOW_CALL_INCOMING && tech_pvt->phone_callflow != CALLFLOW_INCOMING_RING) { + //mark the time of CALLFLOW_CALL_INCOMING + gettimeofday(&(tech_pvt->call_incoming_time), NULL); + tech_pvt->phone_callflow = CALLFLOW_CALL_INCOMING; + DEBUGA_GSMOPEN("CALLFLOW_CALL_INCOMING call_incoming_time.tv_sec=%ld\n", GSMOPEN_P_LOG, tech_pvt->call_incoming_time.tv_sec); + + } + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_active) == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE; + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_ACTIVE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + if (tech_pvt->interface_state == CALLFLOW_CALL_DIALING || tech_pvt->interface_state == CALLFLOW_STATUS_EARLYMEDIA) { + DEBUGA_PBX("just received a remote ANSWER\n", GSMOPEN_P_LOG); + if (tech_pvt->phone_callflow == GSMOPEN_STATE_UP) { + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_RINGING); + DEBUGA_PBX("just sent GSMOPEN_CONTROL_RINGING\n", GSMOPEN_P_LOG); + DEBUGA_PBX("going to send GSMOPEN_CONTROL_ANSWER\n", GSMOPEN_P_LOG); + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_ANSWER); + tech_pvt->interface_state = CALLFLOW_CALL_REMOTEANSWER; + DEBUGA_PBX("just sent GSMOPEN_CONTROL_ANSWER\n", GSMOPEN_P_LOG); + } + } else { + } + //tech_pvt->interface_state = GSMOPEN_STATE_UP; + //DEBUGA_PBX("just interface_state UP\n", GSMOPEN_P_LOG); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_calling) == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_DIALING; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_DIALING\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_failed) == 0)) { + tech_pvt->phone_callflow = CALLFLOW_CALL_FAILED; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_FAILED\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CSCA:", 6) == 0)) { //TODO SMS FIXME in config! + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| +CSCA: Message Center Address!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CMGF:", 6) == 0)) { //TODO SMS FIXME in config! + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| +CMGF: Message Format!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CMTI:", 6) == 0)) { //TODO SMS FIXME in config! + int err; + int pos; + + //FIXME all the following commands in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMTI: Incoming SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + err = sscanf(&tech_pvt->line_array.result[i][12], "%d", &pos); + if (err < 1) { + ERRORA("|%s| is not formatted as: |+CMTI: \"MT\",xx|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else { + DEBUGA_GSMOPEN("|%s| +CMTI: Incoming SMS in position: %d!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], pos); + tech_pvt->unread_sms_msg_id = pos; + gsmopen_sleep(1000); + + if (tech_pvt->unread_sms_msg_id) { + char at_command[256]; + + if (tech_pvt->no_ucs2 == 0) { + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"UCS2\""); + if (res) { + ERRORA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); + //memset(tech_pvt->sms_message, 0, sizeof(tech_pvt->sms_message)); + } + } + + memset(at_command, 0, sizeof(at_command)); + sprintf(at_command, "AT+CMGR=%d", tech_pvt->unread_sms_msg_id); + //memset(tech_pvt->sms_message, 0, sizeof(tech_pvt->sms_message)); + + tech_pvt->reading_sms_msg = 1; + res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); + tech_pvt->reading_sms_msg = 0; + if (res) { + ERRORA("AT+CMGR (read SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); + } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); + if (res) { + ERRORA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + memset(at_command, 0, sizeof(at_command)); + sprintf(at_command, "AT+CMGD=%d", tech_pvt->unread_sms_msg_id); /* delete the message */ + tech_pvt->unread_sms_msg_id = 0; + res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); + if (res) { + ERRORA("AT+CMGD (Delete SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); + } + + res = sms_incoming(tech_pvt); + +#if 0 + if (strlen(tech_pvt->sms_message)) { + //FIXME manager_event(EVENT_FLAG_SYSTEM, "GSMOPENincomingsms", + //FIXME "Interface: %s\r\nSMS_Message: %s\r\n", tech_pvt->name, + //FIXME tech_pvt->sms_message); + + res = sms_incoming(tech_pvt, tech_pvt->sms_message); + + if (strlen(tech_pvt->sms_receiving_program)) { + int fd1[2]; + pid_t pid1; + char *arg1[] = { tech_pvt->sms_receiving_program, (char *) NULL }; + int i; + + DEBUGA_GSMOPEN("incoming SMS message:>>>%s<<<\n", GSMOPEN_P_LOG, tech_pvt->sms_message); + res = pipe(fd1); + pid1 = fork(); + + if (pid1 == 0) { //child + int err; + + dup2(fd1[0], 0); // Connect stdin to pipe output + close(fd1[1]); // close input pipe side + close(tech_pvt->controldevfd); + setsid(); //session id + err = execvp(arg1[0], arg1); //exec our program, with stdin connected to pipe output + if (err) { + ERRORA + ("'sms_receiving_program' is set in config file to '%s', and it gave us back this error: %d, (%s). SMS received was:---%s---\n", + GSMOPEN_P_LOG, tech_pvt->sms_receiving_program, err, strerror(errno), tech_pvt->sms_message); + } + close(fd1[0]); // close output pipe side + } +//starting here continue the parent + close(fd1[0]); // close output pipe side + // write the msg on the pipe input + for (i = 0; i < strlen(tech_pvt->sms_message); i++) { + res = write(fd1[1], &tech_pvt->sms_message[i], 1); + } + close(fd1[1]); // close pipe input, let our program know we've finished + } else { + ERRORA + ("got SMS incoming message, but 'sms_receiving_program' is not set in config file. SMS received was:---%s---\n", + GSMOPEN_P_LOG, tech_pvt->sms_message); + } + } +#endif //0 +#if 1 //is this one needed? maybe it can interrupt an incoming call that is just to announce itself + if (tech_pvt->phone_callflow == CALLFLOW_CALL_IDLE && tech_pvt->interface_state == GSMOPEN_STATE_DOWN && tech_pvt->owner == NULL) { + /* we're not in a call, neither calling */ + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CKPD=\"EEE\""); + if (res) { + ERRORA("AT+CKPD=\"EEE\" (cellphone screen back to user) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + } +#endif + } //unread_msg_id + + } //CMTI well formatted + + } //CMTI + + if ((strncmp(tech_pvt->line_array.result[i], "+MMGL:", 6) == 0)) { //TODO MOTOROLA SMS FIXME in config! + int err = 0; + //int unread_msg_id=0; + + if (option_debug) + DEBUGA_GSMOPEN("|%s| +MMGL: Listing Motorola SMSs!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + err = sscanf(&tech_pvt->line_array.result[i][7], "%d", &tech_pvt->unread_sms_msg_id); + if (err < 1) { + ERRORA("|%s| is not formatted as: |+MMGL: xx|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + } + if ((strncmp(tech_pvt->line_array.result[i], "+CMGL:", 6) == 0)) { //TODO SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMGL: Listing SMSs!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + if ((strncmp(tech_pvt->line_array.result[i], "+MMGR:", 6) == 0)) { //TODO MOTOROLA SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +MMGR: Reading Motorola SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->reading_sms_msg) + tech_pvt->reading_sms_msg++; + } + if ((strncmp(tech_pvt->line_array.result[i], "+CMGR: \"STO U", 13) == 0)) { //TODO SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMGR: Reading stored UNSENT SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else if ((strncmp(tech_pvt->line_array.result[i], "+CMGR: \"STO S", 13) == 0)) { //TODO SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMGR: Reading stored SENT SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else if ((strncmp(tech_pvt->line_array.result[i], "+CMGR: \"REC R", 13) == 0)) { //TODO SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMGR: Reading received READ SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else if ((strncmp(tech_pvt->line_array.result[i], "+CMGR: \"REC U", 13) == 0)) { //TODO SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMGR: Reading received UNREAD SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->reading_sms_msg) + tech_pvt->reading_sms_msg++; + } else if ((strncmp(tech_pvt->line_array.result[i], "+CMGR: ", 6) == 0)) { //TODO SMS FIXME in config! + if (option_debug) + DEBUGA_GSMOPEN("|%s| +CMGR: Reading SMS!\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->reading_sms_msg) + tech_pvt->reading_sms_msg++; + } + + + if ((strcmp(tech_pvt->line_array.result[i], "+MCST: 17") == 0)) { /* motorola call processing unsolicited messages */ + tech_pvt->phone_callflow = CALLFLOW_CALL_INFLUX; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_INFLUX\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], "+MCST: 68") == 0)) { /* motorola call processing unsolicited messages */ + tech_pvt->phone_callflow = CALLFLOW_CALL_NOSERVICE; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_NOSERVICE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + } + if ((strcmp(tech_pvt->line_array.result[i], "+MCST: 70") == 0)) { /* motorola call processing unsolicited messages */ + tech_pvt->phone_callflow = CALLFLOW_CALL_OUTGOINGRESTRICTED; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_OUTGOINGRESTRICTED\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + } + if ((strcmp(tech_pvt->line_array.result[i], "+MCST: 72") == 0)) { /* motorola call processing unsolicited messages */ + tech_pvt->phone_callflow = CALLFLOW_CALL_SECURITYFAIL; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_SECURITYFAIL\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + } + + if ((strncmp(tech_pvt->line_array.result[i], "+CPBR", 5) == 0)) { /* phonebook stuff begins */ + + if (tech_pvt->phonebook_querying) { /* probably phonebook struct begins */ + int err, first_entry, last_entry, number_lenght, text_lenght; + + if (option_debug) + DEBUGA_GSMOPEN("phonebook struct: |%s|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + err = sscanf(&tech_pvt->line_array.result[i][8], "%d-%d),%d,%d", &first_entry, &last_entry, &number_lenght, &text_lenght); + if (err < 4) { + + err = sscanf(&tech_pvt->line_array.result[i][7], "%d-%d,%d,%d", &first_entry, &last_entry, &number_lenght, &text_lenght); + } + + if (err < 4) { + ERRORA + ("phonebook struct: |%s| is nor formatted as: |+CPBR: (1-750),40,14| neither as: |+CPBR: 1-750,40,14|\n", + GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else { + + if (option_debug) + DEBUGA_GSMOPEN + ("First entry: %d, last entry: %d, phone number max lenght: %d, text max lenght: %d\n", + GSMOPEN_P_LOG, first_entry, last_entry, number_lenght, text_lenght); + tech_pvt->phonebook_first_entry = first_entry; + tech_pvt->phonebook_last_entry = last_entry; + tech_pvt->phonebook_number_lenght = number_lenght; + tech_pvt->phonebook_text_lenght = text_lenght; + } + + } else { /* probably phonebook entry begins */ + + if (tech_pvt->phonebook_listing) { + int err, entry_id, entry_type; + + char entry_number[256]; + char entry_text[256]; + + if (option_debug) + DEBUGA_GSMOPEN("phonebook entry: |%s|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + err = + sscanf(&tech_pvt->line_array.result[i][7], "%d,\"%255[0-9+]\",%d,\"%255[^\"]\"", &entry_id, entry_number, &entry_type, + entry_text); + if (err < 4) { + ERRORA + ("err=%d, phonebook entry: |%s| is not formatted as: |+CPBR: 504,\"+39025458068\",145,\"ciao a tutti\"|\n", + GSMOPEN_P_LOG, err, tech_pvt->line_array.result[i]); + } else { + //TODO: sanitize entry_text + if (option_debug) + DEBUGA_GSMOPEN("Number: %s, Text: %s, Type: %d\n", GSMOPEN_P_LOG, entry_number, entry_text, entry_type); + /* write entry in phonebook file */ + if (tech_pvt->phonebook_writing_fp) { + gsmopen_dir_entry_extension++; + + fprintf(tech_pvt->phonebook_writing_fp, + "%s => ,%sSKO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromcell=%s|phonebook_entry_owner=%s\n", + entry_number, entry_text, "no", + tech_pvt->gsmopen_dir_entry_extension_prefix, "2", gsmopen_dir_entry_extension, "yes", "not_specified"); + fprintf(tech_pvt->phonebook_writing_fp, + "%s => ,%sDO,,,hidefromdir=%s|phonebook_direct_calling_ext=%d%s%.4d|phonebook_entry_fromcell=%s|phonebook_entry_owner=%s\n", + entry_number, entry_text, "no", + tech_pvt->gsmopen_dir_entry_extension_prefix, "3", gsmopen_dir_entry_extension, "yes", "not_specified"); + } + } + + } + + if (tech_pvt->phonebook_listing_received_calls) { + int err, entry_id, entry_type; + + char entry_number[256] = ""; + char entry_text[256] = ""; + + if (option_debug) + DEBUGA_GSMOPEN("phonebook entry: |%s|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + err = + sscanf(&tech_pvt->line_array.result[i][7], "%d,\"%255[0-9+]\",%d,\"%255[^\"]\"", &entry_id, entry_number, &entry_type, + entry_text); + if (err < 1) { //we match only on the progressive id, maybe the remote party has not sent its number, and/or there is no corresponding text entry in the phone directory + ERRORA + ("err=%d, phonebook entry: |%s| is not formatted as: |+CPBR: 504,\"+39025458068\",145,\"ciao a tutti\"|\n", + GSMOPEN_P_LOG, err, tech_pvt->line_array.result[i]); + } else { + //TODO: sanitize entry_text + + if (option_debug) + DEBUGA_GSMOPEN("Number: %s, Text: %s, Type: %d\n", GSMOPEN_P_LOG, entry_number, entry_text, entry_type); + memset(tech_pvt->callid_name, 0, sizeof(tech_pvt->callid_name)); + memset(tech_pvt->callid_number, 0, sizeof(tech_pvt->callid_number)); + strncpy(tech_pvt->callid_name, entry_text, sizeof(tech_pvt->callid_name)); + strncpy(tech_pvt->callid_number, entry_number, sizeof(tech_pvt->callid_number)); + if (option_debug) + DEBUGA_GSMOPEN("incoming callid: Text: %s, Number: %s\n", GSMOPEN_P_LOG, tech_pvt->callid_name, tech_pvt->callid_number); + + DEBUGA_GSMOPEN("|%s| CPBR INCOMING CALLID: name is %s, number is %s\n", + GSMOPEN_P_LOG, tech_pvt->line_array.result[i], + tech_pvt->callid_name[0] != 1 ? tech_pvt->callid_name : "not available", + tech_pvt->callid_number[0] ? tech_pvt->callid_number : "not available"); + + /* mark the time of RING */ + gettimeofday(&(tech_pvt->ringtime), NULL); + tech_pvt->interface_state = GSMOPEN_STATE_RING; + tech_pvt->phone_callflow = CALLFLOW_INCOMING_RING; + + } + + } + + else { + DEBUGA_GSMOPEN("phonebook entry: |%s|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + + } + } + + } + + if ((strncmp(tech_pvt->line_array.result[i], "*ECAV", 5) == 0) || (strncmp(tech_pvt->line_array.result[i], "*ECAM", 5) == 0)) { /* sony-ericsson call processing unsolicited messages */ + int res, ccid, ccstatus, calltype, processid, exitcause, number, type; + res = ccid = ccstatus = calltype = processid = exitcause = number = type = 0; + res = + sscanf(&tech_pvt->line_array.result[i][6], "%d,%d,%d,%d,%d,%d,%d", &ccid, &ccstatus, &calltype, &processid, &exitcause, &number, + &type); + /* only changes the phone_callflow if enought parameters were parsed */ + if (res >= 3) { + switch (ccstatus) { + case 0: + if (tech_pvt->owner) { + ast_setstate(tech_pvt->owner, GSMOPEN_STATE_DOWN); + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_NORMAL; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| Sony-Ericsson *ECAM/*ECAV: IDLE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + break; + case 1: + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| Sony-Ericsson *ECAM/*ECAV: CALLING\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + break; + case 2: + if (tech_pvt->owner) { + ast_setstate(tech_pvt->owner, GSMOPEN_STATE_DIALING); + } + tech_pvt->interface_state = CALLFLOW_CALL_DIALING; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| Sony-Ericsson *ECAM/*ECAV: CONNECTING\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + break; + case 3: + if (tech_pvt->owner) { + ast_setstate(tech_pvt->owner, GSMOPEN_STATE_UP); + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_ANSWER); + } + tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE; + tech_pvt->interface_state = GSMOPEN_STATE_UP; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| Sony-Ericsson *ECAM/*ECAV: ACTIVE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + break; + case 4: + if (option_debug > 1) + DEBUGA_GSMOPEN + ("|%s| Sony-Ericsson *ECAM/*ECAV: don't know how to handle HOLD event\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + break; + case 5: + if (option_debug > 1) + DEBUGA_GSMOPEN + ("|%s| Sony-Ericsson *ECAM/*ECAV: don't know how to handle WAITING event\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i]); + break; + case 6: + if (option_debug > 1) + DEBUGA_GSMOPEN + ("|%s| Sony-Ericsson *ECAM/*ECAV: don't know how to handle ALERTING event\n", GSMOPEN_P_LOG, + tech_pvt->line_array.result[i]); + break; + case 7: + if (tech_pvt->owner) { + ast_setstate(tech_pvt->owner, GSMOPEN_STATE_BUSY); + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_BUSY); + } + tech_pvt->phone_callflow = CALLFLOW_CALL_LINEBUSY; + tech_pvt->interface_state = GSMOPEN_STATE_BUSY; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| Sony-Ericsson *ECAM/*ECAV: BUSY\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + break; + } + } else { + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| Sony-Ericsson *ECAM/*ECAV: could not parse parameters\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + } + + /* at_indicator_* are unsolicited messages sent by the phone to signal us that some of its visual indicators on its screen has changed, based on CIND CMER ETSI docs */ + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_noservice_string) == 0)) { + ERRORA("|%s| at_indicator_noservice_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + alarm_event(tech_pvt, ALARM_NETWORK_NO_SERVICE, "at_indicator_noservice_string"); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nosignal_string) == 0)) { + ERRORA("|%s| at_indicator_nosignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "at_indicator_nosignal_string"); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_lowsignal_string) == 0)) { + WARNINGA("|%s| at_indicator_lowsignal_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "at_indicator_lowsignal_string"); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_lowbattchg_string) == 0)) { + WARNINGA("|%s| at_indicator_lowbattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nobattchg_string) == 0)) { + ERRORA("|%s| at_indicator_nobattchg_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callactive_string) == 0)) { + DEBUGA_GSMOPEN("|%s| at_indicator_callactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nocallactive_string) == 0)) { + DEBUGA_GSMOPEN("|%s| at_indicator_nocallactive_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_nocallsetup_string) == 0)) { + DEBUGA_GSMOPEN("|%s| at_indicator_nocallsetup_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupincoming_string) == 0)) { + DEBUGA_GSMOPEN("|%s| at_indicator_callsetupincoming_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupoutgoing_string) == 0)) { + DEBUGA_GSMOPEN("|%s| at_indicator_callsetupoutgoing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_indicator_callsetupremoteringing_string) + == 0)) { + DEBUGA_GSMOPEN("|%s| at_indicator_callsetupremoteringing_string\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } + + } + + /* let's look for OK, ERROR and EXPECTED_STRING in the complete lines read so far, without re-looking at the lines that has been yet looked at */ + for (i = la_read; i < la_counter; i++) { + if (expected_string) { + if ((strncmp(tech_pvt->line_array.result[i], expected_string, strlen(expected_string)) + == 0)) { + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| got what EXPECTED\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + at_ack = AT_OK; + } + } else { + if ((strcmp(tech_pvt->line_array.result[i], "OK") == 0)) { + if (option_debug > 1) + DEBUGA_GSMOPEN("got OK\n", GSMOPEN_P_LOG); + at_ack = AT_OK; + } + } + if ((strcmp(tech_pvt->line_array.result[i], "ERROR") == 0)) { + if (option_debug > 1) + DEBUGA_GSMOPEN("got ERROR\n", GSMOPEN_P_LOG); + at_ack = AT_ERROR; + } + + /* if we are requesting IMEI, put the line into the imei buffer if the line is not "OK" or "ERROR" */ + if (tech_pvt->requesting_imei && at_ack == -1) { + if (strlen(tech_pvt->line_array.result[i])) { /* we are reading the IMEI */ + strncpy(tech_pvt->imei, tech_pvt->line_array.result[i], sizeof(tech_pvt->imei)); + } + } + + /* if we are requesting IMSI, put the line into the imei buffer if the line is not "OK" or "ERROR" */ + if (tech_pvt->requesting_imsi && at_ack == -1) { + if (strlen(tech_pvt->line_array.result[i])) { /* we are reading the IMSI */ + strncpy(tech_pvt->imsi, tech_pvt->line_array.result[i], sizeof(tech_pvt->imsi)); + } + } + /* if we are reading an sms message from memory, put the line into the sms buffer if the line is not "OK" or "ERROR" */ + if (tech_pvt->reading_sms_msg > 1 && at_ack == -1) { + int c; + char sms_body[16000]; + int err = 0; + memset(sms_body, '\0', sizeof(sms_body)); + + if (strncmp(tech_pvt->line_array.result[i], "+CMGR", 5) == 0) { /* we are reading the "header" of an SMS */ +#if 1 + char content[512]; + char content2[512]; + int inside_comma = 0; + int inside_quote = 0; + int which_field = 0; + int d = 0; + + DEBUGA_GSMOPEN("HERE\n", GSMOPEN_P_LOG); + + memset(content, '\0', sizeof(content)); + + + for (c = 0; c < strlen(tech_pvt->line_array.result[i]); c++) { + if (tech_pvt->line_array.result[i][c] == ',' && tech_pvt->line_array.result[i][c - 1] != '\\' && inside_quote == 0) { + if (inside_comma) { + inside_comma = 0; + DEBUGA_GSMOPEN("inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, + &tech_pvt->line_array.result[i][c]); + } else { + inside_comma = 1; + DEBUGA_GSMOPEN("inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, + &tech_pvt->line_array.result[i][c]); + } + } + if (tech_pvt->line_array.result[i][c] == '"' && tech_pvt->line_array.result[i][c - 1] != '\\') { + if (inside_quote) { + inside_quote = 0; + DEBUGA_GSMOPEN("END_CONTENT inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, + &tech_pvt->line_array.result[i][c]); + DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content); + + //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //strncat(tech_pvt->sms_message, content, ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + + memset(content2, '\0', sizeof(content2)); + if (which_field == 1) { + //FIXME why this? err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); + //err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); + err = 0; + strncpy(content2, content, sizeof(content2)); + } else { + err = 0; + strncpy(content2, content, sizeof(content2)); + } + DEBUGA_GSMOPEN("%d content2=%s\n", GSMOPEN_P_LOG, which_field, content2); + DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content2); + + //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //if (!err) + //strncat(tech_pvt->sms_message, content2, ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + memset(content, '\0', sizeof(content)); + d = 0; + if (which_field == 1) { + strncpy(tech_pvt->sms_sender, content2, sizeof(tech_pvt->sms_sender)); + DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content2); + + } else if (which_field == 2) { + strncpy(tech_pvt->sms_date, content2, sizeof(tech_pvt->sms_date)); + DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content2); + } else if (which_field > 2) { + WARNINGA("WHY which_field is > 2 ? (which_field is %d)\n", GSMOPEN_P_LOG, which_field); + } + which_field++; + } else { + inside_quote = 1; + DEBUGA_GSMOPEN("START_CONTENT inside_comma=%d, inside_quote=%d, we're at=%s\n", GSMOPEN_P_LOG, inside_comma, inside_quote, + &tech_pvt->line_array.result[i][c]); + } + } + if (inside_quote && tech_pvt->line_array.result[i][c] != '"') { + + content[d] = tech_pvt->line_array.result[i][c]; + d++; + + } + + } +#endif //0 + } //it was the +CMGR answer from the cellphone + else { + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + DEBUGA_GSMOPEN("tech_pvt->line_array.result[i]=%s\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->sms_pdu_not_supported) { + char content3[1000]; + strncpy(tech_pvt->sms_message, tech_pvt->line_array.result[i], sizeof(tech_pvt->sms_message)); + + //int howmanyleft; + + + DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message); + ucs2_to_utf8(tech_pvt, tech_pvt->sms_message, content3, sizeof(content3)); + DEBUGA_GSMOPEN("content3=%s\n", GSMOPEN_P_LOG, content3); + strncpy(tech_pvt->sms_body, content3, sizeof(tech_pvt->sms_body)); + //sleep(10); + //cicopet + if (tech_pvt->sms_cnmi_not_supported) { + sms_incoming(tech_pvt); + DEBUGA_GSMOPEN("2 content3=%s\n", GSMOPEN_P_LOG, content3); + } + } else { +#ifndef NO_GSMLIB + char content2[1000]; + SMSMessageRef sms; +//MessageType messagetype; +//Address servicecentreaddress; +//Timestamp servicecentretimestamp; +//Address sender_recipient_address; + + sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + + DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + + } + DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); + DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); + DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); + DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); + + + memset(sms_body, '\0', sizeof(sms_body)); + strncpy(sms_body, content2, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); + strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); + strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); + strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), + sizeof(tech_pvt->sms_servicecentreaddress)); + tech_pvt->sms_messagetype = sms->messageType(); +//messagetype = sms->messageType(); +//servicecentreaddress = sms->serviceCentreAddress(); +//servicecentretimestamp = sms->serviceCentreTimestamp(); +//sender_recipient_address = sms->address(); + +#endif// NO_GSMLIB + } + +#if 0 + //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //strncat(tech_pvt->sms_message, tech_pvt->line_array.result[i], ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + + memset(sms_body, '\0', sizeof(sms_body)); + err = ucs2_to_utf8(tech_pvt, tech_pvt->line_array.result[i], sms_body, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + + //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //if (!err) + //strncat(tech_pvt->sms_message, sms_body, ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); + + //DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message); +#endif //0 + } //it was the UCS2 from cellphone + + } //we were reading the SMS + + } + + la_read = la_counter; + + if (look_for_ack && at_ack > -1) + break; + + if (la_counter > AT_MESG_MAX_LINES) { + ERRORA("Too many lines in result (>%d). Stopping reader.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES); + at_ack = AT_ERROR; + break; + } + } + + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(tech_pvt->controldev_lock); + if (select_err == -1) { + ERRORA("select returned -1 on %s, setting controldev_dead, error was: %s\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name, strerror(errno)); + tech_pvt->controldev_dead = 1; + close(tech_pvt->controldevfd); + + tech_pvt->running=0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead"); + tech_pvt->active=0; + tech_pvt->name[0]='\0'; + if (tech_pvt->owner) + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + switch_sleep(1000000); + return -1; + } + + if (tech_pvt->phone_callflow == CALLFLOW_CALL_INCOMING && tech_pvt->call_incoming_time.tv_sec) { //after three sec of CALLFLOW_CALL_INCOMING, we assume the phone is incapable of notifying RING (eg: motorola c350), so we try to answer + char list_command[64]; + struct timeval call_incoming_timeout; + gettimeofday(&call_incoming_timeout, NULL); + call_incoming_timeout.tv_sec -= 3; + DEBUGA_GSMOPEN + ("CALLFLOW_CALL_INCOMING call_incoming_time.tv_sec=%ld, call_incoming_timeout.tv_sec=%ld\n", + GSMOPEN_P_LOG, tech_pvt->call_incoming_time.tv_sec, call_incoming_timeout.tv_sec); + if (call_incoming_timeout.tv_sec > tech_pvt->call_incoming_time.tv_sec) { + + tech_pvt->call_incoming_time.tv_sec = 0; + tech_pvt->call_incoming_time.tv_usec = 0; + DEBUGA_GSMOPEN + ("CALLFLOW_CALL_INCOMING call_incoming_time.tv_sec=%ld, call_incoming_timeout.tv_sec=%ld\n", + GSMOPEN_P_LOG, tech_pvt->call_incoming_time.tv_sec, call_incoming_timeout.tv_sec); + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CPBS=RC"); + if (res) { + ERRORA("AT+CPBS=RC (select memory of received calls) was not answered by the phone\n", GSMOPEN_P_LOG); + } + tech_pvt->phonebook_querying = 1; + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CPBR=?"); + if (res) { + ERRORA("AT+CPBS=RC (select memory of received calls) was not answered by the phone\n", GSMOPEN_P_LOG); + } + tech_pvt->phonebook_querying = 0; + sprintf(list_command, "AT+CPBR=%d,%d", tech_pvt->phonebook_first_entry, tech_pvt->phonebook_last_entry); + tech_pvt->phonebook_listing_received_calls = 1; + res = gsmopen_serial_write_AT_expect_longtime(tech_pvt, list_command, "OK"); + if (res) { + WARNINGA("AT+CPBR=%d,%d failed, continue\n", GSMOPEN_P_LOG, tech_pvt->phonebook_first_entry, tech_pvt->phonebook_last_entry); + } + tech_pvt->phonebook_listing_received_calls = 0; + } + } + + if (tech_pvt->phone_callflow == CALLFLOW_INCOMING_RING) { + struct timeval call_incoming_timeout; + gettimeofday(&call_incoming_timeout, NULL); + call_incoming_timeout.tv_sec -= 10; + // DEBUGA_GSMOPEN ("CALLFLOW_CALL_INCOMING call_incoming_time.tv_sec=%ld, call_incoming_timeout.tv_sec=%ld\n", GSMOPEN_P_LOG, tech_pvt->call_incoming_time.tv_sec, call_incoming_timeout.tv_sec); + if (call_incoming_timeout.tv_sec > tech_pvt->ringtime.tv_sec) { + ERRORA("Ringing stopped and I have not answered. Why?\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN + ("CALLFLOW_CALL_INCOMING call_incoming_time.tv_sec=%ld, call_incoming_timeout.tv_sec=%ld\n", + GSMOPEN_P_LOG, tech_pvt->call_incoming_time.tv_sec, call_incoming_timeout.tv_sec); + if (tech_pvt->owner) { + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + } + } + } + tech_pvt->line_array.elemcount = la_counter; + //NOTICA (" OUTSIDE this gsmopen_serial_device %s \n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + if (look_for_ack) + return at_ack; + else + return 0; +} + +int gsmopen_serial_write_AT(private_t * tech_pvt, const char *data) +{ + int howmany; + int i; + int res; + int count; + + howmany = strlen(data); + + for (i = 0; i < howmany; i++) { + res = write(tech_pvt->controldevfd, &data[i], 1); + + if (res != 1) { + DEBUGA_GSMOPEN("Error sending (%.1s): %d (%s)\n", GSMOPEN_P_LOG, &data[i], res, strerror(errno)); + gsmopen_sleep(100000); + for (count = 0; count < 10; count++) { + res = write(tech_pvt->controldevfd, &data[i], 1); + if (res == 1) { + DEBUGA_GSMOPEN("Successfully RE-sent (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + break; + } else + DEBUGA_GSMOPEN("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + gsmopen_sleep(100000); + + } + if (res != 1) { + ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + return -1; + } + } + if (option_debug > 1) + DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &data[i]); + gsmopen_sleep(1000); /* release the cpu */ + } + + res = write(tech_pvt->controldevfd, "\r", 1); + + if (res != 1) { + DEBUGA_GSMOPEN("Error sending (carriage return): %d (%s)\n", GSMOPEN_P_LOG, res, strerror(errno)); + gsmopen_sleep(100000); + for (count = 0; count < 10; count++) { + res = write(tech_pvt->controldevfd, "\r", 1); + + if (res == 1) { + DEBUGA_GSMOPEN("Successfully RE-sent carriage return: %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); + break; + } else + DEBUGA_GSMOPEN("Error RE-sending (carriage return): %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); + gsmopen_sleep(100000); + + } + if (res != 1) { + ERRORA("Error RE-sending (carriage return): %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); + return -1; + } + } + if (option_debug > 1) + DEBUGA_GSMOPEN("sent (carriage return)\n", GSMOPEN_P_LOG); + gsmopen_sleep(1000); /* release the cpu */ + + return howmany; +} + +int gsmopen_serial_write_AT_nocr(private_t * tech_pvt, const char *data) +{ + int howmany; + int i; + int res; + int count; + + howmany = strlen(data); + + for (i = 0; i < howmany; i++) { + res = write(tech_pvt->controldevfd, &data[i], 1); + + if (res != 1) { + DEBUGA_GSMOPEN("Error sending (%.1s): %d (%s)\n", GSMOPEN_P_LOG, &data[i], res, strerror(errno)); + gsmopen_sleep(100000); + for (count = 0; count < 10; count++) { + res = write(tech_pvt->controldevfd, &data[i], 1); + if (res == 1) + break; + else + DEBUGA_GSMOPEN("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + gsmopen_sleep(100000); + + } + if (res != 1) { + ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &data[i], count, res, strerror(errno)); + return -1; + } + } + if (option_debug > 1) + DEBUGA_GSMOPEN("sent data... (%.1s)\n", GSMOPEN_P_LOG, &data[i]); + gsmopen_sleep(1000); /* release the cpu */ + } + + gsmopen_sleep(1000); /* release the cpu */ + + return howmany; +} + +int gsmopen_serial_write_AT_noack(private_t * tech_pvt, const char *data) +{ + + if (option_debug > 1) + DEBUGA_GSMOPEN("gsmopen_serial_write_AT_noack: %s\n", GSMOPEN_P_LOG, data); + + PUSHA_UNLOCKA(tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + if (gsmopen_serial_write_AT(tech_pvt, data) != strlen(data)) { + + ERRORA("Error sending data... (%s)\n", GSMOPEN_P_LOG, strerror(errno)); + UNLOCKA(tech_pvt->controldev_lock); + return -1; + } + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(tech_pvt->controldev_lock); + + return 0; +} + +int gsmopen_serial_write_AT_ack(private_t * tech_pvt, const char *data) +{ + int at_result = AT_ERROR; + + PUSHA_UNLOCKA(tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + if (option_debug > 1) + DEBUGA_GSMOPEN("sending: %s\n", GSMOPEN_P_LOG, data); + if (gsmopen_serial_write_AT(tech_pvt, data) != strlen(data)) { + ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); + UNLOCKA(tech_pvt->controldev_lock); + return -1; + } + + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(tech_pvt->controldev_lock); + + return at_result; + +} + +int gsmopen_serial_write_AT_ack_nocr_longtime(private_t * tech_pvt, const char *data) +{ + int at_result = AT_ERROR; + + PUSHA_UNLOCKA(tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + if (option_debug > 1) + DEBUGA_GSMOPEN("sending: %s\n", GSMOPEN_P_LOG, data); + if (gsmopen_serial_write_AT_nocr(tech_pvt, data) != strlen(data)) { + ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); + UNLOCKA(tech_pvt->controldev_lock); + return -1; + } + + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 20, NULL, 1); // 20.5 sec timeout + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(tech_pvt->controldev_lock); + + return at_result; + +} + +int gsmopen_serial_write_AT_expect1(private_t * tech_pvt, const char *data, const char *expected_string, int expect_crlf, int seconds) +{ + int at_result = AT_ERROR; + + PUSHA_UNLOCKA(tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + if (option_debug > 1) + DEBUGA_GSMOPEN("sending: %s, expecting: %s\n", GSMOPEN_P_LOG, data, expected_string); + if (gsmopen_serial_write_AT(tech_pvt, data) != strlen(data)) { + ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); + UNLOCKA(tech_pvt->controldev_lock); + return -1; + } + + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(tech_pvt->controldev_lock); + + return at_result; + +} + +int gsmopen_serial_AT_expect(private_t * tech_pvt, const char *expected_string, int expect_crlf, int seconds) +{ + int at_result = AT_ERROR; + + PUSHA_UNLOCKA(tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + if (option_debug > 1) + DEBUGA_GSMOPEN("expecting: %s\n", GSMOPEN_P_LOG, expected_string); + + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, seconds, expected_string, expect_crlf); // 20.5 sec timeout, used for querying the SIM and sending SMSs + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(tech_pvt->controldev_lock); + + return at_result; + +} + +int gsmopen_serial_answer(private_t * tech_pvt) +{ + if (tech_pvt->controldevprotocol == PROTOCOL_AT) + return gsmopen_serial_answer_AT(tech_pvt); +#ifdef GSMOPEN_FBUS2 + if (tech_pvt->controldevprotocol == PROTOCOL_FBUS2) + return gsmopen_serial_answer_FBUS2(tech_pvt); +#endif /* GSMOPEN_FBUS2 */ +#ifdef GSMOPEN_CVM + if (tech_pvt->controldevprotocol == PROTOCOL_CVM_BUSMAIL) + return gsmopen_serial_answer_CVM_BUSMAIL(tech_pvt); +#endif /* GSMOPEN_CVM */ + return -1; +} + + +int gsmopen_serial_answer_AT(private_t * tech_pvt) +{ + int res; + + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_answer, tech_pvt->at_answer_expect); + if (res) { + DEBUGA_GSMOPEN + ("at_answer command failed, command used: %s, expecting: %s, trying with AT+CKPD=\"S\"\n", + GSMOPEN_P_LOG, tech_pvt->at_answer, tech_pvt->at_answer_expect); + + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CKPD=\"S\""); + if (res) { + ERRORA("at_answer command failed, command used: 'AT+CKPD=\"S\"', giving up\n", GSMOPEN_P_LOG); + return -1; + } + } + //tech_pvt->interface_state = GSMOPEN_STATE_UP; + //tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE; + DEBUGA_GSMOPEN("AT: call answered\n", GSMOPEN_P_LOG); + return 0; +} + +int gsmopen_serial_hangup(private_t * tech_pvt) +{ + if (tech_pvt->controldevprotocol == PROTOCOL_AT) + return gsmopen_serial_hangup_AT(tech_pvt); +#ifdef GSMOPEN_FBUS2 + if (tech_pvt->controldevprotocol == PROTOCOL_FBUS2) + return gsmopen_serial_hangup_FBUS2(tech_pvt); +#endif /* GSMOPEN_FBUS2 */ +#ifdef GSMOPEN_CVM + if (tech_pvt->controldevprotocol == PROTOCOL_CVM_BUSMAIL) + return gsmopen_serial_hangup_CVM_BUSMAIL(tech_pvt); +#endif /* GSMOPEN_CVM */ + return -1; +} + + +int gsmopen_serial_hangup_AT(private_t * tech_pvt) +{ + int res; + + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_hangup, tech_pvt->at_hangup_expect); + if (res) { + DEBUGA_GSMOPEN("at_hangup command failed, command used: %s, trying to use AT+CKPD=\"EEE\"\n", GSMOPEN_P_LOG, tech_pvt->at_hangup); + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CKPD=\"EEE\""); + if (res) { + ERRORA("at_hangup command failed, command used: 'AT+CKPD=\"EEE\"'\n", GSMOPEN_P_LOG); + return -1; + } + } + } + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + return 0; +} + + +int gsmopen_serial_call(private_t * tech_pvt, char *dstr) +{ + if (tech_pvt->controldevprotocol == PROTOCOL_AT) + return gsmopen_serial_call_AT(tech_pvt, dstr); +#ifdef GSMOPEN_FBUS2 + if (tech_pvt->controldevprotocol == PROTOCOL_FBUS2) + return gsmopen_serial_call_FBUS2(tech_pvt, dstr); +#endif /* GSMOPEN_FBUS2 */ + if (tech_pvt->controldevprotocol == PROTOCOL_NO_SERIAL) + return 0; +#ifdef GSMOPEN_CVM + if (tech_pvt->controldevprotocol == PROTOCOL_CVM_BUSMAIL) + return gsmopen_serial_call_CVM_BUSMAIL(tech_pvt, dstr); +#endif /* GSMOPEN_CVM */ + return -1; +} + +int gsmopen_serial_call_AT(private_t * tech_pvt, char *dstr) +{ + int res; + char at_command[256]; + + if (option_debug) + DEBUGA_PBX("Dialing %s\n", GSMOPEN_P_LOG, dstr); + memset(at_command, 0, sizeof(at_command)); + tech_pvt->phone_callflow = CALLFLOW_CALL_DIALING; + tech_pvt->interface_state = GSMOPEN_STATE_DIALING; + //ast_uri_decode(dstr); +/* + size_t fixdstr = strspn(dstr, AST_DIGIT_ANYDIG); + if (fixdstr == 0) { + ERRORA("dial command failed because of invalid dial number. dial string was: %s\n", + GSMOPEN_P_LOG, dstr); + return -1; + } +*/ + //dstr[fixdstr] = '\0'; + sprintf(at_command, "%s%s%s", tech_pvt->at_dial_pre_number, dstr, tech_pvt->at_dial_post_number); + DEBUGA_PBX("Dialstring %s\n", GSMOPEN_P_LOG, at_command); + res = gsmopen_serial_write_AT_expect(tech_pvt, at_command, tech_pvt->at_dial_expect); + if (res) { + ERRORA("dial command failed, dial string was: %s\n", GSMOPEN_P_LOG, at_command); + return -1; + } + // jet - early audio + //if (tech_pvt->at_early_audio) { + //ast_queue_control(tech_pvt->owner, AST_CONTROL_ANSWER); + //} + + return 0; +} + +int ucs2_to_utf8(private_t * tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft) +{ + char converted[16000]; +#ifndef WIN32 + iconv_t iconv_format; + int iconv_res; + char *outbuf; + char *inbuf; + size_t inbytesleft; + int c; + char stringa[5]; + double hexnum; + int i = 0; + + memset(converted, '\0', sizeof(converted)); + + DEBUGA_GSMOPEN("ucs2_in=%s\n", GSMOPEN_P_LOG, ucs2_in); + /* cicopet */ + for (c = 0; c < strlen(ucs2_in); c++) { + sprintf(stringa, "0x%c%c", ucs2_in[c], ucs2_in[c + 1]); + c++; + hexnum = strtod(stringa, NULL); + converted[i] = (char) hexnum; + i++; + } + + outbuf = utf8_out; + inbuf = converted; + + iconv_format = iconv_open("UTF8", "UCS-2BE"); + if (iconv_format == (iconv_t) - 1) { + ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + return -1; + } + + inbytesleft = i; + DEBUGA_GSMOPEN("1 ciao in=%s, inleft=%d, out=%s, outleft=%d, converted=%s, utf8_out=%s\n", + GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); + + iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (iconv_res == (size_t) -1) { + DEBUGA_GSMOPEN("2 ciao in=%s, inleft=%d, out=%s, outleft=%d, converted=%s, utf8_out=%s\n", + GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); + DEBUGA_GSMOPEN("3 error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); + iconv_close(iconv_format); + return -1; + } + DEBUGA_GSMOPEN + ("iconv_res=%d, in=%s, inleft=%d, out=%s, outleft=%d, converted=%s, utf8_out=%s\n", + GSMOPEN_P_LOG, iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); + iconv_close(iconv_format); + +#endif //WIN32 + return 0; +} + +int iso_8859_1_to_utf8(private_t * tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft) +{ + char converted[16000]; +#ifndef WIN32 + iconv_t iconv_format; + int iconv_res; + char *outbuf; + char *inbuf; + size_t inbytesleft; + //int c; + //char stringa[5]; + //double hexnum; + //int i = 0; + + memset(converted, '\0', sizeof(converted)); + + DEBUGA_GSMOPEN("iso_8859_1_in=%s\n", GSMOPEN_P_LOG, iso_8859_1_in); + + outbuf = utf8_out; + inbuf = iso_8859_1_in; + + iconv_format = iconv_open("UTF8", "ISO_8859-1"); + if (iconv_format == (iconv_t) - 1) { + ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + return -1; + } + + + inbytesleft = strlen(iso_8859_1_in) * 2; + iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (iconv_res == (size_t) -1) { + DEBUGA_GSMOPEN("ciao in=%s, inleft=%d, out=%s, outleft=%d, utf8_out=%s\n", + GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_out); + DEBUGA_GSMOPEN("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); + return -1; + } + DEBUGA_GSMOPEN + (" strlen(iso_8859_1_in)=%d, iconv_res=%d, inbuf=%s, inleft=%d, out=%s, outleft=%d, utf8_out=%s\n", + GSMOPEN_P_LOG, (int) strlen(iso_8859_1_in), iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_out); + + + + iconv_close(iconv_format); + +#endif //WIN32 + return 0; +} + + +int utf_to_ucs2(private_t * tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft) +{ + /* cicopet */ +#ifndef WIN32 + iconv_t iconv_format; + int iconv_res; + char *outbuf; + char *inbuf; + char converted[16000]; + int i; + char stringa[16]; + char stringa2[16]; + + memset(converted, '\0', sizeof(converted)); + + outbuf = converted; + inbuf = utf_in; + + iconv_format = iconv_open("UCS-2BE", "UTF8"); + if (iconv_format == (iconv_t) - 1) { + ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + return -1; + } + outbytesleft = 16000; + + DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf_in=%s, converted=%s\n", + GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf_in, converted); + iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (iconv_res == (size_t) -1) { + ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); + return -1; + } + DEBUGA_GSMOPEN + ("iconv_res=%d, in=%s, inleft=%d, out=%s, outleft=%d, utf_in=%s, converted=%s\n", + GSMOPEN_P_LOG, iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf_in, converted); + iconv_close(iconv_format); + + for (i = 0; i < 16000 - outbytesleft; i++) { + memset(stringa, '\0', sizeof(stringa)); + memset(stringa2, '\0', sizeof(stringa2)); + sprintf(stringa, "%02X", converted[i]); + DEBUGA_GSMOPEN("character is |%02X|\n", GSMOPEN_P_LOG, converted[i]); + stringa2[0] = stringa[strlen(stringa) - 2]; + stringa2[1] = stringa[strlen(stringa) - 1]; + strncat(ucs2_out, stringa2, ((outbytesleft - strlen(ucs2_out)) - 1)); //add the received line to the buffer + DEBUGA_GSMOPEN("stringa=%s, stringa2=%s, ucs2_out=%s\n", GSMOPEN_P_LOG, stringa, stringa2, ucs2_out); + } +#endif //WIN32 + return 0; +} + + +/*! \brief Answer incoming call, + * Part of PBX interface */ +int gsmopen_answer(private_t * tech_pvt) +{ + int res; + + if (option_debug) { + DEBUGA_PBX("ENTERING FUNC\n", GSMOPEN_P_LOG); + } + /* do something to actually answer the call, if needed (eg. pick up the phone) */ + if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL) { + if (gsmopen_serial_answer(tech_pvt)) { + ERRORA("gsmopen_answer FAILED\n", GSMOPEN_P_LOG); + if (option_debug) { + DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); + } + return -1; + } + } + tech_pvt->interface_state = GSMOPEN_STATE_UP; + tech_pvt->phone_callflow = CALLFLOW_CALL_ACTIVE; + + while (tech_pvt->interface_state == GSMOPEN_STATE_RING) { + gsmopen_sleep(10000); //10msec + } + if (tech_pvt->interface_state != GSMOPEN_STATE_UP) { + ERRORA("call answering failed\n", GSMOPEN_P_LOG); + res = -1; + } else { + if (option_debug) + DEBUGA_PBX("call answered\n", GSMOPEN_P_LOG); + res = 0; +#ifdef GSMOPEN_PORTAUDIO + //speex_echo_state_reset(tech_pvt->stream->echo_state); +#endif // GSMOPEN_PORTAUDIO + + new_inbound_channel(tech_pvt); + if (tech_pvt->owner) { + DEBUGA_PBX("going to send GSMOPEN_STATE_UP\n", GSMOPEN_P_LOG); + ast_setstate(tech_pvt->owner, GSMOPEN_STATE_UP); + //ast_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_ANSWER); + //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_ANSWER); + DEBUGA_PBX("just sent GSMOPEN_STATE_UP\n", GSMOPEN_P_LOG); + } + } + if (option_debug) { + DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); + } + return res; +} + +int gsmopen_ring(private_t * tech_pvt) +{ + int res = 0; + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (option_debug) { + //DEBUGA_PBX("ENTERING FUNC\n", GSMOPEN_P_LOG); + } + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + switch_core_session_rwunlock(session); + return 0; + } + + new_inbound_channel(tech_pvt); + + gsmopen_sleep(10000); + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + channel = switch_core_session_get_channel(session); + + switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING); + if (channel) { + switch_channel_mark_ring_ready(channel); + } else { + ERRORA("no session\n", GSMOPEN_P_LOG); + } + switch_core_session_rwunlock(session); + } else { + ERRORA("no session\n", GSMOPEN_P_LOG); + + } + + + if (option_debug) { + DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); + } + return res; +} + + +/*! \brief Hangup gsmopen call + * Part of PBX interface, called from ast_hangup */ + +int gsmopen_hangup(private_t * tech_pvt) +{ + + /* if there is not gsmopen pvt why we are here ? */ + if (!tech_pvt) { + ERRORA("Asked to hangup channel not connected\n", GSMOPEN_P_LOG); + return 0; + } + + DEBUGA_GSMOPEN("ENTERING FUNC\n", GSMOPEN_P_LOG); + + + if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL) { + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + /* actually hangup through the serial port */ + if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL) { + int res; + res = gsmopen_serial_hangup(tech_pvt); + if (res) { + ERRORA("gsmopen_serial_hangup error: %d\n", GSMOPEN_P_LOG, res); + if (option_debug) { + DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); + } + return -1; + } + } + + while (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + gsmopen_sleep(10000); //10msec + } + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN) { + ERRORA("call hangup failed\n", GSMOPEN_P_LOG); + return -1; + } else { + DEBUGA_GSMOPEN("call hungup\n", GSMOPEN_P_LOG); + } + } + } else { + tech_pvt->interface_state = GSMOPEN_STATE_DOWN; + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + } + + switch_set_flag(tech_pvt, TFLAG_HANGUP); + if (option_debug) { + DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); + } + return 0; +} + + + +#ifdef GSMOPEN_ALSA +/*! \brief ALSA pcm format, according to endianess */ +#if __BYTE_ORDER == __LITTLE_ENDIAN +snd_pcm_format_t gsmopen_format = SND_PCM_FORMAT_S16_LE; +#else +snd_pcm_format_t gsmopen_format = SND_PCM_FORMAT_S16_BE; +#endif + +/*! + * \brief Initialize the ALSA soundcard channels (capture AND playback) used by one interface (a multichannel soundcard can be used by multiple interfaces) + * \param p the gsmopen_pvt of the interface + * + * This function call alsa_open_dev to initialize the ALSA soundcard for each channel (capture AND playback) used by one interface (a multichannel soundcard can be used by multiple interfaces). Called by sound_init + * + * \return zero on success, -1 on error. + */ +int alsa_init(private_t * tech_pvt) +{ + tech_pvt->alsac = alsa_open_dev(tech_pvt, SND_PCM_STREAM_CAPTURE); + if (!tech_pvt->alsac) { + ERRORA("Failed opening ALSA capture device: %s\n", GSMOPEN_P_LOG, tech_pvt->alsacname); + if (alsa_shutdown(tech_pvt)) { + ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); + return -1; + } + return -1; + } + tech_pvt->alsap = alsa_open_dev(tech_pvt, SND_PCM_STREAM_PLAYBACK); + if (!tech_pvt->alsap) { + ERRORA("Failed opening ALSA playback device: %s\n", GSMOPEN_P_LOG, tech_pvt->alsapname); + if (alsa_shutdown(tech_pvt)) { + ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); + return -1; + } + return -1; + } + + /* make valgrind very happy */ + snd_config_update_free_global(); + return 0; +} + +/*! + * \brief Shutdown the ALSA soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces) + * \param p the gsmopen_pvt of the interface + * + * This function shutdown the ALSA soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces). Called by sound_init + * + * \return zero on success, -1 on error. + */ + +int alsa_shutdown(private_t * tech_pvt) +{ + + int err; + + if (tech_pvt->alsap) { + err = snd_pcm_drop(tech_pvt->alsap); + if (err < 0) { + ERRORA("device [%s], snd_pcm_drop failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsapname, snd_strerror(err)); + return -1; + } + err = snd_pcm_close(tech_pvt->alsap); + if (err < 0) { + ERRORA("device [%s], snd_pcm_close failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsapname, snd_strerror(err)); + return -1; + } + tech_pvt->alsap = NULL; + } + if (tech_pvt->alsac) { + err = snd_pcm_drop(tech_pvt->alsac); + if (err < 0) { + ERRORA("device [%s], snd_pcm_drop failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsacname, snd_strerror(err)); + return -1; + } + err = snd_pcm_close(tech_pvt->alsac); + if (err < 0) { + ERRORA("device [%s], snd_pcm_close failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsacname, snd_strerror(err)); + return -1; + } + tech_pvt->alsac = NULL; + } + + return 0; +} + +/*! + * \brief Setup and open the ALSA device (capture OR playback) + * \param p the gsmopen_pvt of the interface + * \param stream the ALSA capture/playback definition + * + * This function setup and open the ALSA device (capture OR playback). Called by alsa_init + * + * \return zero on success, -1 on error. + */ +snd_pcm_t *alsa_open_dev(private_t * tech_pvt, snd_pcm_stream_t stream) +{ + + snd_pcm_t *handle = NULL; + snd_pcm_hw_params_t *params; + snd_pcm_sw_params_t *swparams; + snd_pcm_uframes_t buffer_size; + int err; + size_t n; + //snd_pcm_uframes_t xfer_align; + unsigned int rate; + snd_pcm_uframes_t start_threshold, stop_threshold; + snd_pcm_uframes_t period_size = 0; + snd_pcm_uframes_t chunk_size = 0; + int start_delay = 0; + int stop_delay = 0; + snd_pcm_state_t state; + snd_pcm_info_t *info; + unsigned int chan_num; + + period_size = tech_pvt->alsa_period_size; + + snd_pcm_hw_params_alloca(¶ms); + snd_pcm_sw_params_alloca(&swparams); + + if (stream == SND_PCM_STREAM_CAPTURE) { + err = snd_pcm_open(&handle, tech_pvt->alsacname, stream, 0 | SND_PCM_NONBLOCK); + } else { + err = snd_pcm_open(&handle, tech_pvt->alsapname, stream, 0 | SND_PCM_NONBLOCK); + } + if (err < 0) { + ERRORA + ("snd_pcm_open failed with error '%s' on device '%s', if you are using a plughw:n device please change it to be a default:n device (so to allow it to be shared with other concurrent programs), or maybe you are using an ALSA voicemodem and slmodemd" + " is running?\n", GSMOPEN_P_LOG, snd_strerror(err), stream == SND_PCM_STREAM_CAPTURE ? tech_pvt->alsacname : tech_pvt->alsapname); + return NULL; + } + + snd_pcm_info_alloca(&info); + + if ((err = snd_pcm_info(handle, info)) < 0) { + ERRORA("info error: %s", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + + err = snd_pcm_nonblock(handle, 1); + if (err < 0) { + ERRORA("nonblock setting error: %s", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + + err = snd_pcm_hw_params_any(handle, params); + if (err < 0) { + ERRORA("Broken configuration for this PCM, no configurations available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + + err = snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); + if (err < 0) { + ERRORA("Access type not available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + err = snd_pcm_hw_params_set_format(handle, params, gsmopen_format); + if (err < 0) { + ERRORA("Sample format non available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + err = snd_pcm_hw_params_set_channels(handle, params, 1); + if (err < 0) { + DEBUGA_GSMOPEN("Channels count set failed: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } +#if 1 + err = snd_pcm_hw_params_get_channels(params, &chan_num); + if (err < 0) { + ERRORA("Channels count non available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + if (chan_num < 1 || chan_num > 2) { + ERRORA("Channels count MUST BE 1 or 2, it is: %d\n", GSMOPEN_P_LOG, chan_num); + ERRORA("Channels count MUST BE 1 or 2, it is: %d on %s %s\n", GSMOPEN_P_LOG, chan_num, tech_pvt->alsapname, tech_pvt->alsacname); + return NULL; + } else { + if (chan_num == 1) { + if (stream == SND_PCM_STREAM_CAPTURE) + tech_pvt->alsa_capture_is_mono = 1; + else + tech_pvt->alsa_play_is_mono = 1; + } else { + if (stream == SND_PCM_STREAM_CAPTURE) + tech_pvt->alsa_capture_is_mono = 0; + else + tech_pvt->alsa_play_is_mono = 0; + } + } +#else + tech_pvt->alsa_capture_is_mono = 1; + tech_pvt->alsa_play_is_mono = 1; +#endif + +#if 1 + rate = tech_pvt->gsmopen_sound_rate; + err = snd_pcm_hw_params_set_rate_near(handle, params, &rate, 0); + if ((float) tech_pvt->gsmopen_sound_rate * 1.05 < rate || (float) tech_pvt->gsmopen_sound_rate * 0.95 > rate) { + WARNINGA("Rate is not accurate (requested = %iHz, got = %iHz)\n", GSMOPEN_P_LOG, tech_pvt->gsmopen_sound_rate, rate); + } + + if (err < 0) { + ERRORA("Error setting rate: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + tech_pvt->gsmopen_sound_rate = rate; + + err = snd_pcm_hw_params_set_period_size_near(handle, params, &period_size, 0); + + if (err < 0) { + ERRORA("Error setting period_size: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + + tech_pvt->alsa_period_size = period_size; + + tech_pvt->alsa_buffer_size = tech_pvt->alsa_period_size * tech_pvt->alsa_periods_in_buffer; + + err = snd_pcm_hw_params_set_buffer_size_near(handle, params, &tech_pvt->alsa_buffer_size); + + if (err < 0) { + ERRORA("Error setting buffer_size: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } +#endif + + err = snd_pcm_hw_params(handle, params); + if (err < 0) { + ERRORA("Unable to install hw params: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + + snd_pcm_hw_params_get_period_size(params, &chunk_size, 0); + snd_pcm_hw_params_get_buffer_size(params, &buffer_size); + if (chunk_size == buffer_size) { + ERRORA("Can't use period equal to buffer size (%lu == %lu)\n", GSMOPEN_P_LOG, chunk_size, buffer_size); + return NULL; + } + + snd_pcm_sw_params_current(handle, swparams); + + /* + if (sleep_min) + xfer_align = 1; + err = snd_pcm_sw_params_set_sleep_min(handle, swparams, + 0); + + if (err < 0) { + ERRORA("Error setting slep_min: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } + */ + n = chunk_size; + err = snd_pcm_sw_params_set_avail_min(handle, swparams, n); + if (err < 0) { + ERRORA("Error setting avail_min: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } + if (stream == SND_PCM_STREAM_CAPTURE) { + start_delay = 1; + } + if (start_delay <= 0) { + start_threshold = n + (snd_pcm_uframes_t) rate *start_delay / 1000000; + } else { + start_threshold = (snd_pcm_uframes_t) rate *start_delay / 1000000; + } + if (start_threshold < 1) + start_threshold = 1; + if (start_threshold > n) + start_threshold = n; + err = snd_pcm_sw_params_set_start_threshold(handle, swparams, start_threshold); + if (err < 0) { + ERRORA("Error setting start_threshold: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } + + if (stop_delay <= 0) + stop_threshold = buffer_size + (snd_pcm_uframes_t) rate *stop_delay / 1000000; + else + stop_threshold = (snd_pcm_uframes_t) rate *stop_delay / 1000000; + + if (stream == SND_PCM_STREAM_CAPTURE) { + stop_threshold = -1; + } + + err = snd_pcm_sw_params_set_stop_threshold(handle, swparams, stop_threshold); + + if (err < 0) { + ERRORA("Error setting stop_threshold: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } + + if (snd_pcm_sw_params(handle, swparams) < 0) { + ERRORA("Error installing software parameters: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } + + err = snd_pcm_poll_descriptors_count(handle); + if (err <= 0) { + ERRORA("Unable to get a poll descriptors count, error is %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + + if (err != 1) { //number of poll descriptors + DEBUGA_GSMOPEN("Can't handle more than one device\n", GSMOPEN_P_LOG); + return NULL; + } + + err = snd_pcm_poll_descriptors(handle, &tech_pvt->pfd, err); + if (err != 1) { + ERRORA("snd_pcm_poll_descriptors failed, %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + DEBUGA_GSMOPEN("Acquired fd %d from the poll descriptor\n", GSMOPEN_P_LOG, tech_pvt->pfd.fd); + + if (stream == SND_PCM_STREAM_CAPTURE) { + tech_pvt->gsmopen_sound_capt_fd = tech_pvt->pfd.fd; + } + + state = snd_pcm_state(handle); + + if (state != SND_PCM_STATE_RUNNING) { + if (state != SND_PCM_STATE_PREPARED) { + err = snd_pcm_prepare(handle); + if (err) { + ERRORA("snd_pcm_prepare failed, %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + DEBUGA_GSMOPEN("prepared!\n", GSMOPEN_P_LOG); + } + if (stream == SND_PCM_STREAM_CAPTURE) { + err = snd_pcm_start(handle); + if (err) { + ERRORA("snd_pcm_start failed, %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + return NULL; + } + DEBUGA_GSMOPEN("started!\n", GSMOPEN_P_LOG); + } + } + if (option_debug > 1) { + snd_output_t *output = NULL; + err = snd_output_stdio_attach(&output, stdout, 0); + if (err < 0) { + ERRORA("snd_output_stdio_attach failed: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); + } + snd_pcm_dump(handle, output); + +#ifndef NO_GSMLIB + SMSMessageRef sms; + char content2[1000]; + //sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); // dataCodingScheme = 0 + //sms = SMSMessage::decode("0791934329002000040C9193432766658100009001211133318004D4F29C0E"); // dataCodingScheme = 0 + //sms = SMSMessage::decode("0791934329002000040C919343276665810008900121612521801600CC00E800E900F900F200E00020006300690061006F"); // dataCodingScheme = 8 + sms = SMSMessage::decode("0791934329002000040C919343276665810008900172002293404C006300690061006F0020003100320033002000620065006C00E80020043D043E0432043E044104420438002005DC05E7002005E805D005EA0020FE8EFEE0FEA0FEE4FECBFE9300204EBA5927"); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + //sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); // dataCodingScheme = 0 + //NOTICA("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + + } + //NOTICA("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + //NOTICA("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); +#endif// NO_GSMLIB + + } + if (option_debug > 1) + DEBUGA_GSMOPEN("ALSA handle = %ld\n", GSMOPEN_P_LOG, (long int) handle); + return handle; + +} + +/*! \brief Write audio frames to interface */ +#endif /* GSMOPEN_ALSA */ + +int gsmopen_call(private_t * tech_pvt, char *rdest, int timeout) +{ + + //gsmopen_sleep(5000); + DEBUGA_GSMOPEN("Calling GSM, rdest is: %s\n", GSMOPEN_P_LOG, rdest); + //gsmopen_signaling_write(tech_pvt, "SET AGC OFF"); + //gsmopen_sleep(10000); + //gsmopen_signaling_write(tech_pvt, "SET AEC OFF"); + //gsmopen_sleep(10000); + + gsmopen_serial_call(tech_pvt, rdest); + //ERRORA("failed to communicate with GSM client, now exit\n", GSMOPEN_P_LOG); + //return -1; + //} + return 0; +} + + +int gsmopen_senddigit(private_t * tech_pvt, char digit) +{ + + DEBUGA_GSMOPEN("DIGIT received: %c\n", GSMOPEN_P_LOG, digit); + if (tech_pvt->controldevprotocol == PROTOCOL_AT && tech_pvt->at_send_dtmf[0]) { + int res = 0; + char at_command[256]; + + memset(at_command, '\0', 256); + sprintf(at_command, "%s=\"%c\"", tech_pvt->at_send_dtmf, digit); + res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); + if (res) { + ERRORA("senddigit command failed, command used: '%s=\"%c\"', giving up\n", GSMOPEN_P_LOG, tech_pvt->at_send_dtmf, digit); + } + } + + return 0; +} + +#ifdef GSMOPEN_ALSA +/*! \brief Write audio frames to interface */ +int alsa_write(private_t * tech_pvt, short *data, int datalen) +{ + static char sizbuf[8000]; + static char sizbuf2[16000]; + static char silencebuf[8000]; + static int sizpos = 0; + int len = sizpos; + int pos; + int res = 0; + time_t now_timestamp; + /* size_t frames = 0; */ + snd_pcm_state_t state; + snd_pcm_sframes_t delayp1=0; + snd_pcm_sframes_t delayp2=0; + + if(tech_pvt->no_sound==1){ + return res; + } + + + memset(sizbuf, 255, sizeof(sizbuf)); + memset(sizbuf2, 255, sizeof(sizbuf)); + memset(silencebuf, 255, sizeof(sizbuf)); + + //ERRORA("data=%p, datalen=%d\n", GSMOPEN_P_LOG, (void *)data, datalen); + /* We have to digest the frame in 160-byte portions */ + if (datalen > sizeof(sizbuf) - sizpos) { + ERRORA("Frame too large\n", GSMOPEN_P_LOG); + res = -1; + } else { + memcpy(sizbuf + sizpos, data, datalen); + memset(data, 255, datalen); + len += datalen; + pos = 0; + + +#ifdef ALSA_MONITOR + alsa_monitor_write(sizbuf, len); +#endif + state = snd_pcm_state(tech_pvt->alsap); + if (state == SND_PCM_STATE_XRUN) { + int i; + + DEBUGA_GSMOPEN + ("You've got an ALSA write XRUN in the past (gsmopen can't fill the soundcard buffer fast enough). If this happens often (not after silence or after a pause in the speech, that's OK), and appear to damage the sound quality, first check if you have some IRQ problem, maybe sharing the soundcard IRQ with a broken or heavy loaded ethernet or graphic card. Then consider to increase the alsa_periods_in_buffer (now is set to %d) for this interface in the config file\n", + GSMOPEN_P_LOG, tech_pvt->alsa_periods_in_buffer); + res = snd_pcm_prepare(tech_pvt->alsap); + if (res) { + ERRORA("audio play prepare failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + } else { + res = snd_pcm_format_set_silence(gsmopen_format, silencebuf, len / 2); + if (res < 0) { + DEBUGA_GSMOPEN("Silence error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + res = -1; + } + for (i = 0; i < (tech_pvt->alsa_periods_in_buffer - 1); i++) { + res = snd_pcm_writei(tech_pvt->alsap, silencebuf, len / 2); + if (res != len / 2) { + DEBUGA_GSMOPEN("Write returned a different quantity: %d\n", GSMOPEN_P_LOG, res); + res = -1; + } else if (res < 0) { + DEBUGA_GSMOPEN("Write error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + res = -1; + } + } + } + + } + + res = snd_pcm_delay(tech_pvt->alsap, &delayp1); + if (res < 0) { + DEBUGA_GSMOPEN("Error %d on snd_pcm_delay: \"%s\"\n", GSMOPEN_P_LOG, res, snd_strerror(res)); + res = snd_pcm_prepare(tech_pvt->alsap); + if (res) { + DEBUGA_GSMOPEN("snd_pcm_prepare failed: '%s'\n", GSMOPEN_P_LOG, snd_strerror(res)); + } + res = snd_pcm_delay(tech_pvt->alsap, &delayp1); + } + + delayp2 = snd_pcm_avail_update(tech_pvt->alsap); + if (delayp2 < 0) { + DEBUGA_GSMOPEN("Error %d on snd_pcm_avail_update: \"%s\"\n", GSMOPEN_P_LOG, (int) delayp2, snd_strerror(delayp2)); + + res = snd_pcm_prepare(tech_pvt->alsap); + if (res) { + DEBUGA_GSMOPEN("snd_pcm_prepare failed: '%s'\n", GSMOPEN_P_LOG, snd_strerror(res)); + } + delayp2 = snd_pcm_avail_update(tech_pvt->alsap); + } + + if ( /* delayp1 != 0 && delayp1 != 160 */ + delayp1 < 160 || delayp2 > tech_pvt->alsa_buffer_size) { + + res = snd_pcm_prepare(tech_pvt->alsap); + if (res) { + DEBUGA_GSMOPEN + ("snd_pcm_prepare failed while trying to prevent an ALSA write XRUN: %s, delayp1=%d, delayp2=%d\n", + GSMOPEN_P_LOG, snd_strerror(res), (int) delayp1, (int) delayp2); + } else { + + int i; + for (i = 0; i < (tech_pvt->alsa_periods_in_buffer - 1); i++) { + res = snd_pcm_format_set_silence(gsmopen_format, silencebuf, len / 2); + if (res < 0) { + DEBUGA_GSMOPEN("Silence error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + res = -1; + } + res = snd_pcm_writei(tech_pvt->alsap, silencebuf, len / 2); + if (res < 0) { + DEBUGA_GSMOPEN("Write error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + res = -1; + } else if (res != len / 2) { + DEBUGA_GSMOPEN("Write returned a different quantity: %d\n", GSMOPEN_P_LOG, res); + res = -1; + } + } + + DEBUGA_GSMOPEN + ("PREVENTING an ALSA write XRUN (gsmopen can't fill the soundcard buffer fast enough). If this happens often (not after silence or after a pause in the speech, that's OK), and appear to damage the sound quality, first check if you have some IRQ problem, maybe sharing the soundcard IRQ with a broken or heavy loaded ethernet or graphic card. Then consider to increase the alsa_periods_in_buffer (now is set to %d) for this interface in the config file. delayp1=%d, delayp2=%d\n", + GSMOPEN_P_LOG, tech_pvt->alsa_periods_in_buffer, (int) delayp1, (int) delayp2); + } + + } + + memset(sizbuf2, 0, sizeof(sizbuf2)); + if (tech_pvt->alsa_play_is_mono) { + res = snd_pcm_writei(tech_pvt->alsap, sizbuf, len / 2); + } else { + int a = 0; + int i = 0; + for (i = 0; i < 8000;) { + sizbuf2[a] = sizbuf[i]; + a++; + i++; + sizbuf2[a] = sizbuf[i]; + a++; + i--; + sizbuf2[a] = sizbuf[i]; // comment out this line to use only left + a++; + i++; + sizbuf2[a] = sizbuf[i]; // comment out this line to use only left + a++; + i++; + } + res = snd_pcm_writei(tech_pvt->alsap, sizbuf2, len); + } + if (res == -EPIPE) { + DEBUGA_GSMOPEN + ("ALSA write EPIPE (XRUN) (gsmopen can't fill the soundcard buffer fast enough). If this happens often (not after silence or after a pause in the speech, that's OK), and appear to damage the sound quality, first check if you have some IRQ problem, maybe sharing the soundcard IRQ with a broken or heavy loaded ethernet or graphic card. Then consider to increase the alsa_periods_in_buffer (now is set to %d) for this interface in the config file. delayp1=%d, delayp2=%d\n", + GSMOPEN_P_LOG, tech_pvt->alsa_periods_in_buffer, (int) delayp1, (int) delayp2); + res = snd_pcm_prepare(tech_pvt->alsap); + if (res) { + ERRORA("audio play prepare failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + } else { + + if (tech_pvt->alsa_play_is_mono) { + res = snd_pcm_writei(tech_pvt->alsap, sizbuf, len / 2); + } else { + int a = 0; + int i = 0; + for (i = 0; i < 8000;) { + sizbuf2[a] = sizbuf[i]; + a++; + i++; + sizbuf2[a] = sizbuf[i]; + a++; + i--; + sizbuf2[a] = sizbuf[i]; + a++; + i++; + sizbuf2[a] = sizbuf[i]; + a++; + i++; + } + res = snd_pcm_writei(tech_pvt->alsap, sizbuf2, len); + } + + } + + } else { + if (res == -ESTRPIPE) { + ERRORA("You've got some big problems\n", GSMOPEN_P_LOG); + } else if (res == -EAGAIN) { + DEBUGA_GSMOPEN("Momentarily busy\n", GSMOPEN_P_LOG); + res = 0; + } else if (res < 0) { + ERRORA("Error %d on audio write: \"%s\"\n", GSMOPEN_P_LOG, res, snd_strerror(res)); + } + } + } + + if (tech_pvt->audio_play_reset_period) { + time(&now_timestamp); + if ((now_timestamp - tech_pvt->audio_play_reset_timestamp) > tech_pvt->audio_play_reset_period) { + if (option_debug) + DEBUGA_GSMOPEN("reset audio play\n", GSMOPEN_P_LOG); + res = snd_pcm_wait(tech_pvt->alsap, 1000); + if (res < 0) { + ERRORA("audio play wait failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + } + res = snd_pcm_drop(tech_pvt->alsap); + if (res) { + ERRORA("audio play drop failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + } + res = snd_pcm_prepare(tech_pvt->alsap); + if (res) { + ERRORA("audio play prepare failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + } + res = snd_pcm_wait(tech_pvt->alsap, 1000); + if (res < 0) { + ERRORA("audio play wait failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); + } + time(&tech_pvt->audio_play_reset_timestamp); + } + } + //res = 0; + //if (res > 0) + //res = 0; + return res; +} + +#define AST_FRIENDLY_OFFSET 0 +int alsa_read(private_t * tech_pvt, short *data, int datalen) +{ + //static struct ast_frame f; + static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; + static short __buf2[(GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2) * 2]; + short *buf; + short *buf2; + static int readpos = 0; + //static int left = GSMOPEN_FRAME_SIZE; + static int left; + snd_pcm_state_t state; + int r = 0; + int off = 0; + int error = 0; + //time_t now_timestamp; + + //DEBUGA_GSMOPEN("buf=%p, datalen=%d, left=%d\n", GSMOPEN_P_LOG, (void *)buf, datalen, left); + //memset(&f, 0, sizeof(struct ast_frame)); //giova + + + + if(tech_pvt->no_sound==1){ + return r; + } + + left = datalen; + + + state = snd_pcm_state(tech_pvt->alsac); + if (state != SND_PCM_STATE_RUNNING) { + DEBUGA_GSMOPEN("ALSA read state is not SND_PCM_STATE_RUNNING\n", GSMOPEN_P_LOG); + + if (state != SND_PCM_STATE_PREPARED) { + error = snd_pcm_prepare(tech_pvt->alsac); + if (error) { + ERRORA("snd_pcm_prepare failed, %s\n", GSMOPEN_P_LOG, snd_strerror(error)); + return r; + } + DEBUGA_GSMOPEN("prepared!\n", GSMOPEN_P_LOG); + } + gsmopen_sleep(1000); + error = snd_pcm_start(tech_pvt->alsac); + if (error) { + ERRORA("snd_pcm_start failed, %s\n", GSMOPEN_P_LOG, snd_strerror(error)); + return r; + } + DEBUGA_GSMOPEN("started!\n", GSMOPEN_P_LOG); + gsmopen_sleep(1000); + } + + buf = __buf + AST_FRIENDLY_OFFSET / 2; + buf2 = __buf2 + ((AST_FRIENDLY_OFFSET / 2) * 2); + + if (tech_pvt->alsa_capture_is_mono) { + r = snd_pcm_readi(tech_pvt->alsac, buf + readpos, left); + //DEBUGA_GSMOPEN("r=%d, buf=%p, buf+readpos=%p, datalen=%d, left=%d\n", GSMOPEN_P_LOG, r, (void *)buf, (void *)(buf + readpos), datalen, left); + } else { + int a = 0; + int i = 0; + r = snd_pcm_readi(tech_pvt->alsac, buf2 + (readpos * 2), left); + + for (i = 0; i < (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2) * 2;) { + __buf[a] = (__buf2[i] + __buf2[i + 1]) / 2; //comment out this line to use only left + //__buf[a] = __buf2[i]; // enable this line to use only left + a++; + i++; + i++; + } + } + + if (r == -EPIPE) { + DEBUGA_GSMOPEN("ALSA XRUN on read\n", GSMOPEN_P_LOG); + return r; + } else if (r == -ESTRPIPE) { + ERRORA("-ESTRPIPE\n", GSMOPEN_P_LOG); + return r; + + } else if (r == -EAGAIN) { + int count=0; + while (r == -EAGAIN) { + gsmopen_sleep(10000); + DEBUGA_GSMOPEN("%d ALSA read -EAGAIN, the soundcard is not ready to be read by gsmopen\n", GSMOPEN_P_LOG, count); + count++; + + if (tech_pvt->alsa_capture_is_mono) { + r = snd_pcm_readi(tech_pvt->alsac, buf + readpos, left); + } else { + int a = 0; + int i = 0; + r = snd_pcm_readi(tech_pvt->alsac, buf2 + (readpos * 2), left); + + for (i = 0; i < (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2) * 2;) { + __buf[a] = (__buf2[i] + __buf2[i + 1]) / 2; + a++; + i++; + i++; + } + } + + } + } else if (r < 0) { + WARNINGA("ALSA Read error: %s\n", GSMOPEN_P_LOG, snd_strerror(r)); + } else if (r >= 0) { + //DEBUGA_GSMOPEN("read: r=%d, readpos=%d, left=%d, off=%d\n", GSMOPEN_P_LOG, r, readpos, left, off); + off -= r; //what is the meaning of this? a leftover, probably + } + /* Update positions */ + readpos += r; + left -= r; + + if (readpos >= GSMOPEN_FRAME_SIZE) { + int i; + /* A real frame */ + readpos = 0; + left = GSMOPEN_FRAME_SIZE; + for (i = 0; i < r; i++) + data[i] = buf[i]; + + } + return r; +} + +#endif // GSMOPEN_ALSA + + + + + +int gsmopen_sendsms(private_t * tech_pvt, char *dest, char *text) +{ + //char *idest = data; + //char rdest[256]; + //private_t *p = NULL; + //char *device; + //char *dest; + //char *text; + //char *stringp = NULL; + //int found = 0; + int failed = 0; + int err = 0; + + //strncpy(rdest, idest, sizeof(rdest) - 1); + DEBUGA_GSMOPEN("GSMopenSendsms: dest=%s text=%s\n", GSMOPEN_P_LOG, dest, text); + DEBUGA_GSMOPEN("START\n", GSMOPEN_P_LOG); + /* we can use gsmopen_request to get the channel, but gsmopen_request would look for onowned channels, and probably we can send SMSs while a call is ongoing + * + */ + + if (tech_pvt->controldevprotocol != PROTOCOL_AT) { + ERRORA(", GSMOPEN_P_LOGGSMopenSendsms supports only AT command cellphones at the moment :-( !\n", GSMOPEN_P_LOG); + return RESULT_FAILURE; + } + + if (tech_pvt->controldevprotocol == PROTOCOL_AT) { + char smscommand[16000]; + memset(smscommand, '\0', sizeof(smscommand)); + + PUSHA_UNLOCKA(&tech_pvt->controldev_lock); + LOKKA(tech_pvt->controldev_lock); + + err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); + if (err) { + ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + + + if (tech_pvt->no_ucs2) { + sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //TODO: support phones that only accept pdu mode + } else { + char dest2[1048]; + + err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"UCS2\""); + if (err) { + ERRORA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + + memset(dest2, '\0', sizeof(dest2)); + utf_to_ucs2(tech_pvt, dest, strlen(dest), dest2, sizeof(dest2)); + sprintf(smscommand, "AT+CMGS=\"%s\"", dest2); //TODO: support phones that only accept pdu mode + } + //TODO: support phones that only accept pdu mode + //TODO would be better to lock controldev here + //sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //FIXME: nokia e63 want this + err = gsmopen_serial_write_AT_noack(tech_pvt, smscommand); + if (err) { + ERRORA("Error sending SMS\n", GSMOPEN_P_LOG); + failed = 1; + goto uscita; + } + err = gsmopen_serial_AT_expect(tech_pvt, "> ", 0, 1); // wait 1.5s for the prompt, no crlf +#if 1 + if (err) { + DEBUGA_GSMOPEN + ("Error or timeout getting prompt '> ' for sending sms directly to the remote party. BTW, seems that we cannot do that with Motorola c350, so we'll write to cellphone memory, then send from memory\n", + GSMOPEN_P_LOG); + + err = gsmopen_serial_write_AT_ack(tech_pvt, "ATE1"); //motorola (at least c350) do not echo the '>' prompt when in ATE0... go figure!!!! + if (err) { + ERRORA("Error activating echo from modem\n", GSMOPEN_P_LOG); + } + tech_pvt->at_cmgw[0] = '\0'; + sprintf(smscommand, "AT+CMGW=\"%s\"", dest); //TODO: support phones that only accept pdu mode + err = gsmopen_serial_write_AT_noack(tech_pvt, smscommand); + if (err) { + ERRORA("Error writing SMS destination to the cellphone memory\n", GSMOPEN_P_LOG); + failed = 1; + goto uscita; + } + err = gsmopen_serial_AT_expect(tech_pvt, "> ", 0, 1); // wait 1.5s for the prompt, no crlf + if (err) { + ERRORA("Error or timeout getting prompt '> ' for writing sms text in cellphone memory\n", GSMOPEN_P_LOG); + failed = 1; + goto uscita; + } + } +#endif + + //sprintf(text,"ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大"); //let's test the beauty of utf + memset(smscommand, '\0', sizeof(smscommand)); + if (tech_pvt->no_ucs2) { + sprintf(smscommand, "%s", text); + } else { + utf_to_ucs2(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); + } + + smscommand[strlen(smscommand)] = 0x1A; + DEBUGA_GSMOPEN("smscommand len is: %d, text is:|||%s|||\n", GSMOPEN_P_LOG, (int) strlen(smscommand), smscommand); + + err = gsmopen_serial_write_AT_ack_nocr_longtime(tech_pvt, smscommand); + //TODO would be better to unlock controldev here + if (err) { + ERRORA("Error writing SMS text to the cellphone memory\n", GSMOPEN_P_LOG); + //return RESULT_FAILURE; + failed = 1; + goto uscita; + } + if (tech_pvt->at_cmgw[0]) { + sprintf(smscommand, "AT+CMSS=%s", tech_pvt->at_cmgw); + err = gsmopen_serial_write_AT_expect_longtime(tech_pvt, smscommand, "OK"); + if (err) { + ERRORA("Error sending SMS from the cellphone memory\n", GSMOPEN_P_LOG); + //return RESULT_FAILURE; + failed = 1; + goto uscita; + } + + err = gsmopen_serial_write_AT_ack(tech_pvt, "ATE0"); //motorola (at least c350) do not echo the '>' prompt when in ATE0... go figure!!!! + if (err) { + ERRORA("Error de-activating echo from modem\n", GSMOPEN_P_LOG); + } + } + uscita: + gsmopen_sleep(1000); + + if (tech_pvt->at_cmgw[0]) { + + /* let's see what we've sent, just for check TODO: Motorola it's not reliable! Motorola c350 tells that all was sent, but is not true! It just sends how much it fits into one SMS FIXME: need an algorithm to calculate how many ucs2 chars fits into an SMS. It make difference based, probably, on the GSM alphabet translation, or so */ + sprintf(smscommand, "AT+CMGR=%s", tech_pvt->at_cmgw); + err = gsmopen_serial_write_AT_ack(tech_pvt, smscommand); + if (err) { + ERRORA("Error reading SMS back from the cellphone memory\n", GSMOPEN_P_LOG); + } + + /* let's delete from cellphone memory what we've sent */ + sprintf(smscommand, "AT+CMGD=%s", tech_pvt->at_cmgw); + err = gsmopen_serial_write_AT_ack(tech_pvt, smscommand); + if (err) { + ERRORA("Error deleting SMS from the cellphone memory\n", GSMOPEN_P_LOG); + } + + tech_pvt->at_cmgw[0] = '\0'; + } + //gsmopen_sleep(500000); //.5 secs + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(&tech_pvt->controldev_lock); + } + + err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); + if (err) { + DEBUGA_GSMOPEN("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); + } + + + DEBUGA_GSMOPEN("FINISH\n", GSMOPEN_P_LOG); + if (failed) + return -1; + else + return RESULT_SUCCESS; +} + +/************************************************/ + +/* LUIGI RIZZO's magic */ +/* boost support. BOOST_SCALE * 10 ^(BOOST_MAX/20) must + * be representable in 16 bits to avoid overflows. + */ +#define BOOST_SCALE (1<<9) +#define BOOST_MAX 40 /* slightly less than 7 bits */ + +/* + * store the boost factor + */ +void gsmopen_store_boost(char *s, double *boost) +{ + private_t *tech_pvt = NULL; + + if (sscanf(s, "%lf", boost) != 1) { + ERRORA("invalid boost <%s>\n", GSMOPEN_P_LOG, s); + return; + } + if (*boost < -BOOST_MAX) { + WARNINGA("boost %s too small, using %d\n", GSMOPEN_P_LOG, s, -BOOST_MAX); + *boost = -BOOST_MAX; + } else if (*boost > BOOST_MAX) { + WARNINGA("boost %s too large, using %d\n", GSMOPEN_P_LOG, s, BOOST_MAX); + *boost = BOOST_MAX; + } +#ifdef WIN32 + *boost = exp(log ((double)10) * *boost / 20) * BOOST_SCALE; +#else + *boost = exp(log(10) * *boost / 20) * BOOST_SCALE; +#endif //WIN32 + if (option_debug > 1) + DEBUGA_GSMOPEN("setting boost %s to %f\n", GSMOPEN_P_LOG, s, *boost); +} + + +int gsmopen_sound_boost(void *data, int samples_num, double boost) +{ +/* LUIGI RIZZO's magic */ + if (boost != 0 && (boost < 511 || boost > 513)) { /* scale and clip values */ + int i, x; + + int16_t *ptr = (int16_t *) data; + + for (i = 0; i < samples_num; i++) { + x = (int) (ptr[i] * boost) / BOOST_SCALE; + if (x > 32767) { + x = 32767; + } else if (x < -32768) { + x = -32768; + } + ptr[i] = x; + } + } else { + //printf("BOOST=%f\n", boost); + } + + return 0; +} + + +int gsmopen_serial_getstatus_AT(private_t * tech_pvt) +{ + int res; + private_t *p = tech_pvt; + +#if 0 + if (p->owner) { + if (p->owner->_state != AST_STATE_UP && p->owner->_state != AST_STATE_DOWN) { + DEBUGA_AT("No getstatus, we're neither UP nor DOWN\n", GSMOPEN_P_LOG); + return 0; + } + } +#endif + + + PUSHA_UNLOCKA(p->controldev_lock); + LOKKA(p->controldev_lock); + res = gsmopen_serial_write_AT_ack(p, "AT"); + if (res) { + ERRORA("AT was not acknowledged, continuing but maybe there is a problem\n", GSMOPEN_P_LOG); + } + gsmopen_sleep(1000); + + if (strlen(p->at_query_battchg)) { + res = gsmopen_serial_write_AT_expect(p, p->at_query_battchg, p->at_query_battchg_expect); + if (res) { + WARNINGA("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, p->at_query_battchg, p->at_query_battchg_expect); + } + gsmopen_sleep(1000); + } + + if (strlen(p->at_query_signal)) { + res = gsmopen_serial_write_AT_expect(p, p->at_query_signal, p->at_query_signal_expect); + if (res) { + WARNINGA("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, p->at_query_signal, p->at_query_signal_expect); + } + gsmopen_sleep(1000); + } + + if (!p->network_creg_not_supported) { + res = gsmopen_serial_write_AT_ack(p, "AT+CREG?"); + if (res) { + WARNINGA("%s does not get %s from the phone. Continuing.\n", GSMOPEN_P_LOG, "AT+CREG?", "OK"); + } + gsmopen_sleep(1000); + } + + //FIXME all the following commands in config! + + if (p->sms_cnmi_not_supported) { + res = gsmopen_serial_write_AT_ack(p, "AT+MMGL=\"HEADER ONLY\""); + if (res) { + WARNINGA + ("%s does not get %s from the phone. If your phone is not Motorola, please contact the gsmopen developers. Else, if your phone IS a Motorola, probably a long msg was incoming and ther first part was read and then deleted. The second part is now orphan. If you got this warning repeatedly, and you cannot correctly receive SMSs from this interface, please manually clean all messages (and the residual parts of them) from the cellphone/SIM. Continuing.\n", + GSMOPEN_P_LOG, "AT+MMGL=\"HEADER ONLY\"", "OK"); + } else { + gsmopen_sleep(1000); + if (p->unread_sms_msg_id) { + char at_command[256]; + + res = gsmopen_serial_write_AT_ack(p, "AT+CSCS=\"UCS2\""); + if (res) { + ERRORA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone\n", GSMOPEN_P_LOG); + memset(p->sms_message, 0, sizeof(p->sms_message)); + } + + memset(at_command, 0, sizeof(at_command)); + sprintf(at_command, "AT+CMGR=%d", p->unread_sms_msg_id); + memset(p->sms_message, 0, sizeof(p->sms_message)); + + p->reading_sms_msg = 1; + res = gsmopen_serial_write_AT_ack(p, at_command); + p->reading_sms_msg = 0; + if (res) { + ERRORA("AT+CMGR (read SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); + } + res = gsmopen_serial_write_AT_ack(p, "AT+CSCS=\"GSM\""); + if (res) { + ERRORA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + memset(at_command, 0, sizeof(at_command)); + sprintf(at_command, "AT+CMGD=%d", p->unread_sms_msg_id); /* delete the message */ + p->unread_sms_msg_id = 0; + res = gsmopen_serial_write_AT_ack(p, at_command); + if (res) { + ERRORA("AT+CMGD (Delete SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); + } + + if (strlen(p->sms_message)) { +#if 0 + + manager_event(EVENT_FLAG_SYSTEM, "GSMOPENincomingsms", "Interface: %s\r\nSMS_Message: %s\r\n", p->name, p->sms_message); + + if (strlen(p->sms_receiving_program)) { + int fd1[2]; + pid_t pid1; + char *arg1[] = { p->sms_receiving_program, (char *) NULL }; + int i; + + DEBUGA_AT("incoming SMS message:---%s---\n", GSMOPEN_P_LOG, p->sms_message); + pipe(fd1); + pid1 = fork(); + + if (pid1 == 0) { //child + int err; + + dup2(fd1[0], 0); // Connect stdin to pipe output + close(fd1[1]); // close input pipe side + setsid(); //session id + err = execvp(arg1[0], arg1); //exec our program, with stdin connected to pipe output + if (err) { + ERRORA + ("'sms_receiving_program' is set in config file to '%s', and it gave us back this error: %d, (%s). SMS received was:---%s---\n", + GSMOPEN_P_LOG, p->sms_receiving_program, err, strerror(errno), p->sms_message); + } + close(fd1[0]); // close output pipe side + } //starting here continue the parent + close(fd1[0]); // close output pipe side + // write the msg on the pipe input + for (i = 0; i < strlen(p->sms_message); i++) { + write(fd1[1], &p->sms_message[i], 1); + } + close(fd1[1]); // close pipe input, let our program know we've finished + } else { + ERRORA + ("got SMS incoming message, but 'sms_receiving_program' is not set in config file. SMS received was:---%s---\n", + GSMOPEN_P_LOG, p->sms_message); + } +#endif //0 + DEBUGA_GSMOPEN("got SMS incoming message. SMS received was:---%s---\n", GSMOPEN_P_LOG, p->sms_message); + } +#if 0 //is this one needed? maybe it can interrupt an incoming call that is just to announce itself + if (p->phone_callflow == CALLFLOW_CALL_IDLE && p->interface_state == AST_STATE_DOWN && p->owner == NULL) { + /* we're not in a call, neither calling */ + res = gsmopen_serial_write_AT_ack(p, "AT+CKPD=\"EEE\""); + if (res) { + ERRORA("AT+CKPD=\"EEE\" (cellphone screen back to user) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + } +#endif + } + } + } + + UNLOCKA(p->controldev_lock); + POPPA_UNLOCKA(p->controldev_lock); + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.cpp new file mode 100644 index 0000000000..7db2452a95 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.cpp @@ -0,0 +1,3474 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005/2011, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * This module (mod_gsmopen) has been contributed by: + * + * Giovanni Maruzzelli (gmaruzz@gmail.com) + * + * + * Further Contributors: + * + * + * + * mod_gsmopen.c -- GSM compatible Endpoint Module + * + */ + +#include "gsmopen.h" + +#if 0 +#ifdef WIN32 +/***************/ +// from http://www.openasthra.com/c-tidbits/gettimeofday-function-for-windows/ + +#include + +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 +#else /* */ +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL +#endif /* */ +struct sk_timezone { + int tz_minuteswest; /* minutes W of Greenwich */ + int tz_dsttime; /* type of dst correction */ +}; +int gettimeofday(struct timeval *tv, struct sk_timezone *tz) +{ + FILETIME ft; + unsigned __int64 tmpres = 0; + static int tzflag; + if (NULL != tv) { + GetSystemTimeAsFileTime(&ft); + tmpres |= ft.dwHighDateTime; + tmpres <<= 32; + tmpres |= ft.dwLowDateTime; + + /*converting file time to unix epoch */ + tmpres /= 10; /*convert into microseconds */ + tmpres -= DELTA_EPOCH_IN_MICROSECS; + tv->tv_sec = (long) (tmpres / 1000000UL); + tv->tv_usec = (long) (tmpres % 1000000UL); + } + if (NULL != tz) { + if (!tzflag) { + _tzset(); + tzflag++; + } + tz->tz_minuteswest = _timezone / 60; + tz->tz_dsttime = _daylight; + } + return 0; +} + +/***************/ +#endif /* WIN32 */ +#endif //0 +SWITCH_BEGIN_EXTERN_C +SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load); +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown); +SWITCH_MODULE_DEFINITION(mod_gsmopen, mod_gsmopen_load, mod_gsmopen_shutdown, NULL); +SWITCH_END_EXTERN_C +#define GSMOPEN_CHAT_PROTO "sms" +#if 1 +SWITCH_STANDARD_API(gsm_function); +/* BEGIN: Changes here */ +#define GSM_SYNTAX "list [full] || console || AT_command || remove < interface_name | interface_id > || reload" +/* END: Changes heres */ +SWITCH_STANDARD_API(gsmopen_function); +#define GSMOPEN_SYNTAX "interface_name AT_command" +#endif //0 + +SWITCH_STANDARD_API(gsmopen_boost_audio_function); +#define GSMOPEN_BOOST_AUDIO_SYNTAX "interface_name [ ]" +SWITCH_STANDARD_API(sendsms_function); +#define SENDSMS_SYNTAX "gsmopen_sendsms interface_name destination_number SMS_text" +SWITCH_STANDARD_API(gsmopen_dump_function); +#define GSMOPEN_DUMP_SYNTAX "gsmopen_dump " +/* BEGIN: Changes here */ +#define FULL_RELOAD 0 +#define SOFT_RELOAD 1 +/* END: Changes heres */ + +const char *interface_status[] = { /* should match GSMOPEN_STATE_xxx in gsmopen.h */ + "IDLE", + "DOWN", + "RING", + "DIALING", + "BUSY", + "UP", + "RINGING", + "PRERING", + "DOUBLE", + "SELECTD", + "HANG_RQ", + "PREANSW" +}; +const char *phone_callflow[] = { /* should match CALLFLOW_XXX in gsmopen.h */ + "CALL_IDLE", + "CALL_DOWN", + "INCOMING_RNG", + "CALL_DIALING", + "CALL_LINEBUSY", + "CALL_ACTIVE", + "INCOMING_HNG", + "CALL_RLEASD", + "CALL_NOCARR", + "CALL_INFLUX", + "CALL_INCOMING", + "CALL_FAILED", + "CALL_NOSRVC", + "CALL_OUTRESTR", + "CALL_SECFAIL", + "CALL_NOANSWER", + "STATUS_FNSHED", + "STATUS_CANCLED", + "STATUS_FAILED", + "STATUS_REFUSED", + "STATUS_RINGING", + "STATUS_INPROGRS", + "STATUS_UNPLACD", + "STATUS_ROUTING", + "STATUS_EARLYMD", + "INCOMING_CLID", + "STATUS_RMTEHOLD" +}; + + +static struct { + int debug; + char *ip; + int port; + char *dialplan; + char *destination; + char *context; + char *codec_string; + char *codec_order[SWITCH_MAX_CODECS]; + int codec_order_last; + char *codec_rates_string; + char *codec_rates[SWITCH_MAX_CODECS]; + int codec_rates_last; + unsigned int flags; + int fd; + int calls; + int real_interfaces; + int next_interface; + char hold_music[256]; + private_t GSMOPEN_INTERFACES[GSMOPEN_MAX_INTERFACES]; + switch_mutex_t *mutex; + private_t *gsm_console; +} globals; + +switch_endpoint_interface_t *gsmopen_endpoint_interface; +switch_memory_pool_t *gsmopen_module_pool = NULL; +int running = 0; + +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan); +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, globals.context); +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_destination, globals.destination); +//SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string); +//SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_rates_string, globals.codec_rates_string); + +/* BEGIN: Changes here */ +static switch_status_t interface_exists(char *the_interface); +#if 1 +static switch_status_t remove_interface(char *the_interface); +#endif //0 +/* END: Changes here */ + +static switch_status_t channel_on_init(switch_core_session_t *session); +static switch_status_t channel_on_hangup(switch_core_session_t *session); +static switch_status_t channel_on_destroy(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_consume_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); +static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); +static switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *session); + +static switch_status_t gsmopen_codec(private_t * tech_pvt, int sample_rate, int codec_ms) +{ + switch_core_session_t *session = NULL; + + if (switch_core_codec_init + (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1, + SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { + ERRORA("Can't load codec?\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + if (switch_core_codec_init + (&tech_pvt->write_codec, "L16", NULL, sample_rate, codec_ms, 1, + SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { + ERRORA("Can't load codec?\n", GSMOPEN_P_LOG); + switch_core_codec_destroy(&tech_pvt->read_codec); + return SWITCH_STATUS_FALSE; + } + + tech_pvt->read_frame.rate = sample_rate; + tech_pvt->read_frame.codec = &tech_pvt->read_codec; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + + if (session) { + switch_core_session_set_read_codec(session, &tech_pvt->read_codec); + switch_core_session_set_write_codec(session, &tech_pvt->write_codec); + switch_core_session_rwunlock(session); + } else { + ERRORA("no session\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + return SWITCH_STATUS_SUCCESS; + +} + +switch_status_t gsmopen_tech_init(private_t * tech_pvt, switch_core_session_t *session) +{ + +#ifdef WANT_SPEEX + int ciapa; + long level; + int tmp; +#endif// WANT_SPEEX + switch_assert(tech_pvt != NULL); + switch_assert(session != NULL); + tech_pvt->read_frame.data = tech_pvt->databuf; + tech_pvt->read_frame.buflen = sizeof(tech_pvt->databuf); + switch_mutex_init(&tech_pvt->mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + switch_core_session_set_private(session, tech_pvt); + switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str)); + if (!strlen(tech_pvt->session_uuid_str)) { + ERRORA("no tech_pvt->session_uuid_str\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + if (gsmopen_codec(tech_pvt, SAMPLERATE_GSMOPEN, 20) != SWITCH_STATUS_SUCCESS) { + ERRORA("gsmopen_codec FAILED\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, tech_pvt->read_codec.implementation->actual_samples_per_second); + //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, 8000); + dtmf_rx_init(&tech_pvt->dtmf_state, NULL, NULL); + dtmf_rx_parms(&tech_pvt->dtmf_state, 0, 10, 10, -99); + +#ifdef GSMOPEN_ALSA + if(tech_pvt->no_sound==0){ + if (alsa_init(tech_pvt)) { + ERRORA("alsa_init failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + + } + } +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + if(tech_pvt->no_sound==0){ + if (gsmopen_portaudio_init(tech_pvt)) { + ERRORA("gsmopen_portaudio_init failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + + } + } +#endif// GSMOPEN_PORTAUDIO + + if (switch_core_timer_init(&tech_pvt->timer_read, "soft", 20, tech_pvt->read_codec.implementation->samples_per_packet, gsmopen_module_pool) != + SWITCH_STATUS_SUCCESS) { + ERRORA("setup timer failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + switch_core_timer_sync(&tech_pvt->timer_read); + + if (switch_core_timer_init(&tech_pvt->timer_write, "soft", 20, tech_pvt->write_codec.implementation->samples_per_packet, gsmopen_module_pool) != + SWITCH_STATUS_SUCCESS) { + ERRORA("setup timer failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + switch_core_timer_sync(&tech_pvt->timer_write); + +#ifdef WANT_SPEEX + /* Echo canceller with 100 ms tail length */ +#ifndef GIOVA48 + tech_pvt->echo_state = speex_echo_state_init(160, 1024); + ciapa = 8000; +#else// GIOVA48 + tech_pvt->echo_state = speex_echo_state_init(960, 4800); + ciapa = 48000; +#endif // GIOVA48 + speex_echo_ctl(tech_pvt->echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &ciapa); + +#if 1 //NO MORE + /* Setup preprocessor and associate with echo canceller for residual echo suppression */ +#ifndef GIOVA48 + tech_pvt->preprocess = speex_preprocess_state_init(160, 8000); +#else// GIOVA48 + tech_pvt->preprocess = speex_preprocess_state_init(960, 48000); +#endif // GIOVA48 + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE, + tech_pvt->echo_state); + +#if 0 + /* Setup preprocessor various other goodies */ + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC, &tmp); + //level=8000.1; + //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_AGC_LEVEL, &level); + + // Let's turn off all of the 'denoisers' (eg denoise and dereverb, and vad too) because they start automatic gain on mic input on cm108 usb, also if it (the agc on usb) disbled through mixer + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DEREVERB, &tmp); + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_VAD, &tmp); +#endif + + tmp = 0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC, &tmp); + fprintf(stderr, "AGC is: %d\n", tmp); + level = 1.0; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_LEVEL, &level); + fprintf(stderr, "AGC_LEVEL is: %f\n", level); + //tmp=1; + //speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_TARGET, &tmp); + //fprintf( stderr, "AGC_TARGET is: %d\n", tmp ); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DENOISE, &tmp); + fprintf(stderr, "DENOISE is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_DEREVERB, &tmp); + fprintf(stderr, "DEREVERB is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_VAD, &tmp); + fprintf(stderr, "VAD is: %d\n", tmp); + +#if 0 + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_NOISE_SUPPRESS, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_NOISE_SUPPRESS is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE, + &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_MAX_GAIN, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_MAX_GAIN is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_INCREMENT, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_INCREMENT is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_AGC_DECREMENT, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_AGC_DECREMENT is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_START, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_START is: %d\n", tmp); + tmp = 1; + speex_preprocess_ctl(tech_pvt->preprocess, SPEEX_PREPROCESS_GET_PROB_CONTINUE, &tmp); + fprintf(stderr, "SPEEX_PREPROCESS_GET_PROB_CONTINUE is: %d\n", tmp); +#endif //0 +#endif// 0 //NO MORE + +#endif // WANT_SPEEX + + + + switch_clear_flag(tech_pvt, TFLAG_HANGUP); + DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; +} + +/* BEGIN: Changes here */ +static switch_status_t interface_exists(char *the_interface) +{ + int i; + int interface_id; + + if (*the_interface == '#') { /* look by interface id or interface name */ + the_interface++; + switch_assert(the_interface); + interface_id = atoi(the_interface); + + /* take a number as interface id */ + if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { + return SWITCH_STATUS_SUCCESS; + } + } else { + /* interface name */ + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { + return SWITCH_STATUS_SUCCESS; + break; + } + } + } + } else { /* look by gsmopen_user */ + + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].gsmopen_user)) { + if (strcmp(globals.GSMOPEN_INTERFACES[i].gsmopen_user, the_interface) == 0) { + return SWITCH_STATUS_SUCCESS; + } + } + } + } + return SWITCH_STATUS_FALSE; +} + +#if 1 +static switch_status_t remove_interface(char *the_interface) +{ + int x = 10; + unsigned int howmany = 8; + int interface_id = -1; + private_t *tech_pvt = NULL; + switch_status_t status; + + //running = 0; + + + //XXX if (*the_interface == '#') { /* remove by interface id or interface name */ + //XXX the_interface++; + switch_assert(the_interface); + interface_id = atoi(the_interface); + + if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { + /* take a number as interface id */ + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + } else { + + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + break; + } + } + } + //XXX } //else { /* remove by gsmopen_user */ + //for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + //if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) { + //tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + //break; + //} + //} + //} + + if (!tech_pvt) { + DEBUGA_GSMOPEN("interface '%s' does not exist\n", GSMOPEN_P_LOG, the_interface); + goto end; + } + + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].session_uuid_str)) { + DEBUGA_GSMOPEN("interface '%s' is busy\n", GSMOPEN_P_LOG, the_interface); + goto end; + } + + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { +#if 1 +#ifdef WIN32 + switch_file_write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die +#else /* WIN32 */ + howmany = write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", howmany); +#endif /* WIN32 */ +#endif //0 + DEBUGA_GSMOPEN("HERE will shutdown gsmopen_signaling_thread of '%s'\n", GSMOPEN_P_LOG, the_interface); + } + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { +#if 0 +#ifdef WIN32 + if (SendMessage(tech_pvt->GSMopenHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the gsmopen_api_thread_func die + DEBUGA_GSMOPEN("got FALSE here, thread probably was already dead. GetLastError returned: %d\n", GSMOPEN_P_LOG, GetLastError()); + globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread = NULL; + } +#else + XEvent e; + Atom atom1 = XInternAtom(tech_pvt->GSMopenHandles.disp, "GSMOPENCONTROLAPI_MESSAGE_BEGIN", False); + memset(&e, 0, sizeof(e)); + e.xclient.type = ClientMessage; + e.xclient.message_type = atom1; /* leading message */ + e.xclient.display = tech_pvt->GSMopenHandles.disp; + e.xclient.window = tech_pvt->GSMopenHandles.gsmopen_win; + e.xclient.format = 8; + + XSendEvent(tech_pvt->GSMopenHandles.disp, tech_pvt->GSMopenHandles.win, False, 0, &e); + XSync(tech_pvt->GSMopenHandles.disp, False); +#endif //WIN32 +#endif //0 + + DEBUGA_GSMOPEN("HERE will shutdown gsmopen_api_thread of '%s'\n", GSMOPEN_P_LOG, the_interface); + } + + while (x) { + x--; + switch_yield(50000); + } + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread); + } + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread); + } + + switch_mutex_lock(globals.mutex); + if (globals.gsm_console == &globals.GSMOPEN_INTERFACES[interface_id]) { + DEBUGA_GSMOPEN("interface '%s' no more console\n", GSMOPEN_P_LOG, the_interface); + globals.gsm_console = NULL; + } else { + DEBUGA_GSMOPEN("interface '%s' STILL console\n", GSMOPEN_P_LOG, the_interface); + } + memset(&globals.GSMOPEN_INTERFACES[interface_id], '\0', sizeof(private_t)); + globals.real_interfaces--; + switch_mutex_unlock(globals.mutex); + + DEBUGA_GSMOPEN("interface '%s' deleted successfully\n", GSMOPEN_P_LOG, the_interface); + globals.GSMOPEN_INTERFACES[interface_id].running = 1; + end: + //running = 1; + return SWITCH_STATUS_SUCCESS; +} +#endif //0 + +/* END: Changes here */ + +/* + State methods they get called when the state changes to the specific state + returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next + so if you fully implement the state you can return SWITCH_STATUS_FALSE to skip it. +*/ +static switch_status_t channel_on_init(switch_core_session_t *session) +{ + switch_channel_t *channel; + private_t *tech_pvt = NULL; + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_set_flag(tech_pvt, TFLAG_IO); + + /* Move channel's state machine to ROUTING. This means the call is trying + to get from the initial start where the call because, to the point + where a destination has been identified. If the channel is simply + left in the initial state, nothing will happen. */ + switch_channel_set_state(channel, CS_ROUTING); + switch_mutex_lock(globals.mutex); + globals.calls++; + + switch_mutex_unlock(globals.mutex); + DEBUGA_GSMOPEN("%s CHANNEL INIT %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_destroy(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + + tech_pvt = (private_t *) switch_core_session_get_private(session); + + + if (tech_pvt) { + DEBUGA_GSMOPEN("%s CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + if (switch_core_codec_ready(&tech_pvt->read_codec)) { + switch_core_codec_destroy(&tech_pvt->read_codec); + } + + if (switch_core_codec_ready(&tech_pvt->write_codec)) { + switch_core_codec_destroy(&tech_pvt->write_codec); + } + + switch_core_timer_destroy(&tech_pvt->timer_read); + switch_core_timer_destroy(&tech_pvt->timer_write); + +#ifdef GSMOPEN_ALSA + if(tech_pvt->no_sound==0){ + alsa_shutdown(tech_pvt); + } +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + if(tech_pvt->no_sound==0){ + if (gsmopen_portaudio_shutdown(tech_pvt)) { + ERRORA("gsmopen_portaudio_shutdown failed\n", GSMOPEN_P_LOG); + + } + } +#endif// GSMOPEN_PORTAUDIO + + + *tech_pvt->session_uuid_str = '\0'; + tech_pvt->interface_state = GSMOPEN_STATE_IDLE; + if (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED) { + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + } + switch_core_session_set_private(session, NULL); + } else { + DEBUGA_GSMOPEN("!!!!!!NO tech_pvt!!!! CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(session)); + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_hangup(switch_core_session_t *session) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + tech_pvt->phone_callflow = CALLFLOW_CALL_HANGUP_REQUESTED; + + if (!switch_channel_test_flag(channel, CF_ANSWERED)) { + if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + tech_pvt->ob_failed_calls++; + } else { + tech_pvt->ib_failed_calls++; + } + } + + + DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_clear_flag(tech_pvt, TFLAG_IO); + switch_clear_flag(tech_pvt, TFLAG_VOICE); + switch_set_flag(tech_pvt, TFLAG_HANGUP); + + gsmopen_hangup(tech_pvt); + + //memset(tech_pvt->session_uuid_str, '\0', sizeof(tech_pvt->session_uuid_str)); + //*tech_pvt->session_uuid_str = '\0'; + DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_mutex_lock(globals.mutex); + globals.calls--; + if (globals.calls < 0) { + globals.calls = 0; + } + + tech_pvt->interface_state = GSMOPEN_STATE_IDLE; + //FIXME if (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED) { + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + //FIXME } + switch_mutex_unlock(globals.mutex); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_routing(switch_core_session_t *session) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL ROUTING\n", GSMOPEN_P_LOG, tech_pvt->name); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_execute(switch_core_session_t *session) +{ + + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL EXECUTE\n", GSMOPEN_P_LOG, tech_pvt->name); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL KILL_CHANNEL\n", GSMOPEN_P_LOG, tech_pvt->name); + switch (sig) { + case SWITCH_SIG_KILL: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_KILL\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + //switch_mutex_lock(tech_pvt->flag_mutex); + switch_clear_flag(tech_pvt, TFLAG_IO); + switch_clear_flag(tech_pvt, TFLAG_VOICE); + switch_set_flag(tech_pvt, TFLAG_HANGUP); + //switch_mutex_unlock(tech_pvt->flag_mutex); + break; + case SWITCH_SIG_BREAK: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_BREAK\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + //switch_set_flag(tech_pvt, TFLAG_BREAK); + //switch_mutex_lock(tech_pvt->flag_mutex); + switch_set_flag(tech_pvt, TFLAG_BREAK); + //switch_mutex_unlock(tech_pvt->flag_mutex); + break; + default: + break; + } + + return SWITCH_STATUS_SUCCESS; +} +static switch_status_t channel_on_consume_media(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + + tech_pvt = (private_t *) switch_core_session_get_private(session); + + DEBUGA_GSMOPEN("%s CHANNEL CONSUME_MEDIA\n", GSMOPEN_P_LOG, tech_pvt->name); + return SWITCH_STATUS_SUCCESS; +} + + +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + tech_pvt = (private_t *) switch_core_session_get_private(session); + DEBUGA_GSMOPEN("%s CHANNEL EXCHANGE_MEDIA\n", GSMOPEN_P_LOG, tech_pvt->name); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + tech_pvt = (private_t *) switch_core_session_get_private(session); + DEBUGA_GSMOPEN("%s CHANNEL SOFT_EXECUTE\n", GSMOPEN_P_LOG, tech_pvt->name); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) +{ + private_t *tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL SEND_DTMF\n", GSMOPEN_P_LOG, tech_pvt->name); + DEBUGA_GSMOPEN("DTMF: %c\n", GSMOPEN_P_LOG, dtmf->digit); + + gsmopen_senddigit(tech_pvt, dtmf->digit); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + switch_byte_t *data; +#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + int samples; + char digit_str[256]; +#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#ifdef GSMOPEN_PORTAUDIO +#ifdef WANT_SPEEX + spx_int16_t *speexptr; + spx_int16_t pcm2[160]; + int i; +#endif// GSMOPEN_ALSA +#endif// WANT_SPEEX + + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + if (!switch_channel_ready(channel) || !switch_test_flag(tech_pvt, TFLAG_IO)) { + ERRORA("channel not ready \n", GSMOPEN_P_LOG); + //TODO: kill the bastard + return SWITCH_STATUS_FALSE; + } + + + tech_pvt->read_frame.flags = SFF_NONE; + *frame = NULL; + + if (switch_test_flag(tech_pvt, TFLAG_HANGUP)) { + return SWITCH_STATUS_FALSE; + } + +#ifndef GSMOPEN_PORTAUDIO + switch_core_timer_next(&tech_pvt->timer_read); +#endif// GSMOPEN_PORTAUDIO + + if(tech_pvt->no_sound==1){ + goto cng; + } +#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#ifdef GSMOPEN_ALSA + //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) + if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + if ((samples = gsmopen_portaudio_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) +#endif// GSMOPEN_PORTAUDIO + { + +#ifdef GSMOPEN_PORTAUDIO +#ifdef WANT_SPEEX + + if (tech_pvt->speexecho) { + speexptr = ((spx_int16_t *) tech_pvt->read_frame.data); + /* Perform echo cancellation */ + speex_echo_capture(tech_pvt->echo_state, speexptr, pcm2); +#ifndef GIOVA48 + for (i = 0; i < 160; i++) +#else //GIOVA48 + for (i = 0; i < 960; i++) +#endif //GIOVA48 + speexptr[i] = pcm2[i]; + } + /* Apply noise/echo residual suppression */ + if (tech_pvt->speexpreprocess) { + speex_preprocess_run(tech_pvt->preprocess, speexptr); + } + + DEBUGA_GSMOPEN("read\n", GSMOPEN_P_LOG); +#endif //WANT_SPEEX +#endif // GSMOPEN_PORTAUDIO + + + + + + tech_pvt->read_frame.datalen = samples * 2; + tech_pvt->read_frame.samples = samples; + +#ifndef GSMOPEN_PORTAUDIO + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; +#endif// GSMOPEN_PORTAUDIO + + *frame = &tech_pvt->read_frame; + + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } + + //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); + if (samples != 160) { + ERRORA("samples=%d\n", GSMOPEN_P_LOG, samples); + goto cng; + } +//DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp); + +//usleep(17000); +//usleep(17000); + + + + + + memset(digit_str, 0, sizeof(digit_str)); + //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); + //teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str)); + dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); + dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str)); + + gsmopen_sound_boost(tech_pvt->read_frame.data, tech_pvt->read_frame.samples, tech_pvt->capture_boost); + + if (digit_str[0]) { + switch_time_t new_dtmf_timestamp = switch_time_now(); + if ((new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp) > 350000) { //FIXME: make it configurable + char *p = digit_str; + switch_channel_t *channel = switch_core_session_get_channel(session); + + while (p && *p) { + switch_dtmf_t dtmf = {0}; + dtmf.digit = *p; + dtmf.duration = SWITCH_DEFAULT_DTMF_DURATION; + switch_channel_queue_dtmf(channel, &dtmf); + p++; + } + NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, + (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); + tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; + } + } + while (switch_test_flag(tech_pvt, TFLAG_IO)) { + if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { + switch_clear_flag(tech_pvt, TFLAG_BREAK); + DEBUGA_GSMOPEN("CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG); + goto cng; + } + + if (!switch_test_flag(tech_pvt, TFLAG_IO)) { + DEBUGA_GSMOPEN("CHANNEL READ FRAME not IO\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) { + switch_clear_flag(tech_pvt, TFLAG_VOICE); + if (!tech_pvt->read_frame.datalen) { + DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG); + continue; + } + *frame = &tech_pvt->read_frame; +#ifdef BIGENDIAN + if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { + switch_swap_linear((*frame)->data, (int) (*frame)->datalen / 2); + } +#endif + //WARNINGA("HERE\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; + } + + WARNINGA("HERE\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("CHANNEL READ no TFLAG_VOICE\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + + } + + DEBUGA_GSMOPEN("CHANNEL READ FALSE\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; +#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + cng: + data = (switch_byte_t *) tech_pvt->read_frame.data; + data[0] = 65; + data[1] = 0; + tech_pvt->read_frame.datalen = 2; + tech_pvt->read_frame.flags = SFF_CNG; + *frame = &tech_pvt->read_frame; +#ifdef GSMOPEN_PORTAUDIO + //speex_echo_state_reset(tech_pvt->stream->echo_state); +#endif // GSMOPEN_PORTAUDIO + return SWITCH_STATUS_SUCCESS; + +} + +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; +#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + unsigned int sent; +#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) +#ifdef GSMOPEN_PORTAUDIO +#ifdef WANT_SPEEX + spx_int16_t *speexptr; +#endif// GSMOPEN_ALSA +#endif// WANT_SPEEX + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + if (!switch_channel_ready(channel) || !switch_test_flag(tech_pvt, TFLAG_IO)) { + ERRORA("channel not ready \n", GSMOPEN_P_LOG); + //TODO: kill the bastard + return SWITCH_STATUS_FALSE; + } +#ifdef BIGENDIAN + if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { +#ifdef WIN32 + switch_swap_linear((int16_t *)frame->data, (int) frame->datalen / 2); +#else + switch_swap_linear(frame->data, (int) frame->datalen / 2); +#endif //WIN32 + } +#endif + + //switch_core_timer_next(&tech_pvt->timer_write); + //sent = frame->datalen; + + //ERRORA("PLAY \n", GSMOPEN_P_LOG); + //snd_pcm_writei(tech_pvt->alsap, (short *) frame->data, (int) (frame->datalen / 2)); + + gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); +#ifdef GSMOPEN_ALSA + + switch_core_timer_next(&tech_pvt->timer_write); + sent = alsa_write(tech_pvt, (short *) frame->data, (int) (frame->datalen)); +//DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); + + if (sent && sent != frame->datalen / 2 && sent != -1) { + DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); + } +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + sent = gsmopen_portaudio_write(tech_pvt, (short *) frame->data, (int) (frame->datalen)); +//DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); + + if (sent && sent != frame->datalen / 2 && sent != -1) { + DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); + } + +#ifdef WANT_SPEEX + if (tech_pvt->speexecho) { + speexptr = (spx_int16_t *) frame->data; + /* Put frame into playback buffer */ + speex_echo_playback(tech_pvt->echo_state, speexptr); + DEBUGA_GSMOPEN("write\n", GSMOPEN_P_LOG); + } +#endif //WANT_SPEEX +#endif // GSMOPEN_PORTAUDIO + //NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_answer_channel(switch_core_session_t *session) +{ + private_t *tech_pvt; + switch_channel_t *channel = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_set_flag(tech_pvt, TFLAG_IO); + gsmopen_serial_answer(tech_pvt); + + /* Move channel's state machine to ROUTING. This means the call is trying + to get from the initial start where the call because, to the point + where a destination has been identified. If the channel is simply + left in the initial state, nothing will happen. */ + switch_channel_set_state(channel, CS_ROUTING); + switch_mutex_lock(globals.mutex); + globals.calls++; + + switch_mutex_unlock(globals.mutex); + DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + + + + + + + + + + + + + + + + DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) +{ + switch_channel_t *channel; + private_t *tech_pvt; +#if defined(GSMOPEN_ALSA) + int samples; + short tmp_buffer[1280]; +#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + switch (msg->message_id) { + case SWITCH_MESSAGE_INDICATE_ANSWER: + { + DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); + channel_answer_channel(session); + } + break; + case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC: + + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_AUDIO_SYNC\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + switch_core_timer_sync(&tech_pvt->timer_read); + switch_core_timer_sync(&tech_pvt->timer_write); + +#ifdef GSMOPEN_ALSA + while ((samples = alsa_read(tech_pvt, tmp_buffer, tech_pvt->read_codec.implementation->samples_per_packet * 4)) > 160) { + //WARNINGA("read %d samples\n", GSMOPEN_P_LOG, samples); + } +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + //while ((samples = gsmopen_portaudio_read(tech_pvt, tmp_buffer, tech_pvt->read_codec.implementation->samples_per_packet * 2)) > 160) { + //WARNINGA("read %d samples\n", GSMOPEN_P_LOG, samples); + //} +#ifdef WANT_SPEEX + speex_echo_state_reset(tech_pvt->echo_state); +#endif// WANT_SPEEX +#endif// GSMOPEN_PORTAUDIO + break; + + + default: + { + DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); + } + break; + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_receive_event(switch_core_session_t *session, switch_event_t *event) +{ + struct private_object *tech_pvt = (struct private_object *) switch_core_session_get_private(session); + char *body = switch_event_get_body(event); + switch_assert(tech_pvt != NULL); + + if (!body) { + body = (char *) ""; + } + + WARNINGA("event: |||%s|||\n", GSMOPEN_P_LOG, body); + + return SWITCH_STATUS_SUCCESS; +} + +switch_state_handler_table_t gsmopen_state_handlers = { + /*.on_init */ channel_on_init, + /*.on_routing */ channel_on_routing, + /*.on_execute */ channel_on_execute, + /*.on_hangup */ channel_on_hangup, + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute, + /*.on_consume_media */ channel_on_consume_media, + /*.on_hibernate */ NULL, + /*.on_reset */ NULL, + /*.on_park */ NULL, + /*.on_reporting */ NULL, + /*.on_destroy */ channel_on_destroy +}; + +switch_io_routines_t gsmopen_io_routines = { + /*.outgoing_channel */ channel_outgoing_channel, + /*.read_frame */ channel_read_frame, + /*.write_frame */ channel_write_frame, + /*.kill_channel */ channel_kill_channel, + /*.send_dtmf */ channel_send_dtmf, + /*.receive_message */ channel_receive_message, + /*.receive_event */ channel_receive_event +}; + +static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause) +{ + private_t *tech_pvt = NULL; + if ((*new_session = switch_core_session_request(gsmopen_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, flags, pool)) != 0) { + switch_channel_t *channel = NULL; + switch_caller_profile_t *caller_profile; + char *rdest; + int found = 0; + char interface_name[256]; + + DEBUGA_GSMOPEN("1 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); + switch_core_session_add_stream(*new_session, NULL); + + + if (!zstr(outbound_profile->destination_number)) { + int i; + char *slash; + + switch_copy_string(interface_name, outbound_profile->destination_number, 255); + slash = strrchr(interface_name, '/'); + *slash = '\0'; + + switch_mutex_lock(globals.mutex); + if (strncmp("ANY", interface_name, strlen(interface_name)) == 0 || strncmp("RR", interface_name, strlen(interface_name)) == 0) { + /* we've been asked for the "ANY" interface, let's find the first idle interface */ + //DEBUGA_GSMOPEN("Finding one available gsmopen interface\n", GSMOPEN_P_LOG); + //tech_pvt = find_available_gsmopen_interface(NULL); + //if (tech_pvt) + //found = 1; + //} else if (strncmp("RR", interface_name, strlen(interface_name)) == 0) { + /* Find the first idle interface using Round Robin */ + DEBUGA_GSMOPEN("Finding one available gsmopen interface RR\n", GSMOPEN_P_LOG); + tech_pvt = find_available_gsmopen_interface_rr(NULL); + if (tech_pvt) { + found = 1; + DEBUGA_GSMOPEN("FOUND one available gsmopen interface RR\n", GSMOPEN_P_LOG); + } + } + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, interface_name, strlen(interface_name)) == 0)) { + if (strlen(globals.GSMOPEN_INTERFACES[i].session_uuid_str)) { + DEBUGA_GSMOPEN + ("globals.GSMOPEN_INTERFACES[%d].name=|||%s||| session_uuid_str=|||%s||| is BUSY\n", + GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].session_uuid_str); + DEBUGA_GSMOPEN("1 SESSION_DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION; + } + + DEBUGA_GSMOPEN("globals.GSMOPEN_INTERFACES[%d].name=|||%s|||?\n", GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name); + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + found = 1; + break; + } + + } + + } else { + ERRORA("Doh! no destination number?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + if (!found) { + DEBUGA_GSMOPEN("Doh! no available interface for |||%s|||?\n", GSMOPEN_P_LOG, interface_name); + DEBUGA_GSMOPEN("2 SESSION_DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + //return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + return SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION; + } + + channel = switch_core_session_get_channel(*new_session); + if (!channel) { + ERRORA("Doh! no channel?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + if (gsmopen_tech_init(tech_pvt, *new_session) != SWITCH_STATUS_SUCCESS) { + ERRORA("Doh! no tech_init?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + + if (outbound_profile) { + char name[128]; + + snprintf(name, sizeof(name), "gsmopen/%s", outbound_profile->destination_number); + //snprintf(name, sizeof(name), "gsmopen/%s", tech_pvt->name); + switch_channel_set_name(channel, name); + caller_profile = switch_caller_profile_clone(*new_session, outbound_profile); + switch_channel_set_caller_profile(channel, caller_profile); + tech_pvt->caller_profile = caller_profile; + } else { + ERRORA("Doh! no caller profile\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + tech_pvt->ob_calls++; + + rdest = strchr(caller_profile->destination_number, '/'); + *rdest++ = '\0'; + + //gsmopen_call(tech_pvt, rdest, 30); + + switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(*new_session), sizeof(tech_pvt->session_uuid_str)); + caller_profile = tech_pvt->caller_profile; + caller_profile->destination_number = rdest; + + switch_set_flag(tech_pvt, TFLAG_OUTBOUND); + switch_channel_set_state(channel, CS_INIT); + gsmopen_call(tech_pvt, rdest, 30); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_SUCCESS; + } + + ERRORA("Doh! no new_session\n", GSMOPEN_P_LOG); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; +} + +/*! + * \brief This thread runs during a call, and monitor the interface for signaling, like hangup, caller id, etc most of signaling is handled inside the gsmopen_signaling_read function + * + */ + +static switch_status_t load_config(int reload_type) +{ + const char *cf = "gsmopen.conf"; + switch_xml_t cfg, xml, global_settings, param, interfaces, myinterface; + private_t *tech_pvt = NULL; + + switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, gsmopen_module_pool); + if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { + ERRORA("open of %s failed\n", GSMOPEN_P_LOG, cf); + running = 0; + switch_xml_free(xml); + return SWITCH_STATUS_TERM; + } + + switch_mutex_lock(globals.mutex); + if ((global_settings = switch_xml_child(cfg, "global_settings"))) { + for (param = switch_xml_child(global_settings, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (!strcasecmp(var, "debug")) { + DEBUGA_GSMOPEN("globals.debug=%d\n", GSMOPEN_P_LOG, globals.debug); + globals.debug = atoi(val); + DEBUGA_GSMOPEN("globals.debug=%d\n", GSMOPEN_P_LOG, globals.debug); + } else if (!strcasecmp(var, "hold-music")) { + switch_set_string(globals.hold_music, val); + DEBUGA_GSMOPEN("globals.hold_music=%s\n", GSMOPEN_P_LOG, globals.hold_music); + } else if (!strcmp(var, "dialplan")) { + set_global_dialplan(val); + DEBUGA_GSMOPEN("globals.dialplan=%s\n", GSMOPEN_P_LOG, globals.dialplan); + } else if (!strcmp(var, "destination")) { + set_global_destination(val); + DEBUGA_GSMOPEN("globals.destination=%s\n", GSMOPEN_P_LOG, globals.destination); + } else if (!strcmp(var, "context")) { + set_global_context(val); + DEBUGA_GSMOPEN("globals.context=%s\n", GSMOPEN_P_LOG, globals.context); + + } + + } + } + + if ((interfaces = switch_xml_child(cfg, "per_interface_settings"))) { + int i = 0; + + for (myinterface = switch_xml_child(interfaces, "interface"); myinterface; myinterface = myinterface->next) { + char *id = (char *) switch_xml_attr(myinterface, "id"); + char *name = (char *) switch_xml_attr(myinterface, "name"); + const char *context = "default"; + const char *dialplan = "XML"; + const char *destination = "5000"; + const char *controldevice_name = "/dev/ttyACM0"; + char *digit_timeout = NULL; + char *max_digits = NULL; + char *hotline = NULL; + char *dial_regex = NULL; + char *hold_music = NULL; + char *fail_dial_regex = NULL; + const char *enable_callerid = "true"; + + + const char *at_dial_pre_number = "ATD"; + const char *at_dial_post_number = ";"; + const char *at_dial_expect = "OK"; + const char *at_hangup = "ATH"; + const char *at_hangup_expect = "OK"; + const char *at_answer = "ATA"; + const char *at_answer_expect = "OK"; + const char *at_send_dtmf = "AT+VTS"; + const char *at_preinit_1 = ""; + const char *at_preinit_1_expect = ""; + const char *at_preinit_2 = ""; + const char *at_preinit_2_expect = ""; + const char *at_preinit_3 = ""; + const char *at_preinit_3_expect = ""; + const char *at_preinit_4 = ""; + const char *at_preinit_4_expect = ""; + const char *at_preinit_5 = ""; + const char *at_preinit_5_expect = ""; + const char *at_postinit_1 = "at+cmic=0,9"; + const char *at_postinit_1_expect = "OK"; + const char *at_postinit_2 = "AT+CKPD=\"EEE\""; + const char *at_postinit_2_expect = "OK"; + const char *at_postinit_3 = "AT+CSSN=1,0"; + const char *at_postinit_3_expect = "OK"; + const char *at_postinit_4 = "at+sidet=0"; + const char *at_postinit_4_expect = "OK"; + const char *at_postinit_5 = "at+clvl=99"; + const char *at_postinit_5_expect = "OK"; + const char *at_query_battchg = "AT+CBC"; + const char *at_query_battchg_expect = "OK"; + const char *at_query_signal = "AT+CSQ"; + const char *at_query_signal_expect = "OK"; + const char *at_call_idle = "+MCST: 1"; + const char *at_call_incoming = "+MCST: 2"; + const char *at_call_active = "+CSSI: 7"; + const char *at_call_failed = "+MCST: 65"; + const char *at_call_calling = "+CSSI: 1"; + const char *at_indicator_noservice_string = "CIEV: 2;0"; + const char *at_indicator_nosignal_string = "CIEV: 5;0"; + const char *at_indicator_lowsignal_string = "CIEV: 5;1"; + const char *at_indicator_lowbattchg_string = "CIEV: 0;1"; + const char *at_indicator_nobattchg_string = "CIEV: 0;0"; + const char *at_indicator_callactive_string = "CIEV: 3;1"; + const char *at_indicator_nocallactive_string = "CIEV: 3;0"; + const char *at_indicator_nocallsetup_string = "CIEV: 6;0"; + const char *at_indicator_callsetupincoming_string = "CIEV: 6;1"; + const char *at_indicator_callsetupoutgoing_string = "CIEV: 6;2"; + const char *at_indicator_callsetupremoteringing_string = "CIEV: 6;3"; + //const char *sms_receiving_program = "/usr/local/bin/ciapalo"; + const char *alsacname = "plughw:1"; + const char *alsapname = "plughw:1"; + const char *at_early_audio = "0"; + const char *at_after_preinit_pause = "500000"; + const char *at_initial_pause = "500000"; + const char *at_has_clcc = "0"; + const char *at_has_ecam = "0"; + const char *alsa_period_size = "160"; + const char *alsa_periods_in_buffer = "4"; + const char *gsmopen_sound_rate = "8000"; + const char *alsa_play_is_mono = "1"; + const char *alsa_capture_is_mono = "1"; + const char *capture_boost = "5"; + const char *playback_boost = "10"; +#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + const char *no_sound = "0"; +#else + const char *no_sound = "1"; +#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + const char *portaudiocindex = "1"; + const char *portaudiopindex = "1"; + const char *speexecho = "1"; + const char *speexpreprocess = "1"; + + uint32_t interface_id = 0; +#ifdef WIN32 + int controldevice_speed = 115200; //FIXME TODO +#else + uint32_t controldevice_speed = B115200; //FIXME TODO +#endif //WIN32 + uint32_t controldevprotocol = PROTOCOL_AT; //FIXME TODO + uint32_t running = 1; //FIXME TODO + const char *gsmopen_serial_sync_period = "300"; //FIXME TODO + + + + tech_pvt = NULL; + + for (param = switch_xml_child(myinterface, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (!strcasecmp(var, "id")) { + id = val; + } else if (!strcasecmp(var, "name")) { + name = val; + } else if (!strcasecmp(var, "context")) { + context = val; + } else if (!strcasecmp(var, "dialplan")) { + dialplan = val; + } else if (!strcasecmp(var, "destination")) { + destination = val; + } else if (!strcasecmp(var, "controldevice_name")) { + controldevice_name = val; + } else if (!strcasecmp(var, "digit_timeout")) { + digit_timeout = val; + } else if (!strcasecmp(var, "max_digits")) { + max_digits = val; + } else if (!strcasecmp(var, "hotline")) { + hotline = val; + } else if (!strcasecmp(var, "dial_regex")) { + dial_regex = val; + } else if (!strcasecmp(var, SWITCH_HOLD_MUSIC_VARIABLE)) { + hold_music = val; + } else if (!strcasecmp(var, "fail_dial_regex")) { + fail_dial_regex = val; + } else if (!strcasecmp(var, "enable_callerid")) { + enable_callerid = val; + } else if (!strcasecmp(var, "at_dial_pre_number")) { + at_dial_pre_number = val; + } else if (!strcasecmp(var, "at_dial_post_number")) { + at_dial_post_number = val; + } else if (!strcasecmp(var, "at_dial_expect")) { + at_dial_expect = val; + } else if (!strcasecmp(var, "at_hangup")) { + at_hangup = val; + } else if (!strcasecmp(var, "at_hangup_expect")) { + at_hangup_expect = val; + } else if (!strcasecmp(var, "at_answer")) { + at_answer = val; + } else if (!strcasecmp(var, "at_answer_expect")) { + at_answer_expect = val; + } else if (!strcasecmp(var, "at_send_dtmf")) { + at_send_dtmf = val; + } else if (!strcasecmp(var, "at_preinit_1")) { + at_preinit_1 = val; + } else if (!strcasecmp(var, "at_preinit_1_expect")) { + at_preinit_1_expect = val; + } else if (!strcasecmp(var, "at_preinit_2")) { + at_preinit_2 = val; + } else if (!strcasecmp(var, "at_preinit_2_expect")) { + at_preinit_2_expect = val; + } else if (!strcasecmp(var, "at_preinit_3")) { + at_preinit_3 = val; + } else if (!strcasecmp(var, "at_preinit_3_expect")) { + at_preinit_3_expect = val; + } else if (!strcasecmp(var, "at_preinit_4")) { + at_preinit_4 = val; + } else if (!strcasecmp(var, "at_preinit_4_expect")) { + at_preinit_4_expect = val; + } else if (!strcasecmp(var, "at_preinit_5")) { + at_preinit_5 = val; + } else if (!strcasecmp(var, "at_preinit_5_expect")) { + at_preinit_5_expect = val; + } else if (!strcasecmp(var, "at_postinit_1")) { + at_postinit_1 = val; + } else if (!strcasecmp(var, "at_postinit_1_expect")) { + at_postinit_1_expect = val; + } else if (!strcasecmp(var, "at_postinit_2")) { + at_postinit_2 = val; + } else if (!strcasecmp(var, "at_postinit_2_expect")) { + at_postinit_2_expect = val; + } else if (!strcasecmp(var, "at_postinit_3")) { + at_postinit_3 = val; + } else if (!strcasecmp(var, "at_postinit_3_expect")) { + at_postinit_3_expect = val; + } else if (!strcasecmp(var, "at_postinit_4")) { + at_postinit_4 = val; + } else if (!strcasecmp(var, "at_postinit_4_expect")) { + at_postinit_4_expect = val; + } else if (!strcasecmp(var, "at_postinit_5")) { + at_postinit_5 = val; + } else if (!strcasecmp(var, "at_postinit_5_expect")) { + at_postinit_5_expect = val; + } else if (!strcasecmp(var, "at_query_battchg")) { + at_query_battchg = val; + } else if (!strcasecmp(var, "at_query_battchg_expect")) { + at_query_battchg_expect = val; + } else if (!strcasecmp(var, "at_query_signal")) { + at_query_signal = val; + } else if (!strcasecmp(var, "at_query_signal_expect")) { + at_query_signal_expect = val; + } else if (!strcasecmp(var, "at_call_idle")) { + at_call_idle = val; + } else if (!strcasecmp(var, "at_call_incoming")) { + at_call_incoming = val; + } else if (!strcasecmp(var, "at_call_active")) { + at_call_active = val; + } else if (!strcasecmp(var, "at_call_failed")) { + at_call_failed = val; + } else if (!strcasecmp(var, "at_call_calling")) { + at_call_calling = val; + } else if (!strcasecmp(var, "at_indicator_noservice_string")) { + at_indicator_noservice_string = val; + } else if (!strcasecmp(var, "at_indicator_nosignal_string")) { + at_indicator_nosignal_string = val; + } else if (!strcasecmp(var, "at_indicator_lowsignal_string")) { + at_indicator_lowsignal_string = val; + } else if (!strcasecmp(var, "at_indicator_lowbattchg_string")) { + at_indicator_lowbattchg_string = val; + } else if (!strcasecmp(var, "at_indicator_nobattchg_string")) { + at_indicator_nobattchg_string = val; + } else if (!strcasecmp(var, "at_indicator_callactive_string")) { + at_indicator_callactive_string = val; + } else if (!strcasecmp(var, "at_indicator_nocallactive_string")) { + at_indicator_nocallactive_string = val; + } else if (!strcasecmp(var, "at_indicator_nocallsetup_string")) { + at_indicator_nocallsetup_string = val; + } else if (!strcasecmp(var, "at_indicator_callsetupincoming_string")) { + at_indicator_callsetupincoming_string = val; + } else if (!strcasecmp(var, "at_indicator_callsetupoutgoing_string")) { + at_indicator_callsetupoutgoing_string = val; + } else if (!strcasecmp(var, "at_indicator_callsetupremoteringing_string")) { + at_indicator_callsetupremoteringing_string = val; + //} else if (!strcasecmp(var, "sms_receiving_program")) { + //sms_receiving_program = val; + } else if (!strcasecmp(var, "alsacname")) { + alsacname = val; + } else if (!strcasecmp(var, "alsapname")) { + alsapname = val; + } else if (!strcasecmp(var, "portaudiocindex")) { + portaudiocindex = val; + } else if (!strcasecmp(var, "portaudiopindex")) { + portaudiopindex = val; + } else if (!strcasecmp(var, "speexecho")) { + speexecho = val; + } else if (!strcasecmp(var, "speexpreprocess")) { + speexpreprocess = val; + } else if (!strcasecmp(var, "at_early_audio")) { + at_early_audio = val; + } else if (!strcasecmp(var, "at_after_preinit_pause")) { + at_after_preinit_pause = val; + } else if (!strcasecmp(var, "at_initial_pause")) { + at_initial_pause = val; + } else if (!strcasecmp(var, "at_has_clcc")) { + at_has_clcc = val; + } else if (!strcasecmp(var, "at_has_ecam")) { + at_has_ecam = val; + } else if (!strcasecmp(var, "alsa_period_size")) { + alsa_period_size = val; + } else if (!strcasecmp(var, "alsa_periods_in_buffer")) { + alsa_periods_in_buffer = val; + } else if (!strcasecmp(var, "gsmopen_sound_rate")) { + gsmopen_sound_rate = val; + } else if (!strcasecmp(var, "alsa_play_is_mono")) { + alsa_play_is_mono = val; + } else if (!strcasecmp(var, "alsa_capture_is_mono")) { + alsa_capture_is_mono = val; + } else if (!strcasecmp(var, "capture_boost")) { + capture_boost = val; + } else if (!strcasecmp(var, "playback_boost")) { + playback_boost = val; + } else if (!strcasecmp(var, "no_sound")) { + no_sound = val; + } else if (!strcasecmp(var, "gsmopen_serial_sync_period")) { + gsmopen_serial_sync_period = val; + } + + + } + + /* BEGIN: Changes here */ + if (reload_type == SOFT_RELOAD) { + char the_interface[256]; + sprintf(the_interface, "#%s", name); + + if (interface_exists(the_interface) == SWITCH_STATUS_SUCCESS) { + continue; + } + } + /* END: Changes here */ + + if (!id) { + ERRORA("interface missing REQUIRED param 'id'\n", GSMOPEN_P_LOG); + continue; + } + + if (switch_is_number(id)) { + interface_id = atoi(id); + } else { + ERRORA("interface param 'id' MUST be a number, now id='%s'\n", GSMOPEN_P_LOG, id); + continue; + } + + if (!switch_is_number(at_early_audio)) { + ERRORA("interface param 'at_early_audio' MUST be a number, now at_early_audio='%s'\n", GSMOPEN_P_LOG, at_early_audio); + continue; + } + if (!switch_is_number(at_after_preinit_pause)) { + ERRORA("interface param 'at_after_preinit_pause' MUST be a number, now at_after_preinit_pause='%s'\n", GSMOPEN_P_LOG, + at_after_preinit_pause); + continue; + } + if (!switch_is_number(at_initial_pause)) { + ERRORA("interface param 'at_initial_pause' MUST be a number, now at_initial_pause='%s'\n", GSMOPEN_P_LOG, at_initial_pause); + continue; + } + if (!switch_is_number(at_has_clcc)) { + ERRORA("interface param 'at_has_clcc' MUST be a number, now at_has_clcc='%s'\n", GSMOPEN_P_LOG, at_has_clcc); + continue; + } + if (!switch_is_number(at_has_ecam)) { + ERRORA("interface param 'at_has_ecam' MUST be a number, now at_has_ecam='%s'\n", GSMOPEN_P_LOG, at_has_ecam); + continue; + } + if (!switch_is_number(alsa_period_size)) { + ERRORA("interface param 'alsa_period_size' MUST be a number, now alsa_period_size='%s'\n", GSMOPEN_P_LOG, alsa_period_size); + continue; + } + if (!switch_is_number(alsa_periods_in_buffer)) { + ERRORA("interface param 'alsa_periods_in_buffer' MUST be a number, now alsa_periods_in_buffer='%s'\n", GSMOPEN_P_LOG, + alsa_periods_in_buffer); + continue; + } + if (!switch_is_number(gsmopen_sound_rate)) { + ERRORA("interface param 'gsmopen_sound_rate' MUST be a number, now gsmopen_sound_rate='%s'\n", GSMOPEN_P_LOG, gsmopen_sound_rate); + continue; + } + if (!switch_is_number(alsa_play_is_mono)) { + ERRORA("interface param 'alsa_play_is_mono' MUST be a number, now alsa_play_is_mono='%s'\n", GSMOPEN_P_LOG, alsa_play_is_mono); + continue; + } + if (!switch_is_number(alsa_capture_is_mono)) { + ERRORA("interface param 'alsa_capture_is_mono' MUST be a number, now alsa_capture_is_mono='%s'\n", GSMOPEN_P_LOG, alsa_capture_is_mono); + continue; + } + if (!switch_is_number(capture_boost)) { + ERRORA("interface param 'capture_boost' MUST be a number, now capture_boost='%s'\n", GSMOPEN_P_LOG, capture_boost); + continue; + } + if (!switch_is_number(playback_boost)) { + ERRORA("interface param 'playback_boost' MUST be a number, now playback_boost='%s'\n", GSMOPEN_P_LOG, playback_boost); + continue; + } + if (!switch_is_number(no_sound)) { + ERRORA("interface param 'no_sound' MUST be a number, now no_sound='%s'\n", GSMOPEN_P_LOG, no_sound); + continue; + } + if (!switch_is_number(gsmopen_serial_sync_period)) { + ERRORA("interface param 'gsmopen_serial_sync_period' MUST be a number, now gsmopen_serial_sync_period='%s'\n", GSMOPEN_P_LOG, gsmopen_serial_sync_period); + continue; + } + + + if (interface_id && interface_id < GSMOPEN_MAX_INTERFACES) { + private_t newconf; + switch_threadattr_t *gsmopen_api_thread_attr = NULL; + int res = 0; + + memset(&newconf, '\0', sizeof(newconf)); + globals.GSMOPEN_INTERFACES[interface_id] = newconf; + + + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + + switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); + + + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].id, id); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].name, name); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].context, context); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dialplan, dialplan); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].destination, destination); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_name, controldevice_name); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dial_regex, dial_regex); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].hold_music, hold_music); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].fail_dial_regex, fail_dial_regex); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_pre_number, at_dial_pre_number); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_post_number, at_dial_post_number); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_expect, at_dial_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_hangup, at_hangup); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_hangup_expect, at_hangup_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_answer, at_answer); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_answer_expect, at_answer_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_send_dtmf, at_send_dtmf); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_1, at_preinit_1); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_1_expect, at_preinit_1_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_2, at_preinit_2); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_2_expect, at_preinit_2_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_3, at_preinit_3); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_3_expect, at_preinit_3_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_4, at_preinit_4); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_4_expect, at_preinit_4_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_5, at_preinit_5); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_5_expect, at_preinit_5_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_1, at_postinit_1); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_1_expect, at_postinit_1_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_2, at_postinit_2); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_2_expect, at_postinit_2_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_3, at_postinit_3); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_3_expect, at_postinit_3_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_4, at_postinit_4); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_4_expect, at_postinit_4_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_5, at_postinit_5); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_5_expect, at_postinit_5_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_battchg, at_query_battchg); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_battchg_expect, at_query_battchg_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_signal, at_query_signal); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_signal_expect, at_query_signal_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_idle, at_call_idle); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_incoming, at_call_incoming); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_active, at_call_active); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_failed, at_call_failed); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_calling, at_call_calling); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_noservice_string, at_indicator_noservice_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nosignal_string, at_indicator_nosignal_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_lowsignal_string, at_indicator_lowsignal_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_lowbattchg_string, at_indicator_lowbattchg_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nobattchg_string, at_indicator_nobattchg_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callactive_string, at_indicator_callactive_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nocallactive_string, at_indicator_nocallactive_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nocallsetup_string, at_indicator_nocallsetup_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupincoming_string, at_indicator_callsetupincoming_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupoutgoing_string, at_indicator_callsetupoutgoing_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupremoteringing_string, + at_indicator_callsetupremoteringing_string); + //switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].sms_receiving_program, sms_receiving_program); +#ifdef GSMOPEN_ALSA + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsacname, alsacname); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsapname, alsapname); +#endif// GSMOPEN_ALSA + +#ifdef GSMOPEN_PORTAUDIO + globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = atoi(portaudiocindex); + globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = atoi(portaudiopindex); + globals.GSMOPEN_INTERFACES[interface_id].speexecho = atoi(speexecho); + globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = atoi(speexpreprocess); +#endif// GSMOPEN_PORTAUDIO + globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio); + globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause); + globals.GSMOPEN_INTERFACES[interface_id].at_initial_pause = atoi(at_initial_pause); + globals.GSMOPEN_INTERFACES[interface_id].at_has_clcc = atoi(at_has_clcc); + globals.GSMOPEN_INTERFACES[interface_id].at_has_ecam = atoi(at_has_ecam); +#ifdef GSMOPEN_ALSA + globals.GSMOPEN_INTERFACES[interface_id].alsa_period_size = atoi(alsa_period_size); + globals.GSMOPEN_INTERFACES[interface_id].alsa_periods_in_buffer = atoi(alsa_periods_in_buffer); + globals.GSMOPEN_INTERFACES[interface_id].gsmopen_sound_rate = atoi(gsmopen_sound_rate); + globals.GSMOPEN_INTERFACES[interface_id].alsa_play_is_mono = atoi(alsa_play_is_mono); + globals.GSMOPEN_INTERFACES[interface_id].alsa_capture_is_mono = atoi(alsa_capture_is_mono); +#endif// GSMOPEN_ALSA + globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost); + globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost); +#if defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); +#else + globals.GSMOPEN_INTERFACES[interface_id].no_sound = 1; +#endif // defined(GSMOPEN_ALSA) || defined(GSMOPEN_PORTAUDIO) + globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); + + + + globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed = controldevice_speed; //FIXME + globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol = controldevprotocol; //FIXME + globals.GSMOPEN_INTERFACES[interface_id].running = running; //FIXME + + + + WARNINGA("STARTING interface_id=%d\n", GSMOPEN_P_LOG, interface_id); + DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].id); + DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].name); + DEBUGA_GSMOPEN("hold-music=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].hold_music); + DEBUGA_GSMOPEN("context=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].context); + DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].dialplan); + DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].destination); + DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_name); +#ifdef GSMOPEN_ALSA + DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsacname); + DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsapname); +#endif// GSMOPEN_ALSA + + +#ifdef GSMOPEN_PORTAUDIO + //FIXME + //globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex = 1; + //globals.GSMOPEN_INTERFACES[interface_id].portaudiopindex = 1; + //globals.GSMOPEN_INTERFACES[interface_id].speexecho = 1; + //globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess = 1; + DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex); + DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].portaudiocindex); + DEBUGA_GSMOPEN("speexecho=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].speexecho); + DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].speexpreprocess); +#endif// GSMOPEN_PORTAUDIO + DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); + /* init the serial port */ + if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { + globals.GSMOPEN_INTERFACES[interface_id].controldevfd = + gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed); + if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) { + ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + } + } + + /* config the phone/modem on the serial port */ + if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { + res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); + if (res) { + int count = 0; + ERRORA("gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG); + while(res && count < 5){ + switch_sleep(100000); //0.1 seconds + res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); + count++; + if (res) { + ERRORA("%d: gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG, count); + } + } + if (res) { + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_config failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + } + } + } + + if(globals.GSMOPEN_INTERFACES[interface_id].no_sound==0){ +#ifdef GSMOPEN_ALSA + if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("alsa_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "alsa_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + + } + + if (alsa_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "alsa_shutdown failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + + } +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + if (gsmopen_portaudio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("gsmopen_portaudio_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_portaudio_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + + } + + if (gsmopen_portaudio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("gsmopen_portaudio_shutdown failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running=0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_portaudio_shutdown failed"); + globals.GSMOPEN_INTERFACES[interface_id].active=0; + globals.GSMOPEN_INTERFACES[interface_id].name[0]='\0'; + continue; + + } +#endif// GSMOPEN_PORTAUDIO + } + + globals.GSMOPEN_INTERFACES[interface_id].active=1; + + //gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME + //gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME + gsmopen_store_boost((char *) capture_boost, &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME + gsmopen_store_boost((char *) playback_boost, &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME + + switch_sleep(100000); + switch_threadattr_create(&gsmopen_api_thread_attr, gsmopen_module_pool); + switch_threadattr_stacksize_set(gsmopen_api_thread_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread, gsmopen_api_thread_attr, gsmopen_do_gsmopenapi_thread, + &globals.GSMOPEN_INTERFACES[interface_id], gsmopen_module_pool); + + switch_sleep(100000); + WARNINGA("STARTED interface_id=%d\n", GSMOPEN_P_LOG, interface_id); + + } else { + ERRORA("interface id %d is higher than GSMOPEN_MAX_INTERFACES (%d)\n", GSMOPEN_P_LOG, interface_id, GSMOPEN_MAX_INTERFACES); + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "interface id is higher than GSMOPEN_MAX_INTERFACES"); + continue; + } + + } + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + /* How many real intterfaces */ + globals.real_interfaces = i + 1; + + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + + DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].id); + DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].name); + DEBUGA_GSMOPEN("context=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].context); + DEBUGA_GSMOPEN("hold-music=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].hold_music); + DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].dialplan); + DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].destination); + DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_name); +#ifdef GSMOPEN_ALSA + DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsacname); + DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsapname); +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + DEBUGA_GSMOPEN("portaudiocindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].portaudiocindex); + DEBUGA_GSMOPEN("portaudiopindex=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].portaudiopindex); + DEBUGA_GSMOPEN("speexecho=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexecho); + DEBUGA_GSMOPEN("speexpreprocess=%d\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].speexpreprocess); +#endif// GSMOPEN_PORTAUDIO + DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int)globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); + + } + } + } + + switch_mutex_unlock(globals.mutex); + switch_xml_free(xml); + + return SWITCH_STATUS_SUCCESS; +} + +//static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint) +static switch_status_t chat_send(switch_event_t *message_event) +{ + char *user, *host, *f_user = NULL, *f_host = NULL, *f_resource = NULL; + private_t *tech_pvt = NULL; + int i = 0, found = 0; + + const char *proto; + const char *from; + const char *to; + const char *subject; + const char *body; + //const char *type; + const char *hint; + + proto = switch_event_get_header(message_event, "proto"); + from = switch_event_get_header(message_event, "from"); + to = switch_event_get_header(message_event, "to"); + subject = switch_event_get_header(message_event, "subject"); + body = switch_event_get_body(message_event); + //type = switch_event_get_header(message_event, "type"); + hint = switch_event_get_header(message_event, "hint"); + + switch_assert(proto != NULL); + + DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, + hint ? hint : "NULL"); + + if (!to || !strlen(to)) { + ERRORA("Missing To: header.\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; + } + + if ((!from && !hint) || (!strlen(from) && !strlen(hint))) { + ERRORA("Missing From: AND Hint: headers.\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; + } + + if (from && (f_user = strdup(from))) { + if ((f_host = strchr(f_user, '@'))) { + *f_host++ = '\0'; + if ((f_resource = strchr(f_host, '/'))) { + *f_resource++ = '\0'; + } + } + } + + if (!strlen(hint)) { //FIXME FIXME FIXME + hint = from; + } + if (to && (user = strdup(to))) { + if ((host = strchr(user, '@'))) { + *host++ = '\0'; + } + + DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, + hint ? hint : "NULL"); + if (hint && strlen(hint)) { + //in hint we receive the interface name to use + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, hint, strlen(hint)) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + DEBUGA_GSMOPEN("Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", GSMOPEN_P_LOG, i, + globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + } + } /* FIXME add a tech_pvt member for the SIM telephone number //else { + //we have no a predefined interface name to use (hint is NULL), so let's choose an interface from the username (from) + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].skype_user, from, strlen(from)) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + DEBUGA_GSMOPEN("Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + } + } + */ + if (!found) { + ERRORA("ERROR: A GSMopen interface with name='%s' or one with SIM_number='%s' was not found\n", GSMOPEN_P_LOG, hint ? hint : "NULL", + from ? from : "NULL"); + goto end; + } else { + gsmopen_sendsms(tech_pvt, (char *) to, (char *) body); + } + } + end: + switch_safe_free(user); + switch_safe_free(f_user); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t compat_chat_send(const char *proto, const char *from, const char *to, + const char *subject, const char *body, const char *type, const char *hint) +{ + switch_event_t *message_event; + switch_status_t status; + + if (switch_event_create(&message_event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "proto", proto); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "from", from); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "to", to); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "subject", subject); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "type", type); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "hint", hint); + + if (body) { + switch_event_add_body(message_event, "%s", body); + } + } else { + abort(); + } + + status = chat_send(message_event); + switch_event_destroy(&message_event); + + return status; + +} + +SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load) +{ + switch_api_interface_t *commands_api_interface; + switch_chat_interface_t *chat_interface; + + gsmopen_module_pool = pool; + memset(&globals, '\0', sizeof(globals)); + + running = 1; + + if (load_config(FULL_RELOAD) != SWITCH_STATUS_SUCCESS) { + running = 0; + return SWITCH_STATUS_FALSE; + } + + if (switch_event_reserve_subclass(MY_EVENT_INCOMING_SMS) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass!\n"); + return SWITCH_STATUS_GENERR; + } + + *module_interface = switch_loadable_module_create_module_interface(pool, modname); + gsmopen_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + gsmopen_endpoint_interface->interface_name = "gsmopen"; + gsmopen_endpoint_interface->io_routines = &gsmopen_io_routines; + gsmopen_endpoint_interface->state_handler = &gsmopen_state_handlers; + + if (running) { + +#if 1 + SWITCH_ADD_API(commands_api_interface, "gsm", "gsm console AT_command", gsm_function, GSM_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen", "gsmopen interface AT_command", gsmopen_function, GSMOPEN_SYNTAX); +#endif //0 + SWITCH_ADD_API(commands_api_interface, "gsmopen_boost_audio", "gsmopen_boost_audio interface AT_command", gsmopen_boost_audio_function, GSMOPEN_BOOST_AUDIO_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen_dump", "gsmopen_dump interface", gsmopen_dump_function, GSMOPEN_DUMP_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen_sendsms", "gsmopen_sendsms interface destination_number SMS_text", sendsms_function, + SENDSMS_SYNTAX); + SWITCH_ADD_CHAT(chat_interface, GSMOPEN_CHAT_PROTO, chat_send); + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; + } else + return SWITCH_STATUS_FALSE; +} + +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown) +{ + int x; + private_t *tech_pvt = NULL; + switch_status_t status; + unsigned int howmany = 8; + int interface_id; + int fd; + + running = 0; + + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { + WARNINGA("SHUTDOWN interface_id=%d\n", GSMOPEN_P_LOG, interface_id); + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { +#ifdef WIN32 + switch_file_write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die +#else /* WIN32 */ + howmany = write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", howmany); +#endif /* WIN32 */ + } + x = 10; + while (x) { //FIXME 0.5 seconds? + x--; + switch_yield(50000); + } + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread); + } + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread); + } + + x = 10; + while (x) { //FIXME 0.5 seconds? + x--; + switch_yield(50000); + } + fd = tech_pvt->controldevfd; + //DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); + if (fd) { + //close(fd); + //tech_pvt->controldevfd = -1; + DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); + } +#ifndef WIN32 + shutdown(tech_pvt->audiogsmopenpipe[0], 2); + close(tech_pvt->audiogsmopenpipe[0]); + shutdown(tech_pvt->audiogsmopenpipe[1], 2); + close(tech_pvt->audiogsmopenpipe[1]); + shutdown(tech_pvt->audiopipe[0], 2); + close(tech_pvt->audiopipe[0]); + shutdown(tech_pvt->audiopipe[1], 2); + close(tech_pvt->audiopipe[1]); + shutdown(tech_pvt->GSMopenHandles.fdesc[0], 2); + close(tech_pvt->GSMopenHandles.fdesc[0]); + shutdown(tech_pvt->GSMopenHandles.fdesc[1], 2); + close(tech_pvt->GSMopenHandles.fdesc[1]); +#endif /* WIN32 */ + } + + } + + switch_event_free_subclass(MY_EVENT_INCOMING_SMS); + + switch_safe_free(globals.dialplan); + switch_safe_free(globals.context); + switch_safe_free(globals.destination); + switch_safe_free(globals.codec_string); + switch_safe_free(globals.codec_rates_string); + + return SWITCH_STATUS_SUCCESS; +} + + +void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t * thread, void *obj) +{ + return gsmopen_do_gsmopenapi_thread_func(obj); +} + +int dtmf_received(private_t * tech_pvt, char *value) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + channel = switch_core_session_get_channel(session); + + if (channel) { + + if (!switch_channel_test_flag(channel, CF_BRIDGED)) { + + switch_dtmf_t dtmf = { (char) value[0], switch_core_default_dtmf_duration(0) }; + DEBUGA_GSMOPEN("received DTMF %c on channel %s\n", GSMOPEN_P_LOG, dtmf.digit, switch_channel_get_name(channel)); + switch_mutex_lock(tech_pvt->flag_mutex); + //FIXME: why sometimes DTMFs from here do not seems to be get by FS? + switch_channel_queue_dtmf(channel, &dtmf); + switch_set_flag(tech_pvt, TFLAG_DTMF); + switch_mutex_unlock(tech_pvt->flag_mutex); + } else { + DEBUGA_GSMOPEN + ("received a DTMF on channel %s, but we're BRIDGED, so let's NOT relay it out of band\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + } + } else { + WARNINGA("received %c DTMF, but no channel?\n", GSMOPEN_P_LOG, value[0]); + } + switch_core_session_rwunlock(session); + + return 0; +} + +int new_inbound_channel(private_t * tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + switch_assert(tech_pvt != NULL); + tech_pvt->ib_calls++; + if ((session = switch_core_session_request(gsmopen_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL)) != 0) { + DEBUGA_GSMOPEN("2 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(session)); + switch_core_session_add_stream(session, NULL); + channel = switch_core_session_get_channel(session); + if (!channel) { + ERRORA("Doh! no channel?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(&session); + return 0; + } + if (gsmopen_tech_init(tech_pvt, session) != SWITCH_STATUS_SUCCESS) { + ERRORA("Doh! no tech_init?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(&session); + return 0; + } + + if ((tech_pvt->caller_profile = + switch_caller_profile_new(switch_core_session_get_pool(session), "gsmopen", + tech_pvt->dialplan, tech_pvt->callid_name, + tech_pvt->callid_number, NULL, NULL, NULL, NULL, "mod_gsmopen", tech_pvt->context, tech_pvt->destination)) != 0) { + char name[128]; + //switch_snprintf(name, sizeof(name), "gsmopen/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); + switch_snprintf(name, sizeof(name), "gsmopen/%s", tech_pvt->name); + switch_channel_set_name(channel, name); + switch_channel_set_caller_profile(channel, tech_pvt->caller_profile); + } + switch_channel_set_state(channel, CS_INIT); + if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) { + ERRORA("Error spawning thread\n", GSMOPEN_P_LOG); + switch_core_session_destroy(&session); + return 0; + } + } + if (channel) { + //switch_channel_mark_answered(channel); + } + + DEBUGA_GSMOPEN("new_inbound_channel\n", GSMOPEN_P_LOG); + + return 0; +} + +int remote_party_is_ringing(private_t * tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + goto done; + } + if (session) { + channel = switch_core_session_get_channel(session); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + goto done; + } + if (channel) { + switch_channel_mark_ring_ready(channel); + DEBUGA_GSMOPEN("gsmopen_call: REMOTE PARTY RINGING\n", GSMOPEN_P_LOG); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + } + + switch_core_session_rwunlock(session); + + done: + return 0; +} + +int remote_party_is_early_media(private_t * tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n\n\n", GSMOPEN_P_LOG); + //TODO: kill the bastard + goto done; + } + if (session) { + channel = switch_core_session_get_channel(session); + switch_core_session_add_stream(session, NULL); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + //TODO: kill the bastard + goto done; + } + if (channel) { + switch_channel_mark_pre_answered(channel); + DEBUGA_GSMOPEN("gsmopen_call: REMOTE PARTY EARLY MEDIA\n", GSMOPEN_P_LOG); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + //TODO: kill the bastard + } + + switch_core_session_rwunlock(session); + + done: + return 0; +} + +int outbound_channel_answered(private_t * tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + goto done; + } + if (session) { + channel = switch_core_session_get_channel(session); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + goto done; + } + if (channel) { + switch_channel_mark_answered(channel); + tech_pvt->phone_callflow = GSMOPEN_STATE_UP; + tech_pvt->interface_state = GSMOPEN_STATE_UP; + //DEBUGA_GSMOPEN("gsmopen_call: %s, answered\n", GSMOPEN_P_LOG, id); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + } + + switch_core_session_rwunlock(session); + + done: + DEBUGA_GSMOPEN("outbound_channel_answered!\n", GSMOPEN_P_LOG); + + return 0; +} + +private_t *find_available_gsmopen_interface_rr(private_t * tech_pvt_calling) +{ + private_t *tech_pvt = NULL; + int i; + //int num_interfaces = GSMOPEN_MAX_INTERFACES; + //int num_interfaces = globals.real_interfaces; + + switch_mutex_lock(globals.mutex); + + /* Fact is the real interface start from 1 */ + //XXX no, is just a convention, but you can have it start from 0. I do not, for aestetic reasons :-) + //if (globals.next_interface == 0) globals.next_interface = 1; + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + int interface_id; + + interface_id = globals.next_interface; + //interface_id = interface_id < GSMOPEN_MAX_INTERFACES ? interface_id : interface_id - GSMOPEN_MAX_INTERFACES + 1; + globals.next_interface = interface_id + 1 < GSMOPEN_MAX_INTERFACES ? interface_id + 1 : 0; + + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { + int gsmopen_state = 0; + + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + gsmopen_state = tech_pvt->interface_state; + DEBUGA_GSMOPEN("gsmopen interface: %d, name: %s, state: %d\n", GSMOPEN_P_LOG, interface_id, globals.GSMOPEN_INTERFACES[interface_id].name, + gsmopen_state); + if ((tech_pvt_calling ? strcmp(tech_pvt->gsmopen_user, tech_pvt_calling->gsmopen_user) : 1) + && (GSMOPEN_STATE_DOWN == gsmopen_state || 0 == gsmopen_state) && (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED + || 0 == tech_pvt->phone_callflow)) { + DEBUGA_GSMOPEN("returning as available gsmopen interface name: %s, state: %d callflow: %d\n", GSMOPEN_P_LOG, tech_pvt->name, gsmopen_state, + tech_pvt->phone_callflow); + /*set to Dialing state to avoid other thread fint it, don't know if it is safe */ + //XXX no, it's not safe + if (tech_pvt_calling == NULL) { + tech_pvt->interface_state = GSMOPEN_STATE_SELECTED; + } + + switch_mutex_unlock(globals.mutex); + return tech_pvt; + } + } // else { + //DEBUGA_GSMOPEN("GSM interface: %d blank!! A hole here means we cannot hunt the last interface.\n", GSMOPEN_P_LOG, interface_id); + //} + } + + switch_mutex_unlock(globals.mutex); + return NULL; +} + +#if 1 +SWITCH_STANDARD_API(gsm_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + + if (globals.gsm_console) + stream->write_function(stream, "gsm console is: |||%s|||\n", globals.gsm_console->name); + else + stream->write_function(stream, "gsm console is NOT yet assigned\n"); + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc || !argv[0]) { + stream->write_function(stream, "%s", GSM_SYNTAX); + goto end; + } + + if (!strcasecmp(argv[0], "list")) { + int i; + char next_flag_char = ' '; + + stream->write_function(stream, "F ID\t Name \tIB (F/T) OB (F/T)\tState\tCallFlw\t\tUUID\n"); + stream->write_function(stream, "= ====\t ======== \t======= =======\t======\t============\t======\n"); + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + next_flag_char = i == globals.next_interface ? '*' : ' '; + + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + stream->write_function(stream, + "%c %d\t[%s]\t%3ld/%ld\t%6ld/%ld\t%s\t%s\t%s\n", + next_flag_char, + i, globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].ib_failed_calls, + globals.GSMOPEN_INTERFACES[i].ib_calls, + globals.GSMOPEN_INTERFACES[i].ob_failed_calls, + globals.GSMOPEN_INTERFACES[i].ob_calls, + interface_status[globals.GSMOPEN_INTERFACES[i].interface_state], + phone_callflow[globals.GSMOPEN_INTERFACES[i].phone_callflow], globals.GSMOPEN_INTERFACES[i].session_uuid_str); + } else if (argc > 1 && !strcasecmp(argv[1], "full")) { + stream->write_function(stream, "%c\t%d\n", next_flag_char, i); + } + + } + stream->write_function(stream, "\nTotal: %d\n", globals.real_interfaces - 1); + + } else if (!strcasecmp(argv[0], "console")) { + int i; + int found = 0; + + if (argc == 2) { + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[1], strlen(argv[1])) == 0)) { + globals.gsm_console = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "gsm console is now: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, + globals.GSMOPEN_INTERFACES[i].name); + stream->write_function(stream, "gsm console is: |||%s|||\n", globals.gsm_console->name); + found = 1; + break; + } + + } + if (!found) + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[1]); + } else { + + stream->write_function(stream, "-ERR Usage: gsm console interface_name\n"); + goto end; + } + + } else if (!strcasecmp(argv[0], "ciapalino")) { + +/* BEGIN: Changes heres */ + } else if (!strcasecmp(argv[0], "reload")) { + if (load_config(SOFT_RELOAD) != SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "gsm reload failed\n"); + } else { + stream->write_function(stream, "gsm reload success\n"); + } + } else if (!strcasecmp(argv[0], "remove")) { + if (argc == 2) { + if (remove_interface(argv[1]) == SWITCH_STATUS_SUCCESS) { + if (interface_exists(argv[1]) == SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "gsm remove '%s' failed\n", argv[1]); + } else { + stream->write_function(stream, "gsm remove '%s' success\n", argv[1]); + } + } + } else { + stream->write_function(stream, "-ERR Usage: gsm remove interface_name\n"); + goto end; + } +/* END: Changes heres */ + + } else { + if (globals.gsm_console) + gsmopen_serial_write_AT_noack(globals.gsm_console, (char *) cmd); + else + stream->write_function(stream, "gsm console is NOT yet assigned\n"); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_STANDARD_API(gsmopen_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); + goto end; + } + + if (argc < 2) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); + goto end; + } + + if (argv[0]) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; + } else { + gsmopen_serial_write_AT_noack(tech_pvt, (char *) &cmd[strlen(argv[0]) + 1]); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} +#endif //0 +SWITCH_STANDARD_API(gsmopen_dump_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + char value[512]; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); + goto end; + } + if (argc == 1) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + //stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found && (strcmp("list", argv[0]) == 0)) { + int i; + stream->write_function(stream, "gsmopen_dump LIST\n\n"); + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + stream->write_function(stream, "dumping interface '%s'\n\n", globals.GSMOPEN_INTERFACES[i].name); + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + + + stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); + stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->active); + stream->write_function(stream, "active = %s\n", value); + if(!tech_pvt->network_creg_not_supported){ + snprintf(value, sizeof(value)-1, "%d", tech_pvt->not_registered); + stream->write_function(stream, "not_registered = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->home_network_registered); + stream->write_function(stream, "home_network_registered = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->roaming_registered); + stream->write_function(stream, "roaming_registered = %s\n", value); + }else{ + stream->write_function(stream, "not_registered = %s\n", "N/A"); + stream->write_function(stream, "home_network_registered = %s\n", "N/A"); + stream->write_function(stream, "roaming_registered = %s\n", "N/A"); + } + snprintf(value, sizeof(value)-1, "%d", tech_pvt->got_signal); + stream->write_function(stream, "got_signal = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->running); + stream->write_function(stream, "running = %s\n", value); + stream->write_function(stream, "imei = %s\n", tech_pvt->imei); + stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->controldev_dead); + stream->write_function(stream, "controldev_dead = %s\n", value); + stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->no_sound); + stream->write_function(stream, "no_sound = %s\n", value); +#ifdef GSMOPEN_ALSA + stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); + stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiocindex); + stream->write_function(stream, "portaudiocindex = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiopindex); + stream->write_function(stream, "portaudiopindex = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexecho); + stream->write_function(stream, "speexecho = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexpreprocess); + stream->write_function(stream, "speexpreprocess = %s\n", value); +#endif// GSMOPEN_PORTAUDIO + snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); + stream->write_function(stream, "playback_boost = %s\n", value); + snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); + stream->write_function(stream, "capture_boost = %s\n", value); + stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); + stream->write_function(stream, "context = %s\n", tech_pvt->context); + stream->write_function(stream, "destination = %s\n", tech_pvt->destination); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_calls); + stream->write_function(stream, "ib_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_calls); + stream->write_function(stream, "ob_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_failed_calls); + stream->write_function(stream, "ib_failed_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_failed_calls); + stream->write_function(stream, "ob_failed_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->interface_state); + stream->write_function(stream, "interface_state = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->phone_callflow); + stream->write_function(stream, "phone_callflow = %s\n", value); + stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); + stream->write_function(stream, "\n"); + + dump_event(tech_pvt); + } + + } + + } else if(found){ + stream->write_function(stream, "dumping interface '%s'\n\n", argv[0]); + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + + + stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); + stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->active); + stream->write_function(stream, "active = %s\n", value); + if(!tech_pvt->network_creg_not_supported){ + snprintf(value, sizeof(value)-1, "%d", tech_pvt->not_registered); + stream->write_function(stream, "not_registered = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->home_network_registered); + stream->write_function(stream, "home_network_registered = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->roaming_registered); + stream->write_function(stream, "roaming_registered = %s\n", value); + }else{ + stream->write_function(stream, "not_registered = %s\n", "N/A"); + stream->write_function(stream, "home_network_registered = %s\n", "N/A"); + stream->write_function(stream, "roaming_registered = %s\n", "N/A"); + } + snprintf(value, sizeof(value)-1, "%d", tech_pvt->got_signal); + stream->write_function(stream, "got_signal = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->running); + stream->write_function(stream, "running = %s\n", value); + stream->write_function(stream, "imei = %s\n", tech_pvt->imei); + stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->controldev_dead); + stream->write_function(stream, "controldev_dead = %s\n", value); + stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->no_sound); + stream->write_function(stream, "no_sound = %s\n", value); +#ifdef GSMOPEN_ALSA + stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); + stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiocindex); + stream->write_function(stream, "portaudiocindex = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiopindex); + stream->write_function(stream, "portaudiopindex = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexecho); + stream->write_function(stream, "speexecho = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexpreprocess); + stream->write_function(stream, "speexpreprocess = %s\n", value); +#endif// GSMOPEN_PORTAUDIO + snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); + stream->write_function(stream, "playback_boost = %s\n", value); + snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); + stream->write_function(stream, "capture_boost = %s\n", value); + stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); + stream->write_function(stream, "context = %s\n", tech_pvt->context); + stream->write_function(stream, "destination = %s\n", tech_pvt->destination); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_calls); + stream->write_function(stream, "ib_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_calls); + stream->write_function(stream, "ob_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_failed_calls); + stream->write_function(stream, "ib_failed_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_failed_calls); + stream->write_function(stream, "ob_failed_calls = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->interface_state); + stream->write_function(stream, "interface_state = %s\n", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->phone_callflow); + stream->write_function(stream, "phone_callflow = %s\n", value); + stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); + stream->write_function(stream, "\n"); + + dump_event(tech_pvt); + } else{ + stream->write_function(stream, "interface '%s' was not found\n", argv[0]); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); + } +end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} +SWITCH_STANDARD_API(gsmopen_boost_audio_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (argc == 1 || argc==3) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + + } else { + if (argc == 1) { + stream->write_function(stream,"[%s] capture boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].capture_boost); + stream->write_function(stream,"[%s] playback boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].playback_boost); + stream->write_function(stream, "%s usage: %s", argv[0], GSMOPEN_BOOST_AUDIO_SYNTAX); + goto end; + } else if ((strncmp("play", argv[1], strlen(argv[1])) == 0)) { + if (switch_is_number(argv[2])) { + stream->write_function(stream,"[%s] playback boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].playback_boost); + gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].playback_boost); //FIXME + stream->write_function(stream,"[%s] playback boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].playback_boost); + } + }else if ((strncmp("capt", argv[1], strlen(argv[1])) == 0)) { + if (switch_is_number(argv[2])) { + stream->write_function(stream,"[%s] capture boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].capture_boost); + gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].capture_boost); //FIXME + stream->write_function(stream,"[%s] capture boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].capture_boost); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); + } + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + + +#if 0 +int gsmopen_transfer(private_t * tech_pvt, char *id, char *value) +{ + char msg_to_gsmopen[1024]; + int i; + int found = 0; + private_t *giovatech; + struct timeval timenow; + + switch_mutex_lock(globals.mutex); + + gettimeofday(&timenow, NULL); + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + + giovatech = &globals.GSMOPEN_INTERFACES[i]; + //NOTICA("gsmopen interface: %d, name: %s, state: %d, value=%s, giovatech->callid_number=%s, giovatech->gsmopen_user=%s\n", GSMOPEN_P_LOG, i, giovatech->name, giovatech->interface_state, value, giovatech->callid_number, giovatech->gsmopen_user); + //FIXME check a timestamp here + if (strlen(giovatech->gsmopen_call_id) && (giovatech->interface_state != GSMOPEN_STATE_DOWN) && (!strcmp(giovatech->gsmopen_user, tech_pvt->gsmopen_user)) && (!strcmp(giovatech->callid_number, value)) && ((((timenow.tv_sec - giovatech->answer_time.tv_sec) * 1000000) + (timenow.tv_usec - giovatech->answer_time.tv_usec)) < 500000)) { //0.5sec + found = 1; + DEBUGA_GSMOPEN + ("FOUND (name=%s, giovatech->interface_state=%d != GSMOPEN_STATE_DOWN) && (giovatech->gsmopen_user=%s == tech_pvt->gsmopen_user=%s) && (giovatech->callid_number=%s == value=%s)\n", + GSMOPEN_P_LOG, giovatech->name, giovatech->interface_state, giovatech->gsmopen_user, tech_pvt->gsmopen_user, giovatech->callid_number, + value) + break; + } + } + } + + if (found) { + //tech_pvt->callid_number[0]='\0'; + //sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + switch_mutex_unlock(globals.mutex); + return 0; + } + DEBUGA_GSMOPEN("NOT FOUND\n", GSMOPEN_P_LOG); + + if (!tech_pvt || !tech_pvt->gsmopen_call_id || !strlen(tech_pvt->gsmopen_call_id)) { + /* we are not inside an active call */ + DEBUGA_GSMOPEN("We're NO MORE in a call now %s\n", GSMOPEN_P_LOG, (tech_pvt && tech_pvt->gsmopen_call_id) ? tech_pvt->gsmopen_call_id : ""); + switch_mutex_unlock(globals.mutex); + + } else { + + /* we're owned, we're in a call, let's try to transfer */ + /************************** TODO + Checking here if it is possible to transfer this call to Test2 + -> GET CALL 288 CAN_TRANSFER Test2 + <- CALL 288 CAN_TRANSFER test2 TRUE + **********************************/ + + private_t *available_gsmopen_interface = NULL; + + gettimeofday(&timenow, NULL); + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + + giovatech = &globals.GSMOPEN_INTERFACES[i]; + //NOTICA("gsmopen interface: %d, name: %s, state: %d, value=%s, giovatech->callid_number=%s, giovatech->gsmopen_user=%s\n", GSMOPEN_P_LOG, i, giovatech->name, giovatech->interface_state, value, giovatech->callid_number, giovatech->gsmopen_user); + //FIXME check a timestamp here + if (strlen(giovatech->gsmopen_transfer_call_id) && (giovatech->interface_state != GSMOPEN_STATE_DOWN) && (!strcmp(giovatech->gsmopen_user, tech_pvt->gsmopen_user)) && (!strcmp(giovatech->transfer_callid_number, value)) && ((((timenow.tv_sec - giovatech->transfer_time.tv_sec) * 1000000) + (timenow.tv_usec - giovatech->transfer_time.tv_usec)) < 1000000)) { //1.0 sec + found = 1; + DEBUGA_GSMOPEN + ("FOUND (name=%s, giovatech->interface_state=%d != GSMOPEN_STATE_DOWN) && (giovatech->gsmopen_user=%s == tech_pvt->gsmopen_user=%s) && (giovatech->transfer_callid_number=%s == value=%s)\n", + GSMOPEN_P_LOG, giovatech->name, giovatech->interface_state, + giovatech->gsmopen_user, tech_pvt->gsmopen_user, giovatech->transfer_callid_number, value) + break; + } + } + } + + if (found) { + //tech_pvt->callid_number[0]='\0'; + //sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + switch_mutex_unlock(globals.mutex); + return 0; + } + DEBUGA_GSMOPEN("NOT FOUND\n", GSMOPEN_P_LOG); + + available_gsmopen_interface = find_available_gsmopen_interface_rr(tech_pvt); + if (available_gsmopen_interface) { + /* there is a gsmopen interface idle, let's transfer the call to it */ + + //FIXME write a timestamp here + gettimeofday(&tech_pvt->transfer_time, NULL); + switch_copy_string(tech_pvt->gsmopen_transfer_call_id, id, sizeof(tech_pvt->gsmopen_transfer_call_id) - 1); + + switch_copy_string(tech_pvt->transfer_callid_number, value, sizeof(tech_pvt->transfer_callid_number) - 1); + + DEBUGA_GSMOPEN + ("Let's transfer the gsmopen_call %s to %s interface (with gsmopen_user: %s), because we are already in a gsmopen call(%s)\n", + GSMOPEN_P_LOG, tech_pvt->gsmopen_call_id, available_gsmopen_interface->name, available_gsmopen_interface->gsmopen_user, id); + + //FIXME why this? the inbound call will come, eventually, on that other interface + //available_gsmopen_interface->ib_calls++; + + sprintf(msg_to_gsmopen, "ALTER CALL %s TRANSFER %s", id, available_gsmopen_interface->gsmopen_user); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + if (tech_pvt->interface_state == GSMOPEN_STATE_SELECTED) { + tech_pvt->interface_state = GSMOPEN_STATE_IDLE; //we marked it GSMOPEN_STATE_SELECTED just in case it has to make an outbound call + } + } else { + /* no gsmopen interfaces idle, do nothing */ + DEBUGA_GSMOPEN + ("Not answering the gsmopen_call %s, because we are already in a gsmopen call(%s) and not transferring, because no other gsmopen interfaces are available\n", + GSMOPEN_P_LOG, id, tech_pvt->gsmopen_call_id); + sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + } + switch_sleep(10000); + DEBUGA_GSMOPEN + ("We have NOT answered a GSM RING from gsmopen_call %s, because we are already in a gsmopen call (%s)\n", + GSMOPEN_P_LOG, id, tech_pvt->gsmopen_call_id); + + switch_mutex_unlock(globals.mutex); + } + return 0; +} +#endif //0 + +void *gsmopen_do_gsmopenapi_thread_func(void *obj) +{ + + private_t *tech_pvt = (private_t *) obj; + time_t now_timestamp; + + //if (gsmopen_present(GSMopenHandles)) + while (running && tech_pvt->running) { + int res; + //gsmopen_sleep(1000000); //1 sec + //DEBUGA_GSMOPEN("ciao!\n", GSMOPEN_P_LOG); + res = gsmopen_serial_read(tech_pvt); + if (res == -1) { //manage the graceful interface shutdown + tech_pvt->controldev_dead = 1; + close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running=0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active=0; + tech_pvt->name[0]='\0'; + switch_sleep(1000000); + } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_RING + && tech_pvt->phone_callflow != CALLFLOW_CALL_HANGUP_REQUESTED) { + //WARNINGA("INCOMING RING\n", GSMOPEN_P_LOG); + + gsmopen_ring(tech_pvt); + + //FIXME gsmopen_answer(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + + + } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) { + WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); + tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA; + remote_party_is_early_media(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + + + + + } else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) { + WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); + outbound_channel_answered(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + } + switch_sleep(100); //give other threads a chance + time(&now_timestamp); + + if ((now_timestamp - tech_pvt->gsmopen_serial_synced_timestamp) > tech_pvt->gsmopen_serial_sync_period) { //TODO find a sensible period. 5min? in config? + gsmopen_serial_sync(tech_pvt); + gsmopen_serial_getstatus_AT(tech_pvt); + } + } + DEBUGA_GSMOPEN("EXIT\n", GSMOPEN_P_LOG); + //running = 0; + return NULL; + +} + + +SWITCH_STANDARD_API(sendsms_function) +{ + char *mycmd = NULL, *argv[3] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); + goto end; + } + + if (argc < 3) { + stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); + goto end; + } + + if (argv[0]) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Trying to send your SMS: interface=%s, dest=%s, text=%s\n", argv[0], argv[1], argv[2]); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; + } else { + //gsmopen_sendsms(tech_pvt, (char *) argv[1], (char *) argv[2]); + NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, tech_pvt->name, + argv[1], "SIMPLE MESSAGE", switch_str_nil(argv[2]), tech_pvt->name); + + compat_chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->name, argv[1], "SIMPLE MESSAGE", switch_str_nil(argv[2]), NULL, tech_pvt->name); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + +int dump_event_full(private_t * tech_pvt, int is_alarm, int alarm_code, const char *alarm_message) +{ + switch_event_t *event; + char value[512]; + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if(session){ + channel = switch_core_session_get_channel(session); + } + + if (is_alarm){ + ERRORA("ALARM on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name ); + status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_ALARM); + }else{ + DEBUGA_GSMOPEN("DUMP on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name ); + status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_DUMP); + } + if (status == SWITCH_STATUS_SUCCESS) { + if (is_alarm){ + snprintf(value, sizeof(value)-1, "%d", alarm_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_code", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_message", alarm_message); + } + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_name", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_id", tech_pvt->id); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->active); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "active", value); + if(!tech_pvt->network_creg_not_supported){ + snprintf(value, sizeof(value)-1, "%d", tech_pvt->not_registered); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->home_network_registered); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->roaming_registered); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", value); + }else{ + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", "N/A"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", "N/A"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", "N/A"); + } + snprintf(value, sizeof(value)-1, "%d", tech_pvt->got_signal); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "got_signal", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->running); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "running", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imei", tech_pvt->imei); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imsi", tech_pvt->imsi); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->controldev_dead); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldev_dead", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldevice_name", tech_pvt->controldevice_name); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->no_sound); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "no_sound", value); +#ifdef GSMOPEN_ALSA + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsacname", tech_pvt->alsacname); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsapname", tech_pvt->alsapname); +#endif// GSMOPEN_ALSA +#ifdef GSMOPEN_PORTAUDIO + snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiocindex); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "portaudiocindex", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->portaudiopindex); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "portaudiopindex", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexecho); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "speexecho", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->speexpreprocess); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "speexpreprocess", value); +#endif// GSMOPEN_PORTAUDIO + snprintf(value, sizeof(value)-1, "%f", tech_pvt->playback_boost); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "playback_boost", value); + snprintf(value, sizeof(value)-1, "%f", tech_pvt->capture_boost); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "capture_boost", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialplan", tech_pvt->dialplan); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "context", tech_pvt->context); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "destination", tech_pvt->destination); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_calls", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_calls", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ib_failed_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_failed_calls", value); + snprintf(value, sizeof(value)-1, "%lu", tech_pvt->ob_failed_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_failed_calls", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->interface_state); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_state", value); + snprintf(value, sizeof(value)-1, "%d", tech_pvt->phone_callflow); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "phone_callflow", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "session_uuid_str", tech_pvt->session_uuid_str); + if (strlen(tech_pvt->session_uuid_str)) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); + } else { //no session + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); + } + if (channel) { + switch_channel_event_set_data(channel, event); + } + switch_event_fire(&event); + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + + if (session) { + switch_core_session_rwunlock(session); + } + return 0; +} + +int dump_event(private_t * tech_pvt) +{ + return dump_event_full(tech_pvt, 0, 0, NULL); +} + + +int alarm_event(private_t * tech_pvt, int alarm_code, const char *alarm_message) +{ + return dump_event_full(tech_pvt, 1, alarm_code, alarm_message); +} + +int sms_incoming(private_t * tech_pvt) +{ + switch_event_t *event; + switch_core_session_t *session = NULL; + int event_sent_to_esl = 0; + + //DEBUGA_GSMOPEN("received SMS on interface %s: %s\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_message); + DEBUGA_GSMOPEN("received SMS on interface %s: DATE=%s, SENDER=%s, BODY=%s|\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_date, tech_pvt->sms_sender, + tech_pvt->sms_body); + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } + if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); + switch_event_add_body(event, "%s\n", tech_pvt->sms_body); + if (session) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); + if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "delivery-failure", "true"); + switch_event_fire(&event); + } + } else { //no session + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); + switch_event_fire(&event); + event_sent_to_esl = 1; + } + + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + + if (!event_sent_to_esl) { + + if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->chatmessages[which].from_handle); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); + switch_event_add_body(event, "%s\n", tech_pvt->sms_body); + if (session) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); + } else { //no session + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); + } + switch_event_fire(&event); + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + } + + if (session) { + switch_core_session_rwunlock(session); + } + //memset(&tech_pvt->chatmessages[which], '\0', sizeof(&tech_pvt->chatmessages[which]) ); + //memset(tech_pvt->sms_message, '\0', sizeof(tech_pvt->sms_message)); + return 0; +} + + +#ifdef NOTDEF +SWITCH_STANDARD_API(gsmopen_chat_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + //int tried =0; + int i; + int found = 0; + //char skype_msg[1024]; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); + goto end; + } + + if (argc < 3) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); + goto end; + } + + if (argv[0]) { + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + goto end; + } else { + + //chat_send(const char *proto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); + //chat_send(p*roto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); + //chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, hint); + + NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, + argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), tech_pvt->name); + + chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", + switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, tech_pvt->name); + + //NOTICA("TEXT is: %s\n", GSMOPEN_P_LOG, (char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1] ); + //snprintf(skype_msg, sizeof(skype_msg), "CHAT CREATE %s", argv[1]); + //gsmopen_signaling_write(tech_pvt, skype_msg); + //switch_sleep(100); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); + goto end; + } + +#ifdef NOTDEF + + found = 0; + + while (!found) { + for (i = 0; i < MAX_CHATS; i++) { + if (!strcmp(tech_pvt->chats[i].dialog_partner, argv[1])) { + snprintf(skype_msg, sizeof(skype_msg), "CHATMESSAGE %s %s", tech_pvt->chats[i].chatname, + (char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]); + gsmopen_signaling_write(tech_pvt, skype_msg); + found = 1; + break; + } + } + if (found) { + break; + } + if (tried > 1000) { + stream->write_function(stream, "ERROR: no chat with dialog_partner='%s' was found\n", argv[1]); + break; + } + switch_sleep(1000); + } +#endif //NOTDEF + + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} +#endif // NOTDEF + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: + */ From 6623420e017b016c4b02dd4978670b9b9820346b Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 21:27:36 +0200 Subject: [PATCH 068/630] gsmopen: mobigater is now a symlink to alsa_nogsmlib_nocplusplus --- src/mod/endpoints/mod_gsmopen/mobigater | 1 + 1 file changed, 1 insertion(+) create mode 120000 src/mod/endpoints/mod_gsmopen/mobigater diff --git a/src/mod/endpoints/mod_gsmopen/mobigater b/src/mod/endpoints/mod_gsmopen/mobigater new file mode 120000 index 0000000000..cfea4c01b2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/mobigater @@ -0,0 +1 @@ +alsa_nogsmlib_nocplusplus \ No newline at end of file From a362cd846a56ebd3f9afa0cd4a90039894cf215b Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Fri, 6 Apr 2012 14:52:55 -0500 Subject: [PATCH 069/630] this should work find with /bin/sh on all systems --- libs/libzrtp/projects/gnu/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/libzrtp/projects/gnu/bootstrap.sh b/libs/libzrtp/projects/gnu/bootstrap.sh index abc867ebf8..df9bb21e30 100755 --- a/libs/libzrtp/projects/gnu/bootstrap.sh +++ b/libs/libzrtp/projects/gnu/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh reconf () { aclocal From 49a4d2126baece69412c050f3c5a8818e9daab66 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:15:07 +0200 Subject: [PATCH 070/630] gsmopen: begin cleaning from alsa --- .../mod_gsmopen/gsmopen_protocol.cpp | 351 ------------------ src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 116 +----- 2 files changed, 1 insertion(+), 466 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 08ef778dfc..3a50c82f0d 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2444,357 +2444,6 @@ int gsmopen_hangup(private_t *tech_pvt) return 0; } -#ifdef GSMOPEN_ALSA -/*! \brief ALSA pcm format, according to endianess */ -#if __BYTE_ORDER == __LITTLE_ENDIAN -snd_pcm_format_t gsmopen_format = SND_PCM_FORMAT_S16_LE; -#else -snd_pcm_format_t gsmopen_format = SND_PCM_FORMAT_S16_BE; -#endif - -/*! - * \brief Initialize the ALSA soundcard channels (capture AND playback) used by one interface (a multichannel soundcard can be used by multiple interfaces) - * \param p the gsmopen_pvt of the interface - * - * This function call alsa_open_dev to initialize the ALSA soundcard for each channel (capture AND playback) used by one interface (a multichannel soundcard can be used by multiple interfaces). Called by sound_init - * - * \return zero on success, -1 on error. - */ -int alsa_init(private_t *tech_pvt) -{ - tech_pvt->alsac = alsa_open_dev(tech_pvt, SND_PCM_STREAM_CAPTURE); - if (!tech_pvt->alsac) { - ERRORA("Failed opening ALSA capture device: %s\n", GSMOPEN_P_LOG, tech_pvt->alsacname); - if (alsa_shutdown(tech_pvt)) { - ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); - return -1; - } - return -1; - } - tech_pvt->alsap = alsa_open_dev(tech_pvt, SND_PCM_STREAM_PLAYBACK); - if (!tech_pvt->alsap) { - ERRORA("Failed opening ALSA playback device: %s\n", GSMOPEN_P_LOG, tech_pvt->alsapname); - if (alsa_shutdown(tech_pvt)) { - ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); - return -1; - } - return -1; - } - - /* make valgrind very happy */ - snd_config_update_free_global(); - return 0; -} - -/*! - * \brief Shutdown the ALSA soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces) - * \param p the gsmopen_pvt of the interface - * - * This function shutdown the ALSA soundcard channels (input and output) used by one interface (a multichannel soundcard can be used by multiple interfaces). Called by sound_init - * - * \return zero on success, -1 on error. - */ - -int alsa_shutdown(private_t *tech_pvt) -{ - - int err; - - if (tech_pvt->alsap) { - err = snd_pcm_drop(tech_pvt->alsap); - if (err < 0) { - ERRORA("device [%s], snd_pcm_drop failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsapname, snd_strerror(err)); - return -1; - } - err = snd_pcm_close(tech_pvt->alsap); - if (err < 0) { - ERRORA("device [%s], snd_pcm_close failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsapname, snd_strerror(err)); - return -1; - } - tech_pvt->alsap = NULL; - } - if (tech_pvt->alsac) { - err = snd_pcm_drop(tech_pvt->alsac); - if (err < 0) { - ERRORA("device [%s], snd_pcm_drop failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsacname, snd_strerror(err)); - return -1; - } - err = snd_pcm_close(tech_pvt->alsac); - if (err < 0) { - ERRORA("device [%s], snd_pcm_close failed with error '%s'\n", GSMOPEN_P_LOG, tech_pvt->alsacname, snd_strerror(err)); - return -1; - } - tech_pvt->alsac = NULL; - } - - return 0; -} - -/*! - * \brief Setup and open the ALSA device (capture OR playback) - * \param p the gsmopen_pvt of the interface - * \param stream the ALSA capture/playback definition - * - * This function setup and open the ALSA device (capture OR playback). Called by alsa_init - * - * \return zero on success, -1 on error. - */ -snd_pcm_t *alsa_open_dev(private_t *tech_pvt, snd_pcm_stream_t stream) -{ - - snd_pcm_t *handle = NULL; - snd_pcm_hw_params_t *params; - snd_pcm_sw_params_t *swparams; - snd_pcm_uframes_t buffer_size; - int err; - size_t n; - //snd_pcm_uframes_t xfer_align; - unsigned int rate; - snd_pcm_uframes_t start_threshold, stop_threshold; - snd_pcm_uframes_t period_size = 0; - snd_pcm_uframes_t chunk_size = 0; - int start_delay = 0; - int stop_delay = 0; - snd_pcm_state_t state; - snd_pcm_info_t *info; - unsigned int chan_num; - - period_size = tech_pvt->alsa_period_size; - - snd_pcm_hw_params_alloca(¶ms); - snd_pcm_sw_params_alloca(&swparams); - - if (stream == SND_PCM_STREAM_CAPTURE) { - err = snd_pcm_open(&handle, tech_pvt->alsacname, stream, 0 | SND_PCM_NONBLOCK); - } else { - err = snd_pcm_open(&handle, tech_pvt->alsapname, stream, 0 | SND_PCM_NONBLOCK); - } - if (err < 0) { - ERRORA - ("snd_pcm_open failed with error '%s' on device '%s', if you are using a plughw:n device please change it to be a default:n device (so to allow it to be shared with other concurrent programs), or maybe you are using an ALSA voicemodem and slmodemd" - " is running?\n", GSMOPEN_P_LOG, snd_strerror(err), stream == SND_PCM_STREAM_CAPTURE ? tech_pvt->alsacname : tech_pvt->alsapname); - return NULL; - } - - snd_pcm_info_alloca(&info); - - if ((err = snd_pcm_info(handle, info)) < 0) { - ERRORA("info error: %s", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - - err = snd_pcm_nonblock(handle, 1); - if (err < 0) { - ERRORA("nonblock setting error: %s", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - - err = snd_pcm_hw_params_any(handle, params); - if (err < 0) { - ERRORA("Broken configuration for this PCM, no configurations available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - - err = snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); - if (err < 0) { - ERRORA("Access type not available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - err = snd_pcm_hw_params_set_format(handle, params, gsmopen_format); - if (err < 0) { - ERRORA("Sample format non available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - err = snd_pcm_hw_params_set_channels(handle, params, 1); - if (err < 0) { - DEBUGA_GSMOPEN("Channels count set failed: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } -#if 1 - err = snd_pcm_hw_params_get_channels(params, &chan_num); - if (err < 0) { - ERRORA("Channels count non available: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - if (chan_num < 1 || chan_num > 2) { - ERRORA("Channels count MUST BE 1 or 2, it is: %d\n", GSMOPEN_P_LOG, chan_num); - ERRORA("Channels count MUST BE 1 or 2, it is: %d on %s %s\n", GSMOPEN_P_LOG, chan_num, tech_pvt->alsapname, tech_pvt->alsacname); - return NULL; - } else { - if (chan_num == 1) { - if (stream == SND_PCM_STREAM_CAPTURE) - tech_pvt->alsa_capture_is_mono = 1; - else - tech_pvt->alsa_play_is_mono = 1; - } else { - if (stream == SND_PCM_STREAM_CAPTURE) - tech_pvt->alsa_capture_is_mono = 0; - else - tech_pvt->alsa_play_is_mono = 0; - } - } -#else - tech_pvt->alsa_capture_is_mono = 1; - tech_pvt->alsa_play_is_mono = 1; -#endif - -#if 1 - rate = tech_pvt->gsmopen_sound_rate; - err = snd_pcm_hw_params_set_rate_near(handle, params, &rate, 0); - if ((float) tech_pvt->gsmopen_sound_rate * 1.05 < rate || (float) tech_pvt->gsmopen_sound_rate * 0.95 > rate) { - WARNINGA("Rate is not accurate (requested = %iHz, got = %iHz)\n", GSMOPEN_P_LOG, tech_pvt->gsmopen_sound_rate, rate); - } - - if (err < 0) { - ERRORA("Error setting rate: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - tech_pvt->gsmopen_sound_rate = rate; - - err = snd_pcm_hw_params_set_period_size_near(handle, params, &period_size, 0); - - if (err < 0) { - ERRORA("Error setting period_size: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - - tech_pvt->alsa_period_size = period_size; - - tech_pvt->alsa_buffer_size = tech_pvt->alsa_period_size * tech_pvt->alsa_periods_in_buffer; - - err = snd_pcm_hw_params_set_buffer_size_near(handle, params, &tech_pvt->alsa_buffer_size); - - if (err < 0) { - ERRORA("Error setting buffer_size: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } -#endif - - err = snd_pcm_hw_params(handle, params); - if (err < 0) { - ERRORA("Unable to install hw params: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - - snd_pcm_hw_params_get_period_size(params, &chunk_size, 0); - snd_pcm_hw_params_get_buffer_size(params, &buffer_size); - if (chunk_size == buffer_size) { - ERRORA("Can't use period equal to buffer size (%lu == %lu)\n", GSMOPEN_P_LOG, chunk_size, buffer_size); - return NULL; - } - - snd_pcm_sw_params_current(handle, swparams); - - /* - if (sleep_min) - xfer_align = 1; - err = snd_pcm_sw_params_set_sleep_min(handle, swparams, - 0); - - if (err < 0) { - ERRORA("Error setting slep_min: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } - */ - n = chunk_size; - err = snd_pcm_sw_params_set_avail_min(handle, swparams, n); - if (err < 0) { - ERRORA("Error setting avail_min: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } - if (stream == SND_PCM_STREAM_CAPTURE) { - start_delay = 1; - } - if (start_delay <= 0) { - start_threshold = n + (snd_pcm_uframes_t) rate *start_delay / 1000000; - } else { - start_threshold = (snd_pcm_uframes_t) rate *start_delay / 1000000; - } - if (start_threshold < 1) - start_threshold = 1; - if (start_threshold > n) - start_threshold = n; - err = snd_pcm_sw_params_set_start_threshold(handle, swparams, start_threshold); - if (err < 0) { - ERRORA("Error setting start_threshold: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } - - if (stop_delay <= 0) - stop_threshold = buffer_size + (snd_pcm_uframes_t) rate *stop_delay / 1000000; - else - stop_threshold = (snd_pcm_uframes_t) rate *stop_delay / 1000000; - - if (stream == SND_PCM_STREAM_CAPTURE) { - stop_threshold = -1; - } - - err = snd_pcm_sw_params_set_stop_threshold(handle, swparams, stop_threshold); - - if (err < 0) { - ERRORA("Error setting stop_threshold: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } - - if (snd_pcm_sw_params(handle, swparams) < 0) { - ERRORA("Error installing software parameters: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } - - err = snd_pcm_poll_descriptors_count(handle); - if (err <= 0) { - ERRORA("Unable to get a poll descriptors count, error is %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - - if (err != 1) { //number of poll descriptors - DEBUGA_GSMOPEN("Can't handle more than one device\n", GSMOPEN_P_LOG); - return NULL; - } - - err = snd_pcm_poll_descriptors(handle, &tech_pvt->pfd, err); - if (err != 1) { - ERRORA("snd_pcm_poll_descriptors failed, %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - DEBUGA_GSMOPEN("Acquired fd %d from the poll descriptor\n", GSMOPEN_P_LOG, tech_pvt->pfd.fd); - - if (stream == SND_PCM_STREAM_CAPTURE) { - tech_pvt->gsmopen_sound_capt_fd = tech_pvt->pfd.fd; - } - - state = snd_pcm_state(handle); - - if (state != SND_PCM_STATE_RUNNING) { - if (state != SND_PCM_STATE_PREPARED) { - err = snd_pcm_prepare(handle); - if (err) { - ERRORA("snd_pcm_prepare failed, %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - DEBUGA_GSMOPEN("prepared!\n", GSMOPEN_P_LOG); - } - if (stream == SND_PCM_STREAM_CAPTURE) { - err = snd_pcm_start(handle); - if (err) { - ERRORA("snd_pcm_start failed, %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - return NULL; - } - DEBUGA_GSMOPEN("started!\n", GSMOPEN_P_LOG); - } - } - if (option_debug > 1) { - snd_output_t *output = NULL; - err = snd_output_stdio_attach(&output, stdout, 0); - if (err < 0) { - ERRORA("snd_output_stdio_attach failed: %s\n", GSMOPEN_P_LOG, snd_strerror(err)); - } - snd_pcm_dump(handle, output); - - } - if (option_debug > 1) - DEBUGA_GSMOPEN("ALSA handle = %ld\n", GSMOPEN_P_LOG, (long int) handle); - return handle; - -} - -/*! \brief Write audio frames to interface */ -#endif /* GSMOPEN_ALSA */ - int gsmopen_call(private_t *tech_pvt, char *rdest, int timeout) { diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index dac9aaeecb..fb04dcd683 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -272,15 +272,6 @@ switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *se dtmf_rx_init(&tech_pvt->dtmf_state, NULL, NULL); dtmf_rx_parms(&tech_pvt->dtmf_state, 0, 10, 10, -99); -#ifdef GSMOPEN_ALSA - if (tech_pvt->no_sound == 0) { - if (alsa_init(tech_pvt)) { - ERRORA("alsa_init failed\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - - } - } -#endif // GSMOPEN_ALSA if (tech_pvt->no_sound == 0) { if (serial_audio_init(tech_pvt)) { ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); @@ -519,11 +510,6 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) switch_core_timer_destroy(&tech_pvt->timer_read); switch_core_timer_destroy(&tech_pvt->timer_write); -#ifdef GSMOPEN_ALSA - if (tech_pvt->no_sound == 0) { - alsa_shutdown(tech_pvt); - } -#endif // GSMOPEN_ALSA if (tech_pvt->no_sound == 0) { serial_audio_shutdown(tech_pvt); } @@ -699,10 +685,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; switch_byte_t *data; -#if defined(GSMOPEN_ALSA) - int samples; - char digit_str[256]; -#endif // defined(GSMOPEN_ALSA) int samples; int samples2; @@ -733,10 +715,6 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch if (tech_pvt->no_sound == 1) { goto cng; } -#ifdef GSMOPEN_ALSA - //if ((samples = snd_pcm_readi(tech_pvt->alsac, tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) - if ((samples = alsa_read(tech_pvt, (short *) tech_pvt->read_frame.data, tech_pvt->read_codec.implementation->samples_per_packet)) > 0) -#endif // GSMOPEN_ALSA // if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { @@ -872,9 +850,6 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; -#if defined(GSMOPEN_ALSA) - unsigned int sent; -#endif // defined(GSMOPEN_ALSA) unsigned int sent; @@ -906,16 +881,6 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc //snd_pcm_writei(tech_pvt->alsap, (short *) frame->data, (int) (frame->datalen / 2)); gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); -#ifdef GSMOPEN_ALSA - - switch_core_timer_next(&tech_pvt->timer_write); - sent = alsa_write(tech_pvt, (short *) frame->data, (int) (frame->datalen)); -//DEBUGA_GSMOPEN("sent=%d \n", GSMOPEN_P_LOG, sent); - - if (sent && sent != frame->datalen / 2 && sent != -1) { - DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); - } -#endif // GSMOPEN_ALSA sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); if (sent && sent != frame->datalen && sent != -1) { @@ -960,10 +925,6 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s { switch_channel_t *channel; private_t *tech_pvt; -#if defined(GSMOPEN_ALSA) - int samples; - short tmp_buffer[1280]; -#endif // defined(GSMOPEN_ALSA) channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); @@ -984,11 +945,6 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s switch_core_timer_sync(&tech_pvt->timer_read); switch_core_timer_sync(&tech_pvt->timer_write); -#ifdef GSMOPEN_ALSA - while ((samples = alsa_read(tech_pvt, tmp_buffer, tech_pvt->read_codec.implementation->samples_per_packet * 4)) > 160) { - //WARNINGA("read %d samples\n", GSMOPEN_P_LOG, samples); - } -#endif // GSMOPEN_ALSA break; default: @@ -1301,23 +1257,15 @@ static switch_status_t load_config(int reload_type) const char *alsa_capture_is_mono = "1"; const char *capture_boost = "0"; const char *playback_boost = "0"; -#if defined(GSMOPEN_ALSA) const char *no_sound = "0"; -#else - const char *no_sound = "0"; -#endif // defined(GSMOPEN_ALSA) const char *portaudiocindex = "1"; const char *portaudiopindex = "1"; const char *speexecho = "1"; const char *speexpreprocess = "1"; uint32_t interface_id = 0; -#ifdef WIN32 int controldevice_speed = 115200; //FIXME TODO -#else - uint32_t controldevice_speed = B115200; //FIXME TODO - uint32_t controldevice_audio_speed = B115200; //FIXME TODO -#endif //WIN32 + int controldevice_audio_speed = 115200; //FIXME TODO uint32_t controldevprotocol = PROTOCOL_AT; //FIXME TODO uint32_t running = 1; //FIXME TODO const char *gsmopen_serial_sync_period = "300"; //FIXME TODO @@ -1654,30 +1602,14 @@ static switch_status_t load_config(int reload_type) switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupremoteringing_string, at_indicator_callsetupremoteringing_string); //switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].sms_receiving_program, sms_receiving_program); -#ifdef GSMOPEN_ALSA - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsacname, alsacname); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].alsapname, alsapname); -#endif // GSMOPEN_ALSA - globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio); globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause); globals.GSMOPEN_INTERFACES[interface_id].at_initial_pause = atoi(at_initial_pause); globals.GSMOPEN_INTERFACES[interface_id].at_has_clcc = atoi(at_has_clcc); globals.GSMOPEN_INTERFACES[interface_id].at_has_ecam = atoi(at_has_ecam); -#ifdef GSMOPEN_ALSA - globals.GSMOPEN_INTERFACES[interface_id].alsa_period_size = atoi(alsa_period_size); - globals.GSMOPEN_INTERFACES[interface_id].alsa_periods_in_buffer = atoi(alsa_periods_in_buffer); - globals.GSMOPEN_INTERFACES[interface_id].gsmopen_sound_rate = atoi(gsmopen_sound_rate); - globals.GSMOPEN_INTERFACES[interface_id].alsa_play_is_mono = atoi(alsa_play_is_mono); - globals.GSMOPEN_INTERFACES[interface_id].alsa_capture_is_mono = atoi(alsa_capture_is_mono); -#endif // GSMOPEN_ALSA globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost); globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost); -#if defined(GSMOPEN_ALSA) globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); -#else - globals.GSMOPEN_INTERFACES[interface_id].no_sound = 0; -#endif // defined(GSMOPEN_ALSA) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed = controldevice_speed; //FIXME @@ -1693,11 +1625,6 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].destination); DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_name); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name); -#ifdef GSMOPEN_ALSA - DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsacname); - DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].alsapname); -#endif // GSMOPEN_ALSA - DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); @@ -1744,31 +1671,6 @@ static switch_status_t load_config(int reload_type) } if (globals.GSMOPEN_INTERFACES[interface_id].no_sound == 0) { -#ifdef GSMOPEN_ALSA - if (alsa_init(&globals.GSMOPEN_INTERFACES[interface_id])) { - ERRORA("alsa_init failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "alsa_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active = 0; - globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; - continue; - - } - - if (alsa_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { - ERRORA("alsa_shutdown failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "alsa_shutdown failed"); - globals.GSMOPEN_INTERFACES[interface_id].active = 0; - globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; - continue; - - } -#endif // GSMOPEN_ALSA if (serial_audio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); @@ -1833,10 +1735,6 @@ static switch_status_t load_config(int reload_type) DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].dialplan); DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].destination); DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_name); -#ifdef GSMOPEN_ALSA - DEBUGA_GSMOPEN("alsacname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsacname); - DEBUGA_GSMOPEN("alsapname=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].alsapname); -#endif // GSMOPEN_ALSA DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int) globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); } @@ -2554,10 +2452,6 @@ SWITCH_STANDARD_API(gsmopen_dump_function) stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); stream->write_function(stream, "no_sound = %s\n", value); -#ifdef GSMOPEN_ALSA - stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); - stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); -#endif // GSMOPEN_ALSA snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); stream->write_function(stream, "playback_boost = %s\n", value); snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); @@ -2616,10 +2510,6 @@ SWITCH_STANDARD_API(gsmopen_dump_function) stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); stream->write_function(stream, "no_sound = %s\n", value); -#ifdef GSMOPEN_ALSA - stream->write_function(stream, "alsacname = %s\n", tech_pvt->alsacname); - stream->write_function(stream, "alsapname = %s\n", tech_pvt->alsapname); -#endif // GSMOPEN_ALSA snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); stream->write_function(stream, "playback_boost = %s\n", value); snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); @@ -3015,10 +2905,6 @@ int dump_event_full(private_t *tech_pvt, int is_alarm, int alarm_code, const cha switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldevice_name", tech_pvt->controldevice_name); snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "no_sound", value); -#ifdef GSMOPEN_ALSA - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsacname", tech_pvt->alsacname); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alsapname", tech_pvt->alsapname); -#endif // GSMOPEN_ALSA snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "playback_boost", value); snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); From 40a1fd8ef047dca110a18222956ea319a1aed8a4 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:15:46 +0200 Subject: [PATCH 071/630] gsmopen: continue cleaning from alsa --- .../mod_gsmopen/gsmopen_protocol.cpp | 342 ------------------ 1 file changed, 342 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 3a50c82f0d..b763502fa8 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2480,348 +2480,6 @@ int gsmopen_senddigit(private_t *tech_pvt, char digit) return 0; } -#ifdef GSMOPEN_ALSA -/*! \brief Write audio frames to interface */ -int alsa_write(private_t *tech_pvt, short *data, int datalen) -{ - static char sizbuf[8000]; - static char sizbuf2[16000]; - static char silencebuf[8000]; - static int sizpos = 0; - int len = sizpos; - int pos; - int res = 0; - time_t now_timestamp; - /* size_t frames = 0; */ - snd_pcm_state_t state; - snd_pcm_sframes_t delayp1 = 0; - snd_pcm_sframes_t delayp2 = 0; - - if (tech_pvt->no_sound == 1) { - return res; - } - - memset(sizbuf, 255, sizeof(sizbuf)); - memset(sizbuf2, 255, sizeof(sizbuf)); - memset(silencebuf, 255, sizeof(sizbuf)); - - //ERRORA("data=%p, datalen=%d\n", GSMOPEN_P_LOG, (void *)data, datalen); - /* We have to digest the frame in 160-byte portions */ - if (datalen > sizeof(sizbuf) - sizpos) { - ERRORA("Frame too large\n", GSMOPEN_P_LOG); - res = -1; - } else { - memcpy(sizbuf + sizpos, data, datalen); - memset(data, 255, datalen); - len += datalen; - pos = 0; - -#ifdef ALSA_MONITOR - alsa_monitor_write(sizbuf, len); -#endif - state = snd_pcm_state(tech_pvt->alsap); - if (state == SND_PCM_STATE_XRUN) { - int i; - - DEBUGA_GSMOPEN - ("You've got an ALSA write XRUN in the past (gsmopen can't fill the soundcard buffer fast enough). If this happens often (not after silence or after a pause in the speech, that's OK), and appear to damage the sound quality, first check if you have some IRQ problem, maybe sharing the soundcard IRQ with a broken or heavy loaded ethernet or graphic card. Then consider to increase the alsa_periods_in_buffer (now is set to %d) for this interface in the config file\n", - GSMOPEN_P_LOG, tech_pvt->alsa_periods_in_buffer); - res = snd_pcm_prepare(tech_pvt->alsap); - if (res) { - ERRORA("audio play prepare failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - } else { - res = snd_pcm_format_set_silence(gsmopen_format, silencebuf, len / 2); - if (res < 0) { - DEBUGA_GSMOPEN("Silence error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - res = -1; - } - for (i = 0; i < (tech_pvt->alsa_periods_in_buffer - 1); i++) { - res = snd_pcm_writei(tech_pvt->alsap, silencebuf, len / 2); - if (res != len / 2) { - DEBUGA_GSMOPEN("Write returned a different quantity: %d\n", GSMOPEN_P_LOG, res); - res = -1; - } else if (res < 0) { - DEBUGA_GSMOPEN("Write error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - res = -1; - } - } - } - - } - - res = snd_pcm_delay(tech_pvt->alsap, &delayp1); - if (res < 0) { - DEBUGA_GSMOPEN("Error %d on snd_pcm_delay: \"%s\"\n", GSMOPEN_P_LOG, res, snd_strerror(res)); - res = snd_pcm_prepare(tech_pvt->alsap); - if (res) { - DEBUGA_GSMOPEN("snd_pcm_prepare failed: '%s'\n", GSMOPEN_P_LOG, snd_strerror(res)); - } - res = snd_pcm_delay(tech_pvt->alsap, &delayp1); - } - - delayp2 = snd_pcm_avail_update(tech_pvt->alsap); - if (delayp2 < 0) { - DEBUGA_GSMOPEN("Error %d on snd_pcm_avail_update: \"%s\"\n", GSMOPEN_P_LOG, (int) delayp2, snd_strerror(delayp2)); - - res = snd_pcm_prepare(tech_pvt->alsap); - if (res) { - DEBUGA_GSMOPEN("snd_pcm_prepare failed: '%s'\n", GSMOPEN_P_LOG, snd_strerror(res)); - } - delayp2 = snd_pcm_avail_update(tech_pvt->alsap); - } - - if ( /* delayp1 != 0 && delayp1 != 160 */ - delayp1 < 160 || delayp2 > tech_pvt->alsa_buffer_size) { - - res = snd_pcm_prepare(tech_pvt->alsap); - if (res) { - DEBUGA_GSMOPEN - ("snd_pcm_prepare failed while trying to prevent an ALSA write XRUN: %s, delayp1=%d, delayp2=%d\n", - GSMOPEN_P_LOG, snd_strerror(res), (int) delayp1, (int) delayp2); - } else { - - int i; - for (i = 0; i < (tech_pvt->alsa_periods_in_buffer - 1); i++) { - res = snd_pcm_format_set_silence(gsmopen_format, silencebuf, len / 2); - if (res < 0) { - DEBUGA_GSMOPEN("Silence error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - res = -1; - } - res = snd_pcm_writei(tech_pvt->alsap, silencebuf, len / 2); - if (res < 0) { - DEBUGA_GSMOPEN("Write error %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - res = -1; - } else if (res != len / 2) { - DEBUGA_GSMOPEN("Write returned a different quantity: %d\n", GSMOPEN_P_LOG, res); - res = -1; - } - } - - DEBUGA_GSMOPEN - ("PREVENTING an ALSA write XRUN (gsmopen can't fill the soundcard buffer fast enough). If this happens often (not after silence or after a pause in the speech, that's OK), and appear to damage the sound quality, first check if you have some IRQ problem, maybe sharing the soundcard IRQ with a broken or heavy loaded ethernet or graphic card. Then consider to increase the alsa_periods_in_buffer (now is set to %d) for this interface in the config file. delayp1=%d, delayp2=%d\n", - GSMOPEN_P_LOG, tech_pvt->alsa_periods_in_buffer, (int) delayp1, (int) delayp2); - } - - } - - memset(sizbuf2, 0, sizeof(sizbuf2)); - if (tech_pvt->alsa_play_is_mono) { - res = snd_pcm_writei(tech_pvt->alsap, sizbuf, len / 2); - } else { - int a = 0; - int i = 0; - for (i = 0; i < 8000;) { - sizbuf2[a] = sizbuf[i]; - a++; - i++; - sizbuf2[a] = sizbuf[i]; - a++; - i--; - sizbuf2[a] = sizbuf[i]; // comment out this line to use only left - a++; - i++; - sizbuf2[a] = sizbuf[i]; // comment out this line to use only left - a++; - i++; - } - res = snd_pcm_writei(tech_pvt->alsap, sizbuf2, len); - } - if (res == -EPIPE) { - DEBUGA_GSMOPEN - ("ALSA write EPIPE (XRUN) (gsmopen can't fill the soundcard buffer fast enough). If this happens often (not after silence or after a pause in the speech, that's OK), and appear to damage the sound quality, first check if you have some IRQ problem, maybe sharing the soundcard IRQ with a broken or heavy loaded ethernet or graphic card. Then consider to increase the alsa_periods_in_buffer (now is set to %d) for this interface in the config file. delayp1=%d, delayp2=%d\n", - GSMOPEN_P_LOG, tech_pvt->alsa_periods_in_buffer, (int) delayp1, (int) delayp2); - res = snd_pcm_prepare(tech_pvt->alsap); - if (res) { - ERRORA("audio play prepare failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - } else { - - if (tech_pvt->alsa_play_is_mono) { - res = snd_pcm_writei(tech_pvt->alsap, sizbuf, len / 2); - } else { - int a = 0; - int i = 0; - for (i = 0; i < 8000;) { - sizbuf2[a] = sizbuf[i]; - a++; - i++; - sizbuf2[a] = sizbuf[i]; - a++; - i--; - sizbuf2[a] = sizbuf[i]; - a++; - i++; - sizbuf2[a] = sizbuf[i]; - a++; - i++; - } - res = snd_pcm_writei(tech_pvt->alsap, sizbuf2, len); - } - - } - - } else { - if (res == -ESTRPIPE) { - ERRORA("You've got some big problems\n", GSMOPEN_P_LOG); - } else if (res == -EAGAIN) { - DEBUGA_GSMOPEN("Momentarily busy\n", GSMOPEN_P_LOG); - res = 0; - } else if (res < 0) { - ERRORA("Error %d on audio write: \"%s\"\n", GSMOPEN_P_LOG, res, snd_strerror(res)); - } - } - } - - if (tech_pvt->audio_play_reset_period) { - time(&now_timestamp); - if ((now_timestamp - tech_pvt->audio_play_reset_timestamp) > tech_pvt->audio_play_reset_period) { - if (option_debug) - DEBUGA_GSMOPEN("reset audio play\n", GSMOPEN_P_LOG); - res = snd_pcm_wait(tech_pvt->alsap, 1000); - if (res < 0) { - ERRORA("audio play wait failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - } - res = snd_pcm_drop(tech_pvt->alsap); - if (res) { - ERRORA("audio play drop failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - } - res = snd_pcm_prepare(tech_pvt->alsap); - if (res) { - ERRORA("audio play prepare failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - } - res = snd_pcm_wait(tech_pvt->alsap, 1000); - if (res < 0) { - ERRORA("audio play wait failed: %s\n", GSMOPEN_P_LOG, snd_strerror(res)); - } - time(&tech_pvt->audio_play_reset_timestamp); - } - } - //res = 0; - //if (res > 0) - //res = 0; - return res; -} - -#define AST_FRIENDLY_OFFSET 0 -int alsa_read(private_t *tech_pvt, short *data, int datalen) -{ - //static struct ast_frame f; - static short __buf[GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2]; - static short __buf2[(GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2) * 2]; - short *buf; - short *buf2; - static int readpos = 0; - //static int left = GSMOPEN_FRAME_SIZE; - static int left; - snd_pcm_state_t state; - int r = 0; - int off = 0; - int error = 0; - //time_t now_timestamp; - - //DEBUGA_GSMOPEN("buf=%p, datalen=%d, left=%d\n", GSMOPEN_P_LOG, (void *)buf, datalen, left); - //memset(&f, 0, sizeof(struct ast_frame)); //giova - - if (tech_pvt->no_sound == 1) { - return r; - } - - left = datalen; - - state = snd_pcm_state(tech_pvt->alsac); - if (state != SND_PCM_STATE_RUNNING) { - DEBUGA_GSMOPEN("ALSA read state is not SND_PCM_STATE_RUNNING\n", GSMOPEN_P_LOG); - - if (state != SND_PCM_STATE_PREPARED) { - error = snd_pcm_prepare(tech_pvt->alsac); - if (error) { - ERRORA("snd_pcm_prepare failed, %s\n", GSMOPEN_P_LOG, snd_strerror(error)); - return r; - } - DEBUGA_GSMOPEN("prepared!\n", GSMOPEN_P_LOG); - } - gsmopen_sleep(1000); - error = snd_pcm_start(tech_pvt->alsac); - if (error) { - ERRORA("snd_pcm_start failed, %s\n", GSMOPEN_P_LOG, snd_strerror(error)); - return r; - } - DEBUGA_GSMOPEN("started!\n", GSMOPEN_P_LOG); - gsmopen_sleep(1000); - } - - buf = __buf + AST_FRIENDLY_OFFSET / 2; - buf2 = __buf2 + ((AST_FRIENDLY_OFFSET / 2) * 2); - - if (tech_pvt->alsa_capture_is_mono) { - r = snd_pcm_readi(tech_pvt->alsac, buf + readpos, left); - //DEBUGA_GSMOPEN("r=%d, buf=%p, buf+readpos=%p, datalen=%d, left=%d\n", GSMOPEN_P_LOG, r, (void *)buf, (void *)(buf + readpos), datalen, left); - } else { - int a = 0; - int i = 0; - r = snd_pcm_readi(tech_pvt->alsac, buf2 + (readpos * 2), left); - - for (i = 0; i < (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2) * 2;) { - __buf[a] = (__buf2[i] + __buf2[i + 1]) / 2; //comment out this line to use only left - //__buf[a] = __buf2[i]; // enable this line to use only left - a++; - i++; - i++; - } - } - - if (r == -EPIPE) { - DEBUGA_GSMOPEN("ALSA XRUN on read\n", GSMOPEN_P_LOG); - return r; - } else if (r == -ESTRPIPE) { - ERRORA("-ESTRPIPE\n", GSMOPEN_P_LOG); - return r; - - } else if (r == -EAGAIN) { - int count = 0; - while (r == -EAGAIN) { - gsmopen_sleep(10000); - DEBUGA_GSMOPEN("%d ALSA read -EAGAIN, the soundcard is not ready to be read by gsmopen\n", GSMOPEN_P_LOG, count); - count++; - - if (tech_pvt->alsa_capture_is_mono) { - r = snd_pcm_readi(tech_pvt->alsac, buf + readpos, left); - } else { - int a = 0; - int i = 0; - r = snd_pcm_readi(tech_pvt->alsac, buf2 + (readpos * 2), left); - - for (i = 0; i < (GSMOPEN_FRAME_SIZE + AST_FRIENDLY_OFFSET / 2) * 2;) { - __buf[a] = (__buf2[i] + __buf2[i + 1]) / 2; - a++; - i++; - i++; - } - } - - } - } else if (r < 0) { - WARNINGA("ALSA Read error: %s\n", GSMOPEN_P_LOG, snd_strerror(r)); - } else if (r >= 0) { - //DEBUGA_GSMOPEN("read: r=%d, readpos=%d, left=%d, off=%d\n", GSMOPEN_P_LOG, r, readpos, left, off); - off -= r; //what is the meaning of this? a leftover, probably - } - /* Update positions */ - readpos += r; - left -= r; - - if (readpos >= GSMOPEN_FRAME_SIZE) { - int i; - /* A real frame */ - readpos = 0; - left = GSMOPEN_FRAME_SIZE; - for (i = 0; i < r; i++) - data[i] = buf[i]; - - } - return r; -} - -#endif // GSMOPEN_ALSA int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) { From 4c7b7c4643b17eba8d2cf026052fc0548180acd8 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:20:54 +0200 Subject: [PATCH 072/630] gsmopen: finished cleaning from alsa --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 29 --------------- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 36 ------------------- 2 files changed, 65 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 47dd3d21da..3bb0afb739 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -67,9 +67,6 @@ #endif //GIOVA48 #define SAMPLERATE_GSMOPEN 8000 -#ifndef NO_ALSA -#define GSMOPEN_ALSA -#endif // NO_ALSA #include #include #ifndef WIN32 @@ -79,11 +76,6 @@ #endif //WIN32 //#include -#ifdef GSMOPEN_ALSA -#define ALSA_PCM_NEW_HW_PARAMS_API -#define ALSA_PCM_NEW_SW_PARAMS_API -#include -#endif /* GSMOPEN_ALSA */ //#include "celliax_spandsp.h" #ifndef WIN32 @@ -450,19 +442,6 @@ struct private_object { struct timeval ringtime; ciapa_t *owner; -#ifdef GSMOPEN_ALSA - snd_pcm_t *alsac; /*!< \brief handle of the ALSA capture audio device */ - snd_pcm_t *alsap; /*!< \brief handle of the ALSA playback audio device */ - char alsacname[50]; /*!< \brief name of the ALSA capture audio device */ - char alsapname[50]; /*!< \brief name of the ALSA playback audio device */ - int alsa_period_size; /*!< \brief ALSA period_size, in byte */ - int alsa_periods_in_buffer; /*!< \brief how many periods in ALSA buffer, to calculate buffer_size */ - unsigned long int alsa_buffer_size; /*!< \brief ALSA buffer_size, in byte */ - int alsawrite_filled; - int alsa_capture_is_mono; - int alsa_play_is_mono; - struct pollfd pfd; -#endif // GSMOPEN_ALSA time_t audio_play_reset_timestamp; int audio_play_reset_period; @@ -608,14 +587,6 @@ int gsmopen_serial_call(private_t *tech_pvt, char *dstr); int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr); int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text); -#ifdef GSMOPEN_ALSA -int alsa_init(private_t *tech_pvt); -int alsa_shutdown(private_t *tech_pvt); -snd_pcm_t *alsa_open_dev(private_t *tech_pvt, snd_pcm_stream_t stream); -int alsa_write(private_t *tech_pvt, short *data, int datalen); -int alsa_read(private_t *tech_pvt, short *data, int datalen); - -#endif /* GSMOPEN_ALSA */ void gsmopen_store_boost(char *s, double *boost); int gsmopen_sound_boost(void *data, int samples_num, double boost); diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index fb04dcd683..d32d232131 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -878,7 +878,6 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc //sent = frame->datalen; //ERRORA("PLAY \n", GSMOPEN_P_LOG); - //snd_pcm_writei(tech_pvt->alsap, (short *) frame->data, (int) (frame->datalen / 2)); gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); @@ -1243,18 +1242,12 @@ static switch_status_t load_config(int reload_type) const char *at_indicator_callsetupoutgoing_string = "CIEV: 6;2"; const char *at_indicator_callsetupremoteringing_string = "CIEV: 6;3"; //const char *sms_receiving_program = "/usr/local/bin/ciapalo"; - const char *alsacname = "plughw:1"; - const char *alsapname = "plughw:1"; const char *at_early_audio = "0"; const char *at_after_preinit_pause = "500000"; const char *at_initial_pause = "500000"; const char *at_has_clcc = "0"; const char *at_has_ecam = "0"; - const char *alsa_period_size = "160"; - const char *alsa_periods_in_buffer = "4"; const char *gsmopen_sound_rate = "8000"; - const char *alsa_play_is_mono = "1"; - const char *alsa_capture_is_mono = "1"; const char *capture_boost = "0"; const char *playback_boost = "0"; const char *no_sound = "0"; @@ -1402,10 +1395,6 @@ static switch_status_t load_config(int reload_type) at_indicator_callsetupremoteringing_string = val; //} else if (!strcasecmp(var, "sms_receiving_program")) { //sms_receiving_program = val; - } else if (!strcasecmp(var, "alsacname")) { - alsacname = val; - } else if (!strcasecmp(var, "alsapname")) { - alsapname = val; } else if (!strcasecmp(var, "portaudiocindex")) { portaudiocindex = val; } else if (!strcasecmp(var, "portaudiopindex")) { @@ -1424,16 +1413,8 @@ static switch_status_t load_config(int reload_type) at_has_clcc = val; } else if (!strcasecmp(var, "at_has_ecam")) { at_has_ecam = val; - } else if (!strcasecmp(var, "alsa_period_size")) { - alsa_period_size = val; - } else if (!strcasecmp(var, "alsa_periods_in_buffer")) { - alsa_periods_in_buffer = val; } else if (!strcasecmp(var, "gsmopen_sound_rate")) { gsmopen_sound_rate = val; - } else if (!strcasecmp(var, "alsa_play_is_mono")) { - alsa_play_is_mono = val; - } else if (!strcasecmp(var, "alsa_capture_is_mono")) { - alsa_capture_is_mono = val; } else if (!strcasecmp(var, "capture_boost")) { capture_boost = val; } else if (!strcasecmp(var, "playback_boost")) { @@ -1490,27 +1471,10 @@ static switch_status_t load_config(int reload_type) ERRORA("interface param 'at_has_ecam' MUST be a number, now at_has_ecam='%s'\n", GSMOPEN_P_LOG, at_has_ecam); continue; } - if (!switch_is_number(alsa_period_size)) { - ERRORA("interface param 'alsa_period_size' MUST be a number, now alsa_period_size='%s'\n", GSMOPEN_P_LOG, alsa_period_size); - continue; - } - if (!switch_is_number(alsa_periods_in_buffer)) { - ERRORA("interface param 'alsa_periods_in_buffer' MUST be a number, now alsa_periods_in_buffer='%s'\n", GSMOPEN_P_LOG, - alsa_periods_in_buffer); - continue; - } if (!switch_is_number(gsmopen_sound_rate)) { ERRORA("interface param 'gsmopen_sound_rate' MUST be a number, now gsmopen_sound_rate='%s'\n", GSMOPEN_P_LOG, gsmopen_sound_rate); continue; } - if (!switch_is_number(alsa_play_is_mono)) { - ERRORA("interface param 'alsa_play_is_mono' MUST be a number, now alsa_play_is_mono='%s'\n", GSMOPEN_P_LOG, alsa_play_is_mono); - continue; - } - if (!switch_is_number(alsa_capture_is_mono)) { - ERRORA("interface param 'alsa_capture_is_mono' MUST be a number, now alsa_capture_is_mono='%s'\n", GSMOPEN_P_LOG, alsa_capture_is_mono); - continue; - } if (!switch_is_number(capture_boost)) { ERRORA("interface param 'capture_boost' MUST be a number, now capture_boost='%s'\n", GSMOPEN_P_LOG, capture_boost); continue; From f37d5f86b5dbd69e76fae696ec7e284f4fdb410d Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:23:47 +0200 Subject: [PATCH 073/630] gsmopen: cleaning gsmlib --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index b763502fa8..96dddf7fb5 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -387,23 +387,11 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) if (res) { DEBUGA_GSMOPEN("AT+CMGF? failed, continue\n", GSMOPEN_P_LOG); } -#ifdef NO_GSMLIB res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); if (res) { ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); } tech_pvt->sms_pdu_not_supported = 1; -#else // NO_GSMLIB - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); - if (res) { - WARNINGA("Error setting SMS sending mode to PDU on the cellphone, falling back to TEXT mode. Continuing\n", GSMOPEN_P_LOG); - tech_pvt->sms_pdu_not_supported = 1; - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); - if (res) { - ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); - } - } -#endif // NO_GSMLIB /* what is the Charset of SMSs? */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS?"); if (res) { From f97b9ce40cf6e5514135629ef032bed4a5cf4d0c Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:24:38 +0200 Subject: [PATCH 074/630] gsmopen: cleaning Makefile --- src/mod/endpoints/mod_gsmopen/Makefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index 2831641d8c..7084df12e4 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,9 +1,6 @@ MODNAME=mod_gsmopen SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' -#LOCAL_CFLAGS += $(SVNDEF) -I/usr/src/gsmlib-1.10 -LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff -#LOCAL_LDFLAGS=-lasound -L/usr/src/gsmlib-1.10/gsmlib/.libs -lgsmme +LOCAL_CFLAGS += $(SVNDEF) -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 LOCAL_OBJS=gsmopen_protocol.o -#OUR_OBJS += /usr/src/gsmlib-1.10/gsmlib/libgsmme.la include ../../../../build/modmake.rules From eb26a9e1265ef4dbf2457a5f6110ef403562e74f Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:25:55 +0200 Subject: [PATCH 075/630] gsmopen: indent --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 - .../mod_gsmopen/gsmopen_protocol.cpp | 1 - src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 60 +++++++++---------- 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 3bb0afb739..33c260c755 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -76,7 +76,6 @@ #endif //WIN32 //#include - //#include "celliax_spandsp.h" #ifndef WIN32 #include @@ -587,7 +586,6 @@ int gsmopen_serial_call(private_t *tech_pvt, char *dstr); int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr); int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text); - void gsmopen_store_boost(char *s, double *boost); int gsmopen_sound_boost(void *data, int samples_num, double boost); int sms_incoming(private_t *tech_pvt); diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 96dddf7fb5..681c56fde6 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2468,7 +2468,6 @@ int gsmopen_senddigit(private_t *tech_pvt, char digit) return 0; } - int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) { //char *idest = data; diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index d32d232131..e1afc59e96 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -717,17 +717,37 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch } // if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) - if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { + if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { + tech_pvt->buffer2_full = 0; + + if (samples >= 640) { + DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + memcpy(tech_pvt->buffer2, buffer2 + 320, 320); + tech_pvt->buffer2_full = 1; + } + samples = 320; + + memcpy(tech_pvt->read_frame.data, buffer2, 320); + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples / 2; + + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + + *frame = &tech_pvt->read_frame; + + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } else { + DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); + if (tech_pvt->buffer2_full) { + memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); tech_pvt->buffer2_full = 0; - - if (samples >= 640) { - DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); - memcpy(tech_pvt->buffer2, buffer2 + 320, 320); - tech_pvt->buffer2_full = 1; - } samples = 320; + DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); - memcpy(tech_pvt->read_frame.data, buffer2, 320); tech_pvt->read_frame.datalen = samples; tech_pvt->read_frame.samples = samples / 2; @@ -740,29 +760,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch //} //status = SWITCH_STATUS_SUCCESS; switch_set_flag(tech_pvt, TFLAG_VOICE); - } else { - DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); - if (tech_pvt->buffer2_full) { - memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); - tech_pvt->buffer2_full = 0; - samples = 320; - DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); - - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples / 2; - - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; - - *frame = &tech_pvt->read_frame; - - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); - } - } + + } //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); if (samples != 320) { DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); From e34abad8307c76b9007044ed479cc41cbda9aa31 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:27:08 +0200 Subject: [PATCH 076/630] gsmopen: removed directory noaudio_nogsmlib_nocplusplus --- .../noaudio_nogsmlib_nocplusplus/mod_gsmopen/Makefile | 6 ------ .../noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h | 1 - .../mod_gsmopen/gsmopen_protocol.c | 1 - .../noaudio_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c | 1 - 4 files changed, 9 deletions(-) delete mode 100644 src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/Makefile delete mode 120000 src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h delete mode 120000 src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c delete mode 120000 src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/Makefile deleted file mode 100644 index 3a50b1f227..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -MODNAME=mod_gsmopen -SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' -LOCAL_CFLAGS += $(SVNDEF) -DNO_GSMLIB -DNO_ALSA -I../../../../../../libs/spandsp/src -I../../../../../..//libs/tiff-3.8.2/libtiff -LOCAL_LDFLAGS=-L../../../../../../libs/spandsp/src -avoid-version -module -no-undefined -shared -lspandsp -LOCAL_OBJS=gsmopen_protocol.o -include ../../../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h deleted file mode 120000 index 663f1cbc4d..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen.h \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c b/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c deleted file mode 120000 index b03564bdd9..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c +++ /dev/null @@ -1 +0,0 @@ -../../gsmopen_protocol.cpp \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c b/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c deleted file mode 120000 index a0686ea786..0000000000 --- a/src/mod/endpoints/mod_gsmopen/noaudio_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c +++ /dev/null @@ -1 +0,0 @@ -../../mod_gsmopen.cpp \ No newline at end of file From 8f25ba224af0f0f28fca90bd214ddfe1ff3bc50a Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:32:43 +0200 Subject: [PATCH 077/630] gsmopen: reshuffling --- .../mod_gsmopen}/configs/asound.conf | 0 .../mod_gsmopen}/configs/gsmopen.conf.xml | 0 .../configs/gsmopen.conf.xml.motorola | 0 .../mod_gsmopen}/usb-cm-108-2.txt | 0 src/mod/endpoints/mod_gsmopen/filtra48down8.c | 71 - src/mod/endpoints/mod_gsmopen/filtra8up48.c | 81 - src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 3102 ----------------- 7 files changed, 3254 deletions(-) rename src/mod/endpoints/mod_gsmopen/{ => alsa_nogsmlib_nocplusplus/mod_gsmopen}/configs/asound.conf (100%) rename src/mod/endpoints/mod_gsmopen/{ => alsa_nogsmlib_nocplusplus/mod_gsmopen}/configs/gsmopen.conf.xml (100%) rename src/mod/endpoints/mod_gsmopen/{ => alsa_nogsmlib_nocplusplus/mod_gsmopen}/configs/gsmopen.conf.xml.motorola (100%) rename src/mod/endpoints/mod_gsmopen/{ => alsa_nogsmlib_nocplusplus/mod_gsmopen}/usb-cm-108-2.txt (100%) delete mode 100644 src/mod/endpoints/mod_gsmopen/filtra48down8.c delete mode 100644 src/mod/endpoints/mod_gsmopen/filtra8up48.c delete mode 100644 src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp diff --git a/src/mod/endpoints/mod_gsmopen/configs/asound.conf b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/asound.conf similarity index 100% rename from src/mod/endpoints/mod_gsmopen/configs/asound.conf rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/asound.conf diff --git a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/gsmopen.conf.xml similarity index 100% rename from src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/gsmopen.conf.xml diff --git a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml.motorola b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/gsmopen.conf.xml.motorola similarity index 100% rename from src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml.motorola rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/gsmopen.conf.xml.motorola diff --git a/src/mod/endpoints/mod_gsmopen/usb-cm-108-2.txt b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/usb-cm-108-2.txt similarity index 100% rename from src/mod/endpoints/mod_gsmopen/usb-cm-108-2.txt rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/usb-cm-108-2.txt diff --git a/src/mod/endpoints/mod_gsmopen/filtra48down8.c b/src/mod/endpoints/mod_gsmopen/filtra48down8.c deleted file mode 100644 index 615f80295b..0000000000 --- a/src/mod/endpoints/mod_gsmopen/filtra48down8.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 2007 Jean-Marc Valin - - File: testresample.c - Testing the resampling code - - 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. -*/ - -#include -#include -#include - -#define NN 256 - -int main() -{ - short *in; - short *out; - int i; - int a; - - in = malloc(NN*sizeof(short)); - out = malloc(NN*sizeof(short)/6); - while (1) - { - fread(in, sizeof(short), NN, stdin); - if (feof(stdin)) - break; - - a=0; - for (i=0;i -//#include "speex/speex_resampler.h" -#include -#include - -#define NN 256 - -int main() -{ - short *in; - short *out; - int i; - int a; - - in = malloc(NN*sizeof(short)); - out = malloc(NN*sizeof(short)*6); - while (1) - { - fread(in, sizeof(short), NN, stdin); - if (feof(stdin)) - break; - - a=0; - for (i=0;i - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * - * The Initial Developer of the Original Code is - * Anthony Minessale II - * Portions created by the Initial Developer are Copyright (C) - * the Initial Developer. All Rights Reserved. - * - * This module (mod_gsmopen) has been contributed by: - * - * Giovanni Maruzzelli (gmaruzz@gmail.com) - * - * - * Further Contributors: - * - * - * - * mod_gsmopen.c -- GSM compatible Endpoint Module - * - */ - -#include "gsmopen.h" - -#if 0 -#ifdef WIN32 -/***************/ -// from http://www.openasthra.com/c-tidbits/gettimeofday-function-for-windows/ - -#include - -#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) -#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 -#else /* */ -#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL -#endif /* */ -struct sk_timezone { - int tz_minuteswest; /* minutes W of Greenwich */ - int tz_dsttime; /* type of dst correction */ -}; -int gettimeofday(struct timeval *tv, struct sk_timezone *tz) -{ - FILETIME ft; - unsigned __int64 tmpres = 0; - static int tzflag; - if (NULL != tv) { - GetSystemTimeAsFileTime(&ft); - tmpres |= ft.dwHighDateTime; - tmpres <<= 32; - tmpres |= ft.dwLowDateTime; - - /*converting file time to unix epoch */ - tmpres /= 10; /*convert into microseconds */ - tmpres -= DELTA_EPOCH_IN_MICROSECS; - tv->tv_sec = (long) (tmpres / 1000000UL); - tv->tv_usec = (long) (tmpres % 1000000UL); - } - if (NULL != tz) { - if (!tzflag) { - _tzset(); - tzflag++; - } - tz->tz_minuteswest = _timezone / 60; - tz->tz_dsttime = _daylight; - } - return 0; -} - -/***************/ -#endif /* WIN32 */ -#endif //0 -SWITCH_BEGIN_EXTERN_C SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load); -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown); -SWITCH_MODULE_DEFINITION(mod_gsmopen, mod_gsmopen_load, mod_gsmopen_shutdown, NULL); -SWITCH_END_EXTERN_C -#define GSMOPEN_CHAT_PROTO "sms" -#if 1 - SWITCH_STANDARD_API(gsm_function); -/* BEGIN: Changes here */ -#define GSM_SYNTAX "list [full] || console || AT_command || remove < interface_name | interface_id > || reload" -/* END: Changes heres */ -SWITCH_STANDARD_API(gsmopen_function); -#define GSMOPEN_SYNTAX "interface_name AT_command" -#endif //0 - -SWITCH_STANDARD_API(gsmopen_boost_audio_function); -#define GSMOPEN_BOOST_AUDIO_SYNTAX "interface_name [ ]" -SWITCH_STANDARD_API(sendsms_function); -#define SENDSMS_SYNTAX "gsmopen_sendsms interface_name destination_number SMS_text" -SWITCH_STANDARD_API(gsmopen_dump_function); -#define GSMOPEN_DUMP_SYNTAX "gsmopen_dump " -/* BEGIN: Changes here */ -#define FULL_RELOAD 0 -#define SOFT_RELOAD 1 -/* END: Changes heres */ - -const char *interface_status[] = { /* should match GSMOPEN_STATE_xxx in gsmopen.h */ - "IDLE", - "DOWN", - "RING", - "DIALING", - "BUSY", - "UP", - "RINGING", - "PRERING", - "DOUBLE", - "SELECTD", - "HANG_RQ", - "PREANSW" -}; - -const char *phone_callflow[] = { /* should match CALLFLOW_XXX in gsmopen.h */ - "CALL_IDLE", - "CALL_DOWN", - "INCOMING_RNG", - "CALL_DIALING", - "CALL_LINEBUSY", - "CALL_ACTIVE", - "INCOMING_HNG", - "CALL_RLEASD", - "CALL_NOCARR", - "CALL_INFLUX", - "CALL_INCOMING", - "CALL_FAILED", - "CALL_NOSRVC", - "CALL_OUTRESTR", - "CALL_SECFAIL", - "CALL_NOANSWER", - "STATUS_FNSHED", - "STATUS_CANCLED", - "STATUS_FAILED", - "STATUS_REFUSED", - "STATUS_RINGING", - "STATUS_INPROGRS", - "STATUS_UNPLACD", - "STATUS_ROUTING", - "STATUS_EARLYMD", - "INCOMING_CLID", - "STATUS_RMTEHOLD" -}; - -static struct { - int debug; - char *ip; - int port; - char *dialplan; - char *destination; - char *context; - char *codec_string; - char *codec_order[SWITCH_MAX_CODECS]; - int codec_order_last; - char *codec_rates_string; - char *codec_rates[SWITCH_MAX_CODECS]; - int codec_rates_last; - unsigned int flags; - int fd; - int calls; - int real_interfaces; - int next_interface; - char hold_music[256]; - private_t GSMOPEN_INTERFACES[GSMOPEN_MAX_INTERFACES]; - switch_mutex_t *mutex; - private_t *gsm_console; -} globals; - -switch_endpoint_interface_t *gsmopen_endpoint_interface; -switch_memory_pool_t *gsmopen_module_pool = NULL; -int running = 0; - -SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan); -SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, globals.context); -SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_destination, globals.destination); -//SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string); -//SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_rates_string, globals.codec_rates_string); - -/* BEGIN: Changes here */ -static switch_status_t interface_exists(char *the_interface); -#if 1 -static switch_status_t remove_interface(char *the_interface); -#endif //0 -/* END: Changes here */ - -static switch_status_t channel_on_init(switch_core_session_t *session); -static switch_status_t channel_on_hangup(switch_core_session_t *session); -static switch_status_t channel_on_destroy(switch_core_session_t *session); -static switch_status_t channel_on_routing(switch_core_session_t *session); -static switch_status_t channel_on_exchange_media(switch_core_session_t *session); -static switch_status_t channel_on_consume_media(switch_core_session_t *session); -static switch_status_t channel_on_soft_execute(switch_core_session_t *session); -static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, - switch_event_t *var_event, - switch_caller_profile_t *outbound_profile, - switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, - switch_call_cause_t *cancel_cause); -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); -static switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session); - -static switch_status_t gsmopen_codec(private_t *tech_pvt, int sample_rate, int codec_ms) -{ - switch_core_session_t *session = NULL; - - if (switch_core_codec_init - (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { - ERRORA("Can't load codec?\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - - if (switch_core_codec_init - (&tech_pvt->write_codec, "L16", NULL, sample_rate, codec_ms, 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { - ERRORA("Can't load codec?\n", GSMOPEN_P_LOG); - switch_core_codec_destroy(&tech_pvt->read_codec); - return SWITCH_STATUS_FALSE; - } - - tech_pvt->read_frame.rate = sample_rate; - tech_pvt->read_frame.codec = &tech_pvt->read_codec; - - session = switch_core_session_locate(tech_pvt->session_uuid_str); - - if (session) { - switch_core_session_set_read_codec(session, &tech_pvt->read_codec); - switch_core_session_set_write_codec(session, &tech_pvt->write_codec); - switch_core_session_rwunlock(session); - } else { - ERRORA("no session\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - - return SWITCH_STATUS_SUCCESS; - -} - -switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session) -{ - - switch_assert(tech_pvt != NULL); - switch_assert(session != NULL); - tech_pvt->read_frame.data = tech_pvt->databuf; - tech_pvt->read_frame.buflen = sizeof(tech_pvt->databuf); - switch_mutex_init(&tech_pvt->mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); - switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); - switch_core_session_set_private(session, tech_pvt); - switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str)); - if (!strlen(tech_pvt->session_uuid_str)) { - ERRORA("no tech_pvt->session_uuid_str\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - if (gsmopen_codec(tech_pvt, SAMPLERATE_GSMOPEN, 20) != SWITCH_STATUS_SUCCESS) { - ERRORA("gsmopen_codec FAILED\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, tech_pvt->read_codec.implementation->actual_samples_per_second); - //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, 8000); - dtmf_rx_init(&tech_pvt->dtmf_state, NULL, NULL); - dtmf_rx_parms(&tech_pvt->dtmf_state, 0, 10, 10, -99); - - if (tech_pvt->no_sound == 0) { - if (serial_audio_init(tech_pvt)) { - ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - - } - } - - if (switch_core_timer_init(&tech_pvt->timer_read, "soft", 20, tech_pvt->read_codec.implementation->samples_per_packet, gsmopen_module_pool) != - SWITCH_STATUS_SUCCESS) { - ERRORA("setup timer failed\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - - switch_core_timer_sync(&tech_pvt->timer_read); - - if (switch_core_timer_init(&tech_pvt->timer_write, "soft", 20, tech_pvt->write_codec.implementation->samples_per_packet, gsmopen_module_pool) != - SWITCH_STATUS_SUCCESS) { - ERRORA("setup timer failed\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - - switch_core_timer_sync(&tech_pvt->timer_write); - - switch_clear_flag(tech_pvt, TFLAG_HANGUP); - DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_SUCCESS; -} - -/* BEGIN: Changes here */ -static switch_status_t interface_exists(char *the_interface) -{ - int i; - int interface_id; - - if (*the_interface == '#') { /* look by interface id or interface name */ - the_interface++; - switch_assert(the_interface); - interface_id = atoi(the_interface); - - /* take a number as interface id */ - if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { - if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { - return SWITCH_STATUS_SUCCESS; - } - } else { - /* interface name */ - for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { - if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { - return SWITCH_STATUS_SUCCESS; - break; - } - } - } - } else { /* look by gsmopen_user */ - - for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].gsmopen_user)) { - if (strcmp(globals.GSMOPEN_INTERFACES[i].gsmopen_user, the_interface) == 0) { - return SWITCH_STATUS_SUCCESS; - } - } - } - } - return SWITCH_STATUS_FALSE; -} - -#if 1 -static switch_status_t remove_interface(char *the_interface) -{ - int x = 10; - unsigned int howmany = 8; - int interface_id = -1; - private_t *tech_pvt = NULL; - switch_status_t status; - - //running = 0; - - //XXX if (*the_interface == '#') { /* remove by interface id or interface name */ - //XXX the_interface++; - switch_assert(the_interface); - interface_id = atoi(the_interface); - - if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { - /* take a number as interface id */ - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - } else { - - for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { - if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - break; - } - } - } - //XXX } //else { /* remove by gsmopen_user */ - //for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { - //if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) { - //tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - //break; - //} - //} - //} - - if (!tech_pvt) { - DEBUGA_GSMOPEN("interface '%s' does not exist\n", GSMOPEN_P_LOG, the_interface); - goto end; - } - - if (strlen(globals.GSMOPEN_INTERFACES[interface_id].session_uuid_str)) { - DEBUGA_GSMOPEN("interface '%s' is busy\n", GSMOPEN_P_LOG, the_interface); - goto end; - } - - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { -#if 1 -#ifdef WIN32 - switch_file_write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die -#else /* WIN32 */ - howmany = write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", howmany); -#endif /* WIN32 */ -#endif //0 - DEBUGA_GSMOPEN("HERE will shutdown gsmopen_signaling_thread of '%s'\n", GSMOPEN_P_LOG, the_interface); - } - - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { -#if 0 -#ifdef WIN32 - if (SendMessage(tech_pvt->GSMopenHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the gsmopen_api_thread_func die - DEBUGA_GSMOPEN("got FALSE here, thread probably was already dead. GetLastError returned: %d\n", GSMOPEN_P_LOG, GetLastError()); - globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread = NULL; - } -#else - XEvent e; - Atom atom1 = XInternAtom(tech_pvt->GSMopenHandles.disp, "GSMOPENCONTROLAPI_MESSAGE_BEGIN", False); - memset(&e, 0, sizeof(e)); - e.xclient.type = ClientMessage; - e.xclient.message_type = atom1; /* leading message */ - e.xclient.display = tech_pvt->GSMopenHandles.disp; - e.xclient.window = tech_pvt->GSMopenHandles.gsmopen_win; - e.xclient.format = 8; - - XSendEvent(tech_pvt->GSMopenHandles.disp, tech_pvt->GSMopenHandles.win, False, 0, &e); - XSync(tech_pvt->GSMopenHandles.disp, False); -#endif //WIN32 -#endif //0 - - DEBUGA_GSMOPEN("HERE will shutdown gsmopen_api_thread of '%s'\n", GSMOPEN_P_LOG, the_interface); - } - - while (x) { - x--; - switch_yield(50000); - } - - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { - switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread); - } - - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { - switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread); - } - - switch_mutex_lock(globals.mutex); - if (globals.gsm_console == &globals.GSMOPEN_INTERFACES[interface_id]) { - DEBUGA_GSMOPEN("interface '%s' no more console\n", GSMOPEN_P_LOG, the_interface); - globals.gsm_console = NULL; - } else { - DEBUGA_GSMOPEN("interface '%s' STILL console\n", GSMOPEN_P_LOG, the_interface); - } - memset(&globals.GSMOPEN_INTERFACES[interface_id], '\0', sizeof(private_t)); - globals.real_interfaces--; - switch_mutex_unlock(globals.mutex); - - DEBUGA_GSMOPEN("interface '%s' deleted successfully\n", GSMOPEN_P_LOG, the_interface); - globals.GSMOPEN_INTERFACES[interface_id].running = 1; - end: - //running = 1; - return SWITCH_STATUS_SUCCESS; -} -#endif //0 - -/* END: Changes here */ - -/* - State methods they get called when the state changes to the specific state - returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next - so if you fully implement the state you can return SWITCH_STATUS_FALSE to skip it. -*/ -static switch_status_t channel_on_init(switch_core_session_t *session) -{ - switch_channel_t *channel; - private_t *tech_pvt = NULL; - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_set_flag(tech_pvt, TFLAG_IO); - - /* Move channel's state machine to ROUTING. This means the call is trying - to get from the initial start where the call because, to the point - where a destination has been identified. If the channel is simply - left in the initial state, nothing will happen. */ - switch_channel_set_state(channel, CS_ROUTING); - switch_mutex_lock(globals.mutex); - globals.calls++; - - switch_mutex_unlock(globals.mutex); - DEBUGA_GSMOPEN("%s CHANNEL INIT %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_destroy(switch_core_session_t *session) -{ - private_t *tech_pvt = NULL; - - tech_pvt = (private_t *) switch_core_session_get_private(session); - - if (tech_pvt) { - DEBUGA_GSMOPEN("%s CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); - - if (switch_core_codec_ready(&tech_pvt->read_codec)) { - switch_core_codec_destroy(&tech_pvt->read_codec); - } - - if (switch_core_codec_ready(&tech_pvt->write_codec)) { - switch_core_codec_destroy(&tech_pvt->write_codec); - } - - switch_core_timer_destroy(&tech_pvt->timer_read); - switch_core_timer_destroy(&tech_pvt->timer_write); - - if (tech_pvt->no_sound == 0) { - serial_audio_shutdown(tech_pvt); - } - - *tech_pvt->session_uuid_str = '\0'; - tech_pvt->interface_state = GSMOPEN_STATE_IDLE; - if (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED) { - tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; - } - switch_core_session_set_private(session, NULL); - } else { - DEBUGA_GSMOPEN("!!!!!!NO tech_pvt!!!! CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(session)); - } - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_hangup(switch_core_session_t *session) -{ - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - tech_pvt->phone_callflow = CALLFLOW_CALL_HANGUP_REQUESTED; - - if (!switch_channel_test_flag(channel, CF_ANSWERED)) { - if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { - tech_pvt->ob_failed_calls++; - } else { - tech_pvt->ib_failed_calls++; - } - } - - DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_clear_flag(tech_pvt, TFLAG_IO); - switch_clear_flag(tech_pvt, TFLAG_VOICE); - switch_set_flag(tech_pvt, TFLAG_HANGUP); - - gsmopen_hangup(tech_pvt); - - //memset(tech_pvt->session_uuid_str, '\0', sizeof(tech_pvt->session_uuid_str)); - //*tech_pvt->session_uuid_str = '\0'; - DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_mutex_lock(globals.mutex); - globals.calls--; - if (globals.calls < 0) { - globals.calls = 0; - } - - tech_pvt->interface_state = GSMOPEN_STATE_IDLE; - //FIXME if (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED) { - tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; - //FIXME } - switch_mutex_unlock(globals.mutex); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_routing(switch_core_session_t *session) -{ - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - DEBUGA_GSMOPEN("%s CHANNEL ROUTING\n", GSMOPEN_P_LOG, tech_pvt->name); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_execute(switch_core_session_t *session) -{ - - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - DEBUGA_GSMOPEN("%s CHANNEL EXECUTE\n", GSMOPEN_P_LOG, tech_pvt->name); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig) -{ - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - DEBUGA_GSMOPEN("%s CHANNEL KILL_CHANNEL\n", GSMOPEN_P_LOG, tech_pvt->name); - switch (sig) { - case SWITCH_SIG_KILL: - DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_KILL\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - //switch_mutex_lock(tech_pvt->flag_mutex); - switch_clear_flag(tech_pvt, TFLAG_IO); - switch_clear_flag(tech_pvt, TFLAG_VOICE); - switch_set_flag(tech_pvt, TFLAG_HANGUP); - //switch_mutex_unlock(tech_pvt->flag_mutex); - break; - case SWITCH_SIG_BREAK: - DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_BREAK\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - //switch_set_flag(tech_pvt, TFLAG_BREAK); - //switch_mutex_lock(tech_pvt->flag_mutex); - switch_set_flag(tech_pvt, TFLAG_BREAK); - //switch_mutex_unlock(tech_pvt->flag_mutex); - break; - default: - break; - } - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_consume_media(switch_core_session_t *session) -{ - private_t *tech_pvt = NULL; - - tech_pvt = (private_t *) switch_core_session_get_private(session); - - DEBUGA_GSMOPEN("%s CHANNEL CONSUME_MEDIA\n", GSMOPEN_P_LOG, tech_pvt->name); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_exchange_media(switch_core_session_t *session) -{ - private_t *tech_pvt = NULL; - tech_pvt = (private_t *) switch_core_session_get_private(session); - DEBUGA_GSMOPEN("%s CHANNEL EXCHANGE_MEDIA\n", GSMOPEN_P_LOG, tech_pvt->name); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_on_soft_execute(switch_core_session_t *session) -{ - private_t *tech_pvt = NULL; - tech_pvt = (private_t *) switch_core_session_get_private(session); - DEBUGA_GSMOPEN("%s CHANNEL SOFT_EXECUTE\n", GSMOPEN_P_LOG, tech_pvt->name); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) -{ - private_t *tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - DEBUGA_GSMOPEN("%s CHANNEL SEND_DTMF\n", GSMOPEN_P_LOG, tech_pvt->name); - DEBUGA_GSMOPEN("DTMF: %c\n", GSMOPEN_P_LOG, dtmf->digit); - - gsmopen_senddigit(tech_pvt, dtmf->digit); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) -{ - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - switch_byte_t *data; - - int samples; - int samples2; - char digit_str[256]; - char buffer2[640]; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - if (!switch_channel_ready(channel) || !switch_test_flag(tech_pvt, TFLAG_IO)) { - ERRORA("channel not ready \n", GSMOPEN_P_LOG); - //TODO: kill the bastard - return SWITCH_STATUS_FALSE; - } - - tech_pvt->read_frame.flags = SFF_NONE; - *frame = NULL; - - if (switch_test_flag(tech_pvt, TFLAG_HANGUP)) { - return SWITCH_STATUS_FALSE; - } - - switch_core_timer_next(&tech_pvt->timer_read); - - if (tech_pvt->no_sound == 1) { - goto cng; - } -// if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) - - if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { - tech_pvt->buffer2_full = 0; - - if (samples >= 640) { - DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); - memcpy(tech_pvt->buffer2, buffer2 + 320, 320); - tech_pvt->buffer2_full = 1; - } - samples = 320; - - memcpy(tech_pvt->read_frame.data, buffer2, 320); - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples / 2; - - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; - - *frame = &tech_pvt->read_frame; - - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); - } else { - DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); - if (tech_pvt->buffer2_full) { - memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); - tech_pvt->buffer2_full = 0; - samples = 320; - DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); - - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples / 2; - - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; - - *frame = &tech_pvt->read_frame; - - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); - } - - } - //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); - if (samples != 320) { - DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); - goto cng; - } -//DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp); - -//usleep(17000); -//usleep(17000); - - memset(digit_str, 0, sizeof(digit_str)); - //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); - //teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str)); - dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); - dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str)); - - gsmopen_sound_boost(tech_pvt->read_frame.data, tech_pvt->read_frame.samples, tech_pvt->capture_boost); - - if (digit_str[0]) { - switch_time_t new_dtmf_timestamp = switch_time_now(); - if ((new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp) > 350000) { //FIXME: make it configurable - char *p = digit_str; - switch_channel_t *channel = switch_core_session_get_channel(session); - - while (p && *p) { - switch_dtmf_t dtmf = { 0 }; - dtmf.digit = *p; - dtmf.duration = SWITCH_DEFAULT_DTMF_DURATION; - switch_channel_queue_dtmf(channel, &dtmf); - p++; - } - NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, - (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); - tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; - } - } - while (switch_test_flag(tech_pvt, TFLAG_IO)) { - if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { - switch_clear_flag(tech_pvt, TFLAG_BREAK); - DEBUGA_GSMOPEN("CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG); - goto cng; - } - - if (!switch_test_flag(tech_pvt, TFLAG_IO)) { - DEBUGA_GSMOPEN("CHANNEL READ FRAME not IO\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - } - - if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) { - switch_clear_flag(tech_pvt, TFLAG_VOICE); - if (!tech_pvt->read_frame.datalen) { - DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG); - continue; - } - *frame = &tech_pvt->read_frame; -#ifdef BIGENDIAN - if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { - switch_swap_linear((int16_t *) (*frame)->data, (int) (*frame)->datalen / 2); - } -#endif - //WARNINGA("HERE\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_SUCCESS; - } - - WARNINGA("HERE\n", GSMOPEN_P_LOG); - DEBUGA_GSMOPEN("CHANNEL READ no TFLAG_VOICE\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - - } - - DEBUGA_GSMOPEN("CHANNEL READ FALSE\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_FALSE; - cng: - data = (switch_byte_t *) tech_pvt->read_frame.data; - data[0] = 65; - data[1] = 0; - tech_pvt->read_frame.datalen = 2; - tech_pvt->read_frame.flags = SFF_CNG; - *frame = &tech_pvt->read_frame; - return SWITCH_STATUS_SUCCESS; - -} - -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) -{ - switch_channel_t *channel = NULL; - private_t *tech_pvt = NULL; - - unsigned int sent; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - if (!switch_channel_ready(channel) || !switch_test_flag(tech_pvt, TFLAG_IO)) { - ERRORA("channel not ready \n", GSMOPEN_P_LOG); - //TODO: kill the bastard - return SWITCH_STATUS_FALSE; - } -#ifdef BIGENDIAN - if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { -#ifdef WIN32 - switch_swap_linear((int16_t *) frame->data, (int) frame->datalen / 2); -#else - switch_swap_linear(frame->data, (int) frame->datalen / 2); -#endif //WIN32 - } -#endif - - //switch_core_timer_next(&tech_pvt->timer_write); - //sent = frame->datalen; - - //ERRORA("PLAY \n", GSMOPEN_P_LOG); - - gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); - sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); - - if (sent && sent != frame->datalen && sent != -1) { - DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); - } - //NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_answer_channel(switch_core_session_t *session) -{ - private_t *tech_pvt; - switch_channel_t *channel = NULL; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_set_flag(tech_pvt, TFLAG_IO); - gsmopen_serial_answer(tech_pvt); - - /* Move channel's state machine to ROUTING. This means the call is trying - to get from the initial start where the call because, to the point - where a destination has been identified. If the channel is simply - left in the initial state, nothing will happen. */ - switch_channel_set_state(channel, CS_ROUTING); - switch_mutex_lock(globals.mutex); - globals.calls++; - - switch_mutex_unlock(globals.mutex); - DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); - - DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) -{ - switch_channel_t *channel; - private_t *tech_pvt; - - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - tech_pvt = (private_t *) switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - switch (msg->message_id) { - case SWITCH_MESSAGE_INDICATE_ANSWER: - { - DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); - channel_answer_channel(session); - } - break; - case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC: - - DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_AUDIO_SYNC\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - switch_core_timer_sync(&tech_pvt->timer_read); - switch_core_timer_sync(&tech_pvt->timer_write); - - break; - - default: - { - DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); - } - break; - } - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_receive_event(switch_core_session_t *session, switch_event_t *event) -{ - struct private_object *tech_pvt = (struct private_object *) switch_core_session_get_private(session); - char *body = switch_event_get_body(event); - switch_assert(tech_pvt != NULL); - - if (!body) { - body = (char *) ""; - } - - WARNINGA("event: |||%s|||\n", GSMOPEN_P_LOG, body); - - return SWITCH_STATUS_SUCCESS; -} - -switch_state_handler_table_t gsmopen_state_handlers = { - /*.on_init */ channel_on_init, - /*.on_routing */ channel_on_routing, - /*.on_execute */ channel_on_execute, - /*.on_hangup */ channel_on_hangup, - /*.on_exchange_media */ channel_on_exchange_media, - /*.on_soft_execute */ channel_on_soft_execute, - /*.on_consume_media */ channel_on_consume_media, - /*.on_hibernate */ NULL, - /*.on_reset */ NULL, - /*.on_park */ NULL, - /*.on_reporting */ NULL, - /*.on_destroy */ channel_on_destroy -}; - -switch_io_routines_t gsmopen_io_routines = { - /*.outgoing_channel */ channel_outgoing_channel, - /*.read_frame */ channel_read_frame, - /*.write_frame */ channel_write_frame, - /*.kill_channel */ channel_kill_channel, - /*.send_dtmf */ channel_send_dtmf, - /*.receive_message */ channel_receive_message, - /*.receive_event */ channel_receive_event -}; - -static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, - switch_event_t *var_event, - switch_caller_profile_t *outbound_profile, - switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, - switch_call_cause_t *cancel_cause) -{ - private_t *tech_pvt = NULL; - if ((*new_session = switch_core_session_request(gsmopen_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, flags, pool)) != 0) { - switch_channel_t *channel = NULL; - switch_caller_profile_t *caller_profile; - char *rdest; - int found = 0; - char interface_name[256]; - - DEBUGA_GSMOPEN("1 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); - switch_core_session_add_stream(*new_session, NULL); - - if (!zstr(outbound_profile->destination_number)) { - int i; - char *slash; - - switch_copy_string(interface_name, outbound_profile->destination_number, 255); - slash = strrchr(interface_name, '/'); - *slash = '\0'; - - switch_mutex_lock(globals.mutex); - if (strncmp("ANY", interface_name, strlen(interface_name)) == 0 || strncmp("RR", interface_name, strlen(interface_name)) == 0) { - /* we've been asked for the "ANY" interface, let's find the first idle interface */ - //DEBUGA_GSMOPEN("Finding one available gsmopen interface\n", GSMOPEN_P_LOG); - //tech_pvt = find_available_gsmopen_interface(NULL); - //if (tech_pvt) - //found = 1; - //} else if (strncmp("RR", interface_name, strlen(interface_name)) == 0) { - /* Find the first idle interface using Round Robin */ - DEBUGA_GSMOPEN("Finding one available gsmopen interface RR\n", GSMOPEN_P_LOG); - tech_pvt = find_available_gsmopen_interface_rr(NULL); - if (tech_pvt) { - found = 1; - DEBUGA_GSMOPEN("FOUND one available gsmopen interface RR\n", GSMOPEN_P_LOG); - } - } - - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, interface_name, strlen(interface_name)) == 0)) { - if (strlen(globals.GSMOPEN_INTERFACES[i].session_uuid_str)) { - DEBUGA_GSMOPEN - ("globals.GSMOPEN_INTERFACES[%d].name=|||%s||| session_uuid_str=|||%s||| is BUSY\n", - GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].session_uuid_str); - DEBUGA_GSMOPEN("1 SESSION_DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); - switch_core_session_destroy(new_session); - switch_mutex_unlock(globals.mutex); - return SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION; - } - - DEBUGA_GSMOPEN("globals.GSMOPEN_INTERFACES[%d].name=|||%s|||?\n", GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name); - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - found = 1; - break; - } - - } - - } else { - ERRORA("Doh! no destination number?\n", GSMOPEN_P_LOG); - switch_core_session_destroy(new_session); - return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; - } - - if (!found) { - DEBUGA_GSMOPEN("Doh! no available interface for |||%s|||?\n", GSMOPEN_P_LOG, interface_name); - DEBUGA_GSMOPEN("2 SESSION_DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); - switch_core_session_destroy(new_session); - switch_mutex_unlock(globals.mutex); - //return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; - return SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION; - } - - channel = switch_core_session_get_channel(*new_session); - if (!channel) { - ERRORA("Doh! no channel?\n", GSMOPEN_P_LOG); - switch_core_session_destroy(new_session); - switch_mutex_unlock(globals.mutex); - return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; - } - if (gsmopen_tech_init(tech_pvt, *new_session) != SWITCH_STATUS_SUCCESS) { - ERRORA("Doh! no tech_init?\n", GSMOPEN_P_LOG); - switch_core_session_destroy(new_session); - switch_mutex_unlock(globals.mutex); - return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; - } - - if (outbound_profile) { - char name[128]; - - snprintf(name, sizeof(name), "gsmopen/%s", outbound_profile->destination_number); - //snprintf(name, sizeof(name), "gsmopen/%s", tech_pvt->name); - switch_channel_set_name(channel, name); - caller_profile = switch_caller_profile_clone(*new_session, outbound_profile); - switch_channel_set_caller_profile(channel, caller_profile); - tech_pvt->caller_profile = caller_profile; - } else { - ERRORA("Doh! no caller profile\n", GSMOPEN_P_LOG); - switch_core_session_destroy(new_session); - switch_mutex_unlock(globals.mutex); - return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; - } - - tech_pvt->ob_calls++; - - rdest = strchr(caller_profile->destination_number, '/'); - *rdest++ = '\0'; - - //gsmopen_call(tech_pvt, rdest, 30); - - switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(*new_session), sizeof(tech_pvt->session_uuid_str)); - caller_profile = tech_pvt->caller_profile; - caller_profile->destination_number = rdest; - - switch_set_flag(tech_pvt, TFLAG_OUTBOUND); - switch_channel_set_state(channel, CS_INIT); - gsmopen_call(tech_pvt, rdest, 30); - switch_mutex_unlock(globals.mutex); - return SWITCH_CAUSE_SUCCESS; - } - - ERRORA("Doh! no new_session\n", GSMOPEN_P_LOG); - return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; -} - -/*! - * \brief This thread runs during a call, and monitor the interface for signaling, like hangup, caller id, etc most of signaling is handled inside the gsmopen_signaling_read function - * - */ - -static switch_status_t load_config(int reload_type) -{ - const char *cf = "gsmopen.conf"; - switch_xml_t cfg, xml, global_settings, param, interfaces, myinterface; - private_t *tech_pvt = NULL; - - switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, gsmopen_module_pool); - if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { - ERRORA("open of %s failed\n", GSMOPEN_P_LOG, cf); - running = 0; - switch_xml_free(xml); - return SWITCH_STATUS_TERM; - } - - switch_mutex_lock(globals.mutex); - if ((global_settings = switch_xml_child(cfg, "global_settings"))) { - for (param = switch_xml_child(global_settings, "param"); param; param = param->next) { - char *var = (char *) switch_xml_attr_soft(param, "name"); - char *val = (char *) switch_xml_attr_soft(param, "value"); - - if (!strcasecmp(var, "debug")) { - DEBUGA_GSMOPEN("globals.debug=%d\n", GSMOPEN_P_LOG, globals.debug); - globals.debug = atoi(val); - DEBUGA_GSMOPEN("globals.debug=%d\n", GSMOPEN_P_LOG, globals.debug); - } else if (!strcasecmp(var, "hold-music")) { - switch_set_string(globals.hold_music, val); - DEBUGA_GSMOPEN("globals.hold_music=%s\n", GSMOPEN_P_LOG, globals.hold_music); - } else if (!strcmp(var, "dialplan")) { - set_global_dialplan(val); - DEBUGA_GSMOPEN("globals.dialplan=%s\n", GSMOPEN_P_LOG, globals.dialplan); - } else if (!strcmp(var, "destination")) { - set_global_destination(val); - DEBUGA_GSMOPEN("globals.destination=%s\n", GSMOPEN_P_LOG, globals.destination); - } else if (!strcmp(var, "context")) { - set_global_context(val); - DEBUGA_GSMOPEN("globals.context=%s\n", GSMOPEN_P_LOG, globals.context); - - } - - } - } - - if ((interfaces = switch_xml_child(cfg, "per_interface_settings"))) { - int i = 0; - - for (myinterface = switch_xml_child(interfaces, "interface"); myinterface; myinterface = myinterface->next) { - char *id = (char *) switch_xml_attr(myinterface, "id"); - char *name = (char *) switch_xml_attr(myinterface, "name"); - const char *context = "default"; - const char *dialplan = "XML"; - const char *destination = "5000"; - const char *controldevice_name = "/dev/ttyACM0"; - const char *controldevice_audio_name = "/dev/ttyUSB2"; - char *digit_timeout = NULL; - char *max_digits = NULL; - char *hotline = NULL; - char *dial_regex = NULL; - char *hold_music = NULL; - char *fail_dial_regex = NULL; - const char *enable_callerid = "true"; - - const char *at_dial_pre_number = "ATD"; - const char *at_dial_post_number = ";"; - const char *at_dial_expect = "OK"; - const char *at_hangup = "ATH"; - const char *at_hangup_expect = "OK"; - const char *at_answer = "ATA"; - const char *at_answer_expect = "OK"; - const char *at_send_dtmf = "AT+VTS"; - const char *at_preinit_1 = ""; - const char *at_preinit_1_expect = ""; - const char *at_preinit_2 = ""; - const char *at_preinit_2_expect = ""; - const char *at_preinit_3 = ""; - const char *at_preinit_3_expect = ""; - const char *at_preinit_4 = ""; - const char *at_preinit_4_expect = ""; - const char *at_preinit_5 = ""; - const char *at_preinit_5_expect = ""; - const char *at_postinit_1 = "at+cmic=0,9"; - const char *at_postinit_1_expect = "OK"; - const char *at_postinit_2 = "AT+CKPD=\"EEE\""; - const char *at_postinit_2_expect = "OK"; - const char *at_postinit_3 = "AT+CSSN=1,0"; - const char *at_postinit_3_expect = "OK"; - const char *at_postinit_4 = "at+sidet=0"; - const char *at_postinit_4_expect = "OK"; - const char *at_postinit_5 = "at+clvl=3"; - const char *at_postinit_5_expect = "OK"; - const char *at_query_battchg = "AT+CBC"; - const char *at_query_battchg_expect = "OK"; - const char *at_query_signal = "AT+CSQ"; - const char *at_query_signal_expect = "OK"; - const char *at_call_idle = "+MCST: 1"; - const char *at_call_incoming = "RING"; - const char *at_call_active = "^CONN:1,0"; - const char *at_call_failed = "+MCST: 65"; - const char *at_call_calling = "^ORIG:1,0"; - const char *at_indicator_noservice_string = "CIEV: 2;0"; - const char *at_indicator_nosignal_string = "CIEV: 5;0"; - const char *at_indicator_lowsignal_string = "CIEV: 5;1"; - const char *at_indicator_lowbattchg_string = "CIEV: 0;1"; - const char *at_indicator_nobattchg_string = "CIEV: 0;0"; - const char *at_indicator_callactive_string = "CIEV: 3;1"; - const char *at_indicator_nocallactive_string = "CIEV: 3;0"; - const char *at_indicator_nocallsetup_string = "CIEV: 6;0"; - const char *at_indicator_callsetupincoming_string = "CIEV: 6;1"; - const char *at_indicator_callsetupoutgoing_string = "CIEV: 6;2"; - const char *at_indicator_callsetupremoteringing_string = "CIEV: 6;3"; - //const char *sms_receiving_program = "/usr/local/bin/ciapalo"; - const char *at_early_audio = "0"; - const char *at_after_preinit_pause = "500000"; - const char *at_initial_pause = "500000"; - const char *at_has_clcc = "0"; - const char *at_has_ecam = "0"; - const char *gsmopen_sound_rate = "8000"; - const char *capture_boost = "0"; - const char *playback_boost = "0"; - const char *no_sound = "0"; - const char *portaudiocindex = "1"; - const char *portaudiopindex = "1"; - const char *speexecho = "1"; - const char *speexpreprocess = "1"; - - uint32_t interface_id = 0; - int controldevice_speed = 115200; //FIXME TODO - int controldevice_audio_speed = 115200; //FIXME TODO - uint32_t controldevprotocol = PROTOCOL_AT; //FIXME TODO - uint32_t running = 1; //FIXME TODO - const char *gsmopen_serial_sync_period = "300"; //FIXME TODO - - tech_pvt = NULL; - - for (param = switch_xml_child(myinterface, "param"); param; param = param->next) { - char *var = (char *) switch_xml_attr_soft(param, "name"); - char *val = (char *) switch_xml_attr_soft(param, "value"); - - if (!strcasecmp(var, "id")) { - id = val; - } else if (!strcasecmp(var, "name")) { - name = val; - } else if (!strcasecmp(var, "context")) { - context = val; - } else if (!strcasecmp(var, "dialplan")) { - dialplan = val; - } else if (!strcasecmp(var, "destination")) { - destination = val; - } else if (!strcasecmp(var, "controldevice_name")) { - controldevice_name = val; - } else if (!strcasecmp(var, "controldevice_audio_name")) { - controldevice_audio_name = val; - } else if (!strcasecmp(var, "digit_timeout")) { - digit_timeout = val; - } else if (!strcasecmp(var, "max_digits")) { - max_digits = val; - } else if (!strcasecmp(var, "hotline")) { - hotline = val; - } else if (!strcasecmp(var, "dial_regex")) { - dial_regex = val; - } else if (!strcasecmp(var, SWITCH_HOLD_MUSIC_VARIABLE)) { - hold_music = val; - } else if (!strcasecmp(var, "fail_dial_regex")) { - fail_dial_regex = val; - } else if (!strcasecmp(var, "enable_callerid")) { - enable_callerid = val; - } else if (!strcasecmp(var, "at_dial_pre_number")) { - at_dial_pre_number = val; - } else if (!strcasecmp(var, "at_dial_post_number")) { - at_dial_post_number = val; - } else if (!strcasecmp(var, "at_dial_expect")) { - at_dial_expect = val; - } else if (!strcasecmp(var, "at_hangup")) { - at_hangup = val; - } else if (!strcasecmp(var, "at_hangup_expect")) { - at_hangup_expect = val; - } else if (!strcasecmp(var, "at_answer")) { - at_answer = val; - } else if (!strcasecmp(var, "at_answer_expect")) { - at_answer_expect = val; - } else if (!strcasecmp(var, "at_send_dtmf")) { - at_send_dtmf = val; - } else if (!strcasecmp(var, "at_preinit_1")) { - at_preinit_1 = val; - } else if (!strcasecmp(var, "at_preinit_1_expect")) { - at_preinit_1_expect = val; - } else if (!strcasecmp(var, "at_preinit_2")) { - at_preinit_2 = val; - } else if (!strcasecmp(var, "at_preinit_2_expect")) { - at_preinit_2_expect = val; - } else if (!strcasecmp(var, "at_preinit_3")) { - at_preinit_3 = val; - } else if (!strcasecmp(var, "at_preinit_3_expect")) { - at_preinit_3_expect = val; - } else if (!strcasecmp(var, "at_preinit_4")) { - at_preinit_4 = val; - } else if (!strcasecmp(var, "at_preinit_4_expect")) { - at_preinit_4_expect = val; - } else if (!strcasecmp(var, "at_preinit_5")) { - at_preinit_5 = val; - } else if (!strcasecmp(var, "at_preinit_5_expect")) { - at_preinit_5_expect = val; - } else if (!strcasecmp(var, "at_postinit_1")) { - at_postinit_1 = val; - } else if (!strcasecmp(var, "at_postinit_1_expect")) { - at_postinit_1_expect = val; - } else if (!strcasecmp(var, "at_postinit_2")) { - at_postinit_2 = val; - } else if (!strcasecmp(var, "at_postinit_2_expect")) { - at_postinit_2_expect = val; - } else if (!strcasecmp(var, "at_postinit_3")) { - at_postinit_3 = val; - } else if (!strcasecmp(var, "at_postinit_3_expect")) { - at_postinit_3_expect = val; - } else if (!strcasecmp(var, "at_postinit_4")) { - at_postinit_4 = val; - } else if (!strcasecmp(var, "at_postinit_4_expect")) { - at_postinit_4_expect = val; - } else if (!strcasecmp(var, "at_postinit_5")) { - at_postinit_5 = val; - } else if (!strcasecmp(var, "at_postinit_5_expect")) { - at_postinit_5_expect = val; - } else if (!strcasecmp(var, "at_query_battchg")) { - at_query_battchg = val; - } else if (!strcasecmp(var, "at_query_battchg_expect")) { - at_query_battchg_expect = val; - } else if (!strcasecmp(var, "at_query_signal")) { - at_query_signal = val; - } else if (!strcasecmp(var, "at_query_signal_expect")) { - at_query_signal_expect = val; - } else if (!strcasecmp(var, "at_call_idle")) { - at_call_idle = val; - } else if (!strcasecmp(var, "at_call_incoming")) { - at_call_incoming = val; - } else if (!strcasecmp(var, "at_call_active")) { - at_call_active = val; - } else if (!strcasecmp(var, "at_call_failed")) { - at_call_failed = val; - } else if (!strcasecmp(var, "at_call_calling")) { - at_call_calling = val; - } else if (!strcasecmp(var, "at_indicator_noservice_string")) { - at_indicator_noservice_string = val; - } else if (!strcasecmp(var, "at_indicator_nosignal_string")) { - at_indicator_nosignal_string = val; - } else if (!strcasecmp(var, "at_indicator_lowsignal_string")) { - at_indicator_lowsignal_string = val; - } else if (!strcasecmp(var, "at_indicator_lowbattchg_string")) { - at_indicator_lowbattchg_string = val; - } else if (!strcasecmp(var, "at_indicator_nobattchg_string")) { - at_indicator_nobattchg_string = val; - } else if (!strcasecmp(var, "at_indicator_callactive_string")) { - at_indicator_callactive_string = val; - } else if (!strcasecmp(var, "at_indicator_nocallactive_string")) { - at_indicator_nocallactive_string = val; - } else if (!strcasecmp(var, "at_indicator_nocallsetup_string")) { - at_indicator_nocallsetup_string = val; - } else if (!strcasecmp(var, "at_indicator_callsetupincoming_string")) { - at_indicator_callsetupincoming_string = val; - } else if (!strcasecmp(var, "at_indicator_callsetupoutgoing_string")) { - at_indicator_callsetupoutgoing_string = val; - } else if (!strcasecmp(var, "at_indicator_callsetupremoteringing_string")) { - at_indicator_callsetupremoteringing_string = val; - //} else if (!strcasecmp(var, "sms_receiving_program")) { - //sms_receiving_program = val; - } else if (!strcasecmp(var, "portaudiocindex")) { - portaudiocindex = val; - } else if (!strcasecmp(var, "portaudiopindex")) { - portaudiopindex = val; - } else if (!strcasecmp(var, "speexecho")) { - speexecho = val; - } else if (!strcasecmp(var, "speexpreprocess")) { - speexpreprocess = val; - } else if (!strcasecmp(var, "at_early_audio")) { - at_early_audio = val; - } else if (!strcasecmp(var, "at_after_preinit_pause")) { - at_after_preinit_pause = val; - } else if (!strcasecmp(var, "at_initial_pause")) { - at_initial_pause = val; - } else if (!strcasecmp(var, "at_has_clcc")) { - at_has_clcc = val; - } else if (!strcasecmp(var, "at_has_ecam")) { - at_has_ecam = val; - } else if (!strcasecmp(var, "gsmopen_sound_rate")) { - gsmopen_sound_rate = val; - } else if (!strcasecmp(var, "capture_boost")) { - capture_boost = val; - } else if (!strcasecmp(var, "playback_boost")) { - playback_boost = val; - } else if (!strcasecmp(var, "no_sound")) { - no_sound = val; - } else if (!strcasecmp(var, "gsmopen_serial_sync_period")) { - gsmopen_serial_sync_period = val; - } - - } - - /* BEGIN: Changes here */ - if (reload_type == SOFT_RELOAD) { - char the_interface[256]; - sprintf(the_interface, "#%s", name); - - if (interface_exists(the_interface) == SWITCH_STATUS_SUCCESS) { - continue; - } - } - /* END: Changes here */ - - if (!id) { - ERRORA("interface missing REQUIRED param 'id'\n", GSMOPEN_P_LOG); - continue; - } - - if (switch_is_number(id)) { - interface_id = atoi(id); - } else { - ERRORA("interface param 'id' MUST be a number, now id='%s'\n", GSMOPEN_P_LOG, id); - continue; - } - - if (!switch_is_number(at_early_audio)) { - ERRORA("interface param 'at_early_audio' MUST be a number, now at_early_audio='%s'\n", GSMOPEN_P_LOG, at_early_audio); - continue; - } - if (!switch_is_number(at_after_preinit_pause)) { - ERRORA("interface param 'at_after_preinit_pause' MUST be a number, now at_after_preinit_pause='%s'\n", GSMOPEN_P_LOG, - at_after_preinit_pause); - continue; - } - if (!switch_is_number(at_initial_pause)) { - ERRORA("interface param 'at_initial_pause' MUST be a number, now at_initial_pause='%s'\n", GSMOPEN_P_LOG, at_initial_pause); - continue; - } - if (!switch_is_number(at_has_clcc)) { - ERRORA("interface param 'at_has_clcc' MUST be a number, now at_has_clcc='%s'\n", GSMOPEN_P_LOG, at_has_clcc); - continue; - } - if (!switch_is_number(at_has_ecam)) { - ERRORA("interface param 'at_has_ecam' MUST be a number, now at_has_ecam='%s'\n", GSMOPEN_P_LOG, at_has_ecam); - continue; - } - if (!switch_is_number(gsmopen_sound_rate)) { - ERRORA("interface param 'gsmopen_sound_rate' MUST be a number, now gsmopen_sound_rate='%s'\n", GSMOPEN_P_LOG, gsmopen_sound_rate); - continue; - } - if (!switch_is_number(capture_boost)) { - ERRORA("interface param 'capture_boost' MUST be a number, now capture_boost='%s'\n", GSMOPEN_P_LOG, capture_boost); - continue; - } - if (!switch_is_number(playback_boost)) { - ERRORA("interface param 'playback_boost' MUST be a number, now playback_boost='%s'\n", GSMOPEN_P_LOG, playback_boost); - continue; - } - if (!switch_is_number(no_sound)) { - ERRORA("interface param 'no_sound' MUST be a number, now no_sound='%s'\n", GSMOPEN_P_LOG, no_sound); - continue; - } - if (!switch_is_number(gsmopen_serial_sync_period)) { - ERRORA("interface param 'gsmopen_serial_sync_period' MUST be a number, now gsmopen_serial_sync_period='%s'\n", GSMOPEN_P_LOG, - gsmopen_serial_sync_period); - continue; - } - - if (interface_id && interface_id < GSMOPEN_MAX_INTERFACES) { - private_t newconf; - switch_threadattr_t *gsmopen_api_thread_attr = NULL; - int res = 0; - - memset(&newconf, '\0', sizeof(newconf)); - globals.GSMOPEN_INTERFACES[interface_id] = newconf; - - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - - switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); - switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_audio_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); - - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].id, id); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].name, name); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].context, context); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dialplan, dialplan); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].destination, destination); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_name, controldevice_name); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name, controldevice_audio_name); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dial_regex, dial_regex); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].hold_music, hold_music); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].fail_dial_regex, fail_dial_regex); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_pre_number, at_dial_pre_number); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_post_number, at_dial_post_number); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_expect, at_dial_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_hangup, at_hangup); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_hangup_expect, at_hangup_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_answer, at_answer); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_answer_expect, at_answer_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_send_dtmf, at_send_dtmf); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_1, at_preinit_1); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_1_expect, at_preinit_1_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_2, at_preinit_2); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_2_expect, at_preinit_2_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_3, at_preinit_3); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_3_expect, at_preinit_3_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_4, at_preinit_4); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_4_expect, at_preinit_4_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_5, at_preinit_5); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_5_expect, at_preinit_5_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_1, at_postinit_1); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_1_expect, at_postinit_1_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_2, at_postinit_2); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_2_expect, at_postinit_2_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_3, at_postinit_3); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_3_expect, at_postinit_3_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_4, at_postinit_4); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_4_expect, at_postinit_4_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_5, at_postinit_5); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_5_expect, at_postinit_5_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_battchg, at_query_battchg); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_battchg_expect, at_query_battchg_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_signal, at_query_signal); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_signal_expect, at_query_signal_expect); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_idle, at_call_idle); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_incoming, at_call_incoming); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_active, at_call_active); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_failed, at_call_failed); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_calling, at_call_calling); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_noservice_string, at_indicator_noservice_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nosignal_string, at_indicator_nosignal_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_lowsignal_string, at_indicator_lowsignal_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_lowbattchg_string, at_indicator_lowbattchg_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nobattchg_string, at_indicator_nobattchg_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callactive_string, at_indicator_callactive_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nocallactive_string, at_indicator_nocallactive_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nocallsetup_string, at_indicator_nocallsetup_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupincoming_string, at_indicator_callsetupincoming_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupoutgoing_string, at_indicator_callsetupoutgoing_string); - switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupremoteringing_string, - at_indicator_callsetupremoteringing_string); - //switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].sms_receiving_program, sms_receiving_program); - globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio); - globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause); - globals.GSMOPEN_INTERFACES[interface_id].at_initial_pause = atoi(at_initial_pause); - globals.GSMOPEN_INTERFACES[interface_id].at_has_clcc = atoi(at_has_clcc); - globals.GSMOPEN_INTERFACES[interface_id].at_has_ecam = atoi(at_has_ecam); - globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost); - globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost); - globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); - globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); - - globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed = controldevice_speed; //FIXME - globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol = controldevprotocol; //FIXME - globals.GSMOPEN_INTERFACES[interface_id].running = running; //FIXME - - WARNINGA("STARTING interface_id=%d\n", GSMOPEN_P_LOG, interface_id); - DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].id); - DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].name); - DEBUGA_GSMOPEN("hold-music=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].hold_music); - DEBUGA_GSMOPEN("context=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].context); - DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].dialplan); - DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].destination); - DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_name); - DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name); - DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, - (int) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); - - /* init the serial port */ - if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { - globals.GSMOPEN_INTERFACES[interface_id].controldevfd = - gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed); - if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) { - ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active = 0; - globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; - continue; - } - } - - /* config the phone/modem on the serial port */ - if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { - res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); - if (res) { - int count = 0; - ERRORA("gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG); - while (res && count < 5) { - switch_sleep(100000); //0.1 seconds - res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); - count++; - if (res) { - ERRORA("%d: gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG, count); - } - } - if (res) { - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_config failed"); - globals.GSMOPEN_INTERFACES[interface_id].active = 0; - globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; - continue; - } - } - } - - if (globals.GSMOPEN_INTERFACES[interface_id].no_sound == 0) { - if (serial_audio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { - ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_init failed"); - globals.GSMOPEN_INTERFACES[interface_id].active = 0; - globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; - continue; - - } - - if (serial_audio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { - ERRORA("serial_audio_shutdown failed\n", GSMOPEN_P_LOG); - ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); - //return SWITCH_STATUS_FALSE; - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_shutdown failed"); - globals.GSMOPEN_INTERFACES[interface_id].active = 0; - globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; - continue; - - } - - } - - globals.GSMOPEN_INTERFACES[interface_id].active = 1; - - //gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME - //gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME - gsmopen_store_boost((char *) capture_boost, &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME - gsmopen_store_boost((char *) playback_boost, &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME - - switch_sleep(100000); - switch_threadattr_create(&gsmopen_api_thread_attr, gsmopen_module_pool); - switch_threadattr_stacksize_set(gsmopen_api_thread_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread, gsmopen_api_thread_attr, gsmopen_do_gsmopenapi_thread, - &globals.GSMOPEN_INTERFACES[interface_id], gsmopen_module_pool); - - switch_sleep(100000); - WARNINGA("STARTED interface_id=%d\n", GSMOPEN_P_LOG, interface_id); - - } else { - ERRORA("interface id %d is higher than GSMOPEN_MAX_INTERFACES (%d)\n", GSMOPEN_P_LOG, interface_id, GSMOPEN_MAX_INTERFACES); - alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "interface id is higher than GSMOPEN_MAX_INTERFACES"); - continue; - } - - } - - for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { - /* How many real intterfaces */ - globals.real_interfaces = i + 1; - - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - - DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].id); - DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].name); - DEBUGA_GSMOPEN("context=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].context); - DEBUGA_GSMOPEN("hold-music=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].hold_music); - DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].dialplan); - DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].destination); - DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_name); - DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int) globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); - DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); - } - } - } - - switch_mutex_unlock(globals.mutex); - switch_xml_free(xml); - - return SWITCH_STATUS_SUCCESS; -} - -//static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint) -static switch_status_t chat_send(switch_event_t *message_event) -{ - char *user, *host, *f_user = NULL, *f_host = NULL, *f_resource = NULL; - private_t *tech_pvt = NULL; - int i = 0, found = 0; - - const char *proto; - const char *from; - const char *to; - const char *subject; - const char *body; - //const char *type; - const char *hint; - - proto = switch_event_get_header(message_event, "proto"); - from = switch_event_get_header(message_event, "from"); - to = switch_event_get_header(message_event, "to"); - subject = switch_event_get_header(message_event, "subject"); - body = switch_event_get_body(message_event); - //type = switch_event_get_header(message_event, "type"); - hint = switch_event_get_header(message_event, "hint"); - - switch_assert(proto != NULL); - - DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, - hint ? hint : "NULL"); - - if (!to || !strlen(to)) { - ERRORA("Missing To: header.\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_SUCCESS; - } - - if ((!from && !hint) || (!strlen(from) && !strlen(hint))) { - ERRORA("Missing From: AND Hint: headers.\n", GSMOPEN_P_LOG); - return SWITCH_STATUS_SUCCESS; - } - - if (from && (f_user = strdup(from))) { - if ((f_host = strchr(f_user, '@'))) { - *f_host++ = '\0'; - if ((f_resource = strchr(f_host, '/'))) { - *f_resource++ = '\0'; - } - } - } - - if (hint == NULL || !strlen(hint)) { //FIXME FIXME FIXME - hint = from; - } - if (to && (user = strdup(to))) { - if ((host = strchr(user, '@'))) { - *host++ = '\0'; - } - - DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, - hint ? hint : "NULL"); - if (hint && strlen(hint)) { - //in hint we receive the interface name to use - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, hint, strlen(hint)) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - DEBUGA_GSMOPEN("Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", GSMOPEN_P_LOG, i, - globals.GSMOPEN_INTERFACES[i].name); - found = 1; - break; - } - } - } /* FIXME add a tech_pvt member for the SIM telephone number //else { - //we have no a predefined interface name to use (hint is NULL), so let's choose an interface from the username (from) - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].skype_user, from, strlen(from)) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - DEBUGA_GSMOPEN("Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name); - found = 1; - break; - } - } - } - */ - if (!found) { - ERRORA("ERROR: A GSMopen interface with name='%s' or one with SIM_number='%s' was not found\n", GSMOPEN_P_LOG, hint ? hint : "NULL", - from ? from : "NULL"); - goto end; - } else { - gsmopen_sendsms(tech_pvt, (char *) to, (char *) body); - } - } - end: - switch_safe_free(user); - switch_safe_free(f_user); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t compat_chat_send(const char *proto, const char *from, const char *to, - const char *subject, const char *body, const char *type, const char *hint) -{ - switch_event_t *message_event; - switch_status_t status; - - if (switch_event_create(&message_event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "proto", proto); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "from", from); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "to", to); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "subject", subject); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "type", type); - switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "hint", hint); - - if (body) { - switch_event_add_body(message_event, "%s", body); - } - } else { - abort(); - } - - status = chat_send(message_event); - switch_event_destroy(&message_event); - - return status; - -} - -SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load) -{ - switch_api_interface_t *commands_api_interface; - switch_chat_interface_t *chat_interface; - - gsmopen_module_pool = pool; - memset(&globals, '\0', sizeof(globals)); - - running = 1; - - if (load_config(FULL_RELOAD) != SWITCH_STATUS_SUCCESS) { - running = 0; - return SWITCH_STATUS_FALSE; - } - - if (switch_event_reserve_subclass(MY_EVENT_INCOMING_SMS) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass!\n"); - return SWITCH_STATUS_GENERR; - } - - *module_interface = switch_loadable_module_create_module_interface(pool, modname); - gsmopen_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); - gsmopen_endpoint_interface->interface_name = "gsmopen"; - gsmopen_endpoint_interface->io_routines = &gsmopen_io_routines; - gsmopen_endpoint_interface->state_handler = &gsmopen_state_handlers; - - if (running) { - -#if 1 - SWITCH_ADD_API(commands_api_interface, "gsm", "gsm console AT_command", gsm_function, GSM_SYNTAX); - SWITCH_ADD_API(commands_api_interface, "gsmopen", "gsmopen interface AT_command", gsmopen_function, GSMOPEN_SYNTAX); -#endif //0 - SWITCH_ADD_API(commands_api_interface, "gsmopen_boost_audio", "gsmopen_boost_audio interface AT_command", gsmopen_boost_audio_function, - GSMOPEN_BOOST_AUDIO_SYNTAX); - SWITCH_ADD_API(commands_api_interface, "gsmopen_dump", "gsmopen_dump interface", gsmopen_dump_function, GSMOPEN_DUMP_SYNTAX); - SWITCH_ADD_API(commands_api_interface, "gsmopen_sendsms", "gsmopen_sendsms interface destination_number SMS_text", sendsms_function, - SENDSMS_SYNTAX); - SWITCH_ADD_CHAT(chat_interface, GSMOPEN_CHAT_PROTO, chat_send); - - /* indicate that the module should continue to be loaded */ - return SWITCH_STATUS_SUCCESS; - } else - return SWITCH_STATUS_FALSE; -} - -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown) -{ - int x; - private_t *tech_pvt = NULL; - switch_status_t status; - unsigned int howmany = 8; - int interface_id; - int fd; - - running = 0; - - for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - - if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { - WARNINGA("SHUTDOWN interface_id=%d\n", GSMOPEN_P_LOG, interface_id); - globals.GSMOPEN_INTERFACES[interface_id].running = 0; - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { -#ifdef WIN32 - switch_file_write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die -#else /* WIN32 */ - howmany = write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", howmany); -#endif /* WIN32 */ - } - x = 10; - while (x) { //FIXME 0.5 seconds? - x--; - switch_yield(50000); - } - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { - switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread); - } - if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { - switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread); - } - - x = 10; - while (x) { //FIXME 0.5 seconds? - x--; - switch_yield(50000); - } - fd = tech_pvt->controldevfd; - //DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); - if (fd) { - //close(fd); - //tech_pvt->controldevfd = -1; - DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); - } -#ifndef WIN32 - shutdown(tech_pvt->audiogsmopenpipe[0], 2); - close(tech_pvt->audiogsmopenpipe[0]); - shutdown(tech_pvt->audiogsmopenpipe[1], 2); - close(tech_pvt->audiogsmopenpipe[1]); - shutdown(tech_pvt->audiopipe[0], 2); - close(tech_pvt->audiopipe[0]); - shutdown(tech_pvt->audiopipe[1], 2); - close(tech_pvt->audiopipe[1]); - shutdown(tech_pvt->GSMopenHandles.fdesc[0], 2); - close(tech_pvt->GSMopenHandles.fdesc[0]); - shutdown(tech_pvt->GSMopenHandles.fdesc[1], 2); - close(tech_pvt->GSMopenHandles.fdesc[1]); -#endif /* WIN32 */ - } - - } - - switch_event_free_subclass(MY_EVENT_INCOMING_SMS); - - switch_safe_free(globals.dialplan); - switch_safe_free(globals.context); - switch_safe_free(globals.destination); - switch_safe_free(globals.codec_string); - switch_safe_free(globals.codec_rates_string); - - return SWITCH_STATUS_SUCCESS; -} - -void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t *thread, void *obj) -{ - return gsmopen_do_gsmopenapi_thread_func(obj); -} - -int dtmf_received(private_t *tech_pvt, char *value) -{ - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; - - session = switch_core_session_locate(tech_pvt->session_uuid_str); - channel = switch_core_session_get_channel(session); - - if (channel) { - - if (!switch_channel_test_flag(channel, CF_BRIDGED)) { - - switch_dtmf_t dtmf = { (char) value[0], switch_core_default_dtmf_duration(0) }; - DEBUGA_GSMOPEN("received DTMF %c on channel %s\n", GSMOPEN_P_LOG, dtmf.digit, switch_channel_get_name(channel)); - switch_mutex_lock(tech_pvt->flag_mutex); - //FIXME: why sometimes DTMFs from here do not seems to be get by FS? - switch_channel_queue_dtmf(channel, &dtmf); - switch_set_flag(tech_pvt, TFLAG_DTMF); - switch_mutex_unlock(tech_pvt->flag_mutex); - } else { - DEBUGA_GSMOPEN - ("received a DTMF on channel %s, but we're BRIDGED, so let's NOT relay it out of band\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - } - } else { - WARNINGA("received %c DTMF, but no channel?\n", GSMOPEN_P_LOG, value[0]); - } - switch_core_session_rwunlock(session); - - return 0; -} - -int new_inbound_channel(private_t *tech_pvt) -{ - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; - - switch_assert(tech_pvt != NULL); - tech_pvt->ib_calls++; - if ((session = switch_core_session_request(gsmopen_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL)) != 0) { - DEBUGA_GSMOPEN("2 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(session)); - switch_core_session_add_stream(session, NULL); - channel = switch_core_session_get_channel(session); - if (!channel) { - ERRORA("Doh! no channel?\n", GSMOPEN_P_LOG); - switch_core_session_destroy(&session); - return 0; - } - if (gsmopen_tech_init(tech_pvt, session) != SWITCH_STATUS_SUCCESS) { - ERRORA("Doh! no tech_init?\n", GSMOPEN_P_LOG); - switch_core_session_destroy(&session); - return 0; - } - - if ((tech_pvt->caller_profile = - switch_caller_profile_new(switch_core_session_get_pool(session), "gsmopen", - tech_pvt->dialplan, tech_pvt->callid_name, - tech_pvt->callid_number, NULL, NULL, NULL, NULL, "mod_gsmopen", tech_pvt->context, tech_pvt->destination)) != 0) { - char name[128]; - //switch_snprintf(name, sizeof(name), "gsmopen/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); - switch_snprintf(name, sizeof(name), "gsmopen/%s", tech_pvt->name); - switch_channel_set_name(channel, name); - switch_channel_set_caller_profile(channel, tech_pvt->caller_profile); - } - switch_channel_set_state(channel, CS_INIT); - if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) { - ERRORA("Error spawning thread\n", GSMOPEN_P_LOG); - switch_core_session_destroy(&session); - return 0; - } - } - if (channel) { - //switch_channel_mark_answered(channel); - } - - DEBUGA_GSMOPEN("new_inbound_channel\n", GSMOPEN_P_LOG); - - return 0; -} - -int remote_party_is_ringing(private_t *tech_pvt) -{ - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; - - if (!zstr(tech_pvt->session_uuid_str)) { - session = switch_core_session_locate(tech_pvt->session_uuid_str); - } else { - ERRORA("No session???\n", GSMOPEN_P_LOG); - goto done; - } - if (session) { - channel = switch_core_session_get_channel(session); - } else { - ERRORA("No session???\n", GSMOPEN_P_LOG); - goto done; - } - if (channel) { - switch_channel_mark_ring_ready(channel); - DEBUGA_GSMOPEN("gsmopen_call: REMOTE PARTY RINGING\n", GSMOPEN_P_LOG); - } else { - ERRORA("No channel???\n", GSMOPEN_P_LOG); - } - - switch_core_session_rwunlock(session); - - done: - return 0; -} - -int remote_party_is_early_media(private_t *tech_pvt) -{ - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; - - if (!zstr(tech_pvt->session_uuid_str)) { - session = switch_core_session_locate(tech_pvt->session_uuid_str); - } else { - ERRORA("No session???\n\n\n", GSMOPEN_P_LOG); - //TODO: kill the bastard - goto done; - } - if (session) { - channel = switch_core_session_get_channel(session); - switch_core_session_add_stream(session, NULL); - } else { - ERRORA("No session???\n", GSMOPEN_P_LOG); - //TODO: kill the bastard - goto done; - } - if (channel) { - switch_channel_mark_pre_answered(channel); - DEBUGA_GSMOPEN("gsmopen_call: REMOTE PARTY EARLY MEDIA\n", GSMOPEN_P_LOG); - } else { - ERRORA("No channel???\n", GSMOPEN_P_LOG); - //TODO: kill the bastard - } - - switch_core_session_rwunlock(session); - - done: - return 0; -} - -int outbound_channel_answered(private_t *tech_pvt) -{ - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; - - if (!zstr(tech_pvt->session_uuid_str)) { - session = switch_core_session_locate(tech_pvt->session_uuid_str); - } else { - ERRORA("No session???\n", GSMOPEN_P_LOG); - goto done; - } - if (session) { - channel = switch_core_session_get_channel(session); - } else { - ERRORA("No channel???\n", GSMOPEN_P_LOG); - goto done; - } - if (channel) { - switch_channel_mark_answered(channel); - tech_pvt->phone_callflow = GSMOPEN_STATE_UP; - tech_pvt->interface_state = GSMOPEN_STATE_UP; - //DEBUGA_GSMOPEN("gsmopen_call: %s, answered\n", GSMOPEN_P_LOG, id); - } else { - ERRORA("No channel???\n", GSMOPEN_P_LOG); - } - - switch_core_session_rwunlock(session); - - done: - DEBUGA_GSMOPEN("outbound_channel_answered!\n", GSMOPEN_P_LOG); - - return 0; -} - -private_t *find_available_gsmopen_interface_rr(private_t *tech_pvt_calling) -{ - private_t *tech_pvt = NULL; - int i; - //int num_interfaces = GSMOPEN_MAX_INTERFACES; - //int num_interfaces = globals.real_interfaces; - - switch_mutex_lock(globals.mutex); - - /* Fact is the real interface start from 1 */ - //XXX no, is just a convention, but you can have it start from 0. I do not, for aestetic reasons :-) - //if (globals.next_interface == 0) globals.next_interface = 1; - - for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { - int interface_id; - - interface_id = globals.next_interface; - //interface_id = interface_id < GSMOPEN_MAX_INTERFACES ? interface_id : interface_id - GSMOPEN_MAX_INTERFACES + 1; - globals.next_interface = interface_id + 1 < GSMOPEN_MAX_INTERFACES ? interface_id + 1 : 0; - - if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { - int gsmopen_state = 0; - - tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; - gsmopen_state = tech_pvt->interface_state; - DEBUGA_GSMOPEN("gsmopen interface: %d, name: %s, state: %d\n", GSMOPEN_P_LOG, interface_id, globals.GSMOPEN_INTERFACES[interface_id].name, - gsmopen_state); - if ((tech_pvt_calling ? strcmp(tech_pvt->gsmopen_user, tech_pvt_calling->gsmopen_user) : 1) - && (GSMOPEN_STATE_DOWN == gsmopen_state || 0 == gsmopen_state) && (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED - || 0 == tech_pvt->phone_callflow)) { - DEBUGA_GSMOPEN("returning as available gsmopen interface name: %s, state: %d callflow: %d\n", GSMOPEN_P_LOG, tech_pvt->name, gsmopen_state, - tech_pvt->phone_callflow); - /*set to Dialing state to avoid other thread fint it, don't know if it is safe */ - //XXX no, it's not safe - if (tech_pvt_calling == NULL) { - tech_pvt->interface_state = GSMOPEN_STATE_SELECTED; - } - - switch_mutex_unlock(globals.mutex); - return tech_pvt; - } - } // else { - //DEBUGA_GSMOPEN("GSM interface: %d blank!! A hole here means we cannot hunt the last interface.\n", GSMOPEN_P_LOG, interface_id); - //} - } - - switch_mutex_unlock(globals.mutex); - return NULL; -} - -#if 1 -SWITCH_STANDARD_API(gsm_function) -{ - char *mycmd = NULL, *argv[10] = { 0 }; - int argc = 0; - - if (globals.gsm_console) - stream->write_function(stream, "gsm console is: |||%s|||\n", globals.gsm_console->name); - else - stream->write_function(stream, "gsm console is NOT yet assigned\n"); - - if (!zstr(cmd) && (mycmd = strdup(cmd))) { - argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (!argc || !argv[0]) { - stream->write_function(stream, "%s", GSM_SYNTAX); - goto end; - } - - if (!strcasecmp(argv[0], "list")) { - int i; - char next_flag_char = ' '; - - stream->write_function(stream, "F ID\t Name \tIB (F/T) OB (F/T)\tState\tCallFlw\t\tUUID\n"); - stream->write_function(stream, "= ====\t ======== \t======= =======\t======\t============\t======\n"); - - for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { - next_flag_char = i == globals.next_interface ? '*' : ' '; - - if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { - stream->write_function(stream, - "%c %d\t[%s]\t%3ld/%ld\t%6ld/%ld\t%s\t%s\t%s\n", - next_flag_char, - i, globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].ib_failed_calls, - globals.GSMOPEN_INTERFACES[i].ib_calls, - globals.GSMOPEN_INTERFACES[i].ob_failed_calls, - globals.GSMOPEN_INTERFACES[i].ob_calls, - interface_status[globals.GSMOPEN_INTERFACES[i].interface_state], - phone_callflow[globals.GSMOPEN_INTERFACES[i].phone_callflow], globals.GSMOPEN_INTERFACES[i].session_uuid_str); - } else if (argc > 1 && !strcasecmp(argv[1], "full")) { - stream->write_function(stream, "%c\t%d\n", next_flag_char, i); - } - - } - stream->write_function(stream, "\nTotal: %d\n", globals.real_interfaces - 1); - - } else if (!strcasecmp(argv[0], "console")) { - int i; - int found = 0; - - if (argc == 2) { - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[1], strlen(argv[1])) == 0)) { - globals.gsm_console = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "gsm console is now: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, - globals.GSMOPEN_INTERFACES[i].name); - stream->write_function(stream, "gsm console is: |||%s|||\n", globals.gsm_console->name); - found = 1; - break; - } - - } - if (!found) - stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[1]); - } else { - - stream->write_function(stream, "-ERR Usage: gsm console interface_name\n"); - goto end; - } - - } else if (!strcasecmp(argv[0], "ciapalino")) { - -/* BEGIN: Changes heres */ - } else if (!strcasecmp(argv[0], "reload")) { - if (load_config(SOFT_RELOAD) != SWITCH_STATUS_SUCCESS) { - stream->write_function(stream, "gsm reload failed\n"); - } else { - stream->write_function(stream, "gsm reload success\n"); - } - } else if (!strcasecmp(argv[0], "remove")) { - if (argc == 2) { - if (remove_interface(argv[1]) == SWITCH_STATUS_SUCCESS) { - if (interface_exists(argv[1]) == SWITCH_STATUS_SUCCESS) { - stream->write_function(stream, "gsm remove '%s' failed\n", argv[1]); - } else { - stream->write_function(stream, "gsm remove '%s' success\n", argv[1]); - } - } - } else { - stream->write_function(stream, "-ERR Usage: gsm remove interface_name\n"); - goto end; - } -/* END: Changes heres */ - - } else { - if (globals.gsm_console) - gsmopen_serial_write_AT_noack(globals.gsm_console, (char *) cmd); - else - stream->write_function(stream, "gsm console is NOT yet assigned\n"); - } - end: - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; -} - -SWITCH_STANDARD_API(gsmopen_function) -{ - char *mycmd = NULL, *argv[10] = { 0 }; - int argc = 0; - private_t *tech_pvt = NULL; - - if (!zstr(cmd) && (mycmd = strdup(cmd))) { - argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (!argc) { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); - goto end; - } - - if (argc < 2) { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); - goto end; - } - - if (argv[0]) { - int i; - int found = 0; - - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); - found = 1; - break; - } - - } - if (!found) { - stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; - } else { - gsmopen_serial_write_AT_noack(tech_pvt, (char *) &cmd[strlen(argv[0]) + 1]); - } - } else { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); - } - end: - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; -} -#endif //0 -SWITCH_STANDARD_API(gsmopen_dump_function) -{ - char *mycmd = NULL, *argv[10] = { 0 }; - int argc = 0; - private_t *tech_pvt = NULL; - char value[512]; - - if (!zstr(cmd) && (mycmd = strdup(cmd))) { - argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (!argc) { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); - goto end; - } - if (argc == 1) { - int i; - int found = 0; - - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - //stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); - found = 1; - break; - } - - } - if (!found && (strcmp("list", argv[0]) == 0)) { - int i; - stream->write_function(stream, "gsmopen_dump LIST\n\n"); - for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { - stream->write_function(stream, "dumping interface '%s'\n\n", globals.GSMOPEN_INTERFACES[i].name); - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - - stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); - stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); - stream->write_function(stream, "active = %s\n", value); - if (!tech_pvt->network_creg_not_supported) { - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); - stream->write_function(stream, "not_registered = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); - stream->write_function(stream, "home_network_registered = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); - stream->write_function(stream, "roaming_registered = %s\n", value); - } else { - stream->write_function(stream, "not_registered = %s\n", "N/A"); - stream->write_function(stream, "home_network_registered = %s\n", "N/A"); - stream->write_function(stream, "roaming_registered = %s\n", "N/A"); - } - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); - stream->write_function(stream, "got_signal = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); - stream->write_function(stream, "running = %s\n", value); - stream->write_function(stream, "imei = %s\n", tech_pvt->imei); - stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); - stream->write_function(stream, "controldev_dead = %s\n", value); - stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); - stream->write_function(stream, "no_sound = %s\n", value); - snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); - stream->write_function(stream, "playback_boost = %s\n", value); - snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); - stream->write_function(stream, "capture_boost = %s\n", value); - stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); - stream->write_function(stream, "context = %s\n", tech_pvt->context); - stream->write_function(stream, "destination = %s\n", tech_pvt->destination); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); - stream->write_function(stream, "ib_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); - stream->write_function(stream, "ob_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); - stream->write_function(stream, "ib_failed_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); - stream->write_function(stream, "ob_failed_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); - stream->write_function(stream, "interface_state = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); - stream->write_function(stream, "phone_callflow = %s\n", value); - stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); - stream->write_function(stream, "\n"); - - dump_event(tech_pvt); - } - - } - - } else if (found) { - stream->write_function(stream, "dumping interface '%s'\n\n", argv[0]); - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - - stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); - stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); - stream->write_function(stream, "active = %s\n", value); - if (!tech_pvt->network_creg_not_supported) { - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); - stream->write_function(stream, "not_registered = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); - stream->write_function(stream, "home_network_registered = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); - stream->write_function(stream, "roaming_registered = %s\n", value); - } else { - stream->write_function(stream, "not_registered = %s\n", "N/A"); - stream->write_function(stream, "home_network_registered = %s\n", "N/A"); - stream->write_function(stream, "roaming_registered = %s\n", "N/A"); - } - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); - stream->write_function(stream, "got_signal = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); - stream->write_function(stream, "running = %s\n", value); - stream->write_function(stream, "imei = %s\n", tech_pvt->imei); - stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); - stream->write_function(stream, "controldev_dead = %s\n", value); - stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); - stream->write_function(stream, "no_sound = %s\n", value); - snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); - stream->write_function(stream, "playback_boost = %s\n", value); - snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); - stream->write_function(stream, "capture_boost = %s\n", value); - stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); - stream->write_function(stream, "context = %s\n", tech_pvt->context); - stream->write_function(stream, "destination = %s\n", tech_pvt->destination); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); - stream->write_function(stream, "ib_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); - stream->write_function(stream, "ob_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); - stream->write_function(stream, "ib_failed_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); - stream->write_function(stream, "ob_failed_calls = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); - stream->write_function(stream, "interface_state = %s\n", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); - stream->write_function(stream, "phone_callflow = %s\n", value); - stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); - stream->write_function(stream, "\n"); - - dump_event(tech_pvt); - } else { - stream->write_function(stream, "interface '%s' was not found\n", argv[0]); - } - } else { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); - } - end: - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; -} - -SWITCH_STANDARD_API(gsmopen_boost_audio_function) -{ - char *mycmd = NULL, *argv[10] = { 0 }; - int argc = 0; - private_t *tech_pvt = NULL; - - if (!zstr(cmd) && (mycmd = strdup(cmd))) { - argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (argc == 1 || argc == 3) { - int i; - int found = 0; - - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); - found = 1; - break; - } - - } - if (!found) { - stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); - - } else { - if (argc == 1) { - stream->write_function(stream, "[%s] capture boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].capture_boost); - stream->write_function(stream, "[%s] playback boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].playback_boost); - stream->write_function(stream, "%s usage: %s", argv[0], GSMOPEN_BOOST_AUDIO_SYNTAX); - goto end; - } else if ((strncmp("play", argv[1], strlen(argv[1])) == 0)) { - if (switch_is_number(argv[2])) { - stream->write_function(stream, "[%s] playback boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].playback_boost); - gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].playback_boost); //FIXME - stream->write_function(stream, "[%s] playback boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].playback_boost); - } - } else if ((strncmp("capt", argv[1], strlen(argv[1])) == 0)) { - if (switch_is_number(argv[2])) { - stream->write_function(stream, "[%s] capture boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].capture_boost); - gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].capture_boost); //FIXME - stream->write_function(stream, "[%s] capture boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, - globals.GSMOPEN_INTERFACES[i].capture_boost); - } - } else { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); - } - } - } else { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); - } - end: - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; -} - -#if 0 -int gsmopen_transfer(private_t *tech_pvt, char *id, char *value) -{ - char msg_to_gsmopen[1024]; - int i; - int found = 0; - private_t *giovatech; - struct timeval timenow; - - switch_mutex_lock(globals.mutex); - - gettimeofday(&timenow, NULL); - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { - - giovatech = &globals.GSMOPEN_INTERFACES[i]; - //NOTICA("gsmopen interface: %d, name: %s, state: %d, value=%s, giovatech->callid_number=%s, giovatech->gsmopen_user=%s\n", GSMOPEN_P_LOG, i, giovatech->name, giovatech->interface_state, value, giovatech->callid_number, giovatech->gsmopen_user); - //FIXME check a timestamp here - if (strlen(giovatech->gsmopen_call_id) && (giovatech->interface_state != GSMOPEN_STATE_DOWN) && (!strcmp(giovatech->gsmopen_user, tech_pvt->gsmopen_user)) && (!strcmp(giovatech->callid_number, value)) && ((((timenow.tv_sec - giovatech->answer_time.tv_sec) * 1000000) + (timenow.tv_usec - giovatech->answer_time.tv_usec)) < 500000)) { //0.5sec - found = 1; - DEBUGA_GSMOPEN - ("FOUND (name=%s, giovatech->interface_state=%d != GSMOPEN_STATE_DOWN) && (giovatech->gsmopen_user=%s == tech_pvt->gsmopen_user=%s) && (giovatech->callid_number=%s == value=%s)\n", - GSMOPEN_P_LOG, giovatech->name, giovatech->interface_state, giovatech->gsmopen_user, tech_pvt->gsmopen_user, giovatech->callid_number, - value) - break; - } - } - } - - if (found) { - //tech_pvt->callid_number[0]='\0'; - //sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); - //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); - switch_mutex_unlock(globals.mutex); - return 0; - } - DEBUGA_GSMOPEN("NOT FOUND\n", GSMOPEN_P_LOG); - - if (!tech_pvt || !tech_pvt->gsmopen_call_id || !strlen(tech_pvt->gsmopen_call_id)) { - /* we are not inside an active call */ - DEBUGA_GSMOPEN("We're NO MORE in a call now %s\n", GSMOPEN_P_LOG, (tech_pvt && tech_pvt->gsmopen_call_id) ? tech_pvt->gsmopen_call_id : ""); - switch_mutex_unlock(globals.mutex); - - } else { - - /* we're owned, we're in a call, let's try to transfer */ - /************************** TODO - Checking here if it is possible to transfer this call to Test2 - -> GET CALL 288 CAN_TRANSFER Test2 - <- CALL 288 CAN_TRANSFER test2 TRUE - **********************************/ - - private_t *available_gsmopen_interface = NULL; - - gettimeofday(&timenow, NULL); - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { - - giovatech = &globals.GSMOPEN_INTERFACES[i]; - //NOTICA("gsmopen interface: %d, name: %s, state: %d, value=%s, giovatech->callid_number=%s, giovatech->gsmopen_user=%s\n", GSMOPEN_P_LOG, i, giovatech->name, giovatech->interface_state, value, giovatech->callid_number, giovatech->gsmopen_user); - //FIXME check a timestamp here - if (strlen(giovatech->gsmopen_transfer_call_id) && (giovatech->interface_state != GSMOPEN_STATE_DOWN) && (!strcmp(giovatech->gsmopen_user, tech_pvt->gsmopen_user)) && (!strcmp(giovatech->transfer_callid_number, value)) && ((((timenow.tv_sec - giovatech->transfer_time.tv_sec) * 1000000) + (timenow.tv_usec - giovatech->transfer_time.tv_usec)) < 1000000)) { //1.0 sec - found = 1; - DEBUGA_GSMOPEN - ("FOUND (name=%s, giovatech->interface_state=%d != GSMOPEN_STATE_DOWN) && (giovatech->gsmopen_user=%s == tech_pvt->gsmopen_user=%s) && (giovatech->transfer_callid_number=%s == value=%s)\n", - GSMOPEN_P_LOG, giovatech->name, giovatech->interface_state, - giovatech->gsmopen_user, tech_pvt->gsmopen_user, giovatech->transfer_callid_number, value) - break; - } - } - } - - if (found) { - //tech_pvt->callid_number[0]='\0'; - //sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); - //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); - switch_mutex_unlock(globals.mutex); - return 0; - } - DEBUGA_GSMOPEN("NOT FOUND\n", GSMOPEN_P_LOG); - - available_gsmopen_interface = find_available_gsmopen_interface_rr(tech_pvt); - if (available_gsmopen_interface) { - /* there is a gsmopen interface idle, let's transfer the call to it */ - - //FIXME write a timestamp here - gettimeofday(&tech_pvt->transfer_time, NULL); - switch_copy_string(tech_pvt->gsmopen_transfer_call_id, id, sizeof(tech_pvt->gsmopen_transfer_call_id) - 1); - - switch_copy_string(tech_pvt->transfer_callid_number, value, sizeof(tech_pvt->transfer_callid_number) - 1); - - DEBUGA_GSMOPEN - ("Let's transfer the gsmopen_call %s to %s interface (with gsmopen_user: %s), because we are already in a gsmopen call(%s)\n", - GSMOPEN_P_LOG, tech_pvt->gsmopen_call_id, available_gsmopen_interface->name, available_gsmopen_interface->gsmopen_user, id); - - //FIXME why this? the inbound call will come, eventually, on that other interface - //available_gsmopen_interface->ib_calls++; - - sprintf(msg_to_gsmopen, "ALTER CALL %s TRANSFER %s", id, available_gsmopen_interface->gsmopen_user); - //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); - if (tech_pvt->interface_state == GSMOPEN_STATE_SELECTED) { - tech_pvt->interface_state = GSMOPEN_STATE_IDLE; //we marked it GSMOPEN_STATE_SELECTED just in case it has to make an outbound call - } - } else { - /* no gsmopen interfaces idle, do nothing */ - DEBUGA_GSMOPEN - ("Not answering the gsmopen_call %s, because we are already in a gsmopen call(%s) and not transferring, because no other gsmopen interfaces are available\n", - GSMOPEN_P_LOG, id, tech_pvt->gsmopen_call_id); - sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); - //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); - } - switch_sleep(10000); - DEBUGA_GSMOPEN - ("We have NOT answered a GSM RING from gsmopen_call %s, because we are already in a gsmopen call (%s)\n", - GSMOPEN_P_LOG, id, tech_pvt->gsmopen_call_id); - - switch_mutex_unlock(globals.mutex); - } - return 0; -} -#endif //0 - -void *gsmopen_do_gsmopenapi_thread_func(void *obj) -{ - - private_t *tech_pvt = (private_t *) obj; - time_t now_timestamp; - - //if (gsmopen_present(GSMopenHandles)) - while (running && tech_pvt->running) { - int res; - //gsmopen_sleep(1000000); //1 sec - //DEBUGA_GSMOPEN("ciao!\n", GSMOPEN_P_LOG); - res = gsmopen_serial_read(tech_pvt); - if (res == -1) { //manage the graceful interface shutdown - tech_pvt->controldev_dead = 1; - close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running = 0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active = 0; - tech_pvt->name[0] = '\0'; - switch_sleep(1000000); - } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_RING - && tech_pvt->phone_callflow != CALLFLOW_CALL_HANGUP_REQUESTED) { - //WARNINGA("INCOMING RING\n", GSMOPEN_P_LOG); - - gsmopen_ring(tech_pvt); - - //FIXME gsmopen_answer(tech_pvt); - //new_inbound_channel(tech_pvt); - //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { - //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); - //FIXME } - - } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) { - WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); - tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA; - remote_party_is_early_media(tech_pvt); - //new_inbound_channel(tech_pvt); - //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { - //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); - //FIXME } - - } else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) { - WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); - outbound_channel_answered(tech_pvt); - //new_inbound_channel(tech_pvt); - //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { - //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); - //FIXME } - } - switch_sleep(100); //give other threads a chance - time(&now_timestamp); - - if ((now_timestamp - tech_pvt->gsmopen_serial_synced_timestamp) > tech_pvt->gsmopen_serial_sync_period) { //TODO find a sensible period. 5min? in config? - gsmopen_serial_sync(tech_pvt); - gsmopen_serial_getstatus_AT(tech_pvt); - } - } - DEBUGA_GSMOPEN("EXIT\n", GSMOPEN_P_LOG); - //running = 0; - return NULL; - -} - -SWITCH_STANDARD_API(sendsms_function) -{ - char *mycmd = NULL, *argv[3] = { 0 }; - int argc = 0; - private_t *tech_pvt = NULL; - - if (!zstr(cmd) && (mycmd = strdup(cmd))) { - argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (!argc) { - stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); - goto end; - } - - if (argc < 3) { - stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); - goto end; - } - - if (argv[0]) { - int i; - int found = 0; - - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "Trying to send your SMS: interface=%s, dest=%s, text=%s\n", argv[0], argv[1], argv[2]); - found = 1; - break; - } - - } - if (!found) { - stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; - } else { - //gsmopen_sendsms(tech_pvt, (char *) argv[1], (char *) argv[2]); - NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, tech_pvt->name, - argv[1], "SIMPLE MESSAGE", switch_str_nil(argv[2]), tech_pvt->name); - - compat_chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->name, argv[1], "SIMPLE MESSAGE", switch_str_nil(argv[2]), NULL, tech_pvt->name); - } - } else { - stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); - } - end: - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; -} - -int dump_event_full(private_t *tech_pvt, int is_alarm, int alarm_code, const char *alarm_message) -{ - switch_event_t *event; - char value[512]; - switch_core_session_t *session = NULL; - switch_channel_t *channel = NULL; - switch_status_t status; - - session = switch_core_session_locate(tech_pvt->session_uuid_str); - if (session) { - channel = switch_core_session_get_channel(session); - } - - if (is_alarm) { - ERRORA("ALARM on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name); - status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_ALARM); - } else { - DEBUGA_GSMOPEN("DUMP on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name); - status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_DUMP); - } - if (status == SWITCH_STATUS_SUCCESS) { - if (is_alarm) { - snprintf(value, sizeof(value) - 1, "%d", alarm_code); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_code", value); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_message", alarm_message); - } - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_name", tech_pvt->name); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_id", tech_pvt->id); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "active", value); - if (!tech_pvt->network_creg_not_supported) { - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", value); - } else { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", "N/A"); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", "N/A"); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", "N/A"); - } - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "got_signal", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "running", value); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imei", tech_pvt->imei); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imsi", tech_pvt->imsi); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldev_dead", value); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldevice_name", tech_pvt->controldevice_name); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "no_sound", value); - snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "playback_boost", value); - snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "capture_boost", value); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialplan", tech_pvt->dialplan); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "context", tech_pvt->context); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "destination", tech_pvt->destination); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_calls", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_calls", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_failed_calls", value); - snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_failed_calls", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_state", value); - snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "phone_callflow", value); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "session_uuid_str", tech_pvt->session_uuid_str); - if (strlen(tech_pvt->session_uuid_str)) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); - } else { //no session - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); - } - if (channel) { - switch_channel_event_set_data(channel, event); - } - switch_event_fire(&event); - } else { - ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); - } - - if (session) { - switch_core_session_rwunlock(session); - } - return 0; -} - -int dump_event(private_t *tech_pvt) -{ - return dump_event_full(tech_pvt, 0, 0, NULL); -} - -int alarm_event(private_t *tech_pvt, int alarm_code, const char *alarm_message) -{ - return dump_event_full(tech_pvt, 1, alarm_code, alarm_message); -} - -int sms_incoming(private_t *tech_pvt) -{ - switch_event_t *event; - switch_core_session_t *session = NULL; - int event_sent_to_esl = 0; - - //DEBUGA_GSMOPEN("received SMS on interface %s: %s\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_message); - DEBUGA_GSMOPEN("received SMS on interface %s: DATE=%s, SENDER=%s, BODY=%s|\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_date, tech_pvt->sms_sender, - tech_pvt->sms_body); - - if (!zstr(tech_pvt->session_uuid_str)) { - session = switch_core_session_locate(tech_pvt->session_uuid_str); - } - if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); - switch_event_add_body(event, "%s\n", tech_pvt->sms_body); - if (session) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); - if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "delivery-failure", "true"); - switch_event_fire(&event); - } - } else { //no session - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); - switch_event_fire(&event); - event_sent_to_esl = 1; - } - - } else { - ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); - } - - if (!event_sent_to_esl) { - - if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->chatmessages[which].from_handle); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); - switch_event_add_body(event, "%s\n", tech_pvt->sms_body); - if (session) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); - } else { //no session - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); - } - switch_event_fire(&event); - } else { - ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); - } - } - - if (session) { - switch_core_session_rwunlock(session); - } - //memset(&tech_pvt->chatmessages[which], '\0', sizeof(&tech_pvt->chatmessages[which]) ); - //memset(tech_pvt->sms_message, '\0', sizeof(tech_pvt->sms_message)); - return 0; -} - -#ifdef NOTDEF -SWITCH_STANDARD_API(gsmopen_chat_function) -{ - char *mycmd = NULL, *argv[10] = { 0 }; - int argc = 0; - private_t *tech_pvt = NULL; - //int tried =0; - int i; - int found = 0; - //char skype_msg[1024]; - - if (!zstr(cmd) && (mycmd = strdup(cmd))) { - argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (!argc) { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); - goto end; - } - - if (argc < 3) { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); - goto end; - } - - if (argv[0]) { - for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { - /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ - if (strlen(globals.GSMOPEN_INTERFACES[i].name) - && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { - tech_pvt = &globals.GSMOPEN_INTERFACES[i]; - stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); - found = 1; - break; - } - - } - if (!found) { - stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); - goto end; - } else { - - //chat_send(const char *proto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); - //chat_send(p*roto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); - //chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, hint); - - NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, - tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), - tech_pvt->name); - - chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", - switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, tech_pvt->name); - - //NOTICA("TEXT is: %s\n", GSMOPEN_P_LOG, (char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1] ); - //snprintf(skype_msg, sizeof(skype_msg), "CHAT CREATE %s", argv[1]); - //gsmopen_signaling_write(tech_pvt, skype_msg); - //switch_sleep(100); - } - } else { - stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); - goto end; - } - -#ifdef NOTDEF - - found = 0; - - while (!found) { - for (i = 0; i < MAX_CHATS; i++) { - if (!strcmp(tech_pvt->chats[i].dialog_partner, argv[1])) { - snprintf(skype_msg, sizeof(skype_msg), "CHATMESSAGE %s %s", tech_pvt->chats[i].chatname, - (char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]); - gsmopen_signaling_write(tech_pvt, skype_msg); - found = 1; - break; - } - } - if (found) { - break; - } - if (tried > 1000) { - stream->write_function(stream, "ERROR: no chat with dialog_partner='%s' was found\n", argv[1]); - break; - } - switch_sleep(1000); - } -#endif //NOTDEF - - end: - switch_safe_free(mycmd); - - return SWITCH_STATUS_SUCCESS; -} -#endif // NOTDEF - -/* For Emacs: - * Local Variables: - * mode:c - * indent-tabs-mode:t - * tab-width:4 - * c-basic-offset:4 - * End: - * For VIM: - * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: - */ From 100bccbcf848b2a54bf55477279a087ba1a1e43d Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:33:27 +0200 Subject: [PATCH 078/630] gsmopen: reshuffling --- .../mod_gsmopen/configs/gsmopen.conf.xml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml diff --git a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml b/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml new file mode 100644 index 0000000000..73cbf2cae2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + From c2b93b8350e5d954f0691a8cc761e1a774dc6d01 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:40:54 +0200 Subject: [PATCH 079/630] gsmopen: readded mod_gsmopen.cpp, deleted by mistake --- src/mod/endpoints/mod_gsmopen/README | 24 +- .../mod_gsmopen/configs}/setmixers | 0 src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 3102 +++++++++++++++++ src/mod/endpoints/mod_gsmopen/test.cc | 206 -- 4 files changed, 3103 insertions(+), 229 deletions(-) rename src/mod/endpoints/mod_gsmopen/{ => alsa_nogsmlib_nocplusplus/mod_gsmopen/configs}/setmixers (100%) create mode 100644 src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp delete mode 100644 src/mod/endpoints/mod_gsmopen/test.cc diff --git a/src/mod/endpoints/mod_gsmopen/README b/src/mod/endpoints/mod_gsmopen/README index 0335ad1deb..30955a2157 100644 --- a/src/mod/endpoints/mod_gsmopen/README +++ b/src/mod/endpoints/mod_gsmopen/README @@ -1,31 +1,9 @@ GSMopen, GSM Endpoint and Trunk -This is just a prototype. - -put this directory in freeswitch.trunk/src/mod/endpoints/ - -make clean; make; make install - -Is not getting its configuration from the configuration file, it's all hardcoded but it needs the configuration file. - -Copy gsmopen.conf.xml in /usr/local/freeswitch/conf/autoload_configs/ - -You must have the device on serial port /dev/ttyACM0 and the audio as second soundcard plughw:1 (if you do not have a first soundcard, just modprobe snd-dummy before to connect the usb thingy). - -Put the volumes (with alsamixer -c1 -Vall) as: speaker 80, autogain on, mic off, mic capt 0. - -Then, with alsamixer -c1 -Vcapture, be sure capture is active (eg, press the spacebar until the red CAPTURE appear). When it all working, adjust to your taste. - -It answer calls, make calls, receive sms, and send sms (with the CLI command "sendsms"). - -Copy ciapalo in /usr/local/bin/ (is the program automatically spawned when an SMS is received). - -Copy asound.conf in /etc/asound.conf, it will spare you cpu cycles when rate conversion is required (always). - All documentation on compiling, using, configuring, tricks and tweaks, possible problems at: -http://wiki.freeswitch.org/wiki/GSMopen_GSM_Endpoint_and_Trunk +http://wiki.freeswitch.org/wiki/Gsmopen Enjoy diff --git a/src/mod/endpoints/mod_gsmopen/setmixers b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/setmixers similarity index 100% rename from src/mod/endpoints/mod_gsmopen/setmixers rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/configs/setmixers diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp new file mode 100644 index 0000000000..e1afc59e96 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -0,0 +1,3102 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005/2011, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * This module (mod_gsmopen) has been contributed by: + * + * Giovanni Maruzzelli (gmaruzz@gmail.com) + * + * + * Further Contributors: + * + * + * + * mod_gsmopen.c -- GSM compatible Endpoint Module + * + */ + +#include "gsmopen.h" + +#if 0 +#ifdef WIN32 +/***************/ +// from http://www.openasthra.com/c-tidbits/gettimeofday-function-for-windows/ + +#include + +#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 +#else /* */ +#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL +#endif /* */ +struct sk_timezone { + int tz_minuteswest; /* minutes W of Greenwich */ + int tz_dsttime; /* type of dst correction */ +}; +int gettimeofday(struct timeval *tv, struct sk_timezone *tz) +{ + FILETIME ft; + unsigned __int64 tmpres = 0; + static int tzflag; + if (NULL != tv) { + GetSystemTimeAsFileTime(&ft); + tmpres |= ft.dwHighDateTime; + tmpres <<= 32; + tmpres |= ft.dwLowDateTime; + + /*converting file time to unix epoch */ + tmpres /= 10; /*convert into microseconds */ + tmpres -= DELTA_EPOCH_IN_MICROSECS; + tv->tv_sec = (long) (tmpres / 1000000UL); + tv->tv_usec = (long) (tmpres % 1000000UL); + } + if (NULL != tz) { + if (!tzflag) { + _tzset(); + tzflag++; + } + tz->tz_minuteswest = _timezone / 60; + tz->tz_dsttime = _daylight; + } + return 0; +} + +/***************/ +#endif /* WIN32 */ +#endif //0 +SWITCH_BEGIN_EXTERN_C SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load); +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown); +SWITCH_MODULE_DEFINITION(mod_gsmopen, mod_gsmopen_load, mod_gsmopen_shutdown, NULL); +SWITCH_END_EXTERN_C +#define GSMOPEN_CHAT_PROTO "sms" +#if 1 + SWITCH_STANDARD_API(gsm_function); +/* BEGIN: Changes here */ +#define GSM_SYNTAX "list [full] || console || AT_command || remove < interface_name | interface_id > || reload" +/* END: Changes heres */ +SWITCH_STANDARD_API(gsmopen_function); +#define GSMOPEN_SYNTAX "interface_name AT_command" +#endif //0 + +SWITCH_STANDARD_API(gsmopen_boost_audio_function); +#define GSMOPEN_BOOST_AUDIO_SYNTAX "interface_name [ ]" +SWITCH_STANDARD_API(sendsms_function); +#define SENDSMS_SYNTAX "gsmopen_sendsms interface_name destination_number SMS_text" +SWITCH_STANDARD_API(gsmopen_dump_function); +#define GSMOPEN_DUMP_SYNTAX "gsmopen_dump " +/* BEGIN: Changes here */ +#define FULL_RELOAD 0 +#define SOFT_RELOAD 1 +/* END: Changes heres */ + +const char *interface_status[] = { /* should match GSMOPEN_STATE_xxx in gsmopen.h */ + "IDLE", + "DOWN", + "RING", + "DIALING", + "BUSY", + "UP", + "RINGING", + "PRERING", + "DOUBLE", + "SELECTD", + "HANG_RQ", + "PREANSW" +}; + +const char *phone_callflow[] = { /* should match CALLFLOW_XXX in gsmopen.h */ + "CALL_IDLE", + "CALL_DOWN", + "INCOMING_RNG", + "CALL_DIALING", + "CALL_LINEBUSY", + "CALL_ACTIVE", + "INCOMING_HNG", + "CALL_RLEASD", + "CALL_NOCARR", + "CALL_INFLUX", + "CALL_INCOMING", + "CALL_FAILED", + "CALL_NOSRVC", + "CALL_OUTRESTR", + "CALL_SECFAIL", + "CALL_NOANSWER", + "STATUS_FNSHED", + "STATUS_CANCLED", + "STATUS_FAILED", + "STATUS_REFUSED", + "STATUS_RINGING", + "STATUS_INPROGRS", + "STATUS_UNPLACD", + "STATUS_ROUTING", + "STATUS_EARLYMD", + "INCOMING_CLID", + "STATUS_RMTEHOLD" +}; + +static struct { + int debug; + char *ip; + int port; + char *dialplan; + char *destination; + char *context; + char *codec_string; + char *codec_order[SWITCH_MAX_CODECS]; + int codec_order_last; + char *codec_rates_string; + char *codec_rates[SWITCH_MAX_CODECS]; + int codec_rates_last; + unsigned int flags; + int fd; + int calls; + int real_interfaces; + int next_interface; + char hold_music[256]; + private_t GSMOPEN_INTERFACES[GSMOPEN_MAX_INTERFACES]; + switch_mutex_t *mutex; + private_t *gsm_console; +} globals; + +switch_endpoint_interface_t *gsmopen_endpoint_interface; +switch_memory_pool_t *gsmopen_module_pool = NULL; +int running = 0; + +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan); +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, globals.context); +SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_destination, globals.destination); +//SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string); +//SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_rates_string, globals.codec_rates_string); + +/* BEGIN: Changes here */ +static switch_status_t interface_exists(char *the_interface); +#if 1 +static switch_status_t remove_interface(char *the_interface); +#endif //0 +/* END: Changes here */ + +static switch_status_t channel_on_init(switch_core_session_t *session); +static switch_status_t channel_on_hangup(switch_core_session_t *session); +static switch_status_t channel_on_destroy(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_consume_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); +static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); +static switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session); + +static switch_status_t gsmopen_codec(private_t *tech_pvt, int sample_rate, int codec_ms) +{ + switch_core_session_t *session = NULL; + + if (switch_core_codec_init + (&tech_pvt->read_codec, "L16", NULL, sample_rate, codec_ms, 1, + SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { + ERRORA("Can't load codec?\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + if (switch_core_codec_init + (&tech_pvt->write_codec, "L16", NULL, sample_rate, codec_ms, 1, + SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, NULL) != SWITCH_STATUS_SUCCESS) { + ERRORA("Can't load codec?\n", GSMOPEN_P_LOG); + switch_core_codec_destroy(&tech_pvt->read_codec); + return SWITCH_STATUS_FALSE; + } + + tech_pvt->read_frame.rate = sample_rate; + tech_pvt->read_frame.codec = &tech_pvt->read_codec; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + + if (session) { + switch_core_session_set_read_codec(session, &tech_pvt->read_codec); + switch_core_session_set_write_codec(session, &tech_pvt->write_codec); + switch_core_session_rwunlock(session); + } else { + ERRORA("no session\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + return SWITCH_STATUS_SUCCESS; + +} + +switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *session) +{ + + switch_assert(tech_pvt != NULL); + switch_assert(session != NULL); + tech_pvt->read_frame.data = tech_pvt->databuf; + tech_pvt->read_frame.buflen = sizeof(tech_pvt->databuf); + switch_mutex_init(&tech_pvt->mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session)); + switch_core_session_set_private(session, tech_pvt); + switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(session), sizeof(tech_pvt->session_uuid_str)); + if (!strlen(tech_pvt->session_uuid_str)) { + ERRORA("no tech_pvt->session_uuid_str\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + if (gsmopen_codec(tech_pvt, SAMPLERATE_GSMOPEN, 20) != SWITCH_STATUS_SUCCESS) { + ERRORA("gsmopen_codec FAILED\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, tech_pvt->read_codec.implementation->actual_samples_per_second); + //teletone_dtmf_detect_init(&tech_pvt->dtmf_detect, 8000); + dtmf_rx_init(&tech_pvt->dtmf_state, NULL, NULL); + dtmf_rx_parms(&tech_pvt->dtmf_state, 0, 10, 10, -99); + + if (tech_pvt->no_sound == 0) { + if (serial_audio_init(tech_pvt)) { + ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + + } + } + + if (switch_core_timer_init(&tech_pvt->timer_read, "soft", 20, tech_pvt->read_codec.implementation->samples_per_packet, gsmopen_module_pool) != + SWITCH_STATUS_SUCCESS) { + ERRORA("setup timer failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + switch_core_timer_sync(&tech_pvt->timer_read); + + if (switch_core_timer_init(&tech_pvt->timer_write, "soft", 20, tech_pvt->write_codec.implementation->samples_per_packet, gsmopen_module_pool) != + SWITCH_STATUS_SUCCESS) { + ERRORA("setup timer failed\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + switch_core_timer_sync(&tech_pvt->timer_write); + + switch_clear_flag(tech_pvt, TFLAG_HANGUP); + DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; +} + +/* BEGIN: Changes here */ +static switch_status_t interface_exists(char *the_interface) +{ + int i; + int interface_id; + + if (*the_interface == '#') { /* look by interface id or interface name */ + the_interface++; + switch_assert(the_interface); + interface_id = atoi(the_interface); + + /* take a number as interface id */ + if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { + return SWITCH_STATUS_SUCCESS; + } + } else { + /* interface name */ + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { + return SWITCH_STATUS_SUCCESS; + break; + } + } + } + } else { /* look by gsmopen_user */ + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].gsmopen_user)) { + if (strcmp(globals.GSMOPEN_INTERFACES[i].gsmopen_user, the_interface) == 0) { + return SWITCH_STATUS_SUCCESS; + } + } + } + } + return SWITCH_STATUS_FALSE; +} + +#if 1 +static switch_status_t remove_interface(char *the_interface) +{ + int x = 10; + unsigned int howmany = 8; + int interface_id = -1; + private_t *tech_pvt = NULL; + switch_status_t status; + + //running = 0; + + //XXX if (*the_interface == '#') { /* remove by interface id or interface name */ + //XXX the_interface++; + switch_assert(the_interface); + interface_id = atoi(the_interface); + + if (interface_id > 0 || (interface_id == 0 && strcmp(the_interface, "0") == 0)) { + /* take a number as interface id */ + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + } else { + + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].name, the_interface) == 0) { + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + break; + } + } + } + //XXX } //else { /* remove by gsmopen_user */ + //for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + //if (strcmp(globals.GSMOPEN_INTERFACES[interface_id].gsmopen_user, the_interface) == 0) { + //tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + //break; + //} + //} + //} + + if (!tech_pvt) { + DEBUGA_GSMOPEN("interface '%s' does not exist\n", GSMOPEN_P_LOG, the_interface); + goto end; + } + + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].session_uuid_str)) { + DEBUGA_GSMOPEN("interface '%s' is busy\n", GSMOPEN_P_LOG, the_interface); + goto end; + } + + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { +#if 1 +#ifdef WIN32 + switch_file_write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die +#else /* WIN32 */ + howmany = write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", howmany); +#endif /* WIN32 */ +#endif //0 + DEBUGA_GSMOPEN("HERE will shutdown gsmopen_signaling_thread of '%s'\n", GSMOPEN_P_LOG, the_interface); + } + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { +#if 0 +#ifdef WIN32 + if (SendMessage(tech_pvt->GSMopenHandles.win32_hInit_MainWindowHandle, WM_DESTROY, 0, 0) == FALSE) { // let's the gsmopen_api_thread_func die + DEBUGA_GSMOPEN("got FALSE here, thread probably was already dead. GetLastError returned: %d\n", GSMOPEN_P_LOG, GetLastError()); + globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread = NULL; + } +#else + XEvent e; + Atom atom1 = XInternAtom(tech_pvt->GSMopenHandles.disp, "GSMOPENCONTROLAPI_MESSAGE_BEGIN", False); + memset(&e, 0, sizeof(e)); + e.xclient.type = ClientMessage; + e.xclient.message_type = atom1; /* leading message */ + e.xclient.display = tech_pvt->GSMopenHandles.disp; + e.xclient.window = tech_pvt->GSMopenHandles.gsmopen_win; + e.xclient.format = 8; + + XSendEvent(tech_pvt->GSMopenHandles.disp, tech_pvt->GSMopenHandles.win, False, 0, &e); + XSync(tech_pvt->GSMopenHandles.disp, False); +#endif //WIN32 +#endif //0 + + DEBUGA_GSMOPEN("HERE will shutdown gsmopen_api_thread of '%s'\n", GSMOPEN_P_LOG, the_interface); + } + + while (x) { + x--; + switch_yield(50000); + } + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread); + } + + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread); + } + + switch_mutex_lock(globals.mutex); + if (globals.gsm_console == &globals.GSMOPEN_INTERFACES[interface_id]) { + DEBUGA_GSMOPEN("interface '%s' no more console\n", GSMOPEN_P_LOG, the_interface); + globals.gsm_console = NULL; + } else { + DEBUGA_GSMOPEN("interface '%s' STILL console\n", GSMOPEN_P_LOG, the_interface); + } + memset(&globals.GSMOPEN_INTERFACES[interface_id], '\0', sizeof(private_t)); + globals.real_interfaces--; + switch_mutex_unlock(globals.mutex); + + DEBUGA_GSMOPEN("interface '%s' deleted successfully\n", GSMOPEN_P_LOG, the_interface); + globals.GSMOPEN_INTERFACES[interface_id].running = 1; + end: + //running = 1; + return SWITCH_STATUS_SUCCESS; +} +#endif //0 + +/* END: Changes here */ + +/* + State methods they get called when the state changes to the specific state + returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next + so if you fully implement the state you can return SWITCH_STATUS_FALSE to skip it. +*/ +static switch_status_t channel_on_init(switch_core_session_t *session) +{ + switch_channel_t *channel; + private_t *tech_pvt = NULL; + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_set_flag(tech_pvt, TFLAG_IO); + + /* Move channel's state machine to ROUTING. This means the call is trying + to get from the initial start where the call because, to the point + where a destination has been identified. If the channel is simply + left in the initial state, nothing will happen. */ + switch_channel_set_state(channel, CS_ROUTING); + switch_mutex_lock(globals.mutex); + globals.calls++; + + switch_mutex_unlock(globals.mutex); + DEBUGA_GSMOPEN("%s CHANNEL INIT %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_destroy(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + + tech_pvt = (private_t *) switch_core_session_get_private(session); + + if (tech_pvt) { + DEBUGA_GSMOPEN("%s CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + if (switch_core_codec_ready(&tech_pvt->read_codec)) { + switch_core_codec_destroy(&tech_pvt->read_codec); + } + + if (switch_core_codec_ready(&tech_pvt->write_codec)) { + switch_core_codec_destroy(&tech_pvt->write_codec); + } + + switch_core_timer_destroy(&tech_pvt->timer_read); + switch_core_timer_destroy(&tech_pvt->timer_write); + + if (tech_pvt->no_sound == 0) { + serial_audio_shutdown(tech_pvt); + } + + *tech_pvt->session_uuid_str = '\0'; + tech_pvt->interface_state = GSMOPEN_STATE_IDLE; + if (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED) { + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + } + switch_core_session_set_private(session, NULL); + } else { + DEBUGA_GSMOPEN("!!!!!!NO tech_pvt!!!! CHANNEL DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(session)); + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_hangup(switch_core_session_t *session) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + tech_pvt->phone_callflow = CALLFLOW_CALL_HANGUP_REQUESTED; + + if (!switch_channel_test_flag(channel, CF_ANSWERED)) { + if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + tech_pvt->ob_failed_calls++; + } else { + tech_pvt->ib_failed_calls++; + } + } + + DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_clear_flag(tech_pvt, TFLAG_IO); + switch_clear_flag(tech_pvt, TFLAG_VOICE); + switch_set_flag(tech_pvt, TFLAG_HANGUP); + + gsmopen_hangup(tech_pvt); + + //memset(tech_pvt->session_uuid_str, '\0', sizeof(tech_pvt->session_uuid_str)); + //*tech_pvt->session_uuid_str = '\0'; + DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_mutex_lock(globals.mutex); + globals.calls--; + if (globals.calls < 0) { + globals.calls = 0; + } + + tech_pvt->interface_state = GSMOPEN_STATE_IDLE; + //FIXME if (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED) { + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + //FIXME } + switch_mutex_unlock(globals.mutex); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_routing(switch_core_session_t *session) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL ROUTING\n", GSMOPEN_P_LOG, tech_pvt->name); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_execute(switch_core_session_t *session) +{ + + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL EXECUTE\n", GSMOPEN_P_LOG, tech_pvt->name); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL KILL_CHANNEL\n", GSMOPEN_P_LOG, tech_pvt->name); + switch (sig) { + case SWITCH_SIG_KILL: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_KILL\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + //switch_mutex_lock(tech_pvt->flag_mutex); + switch_clear_flag(tech_pvt, TFLAG_IO); + switch_clear_flag(tech_pvt, TFLAG_VOICE); + switch_set_flag(tech_pvt, TFLAG_HANGUP); + //switch_mutex_unlock(tech_pvt->flag_mutex); + break; + case SWITCH_SIG_BREAK: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_BREAK\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + //switch_set_flag(tech_pvt, TFLAG_BREAK); + //switch_mutex_lock(tech_pvt->flag_mutex); + switch_set_flag(tech_pvt, TFLAG_BREAK); + //switch_mutex_unlock(tech_pvt->flag_mutex); + break; + default: + break; + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_consume_media(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + + tech_pvt = (private_t *) switch_core_session_get_private(session); + + DEBUGA_GSMOPEN("%s CHANNEL CONSUME_MEDIA\n", GSMOPEN_P_LOG, tech_pvt->name); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + tech_pvt = (private_t *) switch_core_session_get_private(session); + DEBUGA_GSMOPEN("%s CHANNEL EXCHANGE_MEDIA\n", GSMOPEN_P_LOG, tech_pvt->name); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) +{ + private_t *tech_pvt = NULL; + tech_pvt = (private_t *) switch_core_session_get_private(session); + DEBUGA_GSMOPEN("%s CHANNEL SOFT_EXECUTE\n", GSMOPEN_P_LOG, tech_pvt->name); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) +{ + private_t *tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + DEBUGA_GSMOPEN("%s CHANNEL SEND_DTMF\n", GSMOPEN_P_LOG, tech_pvt->name); + DEBUGA_GSMOPEN("DTMF: %c\n", GSMOPEN_P_LOG, dtmf->digit); + + gsmopen_senddigit(tech_pvt, dtmf->digit); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + switch_byte_t *data; + + int samples; + int samples2; + char digit_str[256]; + char buffer2[640]; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + if (!switch_channel_ready(channel) || !switch_test_flag(tech_pvt, TFLAG_IO)) { + ERRORA("channel not ready \n", GSMOPEN_P_LOG); + //TODO: kill the bastard + return SWITCH_STATUS_FALSE; + } + + tech_pvt->read_frame.flags = SFF_NONE; + *frame = NULL; + + if (switch_test_flag(tech_pvt, TFLAG_HANGUP)) { + return SWITCH_STATUS_FALSE; + } + + switch_core_timer_next(&tech_pvt->timer_read); + + if (tech_pvt->no_sound == 1) { + goto cng; + } +// if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) + + if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { + tech_pvt->buffer2_full = 0; + + if (samples >= 640) { + DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + memcpy(tech_pvt->buffer2, buffer2 + 320, 320); + tech_pvt->buffer2_full = 1; + } + samples = 320; + + memcpy(tech_pvt->read_frame.data, buffer2, 320); + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples / 2; + + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + + *frame = &tech_pvt->read_frame; + + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } else { + DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); + if (tech_pvt->buffer2_full) { + memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); + tech_pvt->buffer2_full = 0; + samples = 320; + DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); + + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples / 2; + + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + + *frame = &tech_pvt->read_frame; + + //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ + // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); + //} + //status = SWITCH_STATUS_SUCCESS; + switch_set_flag(tech_pvt, TFLAG_VOICE); + } + + } + //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); + if (samples != 320) { + DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + goto cng; + } +//DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp); + +//usleep(17000); +//usleep(17000); + + memset(digit_str, 0, sizeof(digit_str)); + //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); + //teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str)); + dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); + dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str)); + + gsmopen_sound_boost(tech_pvt->read_frame.data, tech_pvt->read_frame.samples, tech_pvt->capture_boost); + + if (digit_str[0]) { + switch_time_t new_dtmf_timestamp = switch_time_now(); + if ((new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp) > 350000) { //FIXME: make it configurable + char *p = digit_str; + switch_channel_t *channel = switch_core_session_get_channel(session); + + while (p && *p) { + switch_dtmf_t dtmf = { 0 }; + dtmf.digit = *p; + dtmf.duration = SWITCH_DEFAULT_DTMF_DURATION; + switch_channel_queue_dtmf(channel, &dtmf); + p++; + } + NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, + (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); + tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; + } + } + while (switch_test_flag(tech_pvt, TFLAG_IO)) { + if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { + switch_clear_flag(tech_pvt, TFLAG_BREAK); + DEBUGA_GSMOPEN("CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG); + goto cng; + } + + if (!switch_test_flag(tech_pvt, TFLAG_IO)) { + DEBUGA_GSMOPEN("CHANNEL READ FRAME not IO\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + } + + if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) { + switch_clear_flag(tech_pvt, TFLAG_VOICE); + if (!tech_pvt->read_frame.datalen) { + DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG); + continue; + } + *frame = &tech_pvt->read_frame; +#ifdef BIGENDIAN + if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { + switch_swap_linear((int16_t *) (*frame)->data, (int) (*frame)->datalen / 2); + } +#endif + //WARNINGA("HERE\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; + } + + WARNINGA("HERE\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("CHANNEL READ no TFLAG_VOICE\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + + } + + DEBUGA_GSMOPEN("CHANNEL READ FALSE\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_FALSE; + cng: + data = (switch_byte_t *) tech_pvt->read_frame.data; + data[0] = 65; + data[1] = 0; + tech_pvt->read_frame.datalen = 2; + tech_pvt->read_frame.flags = SFF_CNG; + *frame = &tech_pvt->read_frame; + return SWITCH_STATUS_SUCCESS; + +} + +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) +{ + switch_channel_t *channel = NULL; + private_t *tech_pvt = NULL; + + unsigned int sent; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + if (!switch_channel_ready(channel) || !switch_test_flag(tech_pvt, TFLAG_IO)) { + ERRORA("channel not ready \n", GSMOPEN_P_LOG); + //TODO: kill the bastard + return SWITCH_STATUS_FALSE; + } +#ifdef BIGENDIAN + if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { +#ifdef WIN32 + switch_swap_linear((int16_t *) frame->data, (int) frame->datalen / 2); +#else + switch_swap_linear(frame->data, (int) frame->datalen / 2); +#endif //WIN32 + } +#endif + + //switch_core_timer_next(&tech_pvt->timer_write); + //sent = frame->datalen; + + //ERRORA("PLAY \n", GSMOPEN_P_LOG); + + gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); + sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); + + if (sent && sent != frame->datalen && sent != -1) { + DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); + } + //NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_answer_channel(switch_core_session_t *session) +{ + private_t *tech_pvt; + switch_channel_t *channel = NULL; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_set_flag(tech_pvt, TFLAG_IO); + gsmopen_serial_answer(tech_pvt); + + /* Move channel's state machine to ROUTING. This means the call is trying + to get from the initial start where the call because, to the point + where a destination has been identified. If the channel is simply + left in the initial state, nothing will happen. */ + switch_channel_set_state(channel, CS_ROUTING); + switch_mutex_lock(globals.mutex); + globals.calls++; + + switch_mutex_unlock(globals.mutex); + DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) +{ + switch_channel_t *channel; + private_t *tech_pvt; + + channel = switch_core_session_get_channel(session); + switch_assert(channel != NULL); + + tech_pvt = (private_t *) switch_core_session_get_private(session); + switch_assert(tech_pvt != NULL); + + switch (msg->message_id) { + case SWITCH_MESSAGE_INDICATE_ANSWER: + { + DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); + channel_answer_channel(session); + } + break; + case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC: + + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_AUDIO_SYNC\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + switch_core_timer_sync(&tech_pvt->timer_read); + switch_core_timer_sync(&tech_pvt->timer_write); + + break; + + default: + { + DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); + } + break; + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t channel_receive_event(switch_core_session_t *session, switch_event_t *event) +{ + struct private_object *tech_pvt = (struct private_object *) switch_core_session_get_private(session); + char *body = switch_event_get_body(event); + switch_assert(tech_pvt != NULL); + + if (!body) { + body = (char *) ""; + } + + WARNINGA("event: |||%s|||\n", GSMOPEN_P_LOG, body); + + return SWITCH_STATUS_SUCCESS; +} + +switch_state_handler_table_t gsmopen_state_handlers = { + /*.on_init */ channel_on_init, + /*.on_routing */ channel_on_routing, + /*.on_execute */ channel_on_execute, + /*.on_hangup */ channel_on_hangup, + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute, + /*.on_consume_media */ channel_on_consume_media, + /*.on_hibernate */ NULL, + /*.on_reset */ NULL, + /*.on_park */ NULL, + /*.on_reporting */ NULL, + /*.on_destroy */ channel_on_destroy +}; + +switch_io_routines_t gsmopen_io_routines = { + /*.outgoing_channel */ channel_outgoing_channel, + /*.read_frame */ channel_read_frame, + /*.write_frame */ channel_write_frame, + /*.kill_channel */ channel_kill_channel, + /*.send_dtmf */ channel_send_dtmf, + /*.receive_message */ channel_receive_message, + /*.receive_event */ channel_receive_event +}; + +static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause) +{ + private_t *tech_pvt = NULL; + if ((*new_session = switch_core_session_request(gsmopen_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, flags, pool)) != 0) { + switch_channel_t *channel = NULL; + switch_caller_profile_t *caller_profile; + char *rdest; + int found = 0; + char interface_name[256]; + + DEBUGA_GSMOPEN("1 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); + switch_core_session_add_stream(*new_session, NULL); + + if (!zstr(outbound_profile->destination_number)) { + int i; + char *slash; + + switch_copy_string(interface_name, outbound_profile->destination_number, 255); + slash = strrchr(interface_name, '/'); + *slash = '\0'; + + switch_mutex_lock(globals.mutex); + if (strncmp("ANY", interface_name, strlen(interface_name)) == 0 || strncmp("RR", interface_name, strlen(interface_name)) == 0) { + /* we've been asked for the "ANY" interface, let's find the first idle interface */ + //DEBUGA_GSMOPEN("Finding one available gsmopen interface\n", GSMOPEN_P_LOG); + //tech_pvt = find_available_gsmopen_interface(NULL); + //if (tech_pvt) + //found = 1; + //} else if (strncmp("RR", interface_name, strlen(interface_name)) == 0) { + /* Find the first idle interface using Round Robin */ + DEBUGA_GSMOPEN("Finding one available gsmopen interface RR\n", GSMOPEN_P_LOG); + tech_pvt = find_available_gsmopen_interface_rr(NULL); + if (tech_pvt) { + found = 1; + DEBUGA_GSMOPEN("FOUND one available gsmopen interface RR\n", GSMOPEN_P_LOG); + } + } + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, interface_name, strlen(interface_name)) == 0)) { + if (strlen(globals.GSMOPEN_INTERFACES[i].session_uuid_str)) { + DEBUGA_GSMOPEN + ("globals.GSMOPEN_INTERFACES[%d].name=|||%s||| session_uuid_str=|||%s||| is BUSY\n", + GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name, globals.GSMOPEN_INTERFACES[i].session_uuid_str); + DEBUGA_GSMOPEN("1 SESSION_DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION; + } + + DEBUGA_GSMOPEN("globals.GSMOPEN_INTERFACES[%d].name=|||%s|||?\n", GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name); + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + found = 1; + break; + } + + } + + } else { + ERRORA("Doh! no destination number?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + if (!found) { + DEBUGA_GSMOPEN("Doh! no available interface for |||%s|||?\n", GSMOPEN_P_LOG, interface_name); + DEBUGA_GSMOPEN("2 SESSION_DESTROY %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(*new_session)); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + //return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + return SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION; + } + + channel = switch_core_session_get_channel(*new_session); + if (!channel) { + ERRORA("Doh! no channel?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + if (gsmopen_tech_init(tech_pvt, *new_session) != SWITCH_STATUS_SUCCESS) { + ERRORA("Doh! no tech_init?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + if (outbound_profile) { + char name[128]; + + snprintf(name, sizeof(name), "gsmopen/%s", outbound_profile->destination_number); + //snprintf(name, sizeof(name), "gsmopen/%s", tech_pvt->name); + switch_channel_set_name(channel, name); + caller_profile = switch_caller_profile_clone(*new_session, outbound_profile); + switch_channel_set_caller_profile(channel, caller_profile); + tech_pvt->caller_profile = caller_profile; + } else { + ERRORA("Doh! no caller profile\n", GSMOPEN_P_LOG); + switch_core_session_destroy(new_session); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } + + tech_pvt->ob_calls++; + + rdest = strchr(caller_profile->destination_number, '/'); + *rdest++ = '\0'; + + //gsmopen_call(tech_pvt, rdest, 30); + + switch_copy_string(tech_pvt->session_uuid_str, switch_core_session_get_uuid(*new_session), sizeof(tech_pvt->session_uuid_str)); + caller_profile = tech_pvt->caller_profile; + caller_profile->destination_number = rdest; + + switch_set_flag(tech_pvt, TFLAG_OUTBOUND); + switch_channel_set_state(channel, CS_INIT); + gsmopen_call(tech_pvt, rdest, 30); + switch_mutex_unlock(globals.mutex); + return SWITCH_CAUSE_SUCCESS; + } + + ERRORA("Doh! no new_session\n", GSMOPEN_P_LOG); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; +} + +/*! + * \brief This thread runs during a call, and monitor the interface for signaling, like hangup, caller id, etc most of signaling is handled inside the gsmopen_signaling_read function + * + */ + +static switch_status_t load_config(int reload_type) +{ + const char *cf = "gsmopen.conf"; + switch_xml_t cfg, xml, global_settings, param, interfaces, myinterface; + private_t *tech_pvt = NULL; + + switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, gsmopen_module_pool); + if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { + ERRORA("open of %s failed\n", GSMOPEN_P_LOG, cf); + running = 0; + switch_xml_free(xml); + return SWITCH_STATUS_TERM; + } + + switch_mutex_lock(globals.mutex); + if ((global_settings = switch_xml_child(cfg, "global_settings"))) { + for (param = switch_xml_child(global_settings, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (!strcasecmp(var, "debug")) { + DEBUGA_GSMOPEN("globals.debug=%d\n", GSMOPEN_P_LOG, globals.debug); + globals.debug = atoi(val); + DEBUGA_GSMOPEN("globals.debug=%d\n", GSMOPEN_P_LOG, globals.debug); + } else if (!strcasecmp(var, "hold-music")) { + switch_set_string(globals.hold_music, val); + DEBUGA_GSMOPEN("globals.hold_music=%s\n", GSMOPEN_P_LOG, globals.hold_music); + } else if (!strcmp(var, "dialplan")) { + set_global_dialplan(val); + DEBUGA_GSMOPEN("globals.dialplan=%s\n", GSMOPEN_P_LOG, globals.dialplan); + } else if (!strcmp(var, "destination")) { + set_global_destination(val); + DEBUGA_GSMOPEN("globals.destination=%s\n", GSMOPEN_P_LOG, globals.destination); + } else if (!strcmp(var, "context")) { + set_global_context(val); + DEBUGA_GSMOPEN("globals.context=%s\n", GSMOPEN_P_LOG, globals.context); + + } + + } + } + + if ((interfaces = switch_xml_child(cfg, "per_interface_settings"))) { + int i = 0; + + for (myinterface = switch_xml_child(interfaces, "interface"); myinterface; myinterface = myinterface->next) { + char *id = (char *) switch_xml_attr(myinterface, "id"); + char *name = (char *) switch_xml_attr(myinterface, "name"); + const char *context = "default"; + const char *dialplan = "XML"; + const char *destination = "5000"; + const char *controldevice_name = "/dev/ttyACM0"; + const char *controldevice_audio_name = "/dev/ttyUSB2"; + char *digit_timeout = NULL; + char *max_digits = NULL; + char *hotline = NULL; + char *dial_regex = NULL; + char *hold_music = NULL; + char *fail_dial_regex = NULL; + const char *enable_callerid = "true"; + + const char *at_dial_pre_number = "ATD"; + const char *at_dial_post_number = ";"; + const char *at_dial_expect = "OK"; + const char *at_hangup = "ATH"; + const char *at_hangup_expect = "OK"; + const char *at_answer = "ATA"; + const char *at_answer_expect = "OK"; + const char *at_send_dtmf = "AT+VTS"; + const char *at_preinit_1 = ""; + const char *at_preinit_1_expect = ""; + const char *at_preinit_2 = ""; + const char *at_preinit_2_expect = ""; + const char *at_preinit_3 = ""; + const char *at_preinit_3_expect = ""; + const char *at_preinit_4 = ""; + const char *at_preinit_4_expect = ""; + const char *at_preinit_5 = ""; + const char *at_preinit_5_expect = ""; + const char *at_postinit_1 = "at+cmic=0,9"; + const char *at_postinit_1_expect = "OK"; + const char *at_postinit_2 = "AT+CKPD=\"EEE\""; + const char *at_postinit_2_expect = "OK"; + const char *at_postinit_3 = "AT+CSSN=1,0"; + const char *at_postinit_3_expect = "OK"; + const char *at_postinit_4 = "at+sidet=0"; + const char *at_postinit_4_expect = "OK"; + const char *at_postinit_5 = "at+clvl=3"; + const char *at_postinit_5_expect = "OK"; + const char *at_query_battchg = "AT+CBC"; + const char *at_query_battchg_expect = "OK"; + const char *at_query_signal = "AT+CSQ"; + const char *at_query_signal_expect = "OK"; + const char *at_call_idle = "+MCST: 1"; + const char *at_call_incoming = "RING"; + const char *at_call_active = "^CONN:1,0"; + const char *at_call_failed = "+MCST: 65"; + const char *at_call_calling = "^ORIG:1,0"; + const char *at_indicator_noservice_string = "CIEV: 2;0"; + const char *at_indicator_nosignal_string = "CIEV: 5;0"; + const char *at_indicator_lowsignal_string = "CIEV: 5;1"; + const char *at_indicator_lowbattchg_string = "CIEV: 0;1"; + const char *at_indicator_nobattchg_string = "CIEV: 0;0"; + const char *at_indicator_callactive_string = "CIEV: 3;1"; + const char *at_indicator_nocallactive_string = "CIEV: 3;0"; + const char *at_indicator_nocallsetup_string = "CIEV: 6;0"; + const char *at_indicator_callsetupincoming_string = "CIEV: 6;1"; + const char *at_indicator_callsetupoutgoing_string = "CIEV: 6;2"; + const char *at_indicator_callsetupremoteringing_string = "CIEV: 6;3"; + //const char *sms_receiving_program = "/usr/local/bin/ciapalo"; + const char *at_early_audio = "0"; + const char *at_after_preinit_pause = "500000"; + const char *at_initial_pause = "500000"; + const char *at_has_clcc = "0"; + const char *at_has_ecam = "0"; + const char *gsmopen_sound_rate = "8000"; + const char *capture_boost = "0"; + const char *playback_boost = "0"; + const char *no_sound = "0"; + const char *portaudiocindex = "1"; + const char *portaudiopindex = "1"; + const char *speexecho = "1"; + const char *speexpreprocess = "1"; + + uint32_t interface_id = 0; + int controldevice_speed = 115200; //FIXME TODO + int controldevice_audio_speed = 115200; //FIXME TODO + uint32_t controldevprotocol = PROTOCOL_AT; //FIXME TODO + uint32_t running = 1; //FIXME TODO + const char *gsmopen_serial_sync_period = "300"; //FIXME TODO + + tech_pvt = NULL; + + for (param = switch_xml_child(myinterface, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (!strcasecmp(var, "id")) { + id = val; + } else if (!strcasecmp(var, "name")) { + name = val; + } else if (!strcasecmp(var, "context")) { + context = val; + } else if (!strcasecmp(var, "dialplan")) { + dialplan = val; + } else if (!strcasecmp(var, "destination")) { + destination = val; + } else if (!strcasecmp(var, "controldevice_name")) { + controldevice_name = val; + } else if (!strcasecmp(var, "controldevice_audio_name")) { + controldevice_audio_name = val; + } else if (!strcasecmp(var, "digit_timeout")) { + digit_timeout = val; + } else if (!strcasecmp(var, "max_digits")) { + max_digits = val; + } else if (!strcasecmp(var, "hotline")) { + hotline = val; + } else if (!strcasecmp(var, "dial_regex")) { + dial_regex = val; + } else if (!strcasecmp(var, SWITCH_HOLD_MUSIC_VARIABLE)) { + hold_music = val; + } else if (!strcasecmp(var, "fail_dial_regex")) { + fail_dial_regex = val; + } else if (!strcasecmp(var, "enable_callerid")) { + enable_callerid = val; + } else if (!strcasecmp(var, "at_dial_pre_number")) { + at_dial_pre_number = val; + } else if (!strcasecmp(var, "at_dial_post_number")) { + at_dial_post_number = val; + } else if (!strcasecmp(var, "at_dial_expect")) { + at_dial_expect = val; + } else if (!strcasecmp(var, "at_hangup")) { + at_hangup = val; + } else if (!strcasecmp(var, "at_hangup_expect")) { + at_hangup_expect = val; + } else if (!strcasecmp(var, "at_answer")) { + at_answer = val; + } else if (!strcasecmp(var, "at_answer_expect")) { + at_answer_expect = val; + } else if (!strcasecmp(var, "at_send_dtmf")) { + at_send_dtmf = val; + } else if (!strcasecmp(var, "at_preinit_1")) { + at_preinit_1 = val; + } else if (!strcasecmp(var, "at_preinit_1_expect")) { + at_preinit_1_expect = val; + } else if (!strcasecmp(var, "at_preinit_2")) { + at_preinit_2 = val; + } else if (!strcasecmp(var, "at_preinit_2_expect")) { + at_preinit_2_expect = val; + } else if (!strcasecmp(var, "at_preinit_3")) { + at_preinit_3 = val; + } else if (!strcasecmp(var, "at_preinit_3_expect")) { + at_preinit_3_expect = val; + } else if (!strcasecmp(var, "at_preinit_4")) { + at_preinit_4 = val; + } else if (!strcasecmp(var, "at_preinit_4_expect")) { + at_preinit_4_expect = val; + } else if (!strcasecmp(var, "at_preinit_5")) { + at_preinit_5 = val; + } else if (!strcasecmp(var, "at_preinit_5_expect")) { + at_preinit_5_expect = val; + } else if (!strcasecmp(var, "at_postinit_1")) { + at_postinit_1 = val; + } else if (!strcasecmp(var, "at_postinit_1_expect")) { + at_postinit_1_expect = val; + } else if (!strcasecmp(var, "at_postinit_2")) { + at_postinit_2 = val; + } else if (!strcasecmp(var, "at_postinit_2_expect")) { + at_postinit_2_expect = val; + } else if (!strcasecmp(var, "at_postinit_3")) { + at_postinit_3 = val; + } else if (!strcasecmp(var, "at_postinit_3_expect")) { + at_postinit_3_expect = val; + } else if (!strcasecmp(var, "at_postinit_4")) { + at_postinit_4 = val; + } else if (!strcasecmp(var, "at_postinit_4_expect")) { + at_postinit_4_expect = val; + } else if (!strcasecmp(var, "at_postinit_5")) { + at_postinit_5 = val; + } else if (!strcasecmp(var, "at_postinit_5_expect")) { + at_postinit_5_expect = val; + } else if (!strcasecmp(var, "at_query_battchg")) { + at_query_battchg = val; + } else if (!strcasecmp(var, "at_query_battchg_expect")) { + at_query_battchg_expect = val; + } else if (!strcasecmp(var, "at_query_signal")) { + at_query_signal = val; + } else if (!strcasecmp(var, "at_query_signal_expect")) { + at_query_signal_expect = val; + } else if (!strcasecmp(var, "at_call_idle")) { + at_call_idle = val; + } else if (!strcasecmp(var, "at_call_incoming")) { + at_call_incoming = val; + } else if (!strcasecmp(var, "at_call_active")) { + at_call_active = val; + } else if (!strcasecmp(var, "at_call_failed")) { + at_call_failed = val; + } else if (!strcasecmp(var, "at_call_calling")) { + at_call_calling = val; + } else if (!strcasecmp(var, "at_indicator_noservice_string")) { + at_indicator_noservice_string = val; + } else if (!strcasecmp(var, "at_indicator_nosignal_string")) { + at_indicator_nosignal_string = val; + } else if (!strcasecmp(var, "at_indicator_lowsignal_string")) { + at_indicator_lowsignal_string = val; + } else if (!strcasecmp(var, "at_indicator_lowbattchg_string")) { + at_indicator_lowbattchg_string = val; + } else if (!strcasecmp(var, "at_indicator_nobattchg_string")) { + at_indicator_nobattchg_string = val; + } else if (!strcasecmp(var, "at_indicator_callactive_string")) { + at_indicator_callactive_string = val; + } else if (!strcasecmp(var, "at_indicator_nocallactive_string")) { + at_indicator_nocallactive_string = val; + } else if (!strcasecmp(var, "at_indicator_nocallsetup_string")) { + at_indicator_nocallsetup_string = val; + } else if (!strcasecmp(var, "at_indicator_callsetupincoming_string")) { + at_indicator_callsetupincoming_string = val; + } else if (!strcasecmp(var, "at_indicator_callsetupoutgoing_string")) { + at_indicator_callsetupoutgoing_string = val; + } else if (!strcasecmp(var, "at_indicator_callsetupremoteringing_string")) { + at_indicator_callsetupremoteringing_string = val; + //} else if (!strcasecmp(var, "sms_receiving_program")) { + //sms_receiving_program = val; + } else if (!strcasecmp(var, "portaudiocindex")) { + portaudiocindex = val; + } else if (!strcasecmp(var, "portaudiopindex")) { + portaudiopindex = val; + } else if (!strcasecmp(var, "speexecho")) { + speexecho = val; + } else if (!strcasecmp(var, "speexpreprocess")) { + speexpreprocess = val; + } else if (!strcasecmp(var, "at_early_audio")) { + at_early_audio = val; + } else if (!strcasecmp(var, "at_after_preinit_pause")) { + at_after_preinit_pause = val; + } else if (!strcasecmp(var, "at_initial_pause")) { + at_initial_pause = val; + } else if (!strcasecmp(var, "at_has_clcc")) { + at_has_clcc = val; + } else if (!strcasecmp(var, "at_has_ecam")) { + at_has_ecam = val; + } else if (!strcasecmp(var, "gsmopen_sound_rate")) { + gsmopen_sound_rate = val; + } else if (!strcasecmp(var, "capture_boost")) { + capture_boost = val; + } else if (!strcasecmp(var, "playback_boost")) { + playback_boost = val; + } else if (!strcasecmp(var, "no_sound")) { + no_sound = val; + } else if (!strcasecmp(var, "gsmopen_serial_sync_period")) { + gsmopen_serial_sync_period = val; + } + + } + + /* BEGIN: Changes here */ + if (reload_type == SOFT_RELOAD) { + char the_interface[256]; + sprintf(the_interface, "#%s", name); + + if (interface_exists(the_interface) == SWITCH_STATUS_SUCCESS) { + continue; + } + } + /* END: Changes here */ + + if (!id) { + ERRORA("interface missing REQUIRED param 'id'\n", GSMOPEN_P_LOG); + continue; + } + + if (switch_is_number(id)) { + interface_id = atoi(id); + } else { + ERRORA("interface param 'id' MUST be a number, now id='%s'\n", GSMOPEN_P_LOG, id); + continue; + } + + if (!switch_is_number(at_early_audio)) { + ERRORA("interface param 'at_early_audio' MUST be a number, now at_early_audio='%s'\n", GSMOPEN_P_LOG, at_early_audio); + continue; + } + if (!switch_is_number(at_after_preinit_pause)) { + ERRORA("interface param 'at_after_preinit_pause' MUST be a number, now at_after_preinit_pause='%s'\n", GSMOPEN_P_LOG, + at_after_preinit_pause); + continue; + } + if (!switch_is_number(at_initial_pause)) { + ERRORA("interface param 'at_initial_pause' MUST be a number, now at_initial_pause='%s'\n", GSMOPEN_P_LOG, at_initial_pause); + continue; + } + if (!switch_is_number(at_has_clcc)) { + ERRORA("interface param 'at_has_clcc' MUST be a number, now at_has_clcc='%s'\n", GSMOPEN_P_LOG, at_has_clcc); + continue; + } + if (!switch_is_number(at_has_ecam)) { + ERRORA("interface param 'at_has_ecam' MUST be a number, now at_has_ecam='%s'\n", GSMOPEN_P_LOG, at_has_ecam); + continue; + } + if (!switch_is_number(gsmopen_sound_rate)) { + ERRORA("interface param 'gsmopen_sound_rate' MUST be a number, now gsmopen_sound_rate='%s'\n", GSMOPEN_P_LOG, gsmopen_sound_rate); + continue; + } + if (!switch_is_number(capture_boost)) { + ERRORA("interface param 'capture_boost' MUST be a number, now capture_boost='%s'\n", GSMOPEN_P_LOG, capture_boost); + continue; + } + if (!switch_is_number(playback_boost)) { + ERRORA("interface param 'playback_boost' MUST be a number, now playback_boost='%s'\n", GSMOPEN_P_LOG, playback_boost); + continue; + } + if (!switch_is_number(no_sound)) { + ERRORA("interface param 'no_sound' MUST be a number, now no_sound='%s'\n", GSMOPEN_P_LOG, no_sound); + continue; + } + if (!switch_is_number(gsmopen_serial_sync_period)) { + ERRORA("interface param 'gsmopen_serial_sync_period' MUST be a number, now gsmopen_serial_sync_period='%s'\n", GSMOPEN_P_LOG, + gsmopen_serial_sync_period); + continue; + } + + if (interface_id && interface_id < GSMOPEN_MAX_INTERFACES) { + private_t newconf; + switch_threadattr_t *gsmopen_api_thread_attr = NULL; + int res = 0; + + memset(&newconf, '\0', sizeof(newconf)); + globals.GSMOPEN_INTERFACES[interface_id] = newconf; + + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + + switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); + switch_mutex_init(&globals.GSMOPEN_INTERFACES[interface_id].controldev_audio_lock, SWITCH_MUTEX_NESTED, gsmopen_module_pool); + + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].id, id); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].name, name); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].context, context); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dialplan, dialplan); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].destination, destination); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_name, controldevice_name); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name, controldevice_audio_name); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].dial_regex, dial_regex); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].hold_music, hold_music); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].fail_dial_regex, fail_dial_regex); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_pre_number, at_dial_pre_number); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_post_number, at_dial_post_number); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_dial_expect, at_dial_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_hangup, at_hangup); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_hangup_expect, at_hangup_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_answer, at_answer); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_answer_expect, at_answer_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_send_dtmf, at_send_dtmf); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_1, at_preinit_1); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_1_expect, at_preinit_1_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_2, at_preinit_2); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_2_expect, at_preinit_2_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_3, at_preinit_3); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_3_expect, at_preinit_3_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_4, at_preinit_4); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_4_expect, at_preinit_4_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_5, at_preinit_5); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_preinit_5_expect, at_preinit_5_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_1, at_postinit_1); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_1_expect, at_postinit_1_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_2, at_postinit_2); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_2_expect, at_postinit_2_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_3, at_postinit_3); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_3_expect, at_postinit_3_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_4, at_postinit_4); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_4_expect, at_postinit_4_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_5, at_postinit_5); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_postinit_5_expect, at_postinit_5_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_battchg, at_query_battchg); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_battchg_expect, at_query_battchg_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_signal, at_query_signal); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_query_signal_expect, at_query_signal_expect); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_idle, at_call_idle); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_incoming, at_call_incoming); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_active, at_call_active); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_failed, at_call_failed); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_call_calling, at_call_calling); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_noservice_string, at_indicator_noservice_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nosignal_string, at_indicator_nosignal_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_lowsignal_string, at_indicator_lowsignal_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_lowbattchg_string, at_indicator_lowbattchg_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nobattchg_string, at_indicator_nobattchg_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callactive_string, at_indicator_callactive_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nocallactive_string, at_indicator_nocallactive_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_nocallsetup_string, at_indicator_nocallsetup_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupincoming_string, at_indicator_callsetupincoming_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupoutgoing_string, at_indicator_callsetupoutgoing_string); + switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].at_indicator_callsetupremoteringing_string, + at_indicator_callsetupremoteringing_string); + //switch_set_string(globals.GSMOPEN_INTERFACES[interface_id].sms_receiving_program, sms_receiving_program); + globals.GSMOPEN_INTERFACES[interface_id].at_early_audio = atoi(at_early_audio); + globals.GSMOPEN_INTERFACES[interface_id].at_after_preinit_pause = atoi(at_after_preinit_pause); + globals.GSMOPEN_INTERFACES[interface_id].at_initial_pause = atoi(at_initial_pause); + globals.GSMOPEN_INTERFACES[interface_id].at_has_clcc = atoi(at_has_clcc); + globals.GSMOPEN_INTERFACES[interface_id].at_has_ecam = atoi(at_has_ecam); + globals.GSMOPEN_INTERFACES[interface_id].capture_boost = atoi(capture_boost); + globals.GSMOPEN_INTERFACES[interface_id].playback_boost = atoi(playback_boost); + globals.GSMOPEN_INTERFACES[interface_id].no_sound = atoi(no_sound); + globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period = atoi(gsmopen_serial_sync_period); + + globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed = controldevice_speed; //FIXME + globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol = controldevprotocol; //FIXME + globals.GSMOPEN_INTERFACES[interface_id].running = running; //FIXME + + WARNINGA("STARTING interface_id=%d\n", GSMOPEN_P_LOG, interface_id); + DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].id); + DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].name); + DEBUGA_GSMOPEN("hold-music=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].hold_music); + DEBUGA_GSMOPEN("context=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].context); + DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].dialplan); + DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].destination); + DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_name); + DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[interface_id].controldevice_audio_name); + DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, + (int) globals.GSMOPEN_INTERFACES[interface_id].gsmopen_serial_sync_period); + + /* init the serial port */ + if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { + globals.GSMOPEN_INTERFACES[interface_id].controldevfd = + gsmopen_serial_init(&globals.GSMOPEN_INTERFACES[interface_id], globals.GSMOPEN_INTERFACES[interface_id].controldevice_speed); + if (globals.GSMOPEN_INTERFACES[interface_id].controldevfd == -1) { + ERRORA("gsmopen_serial_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; + continue; + } + } + + /* config the phone/modem on the serial port */ + if (globals.GSMOPEN_INTERFACES[interface_id].controldevprotocol != PROTOCOL_NO_SERIAL) { + res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); + if (res) { + int count = 0; + ERRORA("gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG); + while (res && count < 5) { + switch_sleep(100000); //0.1 seconds + res = gsmopen_serial_config(&globals.GSMOPEN_INTERFACES[interface_id]); + count++; + if (res) { + ERRORA("%d: gsmopen_serial_config failed, let's try again\n", GSMOPEN_P_LOG, count); + } + } + if (res) { + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "gsmopen_serial_config failed"); + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; + continue; + } + } + } + + if (globals.GSMOPEN_INTERFACES[interface_id].no_sound == 0) { + if (serial_audio_init(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("serial_audio_init failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_init failed"); + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; + continue; + + } + + if (serial_audio_shutdown(&globals.GSMOPEN_INTERFACES[interface_id])) { + ERRORA("serial_audio_shutdown failed\n", GSMOPEN_P_LOG); + ERRORA("STARTING interface_id=%d FAILED\n", GSMOPEN_P_LOG, interface_id); + //return SWITCH_STATUS_FALSE; + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "serial_audio_shutdown failed"); + globals.GSMOPEN_INTERFACES[interface_id].active = 0; + globals.GSMOPEN_INTERFACES[interface_id].name[0] = '\0'; + continue; + + } + + } + + globals.GSMOPEN_INTERFACES[interface_id].active = 1; + + //gsmopen_store_boost((char *)"5", &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME + //gsmopen_store_boost((char *)"10", &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME + gsmopen_store_boost((char *) capture_boost, &globals.GSMOPEN_INTERFACES[interface_id].capture_boost); //FIXME + gsmopen_store_boost((char *) playback_boost, &globals.GSMOPEN_INTERFACES[interface_id].playback_boost); //FIXME + + switch_sleep(100000); + switch_threadattr_create(&gsmopen_api_thread_attr, gsmopen_module_pool); + switch_threadattr_stacksize_set(gsmopen_api_thread_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread, gsmopen_api_thread_attr, gsmopen_do_gsmopenapi_thread, + &globals.GSMOPEN_INTERFACES[interface_id], gsmopen_module_pool); + + switch_sleep(100000); + WARNINGA("STARTED interface_id=%d\n", GSMOPEN_P_LOG, interface_id); + + } else { + ERRORA("interface id %d is higher than GSMOPEN_MAX_INTERFACES (%d)\n", GSMOPEN_P_LOG, interface_id, GSMOPEN_MAX_INTERFACES); + alarm_event(&globals.GSMOPEN_INTERFACES[interface_id], ALARM_FAILED_INTERFACE, "interface id is higher than GSMOPEN_MAX_INTERFACES"); + continue; + } + + } + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + /* How many real intterfaces */ + globals.real_interfaces = i + 1; + + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + + DEBUGA_GSMOPEN("id=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].id); + DEBUGA_GSMOPEN("name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].name); + DEBUGA_GSMOPEN("context=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].context); + DEBUGA_GSMOPEN("hold-music=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].hold_music); + DEBUGA_GSMOPEN("dialplan=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].dialplan); + DEBUGA_GSMOPEN("destination=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].destination); + DEBUGA_GSMOPEN("controldevice_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_name); + DEBUGA_GSMOPEN("gsmopen_serial_sync_period=%d\n", GSMOPEN_P_LOG, (int) globals.GSMOPEN_INTERFACES[i].gsmopen_serial_sync_period); + DEBUGA_GSMOPEN("controldevice_audio_name=%s\n", GSMOPEN_P_LOG, globals.GSMOPEN_INTERFACES[i].controldevice_audio_name); + } + } + } + + switch_mutex_unlock(globals.mutex); + switch_xml_free(xml); + + return SWITCH_STATUS_SUCCESS; +} + +//static switch_status_t chat_send(const char *proto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint) +static switch_status_t chat_send(switch_event_t *message_event) +{ + char *user, *host, *f_user = NULL, *f_host = NULL, *f_resource = NULL; + private_t *tech_pvt = NULL; + int i = 0, found = 0; + + const char *proto; + const char *from; + const char *to; + const char *subject; + const char *body; + //const char *type; + const char *hint; + + proto = switch_event_get_header(message_event, "proto"); + from = switch_event_get_header(message_event, "from"); + to = switch_event_get_header(message_event, "to"); + subject = switch_event_get_header(message_event, "subject"); + body = switch_event_get_body(message_event); + //type = switch_event_get_header(message_event, "type"); + hint = switch_event_get_header(message_event, "hint"); + + switch_assert(proto != NULL); + + DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, + hint ? hint : "NULL"); + + if (!to || !strlen(to)) { + ERRORA("Missing To: header.\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; + } + + if ((!from && !hint) || (!strlen(from) && !strlen(hint))) { + ERRORA("Missing From: AND Hint: headers.\n", GSMOPEN_P_LOG); + return SWITCH_STATUS_SUCCESS; + } + + if (from && (f_user = strdup(from))) { + if ((f_host = strchr(f_user, '@'))) { + *f_host++ = '\0'; + if ((f_resource = strchr(f_host, '/'))) { + *f_resource++ = '\0'; + } + } + } + + if (hint == NULL || !strlen(hint)) { //FIXME FIXME FIXME + hint = from; + } + if (to && (user = strdup(to))) { + if ((host = strchr(user, '@'))) { + *host++ = '\0'; + } + + DEBUGA_GSMOPEN("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", GSMOPEN_P_LOG, proto, from, to, subject, body, + hint ? hint : "NULL"); + if (hint && strlen(hint)) { + //in hint we receive the interface name to use + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, hint, strlen(hint)) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + DEBUGA_GSMOPEN("Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", GSMOPEN_P_LOG, i, + globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + } + } /* FIXME add a tech_pvt member for the SIM telephone number //else { + //we have no a predefined interface name to use (hint is NULL), so let's choose an interface from the username (from) + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].skype_user, from, strlen(from)) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + DEBUGA_GSMOPEN("Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", GSMOPEN_P_LOG, i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + } + } + */ + if (!found) { + ERRORA("ERROR: A GSMopen interface with name='%s' or one with SIM_number='%s' was not found\n", GSMOPEN_P_LOG, hint ? hint : "NULL", + from ? from : "NULL"); + goto end; + } else { + gsmopen_sendsms(tech_pvt, (char *) to, (char *) body); + } + } + end: + switch_safe_free(user); + switch_safe_free(f_user); + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t compat_chat_send(const char *proto, const char *from, const char *to, + const char *subject, const char *body, const char *type, const char *hint) +{ + switch_event_t *message_event; + switch_status_t status; + + if (switch_event_create(&message_event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "proto", proto); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "from", from); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "to", to); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "subject", subject); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "type", type); + switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "hint", hint); + + if (body) { + switch_event_add_body(message_event, "%s", body); + } + } else { + abort(); + } + + status = chat_send(message_event); + switch_event_destroy(&message_event); + + return status; + +} + +SWITCH_MODULE_LOAD_FUNCTION(mod_gsmopen_load) +{ + switch_api_interface_t *commands_api_interface; + switch_chat_interface_t *chat_interface; + + gsmopen_module_pool = pool; + memset(&globals, '\0', sizeof(globals)); + + running = 1; + + if (load_config(FULL_RELOAD) != SWITCH_STATUS_SUCCESS) { + running = 0; + return SWITCH_STATUS_FALSE; + } + + if (switch_event_reserve_subclass(MY_EVENT_INCOMING_SMS) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass!\n"); + return SWITCH_STATUS_GENERR; + } + + *module_interface = switch_loadable_module_create_module_interface(pool, modname); + gsmopen_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + gsmopen_endpoint_interface->interface_name = "gsmopen"; + gsmopen_endpoint_interface->io_routines = &gsmopen_io_routines; + gsmopen_endpoint_interface->state_handler = &gsmopen_state_handlers; + + if (running) { + +#if 1 + SWITCH_ADD_API(commands_api_interface, "gsm", "gsm console AT_command", gsm_function, GSM_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen", "gsmopen interface AT_command", gsmopen_function, GSMOPEN_SYNTAX); +#endif //0 + SWITCH_ADD_API(commands_api_interface, "gsmopen_boost_audio", "gsmopen_boost_audio interface AT_command", gsmopen_boost_audio_function, + GSMOPEN_BOOST_AUDIO_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen_dump", "gsmopen_dump interface", gsmopen_dump_function, GSMOPEN_DUMP_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "gsmopen_sendsms", "gsmopen_sendsms interface destination_number SMS_text", sendsms_function, + SENDSMS_SYNTAX); + SWITCH_ADD_CHAT(chat_interface, GSMOPEN_CHAT_PROTO, chat_send); + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; + } else + return SWITCH_STATUS_FALSE; +} + +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown) +{ + int x; + private_t *tech_pvt = NULL; + switch_status_t status; + unsigned int howmany = 8; + int interface_id; + int fd; + + running = 0; + + for (interface_id = 0; interface_id < GSMOPEN_MAX_INTERFACES; interface_id++) { + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { + WARNINGA("SHUTDOWN interface_id=%d\n", GSMOPEN_P_LOG, interface_id); + globals.GSMOPEN_INTERFACES[interface_id].running = 0; + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { +#ifdef WIN32 + switch_file_write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", &howmany); // let's the controldev_thread die +#else /* WIN32 */ + howmany = write(tech_pvt->GSMopenHandles.fdesc[1], "sciutati", howmany); +#endif /* WIN32 */ + } + x = 10; + while (x) { //FIXME 0.5 seconds? + x--; + switch_yield(50000); + } + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_signaling_thread); + } + if (globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread) { + switch_thread_join(&status, globals.GSMOPEN_INTERFACES[interface_id].gsmopen_api_thread); + } + + x = 10; + while (x) { //FIXME 0.5 seconds? + x--; + switch_yield(50000); + } + fd = tech_pvt->controldevfd; + //DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); + if (fd) { + //close(fd); + //tech_pvt->controldevfd = -1; + DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); + } +#ifndef WIN32 + shutdown(tech_pvt->audiogsmopenpipe[0], 2); + close(tech_pvt->audiogsmopenpipe[0]); + shutdown(tech_pvt->audiogsmopenpipe[1], 2); + close(tech_pvt->audiogsmopenpipe[1]); + shutdown(tech_pvt->audiopipe[0], 2); + close(tech_pvt->audiopipe[0]); + shutdown(tech_pvt->audiopipe[1], 2); + close(tech_pvt->audiopipe[1]); + shutdown(tech_pvt->GSMopenHandles.fdesc[0], 2); + close(tech_pvt->GSMopenHandles.fdesc[0]); + shutdown(tech_pvt->GSMopenHandles.fdesc[1], 2); + close(tech_pvt->GSMopenHandles.fdesc[1]); +#endif /* WIN32 */ + } + + } + + switch_event_free_subclass(MY_EVENT_INCOMING_SMS); + + switch_safe_free(globals.dialplan); + switch_safe_free(globals.context); + switch_safe_free(globals.destination); + switch_safe_free(globals.codec_string); + switch_safe_free(globals.codec_rates_string); + + return SWITCH_STATUS_SUCCESS; +} + +void *SWITCH_THREAD_FUNC gsmopen_do_gsmopenapi_thread(switch_thread_t *thread, void *obj) +{ + return gsmopen_do_gsmopenapi_thread_func(obj); +} + +int dtmf_received(private_t *tech_pvt, char *value) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + channel = switch_core_session_get_channel(session); + + if (channel) { + + if (!switch_channel_test_flag(channel, CF_BRIDGED)) { + + switch_dtmf_t dtmf = { (char) value[0], switch_core_default_dtmf_duration(0) }; + DEBUGA_GSMOPEN("received DTMF %c on channel %s\n", GSMOPEN_P_LOG, dtmf.digit, switch_channel_get_name(channel)); + switch_mutex_lock(tech_pvt->flag_mutex); + //FIXME: why sometimes DTMFs from here do not seems to be get by FS? + switch_channel_queue_dtmf(channel, &dtmf); + switch_set_flag(tech_pvt, TFLAG_DTMF); + switch_mutex_unlock(tech_pvt->flag_mutex); + } else { + DEBUGA_GSMOPEN + ("received a DTMF on channel %s, but we're BRIDGED, so let's NOT relay it out of band\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + } + } else { + WARNINGA("received %c DTMF, but no channel?\n", GSMOPEN_P_LOG, value[0]); + } + switch_core_session_rwunlock(session); + + return 0; +} + +int new_inbound_channel(private_t *tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + switch_assert(tech_pvt != NULL); + tech_pvt->ib_calls++; + if ((session = switch_core_session_request(gsmopen_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL)) != 0) { + DEBUGA_GSMOPEN("2 SESSION_REQUEST %s\n", GSMOPEN_P_LOG, switch_core_session_get_uuid(session)); + switch_core_session_add_stream(session, NULL); + channel = switch_core_session_get_channel(session); + if (!channel) { + ERRORA("Doh! no channel?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(&session); + return 0; + } + if (gsmopen_tech_init(tech_pvt, session) != SWITCH_STATUS_SUCCESS) { + ERRORA("Doh! no tech_init?\n", GSMOPEN_P_LOG); + switch_core_session_destroy(&session); + return 0; + } + + if ((tech_pvt->caller_profile = + switch_caller_profile_new(switch_core_session_get_pool(session), "gsmopen", + tech_pvt->dialplan, tech_pvt->callid_name, + tech_pvt->callid_number, NULL, NULL, NULL, NULL, "mod_gsmopen", tech_pvt->context, tech_pvt->destination)) != 0) { + char name[128]; + //switch_snprintf(name, sizeof(name), "gsmopen/%s/%s", tech_pvt->name, tech_pvt->caller_profile->destination_number); + switch_snprintf(name, sizeof(name), "gsmopen/%s", tech_pvt->name); + switch_channel_set_name(channel, name); + switch_channel_set_caller_profile(channel, tech_pvt->caller_profile); + } + switch_channel_set_state(channel, CS_INIT); + if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) { + ERRORA("Error spawning thread\n", GSMOPEN_P_LOG); + switch_core_session_destroy(&session); + return 0; + } + } + if (channel) { + //switch_channel_mark_answered(channel); + } + + DEBUGA_GSMOPEN("new_inbound_channel\n", GSMOPEN_P_LOG); + + return 0; +} + +int remote_party_is_ringing(private_t *tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + goto done; + } + if (session) { + channel = switch_core_session_get_channel(session); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + goto done; + } + if (channel) { + switch_channel_mark_ring_ready(channel); + DEBUGA_GSMOPEN("gsmopen_call: REMOTE PARTY RINGING\n", GSMOPEN_P_LOG); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + } + + switch_core_session_rwunlock(session); + + done: + return 0; +} + +int remote_party_is_early_media(private_t *tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n\n\n", GSMOPEN_P_LOG); + //TODO: kill the bastard + goto done; + } + if (session) { + channel = switch_core_session_get_channel(session); + switch_core_session_add_stream(session, NULL); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + //TODO: kill the bastard + goto done; + } + if (channel) { + switch_channel_mark_pre_answered(channel); + DEBUGA_GSMOPEN("gsmopen_call: REMOTE PARTY EARLY MEDIA\n", GSMOPEN_P_LOG); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + //TODO: kill the bastard + } + + switch_core_session_rwunlock(session); + + done: + return 0; +} + +int outbound_channel_answered(private_t *tech_pvt) +{ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } else { + ERRORA("No session???\n", GSMOPEN_P_LOG); + goto done; + } + if (session) { + channel = switch_core_session_get_channel(session); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + goto done; + } + if (channel) { + switch_channel_mark_answered(channel); + tech_pvt->phone_callflow = GSMOPEN_STATE_UP; + tech_pvt->interface_state = GSMOPEN_STATE_UP; + //DEBUGA_GSMOPEN("gsmopen_call: %s, answered\n", GSMOPEN_P_LOG, id); + } else { + ERRORA("No channel???\n", GSMOPEN_P_LOG); + } + + switch_core_session_rwunlock(session); + + done: + DEBUGA_GSMOPEN("outbound_channel_answered!\n", GSMOPEN_P_LOG); + + return 0; +} + +private_t *find_available_gsmopen_interface_rr(private_t *tech_pvt_calling) +{ + private_t *tech_pvt = NULL; + int i; + //int num_interfaces = GSMOPEN_MAX_INTERFACES; + //int num_interfaces = globals.real_interfaces; + + switch_mutex_lock(globals.mutex); + + /* Fact is the real interface start from 1 */ + //XXX no, is just a convention, but you can have it start from 0. I do not, for aestetic reasons :-) + //if (globals.next_interface == 0) globals.next_interface = 1; + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + int interface_id; + + interface_id = globals.next_interface; + //interface_id = interface_id < GSMOPEN_MAX_INTERFACES ? interface_id : interface_id - GSMOPEN_MAX_INTERFACES + 1; + globals.next_interface = interface_id + 1 < GSMOPEN_MAX_INTERFACES ? interface_id + 1 : 0; + + if (strlen(globals.GSMOPEN_INTERFACES[interface_id].name)) { + int gsmopen_state = 0; + + tech_pvt = &globals.GSMOPEN_INTERFACES[interface_id]; + gsmopen_state = tech_pvt->interface_state; + DEBUGA_GSMOPEN("gsmopen interface: %d, name: %s, state: %d\n", GSMOPEN_P_LOG, interface_id, globals.GSMOPEN_INTERFACES[interface_id].name, + gsmopen_state); + if ((tech_pvt_calling ? strcmp(tech_pvt->gsmopen_user, tech_pvt_calling->gsmopen_user) : 1) + && (GSMOPEN_STATE_DOWN == gsmopen_state || 0 == gsmopen_state) && (tech_pvt->phone_callflow == CALLFLOW_STATUS_FINISHED + || 0 == tech_pvt->phone_callflow)) { + DEBUGA_GSMOPEN("returning as available gsmopen interface name: %s, state: %d callflow: %d\n", GSMOPEN_P_LOG, tech_pvt->name, gsmopen_state, + tech_pvt->phone_callflow); + /*set to Dialing state to avoid other thread fint it, don't know if it is safe */ + //XXX no, it's not safe + if (tech_pvt_calling == NULL) { + tech_pvt->interface_state = GSMOPEN_STATE_SELECTED; + } + + switch_mutex_unlock(globals.mutex); + return tech_pvt; + } + } // else { + //DEBUGA_GSMOPEN("GSM interface: %d blank!! A hole here means we cannot hunt the last interface.\n", GSMOPEN_P_LOG, interface_id); + //} + } + + switch_mutex_unlock(globals.mutex); + return NULL; +} + +#if 1 +SWITCH_STANDARD_API(gsm_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + + if (globals.gsm_console) + stream->write_function(stream, "gsm console is: |||%s|||\n", globals.gsm_console->name); + else + stream->write_function(stream, "gsm console is NOT yet assigned\n"); + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc || !argv[0]) { + stream->write_function(stream, "%s", GSM_SYNTAX); + goto end; + } + + if (!strcasecmp(argv[0], "list")) { + int i; + char next_flag_char = ' '; + + stream->write_function(stream, "F ID\t Name \tIB (F/T) OB (F/T)\tState\tCallFlw\t\tUUID\n"); + stream->write_function(stream, "= ====\t ======== \t======= =======\t======\t============\t======\n"); + + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + next_flag_char = i == globals.next_interface ? '*' : ' '; + + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + stream->write_function(stream, + "%c %d\t[%s]\t%3ld/%ld\t%6ld/%ld\t%s\t%s\t%s\n", + next_flag_char, + i, globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].ib_failed_calls, + globals.GSMOPEN_INTERFACES[i].ib_calls, + globals.GSMOPEN_INTERFACES[i].ob_failed_calls, + globals.GSMOPEN_INTERFACES[i].ob_calls, + interface_status[globals.GSMOPEN_INTERFACES[i].interface_state], + phone_callflow[globals.GSMOPEN_INTERFACES[i].phone_callflow], globals.GSMOPEN_INTERFACES[i].session_uuid_str); + } else if (argc > 1 && !strcasecmp(argv[1], "full")) { + stream->write_function(stream, "%c\t%d\n", next_flag_char, i); + } + + } + stream->write_function(stream, "\nTotal: %d\n", globals.real_interfaces - 1); + + } else if (!strcasecmp(argv[0], "console")) { + int i; + int found = 0; + + if (argc == 2) { + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[1], strlen(argv[1])) == 0)) { + globals.gsm_console = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "gsm console is now: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, + globals.GSMOPEN_INTERFACES[i].name); + stream->write_function(stream, "gsm console is: |||%s|||\n", globals.gsm_console->name); + found = 1; + break; + } + + } + if (!found) + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[1]); + } else { + + stream->write_function(stream, "-ERR Usage: gsm console interface_name\n"); + goto end; + } + + } else if (!strcasecmp(argv[0], "ciapalino")) { + +/* BEGIN: Changes heres */ + } else if (!strcasecmp(argv[0], "reload")) { + if (load_config(SOFT_RELOAD) != SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "gsm reload failed\n"); + } else { + stream->write_function(stream, "gsm reload success\n"); + } + } else if (!strcasecmp(argv[0], "remove")) { + if (argc == 2) { + if (remove_interface(argv[1]) == SWITCH_STATUS_SUCCESS) { + if (interface_exists(argv[1]) == SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "gsm remove '%s' failed\n", argv[1]); + } else { + stream->write_function(stream, "gsm remove '%s' success\n", argv[1]); + } + } + } else { + stream->write_function(stream, "-ERR Usage: gsm remove interface_name\n"); + goto end; + } +/* END: Changes heres */ + + } else { + if (globals.gsm_console) + gsmopen_serial_write_AT_noack(globals.gsm_console, (char *) cmd); + else + stream->write_function(stream, "gsm console is NOT yet assigned\n"); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_STANDARD_API(gsmopen_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); + goto end; + } + + if (argc < 2) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); + goto end; + } + + if (argv[0]) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; + } else { + gsmopen_serial_write_AT_noack(tech_pvt, (char *) &cmd[strlen(argv[0]) + 1]); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} +#endif //0 +SWITCH_STANDARD_API(gsmopen_dump_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + char value[512]; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); + goto end; + } + if (argc == 1) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + //stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found && (strcmp("list", argv[0]) == 0)) { + int i; + stream->write_function(stream, "gsmopen_dump LIST\n\n"); + for (i = 0; i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + stream->write_function(stream, "dumping interface '%s'\n\n", globals.GSMOPEN_INTERFACES[i].name); + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + + stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); + stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); + stream->write_function(stream, "active = %s\n", value); + if (!tech_pvt->network_creg_not_supported) { + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); + stream->write_function(stream, "not_registered = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); + stream->write_function(stream, "home_network_registered = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); + stream->write_function(stream, "roaming_registered = %s\n", value); + } else { + stream->write_function(stream, "not_registered = %s\n", "N/A"); + stream->write_function(stream, "home_network_registered = %s\n", "N/A"); + stream->write_function(stream, "roaming_registered = %s\n", "N/A"); + } + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); + stream->write_function(stream, "got_signal = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); + stream->write_function(stream, "running = %s\n", value); + stream->write_function(stream, "imei = %s\n", tech_pvt->imei); + stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); + stream->write_function(stream, "controldev_dead = %s\n", value); + stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); + stream->write_function(stream, "no_sound = %s\n", value); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); + stream->write_function(stream, "playback_boost = %s\n", value); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); + stream->write_function(stream, "capture_boost = %s\n", value); + stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); + stream->write_function(stream, "context = %s\n", tech_pvt->context); + stream->write_function(stream, "destination = %s\n", tech_pvt->destination); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); + stream->write_function(stream, "ib_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); + stream->write_function(stream, "ob_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); + stream->write_function(stream, "ib_failed_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); + stream->write_function(stream, "ob_failed_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); + stream->write_function(stream, "interface_state = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); + stream->write_function(stream, "phone_callflow = %s\n", value); + stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); + stream->write_function(stream, "\n"); + + dump_event(tech_pvt); + } + + } + + } else if (found) { + stream->write_function(stream, "dumping interface '%s'\n\n", argv[0]); + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + + stream->write_function(stream, "interface_name = %s\n", tech_pvt->name); + stream->write_function(stream, "interface_id = %s\n", tech_pvt->id); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); + stream->write_function(stream, "active = %s\n", value); + if (!tech_pvt->network_creg_not_supported) { + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); + stream->write_function(stream, "not_registered = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); + stream->write_function(stream, "home_network_registered = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); + stream->write_function(stream, "roaming_registered = %s\n", value); + } else { + stream->write_function(stream, "not_registered = %s\n", "N/A"); + stream->write_function(stream, "home_network_registered = %s\n", "N/A"); + stream->write_function(stream, "roaming_registered = %s\n", "N/A"); + } + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); + stream->write_function(stream, "got_signal = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); + stream->write_function(stream, "running = %s\n", value); + stream->write_function(stream, "imei = %s\n", tech_pvt->imei); + stream->write_function(stream, "imsi = %s\n", tech_pvt->imsi); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); + stream->write_function(stream, "controldev_dead = %s\n", value); + stream->write_function(stream, "controldevice_name = %s\n", tech_pvt->controldevice_name); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); + stream->write_function(stream, "no_sound = %s\n", value); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); + stream->write_function(stream, "playback_boost = %s\n", value); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); + stream->write_function(stream, "capture_boost = %s\n", value); + stream->write_function(stream, "dialplan = %s\n", tech_pvt->dialplan); + stream->write_function(stream, "context = %s\n", tech_pvt->context); + stream->write_function(stream, "destination = %s\n", tech_pvt->destination); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); + stream->write_function(stream, "ib_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); + stream->write_function(stream, "ob_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); + stream->write_function(stream, "ib_failed_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); + stream->write_function(stream, "ob_failed_calls = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); + stream->write_function(stream, "interface_state = %s\n", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); + stream->write_function(stream, "phone_callflow = %s\n", value); + stream->write_function(stream, "session_uuid_str = %s\n", tech_pvt->session_uuid_str); + stream->write_function(stream, "\n"); + + dump_event(tech_pvt); + } else { + stream->write_function(stream, "interface '%s' was not found\n", argv[0]); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_DUMP_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_STANDARD_API(gsmopen_boost_audio_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (argc == 1 || argc == 3) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + + } else { + if (argc == 1) { + stream->write_function(stream, "[%s] capture boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].capture_boost); + stream->write_function(stream, "[%s] playback boost is %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].playback_boost); + stream->write_function(stream, "%s usage: %s", argv[0], GSMOPEN_BOOST_AUDIO_SYNTAX); + goto end; + } else if ((strncmp("play", argv[1], strlen(argv[1])) == 0)) { + if (switch_is_number(argv[2])) { + stream->write_function(stream, "[%s] playback boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].playback_boost); + gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].playback_boost); //FIXME + stream->write_function(stream, "[%s] playback boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].playback_boost); + } + } else if ((strncmp("capt", argv[1], strlen(argv[1])) == 0)) { + if (switch_is_number(argv[2])) { + stream->write_function(stream, "[%s] capture boost was %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].capture_boost); + gsmopen_store_boost(argv[2], &globals.GSMOPEN_INTERFACES[i].capture_boost); //FIXME + stream->write_function(stream, "[%s] capture boost is now %f\n", globals.GSMOPEN_INTERFACES[i].name, + globals.GSMOPEN_INTERFACES[i].capture_boost); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); + } + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_BOOST_AUDIO_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + +#if 0 +int gsmopen_transfer(private_t *tech_pvt, char *id, char *value) +{ + char msg_to_gsmopen[1024]; + int i; + int found = 0; + private_t *giovatech; + struct timeval timenow; + + switch_mutex_lock(globals.mutex); + + gettimeofday(&timenow, NULL); + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + + giovatech = &globals.GSMOPEN_INTERFACES[i]; + //NOTICA("gsmopen interface: %d, name: %s, state: %d, value=%s, giovatech->callid_number=%s, giovatech->gsmopen_user=%s\n", GSMOPEN_P_LOG, i, giovatech->name, giovatech->interface_state, value, giovatech->callid_number, giovatech->gsmopen_user); + //FIXME check a timestamp here + if (strlen(giovatech->gsmopen_call_id) && (giovatech->interface_state != GSMOPEN_STATE_DOWN) && (!strcmp(giovatech->gsmopen_user, tech_pvt->gsmopen_user)) && (!strcmp(giovatech->callid_number, value)) && ((((timenow.tv_sec - giovatech->answer_time.tv_sec) * 1000000) + (timenow.tv_usec - giovatech->answer_time.tv_usec)) < 500000)) { //0.5sec + found = 1; + DEBUGA_GSMOPEN + ("FOUND (name=%s, giovatech->interface_state=%d != GSMOPEN_STATE_DOWN) && (giovatech->gsmopen_user=%s == tech_pvt->gsmopen_user=%s) && (giovatech->callid_number=%s == value=%s)\n", + GSMOPEN_P_LOG, giovatech->name, giovatech->interface_state, giovatech->gsmopen_user, tech_pvt->gsmopen_user, giovatech->callid_number, + value) + break; + } + } + } + + if (found) { + //tech_pvt->callid_number[0]='\0'; + //sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + switch_mutex_unlock(globals.mutex); + return 0; + } + DEBUGA_GSMOPEN("NOT FOUND\n", GSMOPEN_P_LOG); + + if (!tech_pvt || !tech_pvt->gsmopen_call_id || !strlen(tech_pvt->gsmopen_call_id)) { + /* we are not inside an active call */ + DEBUGA_GSMOPEN("We're NO MORE in a call now %s\n", GSMOPEN_P_LOG, (tech_pvt && tech_pvt->gsmopen_call_id) ? tech_pvt->gsmopen_call_id : ""); + switch_mutex_unlock(globals.mutex); + + } else { + + /* we're owned, we're in a call, let's try to transfer */ + /************************** TODO + Checking here if it is possible to transfer this call to Test2 + -> GET CALL 288 CAN_TRANSFER Test2 + <- CALL 288 CAN_TRANSFER test2 TRUE + **********************************/ + + private_t *available_gsmopen_interface = NULL; + + gettimeofday(&timenow, NULL); + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + if (strlen(globals.GSMOPEN_INTERFACES[i].name)) { + + giovatech = &globals.GSMOPEN_INTERFACES[i]; + //NOTICA("gsmopen interface: %d, name: %s, state: %d, value=%s, giovatech->callid_number=%s, giovatech->gsmopen_user=%s\n", GSMOPEN_P_LOG, i, giovatech->name, giovatech->interface_state, value, giovatech->callid_number, giovatech->gsmopen_user); + //FIXME check a timestamp here + if (strlen(giovatech->gsmopen_transfer_call_id) && (giovatech->interface_state != GSMOPEN_STATE_DOWN) && (!strcmp(giovatech->gsmopen_user, tech_pvt->gsmopen_user)) && (!strcmp(giovatech->transfer_callid_number, value)) && ((((timenow.tv_sec - giovatech->transfer_time.tv_sec) * 1000000) + (timenow.tv_usec - giovatech->transfer_time.tv_usec)) < 1000000)) { //1.0 sec + found = 1; + DEBUGA_GSMOPEN + ("FOUND (name=%s, giovatech->interface_state=%d != GSMOPEN_STATE_DOWN) && (giovatech->gsmopen_user=%s == tech_pvt->gsmopen_user=%s) && (giovatech->transfer_callid_number=%s == value=%s)\n", + GSMOPEN_P_LOG, giovatech->name, giovatech->interface_state, + giovatech->gsmopen_user, tech_pvt->gsmopen_user, giovatech->transfer_callid_number, value) + break; + } + } + } + + if (found) { + //tech_pvt->callid_number[0]='\0'; + //sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + switch_mutex_unlock(globals.mutex); + return 0; + } + DEBUGA_GSMOPEN("NOT FOUND\n", GSMOPEN_P_LOG); + + available_gsmopen_interface = find_available_gsmopen_interface_rr(tech_pvt); + if (available_gsmopen_interface) { + /* there is a gsmopen interface idle, let's transfer the call to it */ + + //FIXME write a timestamp here + gettimeofday(&tech_pvt->transfer_time, NULL); + switch_copy_string(tech_pvt->gsmopen_transfer_call_id, id, sizeof(tech_pvt->gsmopen_transfer_call_id) - 1); + + switch_copy_string(tech_pvt->transfer_callid_number, value, sizeof(tech_pvt->transfer_callid_number) - 1); + + DEBUGA_GSMOPEN + ("Let's transfer the gsmopen_call %s to %s interface (with gsmopen_user: %s), because we are already in a gsmopen call(%s)\n", + GSMOPEN_P_LOG, tech_pvt->gsmopen_call_id, available_gsmopen_interface->name, available_gsmopen_interface->gsmopen_user, id); + + //FIXME why this? the inbound call will come, eventually, on that other interface + //available_gsmopen_interface->ib_calls++; + + sprintf(msg_to_gsmopen, "ALTER CALL %s TRANSFER %s", id, available_gsmopen_interface->gsmopen_user); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + if (tech_pvt->interface_state == GSMOPEN_STATE_SELECTED) { + tech_pvt->interface_state = GSMOPEN_STATE_IDLE; //we marked it GSMOPEN_STATE_SELECTED just in case it has to make an outbound call + } + } else { + /* no gsmopen interfaces idle, do nothing */ + DEBUGA_GSMOPEN + ("Not answering the gsmopen_call %s, because we are already in a gsmopen call(%s) and not transferring, because no other gsmopen interfaces are available\n", + GSMOPEN_P_LOG, id, tech_pvt->gsmopen_call_id); + sprintf(msg_to_gsmopen, "ALTER CALL %s END HANGUP", id); + //gsmopen_signaling_write(tech_pvt, msg_to_gsmopen); + } + switch_sleep(10000); + DEBUGA_GSMOPEN + ("We have NOT answered a GSM RING from gsmopen_call %s, because we are already in a gsmopen call (%s)\n", + GSMOPEN_P_LOG, id, tech_pvt->gsmopen_call_id); + + switch_mutex_unlock(globals.mutex); + } + return 0; +} +#endif //0 + +void *gsmopen_do_gsmopenapi_thread_func(void *obj) +{ + + private_t *tech_pvt = (private_t *) obj; + time_t now_timestamp; + + //if (gsmopen_present(GSMopenHandles)) + while (running && tech_pvt->running) { + int res; + //gsmopen_sleep(1000000); //1 sec + //DEBUGA_GSMOPEN("ciao!\n", GSMOPEN_P_LOG); + res = gsmopen_serial_read(tech_pvt); + if (res == -1) { //manage the graceful interface shutdown + tech_pvt->controldev_dead = 1; + close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + switch_sleep(1000000); + } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_RING + && tech_pvt->phone_callflow != CALLFLOW_CALL_HANGUP_REQUESTED) { + //WARNINGA("INCOMING RING\n", GSMOPEN_P_LOG); + + gsmopen_ring(tech_pvt); + + //FIXME gsmopen_answer(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + + } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) { + WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); + tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA; + remote_party_is_early_media(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + + } else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) { + WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); + outbound_channel_answered(tech_pvt); + //new_inbound_channel(tech_pvt); + //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { + //FIXME ERRORA("gsmopen_new failed! BAD BAD BAD\n", GSMOPEN_P_LOG); + //FIXME } + } + switch_sleep(100); //give other threads a chance + time(&now_timestamp); + + if ((now_timestamp - tech_pvt->gsmopen_serial_synced_timestamp) > tech_pvt->gsmopen_serial_sync_period) { //TODO find a sensible period. 5min? in config? + gsmopen_serial_sync(tech_pvt); + gsmopen_serial_getstatus_AT(tech_pvt); + } + } + DEBUGA_GSMOPEN("EXIT\n", GSMOPEN_P_LOG); + //running = 0; + return NULL; + +} + +SWITCH_STANDARD_API(sendsms_function) +{ + char *mycmd = NULL, *argv[3] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); + goto end; + } + + if (argc < 3) { + stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); + goto end; + } + + if (argv[0]) { + int i; + int found = 0; + + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Trying to send your SMS: interface=%s, dest=%s, text=%s\n", argv[0], argv[1], argv[2]); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; + } else { + //gsmopen_sendsms(tech_pvt, (char *) argv[1], (char *) argv[2]); + NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, tech_pvt->name, + argv[1], "SIMPLE MESSAGE", switch_str_nil(argv[2]), tech_pvt->name); + + compat_chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->name, argv[1], "SIMPLE MESSAGE", switch_str_nil(argv[2]), NULL, tech_pvt->name); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", SENDSMS_SYNTAX); + } + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + +int dump_event_full(private_t *tech_pvt, int is_alarm, int alarm_code, const char *alarm_message) +{ + switch_event_t *event; + char value[512]; + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + + session = switch_core_session_locate(tech_pvt->session_uuid_str); + if (session) { + channel = switch_core_session_get_channel(session); + } + + if (is_alarm) { + ERRORA("ALARM on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name); + status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_ALARM); + } else { + DEBUGA_GSMOPEN("DUMP on interface %s: \n", GSMOPEN_P_LOG, tech_pvt->name); + status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_DUMP); + } + if (status == SWITCH_STATUS_SUCCESS) { + if (is_alarm) { + snprintf(value, sizeof(value) - 1, "%d", alarm_code); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_code", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alarm_message", alarm_message); + } + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_name", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_id", tech_pvt->id); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->active); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "active", value); + if (!tech_pvt->network_creg_not_supported) { + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->not_registered); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->home_network_registered); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->roaming_registered); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", value); + } else { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "not_registered", "N/A"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "home_network_registered", "N/A"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "roaming_registered", "N/A"); + } + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->got_signal); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "got_signal", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->running); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "running", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imei", tech_pvt->imei); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "imsi", tech_pvt->imsi); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->controldev_dead); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldev_dead", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "controldevice_name", tech_pvt->controldevice_name); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->no_sound); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "no_sound", value); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->playback_boost); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "playback_boost", value); + snprintf(value, sizeof(value) - 1, "%f", tech_pvt->capture_boost); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "capture_boost", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "dialplan", tech_pvt->dialplan); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "context", tech_pvt->context); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "destination", tech_pvt->destination); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_calls", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_calls", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ib_failed_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ib_failed_calls", value); + snprintf(value, sizeof(value) - 1, "%lu", tech_pvt->ob_failed_calls); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ob_failed_calls", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->interface_state); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "interface_state", value); + snprintf(value, sizeof(value) - 1, "%d", tech_pvt->phone_callflow); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "phone_callflow", value); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "session_uuid_str", tech_pvt->session_uuid_str); + if (strlen(tech_pvt->session_uuid_str)) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); + } else { //no session + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); + } + if (channel) { + switch_channel_event_set_data(channel, event); + } + switch_event_fire(&event); + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + + if (session) { + switch_core_session_rwunlock(session); + } + return 0; +} + +int dump_event(private_t *tech_pvt) +{ + return dump_event_full(tech_pvt, 0, 0, NULL); +} + +int alarm_event(private_t *tech_pvt, int alarm_code, const char *alarm_message) +{ + return dump_event_full(tech_pvt, 1, alarm_code, alarm_message); +} + +int sms_incoming(private_t *tech_pvt) +{ + switch_event_t *event; + switch_core_session_t *session = NULL; + int event_sent_to_esl = 0; + + //DEBUGA_GSMOPEN("received SMS on interface %s: %s\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_message); + DEBUGA_GSMOPEN("received SMS on interface %s: DATE=%s, SENDER=%s, BODY=%s|\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_date, tech_pvt->sms_sender, + tech_pvt->sms_body); + + if (!zstr(tech_pvt->session_uuid_str)) { + session = switch_core_session_locate(tech_pvt->session_uuid_str); + } + if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); + switch_event_add_body(event, "%s\n", tech_pvt->sms_body); + if (session) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); + if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "delivery-failure", "true"); + switch_event_fire(&event); + } + } else { //no session + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); + switch_event_fire(&event); + event_sent_to_esl = 1; + } + + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + + if (!event_sent_to_esl) { + + if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->chatmessages[which].from_handle); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); + switch_event_add_body(event, "%s\n", tech_pvt->sms_body); + if (session) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); + } else { //no session + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "false"); + } + switch_event_fire(&event); + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + } + + if (session) { + switch_core_session_rwunlock(session); + } + //memset(&tech_pvt->chatmessages[which], '\0', sizeof(&tech_pvt->chatmessages[which]) ); + //memset(tech_pvt->sms_message, '\0', sizeof(tech_pvt->sms_message)); + return 0; +} + +#ifdef NOTDEF +SWITCH_STANDARD_API(gsmopen_chat_function) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + private_t *tech_pvt = NULL; + //int tried =0; + int i; + int found = 0; + //char skype_msg[1024]; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (!argc) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); + goto end; + } + + if (argc < 3) { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); + goto end; + } + + if (argv[0]) { + for (i = 0; !found && i < GSMOPEN_MAX_INTERFACES; i++) { + /* we've been asked for a normal interface name, or we have not found idle interfaces to serve as the "ANY" interface */ + if (strlen(globals.GSMOPEN_INTERFACES[i].name) + && (strncmp(globals.GSMOPEN_INTERFACES[i].name, argv[0], strlen(argv[0])) == 0)) { + tech_pvt = &globals.GSMOPEN_INTERFACES[i]; + stream->write_function(stream, "Using interface: globals.GSMOPEN_INTERFACES[%d].name=|||%s|||\n", i, globals.GSMOPEN_INTERFACES[i].name); + found = 1; + break; + } + + } + if (!found) { + stream->write_function(stream, "ERROR: A GSMopen interface with name='%s' was not found\n", argv[0]); + goto end; + } else { + + //chat_send(const char *proto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); + //chat_send(p*roto, const char *from, const char *to, const char *subject, const char *body, const char *type, const char *hint); + //chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, hint); + + NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", GSMOPEN_P_LOG, GSMOPEN_CHAT_PROTO, + tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), + tech_pvt->name); + + chat_send(GSMOPEN_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", + switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, tech_pvt->name); + + //NOTICA("TEXT is: %s\n", GSMOPEN_P_LOG, (char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1] ); + //snprintf(skype_msg, sizeof(skype_msg), "CHAT CREATE %s", argv[1]); + //gsmopen_signaling_write(tech_pvt, skype_msg); + //switch_sleep(100); + } + } else { + stream->write_function(stream, "ERROR, usage: %s", GSMOPEN_CHAT_SYNTAX); + goto end; + } + +#ifdef NOTDEF + + found = 0; + + while (!found) { + for (i = 0; i < MAX_CHATS; i++) { + if (!strcmp(tech_pvt->chats[i].dialog_partner, argv[1])) { + snprintf(skype_msg, sizeof(skype_msg), "CHATMESSAGE %s %s", tech_pvt->chats[i].chatname, + (char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]); + gsmopen_signaling_write(tech_pvt, skype_msg); + found = 1; + break; + } + } + if (found) { + break; + } + if (tried > 1000) { + stream->write_function(stream, "ERROR: no chat with dialog_partner='%s' was found\n", argv[1]); + break; + } + switch_sleep(1000); + } +#endif //NOTDEF + + end: + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} +#endif // NOTDEF + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab: + */ diff --git a/src/mod/endpoints/mod_gsmopen/test.cc b/src/mod/endpoints/mod_gsmopen/test.cc deleted file mode 100644 index f59711ef92..0000000000 --- a/src/mod/endpoints/mod_gsmopen/test.cc +++ /dev/null @@ -1,206 +0,0 @@ -// ************************************************************************* -// * GSM TA/ME library -// * -// * File: testgsmlib.cc -// * -// * Purpose: Test general gsm functions (without SMS/phonebook) -// * -// * Author: Peter Hofmann (software@pxh.de) -// * -// * Created: 17.5.1999 -// ************************************************************************* -#ifdef HAVE_CONFIG_H -#include -#endif -#ifdef WIN32 -#include -#else -#include -#endif -#include -#include - -using namespace std; -using namespace gsmlib; - -// some time-consuming tests can be switched off by commenting out the -// following macros -#define TEST_OPERATOR_INFO - -void printForwardReason(string s, ForwardInfo &info) -{ - cout << " " << s << ": " - << (info._active ? "active " : "inactive ") - << "number: " << info._number - << " subaddr: " << info._subAddr - << " time: " << info._time << endl; -} - -int main(int argc, char *argv[]) -{ - string ciapa; - int i; - - if(argc<2){ - cout << (string)"You gave no \"device\" argument!" << endl; - return -1; - } - try - { - cout << (string)"Opening device " + argv[1] << endl; -#ifdef WIN32 - Ref port = new Win32SerialPort((string)argv[1], 38400); -#else - //Ref port = new UnixSerialPort((string)argv[1], B38400); - Ref port = new UnixSerialPort((string)argv[1], B115200); -#endif - - - cout << "Creating MeTa object" << endl; - MeTa m(port); - - cout << "Creating GsmAt object" << endl; - Ref gsmat = new GsmAt(m); - - cout << "Using GsmAt object" << endl; - //cout << gsmat->chat("AT", "OK", false, false) << endl; - //cout << gsmat->chat("D3472665618;") << endl; - gsmat->putLine("ATI9", true); - for(i=0; i<9; i++){ - ciapa = gsmat->getLine(); - cout << "PRESO: |||" << ciapa << "|||" << endl; - //usleep(5000); - } - -#ifdef NOTDEF - cout << "Getting ME info" << endl; - MEInfo mei = m.getMEInfo(); - - cout << " Manufacturer: " << mei._manufacturer << endl - << " Model: " << mei._model << endl - << " Revision: " << mei._revision << endl - << " Serial Number: " << mei._serialNumber << endl << endl; - -#ifdef TEST_OPERATOR_INFO - try - { - cout << "Getting operator info" << endl; - vector opis = m.getAvailableOPInfo(); - for (vector::iterator i = opis.begin(); i != opis.end(); ++i) - { - cout << " Status: "; - switch (i->_status) - { - case 0: cout << "unknown"; break; - case 1: cout << "current"; break; - case 2: cout << "available"; break; - case 3: cout << "forbidden"; break; - } - cout << endl - << " Long name: '" << i->_longName << "' " - << " Short name: '" << i->_shortName << "' " - << " Numeric name: " << i->_numericName << endl; - } - } - catch (GsmException &ge) - { - if (ge.getErrorCode() == 0) - cout << "phone failure ignored" << endl; - else - throw; - } - cout << endl; -#endif // TEST_OPERATOR_INFO - - cout << "Current operator info" << endl; - OPInfo opi = m.getCurrentOPInfo(); - cout << " Long name: '" << opi._longName << "' " - << " Short name: '" << opi._shortName << "' " - << " Numeric name: " << opi._numericName << endl - << " Mode: "; - switch (opi._mode) - { - case 0: cout << "automatic"; break; - case 1: cout << "manual"; break; - case 2: cout << "deregister"; break; - case 4: cout << "manual/automatic"; break; - } - cout << endl; - - cout << "Facility lock capabilities" << endl << " "; - vector fclc = m.getFacilityLockCapabilities(); - for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) - cout << *i << " "; - cout << endl << endl; - - cout << "Facility lock states" << endl; - for (vector::iterator k = fclc.begin(); k != fclc.end(); ++k) - if (*k != "AB" && *k != "AG" && *k != "AC") - { - cout << " " << *k; - if (m.getFacilityLockStatus(*k, VoiceFacility)) - cout << " Voice"; - if (m.getFacilityLockStatus(*k, DataFacility)) - cout << " Data"; - if (m.getFacilityLockStatus(*k, FaxFacility)) - cout << " Fax"; - } - cout << endl; - - cout << "Facilities with password" << endl; - vector pwi = m.getPasswords(); - for (vector::iterator j = pwi.begin(); j != pwi.end(); ++j) - cout << " " << j->_facility << " len " << j->_maxPasswdLen << endl; - cout << endl; - - cout << "Network caller line identification identification: " - << (m.getNetworkCLIP() ? "on" : "off") << endl << endl; - - cout << "Call forwarding information" << endl; - for (int r = 0; r < 4; ++r) - { - switch (r) - { - case 0: cout << "UnconditionalReason" << endl; break; - case 1: cout << "MobileBusyReason" << endl; break; - case 2: cout << "NoReplyReason" << endl; break; - case 3: cout << "NotReachableReason" << endl; break; - } - ForwardInfo voice, fax, data; - m.getCallForwardInfo((ForwardReason)r, voice, fax, data); - printForwardReason("Voice", voice); - printForwardReason("Data", data); - printForwardReason("Fax", fax); - } - cout << endl; - - cout << "Battery charge status" << endl; - int bcs = m.getBatteryChargeStatus(); - switch (bcs) - { - case 0: cout << "ME is powered by the battery" << endl; break; - case 1: cout << "ME has a battery connected, but is not powered by it" - << endl; break; - case 2: cout << "ME does not have a battery connected" << endl; break; - case 3: cout << "Recognized power fault, calls inhibited" << endl; break; - } - cout << endl; - - cout << "Battery charge: " << m.getBatteryCharge() << endl << endl; - - cout << "Signal strength: " << m.getSignalStrength() << endl << endl; - - cout << "Bit error rate: " << m.getBitErrorRate() << endl << endl; -#endif //NOTDEF - } - catch (GsmException &ge) - { - cerr << "GsmException '" << ge.what() << "'" << endl; - return 1; - } - - - return 0; -} - - From 15ca6301497228a3fa76f8aa33ec63a76be0c769 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 6 Apr 2012 22:50:12 +0200 Subject: [PATCH 080/630] gsmopen: getting rid of old stuff --- .../mod_gsmopen/{gsmopen_protocol.cpp => gsmopen_protocol.c} | 0 .../mod_gsmopen/{mod_gsmopen.cpp => mod_gsmopen.c} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/{gsmopen_protocol.cpp => gsmopen_protocol.c} (100%) rename src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/{mod_gsmopen.cpp => mod_gsmopen.c} (100%) diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c similarity index 100% rename from src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.cpp rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen_protocol.c diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c similarity index 100% rename from src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.cpp rename to src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c From 73b473c3672ba3adc47c2e53d97378ab071b306a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 6 Apr 2012 21:32:28 +0000 Subject: [PATCH 081/630] remove autogenerated file libs/ldns/install-sh Re-bootstrapping is needed after this change. Previously CentOS 5 systems wouldn't build correctly without this file in tree, but we've adjusted bootstrap to compensate. --- bootstrap.sh | 15 +- libs/.gitignore | 1 - libs/ldns/install-sh | 527 ------------------------------------------- 3 files changed, 8 insertions(+), 535 deletions(-) delete mode 100755 libs/ldns/install-sh diff --git a/bootstrap.sh b/bootstrap.sh index 17c52f386d..e0992e079b 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -389,18 +389,19 @@ bootstrap_fs() { bootstrap_libs_pre() { case "$1" in - ldns) - # This file shouldn't even be in the tree as it's autogenerated - # during bootstrap, but some people report it breaks the build - # if it's not there. Let's prevent it from getting accidentally - # updated. - (cd $BASEDIR/libs/ldns && cp -a install-sh install-sh~) ;; + *) return 0;; esac } bootstrap_libs_post() { case "$1" in - ldns) (cd $BASEDIR/libs/ldns && mv install-sh~ install-sh) ;; + ldns) + cd $BASEDIR/libs/ldns + if test ! -x install-sh; then + ex automake --add-missing --copy + ex rm -rf autom4te*.cache + fi + ;; esac } diff --git a/libs/.gitignore b/libs/.gitignore index e0fed1112a..e39b1f4bf1 100644 --- a/libs/.gitignore +++ b/libs/.gitignore @@ -887,7 +887,6 @@ missing !/ldns/drill/install-sh !/ldns/examples/config.h.in !/ldns/examples/configure -!/ldns/install-sh !/ldns/ldns/config.h.in !/libdingaling/config.guess !/libdingaling/config.sub diff --git a/libs/ldns/install-sh b/libs/ldns/install-sh deleted file mode 100755 index a9244eb078..0000000000 --- a/libs/ldns/install-sh +++ /dev/null @@ -1,527 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2011-01-19.21; # UTC - -# 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 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - 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 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - 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 - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 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 problematic for `test' and other utilities. - 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 - - # 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 X"$d" = X && 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-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: From 9966b3d46ae7f4c98df97f871e7af94b2479a957 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 8 Apr 2012 13:08:37 +0000 Subject: [PATCH 082/630] mod_alsa: fix segfault --- src/mod/endpoints/mod_alsa/mod_alsa.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/mod/endpoints/mod_alsa/mod_alsa.c b/src/mod/endpoints/mod_alsa/mod_alsa.c index 40c1362f3d..494a5bed31 100644 --- a/src/mod/endpoints/mod_alsa/mod_alsa.c +++ b/src/mod/endpoints/mod_alsa/mod_alsa.c @@ -748,14 +748,6 @@ static switch_io_routines_t channel_io_routines = { /*.receive_message */ channel_receive_message }; -static switch_endpoint_interface_t channel_endpoint_interface = { - /*.interface_name */ "alsa", - /*.io_routines */ &channel_io_routines, - /*.event_handlers */ &channel_event_handlers, - /*.private */ NULL, - /*.next */ NULL -}; - /* Make sure when you have 2 sessions in the same scope that you pass the appropriate one to the routines that allocate memory or you will have 1 channel with memory allocated from another channel's pool! @@ -766,7 +758,7 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi switch_call_cause_t *cancel_cause) { - if ((*new_session = switch_core_session_request(&channel_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, flags, pool)) != 0) { + if ((*new_session = switch_core_session_request(alsa_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, flags, pool)) != 0) { private_t *tech_pvt; switch_channel_t *channel; switch_caller_profile_t *caller_profile; @@ -1437,7 +1429,7 @@ static switch_status_t place_call(char **argv, int argc, switch_stream_handle_t } dest = argv[0]; - if ((session = switch_core_session_request(&channel_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL)) != 0) { + if ((session = switch_core_session_request(alsa_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL)) != 0) { private_t *tech_pvt; switch_channel_t *channel; char *dialplan = globals.dialplan; From 92e89cb4532913a3fd7a4888f8c94df379775cc3 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 8 Apr 2012 13:40:17 +0000 Subject: [PATCH 083/630] mod_alsa: fix module reload --- src/mod/endpoints/mod_alsa/mod_alsa.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_alsa/mod_alsa.c b/src/mod/endpoints/mod_alsa/mod_alsa.c index 494a5bed31..cadd560de4 100644 --- a/src/mod/endpoints/mod_alsa/mod_alsa.c +++ b/src/mod/endpoints/mod_alsa/mod_alsa.c @@ -948,6 +948,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_alsa_shutdown) } switch_core_hash_destroy(&globals.call_hash); + switch_event_free_subclass(MY_EVENT_RINGING); switch_safe_free(globals.dialplan); switch_safe_free(globals.cid_name); switch_safe_free(globals.cid_num); From 6f87ac55d6db945f7004b528ef8cb0f3e6c0c6f9 Mon Sep 17 00:00:00 2001 From: Mitch Capper Date: Sun, 8 Apr 2012 16:54:40 +0000 Subject: [PATCH 084/630] fs_cli: add batch mode Signed-off-by: Travis Cross --- libs/esl/fs_cli.c | 101 +++++++++++++++++++++++++++++++++------------- 1 file changed, 73 insertions(+), 28 deletions(-) diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c index 875b359ec3..408c946d29 100644 --- a/libs/esl/fs_cli.c +++ b/libs/esl/fs_cli.c @@ -57,6 +57,7 @@ typedef struct { const char *console_fnkeys[12]; char loglevel[128]; int quiet; + int batch_mode; char prompt_color[12]; char input_text_color[12]; char output_text_color[12]; @@ -108,6 +109,7 @@ static void sleep_s(int secs) { _sleep_ns(secs, 0); } static int process_command(esl_handle_t *handle, const char *cmd); static void clear_cli(void) { + if (global_profile->batch_mode) return; putchar('\r'); printf("\033[%dC", bare_prompt_str_len); printf("\033[K"); @@ -401,7 +403,9 @@ static BOOL console_readConsole(HANDLE conIn, char *buf, int len, int *pRed, int { DWORD recordIndex, bufferIndex, toRead, red; PINPUT_RECORD pInput; - GetNumberOfConsoleInputEvents(conIn, &toRead); + if (GetNumberOfConsoleInputEvents(conIn, &toRead) == 0) { + return(FALSE); + } if (len < (int)toRead) { toRead = len; } @@ -548,6 +552,7 @@ static const char *usage_str = " -r, --retry Retry connection on failure\n" " -R, --reconnect Reconnect if disconnected\n" " -d, --debug=level Debug Level (0 - 7)\n" + " -b, --batchmode Batch mode\n" " -t, --timeout Timeout for API commands (in miliseconds)\n\n"; static int usage(char *name){ @@ -597,6 +602,7 @@ static int write_char(int c) { #ifdef WIN32 static void clear_line(void) { + if (global_profile->batch_mode) return; putchar('\r'); printf("\033[K"); fflush(stdout); @@ -605,6 +611,7 @@ static void clear_line(void) #else static void clear_line(void) { + if (global_profile->batch_mode) return; if (!(write_char('\r'))) goto done; if (!(write_str("\033[K"))) goto done; done: @@ -617,6 +624,7 @@ static void redisplay(void) #ifndef WIN32 const LineInfo *lf = el_line(el); const char *c = lf->buffer; + if (global_profile->batch_mode) return; if (!(write_str(prompt_str))) goto done; while (c < lf->lastchar && *c) { if (!(write_char(*c))) goto done; @@ -642,7 +650,9 @@ static int output_printf(const char *fmt, ...) int r; va_start(ap, fmt); #ifndef WIN32 - printf("%s", output_text_color); + if (!(global_profile->batch_mode)) { + printf("%s", output_text_color); + } #endif r = vprintf(fmt, ap); va_end(ap); @@ -680,15 +690,23 @@ static void *msg_thread_run(esl_thread_t *me, void *obj) #ifndef WIN32 if (aok) { if (feature_level) clear_line(); - printf("%s%s", colors[level], handle->last_event->body); - if (!feature_level) printf("%s", ESL_SEQ_DEFAULT_COLOR); + if(!(global_profile->batch_mode)) { + printf("%s%s", colors[level], handle->last_event->body); + if (!feature_level) printf("%s", ESL_SEQ_DEFAULT_COLOR); + } else { + printf("%s", handle->last_event->body); + } if (feature_level) redisplay(); } #else if (aok) { - SetConsoleTextAttribute(hStdout, colors[level]); + if(!(global_profile->batch_mode)) { + SetConsoleTextAttribute(hStdout, colors[level]); + } WriteFile(hStdout, handle->last_event->body, len, &outbytes, NULL); - SetConsoleTextAttribute(hStdout, wOldColorAttrs); + if(!(global_profile->batch_mode)) { + SetConsoleTextAttribute(hStdout, wOldColorAttrs); + } } #endif } @@ -831,20 +849,27 @@ static int get_profile(const char *name, cli_profile_t **profile) return -1; } -#ifndef HAVE_EDITLINE static char command_buf[CMD_BUFLEN+1] = ""; static const char *basic_gets(int *cnt) { -#ifndef _MSC_VER int x = 0; +#ifdef _MSC_VER + int read, key; + char keys[CMD_BUFLEN]; + HANDLE stdinHandle; + if (global_profile->batch_mode) { +#endif printf("%s", prompt_str); + if (global_profile->batch_mode) fflush(stdout); memset(&command_buf, 0, sizeof(command_buf)); for (x = 0; x < (sizeof(command_buf) - 1); x++) { int c = getchar(); if (c < 0) { - int y = read(fileno(stdin), command_buf, sizeof(command_buf) - 1); - command_buf[y - 1] = '\0'; + if (fgets(command_buf, sizeof(command_buf) - 1, stdin) != command_buf) { + break; + } + command_buf[strlen(command_buf)-1] = '\0'; /* remove endline */ break; } command_buf[x] = (char) c; @@ -854,27 +879,28 @@ static const char *basic_gets(int *cnt) } } *cnt = x; -#else - int read, key; - char keys[CMD_BUFLEN]; - HANDLE stdinHandle = GetStdHandle(STD_INPUT_HANDLE); - console_bufferInput (0, 0, prompt_str, PROMPT_OP); - printf("%s", prompt_str); - *cnt = 0; - memset(&command_buf, 0, sizeof(command_buf)); - while (!*cnt) { - if (console_readConsole(stdinHandle, keys, (int)sizeof(keys), &read, &key)) { - *cnt = console_bufferInput(keys, read, command_buf, key); - if (!strcmp(command_buf, "Empty")) { - command_buf[0] = 0; +#ifdef _MSC_VER + } else { + stdinHandle = GetStdHandle(STD_INPUT_HANDLE); + console_bufferInput (0, 0, prompt_str, PROMPT_OP); + printf("%s", prompt_str); + if (global_profile->batch_mode) fflush(stdout); + *cnt = 0; + memset(&command_buf, 0, sizeof(command_buf)); + while (!*cnt) { + if (console_readConsole(stdinHandle, keys, (int)sizeof(keys), &read, &key)) { + *cnt = console_bufferInput(keys, read, command_buf, key); + if (global_profile->batch_mode) fflush(stdout); + if (!strcmp(command_buf, "Empty")) { + command_buf[0] = 0; + } } + sleep_ms(20); } - sleep_ms(20); } #endif return command_buf; } -#endif static const char *banner = " _____ ____ ____ _ ___ \n" @@ -1077,6 +1103,8 @@ static void read_config(const char *dft_cfile, const char *cfile) { if (pt > 0) { profiles[pcount-1].port = (esl_port_t)pt; } + } else if (!strcasecmp(var, "batchmode")) { + profiles[pcount-1].batch_mode = esl_true(val); } else if (!strcasecmp(var, "debug")) { int dt = atoi(val); if (dt > -1 && dt < 8){ @@ -1110,6 +1138,7 @@ static void clear_el_buffer(void) { #ifdef HAVE_EDITLINE const LineInfo *lf = el_line(el); int len = (int)(lf->lastchar - lf->buffer); + if (global_profile->batch_mode) return; el_deletestr(el, len); memset((char*)lf->buffer, 0, len); #endif @@ -1144,6 +1173,7 @@ int main(int argc, char *argv[]) {"execute", 1, 0, 'x'}, {"loglevel", 1, 0, 'l'}, {"quiet", 0, 0, 'q'}, + {"batchmode", 0, 0, 'b'}, {"retry", 0, 0, 'r'}, {"interrupt", 0, 0, 'i'}, {"reconnect", 0, 0, 'R'}, @@ -1164,6 +1194,7 @@ int main(int argc, char *argv[]) char argv_command[1024] = ""; char argv_loglevel[128] = ""; int argv_quiet = 0; + int argv_batch = 0; int loops = 2, reconnect = 0, timeout = 0; @@ -1195,7 +1226,7 @@ int main(int argc, char *argv[]) esl_global_set_default_logger(6); /* default debug level to 6 (info) */ for(;;) { int option_index = 0; - opt = getopt_long(argc, argv, "H:U:P:S:u:p:d:x:l:t:qrRhi?", options, &option_index); + opt = getopt_long(argc, argv, "H:U:P:S:u:p:d:x:l:t:qrRhib?", options, &option_index); if (opt == -1) break; switch (opt) { case 'H': @@ -1238,6 +1269,9 @@ int main(int argc, char *argv[]) case 'q': argv_quiet = 1; break; + case 'b': + argv_batch = 1; + break; case 'i': allow_ctl_c = 1; break; @@ -1288,6 +1322,10 @@ int main(int argc, char *argv[]) if (argv_pass) { esl_set_string(profile->pass, temp_pass); } + if (argv_batch || profile->batch_mode) { + profile->batch_mode = 1; + feature_level=0; + } if (*argv_loglevel) { esl_set_string(profile->loglevel, argv_loglevel); profile->quiet = 0; @@ -1428,15 +1466,22 @@ int main(int argc, char *argv[]) snprintf(cmd_str, sizeof(cmd_str), "log %s\n\n", profile->loglevel); esl_send_recv(&handle, cmd_str); } + if (global_profile->batch_mode) { + setvbuf(stdout, (char*)NULL, _IONBF, 0); + } print_banner(stdout); esl_log(ESL_LOG_INFO, "FS CLI Ready.\nenter /help for a list of commands.\n"); output_printf("%s\n", handle.last_sr_reply); while (running > 0) { int r; #ifdef HAVE_EDITLINE - line = el_gets(el, &count); -#else + if (!(global_profile->batch_mode)) { + line = el_gets(el, &count); + } else { +#endif line = basic_gets(&count); +#ifdef HAVE_EDITLINE + } #endif if (count > 1 && !esl_strlen_zero(line)) { char *p, *cmd = strdup(line); From cd8d4d68123e2aa1e9fbe28ac8da33fd2bd3c495 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 9 Apr 2012 13:30:51 -0500 Subject: [PATCH 085/630] RESOLVE FS-4081 --- src/mod/endpoints/mod_sofia/sofia.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 6a6e8294ed..212455d3a8 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2630,9 +2630,8 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag) gateway->register_url = switch_core_sprintf(gateway->pool, "sip:%s", proxy); } - gateway->register_from = switch_core_sprintf(gateway->pool, "", - from_user, !zstr(from_domain) ? from_domain : proxy, register_transport); - + gateway->register_from = switch_core_sprintf(gateway->pool, "", + from_user, !zstr(from_domain) ? from_domain : proxy); if (ping_freq) { if (ping_freq >= 5) { @@ -2640,10 +2639,8 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag) gateway->ping_max = ping_max; gateway->ping_min = ping_min; gateway->ping = switch_epoch_time_now(NULL) + ping_freq; - gateway->options_to_uri = switch_core_sprintf(gateway->pool, "", - !zstr(from_domain) ? from_domain : proxy, register_transport); - //gateway->options_from_uri = switch_core_sprintf(gateway->pool, "", - // profile->extrtpip ? profile->extrtpip : profile->sipip, register_transport); + gateway->options_to_uri = switch_core_sprintf(gateway->pool, "", + !zstr(from_domain) ? from_domain : proxy); gateway->options_from_uri = gateway->options_to_uri; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ERROR: invalid ping!\n"); From 983fda9a9309f3ad7a785925b23ed77cad9bb3c4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 9 Apr 2012 12:16:24 -0500 Subject: [PATCH 086/630] FS-4066 try this patch --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index e64f430af7..bdcbd3288f 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3901,7 +3901,7 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n event_type = sip_header_as_string(nh->nh_home, (void *) sip->sip_event); - if (count < 2) { + if (count != 1) { if ((sql = switch_mprintf("delete from sip_presence where sip_user='%q' and sip_host='%q' " " and profile_name='%q' and hostname='%q'", from_user, from_host, profile->name, mod_sofia_globals.hostname))) { From c5c4e3f2e4183b4d4b2e9506495fcce794f3f260 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 9 Apr 2012 12:24:36 -0500 Subject: [PATCH 087/630] FS-4073 --resolve --- src/mod/applications/mod_conference/mod_conference.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index e92971ab80..30c08e9944 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -83,7 +83,7 @@ static int EC = 0; /* the maximum value for the IIR score [keeps loud & longwinded people from getting overweighted] */ #define SCORE_MAX_IIR 25000 /* the minimum score for which you can be considered to be loud enough to now have the floor */ -#define SCORE_IIR_SPEAKING_MAX 3000 +#define SCORE_IIR_SPEAKING_MAX 300 /* the threshold below which you cede the floor to someone loud (see above value). */ #define SCORE_IIR_SPEAKING_MIN 100 From 9f6000a74e3a0b04751710399ad1c5fce7d7298b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 9 Apr 2012 12:31:48 -0500 Subject: [PATCH 088/630] FS-4090 --resolve --- src/mod/applications/mod_avmd/mod_avmd.c | 102 +++++++++++------------ 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index d0c9f6e419..58683b4587 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -59,13 +59,17 @@ #define TO_HZ(r, f) (((r) * (f)) / (2.0 * M_PI)) /*! Minimum beep frequency in Hertz */ #define MIN_FREQUENCY (300.0) +#define MIN_FREQUENCY_R(r) ((2.0 * M_PI * MIN_FREQUENCY) / (r)) /*! Maximum beep frequency in Hertz */ -#define MAX_FREQUENCY (1500.0) +#define MAX_FREQUENCY (2500.0) +#define MAX_FREQUENCY_R(r) ((2.0 * M_PI * MAX_FREQUENCY) / (r)) +/* decrease this value to eliminate false positives */ +#define VARIANCE_THRESHOLD (0.001) #include "amplitude.h" #include "buffer.h" #include "desa2.h" -#include "goertzel.h" +//#include "goertzel.h" #include "psi.h" #include "sma_buf.h" #include "options.h" @@ -111,7 +115,9 @@ typedef struct { uint32_t rate; circ_buffer_t b; sma_buffer_t sma_b; + sma_buffer_t sqa_b; size_t pos; + double f; /* freq_table_t ft; */ avmd_state_t state; } avmd_session_t; @@ -134,6 +140,7 @@ static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_se avmd_session->session = fs_session; avmd_session->pos = 0; + avmd_session->f = 0.0; avmd_session->state.last_beep = 0; avmd_session->state.beep_state = BEEP_NOTDETECTED; @@ -142,6 +149,12 @@ static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_se BEEP_LEN(avmd_session->rate) / SINE_LEN(avmd_session->rate), fs_session ); + + INIT_SMA_BUFFER( + &avmd_session->sqa_b, + BEEP_LEN(avmd_session->rate) / SINE_LEN(avmd_session->rate), + fs_session + ); } @@ -474,17 +487,18 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) circ_buffer_t *b; size_t pos; double f; - double a; - double error = 0.0; - double success = 0.0; - double amp = 0.0; - double s_rate; + double v; +// double error = 0.0; +// double success = 0.0; +// double amp = 0.0; +// double s_rate; // double e_rate; - double avg_a; +// double avg_a; double sine_len; uint32_t sine_len_i; - int valid; - + uint32_t beep_len_i; +// int valid; + b = &session->b; /*! If beep has already been detected skip the CPU heavy stuff */ @@ -495,56 +509,38 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) /*! Precompute values used heavily in the inner loop */ sine_len_i = SINE_LEN(session->rate); sine_len = (double)sine_len_i; - + beep_len_i = BEEP_LEN(session->rate); channel = switch_core_session_get_channel(session->session); /*! Insert frame of 16 bit samples into buffer */ INSERT_INT16_FRAME(b, (int16_t *)(frame->data), frame->samples); + //switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_INFO, "<<< AVMD sine_len_i=%d >>>\n", sine_len_i); + /*! INNER LOOP -- OPTIMIZATION TARGET */ - for(pos = GET_BACKLOG_POS(b); pos != (GET_CURRENT_POS(b) - P); pos++){ + for(pos = session->pos; pos < (GET_CURRENT_POS(b) - P); pos++){ + if ((pos % sine_len_i) == 0) { + /*! Get a desa2 frequency estimate every sine len */ + f = desa2(b, pos); - /*! Get a desa2 frequency estimate in Hertz */ - f = TO_HZ(session->rate, desa2(b, pos)); + if(f < MIN_FREQUENCY_R(session->rate) || f > MAX_FREQUENCY_R(session->rate)) { + v = 99999.0; + RESET_SMA_BUFFER(&session->sma_b); + RESET_SMA_BUFFER(&session->sqa_b); + } else { + APPEND_SMA_VAL(&session->sma_b, f); + APPEND_SMA_VAL(&session->sqa_b, f * f); + + /* calculate variance */ + v = session->sqa_b.sma - (session->sma_b.sma * session->sma_b.sma); - /*! Don't caculate amplitude if frequency is not within range */ - if(f < MIN_FREQUENCY || f > MAX_FREQUENCY) { - a = 0.0; - error += 1.0; - } else { - a = amplitude(b, pos, f); - success += 1.0; - if(!ISNAN(a)){ - amp += a; - } - } - - /*! Every once in a while we evaluate the desa2 and amplitude results */ - if(((pos + 1) % sine_len_i) == 0){ - s_rate = success / (error + success); -// e_rate = error / (error + success); - avg_a = amp / sine_len; + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_INFO, "<<< AVMD v=%f f=%f %fHz sma=%f sqa=%f >>>\n", v, f, TO_HZ(session->rate, f), session->sma_b.sma, session->sqa_b.sma); + } - /*! Results out of these ranges are considered invalid */ - valid = 0; - if( s_rate > 0.60 && avg_a > 0.50) valid = 1; - else if(s_rate > 0.65 && avg_a > 0.45) valid = 1; - else if(s_rate > 0.70 && avg_a > 0.40) valid = 1; - else if(s_rate > 0.80 && avg_a > 0.30) valid = 1; - else if(s_rate > 0.95 && avg_a > 0.05) valid = 1; - else if(s_rate >= 0.99 && avg_a > 0.04) valid = 1; - else if(s_rate == 1.00 && avg_a > 0.02) valid = 1; + /*! If variance is less than threshold then we have detection */ + if(v < VARIANCE_THRESHOLD){ - if(valid) { - APPEND_SMA_VAL(&session->sma_b, s_rate * avg_a); - } - else { - APPEND_SMA_VAL(&session->sma_b, 0.0 ); - } - - /*! If sma is higher then 0 we have some kind of detection (increase this value to eliminate false positives ex: 0.01) */ - if(session->sma_b.sma > 0.00){ /*! Throw an event to FreeSWITCH */ status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, AVMD_EVENT_BEEP); if(status != SWITCH_STATUS_SUCCESS) { @@ -565,16 +561,18 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected >>>\n"); switch_channel_set_variable(channel, "avmd_detect", "TRUE"); RESET_SMA_BUFFER(&session->sma_b); + RESET_SMA_BUFFER(&session->sqa_b); session->state.beep_state = BEEP_DETECTED; return; } - amp = 0.0; - success = 0.0; - error = 0.0; + //amp = 0.0; + //success = 0.0; + //error = 0.0; } } + session->pos = pos; } /* For Emacs: From 0b992a2bd20feac8619ecaff8e7de3d4e143f8bf Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 9 Apr 2012 12:35:26 -0500 Subject: [PATCH 089/630] FS-4089 --resolve --- src/switch_ivr_originate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index f3223723e9..9a25903987 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1931,6 +1931,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess ok = 1; } else if (!strcasecmp((char *) hi->name, "group_confirm_file")) { ok = 1; + } else if (!strcasecmp((char *) hi->name, "group_confirm_read_timeout")) { + ok = 1; } else if (!strcasecmp((char *) hi->name, "group_confirm_cancel_timeout")) { ok = 1; } else if (!strcasecmp((char *) hi->name, "forked_dial")) { From 3d283accf25af79121f526fe1952d445b094f6eb Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 9 Apr 2012 12:41:11 -0500 Subject: [PATCH 090/630] FS-4087 --resolve --- src/mod/applications/mod_voicemail/mod_voicemail.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index 55a25c1f2d..968a9d57f7 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -2583,8 +2583,6 @@ static switch_status_t deliver_vm(vm_profile_t *profile, switch_status_t ret = SWITCH_STATUS_SUCCESS; char *convert_cmd = profile->convert_cmd; char *convert_ext = profile->convert_ext; - int del_file = 0; - if (!params) { switch_event_create(&local_event, SWITCH_EVENT_REQUEST_PARAMS); @@ -2901,10 +2899,6 @@ static switch_status_t deliver_vm(vm_profile_t *profile, switch_safe_free(headers); } } - - if (!insert_db) { - del_file = 1; - } } if (session) { @@ -2926,7 +2920,7 @@ static switch_status_t deliver_vm(vm_profile_t *profile, failed: - if (del_file && file_path && switch_file_exists(file_path, pool)) { + if (!insert_db && file_path && switch_file_exists(file_path, pool) == SWITCH_STATUS_SUCCESS) { if (unlink(file_path) != 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to delete file [%s]\n", file_path); } From cecaa556c39c6de409a52868513f4c0b8378a9f6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 9 Apr 2012 12:42:14 -0500 Subject: [PATCH 091/630] switch_file_exists returns switch_status_t so you cannot assume it returns a true value since success is 0 --- src/mod/applications/mod_httapi/mod_httapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index 2c93cf02bd..3db9c3fb04 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -1324,7 +1324,7 @@ static void cleanup_attachments(client_t *client) for (hp = client->params->headers; hp; hp = hp->next) { if (!strncasecmp(hp->name, "attach_file:", 12)) { - if (switch_file_exists(hp->value, client->pool)) { + if (switch_file_exists(hp->value, client->pool) == SWITCH_STATUS_SUCCESS) { printf("DELETE %s\n", hp->value); unlink(hp->value); } From b544f60b38db9d70d0920b62fbd196bbe7cb92bf Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 9 Apr 2012 21:41:19 -0500 Subject: [PATCH 092/630] add checks during configure for zlib and libjpeg, abort configure with error if not found --- configure.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 3df878551d..4228883fd3 100644 --- a/configure.in +++ b/configure.in @@ -398,11 +398,13 @@ AC_ARG_ENABLE(timerfd-wrapper, AM_CONDITIONAL([ENABLE_TIMERFD_WRAPPER],[test "x$enable_timer_fd_wrapper" != "xno"]) -AC_CHECK_LIB(z, inflateReset, have_libz=yes, have_libz=no) +AC_CHECK_LIB(z, inflateReset, have_libz=yes, AC_MSG_ERROR([no usable zlib; please install zlib devel package or equivalent])) if test "x$have_libz" = "xyes" ; then APR_ADDTO(SWITCH_AM_LDFLAGS, -lz) fi +AC_CHECK_LIB(jpeg, jpeg_std_error,, AC_MSG_ERROR([no usable libjpeg; please install libjpeg devel package or equivalent])) + AC_CHECK_LIB(resolv, res_init, have_libresolv=yes, have_libresolv=no) if test "x$have_libresolv" = "xyes" ; then APR_ADDTO(SWITCH_AM_LDFLAGS, -lresolv) From 599f7c3a456a21ca0f42db05d64cd4809e4ab0ea Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 10 Apr 2012 13:18:49 +0200 Subject: [PATCH 093/630] gsmopen: cleaning write-read frame --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 61 ++++++------------- 1 file changed, 17 insertions(+), 44 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index e1afc59e96..62aeba9a13 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -712,12 +712,12 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_core_timer_next(&tech_pvt->timer_read); - if (tech_pvt->no_sound == 1) { + if (tech_pvt->no_sound) { goto cng; } -// if ((samples = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0) + samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640); - if ((samples = tech_pvt->serialPort_serial_audio->Read(buffer2, 640)) >= 320) { + if (samples >= 320) { tech_pvt->buffer2_full = 0; if (samples >= 640) { @@ -726,20 +726,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch tech_pvt->buffer2_full = 1; } samples = 320; - memcpy(tech_pvt->read_frame.data, buffer2, 320); - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples / 2; - - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; - - *frame = &tech_pvt->read_frame; - - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); } else { DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); if (tech_pvt->buffer2_full) { @@ -747,35 +734,24 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch tech_pvt->buffer2_full = 0; samples = 320; DEBUGA_GSMOPEN("samples=%d FROM BUFFER\n", GSMOPEN_P_LOG, samples); - - tech_pvt->read_frame.datalen = samples; - tech_pvt->read_frame.samples = samples / 2; - - tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; - - *frame = &tech_pvt->read_frame; - - //if ((samples2 = tech_pvt->serialPort_serial_audio->Read((char *) tech_pvt->read_frame.data, 320)) >0){ - // WARNINGA("samples2=%d\n", GSMOPEN_P_LOG, samples2); - //} - //status = SWITCH_STATUS_SUCCESS; - switch_set_flag(tech_pvt, TFLAG_VOICE); } } - //WARNINGA("samples=%d\n", GSMOPEN_P_LOG, samples); + + tech_pvt->read_frame.datalen = samples; + tech_pvt->read_frame.samples = samples / 2; + tech_pvt->read_frame.timestamp = tech_pvt->timer_read.samplecount; + + *frame = &tech_pvt->read_frame; + + switch_set_flag(tech_pvt, TFLAG_VOICE); + if (samples != 320) { DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); goto cng; } -//DEBUGA_GSMOPEN("samples=%d tech_pvt->read_frame.timestamp=%d\n", GSMOPEN_P_LOG, samples, tech_pvt->read_frame.timestamp); - -//usleep(17000); -//usleep(17000); memset(digit_str, 0, sizeof(digit_str)); - //teletone_dtmf_detect(&tech_pvt->dtmf_detect, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); - //teletone_dtmf_get(&tech_pvt->dtmf_detect, digit_str, sizeof(digit_str)); dtmf_rx(&tech_pvt->dtmf_state, (int16_t *) tech_pvt->read_frame.data, tech_pvt->read_frame.samples); dtmf_rx_get(&tech_pvt->dtmf_state, digit_str, sizeof(digit_str)); @@ -875,17 +851,14 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc #endif //switch_core_timer_next(&tech_pvt->timer_write); - //sent = frame->datalen; - - //ERRORA("PLAY \n", GSMOPEN_P_LOG); - gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); - sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); + if(!tech_pvt->no_sound){ + sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); - if (sent && sent != frame->datalen && sent != -1) { - DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); + if (sent && sent != frame->datalen && sent != -1) { + DEBUGA_GSMOPEN("sent %d\n", GSMOPEN_P_LOG, sent); + } } - //NOTICA("sent=%d\n", GSMOPEN_P_LOG, sent); return SWITCH_STATUS_SUCCESS; } From 1247a64794928b1ffa1290b1c7e399d5f432cf40 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 10 Apr 2012 13:37:27 +0200 Subject: [PATCH 094/630] skypopen: updating link to skype client in install.pl, now is http://mirrors.kernel.org/archlinux/community/os/i686/skype-oss-2.0.0.72-3-i686.pkg.tar.xz --- src/mod/endpoints/mod_skypopen/install/install.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_skypopen/install/install.pl b/src/mod/endpoints/mod_skypopen/install/install.pl index f4c04f3aef..20de07e2eb 100755 --- a/src/mod/endpoints/mod_skypopen/install/install.pl +++ b/src/mod/endpoints/mod_skypopen/install/install.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl my $myname ; -my $skype_download_url = "http://mirrors.kernel.org/archlinux/community/os/i686/skype-oss-2.0.0.72-2-i686.pkg.tar.gz"; -my $skype_download_pkg = "skype-oss-2.0.0.72-2-i686.pkg.tar.gz"; +my $skype_download_url = "http://mirrors.kernel.org/archlinux/community/os/i686/skype-oss-2.0.0.72-3-i686.pkg.tar.xz"; +my $skype_download_pkg = "skype-oss-2.0.0.72-3-i686.pkg.tar.xz"; my $skype_binary_dir = "/usr/bin"; my $skype_download_dir = "/tmp/skype_download"; my $skype_share_dir = "/usr/share/skype"; @@ -203,7 +203,7 @@ printf("\n"); system("mkdir -p $skype_download_dir"); system("cd $skype_download_dir ; wget -c $skype_download_url"); -system("cd $skype_download_dir ; tar -xzf $skype_download_pkg"); +system("cd $skype_download_dir ; tar -xJf $skype_download_pkg"); system("mkdir -p $skype_binary_dir"); system("cd $skype_download_dir/usr/bin ; cp skype $skype_binary_dir/"); From 06450692da2638d29275da2bae9a3b5a73edd054 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 10 Apr 2012 14:44:02 +0200 Subject: [PATCH 095/630] gsmopen: removing whard wired paths --- .../mod_gsmopen/gsmopen_protocol.cpp | 107 +++--------------- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 2 +- 2 files changed, 15 insertions(+), 94 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 681c56fde6..c1a195c187 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -60,95 +60,14 @@ int gsmopen_serial_init(private_t *tech_pvt, int controldevice_speed) tech_pvt->serialPort_serial_control = new ctb::SerialPort(); - //if( tech_pvt->serialPort_serial_control->Open( "COM9", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { - if (tech_pvt->serialPort_serial_control->Open("/dev/ttyUSB3", 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) { - ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); + if (tech_pvt->serialPort_serial_control->Open(tech_pvt->controldevice_name, 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) { + DEBUGA_GSMOPEN("port %s, SUCCESS open\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); } else { - ERRORA("port NOT open\n", GSMOPEN_P_LOG); + ERRORA("port %s, NOT open\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + return -1; } return 0; -#ifdef NOTDEF - - int fd; - int rt; - struct termios tp; - unsigned int status = 0; - unsigned int flags = TIOCM_DTR; - -/* if there is a file descriptor, close it. But it is probably just an old value, so don't check for close success*/ - fd = tech_pvt->controldevfd; - if (fd) { - close(fd); - } -/* open the serial port */ -//#ifdef __CYGWIN__ - fd = open(tech_pvt->controldevice_name, O_RDWR | O_NOCTTY | O_NONBLOCK); - sleep(1); - close(fd); -//#endif /* __CYGWIN__ */ - fd = open(tech_pvt->controldevice_name, O_RDWR | O_NOCTTY | O_NONBLOCK); - if (fd == -1) { - perror("open error "); - DEBUGA_GSMOPEN("serial error: %s\n", GSMOPEN_P_LOG, strerror(errno)); - tech_pvt->controldevfd = fd; - return -1; - } -/* flush it */ - rt = tcflush(fd, TCIFLUSH); - if (rt == -1) { - ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -/* attributes */ - tp.c_cflag = B0 | CS8 | CLOCAL | CREAD | HUPCL; - tp.c_iflag = IGNPAR; - tp.c_cflag &= ~CRTSCTS; - tp.c_oflag = 0; - tp.c_lflag = 0; - tp.c_cc[VMIN] = 1; - tp.c_cc[VTIME] = 0; -/* set controldevice_speed */ - rt = cfsetispeed(&tp, tech_pvt->controldevice_speed); - if (rt == -1) { - ERRORA("serial error: %s, speed was: %d", GSMOPEN_P_LOG, strerror(errno), tech_pvt->controldevice_speed); - } - rt = cfsetospeed(&tp, tech_pvt->controldevice_speed); - if (rt == -1) { - ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -/* set port attributes */ - if (tcsetattr(fd, TCSADRAIN, &tp) == -1) { - ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } - rt = tcsetattr(fd, TCSANOW, &tp); - if (rt == -1) { - ERRORA("serial error: %s", GSMOPEN_P_LOG, strerror(errno)); - } -#ifndef __CYGWIN__ - ioctl(fd, TIOCMGET, &status); - status |= TIOCM_DTR; /* Set DTR high */ - status &= ~TIOCM_RTS; /* Set RTS low */ - ioctl(fd, TIOCMSET, &status); - ioctl(fd, TIOCMGET, &status); - ioctl(fd, TIOCMBIS, &flags); - flags = TIOCM_RTS; - ioctl(fd, TIOCMBIC, &flags); - ioctl(fd, TIOCMGET, &status); -#else /* __CYGWIN__ */ - ioctl(fd, TIOCMGET, &status); - status |= TIOCM_DTR; /* Set DTR high */ - status &= ~TIOCM_RTS; /* Set RTS low */ - ioctl(fd, TIOCMSET, &status); -#endif /* __CYGWIN__ */ - tech_pvt->controldevfd = fd; - DEBUGA_GSMOPEN("Syncing Serial, fd=%d, protocol=%d\n", GSMOPEN_P_LOG, fd, tech_pvt->controldevprotocol); - rt = gsmopen_serial_sync(tech_pvt); - if (rt == -1) { - ERRORA("Serial init error\n", GSMOPEN_P_LOG); - return -1; - } - return (fd); -#endif // NOTDEF } int gsmopen_serial_read(private_t *tech_pvt) @@ -215,8 +134,9 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) char trash[4096]; res = tech_pvt->serialPort_serial_control->Read(trash, 4096); - if (res) - ERRORA("READ %d on serialport init\n", GSMOPEN_P_LOG, res); + if (res){ + DEBUGA_GSMOPEN("READ %d on serialport init\n", GSMOPEN_P_LOG, res); + } res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); if (res) { @@ -404,7 +324,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG); tech_pvt->no_ucs2 = 1; } -#ifdef NOTDEF //GSMLIB? +#ifdef NOTDEF //GSMLIB? XXX if (tech_pvt->no_ucs2) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); if (res) { @@ -2840,10 +2760,11 @@ int gsmopen_serial_init_audio_port(private_t *tech_pvt, int controldevice_audio_ tech_pvt->serialPort_serial_audio = new ctb::SerialPort(); //if( tech_pvt->serialPort_serial_audio->Open( "COM8", 115200, "8N1", ctb::SerialPort::NoFlowControl ) >= 0 ) { - if (tech_pvt->serialPort_serial_audio->Open("/dev/ttyUSB2", 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) { - ERRORA("port SUCCESS open\n", GSMOPEN_P_LOG); + if (tech_pvt->serialPort_serial_audio->Open(tech_pvt->controldevice_audio_name, 115200, "8N1", ctb::SerialPort::NoFlowControl) >= 0) { + DEBUGA_GSMOPEN("port %s, SUCCESS open\n", GSMOPEN_P_LOG, tech_pvt->controldevice_audio_name); } else { - ERRORA("port NOT open\n", GSMOPEN_P_LOG); + ERRORA("port %s, NOT open\n", GSMOPEN_P_LOG, tech_pvt->controldevice_audio_name); + return -1; } return 0; @@ -2855,7 +2776,7 @@ int serial_audio_init(private_t *tech_pvt) int err; res = gsmopen_serial_init_audio_port(tech_pvt, tech_pvt->controldevice_audio_speed); - ERRORA("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res); + DEBUGA_GSMOPEN("serial_audio_init res=%d\n", GSMOPEN_P_LOG, res); if (res == 0) err = 0; @@ -2872,7 +2793,7 @@ int serial_audio_shutdown(private_t *tech_pvt) int err; res = tech_pvt->serialPort_serial_audio->Close(); - ERRORA("serial_audio_shutdown res=%d (controldev_audio_fd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldev_audio_fd); + DEBUGA_GSMOPEN("serial_audio_shutdown res=%d (controldev_audio_fd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldev_audio_fd); err = res; return err; diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 62aeba9a13..a04335a3a3 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1156,7 +1156,7 @@ static switch_status_t load_config(int reload_type) const char *context = "default"; const char *dialplan = "XML"; const char *destination = "5000"; - const char *controldevice_name = "/dev/ttyACM0"; + const char *controldevice_name = "/dev/ttyUSB3"; const char *controldevice_audio_name = "/dev/ttyUSB2"; char *digit_timeout = NULL; char *max_digits = NULL; From bcc25a48dc11fbf7935914a24246d24cb5ed6f23 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 10 Apr 2012 14:54:40 +0200 Subject: [PATCH 096/630] gsmopen: cosmetic --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index a04335a3a3..8a7a2c41e4 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -721,14 +721,14 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch tech_pvt->buffer2_full = 0; if (samples >= 640) { - DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + DEBUGA_GSMOPEN("read more than 320, samples=%d\n", GSMOPEN_P_LOG, samples); memcpy(tech_pvt->buffer2, buffer2 + 320, 320); tech_pvt->buffer2_full = 1; } samples = 320; memcpy(tech_pvt->read_frame.data, buffer2, 320); } else { - DEBUGA_GSMOPEN("MINGA samples=%d\n", GSMOPEN_P_LOG, samples); + DEBUGA_GSMOPEN("read less than 320, samples=%d\n", GSMOPEN_P_LOG, samples); if (tech_pvt->buffer2_full) { memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); tech_pvt->buffer2_full = 0; @@ -747,7 +747,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_set_flag(tech_pvt, TFLAG_VOICE); if (samples != 320) { - DEBUGA_GSMOPEN("samples=%d\n", GSMOPEN_P_LOG, samples); + DEBUGA_GSMOPEN("samples=%d, goto cng\n", GSMOPEN_P_LOG, samples); goto cng; } From fa011be52320238baef899f33ae602aba7a67862 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 08:03:19 -0500 Subject: [PATCH 097/630] FS-4072 --resolve --- .../applications/mod_conference/mod_conference.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 30c08e9944..549269ff68 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -174,7 +174,8 @@ typedef enum { CFLAG_INHASH = (1 << 11), CFLAG_EXIT_SOUND = (1 << 12), CFLAG_ENTER_SOUND = (1 << 13), - CFLAG_VIDEO_BRIDGE = (1 << 14) + CFLAG_VIDEO_BRIDGE = (1 << 14), + CFLAG_AUDIO_ALWAYS = (1 << 15) } conf_flag_t; typedef enum { @@ -2670,8 +2671,8 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v } /* skip frames that are not actual media or when we are muted or silent */ - if ((switch_test_flag(member, MFLAG_TALKING) || member->energy_level == 0) && switch_test_flag(member, MFLAG_CAN_SPEAK) && - !switch_test_flag(member->conference, CFLAG_WAIT_MOD)) { + if ((switch_test_flag(member, MFLAG_TALKING) || member->energy_level == 0 || switch_test_flag(member->conference, CFLAG_AUDIO_ALWAYS)) + && switch_test_flag(member, MFLAG_CAN_SPEAK) && !switch_test_flag(member->conference, CFLAG_WAIT_MOD)) { switch_audio_resampler_t *read_resampler = member->read_resampler; void *data; uint32_t datalen; @@ -4426,6 +4427,10 @@ static void conference_xlist(conference_obj_t *conference, switch_xml_t x_confer switch_xml_set_attr_d(x_conference, "wait_mod", "true"); } + if (switch_test_flag(conference, CFLAG_AUDIO_ALWAYS)) { + switch_xml_set_attr_d(x_conference, "audio_always", "true"); + } + if (switch_test_flag(conference, CFLAG_RUNNING)) { switch_xml_set_attr_d(x_conference, "running", "true"); } @@ -5962,6 +5967,8 @@ static void set_cflags(const char *flags, uint32_t *f) *f |= CFLAG_VID_FLOOR; } else if (!strcasecmp(argv[i], "video-bridge")) { *f |= CFLAG_VIDEO_BRIDGE; + } else if (!strcasecmp(argv[i], "audio-always")) { + *f |= CFLAG_AUDIO_ALWAYS; } } From e31389ac9c4a3536bbc55fde4e0af641705b8109 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 08:05:09 -0500 Subject: [PATCH 098/630] FS-4097 --resolve --- src/switch_utils.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/switch_utils.c b/src/switch_utils.c index 4edd9c8a68..0eccf2a67b 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -758,10 +758,6 @@ SWITCH_DECLARE(switch_bool_t) switch_simple_email(const char *to, rval = SWITCH_FALSE; } - if (unlink(filename) != 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to delete file [%s]\n", filename); - } - if (zstr(err)) { if (file) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Emailed file [%s] to [%s]\n", filename, to); @@ -777,6 +773,11 @@ SWITCH_DECLARE(switch_bool_t) switch_simple_email(const char *to, if (fd > -1) { close(fd); } + + if (unlink(filename) != 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to delete file [%s]\n", filename); + } + if (ifd > -1) { close(ifd); } From d3d83ad87e524d3133da4ec6b0af0b1e65183a0c Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 10 Apr 2012 15:38:53 +0200 Subject: [PATCH 099/630] gsmopen: config file --- .../endpoints/mod_gsmopen/configs/gsmopen.conf.xml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml b/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml index 73cbf2cae2..e4f2b08747 100644 --- a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml +++ b/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml @@ -4,18 +4,13 @@ - + - - - - - - - + + From 759262c749234eaeea23023ee1111001026034f7 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 08:55:56 -0500 Subject: [PATCH 100/630] tweak to uuid field in fifo event --- src/mod/applications/mod_fifo/mod_fifo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c index d126f86d32..3d99740e68 100644 --- a/src/mod/applications/mod_fifo/mod_fifo.c +++ b/src/mod/applications/mod_fifo/mod_fifo.c @@ -1121,7 +1121,7 @@ static switch_status_t messagehook (switch_core_session_t *session, switch_core_ "(fifo_name,caller_uuid,caller_caller_id_name,caller_caller_id_number,consumer_uuid,consumer_outgoing_uuid,bridge_start) " "values ('%q','%q','%q','%q','%q','%q',%ld)", MANUAL_QUEUE_NAME, - "N/A", + (msg->string_arg && strchr(msg->string_arg, '-')) ? msg->string_arg : "00000000-0000-0000-0000-000000000000", ced_name, ced_number, switch_core_session_get_uuid(session), From c0b69c415ccd5c0d5c1b0088976311e998933ff2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 09:59:56 -0500 Subject: [PATCH 101/630] FS-4096 --resolve --- src/switch_ivr.c | 2 +- src/switch_ivr_async.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 1814fb70e4..0c30c91e9e 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -264,7 +264,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session, if (args->input_callback) { status = args->input_callback(session, (void *) &dtmf, SWITCH_INPUT_TYPE_DTMF, args->buf, args->buflen); } else if (args->buf) { - switch_copy_string((char *) args->buf, (void *) &dtmf, args->buflen); + *((char *) args->buf) = dtmf.digit; status = SWITCH_STATUS_BREAK; } } diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 17aac4a63f..49d14aa3bc 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -644,7 +644,7 @@ SWITCH_DECLARE(void) switch_ivr_session_echo(switch_core_session_t *session, swi if (args->input_callback) { status = args->input_callback(session, (void *) &dtmf, SWITCH_INPUT_TYPE_DTMF, args->buf, args->buflen); } else { - switch_copy_string((char *) args->buf, (void *) &dtmf, args->buflen); + *((char *) args->buf) = dtmf.digit; status = SWITCH_STATUS_BREAK; } } From 04a368848cc7eb912c9e9c9f3c813546e951f677 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 10:03:42 -0500 Subject: [PATCH 102/630] FS-4094 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index bdcbd3288f..4a9c89c203 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2647,7 +2647,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (!zstr(astate) && !zstr(uuid) && helper && helper->stream.data && strcmp(helper->last_uuid, uuid) && strcasecmp(astate, "terminated") && strchr(uuid, '-')) { helper->stream.write_function(&helper->stream, "update sip_dialogs set state='%s' where hostname='%q' and profile_name='%q' and uuid='%s';", - mod_sofia_globals.hostname, profile->name, astate, uuid); + astate, mod_sofia_globals.hostname, profile->name, uuid); switch_copy_string(helper->last_uuid, uuid, sizeof(helper->last_uuid)); } @@ -2778,8 +2778,8 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (!zstr(uuid) && strchr(uuid, '-') && !zstr(status_line) && !zstr(rpid) && (zstr(register_source) || strcasecmp(register_source, "register"))) { char *sql = switch_mprintf("update sip_dialogs set rpid='%q',status='%q' where hostname='%q' and profile_name='%q' and uuid='%q'", - mod_sofia_globals.hostname, profile->name, - rpid, status_line, uuid); + rpid, status_line, + mod_sofia_globals.hostname, profile->name, uuid); sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); } } @@ -3588,8 +3588,8 @@ void sofia_presence_handle_sip_i_subscribe(int status, " from sip_subscriptions where hostname='%q' and profile_name='%q' and " "event='message-summary' and sip_user='%q' " "and (sip_host='%q' or presence_hosts like '%%%q%%')", - mod_sofia_globals.hostname, profile->name, - to_host, to_user, to_host, to_host))) { + to_host, mod_sofia_globals.hostname, profile->name, + to_user, to_host, to_host))) { sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_sub_reg_callback, profile); switch_safe_free(sql); From d4116bb615cc46031586adcaa56210d232009013 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 10:15:15 -0500 Subject: [PATCH 103/630] FS-4098 try this patch and see if you get the new error, it may mean the file is not seekable or has been deleted --- src/switch_ivr_originate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 9a25903987..35091da9a0 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -997,6 +997,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_answer(switch_core_session_t switch_core_file_seek(ringback.fh, &pos, 0, SEEK_SET); switch_core_file_read(ringback.fh, write_frame.data, &olen); if (olen == 0) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(caller_channel), SWITCH_LOG_ERROR, + "Failure to read or re-read after seeking to beginning on file [%s]\n", ringback.fh->file_path); break; } } From 0ec0f08dc2cd9fd79e70fb1aef3af925a293a9bf Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 10 Apr 2012 12:21:21 -0500 Subject: [PATCH 104/630] add make and awk checks to bootstrap.sh --- bootstrap.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/bootstrap.sh b/bootstrap.sh index e0992e079b..a5658853fb 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -186,6 +186,51 @@ check_libtoolize() { fi } +check_make() { + # + # Check to make sure we have GNU Make installed + # + + make=`which make` + if [ -x "$make" ]; then + make_version=`$make --version | grep GNU` + if [ $? -ne 0 ]; then + make=`which gmake` + if [ -x "$make" ]; then + make_version=`$make --version | grep GNU` + if [ $? -ne 0 ]; then + echo "GNU Make does not exist or is not executable" + exit 1; + fi + fi + fi + fi +} + + +check_awk() { + # + # Check to make sure we have GNU Make installed + # + + awk=`which awk` + if [ -x "$awk" ]; then + awk_version=`$awk --version | head -n 1 |grep GNU` + if [ $? -ne 0 ]; then + awk=`which gawk` + if [ -x "$awk" ]; then + awk_version=`$awk --version | head -n 1 |grep GNU` + if [ $? -ne 0 ]; then + echo "GNU awk does not exist or is not executable" + exit 1; + fi + fi + fi + fi +} + + + print_autotools_vers() { # # Info output @@ -196,6 +241,8 @@ print_autotools_vers() { echo " aclocal : ${ACLOCAL:-`which aclocal`}" echo " libtool : ${libtool} (${lt_version})" echo " libtoolize: ${libtoolize}" + echo " make : ${make} (${make_version})" + echo " awk : ${awk} (${awk_version})" echo } @@ -426,6 +473,8 @@ bootstrap_libs() { run() { setup_modules setup_gnu + check_make + check_awk check_ac_ver check_am_ver check_acl_ver From 94d47061c34a266f449a62db8fe39b2eaf336715 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 12:37:41 -0500 Subject: [PATCH 105/630] FS-4077 --resolve actually it was introduced by 2b6aa7fd04cff3eeabd183833cab0fcebe947e9f and should be fine now --- src/mod/languages/mod_lua/mod_lua.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp index 1a2814a801..046bf351dc 100644 --- a/src/mod/languages/mod_lua/mod_lua.cpp +++ b/src/mod/languages/mod_lua/mod_lua.cpp @@ -122,7 +122,7 @@ static lua_State *lua_init(void) luaopen_freeswitch(L); lua_gc(L, LUA_GCRESTART, 0); lua_atpanic(L, panic); - error = luaL_loadbuffer(L, buff, strlen(buff), "line") || docall(L, 0, 1, 0); + error = luaL_loadbuffer(L, buff, strlen(buff), "line") || docall(L, 0, 0, 0); } return L; } @@ -141,10 +141,10 @@ static int lua_parse_and_execute(lua_State * L, char *input_code) if (*input_code == '~') { char *buff = input_code + 1; - error = luaL_loadbuffer(L, buff, strlen(buff), "line") || docall(L, 0, 1, 0); //lua_pcall(L, 0, 0, 0); + error = luaL_loadbuffer(L, buff, strlen(buff), "line") || docall(L, 0, 0, 0); //lua_pcall(L, 0, 0, 0); } else if (!strncasecmp(input_code, "#!/lua", 6)) { char *buff = input_code + 6; - error = luaL_loadbuffer(L, buff, strlen(buff), "line") || docall(L, 0, 1, 0); //lua_pcall(L, 0, 0, 0); + error = luaL_loadbuffer(L, buff, strlen(buff), "line") || docall(L, 0, 0, 0); //lua_pcall(L, 0, 0, 0); } else { char *args = strchr(input_code, ' '); if (args) { @@ -168,14 +168,14 @@ static int lua_parse_and_execute(lua_State * L, char *input_code) } if (code) { - error = luaL_loadbuffer(L, code, strlen(code), "line") || docall(L, 0, 1, 0); + error = luaL_loadbuffer(L, code, strlen(code), "line") || docall(L, 0, 0, 0); switch_safe_free(code); } } else { // Force empty argv table char *code = NULL; code = switch_mprintf("argv = {[0]='%s'};", input_code); - error = luaL_loadbuffer(L, code, strlen(code), "line") || docall(L, 0, 1, 0); + error = luaL_loadbuffer(L, code, strlen(code), "line") || docall(L, 0, 0, 0); switch_safe_free(code); } From b3fd3bfd68b4c8b9c9d05830bf178d101250210f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 12:39:00 -0500 Subject: [PATCH 106/630] FS-4069 --resolve --- src/mod/applications/mod_voicemail/mod_voicemail.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index 968a9d57f7..0fe46155bc 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -629,6 +629,7 @@ vm_profile_t *profile_set_config(vm_profile_t *profile) SWITCH_CONFIG_SET_ITEM(profile->config[i++], "email_date-fmt", SWITCH_CONFIG_STRING, CONFIG_RELOADABLE, &profile->date_fmt, "%A, %B %d %Y, %I:%M %p", &profile->config_str_pool, NULL, NULL); SWITCH_CONFIG_SET_ITEM(profile->config[i++], "odbc-dsn", SWITCH_CONFIG_STRING, 0, &profile->odbc_dsn, NULL, &profile->config_str_pool, NULL, NULL); + SWITCH_CONFIG_SET_ITEM(profile->config[i++], "dbname", SWITCH_CONFIG_STRING, 0, &profile->dbname, NULL, &profile->config_str_pool, NULL, NULL); SWITCH_CONFIG_SET_ITEM_CALLBACK(profile->config[i++], "email_template-file", SWITCH_CONFIG_CUSTOM, CONFIG_RELOADABLE, NULL, NULL, profile, vm_config_email_callback, NULL, NULL); SWITCH_CONFIG_SET_ITEM_CALLBACK(profile->config[i++], "email_notify-template-file", SWITCH_CONFIG_CUSTOM, CONFIG_RELOADABLE, @@ -722,7 +723,9 @@ static vm_profile_t *load_profile(const char *profile_name) } } - profile->dbname = switch_core_sprintf(profile->pool, "voicemail_%s", profile_name); + if (zstr(profile->dbname)) { + profile->dbname = switch_core_sprintf(profile->pool, "voicemail_%s", profile_name); + } if (!(dbh = vm_get_db_handle(profile))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot open DB!\n"); From 69f7ebd97d70e6f56a125d61276bfcf5124d6d4c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 12:46:16 -0500 Subject: [PATCH 107/630] FS-4088 --resolve --- .../mod_conference/conf/autoload_configs/conference.conf.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml index 5a906f91cd..30e298a09c 100644 --- a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml +++ b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml @@ -120,6 +120,8 @@ + + From 02db8e810f9ddc4252e8cb9f8b1057701eeb116b Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 10 Apr 2012 14:53:13 -0500 Subject: [PATCH 108/630] FS-4086 --resolve --- debian/freeswitch.init | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/freeswitch.init b/debian/freeswitch.init index 6cae11ba39..eaf1c36629 100755 --- a/debian/freeswitch.init +++ b/debian/freeswitch.init @@ -180,3 +180,5 @@ case "$1" in exit 3 ;; esac + +: From f7b04b1045d5cd8a804925cae9aa72d9a15441fe Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 15:37:27 -0500 Subject: [PATCH 109/630] FS-3826: --resolve put alsa libs where they go in the linker line, give this a try --- src/mod/endpoints/mod_portaudio/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_portaudio/Makefile.am b/src/mod/endpoints/mod_portaudio/Makefile.am index 88d8754868..4f78946963 100644 --- a/src/mod/endpoints/mod_portaudio/Makefile.am +++ b/src/mod/endpoints/mod_portaudio/Makefile.am @@ -1,3 +1,4 @@ +LIBS+=$(PA_LIBS) include $(top_srcdir)/build/modmake.rulesam MODNAME=mod_portaudio From c10ba04834441b8c6076ad461b2fc2baab48fa14 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 14:01:37 -0500 Subject: [PATCH 110/630] fix pointless warnings --- src/mod/applications/mod_cidlookup/mod_cidlookup.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/mod/applications/mod_cidlookup/mod_cidlookup.c b/src/mod/applications/mod_cidlookup/mod_cidlookup.c index fc32e6fe21..b88081ee7d 100755 --- a/src/mod/applications/mod_cidlookup/mod_cidlookup.c +++ b/src/mod/applications/mod_cidlookup/mod_cidlookup.c @@ -188,7 +188,7 @@ static switch_bool_t cidlookup_execute_sql_callback(char *sql, switch_core_db_ca switch_bool_t retval = SWITCH_FALSE; switch_cache_db_handle_t *dbh = NULL; - if (globals.odbc_dsn && (dbh = cidlookup_get_db_handle())) { + if (!zstr(globals.odbc_dsn) && (dbh = cidlookup_get_db_handle())) { if (switch_cache_db_execute_sql_callback(dbh, sql, callback, (void *) cbt, err) != SWITCH_STATUS_SUCCESS) { retval = SWITCH_FALSE; } else { @@ -533,7 +533,7 @@ static char *do_db_lookup(switch_memory_pool_t *pool, switch_event_t *event, con callback_t cbt = { 0 }; cbt.pool = pool; - if (globals.odbc_dsn) { + if (!zstr(globals.odbc_dsn)) { newsql = switch_event_expand_headers(event, sql); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10, "SQL: %s\n", newsql); if (cidlookup_execute_sql_callback(newsql, cidlookup_callback, &cbt, &err)) { @@ -655,8 +655,6 @@ static cid_data_t *do_lookup(switch_memory_pool_t *pool, switch_event_t *event, SWITCH_STANDARD_APP(cidlookup_app_function) { - switch_status_t status = SWITCH_STATUS_SUCCESS; - char *argv[4] = { 0 }; int argc; char *mydata = NULL; @@ -705,7 +703,7 @@ SWITCH_STANDARD_APP(cidlookup_app_function) if (switch_string_var_check_const(cid->name)) { switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_CRIT, "Invalid CID data {%s} contains a variable\n", cid->name); - switch_goto_status(SWITCH_STATUS_GENERR, done); + goto done; } if (cid && channel) { @@ -719,7 +717,6 @@ SWITCH_STANDARD_APP(cidlookup_app_function) profile->caller_id_name = switch_core_strdup(profile->pool, cid->name);; } - switch_goto_status(SWITCH_STATUS_SUCCESS, done); done: if (event) { @@ -728,9 +725,6 @@ SWITCH_STANDARD_APP(cidlookup_app_function) if (!session && pool) { switch_core_destroy_memory_pool(&pool); } - /* This is so compile doesn't failed because status is never used */ - if (status) { - } } SWITCH_STANDARD_API(cidlookup_function) From f209ae0191bd2ab09fc76fa4dd7795827951feb6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 14:01:58 -0500 Subject: [PATCH 111/630] add updated conf --- conf/vanilla/autoload_configs/conference.conf.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/vanilla/autoload_configs/conference.conf.xml b/conf/vanilla/autoload_configs/conference.conf.xml index 5a906f91cd..30e298a09c 100644 --- a/conf/vanilla/autoload_configs/conference.conf.xml +++ b/conf/vanilla/autoload_configs/conference.conf.xml @@ -120,6 +120,8 @@ + + From 48177682991e54201674364223603abb3ebefa9b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 15:27:32 -0500 Subject: [PATCH 112/630] FS-4037 --resolve --- src/mod/codecs/mod_speex/mod_speex.c | 199 +++++++++++++++++++++------ 1 file changed, 154 insertions(+), 45 deletions(-) diff --git a/src/mod/codecs/mod_speex/mod_speex.c b/src/mod/codecs/mod_speex/mod_speex.c index aaec0a6602..c06b48ee1f 100644 --- a/src/mod/codecs/mod_speex/mod_speex.c +++ b/src/mod/codecs/mod_speex/mod_speex.c @@ -117,51 +117,143 @@ struct speex_context { static switch_status_t switch_speex_fmtp_parse(const char *fmtp, switch_codec_fmtp_t *codec_fmtp) { - if (codec_fmtp) { - speex_codec_settings_t *codec_settings = NULL; - if (codec_fmtp->private_info) { - codec_settings = codec_fmtp->private_info; - memcpy(codec_settings, &default_codec_settings, sizeof(*codec_settings)); - } + speex_codec_settings_t *codec_settings = NULL; + int x, argc; + char *argv[10]; + char *fmtp_dup = NULL; - if (fmtp) { - int x, argc; - char *argv[10]; - char *fmtp_dup = strdup(fmtp); - - switch_assert(fmtp_dup); - - argc = switch_separate_string(fmtp_dup, ';', argv, (sizeof(argv) / sizeof(argv[0]))); - - for (x = 0; x < argc; x++) { - char *data = argv[x]; - char *arg; - switch_assert(data); - while (*data == ' ') { - data++; - } - if ((arg = strchr(data, '='))) { - *arg++ = '\0'; - /* - if (!strcasecmp(data, "bitrate")) { - bit_rate = atoi(arg); - } - */ - /* - if (codec_settings) { - if (!strcasecmp(data, "vad")) { - bit_rate = atoi(arg); - } - } - */ - } - } - free(fmtp_dup); - } - /*codec_fmtp->bits_per_second = bit_rate;*/ + if (!codec_fmtp) { + return SWITCH_STATUS_FALSE; + } + + if (!fmtp) { return SWITCH_STATUS_SUCCESS; } - return SWITCH_STATUS_FALSE; + + /* load default settings */ + if (codec_fmtp->private_info) { + codec_settings = codec_fmtp->private_info; + memcpy(codec_settings, &default_codec_settings, sizeof(*codec_settings)); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "codec_fmtp->private_info is NULL\n"); + return SWITCH_STATUS_SUCCESS; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "got fmtp: %s\n", fmtp); + + fmtp_dup = strdup(fmtp); + switch_assert(fmtp_dup); + + /* parse ; separated fmtp args */ + argc = switch_separate_string(fmtp_dup, ';', argv, (sizeof(argv) / sizeof(argv[0]))); + for (x = 0; x < argc; x++) { + char *data = argv[x]; + char *arg; + switch_assert(data); + while (*data == ' ') { + data++; + } + if (!(arg = strchr(data, '='))) { + continue; + } + *arg++ = '\0'; + if (zstr(arg)) { + continue; + } + + if (!strcasecmp("vbr", data)) { + /* vbr can be on/off/vad */ + if (!strcasecmp("vad", arg)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "enabling speex vbr=vad\n"); + codec_settings->vbr = 0; + codec_settings->vad = 1; + codec_settings->pp_vad = 1; + } else { + if (switch_true(arg)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "enabling speex vbr\n"); + codec_settings->vbr = 1; + codec_settings->vad = 0; + codec_settings->pp_vad = 1; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "disabling speex vbr\n"); + codec_settings->vbr = 0; + codec_settings->vad = 0; + codec_settings->pp_vad = 0; + } + } + } else if (!strcasecmp("cng", data)) { + /* TODO don't know how to turn on CNG */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "speex cng is unsupported\n"); + } else if (!strcasecmp("mode", data)) { + /* mode is a comma-separate list of preferred modes. Use the first mode in the list */ + char *arg_dup; + char *mode[2]; + if (!strncasecmp("any", arg, 3)) { + /* "any", keep the default setting */ + continue; + } + arg_dup = strdup(arg); + if (switch_separate_string(arg_dup, ',', mode, (sizeof(mode) / sizeof(mode[0])))) { + int mode_num = -1; + char *mode_str = mode[0]; + if (mode_str[0] == '"') { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "mode starts with \"\n"); + mode_str++; + } + if (switch_is_number(mode_str)) { + mode_num = atoi(mode_str); + } + /* TODO there might be a way to set the mode directly instead of changing the quality */ + if (codec_fmtp->actual_samples_per_second == 8000) { + switch (mode_num) { + case 1: + codec_settings->quality = 0; + break; + case 2: + codec_settings->quality = 2; + break; + case 3: + codec_settings->quality = 4; + break; + case 4: + codec_settings->quality = 6; + break; + case 5: + codec_settings->quality = 8; + break; + case 6: + codec_settings->quality = 9; + break; + case 7: + codec_settings->quality = 10; + break; + case 8: + codec_settings->quality = 1; + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "ignoring invalid speex/8000 mode %s\n", mode_str); + continue; + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "choosing speex/8000 mode %s\n", mode_str); + codec_settings->quality = codec_settings->quality; + codec_settings->vbr_quality = codec_settings->quality; + } else { + if (mode_num >= 0 && mode_num <= 10) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "choosing speex/%d mode %s\n", codec_fmtp->actual_samples_per_second, mode_str); + codec_settings->quality = mode_num; + codec_settings->vbr_quality = mode_num; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "ignoring invalid speex/%d mode %s\n", codec_fmtp->actual_samples_per_second, mode_str); + continue; + } + } + } + free(arg_dup); + } + } + free(fmtp_dup); + /*codec_fmtp->bits_per_second = bit_rate;*/ + return SWITCH_STATUS_SUCCESS; } @@ -182,6 +274,7 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla memset(&codec_fmtp, '\0', sizeof(struct switch_codec_fmtp)); codec_fmtp.private_info = &codec_settings; + codec_fmtp.actual_samples_per_second = codec->implementation->actual_samples_per_second; switch_speex_fmtp_parse(codec->fmtp_in, &codec_fmtp); memcpy(&context->codec_settings, &codec_settings, sizeof(context->codec_settings)); @@ -205,11 +298,24 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla speex_encoder_ctl(context->encoder_state, SPEEX_GET_FRAME_SIZE, &context->encoder_frame_size); speex_encoder_ctl(context->encoder_state, SPEEX_SET_COMPLEXITY, &context->codec_settings.complexity); if (context->codec_settings.preproc) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor on\n"); context->pp = speex_preprocess_state_init(context->encoder_frame_size, codec->implementation->actual_samples_per_second); + if (context->codec_settings.pp_vad) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor vad on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_VAD, &context->codec_settings.pp_vad); + if (context->codec_settings.pp_agc) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor agc on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_AGC, &context->codec_settings.pp_agc); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_AGC_LEVEL, &context->codec_settings.pp_agc_level); + if (context->codec_settings.pp_denoise) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor denoise on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DENOISE, &context->codec_settings.pp_denoise); + if (context->codec_settings.pp_dereverb) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor dereverb on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB, &context->codec_settings.pp_dereverb); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &context->codec_settings.pp_dereverb_decay); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &context->codec_settings.pp_dereverb_level); @@ -218,17 +324,21 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla if (!context->codec_settings.abr && !context->codec_settings.vbr) { speex_encoder_ctl(context->encoder_state, SPEEX_SET_QUALITY, &context->codec_settings.quality); if (context->codec_settings.vad) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "vad on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VAD, &context->codec_settings.vad); } } if (context->codec_settings.vbr) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "vbr on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VBR, &context->codec_settings.vbr); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VBR_QUALITY, &context->codec_settings.vbr_quality); } if (context->codec_settings.abr) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "abr on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_ABR, &context->codec_settings.abr); } if (context->codec_settings.dtx) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "dtx on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_DTX, &context->codec_settings.dtx); } } @@ -243,6 +353,7 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "initialized Speex codec \n"); codec->private_info = context; return SWITCH_STATUS_SUCCESS; } @@ -279,17 +390,15 @@ static switch_status_t switch_speex_encode(switch_codec_t *codec, if (is_speech) { switch_clear_flag(context, SWITCH_CODEC_FLAG_SILENCE); - *flag |= SWITCH_CODEC_FLAG_SILENCE_STOP; *flag &= ~SFF_CNG; } else { if (switch_test_flag(context, SWITCH_CODEC_FLAG_SILENCE)) { *encoded_data_len = 0; - *flag |= SWITCH_CODEC_FLAG_SILENCE | SFF_CNG; + *flag |= SFF_CNG; return SWITCH_STATUS_SUCCESS; } switch_set_flag(context, SWITCH_CODEC_FLAG_SILENCE); - *flag |= SWITCH_CODEC_FLAG_SILENCE_START; } From cf2406edaaa54eec8b0dae28bcba0ae16467b908 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 15:32:23 -0500 Subject: [PATCH 113/630] FS-4024 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 4a9c89c203..a736a5d64c 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2703,9 +2703,9 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * rpid = "on-the-phone"; force_status = 1; } else if (!strcmp(astate, "terminated") || !strcmp(astate, "hangup")) { - rpid = "online"; - dialog_rpid = ""; - force_event_status = "Available"; + //rpid = "online"; + //dialog_rpid = ""; + //force_event_status = "Available"; term = 1; } From 44589f1fb41624bcf5dfeefc94a0033b47cca01b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 15:34:50 -0500 Subject: [PATCH 114/630] FS-4014 --resolve --- src/mod/endpoints/mod_sofia/sofia_glue.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 5786ec8f14..80dfff8835 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -7042,14 +7042,17 @@ char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, nua if (contact->m_url->url_params) { - contact_str = switch_mprintf("%s %s", + contact_str = switch_mprintf("%s %s", display, contact->m_url->url_user, + contact->m_url->url_user ? "@" : "", ipv6 ? "[" : "", contact_host, ipv6 ? "]" : "", new_port, contact->m_url->url_params, np->is_nat ? ";fs_nat=yes" : ""); } else { - contact_str = switch_mprintf("%s %s", + contact_str = switch_mprintf("%s %s", display, - contact->m_url->url_user, ipv6 ? "[" : "", contact_host, ipv6 ? "]" : "", new_port, np->is_nat ? ";fs_nat=yes" : ""); + contact->m_url->url_user, + contact->m_url->url_user ? "@" : "", + ipv6 ? "[" : "", contact_host, ipv6 ? "]" : "", new_port, np->is_nat ? ";fs_nat=yes" : ""); } } From 6072da1b1f4bc82f47c258c396fc3cf56c11c083 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 15:46:27 -0500 Subject: [PATCH 115/630] FS-3993 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.h | 8 ++++++ src/mod/endpoints/mod_sofia/sofia.c | 35 ++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 93a053bf44..2934c57f8c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -515,6 +515,13 @@ typedef enum { MEDIA_OPT_BYPASS_AFTER_ATT_XFER = (1 << 1) } sofia_media_options_t; +typedef enum { + PAID_DEFAULT = 0, + PAID_USER, + PAID_USER_DOMAIN, + PAID_VERBATIM +} sofia_paid_type_t; + #define MAX_RTPIP 50 struct sofia_profile { @@ -652,6 +659,7 @@ struct sofia_profile { uint32_t sip_force_expires; uint32_t sip_expires_max_deviation; int ireg_seconds; + sofia_paid_type_t paid_type; }; struct private_object { diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 212455d3a8..27d6e5d9db 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -3494,6 +3494,18 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { profile->sip_expires_max_deviation = 0; } + } else if (!strcasecmp(var, "p-asserted-id-parse")) { + if (!strncasecmp(val, "default", 7)) { + profile->paid_type = PAID_DEFAULT; + } else if (!strncasecmp(val, "user-only", 9)) { + profile->paid_type = PAID_USER; + } else if (!strncasecmp(val, "user-domain", 11)) { + profile->paid_type = PAID_USER_DOMAIN; + } else if (!strncasecmp(val, "verbatim", 8)) { + profile->paid_type = PAID_VERBATIM; + } else { + profile->paid_type = PAID_DEFAULT; + } } } } @@ -3753,6 +3765,7 @@ switch_status_t config_sofia(int reload, char *profile_name) profile->ndlb |= PFLAG_NDLB_ALLOW_NONDUP_SDP; profile->te = 101; profile->ireg_seconds = IREG_SECONDS; + profile->paid_type = PAID_DEFAULT; profile->tls_verify_policy = TPTLS_VERIFY_NONE; @@ -4568,6 +4581,18 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_NO_CONNECTION_REUSE); } + } else if (!strcasecmp(var, "p-asserted-id-parse")) { + if (!strncasecmp(val, "default", 7)) { + profile->paid_type = PAID_DEFAULT; + } else if (!strncasecmp(val, "user-only", 9)) { + profile->paid_type = PAID_USER; + } else if (!strncasecmp(val, "user-domain", 11)) { + profile->paid_type = PAID_USER_DOMAIN; + } else if (!strncasecmp(val, "verbatim", 8)) { + profile->paid_type = PAID_VERBATIM; + } else { + profile->paid_type = PAID_DEFAULT; + } } } @@ -7781,9 +7806,17 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if ((passerted = sip_p_asserted_identity(sip))) { if (passerted->paid_url && passerted->paid_url->url_user) { char *full_paid_header = sip_header_as_string(nh->nh_home, (void *) passerted); + //char *full_paid_header = (char *)(passerted->paid_common->h_data); from_user = passerted->paid_url->url_user; if (!zstr(full_paid_header)) { - switch_channel_set_variable(channel, "sip_P-Asserted-Identity", from_user); + if (profile->paid_type == PAID_DEFAULT || profile->paid_type == PAID_USER) { + switch_channel_set_variable(channel, "sip_P-Asserted-Identity", from_user); + } else if (profile->paid_type == PAID_USER_DOMAIN) { + switch_channel_set_variable(channel, "sip_P-Asserted-Identity", + switch_core_session_sprintf(session, "%s@%s", passerted->paid_url->url_user, passerted->paid_url->url_host)); + } else if (profile->paid_type == PAID_VERBATIM) { + switch_channel_set_variable(channel, "sip_P-Asserted-Identity", full_paid_header); + } } } if (!zstr(passerted->paid_display)) { From a40f3049907596191d93ead2f97308a7ce1ea820 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 16:11:36 -0500 Subject: [PATCH 116/630] ESL-45 --resolve --- libs/esl/src/esl.c | 57 +++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 719912b1e8..f6caeca0b3 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -491,7 +491,9 @@ ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t s ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event) { char *txt; - char event_buf[256] = ""; + char *event_buf = NULL; + esl_status_t status = ESL_FAIL; + size_t len = 0; if (!handle->connected || !event) { return ESL_FAIL; @@ -500,23 +502,20 @@ ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event esl_event_serialize(event, &txt, ESL_FALSE); esl_log(ESL_LOG_DEBUG, "SEND EVENT\n%s\n", txt); - - snprintf(event_buf, sizeof(event_buf), "sendevent %s\n", esl_event_name(event->event_id)); - if (send(handle->sock, event_buf, strlen(event_buf), 0) <= 0) goto fail; - if (send(handle->sock, txt, strlen(txt), 0) <= 0) goto fail; + len = strlen(txt) + 100; + event_buf = malloc(len); + assert(event_buf); + memset(event_buf, 0, len); - free(txt); - - return esl_recv(handle); - - fail: - - handle->connected = 0; + snprintf(event_buf, len, "sendevent %s\n%s", esl_event_name(event->event_id), txt); + + status = esl_send_recv(handle, event_buf); free(txt); + free(event_buf); - return ESL_FAIL; + return status; } @@ -554,34 +553,36 @@ ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, con ESL_DECLARE(esl_status_t) esl_sendmsg(esl_handle_t *handle, esl_event_t *event, const char *uuid) { - char cmd_buf[128] = "sendmsg\n"; + char *cmd_buf = NULL; char *txt; - + size_t len = 0; + esl_status_t status = ESL_FAIL; + if (!handle || !handle->connected || handle->sock == ESL_SOCK_INVALID) { return ESL_FAIL; } + esl_event_serialize(event, &txt, ESL_FALSE); + len = strlen(txt) + 100; + cmd_buf = malloc(len); + assert(cmd_buf); + memset(cmd_buf, 0, len); + + if (uuid) { - snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg %s\n", uuid); + snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg %s\n%s", uuid, txt); + } else { + snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg\n%s", txt); } - esl_event_serialize(event, &txt, ESL_FALSE); esl_log(ESL_LOG_DEBUG, "%s%s\n", cmd_buf, txt); - if (send(handle->sock, cmd_buf, strlen(cmd_buf), 0) <= 0) goto fail; - if (send(handle->sock, txt, strlen(txt), 0) <= 0) goto fail; - - free(txt); - - return esl_recv(handle); - - fail: - - handle->connected = 0; + status = esl_send_recv(handle, cmd_buf); free(txt); + free(cmd_buf); - return ESL_FAIL; + return status; } From 995ae2621c15ab16e91804e780eaaa5f47d0d2f1 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 16:17:16 -0500 Subject: [PATCH 117/630] FS-3769 --resolve --- src/switch_caller.c | 4 +- src/switch_core_session.c | 2 +- src/switch_core_sqldb.c | 4 +- src/switch_ivr_bridge.c | 58 +++++------ src/switch_ivr_originate.c | 12 +-- src/switch_log.c | 2 +- src/switch_rtp.c | 196 +++++++++++++++++++++---------------- 7 files changed, 152 insertions(+), 126 deletions(-) diff --git a/src/switch_caller.c b/src/switch_caller.c index fd81fe9918..9436e44e29 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -479,7 +479,7 @@ SWITCH_DECLARE(void) switch_caller_extension_add_application_printf(switch_core_ char *p; if ((p = strstr(data, "\\'"))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "App not added, Invalid character sequence in data string [%s]\n", data); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "App not added, Invalid character sequence in data string [%s]\n", data); free(data); return; } @@ -505,7 +505,7 @@ SWITCH_DECLARE(void) switch_caller_extension_add_application(switch_core_session if (caller_application->application_data && (p = strstr(caller_application->application_data, "\\'"))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "App not added, Invalid character sequence in data string [%s]\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "App not added, Invalid character sequence in data string [%s]\n", caller_application->application_data); return; } diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 427eb64eb0..86fdfb98db 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -1465,7 +1465,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_set_uuid(switch_core_session switch_mutex_lock(runtime.session_hash_mutex); if (switch_core_hash_find(session_manager.session_table, use_uuid)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Duplicate UUID!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Duplicate UUID!\n"); switch_mutex_unlock(runtime.session_hash_mutex); return SWITCH_STATUS_FALSE; } diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index fa4c9cf3a4..e939981aa0 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -390,7 +390,7 @@ SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_h { if (!switch_odbc_available()) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failure! ODBC NOT AVAILABLE!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failure! ODBC NOT AVAILABLE! Can't connect to DSN %s\n", connection_options->odbc_options.dsn); goto end; } @@ -415,7 +415,7 @@ SWITCH_DECLARE(switch_status_t) _switch_cache_db_get_db_handle(switch_cache_db_h } if (!db && !odbc_dbh) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failure!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failure to connect to %s %s!\n", db?"SQLITE":"ODBC", db?connection_options->core_db_options.db_path:connection_options->odbc_options.dsn); goto end; } diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index b75549c417..9d4e7a25bc 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -70,7 +70,7 @@ static void *SWITCH_THREAD_FUNC video_bridge_thread(switch_thread_t *thread, voi } switch_core_session_kill_channel(vh->session_b, SWITCH_SIG_BREAK); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s video thread ended.\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(vh->session_a), SWITCH_LOG_DEBUG, "%s video thread ended.\n", switch_channel_get_name(channel)); vh->up = 0; return NULL; @@ -243,7 +243,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) if (bypass_media_after_bridge) { if (switch_stristr("loopback", switch_channel_get_name(chan_a)) || switch_stristr("loopback", switch_channel_get_name(chan_b))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Cannot bypass media while bridged to a loopback address.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_WARNING, "Cannot bypass media while bridged to a loopback address.\n"); bypass_media_after_bridge = 0; } } @@ -253,7 +253,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) switch_core_session_get_read_impl(session_a, &read_impl); if (!switch_channel_media_ready(chan_a)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Channel has no media!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_ERROR, "Channel has no media!\n"); goto end_of_bridge_loop; } @@ -277,7 +277,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) silence_val = 0; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setup generated silence from %s to %s at %d\n", switch_channel_get_name(chan_a), + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "Setup generated silence from %s to %s at %d\n", switch_channel_get_name(chan_a), switch_channel_get_name(chan_b), silence_val); silence_frame.codec = &silence_codec; silence_frame.data = silence_data; @@ -380,7 +380,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) if (cb_status == SWITCH_STATUS_IGNORE) { send_dtmf = 0; } else if (cb_status != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s ended call via DTMF\n", switch_channel_get_name(chan_a)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "%s ended call via DTMF\n", switch_channel_get_name(chan_a)); switch_core_session_kill_channel(session_b, SWITCH_SIG_BREAK); goto end_of_bridge_loop; } @@ -406,7 +406,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) } if (!ans_a && answer_limit && switch_epoch_time_now(NULL) > answer_limit) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Answer timeout hit on %s.\n", switch_channel_get_name(chan_a)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "Answer timeout hit on %s.\n", switch_channel_get_name(chan_a)); switch_channel_hangup(chan_a, SWITCH_CAUSE_ALLOTTED_TIMEOUT); } @@ -415,13 +415,13 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) if (!ans_b && switch_channel_test_flag(chan_b, CF_ANSWERED)) { switch_channel_pass_callee_id(chan_b, chan_a); if (switch_channel_answer(chan_a) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a)); goto end_of_bridge_loop; } ans_a = 1; } else if (!pre_b && switch_channel_test_flag(chan_b, CF_EARLY_MEDIA)) { if (switch_channel_pre_answer(chan_a) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a)); goto end_of_bridge_loop; } pre_b = 1; @@ -445,7 +445,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) } if (switch_channel_answer(un) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(un)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(un)); goto end_of_bridge_loop; } @@ -496,13 +496,13 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) if (status != SWITCH_STATUS_BREAK && !switch_channel_test_flag(chan_a, CF_HOLD)) { if (switch_core_session_write_frame(session_b, read_frame, SWITCH_IO_FLAG_NONE, stream_id) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "%s ending bridge by request from write function\n", switch_channel_get_name(chan_b)); goto end_of_bridge_loop; } } } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s ending bridge by request from read function\n", switch_channel_get_name(chan_a)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "%s ending bridge by request from read function\n", switch_channel_get_name(chan_a)); goto end_of_bridge_loop; } } @@ -516,7 +516,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) switch_channel_set_flag(chan_b, CF_NOT_READY); switch_core_session_kill_channel(session_a, SWITCH_SIG_BREAK); switch_core_session_kill_channel(session_b, SWITCH_SIG_BREAK); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Ending video thread.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "Ending video thread.\n"); } #endif @@ -538,7 +538,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) } SWITCH_STANDARD_STREAM(stream); switch_api_execute(cmd, arg, NULL, &stream); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "\nPost-Bridge Command %s(%s):\n%s\n", cmd, arg, switch_str_nil((char *) stream.data)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "\nPost-Bridge Command %s(%s):\n%s\n", cmd, arg, switch_str_nil((char *) stream.data)); switch_safe_free(stream.data); } @@ -546,7 +546,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) if ((app_name = switch_channel_get_variable(chan_a, SWITCH_EXEC_AFTER_BRIDGE_APP_VARIABLE))) { switch_caller_extension_t *extension = NULL; if ((extension = switch_caller_extension_new(session_a, app_name, app_name)) == 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "memory error!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_CRIT, "memory error!\n"); goto end; } app_arg = switch_channel_get_variable(chan_a, SWITCH_EXEC_AFTER_BRIDGE_ARG_VARIABLE); @@ -572,7 +572,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) switch_core_session_kill_channel(session_a, SWITCH_SIG_BREAK); switch_core_session_kill_channel(session_b, SWITCH_SIG_BREAK); } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Ending video thread.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "Ending video thread.\n"); switch_thread_join(&st, vid_thread); switch_channel_clear_flag(chan_a, CF_NOT_READY); switch_channel_clear_flag(chan_b, CF_NOT_READY); @@ -583,7 +583,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) switch_core_session_reset(session_a, SWITCH_TRUE, SWITCH_TRUE); switch_channel_set_variable(chan_a, SWITCH_BRIDGE_VARIABLE, NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session_a), SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a)); switch_channel_clear_flag(chan_a, CF_BRIDGED); if (switch_channel_test_flag(chan_a, CF_LEG_HOLDING) && switch_channel_ready(chan_b)) { @@ -625,7 +625,7 @@ static void transfer_after_bridge(switch_core_session_t *session, const char *wh if ((argc = switch_separate_string(mydata, ':', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) { switch_ivr_session_transfer(session, argv[0], argv[1], argv[2]); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No extension specified.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No extension specified.\n"); } } } @@ -684,7 +684,7 @@ static switch_status_t audio_bridge_on_routing(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM ROUTING\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CUSTOM ROUTING\n", switch_channel_get_name(channel)); /* put the channel in a passive state so we can loop audio to it */ switch_channel_set_state(channel, CS_CONSUME_MEDIA); @@ -695,7 +695,7 @@ static switch_status_t audio_bridge_on_consume_media(switch_core_session_t *sess { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM HOLD\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CUSTOM HOLD\n", switch_channel_get_name(channel)); /* put the channel in a passive state so we can loop audio to it */ return SWITCH_STATUS_FALSE; @@ -731,7 +731,7 @@ static switch_status_t uuid_bridge_on_reset(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM RESET\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CUSTOM RESET\n", switch_channel_get_name(channel)); switch_channel_clear_flag(channel, CF_ORIGINATING); @@ -756,7 +756,7 @@ static switch_status_t uuid_bridge_on_soft_execute(switch_core_session_t *sessio switch_core_session_t *other_session; const char *other_uuid = NULL; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM SOFT_EXECUTE\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CUSTOM SOFT_EXECUTE\n", switch_channel_get_name(channel)); switch_channel_clear_state_handler(channel, &uuid_bridge_state_handlers); if (!switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { @@ -1383,7 +1383,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_multi_threaded_bridge(switch_core_ses } if (status != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Bridge Failed %s->%s\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Bridge Failed %s->%s\n", switch_channel_get_name(caller_channel), switch_channel_get_name(peer_channel) ); switch_channel_hangup(peer_channel, SWITCH_CAUSE_NO_ANSWER); @@ -1511,7 +1511,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_uuid_bridge(const char *originator_uu if (switch_channel_down_nosig(originator_channel)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s is hungup refusing to bridge.\n", switch_channel_get_name(originatee_channel)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(originator_session), SWITCH_LOG_DEBUG, "%s is hungup refusing to bridge.\n", switch_channel_get_name(originatee_channel)); switch_core_session_rwunlock(originator_session); switch_core_session_rwunlock(originatee_session); return SWITCH_STATUS_FALSE; @@ -1526,9 +1526,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_uuid_bridge(const char *originator_uu swap_channel = originator_channel; originator_channel = originatee_channel; originatee_channel = swap_channel; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "reversing order of channels so this will work!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(originatee_session), SWITCH_LOG_WARNING, "reversing order of channels so this will work!\n"); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Neither channel is answered, cannot bridge them.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(originator_session), SWITCH_LOG_CRIT, "Neither channel is answered, cannot bridge them.\n"); switch_core_session_rwunlock(originator_session); switch_core_session_rwunlock(originatee_session); return SWITCH_STATUS_FALSE; @@ -1627,11 +1627,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_uuid_bridge(const char *originator_uu switch_core_session_rwunlock(originatee_session); } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(originator_session), SWITCH_LOG_DEBUG, "originatee uuid %s is not present\n", originatee_uuid); switch_core_session_rwunlock(originator_session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "originatee uuid %s is not present\n", originatee_uuid); } } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "originator uuid %s is not present\n", originator_uuid); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(originator_session), SWITCH_LOG_DEBUG, "originator uuid %s is not present\n", originator_uuid); } return status; @@ -1670,13 +1670,13 @@ SWITCH_DECLARE(void) switch_ivr_intercept_session(switch_core_session_t *session if (switch_ivr_find_bridged_uuid(uuid, brto, sizeof(brto)) == SWITCH_STATUS_SUCCESS) { uuid = switch_core_session_strdup(session, brto); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "no uuid bridged to %s\n", uuid); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "no uuid bridged to %s\n", uuid); return; } } if (zstr(uuid) || !(rsession = switch_core_session_locate(uuid))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "no uuid %s\n", uuid); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "no uuid %s\n", uuid); return; } diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 35091da9a0..1528f6a9d5 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1204,7 +1204,7 @@ static switch_status_t setup_ringback(originate_global_t *oglobals, originate_st read_codec->implementation->number_of_channels, read_codec->implementation->actual_samples_per_second, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Playing File\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals->session), SWITCH_LOG_ERROR, "Error Playing File\n"); switch_safe_free(tmp_data); switch_goto_status(SWITCH_STATUS_GENERR, end); //switch_goto_status(SWITCH_STATUS_FALSE, end); @@ -1226,12 +1226,12 @@ static switch_status_t setup_ringback(originate_global_t *oglobals, originate_st teletone_init_session(&ringback->ts, 0, teletone_handler, ringback); ringback->ts.rate = read_codec->implementation->actual_samples_per_second; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Play Ringback Tone [%s]\n", ringback_data); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals->session), SWITCH_LOG_DEBUG, "Play Ringback Tone [%s]\n", ringback_data); /* ringback->ts.debug = 1; ringback->ts.debug_stream = switch_core_get_console(); */ if (teletone_run(&ringback->ts, ringback_data)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Playing Tone\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals->session), SWITCH_LOG_ERROR, "Error Playing Tone\n"); teletone_destroy_session(&ringback->ts); switch_buffer_destroy(&ringback->audio_buffer); switch_goto_status(SWITCH_STATUS_GENERR, end); @@ -1412,7 +1412,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_enterprise_originate(switch_core_sess } /* extract channel variables, allowing multiple sets of braces */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Parsing ultra-global variables\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Parsing ultra-global variables\n"); while (*data == '<') { char *parsed = NULL; @@ -1883,7 +1883,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } /* extract channel variables, allowing multiple sets of braces */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Parsing global variables\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Parsing global variables\n"); while (*data == '{') { char *parsed = NULL; @@ -2300,7 +2300,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (*chan_type == '[') { switch_event_create_plain(&local_var_event, SWITCH_EVENT_CHANNEL_DATA); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Parsing session specific variables\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Parsing session specific variables\n"); } while (*chan_type == '[') { diff --git a/src/switch_log.c b/src/switch_log.c index d195b6e585..781cc0e5c9 100644 --- a/src/switch_log.c +++ b/src/switch_log.c @@ -543,7 +543,7 @@ SWITCH_DECLARE(void) switch_core_memory_reclaim_logger(void) #ifdef SWITCH_LOG_RECYCLE void *pop; int size = switch_queue_size(LOG_RECYCLE_QUEUE); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Returning %d recycled log node(s) %d bytes\n", size, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CONSOLE, "Returning %d recycled log node(s) %d bytes\n", size, (int) sizeof(switch_log_node_t) * size); while (switch_queue_trypop(LOG_RECYCLE_QUEUE, &pop) == SWITCH_STATUS_SUCCESS) { switch_log_node_free(&pop); diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 932485eae7..d3c9e73f6a 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -286,14 +286,15 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ { #ifdef DEBUG_2833 if (rtp_session->dtmf_data.in_digit_sanity && !(rtp_session->dtmf_data.in_digit_sanity % 100)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sanity %d\n", rtp_session->dtmf_data.in_digit_sanity); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "sanity %d\n", rtp_session->dtmf_data.in_digit_sanity); } #endif if (rtp_session->dtmf_data.in_digit_sanity && !--rtp_session->dtmf_data.in_digit_sanity) { + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); rtp_session->dtmf_data.last_digit = 0; rtp_session->dtmf_data.in_digit_ts = 0; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed DTMF sanity check.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed DTMF sanity check.\n"); } /* RFC2833 ... like all RFC RE: VoIP, guaranteed to drive you to insanity! @@ -312,13 +313,15 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ uint32_t ts; if (!(packet[0] || packet[1] || packet[2] || packet[3]) && len >= 8) { + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); packet += 4; len -= 4; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "DTMF payload offset by 4 bytes.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "DTMF payload offset by 4 bytes.\n"); } if (!(packet[0] || packet[1] || packet[2] || packet[3])) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed DTMF payload check.\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed DTMF payload check.\n"); rtp_session->dtmf_data.last_digit = 0; rtp_session->dtmf_data.in_digit_ts = 0; rtp_session->dtmf_data.in_digit_sanity = 0; @@ -336,7 +339,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ } } #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "packet[%d]: %02x %02x %02x %02x\n", (int) len, (unsigned) packet[0], (unsigned) + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "packet[%d]: %02x %02x %02x %02x\n", (int) len, (unsigned) packet[0], (unsigned) packet[1], (unsigned) packet[2], (unsigned) packet[3]); #endif @@ -345,7 +348,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ rtp_session->dtmf_data.in_digit_seq = in_digit_seq; #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "read: %c %u %u %u %u %d %d %s\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "read: %c %u %u %u %u %d %d %s\n", key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end, end && !rtp_session->dtmf_data.in_digit_ts ? "ignored" : ""); #endif @@ -354,7 +357,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ rtp_session->dtmf_data.in_digit_ts) { switch_dtmf_t dtmf = { key, switch_core_min_dtmf_duration(0), 0, SWITCH_DTMF_RTP }; #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Early Queuing digit %c:%d\n", dtmf.digit, dtmf.duration / 8); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Early Queuing digit %c:%d\n", dtmf.digit, dtmf.duration / 8); #endif switch_rtp_queue_rfc2833_in(rtp_session, &dtmf); rtp_session->dtmf_data.in_digit_queued = 1; @@ -373,7 +376,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ if (end) { if (!rtp_session->dtmf_data.in_digit_ts && rtp_session->dtmf_data.last_in_digit_ts != ts) { #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "start with end packet %d\n", ts); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "start with end packet %d\n", ts); #endif rtp_session->dtmf_data.last_in_digit_ts = ts; rtp_session->dtmf_data.in_digit_ts = ts; @@ -390,17 +393,17 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ dtmf.duration += rtp_session->dtmf_data.flip * 0xFFFF; rtp_session->dtmf_data.flip = 0; #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "you're welcome!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "you're welcome!\n"); #endif } #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "done digit=%c ts=%u start_ts=%u dur=%u ddur=%u\n", dtmf.digit, ts, rtp_session->dtmf_data.in_digit_ts, duration, dtmf.duration); #endif if (!(rtp_session->rtp_bugs & RTP_BUG_IGNORE_DTMF_DURATION) && !rtp_session->dtmf_data.in_digit_queued) { #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Queuing digit %c:%d\n", dtmf.digit, dtmf.duration / 8); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Queuing digit %c:%d\n", dtmf.digit, dtmf.duration / 8); #endif switch_rtp_queue_rfc2833_in(rtp_session, &dtmf); } @@ -421,7 +424,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ } else if (!rtp_session->dtmf_data.in_digit_ts) { #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "start %d\n", ts); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "start %d\n", ts); #endif rtp_session->dtmf_data.in_digit_ts = ts; rtp_session->dtmf_data.last_in_digit_ts = ts; @@ -432,7 +435,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_ rtp_session->dtmf_data.last_duration = duration; } else { #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "drop: %c %u %u %u %u %d %d\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "drop: %c %u %u %u %u %d %d\n", key, in_digit_seq, rtp_session->dtmf_data.in_digit_seq, ts, duration, rtp_session->recv_msg.header.m, end); #endif switch_cond_next(); @@ -500,7 +503,7 @@ static switch_status_t do_stun_ping(switch_rtp_t *rtp_session) elapsed = (unsigned int) ((switch_micro_time_now() - rtp_session->last_stun) / 1000); if (elapsed > 30000) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No stun for a long time (PUNT!)\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No stun for a long time (PUNT!)\n"); status = SWITCH_STATUS_FALSE; goto end; } @@ -554,7 +557,8 @@ static switch_status_t ice_out(switch_rtp_t *rtp_session) elapsed = (unsigned int) ((switch_micro_time_now() - rtp_session->last_stun) / 1000); if (elapsed > 30000) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No stun for a long time (PUNT!)\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No stun for a long time (PUNT!)\n"); status = SWITCH_STATUS_FALSE; goto end; } @@ -610,7 +614,8 @@ static void handle_ice(switch_rtp_t *rtp_session, void *data, switch_size_t len) memcpy(buf, data, cpylen); packet = switch_stun_packet_parse(buf, sizeof(buf)); if (!packet) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid STUN/ICE packet received\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid STUN/ICE packet received\n"); goto end; } end_buf = buf + ((sizeof(buf) > packet->header.length) ? packet->header.length : sizeof(buf)); @@ -664,7 +669,7 @@ SWITCH_STANDARD_SCHED_FUNC(zrtp_cache_save_callback) zrtp_status_t status = zrtp_status_ok; status = zrtp_def_cache_store(zrtp_global); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Saving ZRTP cache: %s\n", zrtp_status_ok == status ? "OK" : "FAIL"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Saving ZRTP cache: %s\n", zrtp_status_ok == status ? "OK" : "FAIL"); task->runtime = switch_epoch_time_now(NULL) + 900; } @@ -755,14 +760,14 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) #endif case ZRTP_EVENT_IS_CLIENT_ENROLLMENT: { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Enrolled complete!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Enrolled complete!\n"); switch_channel_set_variable_name_printf(channel, "true", "zrtp_enroll_complete_%s", type); } break; case ZRTP_EVENT_USER_ALREADY_ENROLLED: { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "User already enrolled!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "User already enrolled!\n"); switch_channel_set_variable_name_printf(channel, "true", "zrtp_already_enrolled_%s", type); if (zrtp_status_ok == zrtp_session_get(stream->session, &zrtp_session_info)) { @@ -775,7 +780,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) case ZRTP_EVENT_NEW_USER_ENROLLED: { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "New user enrolled!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "New user enrolled!\n"); switch_channel_set_variable_name_printf(channel, "true", "zrtp_new_user_enrolled_%s", type); if (zrtp_status_ok == zrtp_session_get(stream->session, &zrtp_session_info)) { @@ -788,7 +793,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) case ZRTP_EVENT_USER_UNENROLLED: { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "User unenrolled!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "User unenrolled!\n"); switch_channel_set_variable_name_printf(channel, "true", "zrtp_user_unenrolled_%s", type); if (zrtp_status_ok == zrtp_session_get(stream->session, &zrtp_session_info)) { @@ -823,7 +828,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) static void zrtp_logger(int level, const char *data, int len, int offset) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s", data); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s", data); } #endif @@ -864,7 +869,7 @@ SWITCH_DECLARE(void) switch_rtp_init(switch_memory_pool_t *pool) } else { switch_core_set_variable("zrtp_enabled", NULL); zrtp_on = 0; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ZRTP init failed!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "ZRTP init failed!\n"); } } @@ -1025,9 +1030,10 @@ static switch_status_t enable_remote_rtcp_socket(switch_rtp_t *rtp_session, cons } else { const char *host; char bufa[30]; + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); host = switch_get_addr(bufa, sizeof(bufa), rtp_session->rtcp_remote_addr); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting RTCP remote addr to %s:%d\n", host, rtp_session->remote_rtcp_port); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setting RTCP remote addr to %s:%d\n", host, rtp_session->remote_rtcp_port); } if (!(rtp_session->rtcp_sock_input && rtp_session->rtcp_sock_output)) { @@ -1097,7 +1103,8 @@ static switch_status_t enable_local_rtcp_socket(switch_rtp_t *rtp_session, const done: if (*err) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error allocating rtcp [%s]\n", *err); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error allocating rtcp [%s]\n", *err); status = SWITCH_STATUS_FALSE; } @@ -1246,7 +1253,8 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_set_local_address(switch_rtp_t *rtp_s SWITCH_DECLARE(void) switch_rtp_set_max_missed_packets(switch_rtp_t *rtp_session, uint32_t max) { if (rtp_session->missed_count >= max) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "new max missed packets(%d->%d) greater than current missed packets(%d). RTP will timeout.\n", rtp_session->missed_count, max, rtp_session->missed_count); } @@ -1391,7 +1399,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_add_crypto_key(switch_rtp_t *rtp_sess uint32_t index, switch_rtp_crypto_key_type_t type, unsigned char *key, switch_size_t keylen) { #ifndef ENABLE_SRTP - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SRTP NOT SUPPORTED IN THIS BUILD!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "SRTP NOT SUPPORTED IN THIS BUILD!\n"); return SWITCH_STATUS_FALSE; #else switch_rtp_crypto_key_t *crypto_key; @@ -1466,10 +1474,10 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_add_crypto_key(switch_rtp_t *rtp_sess } if (status == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Activating Secure RTP RECV\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Activating Secure RTP RECV\n"); switch_set_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_RECV); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error allocating srtp [%d]\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error allocating srtp [%d]\n", stat); return status; } } @@ -1486,10 +1494,10 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_add_crypto_key(switch_rtp_t *rtp_sess } if (status == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Activating Secure RTP SEND\n"); switch_set_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error allocating SRTP [%d]\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error allocating SRTP [%d]\n", stat); return status; } } @@ -1543,11 +1551,13 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_change_interval(switch_rtp_t *rtp_ses if ((status = switch_core_timer_init(&rtp_session->timer, rtp_session->timer_name, ms_per_packet / 1000, samples_per_interval, rtp_session->pool)) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "RE-Starting timer [%s] %d bytes per %dms\n", rtp_session->timer_name, samples_per_interval, ms_per_packet / 1000); } else { + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); memset(&rtp_session->timer, 0, sizeof(rtp_session->timer)); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Problem RE-Starting timer [%s] %d bytes per %dms\n", rtp_session->timer_name, samples_per_interval, ms_per_packet / 1000); } @@ -1846,7 +1856,8 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_activate_stun_ping(switch_rtp_t *rtp_ if (switch_sockaddr_info_get(&rtp_session->remote_stun_addr, stun_ip, SWITCH_UNSPEC, stun_port, 0, rtp_session->pool) != SWITCH_STATUS_SUCCESS || !rtp_session->remote_stun_addr) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error resolving stun ping addr\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error resolving stun ping addr\n"); return SWITCH_STATUS_FALSE; } @@ -1998,10 +2009,12 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_activate_rtcp(switch_rtp_t *rtp_sessi } if (send_rate == -1) { + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); switch_set_flag(rtp_session, SWITCH_RTP_FLAG_RTCP_PASSTHRU); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "RTCP passthru enabled. Remote Port: %d\n", rtp_session->remote_rtcp_port); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "RTCP passthru enabled. Remote Port: %d\n", rtp_session->remote_rtcp_port); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "RTCP send rate is: %d and packet rate is: %d Remote Port: %d\n", + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "RTCP send rate is: %d and packet rate is: %d Remote Port: %d\n", send_rate, rtp_session->ms_per_packet, rtp_session->remote_rtcp_port); rtp_session->rtcp_interval = send_rate/(rtp_session->ms_per_packet/1000); } @@ -2265,7 +2278,8 @@ SWITCH_DECLARE(void) switch_rtp_clear_flag(switch_rtp_t *rtp_session, switch_rtp static void set_dtmf_delay(switch_rtp_t *rtp_session, uint32_t ms, uint32_t max_ms) { int upsamp, max_upsamp; - + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + if (!max_ms) max_ms = ms; upsamp = ms * (rtp_session->samples_per_second / 1000); @@ -2277,7 +2291,7 @@ static void set_dtmf_delay(switch_rtp_t *rtp_session, uint32_t ms, uint32_t max_ rtp_session->max_next_write_samplecount = rtp_session->timer.samplecount + max_upsamp; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Queue digit delay of %dms\n", ms); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Queue digit delay of %dms\n", ms); } static void do_2833(switch_rtp_t *rtp_session, switch_core_session_t *session) @@ -2481,7 +2495,7 @@ static void do_flush(switch_rtp_t *rtp_session) switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); if (!session) { switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_DEBUG_RTP_READ); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n"); } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CONSOLE, "%s FLUSH\n", switch_channel_get_name(switch_core_session_get_channel(session)) @@ -2506,7 +2520,7 @@ static void do_flush(switch_rtp_t *rtp_session) if (bytes > rtp_header_len && rtp_session->recv_te && rtp_session->recv_msg.header.pt == rtp_session->recv_te) { handle_rfc2833(rtp_session, bytes, &do_cng); #ifdef DEBUG_2833 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "*** RTP packet handled in flush loop %d ***\n", do_cng); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "*** RTP packet handled in flush loop %d ***\n", do_cng); #endif } @@ -2557,29 +2571,29 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t switch_size_t num_missed = (switch_size_t)seq - (rtp_session->last_seq+1); if (num_missed == 1) { /* We missed one packet */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missed one RTP frame with sequence [%d]%s. Time since last read [%d]\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Missed one RTP frame with sequence [%d]%s. Time since last read [%d]\n", rtp_session->last_seq+1, (flushed_packets_diff == 1) ? " (flushed by FS)" : " (missed)", rtp_session->last_read_time ? switch_micro_time_now()-rtp_session->last_read_time : 0); } else { /* We missed multiple packets */ if (flushed_packets_diff == 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Missed %d RTP frames from sequence [%d] to [%d] (missed). Time since last read [%d]\n", num_missed, rtp_session->last_seq+1, seq-1, rtp_session->last_read_time ? switch_micro_time_now()-rtp_session->last_read_time : 0); } else if (flushed_packets_diff == num_missed) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Missed %d RTP frames from sequence [%d] to [%d] (flushed by FS). Time since last read [%d]\n", num_missed, rtp_session->last_seq+1, seq-1, rtp_session->last_read_time ? switch_micro_time_now()-rtp_session->last_read_time : 0); } else if (num_missed > flushed_packets_diff) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Missed %d RTP frames from sequence [%d] to [%d] (%d packets flushed by FS, %d packets missed)." " Time since last read [%d]\n", num_missed, rtp_session->last_seq+1, seq-1, flushed_packets_diff, num_missed-flushed_packets_diff, rtp_session->last_read_time ? switch_micro_time_now()-rtp_session->last_read_time : 0); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Missed %d RTP frames from sequence [%d] to [%d] (%d packets flushed by FS). Time since last read [%d]\n", num_missed, rtp_session->last_seq+1, seq-1, flushed_packets_diff, rtp_session->last_read_time ? switch_micro_time_now()-rtp_session->last_read_time : 0); @@ -2650,10 +2664,12 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t srtp_dealloc(rtp_session->recv_ctx); rtp_session->recv_ctx = NULL; if ((stat = srtp_create(&rtp_session->recv_ctx, &rtp_session->recv_policy))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP RECV\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP RECV\n"); return SWITCH_STATUS_FALSE; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "RE-Activating Secure RTP RECV\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "RE-Activating Secure RTP RECV\n"); rtp_session->srtp_errs = 0; } } @@ -2664,7 +2680,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t if (stat && rtp_session->recv_msg.header.pt != rtp_session->recv_te && rtp_session->recv_msg.header.pt != rtp_session->cng_pt) { if (++rtp_session->srtp_errs >= MAX_SRTP_ERRS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: SRTP unprotect failed with code %d%s\n", stat, stat == err_status_replay_fail ? " (replay check failed)" : stat == err_status_auth_fail ? " (auth check failed)" : ""); @@ -2765,7 +2782,8 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t if (stat) { if (++rtp_session->srtp_errs >= MAX_SRTP_ERRS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: SRTP RTCP unprotect failed with code %d%s\n", stat, stat == err_status_replay_fail ? " (replay check failed)" : stat == err_status_auth_fail ? " (auth check failed)" : ""); @@ -2813,9 +2831,10 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t if (*bytes) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10,"Received an RTCP packet of length %" SWITCH_SIZE_T_FMT " bytes\n", *bytes); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10,"Received an RTCP packet of length %" SWITCH_SIZE_T_FMT " bytes\n", *bytes); if (rtp_session->rtcp_recv_msg.header.version == 2) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10,"RTCP packet type is %d\n", rtp_session->rtcp_recv_msg.header.type); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10,"RTCP packet type is %d\n", rtp_session->rtcp_recv_msg.header.type); if (rtp_session->rtcp_recv_msg.header.type == 200) { struct switch_rtcp_senderinfo* sr = (struct switch_rtcp_senderinfo*)rtp_session->rtcp_recv_msg.body; @@ -2825,7 +2844,7 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t rtp_session->stats.rtcp.octet_count += sr->oc; /* sender report */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10,"Received a SR with %d report blocks, " \ + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10,"Received a SR with %d report blocks, " \ "length in words = %d, " \ "SSRC = 0x%X, " \ "NTP MSW = %u, " \ @@ -2843,7 +2862,7 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t ntohl(sr->oc)); } } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Received an unsupported RTCP packet version %d\nn", rtp_session->rtcp_recv_msg.header.version); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Received an unsupported RTCP packet version %d\nn", rtp_session->rtcp_recv_msg.header.version); } status = SWITCH_STATUS_SUCCESS; @@ -2894,14 +2913,14 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ rtp_session->read_pollfd) { if (switch_poll(rtp_session->read_pollfd, 1, &fdr, 0) == SWITCH_STATUS_SUCCESS) { status = read_rtp_packet(rtp_session, &bytes, flags, SWITCH_FALSE); - /* switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Initial (%i) %d\n", status, bytes); */ + /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Initial (%i) %d\n", status, bytes); */ if (status != SWITCH_STATUS_FALSE) { read_pretriggered = 1; } if (bytes) { if (switch_poll(rtp_session->read_pollfd, 1, &fdr, 0) == SWITCH_STATUS_SUCCESS) { - /* switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Trigger %d\n", rtp_session->hot_hits); */ + /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Trigger %d\n", rtp_session->hot_hits); */ rtp_session->hot_hits += rtp_session->samples_per_interval; } else { rtp_session->hot_hits = 0; @@ -2923,7 +2942,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ } else { if (rtp_session->sync_packets) { #if 0 - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Auto-Flush catching up %d packets (%d)ms.\n", rtp_session->sync_packets, (rtp_session->ms_per_packet * rtp_session->sync_packets) / 1000); #endif @@ -2970,13 +2989,13 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ read_pretriggered = 0; } else { status = read_rtp_packet(rtp_session, &bytes, flags, SWITCH_TRUE); - /* switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Read bytes (%i) %d\n", status, bytes); */ + /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Read bytes (%i) %d\n", status, bytes); */ } } else { if (!SWITCH_STATUS_IS_BREAK(poll_status) && poll_status != SWITCH_STATUS_TIMEOUT) { char tmp[128] = ""; strerror_r(poll_status, tmp, sizeof(tmp)); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Poll failed with error: %d [%s]\n", poll_status, tmp); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Poll failed with error: %d [%s]\n", poll_status, tmp); ret = -1; goto end; } @@ -3032,7 +3051,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ int sbytes = (int) rtcp_bytes; int stat = srtp_protect_rtcp(other_rtp_session->send_ctx, &other_rtp_session->rtcp_send_msg.header, &sbytes); if (stat) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: SRTP RTCP protection failed with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: SRTP RTCP protection failed with code %d\n", stat); } rtcp_bytes = sbytes; } @@ -3050,12 +3069,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; case zrtp_status_fail: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); break; default: break; @@ -3066,7 +3085,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ #endif if (switch_socket_sendto(other_rtp_session->rtcp_sock_output, other_rtp_session->rtcp_remote_addr, 0, (const char*)&other_rtp_session->rtcp_send_msg, &rtcp_bytes ) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"RTCP packet not written\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG,"RTCP packet not written\n"); } @@ -3148,7 +3167,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ if (!session) { switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_DEBUG_RTP_READ); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n"); } else { const char *tx_host; const char *old_host; @@ -3204,7 +3223,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ tx_host = switch_get_addr(bufa, sizeof(bufa), rtp_session->from_addr); old_host = switch_get_addr(bufb, sizeof(bufb), rtp_session->remote_addr); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Auto Changing port from %s:%u to %s:%u\n", old_host, old, tx_host, switch_sockaddr_get_port(rtp_session->from_addr)); @@ -3221,7 +3240,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_AUTOADJ); } } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Correct ip/port confirmed.\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Correct ip/port confirmed.\n"); switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_AUTOADJ); rtp_session->auto_adj_used = 0; } @@ -3249,7 +3268,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ rtp_session->missed_count = 0; if (bytes < rtp_header_len) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Ignoring invalid RTP packet size of %ld bytes.\n", (long)bytes); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Ignoring invalid RTP packet size of %ld bytes.\n", (long)bytes); bytes = 0; goto do_continue; } @@ -3903,22 +3922,24 @@ static int rtp_common_write(switch_rtp_t *rtp_session, if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND_RESET)) { + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND_RESET); srtp_dealloc(rtp_session->send_ctx); rtp_session->send_ctx = NULL; if ((stat = srtp_create(&rtp_session->send_ctx, &rtp_session->send_policy))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP SEND\n"); ret = -1; goto end; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "RE-Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "RE-Activating Secure RTP SEND\n"); } } stat = srtp_protect(rtp_session->send_ctx, &send_msg->header, &sbytes); if (stat) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: SRTP protection failed with code %d\n", stat); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: SRTP protection failed with code %d\n", stat); } bytes = sbytes; @@ -3929,6 +3950,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, if (zrtp_on && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA)) { unsigned int sbytes = (int) bytes; zrtp_status_t stat = zrtp_status_fail; + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); stat = zrtp_process_rtp(rtp_session->zrtp_stream, (void *) send_msg, &sbytes); @@ -3936,12 +3958,12 @@ static int rtp_common_write(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; case zrtp_status_fail: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); break; default: break; @@ -3955,7 +3977,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, #ifdef RTP_DEBUG_WRITE_DELTA { int delta = (int) (now - rtp_session->send_time) / 1000; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WRITE %d delta %d\n", (int) bytes, delta); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "WRITE %d delta %d\n", (int) bytes, delta); } #endif rtp_session->send_time = now; @@ -3965,7 +3987,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, if (!session) { switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_DEBUG_RTP_WRITE); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n"); } else { const char *tx_host; const char *old_host; @@ -4039,7 +4061,8 @@ static int rtp_common_write(switch_rtp_t *rtp_session, int sbytes = (int) rtcp_bytes; int stat = srtp_protect_rtcp(rtp_session->send_ctx, &rtp_session->rtcp_send_msg.header, &sbytes); if (stat) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: SRTP RTCP protection failed with code %d\n", stat); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: SRTP RTCP protection failed with code %d\n", stat); } rtcp_bytes = sbytes; } @@ -4057,12 +4080,12 @@ static int rtp_common_write(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; case zrtp_status_fail: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); break; default: break; @@ -4074,7 +4097,8 @@ static int rtp_common_write(switch_rtp_t *rtp_session, if (switch_socket_sendto(rtp_session->rtcp_sock_output, rtp_session->rtcp_remote_addr, 0, (const char*)&rtp_session->rtcp_send_msg, &rtcp_bytes ) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,"RTCP packet not written\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG,"RTCP packet not written\n"); } } } @@ -4143,10 +4167,10 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_enable_vad(switch_rtp_t *rtp_session, codec->implementation->microseconds_per_packet / 1000, codec->implementation->number_of_channels, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, NULL, rtp_session->pool) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Can't load codec?\n"); return SWITCH_STATUS_FALSE; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Activate VAD codec %s %dms\n", codec->implementation->iananame, + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Activate VAD codec %s %dms\n", codec->implementation->iananame, codec->implementation->microseconds_per_packet / 1000); rtp_session->vad_data.diff_level = 400; rtp_session->vad_data.hangunder = 15; @@ -4260,7 +4284,8 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra if (!fwd && !rtp_session->sending_dtmf && !rtp_session->queue_delay && switch_test_flag(rtp_session, SWITCH_RTP_FLAG_RAW_WRITE) && (rtp_session->rtp_bugs & RTP_BUG_GEN_ONE_GEN_ALL)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Generating RTP locally but timestamp passthru is configured, disabling....\n"); + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Generating RTP locally but timestamp passthru is configured, disabling....\n"); switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_RAW_WRITE); rtp_session->last_write_ts = RTP_TS_RESET; } @@ -4351,6 +4376,7 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session, #ifdef ENABLE_SRTP if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND)) { + switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); int sbytes = (int) bytes; err_status_t stat; @@ -4359,17 +4385,17 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session, srtp_dealloc(rtp_session->send_ctx); rtp_session->send_ctx = NULL; if ((stat = srtp_create(&rtp_session->send_ctx, &rtp_session->send_policy))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP SEND\n"); ret = -1; goto end; } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "RE-Activating Secure RTP SEND\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "RE-Activating Secure RTP SEND\n"); } } stat = srtp_protect(rtp_session->send_ctx, &rtp_session->write_msg.header, &sbytes); if (stat) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: SRTP protection failed with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: SRTP protection failed with code %d\n", stat); } bytes = sbytes; } @@ -4386,12 +4412,12 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; case zrtp_status_fail: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); break; default: break; From 62c14df3223ea2b59144104f0a895649a95b40b3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 10 Apr 2012 16:19:23 -0500 Subject: [PATCH 118/630] FS-3774 --resolve --- libs/sofia-sip/.update | 2 +- libs/sofia-sip/libsofia-sip-ua/nua/nua_client.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index 4c9b84cadf..cf78cb49ef 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Wed Apr 4 16:17:37 CDT 2012 +Tue Apr 10 16:19:10 CDT 2012 diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_client.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_client.c index 1a3614c6a1..e7ec9fb890 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_client.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_client.c @@ -1212,10 +1212,12 @@ int nua_base_client_check_restart(nua_client_request_t *cr, return 1; } } - - if (0 && 500 <= status && status < 600 && + /* GriGiu : RFC-3261 status supported Retry-After */ + if ( (status == 404 || status == 413 || status == 480 || status == 486 || + status == 500 || status == 503 || + status == 600 || status == 603) && sip->sip_retry_after && - sip->sip_retry_after->af_delta < 32) { + sip->sip_retry_after->af_delta < 3200) { su_timer_t *timer; char phrase[18]; /* Retry After XXXX\0 */ From 40c255b4d2a59b4e73f2a684b8035466ac358685 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 11 Apr 2012 08:17:39 -0500 Subject: [PATCH 119/630] FS-4077 add missing --- src/mod/languages/mod_lua/mod_lua.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp index 046bf351dc..4886ae567e 100644 --- a/src/mod/languages/mod_lua/mod_lua.cpp +++ b/src/mod/languages/mod_lua/mod_lua.cpp @@ -187,7 +187,7 @@ static int lua_parse_and_execute(lua_State * L, char *input_code) switch_assert(fdup); file = fdup; } - error = luaL_loadfile(L, file) || docall(L, 0, 1, 0); + error = luaL_loadfile(L, file) || docall(L, 0, 0, 0); switch_safe_free(fdup); } } From 4307bee1e54e1308bbd363bda97bae5e402141d0 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Wed, 11 Apr 2012 09:10:56 -0500 Subject: [PATCH 120/630] FS-4100 --resolve --- src/switch_rtp.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index d3c9e73f6a..4e6b6311f0 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -669,7 +669,7 @@ SWITCH_STANDARD_SCHED_FUNC(zrtp_cache_save_callback) zrtp_status_t status = zrtp_status_ok; status = zrtp_def_cache_store(zrtp_global); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Saving ZRTP cache: %s\n", zrtp_status_ok == status ? "OK" : "FAIL"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Saving ZRTP cache: %s\n", zrtp_status_ok == status ? "OK" : "FAIL"); task->runtime = switch_epoch_time_now(NULL) + 900; } @@ -828,7 +828,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) static void zrtp_logger(int level, const char *data, int len, int offset) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s", data); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s", data); } #endif @@ -869,7 +869,7 @@ SWITCH_DECLARE(void) switch_rtp_init(switch_memory_pool_t *pool) } else { switch_core_set_variable("zrtp_enabled", NULL); zrtp_on = 0; - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "ZRTP init failed!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "ZRTP init failed!\n"); } } @@ -4080,12 +4080,12 @@ static int rtp_common_write(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; case zrtp_status_fail: - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); break; default: break; @@ -4412,12 +4412,12 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; case zrtp_status_fail: - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection fail with code %d\n", stat); break; default: break; From 8954b44e9e7641f2cc82627cb0fdfdc028363559 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 08:14:30 -0500 Subject: [PATCH 121/630] FS-4088 --- .../conf/autoload_configs/conference.conf.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml index 30e298a09c..826f6fb9be 100644 --- a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml +++ b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml @@ -120,8 +120,10 @@ - - + + From 098f1962982f779e56c215be206095ce2c01f56a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 08:16:13 -0500 Subject: [PATCH 122/630] FS-4088 --- conf/vanilla/autoload_configs/conference.conf.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/conf/vanilla/autoload_configs/conference.conf.xml b/conf/vanilla/autoload_configs/conference.conf.xml index 30e298a09c..826f6fb9be 100644 --- a/conf/vanilla/autoload_configs/conference.conf.xml +++ b/conf/vanilla/autoload_configs/conference.conf.xml @@ -120,8 +120,10 @@ - - + + From 2f998764c871b30dcd3cd64bd55124517355f132 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 08:39:01 -0500 Subject: [PATCH 123/630] FS-4101 --resolve --- src/switch_ivr_play_say.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index a29f4c6f22..fdd67f1de5 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -1113,7 +1113,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess if (cur) { fh->samples = sample_start = 0; if (sleep_val_i) { - switch_ivr_sleep(session, sleep_val_i, SWITCH_FALSE, args); + status = switch_ivr_sleep(session, sleep_val_i, SWITCH_FALSE, args); + if(status != SWITCH_STATUS_SUCCESS) { + break; + } } } From a4de359df4f19e6c8085d655077421aa57ee258b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 09:53:35 -0500 Subject: [PATCH 124/630] FS-4077 --resolve this is unrelated, we had to move the network list loader before the modules load because some people using static configs would have mod_sofia load before the acl were in place and it would prevent mod_sofia from doing proper nat detection. This commit should fix it by loading acl both before and after module load --- src/switch_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core.c b/src/switch_core.c index 4eeb02e447..61a0a8e6e1 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1885,7 +1885,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_init_and_modload(switch_core_flag_t return SWITCH_STATUS_GENERR; } - + switch_load_network_lists(SWITCH_FALSE); switch_load_core_config("post_load_switch.conf"); From febb9cc07e08a6dccc8be8aa62b6d487248a525e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 09:59:55 -0500 Subject: [PATCH 125/630] FS-4037 revert 48177682991e54201674364223603abb3ebefa9b causing audio issues with speex --- src/mod/codecs/mod_speex/mod_speex.c | 199 ++++++--------------------- 1 file changed, 45 insertions(+), 154 deletions(-) diff --git a/src/mod/codecs/mod_speex/mod_speex.c b/src/mod/codecs/mod_speex/mod_speex.c index c06b48ee1f..aaec0a6602 100644 --- a/src/mod/codecs/mod_speex/mod_speex.c +++ b/src/mod/codecs/mod_speex/mod_speex.c @@ -117,143 +117,51 @@ struct speex_context { static switch_status_t switch_speex_fmtp_parse(const char *fmtp, switch_codec_fmtp_t *codec_fmtp) { - speex_codec_settings_t *codec_settings = NULL; - int x, argc; - char *argv[10]; - char *fmtp_dup = NULL; + if (codec_fmtp) { + speex_codec_settings_t *codec_settings = NULL; + if (codec_fmtp->private_info) { + codec_settings = codec_fmtp->private_info; + memcpy(codec_settings, &default_codec_settings, sizeof(*codec_settings)); + } - if (!codec_fmtp) { - return SWITCH_STATUS_FALSE; - } - - if (!fmtp) { + if (fmtp) { + int x, argc; + char *argv[10]; + char *fmtp_dup = strdup(fmtp); + + switch_assert(fmtp_dup); + + argc = switch_separate_string(fmtp_dup, ';', argv, (sizeof(argv) / sizeof(argv[0]))); + + for (x = 0; x < argc; x++) { + char *data = argv[x]; + char *arg; + switch_assert(data); + while (*data == ' ') { + data++; + } + if ((arg = strchr(data, '='))) { + *arg++ = '\0'; + /* + if (!strcasecmp(data, "bitrate")) { + bit_rate = atoi(arg); + } + */ + /* + if (codec_settings) { + if (!strcasecmp(data, "vad")) { + bit_rate = atoi(arg); + } + } + */ + } + } + free(fmtp_dup); + } + /*codec_fmtp->bits_per_second = bit_rate;*/ return SWITCH_STATUS_SUCCESS; } - - /* load default settings */ - if (codec_fmtp->private_info) { - codec_settings = codec_fmtp->private_info; - memcpy(codec_settings, &default_codec_settings, sizeof(*codec_settings)); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "codec_fmtp->private_info is NULL\n"); - return SWITCH_STATUS_SUCCESS; - } - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "got fmtp: %s\n", fmtp); - - fmtp_dup = strdup(fmtp); - switch_assert(fmtp_dup); - - /* parse ; separated fmtp args */ - argc = switch_separate_string(fmtp_dup, ';', argv, (sizeof(argv) / sizeof(argv[0]))); - for (x = 0; x < argc; x++) { - char *data = argv[x]; - char *arg; - switch_assert(data); - while (*data == ' ') { - data++; - } - if (!(arg = strchr(data, '='))) { - continue; - } - *arg++ = '\0'; - if (zstr(arg)) { - continue; - } - - if (!strcasecmp("vbr", data)) { - /* vbr can be on/off/vad */ - if (!strcasecmp("vad", arg)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "enabling speex vbr=vad\n"); - codec_settings->vbr = 0; - codec_settings->vad = 1; - codec_settings->pp_vad = 1; - } else { - if (switch_true(arg)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "enabling speex vbr\n"); - codec_settings->vbr = 1; - codec_settings->vad = 0; - codec_settings->pp_vad = 1; - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "disabling speex vbr\n"); - codec_settings->vbr = 0; - codec_settings->vad = 0; - codec_settings->pp_vad = 0; - } - } - } else if (!strcasecmp("cng", data)) { - /* TODO don't know how to turn on CNG */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "speex cng is unsupported\n"); - } else if (!strcasecmp("mode", data)) { - /* mode is a comma-separate list of preferred modes. Use the first mode in the list */ - char *arg_dup; - char *mode[2]; - if (!strncasecmp("any", arg, 3)) { - /* "any", keep the default setting */ - continue; - } - arg_dup = strdup(arg); - if (switch_separate_string(arg_dup, ',', mode, (sizeof(mode) / sizeof(mode[0])))) { - int mode_num = -1; - char *mode_str = mode[0]; - if (mode_str[0] == '"') { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "mode starts with \"\n"); - mode_str++; - } - if (switch_is_number(mode_str)) { - mode_num = atoi(mode_str); - } - /* TODO there might be a way to set the mode directly instead of changing the quality */ - if (codec_fmtp->actual_samples_per_second == 8000) { - switch (mode_num) { - case 1: - codec_settings->quality = 0; - break; - case 2: - codec_settings->quality = 2; - break; - case 3: - codec_settings->quality = 4; - break; - case 4: - codec_settings->quality = 6; - break; - case 5: - codec_settings->quality = 8; - break; - case 6: - codec_settings->quality = 9; - break; - case 7: - codec_settings->quality = 10; - break; - case 8: - codec_settings->quality = 1; - break; - default: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "ignoring invalid speex/8000 mode %s\n", mode_str); - continue; - } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "choosing speex/8000 mode %s\n", mode_str); - codec_settings->quality = codec_settings->quality; - codec_settings->vbr_quality = codec_settings->quality; - } else { - if (mode_num >= 0 && mode_num <= 10) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "choosing speex/%d mode %s\n", codec_fmtp->actual_samples_per_second, mode_str); - codec_settings->quality = mode_num; - codec_settings->vbr_quality = mode_num; - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "ignoring invalid speex/%d mode %s\n", codec_fmtp->actual_samples_per_second, mode_str); - continue; - } - } - } - free(arg_dup); - } - } - free(fmtp_dup); - /*codec_fmtp->bits_per_second = bit_rate;*/ - return SWITCH_STATUS_SUCCESS; + return SWITCH_STATUS_FALSE; } @@ -274,7 +182,6 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla memset(&codec_fmtp, '\0', sizeof(struct switch_codec_fmtp)); codec_fmtp.private_info = &codec_settings; - codec_fmtp.actual_samples_per_second = codec->implementation->actual_samples_per_second; switch_speex_fmtp_parse(codec->fmtp_in, &codec_fmtp); memcpy(&context->codec_settings, &codec_settings, sizeof(context->codec_settings)); @@ -298,24 +205,11 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla speex_encoder_ctl(context->encoder_state, SPEEX_GET_FRAME_SIZE, &context->encoder_frame_size); speex_encoder_ctl(context->encoder_state, SPEEX_SET_COMPLEXITY, &context->codec_settings.complexity); if (context->codec_settings.preproc) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor on\n"); context->pp = speex_preprocess_state_init(context->encoder_frame_size, codec->implementation->actual_samples_per_second); - if (context->codec_settings.pp_vad) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor vad on\n"); - } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_VAD, &context->codec_settings.pp_vad); - if (context->codec_settings.pp_agc) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor agc on\n"); - } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_AGC, &context->codec_settings.pp_agc); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_AGC_LEVEL, &context->codec_settings.pp_agc_level); - if (context->codec_settings.pp_denoise) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor denoise on\n"); - } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DENOISE, &context->codec_settings.pp_denoise); - if (context->codec_settings.pp_dereverb) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor dereverb on\n"); - } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB, &context->codec_settings.pp_dereverb); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &context->codec_settings.pp_dereverb_decay); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &context->codec_settings.pp_dereverb_level); @@ -324,21 +218,17 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla if (!context->codec_settings.abr && !context->codec_settings.vbr) { speex_encoder_ctl(context->encoder_state, SPEEX_SET_QUALITY, &context->codec_settings.quality); if (context->codec_settings.vad) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "vad on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VAD, &context->codec_settings.vad); } } if (context->codec_settings.vbr) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "vbr on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VBR, &context->codec_settings.vbr); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VBR_QUALITY, &context->codec_settings.vbr_quality); } if (context->codec_settings.abr) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "abr on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_ABR, &context->codec_settings.abr); } if (context->codec_settings.dtx) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "dtx on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_DTX, &context->codec_settings.dtx); } } @@ -353,7 +243,6 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "initialized Speex codec \n"); codec->private_info = context; return SWITCH_STATUS_SUCCESS; } @@ -390,15 +279,17 @@ static switch_status_t switch_speex_encode(switch_codec_t *codec, if (is_speech) { switch_clear_flag(context, SWITCH_CODEC_FLAG_SILENCE); + *flag |= SWITCH_CODEC_FLAG_SILENCE_STOP; *flag &= ~SFF_CNG; } else { if (switch_test_flag(context, SWITCH_CODEC_FLAG_SILENCE)) { *encoded_data_len = 0; - *flag |= SFF_CNG; + *flag |= SWITCH_CODEC_FLAG_SILENCE | SFF_CNG; return SWITCH_STATUS_SUCCESS; } switch_set_flag(context, SWITCH_CODEC_FLAG_SILENCE); + *flag |= SWITCH_CODEC_FLAG_SILENCE_START; } From 385a92cec74598122f389ee42d28f928c2f15fd9 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 15:30:37 -0500 Subject: [PATCH 126/630] add origination_nested_vars=true to allow vars within vars in originate strings e.g. [originate {origination_nested_vars=true,TEST=,var=,recur=W00t}user/1004 3000] will end up as w00t --- src/include/switch_channel.h | 1 + src/switch_channel.c | 11 ++++++-- src/switch_event.c | 53 ++++++++++++++++++++++-------------- src/switch_ivr_originate.c | 14 ++++++++-- 4 files changed, 54 insertions(+), 25 deletions(-) diff --git a/src/include/switch_channel.h b/src/include/switch_channel.h index d566434457..6b9d0e1697 100644 --- a/src/include/switch_channel.h +++ b/src/include/switch_channel.h @@ -273,6 +273,7 @@ SWITCH_DECLARE(const char *) switch_channel_get_hold_music_partner(switch_channe SWITCH_DECLARE(uint32_t) switch_channel_del_variable_prefix(switch_channel_t *channel, const char *prefix); +#define switch_channel_set_variable_safe(_channel, _var, _val) switch_channel_set_variable_var_check(_channel, _var, _val, SWITCH_FALSE) #define switch_channel_set_variable(_channel, _var, _val) switch_channel_set_variable_var_check(_channel, _var, _val, SWITCH_TRUE) #define switch_channel_set_variable_partner(_channel, _var, _val) switch_channel_set_variable_partner_var_check(_channel, _var, _val, SWITCH_TRUE) diff --git a/src/switch_channel.c b/src/switch_channel.c index b15b0948a7..0380f422db 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -3350,7 +3350,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c char *p, *c = NULL; char *data, *indup, *endof_indup; size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128; - char *cloned_sub_val = NULL, *sub_val = NULL; + char *cloned_sub_val = NULL, *sub_val = NULL, *expanded_sub_val = NULL; char *func_val = NULL, *sb = NULL; int nv = 0; @@ -3482,7 +3482,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c int ooffset = 0; char *ptr; int idx = -1; - + if ((expanded = switch_channel_expand_variables_check(channel, (char *) vname, var_list, api_list)) == vname) { expanded = NULL; } else { @@ -3508,6 +3508,12 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c sub_val = "INVALID"; } + if ((expanded_sub_val = switch_channel_expand_variables(channel, sub_val)) == sub_val) { + expanded_sub_val = NULL; + } else { + sub_val = expanded_sub_val; + } + if (offset || ooffset) { cloned_sub_val = strdup(sub_val); switch_assert(cloned_sub_val); @@ -3587,6 +3593,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c switch_safe_free(func_val); switch_safe_free(cloned_sub_val); + switch_safe_free(expanded_sub_val); sub_val = NULL; vname = NULL; vtype = 0; diff --git a/src/switch_event.c b/src/switch_event.c index 25bab3185a..dc4168687e 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -1457,7 +1457,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, switch_event_t *e = *event; char *var_array[1024] = { 0 }; int var_count = 0; - char *next; + char *next = NULL, *vnext = NULL; if (dup) { vdatap = strdup(data); @@ -1479,6 +1479,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, if (check_a) end = check_a; if (end) { + next = end; vdata++; *end++ = '\0'; } else { @@ -1494,13 +1495,17 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, for (;;) { - if ((next = strchr(vdata, b))) { + if (next) { char *pnext; + *next++ = '\0'; if ((pnext = switch_strchr_strict(next, a, " "))) { next = pnext + 1; } + + vnext = switch_find_end_paren(next, a, b); + next = NULL; } @@ -1519,14 +1524,14 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, if ((inner_var_count = switch_separate_string(var_array[x], '=', inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Parsing variable [%s]=[%s]\n", inner_var_array[0], inner_var_array[1]); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Parsing variable [%s]=[%s]\n", inner_var_array[0], inner_var_array[1]); switch_event_add_header_string(e, SWITCH_STACK_BOTTOM, inner_var_array[0], inner_var_array[1]); } } } - if (next) { - vdata = next; + if (vnext) { + vdata = vnext; } else { break; } @@ -1993,7 +1998,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, char *data, *indup, *endof_indup; size_t sp = 0, len = 0, olen = 0, vtype = 0, br = 0, cpos, block = 128; const char *sub_val = NULL; - char *cloned_sub_val = NULL; + char *cloned_sub_val = NULL, *expanded_sub_val = NULL; char *func_val = NULL; int nv = 0; char *gvar = NULL, *sb = NULL; @@ -2156,23 +2161,30 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, sub_val = "INVALID"; } - } - if (offset || ooffset) { - cloned_sub_val = strdup(sub_val); - switch_assert(cloned_sub_val); - sub_val = cloned_sub_val; - } + if ((expanded_sub_val = switch_event_expand_headers(event, sub_val)) == sub_val) { + expanded_sub_val = NULL; + } else { + sub_val = expanded_sub_val; + } + - if (offset >= 0) { - sub_val += offset; - } else if ((size_t) abs(offset) <= strlen(sub_val)) { - sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset); - } + if (offset || ooffset) { + cloned_sub_val = strdup(sub_val); + switch_assert(cloned_sub_val); + sub_val = cloned_sub_val; + } + + if (offset >= 0) { + sub_val += offset; + } else if ((size_t) abs(offset) <= strlen(sub_val)) { + sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset); + } - if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) { - if ((ptr = (char *) sub_val + ooffset)) { - *ptr = '\0'; + if (ooffset > 0 && (size_t) ooffset < strlen(sub_val)) { + if ((ptr = (char *) sub_val + ooffset)) { + *ptr = '\0'; + } } } @@ -2232,6 +2244,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, switch_safe_free(func_val); switch_safe_free(cloned_sub_val); + switch_safe_free(expanded_sub_val); sub_val = NULL; vname = NULL; vtype = 0; diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 1528f6a9d5..825de90d32 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -122,6 +122,7 @@ typedef struct { int bridge_early_media; switch_thread_t *ethread; switch_caller_profile_t *caller_profile_override; + switch_bool_t check_vars; switch_memory_pool_t *pool; } originate_global_t; @@ -1764,6 +1765,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess caller_profile_override, ovars, flags, cancel_cause); } + oglobals.check_vars = SWITCH_TRUE; oglobals.ringback_ok = 1; oglobals.bridge_early_media = -1; oglobals.file = NULL; @@ -1882,6 +1884,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess data++; } + if ((ovars && switch_true(switch_event_get_header(ovars,"origination_nested_vars"))) || + (caller_channel && switch_true(switch_channel_get_variable(caller_channel, "origination_nested_vars"))) + || switch_true(switch_core_get_variable("origination_nested_vars")) || switch_stristr("origination_nested_vars=true", data)) { + oglobals.check_vars = SWITCH_FALSE; + } + /* extract channel variables, allowing multiple sets of braces */ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Parsing global variables\n"); while (*data == '{') { @@ -2510,7 +2518,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_event_header_t *header; /* install the vars from the {} params */ for (header = var_event->headers; header; header = header->next) { - switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value); + switch_channel_set_variable_var_check(originate_status[i].peer_channel, header->name, header->value, oglobals.check_vars); } } } @@ -2519,7 +2527,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (local_var_event) { switch_event_header_t *header; for (header = local_var_event->headers; header; header = header->next) { - switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value); + switch_channel_set_variable_var_check(originate_status[i].peer_channel, header->name, header->value, oglobals.check_vars); } switch_event_destroy(&local_var_event); } @@ -2529,7 +2537,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_event_header_t *header; /* install the vars from the {} params */ for (header = var_event->headers; header; header = header->next) { - switch_channel_set_variable(originate_status[i].peer_channel, header->name, header->value); + switch_channel_set_variable_var_check(originate_status[i].peer_channel, header->name, header->value, oglobals.check_vars); } } } From 9ced4a353be73b486f976d2d68fcaec862e0fedc Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Apr 2012 15:31:56 -0500 Subject: [PATCH 127/630] FS-4037 --resolve --- src/mod/codecs/mod_speex/mod_speex.c | 197 +++++++++++++++++++++------ 1 file changed, 153 insertions(+), 44 deletions(-) diff --git a/src/mod/codecs/mod_speex/mod_speex.c b/src/mod/codecs/mod_speex/mod_speex.c index aaec0a6602..ab9a044b53 100644 --- a/src/mod/codecs/mod_speex/mod_speex.c +++ b/src/mod/codecs/mod_speex/mod_speex.c @@ -117,51 +117,143 @@ struct speex_context { static switch_status_t switch_speex_fmtp_parse(const char *fmtp, switch_codec_fmtp_t *codec_fmtp) { - if (codec_fmtp) { - speex_codec_settings_t *codec_settings = NULL; - if (codec_fmtp->private_info) { - codec_settings = codec_fmtp->private_info; - memcpy(codec_settings, &default_codec_settings, sizeof(*codec_settings)); - } + speex_codec_settings_t *codec_settings = NULL; + int x, argc; + char *argv[10]; + char *fmtp_dup = NULL; - if (fmtp) { - int x, argc; - char *argv[10]; - char *fmtp_dup = strdup(fmtp); + if (!codec_fmtp) { + return SWITCH_STATUS_FALSE; + } - switch_assert(fmtp_dup); - - argc = switch_separate_string(fmtp_dup, ';', argv, (sizeof(argv) / sizeof(argv[0]))); - - for (x = 0; x < argc; x++) { - char *data = argv[x]; - char *arg; - switch_assert(data); - while (*data == ' ') { - data++; - } - if ((arg = strchr(data, '='))) { - *arg++ = '\0'; - /* - if (!strcasecmp(data, "bitrate")) { - bit_rate = atoi(arg); - } - */ - /* - if (codec_settings) { - if (!strcasecmp(data, "vad")) { - bit_rate = atoi(arg); - } - } - */ - } - } - free(fmtp_dup); - } - /*codec_fmtp->bits_per_second = bit_rate;*/ + /* load default settings */ + if (codec_fmtp->private_info) { + codec_settings = codec_fmtp->private_info; + memcpy(codec_settings, &default_codec_settings, sizeof(*codec_settings)); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "codec_fmtp->private_info is NULL\n"); return SWITCH_STATUS_SUCCESS; } - return SWITCH_STATUS_FALSE; + + if (!fmtp) { + return SWITCH_STATUS_SUCCESS; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "got fmtp: %s\n", fmtp); + + fmtp_dup = strdup(fmtp); + switch_assert(fmtp_dup); + + /* parse ; separated fmtp args */ + argc = switch_separate_string(fmtp_dup, ';', argv, (sizeof(argv) / sizeof(argv[0]))); + for (x = 0; x < argc; x++) { + char *data = argv[x]; + char *arg; + switch_assert(data); + while (*data == ' ') { + data++; + } + if (!(arg = strchr(data, '='))) { + continue; + } + *arg++ = '\0'; + if (zstr(arg)) { + continue; + } + + if (!strcasecmp("vbr", data)) { + /* vbr can be on/off/vad */ + if (!strcasecmp("vad", arg)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "enabling speex vbr=vad\n"); + codec_settings->vbr = 0; + codec_settings->vad = 1; + codec_settings->pp_vad = 1; + } else { + if (switch_true(arg)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "enabling speex vbr\n"); + codec_settings->vbr = 1; + codec_settings->vad = 0; + codec_settings->pp_vad = 1; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "disabling speex vbr\n"); + codec_settings->vbr = 0; + codec_settings->vad = 0; + codec_settings->pp_vad = 0; + } + } + } else if (!strcasecmp("cng", data)) { + /* TODO don't know how to turn on CNG */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "speex cng is unsupported\n"); + } else if (!strcasecmp("mode", data)) { + /* mode is a comma-separate list of preferred modes. Use the first mode in the list */ + char *arg_dup; + char *mode[2]; + if (!strncasecmp("any", arg, 3)) { + /* "any", keep the default setting */ + continue; + } + arg_dup = strdup(arg); + if (switch_separate_string(arg_dup, ',', mode, (sizeof(mode) / sizeof(mode[0])))) { + int mode_num = -1; + char *mode_str = mode[0]; + if (mode_str[0] == '"') { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "mode starts with \"\n"); + mode_str++; + } + if (switch_is_number(mode_str)) { + mode_num = atoi(mode_str); + } + /* TODO there might be a way to set the mode directly instead of changing the quality */ + if (codec_fmtp->actual_samples_per_second == 8000) { + switch (mode_num) { + case 1: + codec_settings->quality = 0; + break; + case 2: + codec_settings->quality = 2; + break; + case 3: + codec_settings->quality = 4; + break; + case 4: + codec_settings->quality = 6; + break; + case 5: + codec_settings->quality = 8; + break; + case 6: + codec_settings->quality = 9; + break; + case 7: + codec_settings->quality = 10; + break; + case 8: + codec_settings->quality = 1; + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "ignoring invalid speex/8000 mode %s\n", mode_str); + continue; + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "choosing speex/8000 mode %s\n", mode_str); + codec_settings->quality = codec_settings->quality; + codec_settings->vbr_quality = codec_settings->quality; + } else { + if (mode_num >= 0 && mode_num <= 10) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "choosing speex/%d mode %s\n", codec_fmtp->actual_samples_per_second, mode_str); + codec_settings->quality = mode_num; + codec_settings->vbr_quality = mode_num; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "ignoring invalid speex/%d mode %s\n", codec_fmtp->actual_samples_per_second, mode_str); + continue; + } + } + } + free(arg_dup); + } + } + free(fmtp_dup); + /*codec_fmtp->bits_per_second = bit_rate;*/ + return SWITCH_STATUS_SUCCESS; } @@ -182,6 +274,7 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla memset(&codec_fmtp, '\0', sizeof(struct switch_codec_fmtp)); codec_fmtp.private_info = &codec_settings; + codec_fmtp.actual_samples_per_second = codec->implementation->actual_samples_per_second; switch_speex_fmtp_parse(codec->fmtp_in, &codec_fmtp); memcpy(&context->codec_settings, &codec_settings, sizeof(context->codec_settings)); @@ -205,11 +298,24 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla speex_encoder_ctl(context->encoder_state, SPEEX_GET_FRAME_SIZE, &context->encoder_frame_size); speex_encoder_ctl(context->encoder_state, SPEEX_SET_COMPLEXITY, &context->codec_settings.complexity); if (context->codec_settings.preproc) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor on\n"); context->pp = speex_preprocess_state_init(context->encoder_frame_size, codec->implementation->actual_samples_per_second); + if (context->codec_settings.pp_vad) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor vad on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_VAD, &context->codec_settings.pp_vad); + if (context->codec_settings.pp_agc) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor agc on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_AGC, &context->codec_settings.pp_agc); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_AGC_LEVEL, &context->codec_settings.pp_agc_level); + if (context->codec_settings.pp_denoise) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor denoise on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DENOISE, &context->codec_settings.pp_denoise); + if (context->codec_settings.pp_dereverb) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "preprocessor dereverb on\n"); + } speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB, &context->codec_settings.pp_dereverb); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &context->codec_settings.pp_dereverb_decay); speex_preprocess_ctl(context->pp, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &context->codec_settings.pp_dereverb_level); @@ -218,17 +324,21 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla if (!context->codec_settings.abr && !context->codec_settings.vbr) { speex_encoder_ctl(context->encoder_state, SPEEX_SET_QUALITY, &context->codec_settings.quality); if (context->codec_settings.vad) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "vad on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VAD, &context->codec_settings.vad); } } if (context->codec_settings.vbr) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "vbr on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VBR, &context->codec_settings.vbr); speex_encoder_ctl(context->encoder_state, SPEEX_SET_VBR_QUALITY, &context->codec_settings.vbr_quality); } if (context->codec_settings.abr) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "abr on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_ABR, &context->codec_settings.abr); } if (context->codec_settings.dtx) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "dtx on\n"); speex_encoder_ctl(context->encoder_state, SPEEX_SET_DTX, &context->codec_settings.dtx); } } @@ -243,6 +353,7 @@ static switch_status_t switch_speex_init(switch_codec_t *codec, switch_codec_fla + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "initialized Speex codec \n"); codec->private_info = context; return SWITCH_STATUS_SUCCESS; } @@ -279,17 +390,15 @@ static switch_status_t switch_speex_encode(switch_codec_t *codec, if (is_speech) { switch_clear_flag(context, SWITCH_CODEC_FLAG_SILENCE); - *flag |= SWITCH_CODEC_FLAG_SILENCE_STOP; *flag &= ~SFF_CNG; } else { if (switch_test_flag(context, SWITCH_CODEC_FLAG_SILENCE)) { *encoded_data_len = 0; - *flag |= SWITCH_CODEC_FLAG_SILENCE | SFF_CNG; + *flag |= SFF_CNG; return SWITCH_STATUS_SUCCESS; } switch_set_flag(context, SWITCH_CODEC_FLAG_SILENCE); - *flag |= SWITCH_CODEC_FLAG_SILENCE_START; } From d31b3e488cdf19b57943a13377e6649965dd1502 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 12 Apr 2012 11:41:31 +0200 Subject: [PATCH 128/630] gsmopen: signal low alarm is now at < than 11 RSSI --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index c1a195c187..78e9860f62 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -818,13 +818,13 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us if (err < 2) { ERRORA("|%s| is not formatted as: |+CSQ: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } else { - if (signal_quality < 11 || signal_quality == 99) { + if (signal_quality < 9 || signal_quality == 99) { ERRORA ("|%s| CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); tech_pvt->got_signal = 0; alarm_event(tech_pvt, ALARM_NETWORK_NO_SIGNAL, "CELLPHONE GETS ALMOST NO SIGNAL, consider to move it or additional antenna"); - } else if (signal_quality < 15) { + } else if (signal_quality < 11) { WARNINGA("|%s| CELLPHONE GETS SIGNAL LOW\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); tech_pvt->got_signal = 1; alarm_event(tech_pvt, ALARM_NETWORK_LOW_SIGNAL, "CELLPHONE GETS SIGNAL LOW"); From 5f38a7f8576634b39a589bd54955a66247e81ad4 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Thu, 29 Mar 2012 11:09:46 +0200 Subject: [PATCH 129/630] ftmod_misdn: Remove unused timerfd code. Timer-based b-channel tx gating won't work anyway, so remove all those "#if 0"-ed bits of cruft. Also remove the mISDN-specific timerfd_create() check in configure. Signed-off-by: Stefan Knoblich --- libs/freetdm/configure.ac | 13 +----- .../src/ftmod/ftmod_misdn/ftmod_misdn.c | 44 +------------------ 2 files changed, 3 insertions(+), 54 deletions(-) diff --git a/libs/freetdm/configure.ac b/libs/freetdm/configure.ac index 292c1e7cfa..d166233f00 100644 --- a/libs/freetdm/configure.ac +++ b/libs/freetdm/configure.ac @@ -407,22 +407,13 @@ AC_ARG_WITH([misdn], ) AS_IF([test "${with_misdn}" != "no"], [AC_MSG_RESULT([${as_nl}<<>> ftmod_misdn (Linux mISDN I/O plugin)]) - AC_CHECK_FUNCS([timerfd_create],, - [AS_IF([test "${with_misdn}" = "yes"], - [AC_MSG_ERROR([no timerfd support in libc])], - [AC_MSG_NOTICE([no timerfd support in libc])] - )] - ) - AC_CHECK_HEADER([mISDN/mISDNif.h],, + AC_CHECK_HEADER([mISDN/mISDNif.h], + [HAVE_MISDN="yes"], [AS_IF([test "${with_misdn}" = "yes"], [AC_MSG_ERROR([mISDN/mISDNif.h not found])], [AC_MSG_NOTICE([mISDN/mISDNif.h not found])] )], [#include ] - ) - AS_IF([test "${ac_cv_func_timerfd_create}" = "yes" -a "${ac_cv_header_mISDN_mISDNif_h}" = "yes"], - [HAVE_MISDN="yes"], - [AC_MSG_NOTICE([Some required dependencies are missing, module disabled])] )] ) AM_CONDITIONAL([HAVE_MISDN], [test "${HAVE_MISDN}" = "yes"]) diff --git a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c index 38480950e7..60e3c1425d 100644 --- a/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c +++ b/libs/freetdm/src/ftmod/ftmod_misdn/ftmod_misdn.c @@ -45,8 +45,6 @@ #include #include -#include - /* this is how it should have been... #ifdef HAVE_FREETDM_FREETDM_H #include @@ -256,7 +254,6 @@ struct misdn_chan_private { /* */ int state; int debugfd; - int timerfd; int active; /* hw addr of channel */ @@ -941,36 +938,7 @@ static FIO_OPEN_FUNCTION(misdn_open) ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "mISDN channel activation request sent\n"); switch (ftdmchan->type) { - case FTDM_CHAN_TYPE_B: { -#if 0 - struct itimerspec its = { - .it_interval = { 0, 0 }, - .it_value = { 0, 0 }, - }; - - its.it_interval.tv_nsec = (ftdmchan->effective_interval * 1000000); - its.it_value.tv_nsec = (ftdmchan->effective_interval * 1000000); - - /* create tx timerfd */ - chan_priv->timerfd = timerfd_create(CLOCK_MONOTONIC, O_NONBLOCK); - if (chan_priv->timerfd < 0) { - ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "mISDN failed to create b-channel tx interval timer: %s\n", - strerror(errno)); - return FTDM_FAIL; - } - - /* start tx timerfd */ - ret = timerfd_settime(chan_priv->timerfd, 0, &its, NULL); - if (ret < 0) { - ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "mISDN failed to start b-channel tx interval timer: %s\n", - strerror(errno)); - return FTDM_FAIL; - } - - ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "mISDN created tx interval (%d ms) timer\n", - ftdmchan->effective_interval); -#endif - } + case FTDM_CHAN_TYPE_B: case FTDM_CHAN_TYPE_DQ921: chan_priv->state = MISDN_CHAN_STATE_OPEN; break; @@ -998,15 +966,6 @@ static FIO_CLOSE_FUNCTION(misdn_close) /* deactivate b-channels on close */ if (ftdm_channel_get_type(ftdmchan) == FTDM_CHAN_TYPE_B) { -#if 0 - /* - * Stop tx timerfd - */ - if (chan_priv->timerfd >= 0) { - close(chan_priv->timerfd); - chan_priv->timerfd = -1; - } -#endif /* * Send deactivation request (don't wait for answer) */ @@ -1570,7 +1529,6 @@ static ftdm_status_t misdn_open_range(ftdm_span_t *span, ftdm_chan_type_t type, priv->addr = addr; priv->debugfd = -1; - priv->timerfd = -1; /* * Create event queue From f9b32667202c705169bf9e5bc5c0687eea923718 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 07:23:08 -0500 Subject: [PATCH 130/630] endless recursion loop protection to go with new recursive variable expansion feature --- src/include/switch_channel.h | 4 ++-- src/include/switch_event.h | 4 ++-- src/switch_channel.c | 14 +++++++++----- src/switch_event.c | 14 +++++++++----- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/include/switch_channel.h b/src/include/switch_channel.h index 6b9d0e1697..37bb6f1102 100644 --- a/src/include/switch_channel.h +++ b/src/include/switch_channel.h @@ -593,8 +593,8 @@ SWITCH_DECLARE(void) switch_channel_event_set_extended_data(_In_ switch_channel_ \return the original string if no expansion takes place otherwise a new string that must be freed \note it's necessary to test if the return val is the same as the input and free the string if it is not. */ -SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *channel, const char *in, switch_event_t *var_list, switch_event_t *api_list); -#define switch_channel_expand_variables(_channel, _in) switch_channel_expand_variables_check(_channel, _in, NULL, NULL) +SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *channel, const char *in, switch_event_t *var_list, switch_event_t *api_list, uint32_t recur); +#define switch_channel_expand_variables(_channel, _in) switch_channel_expand_variables_check(_channel, _in, NULL, NULL, 0) SWITCH_DECLARE(char *) switch_channel_build_param_string(_In_ switch_channel_t *channel, _In_opt_ switch_caller_profile_t *caller_profile, diff --git a/src/include/switch_event.h b/src/include/switch_event.h index c77e4aebb4..13debb4b6b 100644 --- a/src/include/switch_event.h +++ b/src/include/switch_event.h @@ -330,8 +330,8 @@ SWITCH_DECLARE(switch_status_t) switch_event_add_body(switch_event_t *event, con SWITCH_DECLARE(switch_status_t) switch_event_set_body(switch_event_t *event, const char *body); -SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, const char *in, switch_event_t *var_list, switch_event_t *api_list); -#define switch_event_expand_headers(_event, _in) switch_event_expand_headers_check(_event, _in, NULL, NULL) +SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, const char *in, switch_event_t *var_list, switch_event_t *api_list, uint32_t recur); +#define switch_event_expand_headers(_event, _in) switch_event_expand_headers_check(_event, _in, NULL, NULL, 0) SWITCH_DECLARE(switch_status_t) switch_event_create_pres_in_detailed(_In_z_ char *file, _In_z_ char *func, _In_ int line, _In_z_ const char *proto, _In_z_ const char *login, diff --git a/src/switch_channel.c b/src/switch_channel.c index 0380f422db..b6032d73f2 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -3345,7 +3345,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_answer(switch_channel_t * memset(c, 0, olen - cpos);\ }} \ -SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *channel, const char *in, switch_event_t *var_list, switch_event_t *api_list) +SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *channel, const char *in, switch_event_t *var_list, switch_event_t *api_list, uint32_t recur) { char *p, *c = NULL; char *data, *indup, *endof_indup; @@ -3354,6 +3354,10 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c char *func_val = NULL, *sb = NULL; int nv = 0; + if (recur > 100) { + return (char *) in; + } + if (zstr(in)) { return (char *) in; } @@ -3483,7 +3487,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c char *ptr; int idx = -1; - if ((expanded = switch_channel_expand_variables_check(channel, (char *) vname, var_list, api_list)) == vname) { + if ((expanded = switch_channel_expand_variables_check(channel, (char *) vname, var_list, api_list, recur+1)) == vname) { expanded = NULL; } else { vname = expanded; @@ -3508,7 +3512,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c sub_val = "INVALID"; } - if ((expanded_sub_val = switch_channel_expand_variables(channel, sub_val)) == sub_val) { + if ((expanded_sub_val = switch_channel_expand_variables_check(channel, sub_val, var_list, api_list, recur+1)) == sub_val) { expanded_sub_val = NULL; } else { sub_val = expanded_sub_val; @@ -3547,13 +3551,13 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c if (stream.data) { char *expanded_vname = NULL; - if ((expanded_vname = switch_channel_expand_variables_check(channel, (char *) vname, var_list, api_list)) == vname) { + if ((expanded_vname = switch_channel_expand_variables_check(channel, (char *) vname, var_list, api_list, recur+1)) == vname) { expanded_vname = NULL; } else { vname = expanded_vname; } - if ((expanded = switch_channel_expand_variables_check(channel, vval, var_list, api_list)) == vval) { + if ((expanded = switch_channel_expand_variables_check(channel, vval, var_list, api_list, recur+1)) == vval) { expanded = NULL; } else { vval = expanded; diff --git a/src/switch_event.c b/src/switch_event.c index dc4168687e..deb972a090 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -1992,7 +1992,7 @@ if ((dp = realloc(data, olen))) {\ memset(c, 0, olen - cpos);\ }} \ -SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, const char *in, switch_event_t *var_list, switch_event_t *api_list) +SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, const char *in, switch_event_t *var_list, switch_event_t *api_list, uint32_t recur) { char *p, *c = NULL; char *data, *indup, *endof_indup; @@ -2003,6 +2003,10 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, int nv = 0; char *gvar = NULL, *sb = NULL; + if (recur > 100) { + return (char *) in; + } + if (zstr(in)) { return (char *) in; } @@ -2132,7 +2136,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, char *ptr; int idx = -1; - if ((expanded = switch_event_expand_headers_check(event, (char *) vname, var_list, api_list)) == vname) { + if ((expanded = switch_event_expand_headers_check(event, (char *) vname, var_list, api_list, recur+1)) == vname) { expanded = NULL; } else { vname = expanded; @@ -2162,7 +2166,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, } - if ((expanded_sub_val = switch_event_expand_headers(event, sub_val)) == sub_val) { + if ((expanded_sub_val = switch_event_expand_headers_check(event, sub_val, var_list, api_list, recur+1)) == sub_val) { expanded_sub_val = NULL; } else { sub_val = expanded_sub_val; @@ -2198,13 +2202,13 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, if (stream.data) { char *expanded_vname = NULL; - if ((expanded_vname = switch_event_expand_headers_check(event, (char *) vname, var_list, api_list)) == vname) { + if ((expanded_vname = switch_event_expand_headers_check(event, (char *) vname, var_list, api_list, recur+1)) == vname) { expanded_vname = NULL; } else { vname = expanded_vname; } - if ((expanded = switch_event_expand_headers_check(event, vval, var_list, api_list)) == vval) { + if ((expanded = switch_event_expand_headers_check(event, vval, var_list, api_list, recur+1)) == vval) { expanded = NULL; } else { vval = expanded; From 7e69fd8fd70d13cf7a2cd1556d7521a3ae22245a Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 12 Apr 2012 10:35:26 -0500 Subject: [PATCH 131/630] vs2010 reswig --- .../mod_managed/freeswitch_wrap.2010.cxx | 52 +++++++++++++++++-- .../mod_managed/managed/swig.2010.cs | 50 +++++++++++++++--- 2 files changed, 90 insertions(+), 12 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx index d25bcff52d..27cc9fb600 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx @@ -6595,6 +6595,16 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_set_read_replace_frame( } +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_core_cpu_count() { + unsigned long jresult ; + uint32_t result; + + result = (uint32_t)switch_core_cpu_count(); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_remove(void * jarg1, void * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -24949,6 +24959,14 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_perform_mark_answered(void * ja } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_check_zrtp(void * jarg1) { + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + + arg1 = (switch_channel_t *)jarg1; + switch_channel_check_zrtp(arg1); +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_perform_ring_ready_value(void * jarg1, int jarg2, char * jarg3, char * jarg4, int jarg5) { int jresult ; switch_channel_t *arg1 = (switch_channel_t *) 0 ; @@ -25291,19 +25309,21 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_extended_data(void * } -SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4, unsigned long jarg5) { char * jresult ; switch_channel_t *arg1 = (switch_channel_t *) 0 ; char *arg2 = (char *) 0 ; switch_event_t *arg3 = (switch_event_t *) 0 ; switch_event_t *arg4 = (switch_event_t *) 0 ; + uint32_t arg5 ; char *result = 0 ; arg1 = (switch_channel_t *)jarg1; arg2 = (char *)jarg2; arg3 = (switch_event_t *)jarg3; arg4 = (switch_event_t *)jarg4; - result = (char *)switch_channel_expand_variables_check(arg1,(char const *)arg2,arg3,arg4); + arg5 = (uint32_t)jarg5; + result = (char *)switch_channel_expand_variables_check(arg1,(char const *)arg2,arg3,arg4,arg5); jresult = SWIG_csharp_string_callback((const char *)result); return jresult; } @@ -26881,19 +26901,21 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_event_set_body(void * jarg1, char * jar } -SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_expand_headers_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_expand_headers_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4, unsigned long jarg5) { char * jresult ; switch_event_t *arg1 = (switch_event_t *) 0 ; char *arg2 = (char *) 0 ; switch_event_t *arg3 = (switch_event_t *) 0 ; switch_event_t *arg4 = (switch_event_t *) 0 ; + uint32_t arg5 ; char *result = 0 ; arg1 = (switch_event_t *)jarg1; arg2 = (char *)jarg2; arg3 = (switch_event_t *)jarg3; arg4 = (switch_event_t *)jarg4; - result = (char *)switch_event_expand_headers_check(arg1,(char const *)arg2,arg3,arg4); + arg5 = (uint32_t)jarg5; + result = (char *)switch_event_expand_headers_check(arg1,(char const *)arg2,arg3,arg4,arg5); jresult = SWIG_csharp_string_callback((const char *)result); return jresult; } @@ -30456,6 +30478,14 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_break(void * jarg1) { } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_flush(void * jarg1) { + switch_rtp_t *arg1 = (switch_rtp_t *) 0 ; + + arg1 = (switch_rtp_t *)jarg1; + switch_rtp_flush(arg1); +} + + SWIGEXPORT unsigned char SWIGSTDCALL CSharp_switch_rtp_ready(void * jarg1) { unsigned char jresult ; switch_rtp_t *arg1 = (switch_rtp_t *) 0 ; @@ -31892,6 +31922,20 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_toxml(void * jarg1, int jarg2) { } +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_toxml_nolock(void * jarg1, int jarg2) { + char * jresult ; + switch_xml_t arg1 = (switch_xml_t) 0 ; + switch_bool_t arg2 ; + char *result = 0 ; + + arg1 = (switch_xml_t)jarg1; + arg2 = (switch_bool_t)jarg2; + result = (char *)switch_xml_toxml_nolock(arg1,arg2); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_toxml_buf(void * jarg1, char * jarg2, void * jarg3, void * jarg4, int jarg5) { char * jresult ; switch_xml_t arg1 = (switch_xml_t) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.2010.cs b/src/mod/languages/mod_managed/managed/swig.2010.cs index 336e468c61..d814ce15b9 100644 --- a/src/mod/languages/mod_managed/managed/swig.2010.cs +++ b/src/mod/languages/mod_managed/managed/swig.2010.cs @@ -1131,6 +1131,11 @@ public class freeswitch { freeswitchPINVOKE.switch_core_media_bug_set_read_replace_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug), switch_frame.getCPtr(frame)); } + public static uint switch_core_cpu_count() { + uint ret = freeswitchPINVOKE.switch_core_cpu_count(); + return ret; + } + public static switch_status_t switch_core_media_bug_remove(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_media_bug bug) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_remove(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_media_bug.getCPtr(bug)); return ret; @@ -3830,6 +3835,10 @@ public class freeswitch { return ret; } + public static void switch_channel_check_zrtp(SWIGTYPE_p_switch_channel channel) { + freeswitchPINVOKE.switch_channel_check_zrtp(SWIGTYPE_p_switch_channel.getCPtr(channel)); + } + public static switch_status_t switch_channel_perform_ring_ready_value(SWIGTYPE_p_switch_channel channel, switch_ring_ready_t rv, string file, string func, int line) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_channel_perform_ring_ready_value(SWIGTYPE_p_switch_channel.getCPtr(channel), (int)rv, file, func, line); return ret; @@ -3949,8 +3958,8 @@ public class freeswitch { freeswitchPINVOKE.switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1)); } - public static string switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel channel, string arg1, switch_event var_list, switch_event api_list) { - string ret = freeswitchPINVOKE.switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list)); + public static string switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel channel, string arg1, switch_event var_list, switch_event api_list, uint recur) { + string ret = freeswitchPINVOKE.switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list), recur); return ret; } @@ -4332,8 +4341,8 @@ public class freeswitch { return ret; } - public static string switch_event_expand_headers_check(switch_event arg0, string arg1, switch_event var_list, switch_event api_list) { - string ret = freeswitchPINVOKE.switch_event_expand_headers_check(switch_event.getCPtr(arg0), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list)); + public static string switch_event_expand_headers_check(switch_event arg0, string arg1, switch_event var_list, switch_event api_list, uint recur) { + string ret = freeswitchPINVOKE.switch_event_expand_headers_check(switch_event.getCPtr(arg0), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list), recur); return ret; } @@ -5183,6 +5192,10 @@ public class freeswitch { freeswitchPINVOKE.switch_rtp_break(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); } + public static void switch_rtp_flush(SWIGTYPE_p_switch_rtp rtp_session) { + freeswitchPINVOKE.switch_rtp_flush(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); + } + public static byte switch_rtp_ready(SWIGTYPE_p_switch_rtp rtp_session) { byte ret = freeswitchPINVOKE.switch_rtp_ready(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); return ret; @@ -5495,6 +5508,11 @@ public class freeswitch { return ret; } + public static string switch_xml_toxml_nolock(switch_xml xml, switch_bool_t prn_header) { + string ret = freeswitchPINVOKE.switch_xml_toxml_nolock(switch_xml.getCPtr(xml), (int)prn_header); + return ret; + } + public static string switch_xml_toxml_buf(switch_xml xml, string buf, SWIGTYPE_p_switch_size_t buflen, SWIGTYPE_p_switch_size_t offset, switch_bool_t prn_header) { string ret = freeswitchPINVOKE.switch_xml_toxml_buf(switch_xml.getCPtr(xml), buf, SWIGTYPE_p_switch_size_t.getCPtr(buflen), SWIGTYPE_p_switch_size_t.getCPtr(offset), (int)prn_header); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -7973,6 +7991,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_read_replace_frame")] public static extern void switch_core_media_bug_set_read_replace_frame(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_cpu_count")] + public static extern uint switch_core_cpu_count(); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_remove")] public static extern int switch_core_media_bug_remove(HandleRef jarg1, HandleRef jarg2); @@ -12419,6 +12440,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_perform_mark_answered")] public static extern int switch_channel_perform_mark_answered(HandleRef jarg1, string jarg2, string jarg3, int jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_check_zrtp")] + public static extern void switch_channel_check_zrtp(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_perform_ring_ready_value")] public static extern int switch_channel_perform_ring_ready_value(HandleRef jarg1, int jarg2, string jarg3, string jarg4, int jarg5); @@ -12492,7 +12516,7 @@ class freeswitchPINVOKE { public static extern void switch_channel_event_set_extended_data(HandleRef jarg1, HandleRef jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_expand_variables_check")] - public static extern string switch_channel_expand_variables_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); + public static extern string switch_channel_expand_variables_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, uint jarg5); [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_build_param_string")] public static extern string switch_channel_build_param_string(HandleRef jarg1, HandleRef jarg2, string jarg3); @@ -12846,7 +12870,7 @@ class freeswitchPINVOKE { public static extern int switch_event_set_body(HandleRef jarg1, string jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_event_expand_headers_check")] - public static extern string switch_event_expand_headers_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); + public static extern string switch_event_expand_headers_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, uint jarg5); [DllImport("mod_managed", EntryPoint="CSharp_switch_event_create_pres_in_detailed")] public static extern int switch_event_create_pres_in_detailed(string jarg1, string jarg2, int jarg3, string jarg4, string jarg5, string jarg6, string jarg7, string jarg8, string jarg9, string jarg10, int jarg11, string jarg12, string jarg13, string jarg14, string jarg15); @@ -13577,6 +13601,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_break")] public static extern void switch_rtp_break(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_flush")] + public static extern void switch_rtp_flush(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_ready")] public static extern byte switch_rtp_ready(HandleRef jarg1); @@ -13910,6 +13937,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_toxml")] public static extern string switch_xml_toxml(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_toxml_nolock")] + public static extern string switch_xml_toxml_nolock(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_toxml_buf")] public static extern string switch_xml_toxml_buf(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, int jarg5); @@ -23022,6 +23052,8 @@ public enum switch_channel_flag_t { CF_VIDEO_REFRESH_REQ, CF_SERVICE_AUDIO, CF_SERVICE_VIDEO, + CF_ZRTP_HASH, + CF_ZRTP_PASS, CF_FLAG_MAX } @@ -24627,7 +24659,8 @@ namespace FreeSWITCH.Native { SCF_CLEAR_SQL = (1 << 17), SCF_THREADED_SYSTEM_EXEC = (1 << 18), SCF_SYNC_CLOCK_REQUESTED = (1 << 19), - SCF_CORE_ODBC_REQ = (1 << 20) + SCF_CORE_ODBC_REQ = (1 << 20), + SCF_DEBUG_SQL = (1 << 21) } } @@ -31284,7 +31317,8 @@ public enum switch_session_ctl_t { SCSC_PAUSE_CHECK, SCSC_READY_CHECK, SCSC_THREADED_SYSTEM_EXEC, - SCSC_SYNC_CLOCK_WHEN_IDLE + SCSC_SYNC_CLOCK_WHEN_IDLE, + SCSC_DEBUG_SQL } } From ccf01a6d30513a89e6cacbf5ff96426efd1f3c39 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 09:35:02 -0500 Subject: [PATCH 132/630] FS-4066 --resolve pidf and its many varieties FTW --- src/mod/endpoints/mod_sofia/sofia_presence.c | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index a736a5d64c..e7a2593353 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3880,16 +3880,24 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n open_closed = basic->txt; } - if ((person = switch_xml_child(xml, "dm:person")) && (note = switch_xml_child(person, "dm:note"))) { - note_txt = note->txt; + if ((person = switch_xml_child(xml, "dm:person"))) { + if ((note = switch_xml_child(person, "dm:note"))) { + note_txt = note->txt; + } else if ((note = switch_xml_child(person, "rpid:note"))) { + note_txt = note->txt; + } + if ((act = switch_xml_child(person, "rpid:activities")) && act->child && act->child->name) { + if ((rpid = strchr(act->child->name, ':'))) { + rpid++; + } else { + rpid = act->child->name; + } + } + if (zstr(note_txt)) note_txt = rpid; } - if (person && (act = switch_xml_child(person, "rpid:activities")) && act->child && act->child->name) { - if ((rpid = strchr(act->child->name, ':'))) { - rpid++; - } else { - rpid = act->child->name; - } + if (!strcasecmp(open_closed, "closed")) { + rpid = note_txt = "Unregistered"; } if (sofia_test_pflag(profile, PFLAG_MULTIREG) && !open) { From 76fcaf4c35e186d6efe4fc8f03429a13d3e208d6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 09:36:23 -0500 Subject: [PATCH 133/630] doh --- src/mod/applications/mod_httapi/mod_httapi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index 3db9c3fb04..3abc519b67 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -1142,7 +1142,8 @@ static switch_status_t parse_xml(client_t *client) switch_channel_get_variables(client->channel, &templ_data); switch_event_merge(templ_data, client->params); expanded = switch_event_expand_headers_check(templ_data, tag->txt, - client->profile->var_params.expand_var_list, client->profile->var_params.api_list); + client->profile->var_params.expand_var_list, + client->profile->var_params.api_list, 0); switch_event_destroy(&templ_data); } From ca2746502070fdf13f7b0cfeeb169e0a6e0b974c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 09:53:53 -0500 Subject: [PATCH 134/630] FS-4104 --resolve --- src/switch_event.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_event.c b/src/switch_event.c index deb972a090..aa965b9eea 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -1524,7 +1524,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a, if ((inner_var_count = switch_separate_string(var_array[x], '=', inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Parsing variable [%s]=[%s]\n", inner_var_array[0], inner_var_array[1]); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Parsing variable [%s]=[%s]\n", inner_var_array[0], inner_var_array[1]); switch_event_add_header_string(e, SWITCH_STACK_BOTTOM, inner_var_array[0], inner_var_array[1]); } } From f9aec85b7699a7598aecb5de3da31d09b39f46a2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 10:00:37 -0500 Subject: [PATCH 135/630] FS-4105 --resolve --- .../mod_spandsp/mod_spandsp_dsp.c | 65 +++++++++++++++++-- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c b/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c index 0b4ac48f29..636b502ce9 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c @@ -43,6 +43,10 @@ typedef struct { uint32_t last_digit_end; uint32_t digit_begin; uint32_t min_dup_digit_spacing; + int twist; + int reverse_twist; + int filter_dialtone; + int threshold; } switch_inband_dtmf_t; static void spandsp_dtmf_rx_realtime_callback(void *user_data, int code, int level, int delay) @@ -74,16 +78,12 @@ static switch_bool_t inband_dtmf_callback(switch_media_bug_t *bug, void *user_da { switch_inband_dtmf_t *pvt = (switch_inband_dtmf_t *) user_data; switch_frame_t *frame = NULL; - switch_channel_t *channel = switch_core_session_get_channel(pvt->session); switch (type) { case SWITCH_ABC_TYPE_INIT: { - const char *min_dup_digit_spacing_str = switch_channel_get_variable(channel, "min_dup_digit_spacing_ms"); pvt->dtmf_detect = dtmf_rx_init(NULL, NULL, NULL); + dtmf_rx_parms(pvt->dtmf_detect, pvt->filter_dialtone, pvt->twist, pvt->reverse_twist, pvt->threshold); dtmf_rx_set_realtime_callback(pvt->dtmf_detect, spandsp_dtmf_rx_realtime_callback, pvt); - if (!zstr(min_dup_digit_spacing_str)) { - pvt->min_dup_digit_spacing = atoi(min_dup_digit_spacing_str) * 8; - } break; } case SWITCH_ABC_TYPE_CLOSE: @@ -126,6 +126,7 @@ switch_status_t spandsp_inband_dtmf_session(switch_core_session_t *session) switch_status_t status; switch_inband_dtmf_t *pvt; switch_codec_implementation_t read_impl = { 0 }; + const char *value; switch_core_session_get_read_impl(session, &read_impl); @@ -133,8 +134,60 @@ switch_status_t spandsp_inband_dtmf_session(switch_core_session_t *session) return SWITCH_STATUS_MEMERR; } - pvt->session = session; + pvt->session = session; + /* get detector params */ + pvt->min_dup_digit_spacing = 0; + value = switch_channel_get_variable(channel, "min_dup_digit_spacing_ms"); + if (!zstr(value) && switch_is_number(value)) { + int val = atoi(value) * 8; /* convert from ms to samples */ + if (val < 0) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "min_dup_digit_spacing_ms must be >= 0\n"); + } else { + pvt->min_dup_digit_spacing = val; + } + } + + pvt->threshold = -100; + value = switch_channel_get_variable(channel, "spandsp_dtmf_rx_threshold"); + if (!zstr(value) && switch_is_number(value)) { + int val = atoi(value); + if (val < -99) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "spandsp_dtmf_rx_threshold must be >= -99 dBm0\n"); + } else { + pvt->threshold = val; + } + } + + pvt->twist = -1; + value = switch_channel_get_variable(channel, "spandsp_dtmf_rx_twist"); + if (!zstr(value) && switch_is_number(value)) { + int val = atoi(value); + if (val < 0) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "spandsp_dtmf_rx_twist must be >= 0 dB\n"); + } else { + pvt->twist = val; + } + } + + pvt->reverse_twist = -1; + value = switch_channel_get_variable(channel, "spandsp_dtmf_rx_reverse_twist"); + if (!zstr(value) && switch_is_number(value)) { + int val = atoi(value); + if (val < 0) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "spandsp_dtmf_rx_reverse_twist must be >= 0 dB\n"); + } else { + pvt->reverse_twist = val; + } + } + + pvt->filter_dialtone = -1; + value = switch_channel_get_variable(channel, "spandsp_dtmf_rx_filter_dialtone"); + if (switch_true(value)) { + pvt->filter_dialtone = 1; + } else if (switch_false(value)) { + pvt->filter_dialtone = 0; + } if (switch_channel_pre_answer(channel) != SWITCH_STATUS_SUCCESS) { return SWITCH_STATUS_FALSE; From a00e9afe927d8c57588b0b8bfd00051e780e3d71 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 12 Apr 2012 16:28:50 -0500 Subject: [PATCH 136/630] swig --- .../languages/mod_managed/freeswitch_wrap.cxx | 66 +++++++++++++++++-- src/mod/languages/mod_managed/managed/swig.cs | 58 +++++++++++++--- 2 files changed, 112 insertions(+), 12 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx index d7bf86d2ad..557cb05f76 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx @@ -6902,6 +6902,16 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_set_read_replace_frame( } +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_core_cpu_count() { + unsigned long jresult ; + uint32_t result; + + result = (uint32_t)switch_core_cpu_count(); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_remove(void * jarg1, void * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -7030,6 +7040,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_flush_all(void * jarg1) } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_set_pre_buffer_framecount(void * jarg1, unsigned long jarg2) { + int jresult ; + switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; + uint32_t arg2 ; + switch_status_t result; + + arg1 = (switch_media_bug_t *)jarg1; + arg2 = (uint32_t)jarg2; + result = (switch_status_t)switch_core_media_bug_set_pre_buffer_framecount(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_port_allocator_new(unsigned short jarg1, unsigned short jarg2, unsigned long jarg3, void * jarg4) { int jresult ; switch_port_t arg1 ; @@ -25630,6 +25654,14 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_perform_mark_answered(void * ja } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_check_zrtp(void * jarg1) { + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + + arg1 = (switch_channel_t *)jarg1; + switch_channel_check_zrtp(arg1); +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_channel_perform_ring_ready_value(void * jarg1, int jarg2, char * jarg3, char * jarg4, int jarg5) { int jresult ; switch_channel_t *arg1 = (switch_channel_t *) 0 ; @@ -25972,19 +26004,21 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_event_set_extended_data(void * } -SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_expand_variables_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4, unsigned long jarg5) { char * jresult ; switch_channel_t *arg1 = (switch_channel_t *) 0 ; char *arg2 = (char *) 0 ; switch_event_t *arg3 = (switch_event_t *) 0 ; switch_event_t *arg4 = (switch_event_t *) 0 ; + uint32_t arg5 ; char *result = 0 ; arg1 = (switch_channel_t *)jarg1; arg2 = (char *)jarg2; arg3 = (switch_event_t *)jarg3; arg4 = (switch_event_t *)jarg4; - result = (char *)switch_channel_expand_variables_check(arg1,(char const *)arg2,arg3,arg4); + arg5 = (uint32_t)jarg5; + result = (char *)switch_channel_expand_variables_check(arg1,(char const *)arg2,arg3,arg4,arg5); jresult = SWIG_csharp_string_callback((const char *)result); return jresult; } @@ -27577,19 +27611,21 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_event_set_body(void * jarg1, char * jar } -SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_expand_headers_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_event_expand_headers_check(void * jarg1, char * jarg2, void * jarg3, void * jarg4, unsigned long jarg5) { char * jresult ; switch_event_t *arg1 = (switch_event_t *) 0 ; char *arg2 = (char *) 0 ; switch_event_t *arg3 = (switch_event_t *) 0 ; switch_event_t *arg4 = (switch_event_t *) 0 ; + uint32_t arg5 ; char *result = 0 ; arg1 = (switch_event_t *)jarg1; arg2 = (char *)jarg2; arg3 = (switch_event_t *)jarg3; arg4 = (switch_event_t *)jarg4; - result = (char *)switch_event_expand_headers_check(arg1,(char const *)arg2,arg3,arg4); + arg5 = (uint32_t)jarg5; + result = (char *)switch_event_expand_headers_check(arg1,(char const *)arg2,arg3,arg4,arg5); jresult = SWIG_csharp_string_callback((const char *)result); return jresult; } @@ -31187,6 +31223,14 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_break(void * jarg1) { } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_flush(void * jarg1) { + switch_rtp_t *arg1 = (switch_rtp_t *) 0 ; + + arg1 = (switch_rtp_t *)jarg1; + switch_rtp_flush(arg1); +} + + SWIGEXPORT unsigned char SWIGSTDCALL CSharp_switch_rtp_ready(void * jarg1) { unsigned char jresult ; switch_rtp_t *arg1 = (switch_rtp_t *) 0 ; @@ -32632,6 +32676,20 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_toxml(void * jarg1, int jarg2) { } +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_toxml_nolock(void * jarg1, int jarg2) { + char * jresult ; + switch_xml_t arg1 = (switch_xml_t) 0 ; + switch_bool_t arg2 ; + char *result = 0 ; + + arg1 = (switch_xml_t)jarg1; + arg2 = (switch_bool_t)jarg2; + result = (char *)switch_xml_toxml_nolock(arg1,arg2); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_switch_xml_toxml_buf(void * jarg1, char * jarg2, void * jarg3, void * jarg4, int jarg5) { char * jresult ; switch_xml_t arg1 = (switch_xml_t) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs index 2aa430fa32..94fecfa933 100644 --- a/src/mod/languages/mod_managed/managed/swig.cs +++ b/src/mod/languages/mod_managed/managed/swig.cs @@ -1119,6 +1119,11 @@ public class freeswitch { freeswitchPINVOKE.switch_core_media_bug_set_read_replace_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug), switch_frame.getCPtr(frame)); } + public static uint switch_core_cpu_count() { + uint ret = freeswitchPINVOKE.switch_core_cpu_count(); + return ret; + } + public static switch_status_t switch_core_media_bug_remove(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_media_bug bug) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_remove(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_media_bug.getCPtr(bug)); return ret; @@ -1168,6 +1173,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_core_media_bug_set_pre_buffer_framecount(SWIGTYPE_p_switch_media_bug bug, uint framecount) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_set_pre_buffer_framecount(SWIGTYPE_p_switch_media_bug.getCPtr(bug), framecount); + return ret; + } + public static switch_status_t switch_core_port_allocator_new(ushort start, ushort end, uint flags, SWIGTYPE_p_p_switch_core_port_allocator new_allocator) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_port_allocator_new(start, end, flags, SWIGTYPE_p_p_switch_core_port_allocator.getCPtr(new_allocator)); return ret; @@ -3813,6 +3823,10 @@ public class freeswitch { return ret; } + public static void switch_channel_check_zrtp(SWIGTYPE_p_switch_channel channel) { + freeswitchPINVOKE.switch_channel_check_zrtp(SWIGTYPE_p_switch_channel.getCPtr(channel)); + } + public static switch_status_t switch_channel_perform_ring_ready_value(SWIGTYPE_p_switch_channel channel, switch_ring_ready_t rv, string file, string func, int line) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_channel_perform_ring_ready_value(SWIGTYPE_p_switch_channel.getCPtr(channel), (int)rv, file, func, line); return ret; @@ -3932,8 +3946,8 @@ public class freeswitch { freeswitchPINVOKE.switch_channel_event_set_extended_data(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1)); } - public static string switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel channel, string arg1, switch_event var_list, switch_event api_list) { - string ret = freeswitchPINVOKE.switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list)); + public static string switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel channel, string arg1, switch_event var_list, switch_event api_list, uint recur) { + string ret = freeswitchPINVOKE.switch_channel_expand_variables_check(SWIGTYPE_p_switch_channel.getCPtr(channel), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list), recur); return ret; } @@ -4315,8 +4329,8 @@ public class freeswitch { return ret; } - public static string switch_event_expand_headers_check(switch_event arg0, string arg1, switch_event var_list, switch_event api_list) { - string ret = freeswitchPINVOKE.switch_event_expand_headers_check(switch_event.getCPtr(arg0), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list)); + public static string switch_event_expand_headers_check(switch_event arg0, string arg1, switch_event var_list, switch_event api_list, uint recur) { + string ret = freeswitchPINVOKE.switch_event_expand_headers_check(switch_event.getCPtr(arg0), arg1, switch_event.getCPtr(var_list), switch_event.getCPtr(api_list), recur); return ret; } @@ -5166,6 +5180,10 @@ public class freeswitch { freeswitchPINVOKE.switch_rtp_break(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); } + public static void switch_rtp_flush(SWIGTYPE_p_switch_rtp rtp_session) { + freeswitchPINVOKE.switch_rtp_flush(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); + } + public static byte switch_rtp_ready(SWIGTYPE_p_switch_rtp rtp_session) { byte ret = freeswitchPINVOKE.switch_rtp_ready(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); return ret; @@ -5478,6 +5496,11 @@ public class freeswitch { return ret; } + public static string switch_xml_toxml_nolock(switch_xml xml, switch_bool_t prn_header) { + string ret = freeswitchPINVOKE.switch_xml_toxml_nolock(switch_xml.getCPtr(xml), (int)prn_header); + return ret; + } + public static string switch_xml_toxml_buf(switch_xml xml, string buf, SWIGTYPE_p_switch_size_t buflen, SWIGTYPE_p_switch_size_t offset, switch_bool_t prn_header) { string ret = freeswitchPINVOKE.switch_xml_toxml_buf(switch_xml.getCPtr(xml), buf, SWIGTYPE_p_switch_size_t.getCPtr(buflen), SWIGTYPE_p_switch_size_t.getCPtr(offset), (int)prn_header); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -7952,6 +7975,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_read_replace_frame")] public static extern void switch_core_media_bug_set_read_replace_frame(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_cpu_count")] + public static extern uint switch_core_cpu_count(); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_remove")] public static extern int switch_core_media_bug_remove(HandleRef jarg1, HandleRef jarg2); @@ -7982,6 +8008,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_flush_all")] public static extern int switch_core_media_bug_flush_all(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_pre_buffer_framecount")] + public static extern int switch_core_media_bug_set_pre_buffer_framecount(HandleRef jarg1, uint jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_port_allocator_new")] public static extern int switch_core_port_allocator_new(ushort jarg1, ushort jarg2, uint jarg3, HandleRef jarg4); @@ -12395,6 +12424,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_perform_mark_answered")] public static extern int switch_channel_perform_mark_answered(HandleRef jarg1, string jarg2, string jarg3, int jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_check_zrtp")] + public static extern void switch_channel_check_zrtp(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_perform_ring_ready_value")] public static extern int switch_channel_perform_ring_ready_value(HandleRef jarg1, int jarg2, string jarg3, string jarg4, int jarg5); @@ -12468,7 +12500,7 @@ class freeswitchPINVOKE { public static extern void switch_channel_event_set_extended_data(HandleRef jarg1, HandleRef jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_expand_variables_check")] - public static extern string switch_channel_expand_variables_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); + public static extern string switch_channel_expand_variables_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, uint jarg5); [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_build_param_string")] public static extern string switch_channel_build_param_string(HandleRef jarg1, HandleRef jarg2, string jarg3); @@ -12822,7 +12854,7 @@ class freeswitchPINVOKE { public static extern int switch_event_set_body(HandleRef jarg1, string jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_event_expand_headers_check")] - public static extern string switch_event_expand_headers_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); + public static extern string switch_event_expand_headers_check(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, uint jarg5); [DllImport("mod_managed", EntryPoint="CSharp_switch_event_create_pres_in_detailed")] public static extern int switch_event_create_pres_in_detailed(string jarg1, string jarg2, int jarg3, string jarg4, string jarg5, string jarg6, string jarg7, string jarg8, string jarg9, string jarg10, int jarg11, string jarg12, string jarg13, string jarg14, string jarg15); @@ -13553,6 +13585,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_break")] public static extern void switch_rtp_break(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_flush")] + public static extern void switch_rtp_flush(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_ready")] public static extern byte switch_rtp_ready(HandleRef jarg1); @@ -13886,6 +13921,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_toxml")] public static extern string switch_xml_toxml(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_toxml_nolock")] + public static extern string switch_xml_toxml_nolock(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_toxml_buf")] public static extern string switch_xml_toxml_buf(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4, int jarg5); @@ -22958,6 +22996,8 @@ public enum switch_channel_flag_t { CF_VIDEO_REFRESH_REQ, CF_SERVICE_AUDIO, CF_SERVICE_VIDEO, + CF_ZRTP_HASH, + CF_ZRTP_PASS, CF_FLAG_MAX } @@ -24541,7 +24581,8 @@ namespace FreeSWITCH.Native { SCF_CLEAR_SQL = (1 << 17), SCF_THREADED_SYSTEM_EXEC = (1 << 18), SCF_SYNC_CLOCK_REQUESTED = (1 << 19), - SCF_CORE_ODBC_REQ = (1 << 20) + SCF_CORE_ODBC_REQ = (1 << 20), + SCF_DEBUG_SQL = (1 << 21) } } @@ -31108,7 +31149,8 @@ public enum switch_session_ctl_t { SCSC_PAUSE_CHECK, SCSC_READY_CHECK, SCSC_THREADED_SYSTEM_EXEC, - SCSC_SYNC_CLOCK_WHEN_IDLE + SCSC_SYNC_CLOCK_WHEN_IDLE, + SCSC_DEBUG_SQL } } From 44e569122344ef2bfa7e9a4490f28b6675741978 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 07:33:00 -0500 Subject: [PATCH 137/630] FS-4107 --resolve --- src/switch_core_session.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 86fdfb98db..4e6836ddce 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -531,7 +531,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ switch_codec2str(read_codec, rc, sizeof(rc)); if (vid_read_codec && vid_read_codec->implementation && switch_core_codec_ready(vid_read_codec)) { vrc[0] = ','; - switch_codec2str(read_codec, vrc + 1, sizeof(vrc) - 1); + switch_codec2str(vid_read_codec, vrc + 1, sizeof(vrc) - 1); switch_channel_set_variable(peer_channel, SWITCH_ORIGINATOR_VIDEO_CODEC_VARIABLE, vrc + 1); } From 6a3478f2f16c6b228b78c158719c8fe511312dfa Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 08:43:46 -0500 Subject: [PATCH 138/630] FS-3750 --resolve --- .../mod_event_socket/mod_event_socket.c | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index e90d174966..8863476ed5 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -1344,7 +1344,8 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event, } } - if (switch_test_flag(listener, LFLAG_HANDLE_DISCO) && switch_epoch_time_now(NULL) > listener->linger_timeout) { + if (switch_test_flag(listener, LFLAG_HANDLE_DISCO) && + listener->linger_timeout != (time_t) -1 && switch_epoch_time_now(NULL) > listener->linger_timeout) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "linger timeout, closing socket\n"); status = SWITCH_STATUS_FALSE; break; @@ -1356,8 +1357,18 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event, char message[128] = ""; char disco_buf[512] = ""; - switch_snprintf(message, sizeof(message), - "Channel %s has disconnected, lingering by request from remote.\n", switch_channel_get_name(channel)); + if (listener->linger_timeout != (time_t) -1) { + listener->linger_timeout += switch_epoch_time_now(NULL); + switch_snprintf(message, sizeof(message), + "Channel %s has disconnected, lingering %d seconds by request from remote.\n", + switch_channel_get_name(channel), listener->linger_timeout); + } else { + switch_snprintf(message, sizeof(message), + "Channel %s has disconnected, lingering by request from remote.\n", + switch_channel_get_name(channel)); + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s", message); + mlen = strlen(message); switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n" @@ -2056,8 +2067,12 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t **even if (async) { if ((status = switch_core_session_queue_private_event(listener->session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) { switch_snprintf(reply, reply_len, "+OK"); + } else if (status == SWITCH_STATUS_TERM) { + switch_snprintf(reply, reply_len, "-ERR closed queue"); + status = SWITCH_STATUS_SUCCESS; } else { switch_snprintf(reply, reply_len, "-ERR memory error"); + status = SWITCH_STATUS_SUCCESS; } } else { switch_ivr_parse_event(listener->session, *event); @@ -2067,8 +2082,12 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t **even if (!zstr(uuid) && (session = switch_core_session_locate(uuid))) { if ((status = switch_core_session_queue_private_event(session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) { switch_snprintf(reply, reply_len, "+OK"); + } else if (status == SWITCH_STATUS_TERM) { + switch_snprintf(reply, reply_len, "-ERR closed queue"); + status = SWITCH_STATUS_SUCCESS; } else { switch_snprintf(reply, reply_len, "-ERR memory error"); + status = SWITCH_STATUS_SUCCESS; } switch_core_session_rwunlock(session); } else { @@ -2267,15 +2286,20 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t **even } } else if (!strncasecmp(cmd, "linger", 6)) { if (listener->session) { - uint32_t linger_time = 600; /* sounds reasonable? */ + time_t linger_time = 600; /* sounds reasonable? */ if (*(cmd+6) == ' ' && *(cmd+7)) { /*how long do you want to linger?*/ - linger_time = (uint32_t)atoi(cmd+7); + linger_time = (time_t) atoi(cmd+7); + } else { + linger_time = (time_t) -1; } - /*do we need a mutex to update linger_timeout ?*/ - listener->linger_timeout = switch_epoch_time_now(NULL) + linger_time; + listener->linger_timeout = linger_time; switch_set_flag_locked(listener, LFLAG_LINGER); - switch_snprintf(reply, reply_len, "+OK will linger %d seconds", linger_time); + if (listener->linger_timeout != (time_t) -1) { + switch_snprintf(reply, reply_len, "+OK will linger %d seconds", linger_time); + } else { + switch_snprintf(reply, reply_len, "+OK will linger"); + } } else { switch_snprintf(reply, reply_len, "-ERR not controlling a session"); } From d3a11b56b34534cc005bad3bc49a91af2df1c930 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 13 Apr 2012 15:46:26 +0200 Subject: [PATCH 139/630] gsmopen: make huawei 1550 work with SMS in text UCS2: if you give CSMP after CSCS will die, let's do the opposite, first csmp then cscs. Two days catching this one. Bah :/ --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 +- .../mod_gsmopen/gsmopen_protocol.cpp | 54 ++++++++++++------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 33c260c755..949444d47d 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -559,7 +559,7 @@ int gsmopen_serial_getstatus_AT(private_t *tech_pvt); #endif // NOTDEF #define RESULT_FAILURE 0 #define RESULT_SUCCESS 1 -int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft); +int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft); int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft); //#define PUSHA_UNLOCKA(x) pthread_cleanup_push(gsmopen_unlocka_log, (void *) x); //#define POPPA_UNLOCKA(x) pthread_cleanup_pop(0); diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 78e9860f62..39e50571a9 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -138,9 +138,13 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) DEBUGA_GSMOPEN("READ %d on serialport init\n", GSMOPEN_P_LOG, res); } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CFUN=1"); + if (res) { + DEBUGA_GSMOPEN("no response to AT+CFUN=1. Continuing\n", GSMOPEN_P_LOG); + } res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); if (res) { - ERRORA("no response to AT^CURC=0\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("no response to AT^CURC=0. Continuing\n", GSMOPEN_P_LOG); return -1; } if (strlen(tech_pvt->at_preinit_1)) { @@ -312,6 +316,12 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); } tech_pvt->sms_pdu_not_supported = 1; + + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,8"); //unicode, 16 bit message + if (res) { + WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); + } + /* what is the Charset of SMSs? */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS?"); if (res) { @@ -324,7 +334,6 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone, let's try with 'GSM'\n", GSMOPEN_P_LOG); tech_pvt->no_ucs2 = 1; } -#ifdef NOTDEF //GSMLIB? XXX if (tech_pvt->no_ucs2) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); if (res) { @@ -335,13 +344,20 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) if (res) { WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } - } else { + } + + + +#ifdef NOTDEF //GSMLIB? XXX + + else { //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,20"); //"flash", class 0 sms 16 bit unicode res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,8"); //unicode, 16 bit message if (res) { WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } } +#endif // NOTDEF /* is the unsolicited reporting of mobile equipment event supported? */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMER=?"); @@ -374,7 +390,6 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) } else { tech_pvt->at_has_ecam = 1; } -#endif // NOTDEF /* disable unsolicited signaling of call list */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CLCC=0"); @@ -1534,9 +1549,9 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us memset(content2, '\0', sizeof(content2)); if (which_field == 1) { //FIXME why this? err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); - //err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); - err = 0; - strncpy(content2, content, sizeof(content2)); + err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); + //err = 0; + //strncpy(content2, content, sizeof(content2)); } else { err = 0; strncpy(content2, content, sizeof(content2)); @@ -1575,7 +1590,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } } -#endif //0 +#endif //1 } //it was the +CMGR answer from the cellphone else { DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); @@ -1586,6 +1601,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us //int howmanyleft; + memset(content3, '\0', sizeof(content3)); DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message); ucs2_to_utf8(tech_pvt, tech_pvt->sms_message, content3, sizeof(content3)); DEBUGA_GSMOPEN("content3=%s\n", GSMOPEN_P_LOG, content3); @@ -2075,7 +2091,7 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb memset(converted, '\0', sizeof(converted)); - DEBUGA_GSMOPEN("ucs2_in=%s\n", GSMOPEN_P_LOG, ucs2_in); + DEBUGA_GSMOPEN("ucs2_in=|%s|, utf8_out=|%s| èèè, %s\n", GSMOPEN_P_LOG, ucs2_in, utf8_out, "èèè"); /* cicopet */ for (c = 0; c < strlen(ucs2_in); c++) { sprintf(stringa, "0x%c%c", ucs2_in[c], ucs2_in[c + 1]); @@ -2089,6 +2105,7 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb inbuf = converted; iconv_format = iconv_open("UTF8", "UCS-2BE"); + //iconv_format = iconv_open("UTF8", "UCS2"); if (iconv_format == (iconv_t) -1) { ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); return -1; @@ -2160,7 +2177,7 @@ int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, return 0; } -int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft) +int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft) { /* cicopet */ #ifndef WIN32 @@ -2176,7 +2193,7 @@ int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs memset(converted, '\0', sizeof(converted)); outbuf = converted; - inbuf = utf_in; + inbuf = utf8_in; iconv_format = iconv_open("UCS-2BE", "UTF8"); if (iconv_format == (iconv_t) -1) { @@ -2185,16 +2202,16 @@ int utf_to_ucs2(private_t *tech_pvt, char *utf_in, size_t inbytesleft, char *ucs } outbytesleft = 16000; - DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf_in=%s, converted=%s\n", - GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf_in, converted); + DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, converted=%s\n", + GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, converted); iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); if (iconv_res == (size_t) -1) { ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); return -1; } DEBUGA_GSMOPEN - ("iconv_res=%d, in=%s, inleft=%d, out=%s, outleft=%d, utf_in=%s, converted=%s\n", - GSMOPEN_P_LOG, iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf_in, converted); + ("iconv_res=%d, in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, converted=%s\n", + GSMOPEN_P_LOG, iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, converted); iconv_close(iconv_format); for (i = 0; i < 16000 - outbytesleft; i++) { @@ -2436,7 +2453,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) } memset(dest2, '\0', sizeof(dest2)); - utf_to_ucs2(tech_pvt, dest, strlen(dest), dest2, sizeof(dest2)); + utf8_to_ucs2(tech_pvt, dest, strlen(dest), dest2, sizeof(dest2)); sprintf(smscommand, "AT+CMGS=\"%s\"", dest2); //TODO: support phones that only accept pdu mode } //TODO: support phones that only accept pdu mode @@ -2476,12 +2493,13 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) } #endif - //sprintf(text,"ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大"); //let's test the beauty of utf + //sprintf(text,"ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大cuc"); //let's test the beauty of utf8 + //sprintf(text,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 memset(smscommand, '\0', sizeof(smscommand)); if (tech_pvt->no_ucs2) { sprintf(smscommand, "%s", text); } else { - utf_to_ucs2(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); + utf8_to_ucs2(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); } smscommand[strlen(smscommand)] = 0x1A; From a76a252514e1c0a1875e2b9f40d7580ee733806d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 08:57:34 -0500 Subject: [PATCH 140/630] FS-4109 --resolve --- src/mod/applications/mod_spandsp/mod_spandsp_dsp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c b/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c index 636b502ce9..f5b8408b87 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c @@ -49,10 +49,11 @@ typedef struct { int threshold; } switch_inband_dtmf_t; -static void spandsp_dtmf_rx_realtime_callback(void *user_data, int code, int level, int delay) +static void spandsp_dtmf_rx_realtime_callback(void *user_data, int code, int level, int duration) { switch_inband_dtmf_t *pvt = (switch_inband_dtmf_t *)user_data; char digit = (char)code; + pvt->samples += duration; if (digit) { /* prevent duplicate DTMF */ if (digit != pvt->last_digit || (pvt->samples - pvt->last_digit_end) > pvt->min_dup_digit_spacing) { @@ -93,7 +94,6 @@ static switch_bool_t inband_dtmf_callback(switch_media_bug_t *bug, void *user_da break; case SWITCH_ABC_TYPE_READ_REPLACE: if ((frame = switch_core_media_bug_get_read_replace_frame(bug))) { - pvt->samples += frame->samples; dtmf_rx(pvt->dtmf_detect, frame->data, frame->samples); switch_core_media_bug_set_read_replace_frame(bug, frame); } From 9fb2c7f25a33754229327997e89eda431ab1467b Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 13 Apr 2012 16:09:54 +0200 Subject: [PATCH 141/630] gsmopen: hardwired SMS unicode test now works --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 39e50571a9..7943b84355 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2417,6 +2417,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) //int found = 0; int failed = 0; int err = 0; + char mesg_test[1024]; //strncpy(rdest, idest, sizeof(rdest) - 1); DEBUGA_GSMOPEN("GSMopenSendsms: dest=%s text=%s\n", GSMOPEN_P_LOG, dest, text); @@ -2493,8 +2494,10 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) } #endif - //sprintf(text,"ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大cuc"); //let's test the beauty of utf8 - //sprintf(text,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + memset(mesg_test, '\0', sizeof(mesg_test)); + sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + //text=mesg_test; + memset(smscommand, '\0', sizeof(smscommand)); if (tech_pvt->no_ucs2) { sprintf(smscommand, "%s", text); From 59af24747ecd2d1d17b4c87e0d24b4cdb1179d78 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 13 Apr 2012 18:30:48 +0200 Subject: [PATCH 142/630] gsmopen: workaround for reading with timeout, need something to simulate the poll. Next week :) --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 6 ++++-- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 949444d47d..355ae4a588 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -537,8 +537,10 @@ int gsmopen_serial_config_AT(private_t *tech_pvt); #define gsmopen_serial_write_AT_expect_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 0) #define gsmopen_serial_write_AT_expect_noexpcr_tout(P, D, S, T) gsmopen_serial_write_AT_expect1(P, D, S, 0, T) // 20.5 sec timeout, used for querying the SIM and sending SMSs -#define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 20) -#define gsmopen_serial_write_AT_expect_longtime_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 20) +//#define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 20) +//#define gsmopen_serial_write_AT_expect_longtime_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 20) +#define gsmopen_serial_write_AT_expect_longtime(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 1, 5) +#define gsmopen_serial_write_AT_expect_longtime_noexpcr(P, D, S) gsmopen_serial_write_AT_expect1(P, D, S, 0, 5) int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data); int gsmopen_serial_write_AT_nocr(private_t *tech_pvt, const char *data); int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data); diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 7943b84355..c45828856e 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1893,7 +1893,8 @@ int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *d return -1; } - at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 20, NULL, 1); // 20.5 sec timeout + //at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 20, NULL, 1); // 20.5 sec timeout + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 3, NULL, 1); // 3.5 sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); @@ -2466,7 +2467,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) failed = 1; goto uscita; } - err = gsmopen_serial_AT_expect(tech_pvt, "> ", 0, 1); // wait 1.5s for the prompt, no crlf + err = gsmopen_serial_AT_expect(tech_pvt, "> ", 0, 1); // wait 1.1s for the prompt, no crlf #if 1 if (err) { DEBUGA_GSMOPEN @@ -2557,10 +2558,12 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) POPPA_UNLOCKA(&tech_pvt->controldev_lock); } +#ifdef NOTDEF err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); if (err) { DEBUGA_GSMOPEN("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } +#endif// NOTDEF DEBUGA_GSMOPEN("FINISH\n", GSMOPEN_P_LOG); if (failed) From f263c0518e1bf283a974009ffdef44950ba48a74 Mon Sep 17 00:00:00 2001 From: Brian West Date: Fri, 13 Apr 2012 11:38:57 -0500 Subject: [PATCH 143/630] up this limit --- libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c index f531d2b375..5be2e79872 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c @@ -561,7 +561,7 @@ static FIO_CONFIGURE_FUNCTION(zt_configure) } } else if (!strcasecmp(var, "echo_cancel_level")) { num = atoi(val); - if (num < 0 || num > 256) { + if (num < 0 || num > 1024) { ftdm_log(FTDM_LOG_WARNING, "invalid echo can val at line %d\n", lineno); } else { zt_globals.eclevel = num; From 11459055134df54154a3cfcdcec8c66e8bcdd1d3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 11:18:09 -0500 Subject: [PATCH 144/630] FS-4106 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.h | 7 +++++++ src/mod/endpoints/mod_sofia/sofia.c | 6 ++++++ src/mod/endpoints/mod_sofia/sofia_presence.c | 8 +++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 2934c57f8c..fffc739224 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -509,6 +509,12 @@ typedef enum { PRES_TYPE_PASSIVE = 2 } sofia_presence_type_t; +typedef enum { + PRES_HELD_EARLY = 0, + PRES_HELD_CONFIRMED = 1, + PRES_HELD_TERMINATED = 2 +} sofia_presence_held_calls_type_t; + typedef enum { MEDIA_OPT_NONE = 0, MEDIA_OPT_MEDIA_ON_HOLD = (1 << 0), @@ -623,6 +629,7 @@ struct sofia_profile { int server_rport_level; int client_rport_level; sofia_presence_type_t pres_type; + sofia_presence_held_calls_type_t pres_held_type; sofia_media_options_t media_options; uint32_t force_subscription_expires; uint32_t force_publish_expires; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 27d6e5d9db..864b95aa13 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -4213,6 +4213,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else if (switch_true(val)) { profile->pres_type = PRES_TYPE_FULL; } + } else if (!strcasecmp(var, "presence-hold-state")) { + if (!strcasecmp(val, "confirmed")) { + profile->pres_held_type = PRES_HELD_CONFIRMED; + } else if (!strcasecmp(val, "terminated")) { + profile->pres_held_type = PRES_HELD_TERMINATED; + } } else if (!strcasecmp(var, "presence-privacy")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_PRESENCE_PRIVACY); diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index e7a2593353..e3c2145d71 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -2545,7 +2545,13 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * } if (holding) { - astate = "early"; + if (profile->pres_held_type == PRES_HELD_CONFIRMED) { + astate = "confirmed"; + } else if (profile->pres_held_type == PRES_HELD_TERMINATED) { + astate = "terminated"; + } else { + astate = "early"; + } } From f6c9e1963979f79a7486d79b5b875b5e13314643 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 11:19:08 -0500 Subject: [PATCH 145/630] FS-3750 --- .../event_handlers/mod_event_socket/mod_event_socket.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index 8863476ed5..0b071b9c12 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -2067,12 +2067,8 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t **even if (async) { if ((status = switch_core_session_queue_private_event(listener->session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) { switch_snprintf(reply, reply_len, "+OK"); - } else if (status == SWITCH_STATUS_TERM) { - switch_snprintf(reply, reply_len, "-ERR closed queue"); - status = SWITCH_STATUS_SUCCESS; } else { switch_snprintf(reply, reply_len, "-ERR memory error"); - status = SWITCH_STATUS_SUCCESS; } } else { switch_ivr_parse_event(listener->session, *event); @@ -2082,12 +2078,8 @@ static switch_status_t parse_command(listener_t *listener, switch_event_t **even if (!zstr(uuid) && (session = switch_core_session_locate(uuid))) { if ((status = switch_core_session_queue_private_event(session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) { switch_snprintf(reply, reply_len, "+OK"); - } else if (status == SWITCH_STATUS_TERM) { - switch_snprintf(reply, reply_len, "-ERR closed queue"); - status = SWITCH_STATUS_SUCCESS; } else { switch_snprintf(reply, reply_len, "-ERR memory error"); - status = SWITCH_STATUS_SUCCESS; } switch_core_session_rwunlock(session); } else { From 0eb9b0101fbca6f77c0bfe622486a363c359e489 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 11:37:06 -0500 Subject: [PATCH 146/630] FS-4110 --resolve yes this block is wrong we can't guess the right presence id here --- src/mod/endpoints/mod_sofia/sofia_glue.c | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 80dfff8835..b1995580a3 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2355,28 +2355,6 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) switch_channel_set_variable(channel, "sip_to_host", sofia_glue_get_host(to_str, switch_core_session_get_pool(session))); switch_channel_set_variable(channel, "sip_from_host", sofia_glue_get_host(from_str, switch_core_session_get_pool(session))); - if (!switch_channel_get_variable(channel, "presence_id")) { - char *from = switch_core_session_strdup(session, from_str); - const char *s; - - if ((s = switch_stristr("<", from))) { - from = (char *)s + 1; - } - - if (!strncasecmp(from, "sip:", 4)) { - from += 4; - } - - if (!strncasecmp(from, "sips:", 5)) { - from += 5; - } - - if ((p = strchr(from, ':')) || (p = strchr(from, ';')) || (p = strchr(from, '>'))) { - *p++ = '\0'; - } - - switch_channel_set_variable(channel, "presence_id", from); - } if (!(tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL, NUTAG_URL(url_str), From ab0736127a39d890b655c493cf97be02f8f0deed Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 12:47:30 -0500 Subject: [PATCH 147/630] FS-4043 --resolve --- src/switch_ivr.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 0c30c91e9e..6511935281 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -535,6 +535,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se char *loop_h = switch_event_get_header(event, "loops"); char *hold_bleg = switch_event_get_header(event, "hold-bleg"); int loops = 1; + int inner = 0; if (zstr(app_arg) && !zstr(content_type) && !strcasecmp(content_type, "text/plain")) { app_arg = switch_event_get_body(event); @@ -550,7 +551,13 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se switch_core_session_t *b_session = NULL; switch_channel_clear_flag(channel, CF_STOP_BROADCAST); - switch_channel_set_flag(channel, CF_BROADCAST); + + if (switch_channel_test_flag(channel, CF_BROADCAST)) { + inner++; + hold_bleg = NULL; + } else { + switch_channel_set_flag(channel, CF_BROADCAST); + } if (hold_bleg && switch_true(hold_bleg)) { if ((b_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { const char *stream; @@ -592,6 +599,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se switch_channel_get_name(channel), app_name, switch_str_nil(app_arg)); b4 = switch_micro_time_now(); if (switch_core_session_execute_application(session, app_name, app_arg) != SWITCH_STATUS_SUCCESS) { + if (!inner || switch_channel_test_flag(channel, CF_STOP_BROADCAST)) switch_channel_clear_flag(channel, CF_BROADCAST); goto done; } @@ -610,7 +618,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se } } - switch_channel_clear_flag(channel, CF_BROADCAST); + if (!inner || switch_channel_test_flag(channel, CF_STOP_BROADCAST)) { + switch_channel_clear_flag(channel, CF_BROADCAST); + switch_channel_set_flag(channel, CF_BREAK); + } + } } else if (cmd_hash == CMD_UNICAST) { char *local_ip = switch_event_get_header(event, "local-ip"); From 1454cdf15a4cc6356802b976769ac9800f6412eb Mon Sep 17 00:00:00 2001 From: Brian West Date: Fri, 13 Apr 2012 15:33:37 -0500 Subject: [PATCH 148/630] send the name and number in the right order --- src/mod/applications/mod_voicemail/mod_voicemail.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index 0fe46155bc..b6149aa54d 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -1547,7 +1547,7 @@ static switch_status_t listen_file(switch_core_session_t *session, vm_profile_t char cid_buf[1024] = ""; if (switch_channel_ready(channel)) { - switch_snprintf(cid_buf, sizeof(cid_buf), "%s|%s", cbt->cid_number, cbt->cid_name); + switch_snprintf(cid_buf, sizeof(cid_buf), "%s|%s", cbt->cid_name, cbt->cid_number); msg.from = __FILE__; msg.string_arg = cid_buf; From 9c288870e2aab4bf5b7a75fb757c447a2ffc7dbf Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 13 Apr 2012 15:58:49 -0500 Subject: [PATCH 149/630] FS-3994 --resolve regression from FS-3596:b2d2353c --- src/mod/endpoints/mod_sofia/sofia_reg.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 7b85161da3..9252071908 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -127,22 +127,20 @@ static void sofia_reg_kill_sub(sofia_gateway_t *gateway_ptr) static void sofia_reg_kill_reg(sofia_gateway_t *gateway_ptr) { - if (gateway_ptr->nh) { - nua_handle_bind(gateway_ptr->nh, NULL); - } - - if (gateway_ptr->state != REG_STATE_REGED && gateway_ptr->state != REG_STATE_UNREGISTER) { - if (gateway_ptr->nh) { - nua_handle_destroy(gateway_ptr->nh); - gateway_ptr->nh = NULL; - } + if (!gateway_ptr->nh) { return; } - if (gateway_ptr->nh) { + if (gateway_ptr->state == REG_STATE_REGED || gateway_ptr->state == REG_STATE_UNREGISTER) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "UN-Registering %s\n", gateway_ptr->name); nua_unregister(gateway_ptr->nh, NUTAG_URL(gateway_ptr->register_url), NUTAG_REGISTRAR(gateway_ptr->register_proxy), TAG_END()); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Destroying registration handle for %s\n", gateway_ptr->name); } + + nua_handle_bind(gateway_ptr->nh, NULL); + nua_handle_destroy(gateway_ptr->nh); + gateway_ptr->nh = NULL; } void sofia_reg_fire_custom_gateway_state_event(sofia_gateway_t *gateway, int status, const char *phrase) From 020724e103e05e8e245f756600b20752694c5a20 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Sat, 14 Apr 2012 01:00:00 +0200 Subject: [PATCH 150/630] ftmod_libpri: Improve libpri message logging. Use the PRI_NEW_SET_API define provided by >=libpri-1.2 to distinguish between old style and new style pri_set_error() and pri_set_message() callback functions. Improve message logging by using ftdm_log_chan() if per-span data with a valid (d-)channel object is available. NOTE: pri_get_userdata() returns NULL if pri is NULL. This will reduce the horizontal space for libpri output a bit, but allows us to see which span the message/error came from. Signed-off-by: Stefan Knoblich --- .../src/ftmod/ftmod_libpri/ftmod_libpri.c | 72 ++++++++++++------- 1 file changed, 45 insertions(+), 27 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c index 8ddc42c963..b8871cf70c 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c +++ b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c @@ -114,42 +114,60 @@ static FIO_CHANNEL_REQUEST_FUNCTION(isdn_channel_request) return FTDM_FAIL; } -#ifdef WIN32 -/** - * \brief Logs a libpri error - * \param s Error string - */ -static void s_pri_error(char *s) -#else -/** - * \brief Logs a libpri error - * \param pri libpri structure (unused) - * \param s Error string - */ -static void s_pri_error(struct pri *pri, char *s) -#endif -{ - ftdm_log(FTDM_LOG_ERROR, "%s", s); -} -#ifdef WIN32 +#ifdef PRI_NEW_SET_API /** * \brief Logs a libpri message - * \param s Message string - */ -static void s_pri_message(char *s) -#else -/** - * \brief Logs a libpri message - * \param pri libpri structure (unused) - * \param s Message string + * \param pri libpri structure + * \param s Message string */ static void s_pri_message(struct pri *pri, char *s) -#endif +{ + struct lpwrap_pri *spri = pri_get_userdata(pri); + + if (spri && spri->dchan) { + ftdm_log_chan(spri->dchan, FTDM_LOG_DEBUG, "%s", s); + } else { + ftdm_log(FTDM_LOG_DEBUG, "%s", s); + } +} + +/** + * \brief Logs a libpri error + * \param pri libpri structure + * \param s Error string + */ +static void s_pri_error(struct pri *pri, char *s) +{ + struct lpwrap_pri *spri = pri_get_userdata(pri); + + if (spri && spri->dchan) { + ftdm_log_chan(spri->dchan, FTDM_LOG_ERROR, "%s", s); + } else { + ftdm_log(FTDM_LOG_ERROR, "%s", s); + } +} +#else /* !PRI_NEW_SET_API */ +/** + * \brief Logs a libpri message + * \param s Message string + */ +static void s_pri_message(char *s) { ftdm_log(FTDM_LOG_DEBUG, "%s", s); } +/** + * \brief Logs a libpri error + * \param s Error string + */ +static void s_pri_error(char *s) +{ + ftdm_log(FTDM_LOG_ERROR, "%s", s); +} +#endif + + #define PRI_DEBUG_Q921_ALL (PRI_DEBUG_Q921_RAW | PRI_DEBUG_Q921_DUMP | PRI_DEBUG_Q921_STATE) #define PRI_DEBUG_Q931_ALL (PRI_DEBUG_Q931_DUMP | PRI_DEBUG_Q931_STATE | PRI_DEBUG_Q931_ANOMALY) From 997550c5114e608852d33b0ab25fb32d75becf0b Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Sat, 14 Apr 2012 01:39:25 +0200 Subject: [PATCH 151/630] ftmod_libpri: Check for required features in configure and remove old-style log callbacks Non-PRI_NEW_SET_API logging callbacks were only available in libpri-1.0 and older, which also lacks PRI_IO_FUNCS (required) and wouldn't work anyway. Explicitly check for both PRI_* feature defines at configure time and reject libpri versions that lack them. Remove the non-PRI_NEW_SET_API logging callbacks in ftmod_libpri.c. Signed-off-by: Stefan Knoblich --- libs/freetdm/configure.ac | 15 ++++++++++++++ .../src/ftmod/ftmod_libpri/ftmod_libpri.c | 20 ------------------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/libs/freetdm/configure.ac b/libs/freetdm/configure.ac index d166233f00..a888d20ef4 100644 --- a/libs/freetdm/configure.ac +++ b/libs/freetdm/configure.ac @@ -236,6 +236,21 @@ then AC_MSG_ERROR([libpri not found or unusable (see config.log for details)])] ) + AC_MSG_CHECKING([whether libpri is too old]) + AC_PREPROC_IFELSE( + [AC_LANG_PROGRAM( + [#include ], + [#if !defined(PRI_IO_FUNCS) + #error "libpri is lacking PRI_IO_FUNCS" + #elif !defined(PRI_NEW_SET_API) + #error "libpri is lacking PRI_NEW_SET_API" + #endif] + )], + [AC_MSG_RESULT([no])], + [AC_MSG_RESULT([yes]) + AC_MSG_ERROR([Your version of libpri is too old (pre 1.2), please update!])] + ) + AC_MSG_CHECKING([whether libpri has BRI support]) AC_LINK_IFELSE( [AC_LANG_PROGRAM( diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c index b8871cf70c..2e11f52f26 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c +++ b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c @@ -115,7 +115,6 @@ static FIO_CHANNEL_REQUEST_FUNCTION(isdn_channel_request) } -#ifdef PRI_NEW_SET_API /** * \brief Logs a libpri message * \param pri libpri structure @@ -147,25 +146,6 @@ static void s_pri_error(struct pri *pri, char *s) ftdm_log(FTDM_LOG_ERROR, "%s", s); } } -#else /* !PRI_NEW_SET_API */ -/** - * \brief Logs a libpri message - * \param s Message string - */ -static void s_pri_message(char *s) -{ - ftdm_log(FTDM_LOG_DEBUG, "%s", s); -} - -/** - * \brief Logs a libpri error - * \param s Error string - */ -static void s_pri_error(char *s) -{ - ftdm_log(FTDM_LOG_ERROR, "%s", s); -} -#endif #define PRI_DEBUG_Q921_ALL (PRI_DEBUG_Q921_RAW | PRI_DEBUG_Q921_DUMP | PRI_DEBUG_Q921_STATE) From e6689bada91c2ebb4140a0dca97f7ef73df3a5f4 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 16 Apr 2012 15:17:18 +0200 Subject: [PATCH 152/630] gsmopen: using non volatile memoty for storage (vs SIM), new reading with timeout from serial port --- .../mod_gsmopen/gsmopen_protocol.cpp | 317 ++++++++++++------ 1 file changed, 214 insertions(+), 103 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index c45828856e..f0b28e1c75 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -145,8 +145,8 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); if (res) { DEBUGA_GSMOPEN("no response to AT^CURC=0. Continuing\n", GSMOPEN_P_LOG); - return -1; } + if (strlen(tech_pvt->at_preinit_1)) { res = gsmopen_serial_write_AT_expect(tech_pvt, tech_pvt->at_preinit_1, tech_pvt->at_preinit_1_expect); if (res) { @@ -228,6 +228,16 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) DEBUGA_GSMOPEN("ATE0 failed\n", GSMOPEN_P_LOG); } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CFUN=1"); + if (res) { + DEBUGA_GSMOPEN("no response to AT+CFUN=1. Continuing\n", GSMOPEN_P_LOG); + } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT^CURC=0"); + if (res) { + DEBUGA_GSMOPEN("no response to AT^CURC=0. Continuing\n", GSMOPEN_P_LOG); + } + + /* disable extended error reporting */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMEE=0"); if (res) { @@ -295,12 +305,38 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) } /* signal incoming SMS with a +CMTI unsolicited msg */ - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=1,1,0,0,0"); + //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=1,1,0,0,0"); + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=2,1,0,0,0"); if (res) { - DEBUGA_GSMOPEN("AT+CNMI=1,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("AT+CNMI=2,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); tech_pvt->sms_cnmi_not_supported = 1; tech_pvt->gsmopen_serial_sync_period = 30; //FIXME in config } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CPMS=\"ME\",\"ME\",\"ME\""); + if (res) { + DEBUGA_GSMOPEN("no response to AT+CPMS=\"ME\",\"ME\",\"ME\". Continuing\n", GSMOPEN_P_LOG); + } + /* signal incoming SMS with a +CMTI unsolicited msg */ + //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=1,1,0,0,0"); + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=2,1,0,0,0"); + if (res) { + DEBUGA_GSMOPEN("AT+CNMI=2,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); + tech_pvt->sms_cnmi_not_supported = 1; + tech_pvt->gsmopen_serial_sync_period = 30; //FIXME in config + } + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CPMS=\"ME\",\"ME\",\"ME\""); + if (res) { + DEBUGA_GSMOPEN("no response to AT+CPMS=\"ME\",\"ME\",\"ME\". Continuing\n", GSMOPEN_P_LOG); + } + /* signal incoming SMS with a +CMTI unsolicited msg */ + //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=1,1,0,0,0"); + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CNMI=2,1,0,0,0"); + if (res) { + DEBUGA_GSMOPEN("AT+CNMI=2,1,0,0,0 failed, continue\n", GSMOPEN_P_LOG); + tech_pvt->sms_cnmi_not_supported = 1; + tech_pvt->gsmopen_serial_sync_period = 30; //FIXME in config + } + /* what is the Message Center address (number) to which the SMS has to be sent? */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCA?"); if (res) { @@ -479,7 +515,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us { int select_err = 1; int res; - //fd_set read_fds; struct timeval timeout; char tmp_answer[AT_BUFSIZ]; char tmp_answer2[AT_BUFSIZ]; @@ -490,20 +525,18 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us int la_counter = 0; int at_ack = -1; int la_read = 0; - int timeout1; + int timeout_in_msec; + int msecs_passed=0; - timeout1 = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0); + timeout_in_msec = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0); - if (timeout1 != 100) - ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout1); + if (timeout_in_msec != 100) + ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout_in_msec); if (!running || !tech_pvt->running) { return -1; } - ////FD_ZERO(&read_fds); - //FD_SET(tech_pvt->controldevfd, &read_fds); - //NOTICA (" INSIDE this gsmopen_serial_device %s \n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); tmp_answer_ptr = tmp_answer; memset(tmp_answer, 0, sizeof(char) * AT_BUFSIZ); @@ -512,20 +545,31 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us PUSHA_UNLOCKA(tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); - //while ((!tech_pvt->controldev_dead) && ((select_err = select(tech_pvt->controldevfd + 1, &read_fds, NULL, NULL, &timeout)) > 0)) { - while ((!tech_pvt->controldev_dead) - && (read_count = - tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), - (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)) > 0)) { + while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec){ char *token_ptr; timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it + +read: + switch_sleep(20000); + msecs_passed += 20; + + if (timeout_in_msec != 100){ + ERRORA("TIMEOUT=%d, PASSED=%d\n", GSMOPEN_P_LOG, timeout_in_msec, msecs_passed); + } + //read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)); + read_count = tech_pvt->serialPort_serial_control->Read(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); + //cicopet read_count = read(tech_pvt->controldevfd, tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); - //cicopet read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0 ) ); if (read_count == 0) { + if(msecs_passed <= timeout_in_msec){ + goto read; + } + } + if (read_count == -1) { ERRORA - ("read 0 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + ("read -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); tech_pvt->controldev_dead = 1; //cicopet close(tech_pvt->controldevfd); @@ -720,11 +764,17 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us tech_pvt->line_array.result[i], tech_pvt->callid_name, tech_pvt->callid_number); } + if ((strncmp(tech_pvt->line_array.result[i], "+CMS ERROR:", 11) == 0)) { + ERRORA("Received: \"%s\", what was this error about?\n", GSMOPEN_P_LOG); + } + if ((strcmp(tech_pvt->line_array.result[i], "+CMS ERROR: 500") == 0)) { + ERRORA("Received: \"%s\", maybe this account ran OUT OF CREDIT?\n", GSMOPEN_P_LOG); + } if ((strcmp(tech_pvt->line_array.result[i], "BUSY") == 0)) { tech_pvt->phone_callflow = CALLFLOW_CALL_LINEBUSY; if (option_debug > 1) DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_LINEBUSY\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - //if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner && tech_pvt->phone_callflow != CALLFLOW_CALL_DOWN) { + //if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner && tech_pvt->phone_callflow != CALLFLOW_CALL_DOWN) if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->phone_callflow != CALLFLOW_CALL_DOWN) { //ast_setstate(tech_pvt->owner, GSMOPEN_STATE_BUSY); //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_BUSY); @@ -1082,54 +1132,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us res = sms_incoming(tech_pvt); -#if 0 - if (strlen(tech_pvt->sms_message)) { - //FIXME manager_event(EVENT_FLAG_SYSTEM, "GSMOPENincomingsms", - //FIXME "Interface: %s\r\nSMS_Message: %s\r\n", tech_pvt->name, - //FIXME tech_pvt->sms_message); - - res = sms_incoming(tech_pvt, tech_pvt->sms_message); - - if (strlen(tech_pvt->sms_receiving_program)) { - int fd1[2]; - pid_t pid1; - char *arg1[] = { tech_pvt->sms_receiving_program, (char *) NULL }; - int i; - - DEBUGA_GSMOPEN("incoming SMS message:>>>%s<<<\n", GSMOPEN_P_LOG, tech_pvt->sms_message); - res = pipe(fd1); - pid1 = fork(); - - if (pid1 == 0) { //child - int err; - - dup2(fd1[0], 0); // Connect stdin to pipe output - close(fd1[1]); // close input pipe side - close(tech_pvt->controldevfd); - setsid(); //session id - err = execvp(arg1[0], arg1); //exec our program, with stdin connected to pipe output - if (err) { - ERRORA - ("'sms_receiving_program' is set in config file to '%s', and it gave us back this error: %d, (%s). SMS received was:---%s---\n", - GSMOPEN_P_LOG, tech_pvt->sms_receiving_program, err, strerror(errno), tech_pvt->sms_message); - } - close(fd1[0]); // close output pipe side - } -//starting here continue the parent - close(fd1[0]); // close output pipe side - // write the msg on the pipe input - for (i = 0; i < strlen(tech_pvt->sms_message); i++) { - res = write(fd1[1], &tech_pvt->sms_message[i], 1); - } - close(fd1[1]); // close pipe input, let our program know we've finished - } else { - ERRORA - ("got SMS incoming message, but 'sms_receiving_program' is not set in config file. SMS received was:---%s---\n", - GSMOPEN_P_LOG, tech_pvt->sms_message); - } - } -#endif //0 -#if 1 //is this one needed? maybe it can interrupt an incoming call that is just to announce itself if (tech_pvt->phone_callflow == CALLFLOW_CALL_IDLE && tech_pvt->interface_state == GSMOPEN_STATE_DOWN && tech_pvt->owner == NULL) { /* we're not in a call, neither calling */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CKPD=\"EEE\""); @@ -1137,7 +1139,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us ERRORA("AT+CKPD=\"EEE\" (cellphone screen back to user) do not got OK from the phone\n", GSMOPEN_P_LOG); } } -#endif } //unread_msg_id } //CMTI well formatted @@ -1511,7 +1512,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us memset(sms_body, '\0', sizeof(sms_body)); if (strncmp(tech_pvt->line_array.result[i], "+CMGR", 5) == 0) { /* we are reading the "header" of an SMS */ -#if 1 char content[512]; char content2[512]; int inside_comma = 0; @@ -1542,16 +1542,10 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us &tech_pvt->line_array.result[i][c]); DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content); - //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //strncat(tech_pvt->sms_message, content, ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - memset(content2, '\0', sizeof(content2)); if (which_field == 1) { //FIXME why this? err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); err = ucs2_to_utf8(tech_pvt, content, content2, sizeof(content2)); - //err = 0; - //strncpy(content2, content, sizeof(content2)); } else { err = 0; strncpy(content2, content, sizeof(content2)); @@ -1559,10 +1553,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us DEBUGA_GSMOPEN("%d content2=%s\n", GSMOPEN_P_LOG, which_field, content2); DEBUGA_GSMOPEN("%d content=%s\n", GSMOPEN_P_LOG, which_field, content2); - //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //if (!err) - //strncat(tech_pvt->sms_message, content2, ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); memset(content, '\0', sizeof(content)); d = 0; if (which_field == 1) { @@ -1590,7 +1580,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } } -#endif //1 } //it was the +CMGR answer from the cellphone else { DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); @@ -1599,15 +1588,12 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us char content3[1000]; strncpy(tech_pvt->sms_message, tech_pvt->line_array.result[i], sizeof(tech_pvt->sms_message)); - //int howmanyleft; memset(content3, '\0', sizeof(content3)); DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message); ucs2_to_utf8(tech_pvt, tech_pvt->sms_message, content3, sizeof(content3)); DEBUGA_GSMOPEN("content3=%s\n", GSMOPEN_P_LOG, content3); strncpy(tech_pvt->sms_body, content3, sizeof(tech_pvt->sms_body)); - //sleep(10); - //cicopet if (tech_pvt->sms_cnmi_not_supported) { sms_incoming(tech_pvt); DEBUGA_GSMOPEN("2 content3=%s\n", GSMOPEN_P_LOG, content3); @@ -1615,23 +1601,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } else { } -#if 0 - //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //strncat(tech_pvt->sms_message, tech_pvt->line_array.result[i], ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - - memset(sms_body, '\0', sizeof(sms_body)); - err = ucs2_to_utf8(tech_pvt, tech_pvt->line_array.result[i], sms_body, sizeof(sms_body)); - DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); - strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); - - //strncat(tech_pvt->sms_message, "---", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //if (!err) - //strncat(tech_pvt->sms_message, sms_body, ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - //strncat(tech_pvt->sms_message, "|||", ((sizeof(tech_pvt->sms_message) - strlen(tech_pvt->sms_message)) - 1)); - - //DEBUGA_GSMOPEN("sms_message=%s\n", GSMOPEN_P_LOG, tech_pvt->sms_message); -#endif //0 } //it was the UCS2 from cellphone } //we were reading the SMS @@ -1655,7 +1624,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us if (select_err == -1) { ERRORA("select returned -1 on %s, setting controldev_dead, error was: %s\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name, strerror(errno)); tech_pvt->controldev_dead = 1; - //cicopet close(tech_pvt->controldevfd); tech_pvt->running = 0; alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "select returned -1 on interface, setting controldev_dead"); @@ -1757,6 +1725,30 @@ int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data) } if (res != 1) { ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); + + + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + + + return -1; } } @@ -1785,6 +1777,26 @@ int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data) } if (res != 1) { ERRORA("Error RE-sending (carriage return): %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + return -1; } } @@ -1824,6 +1836,26 @@ int gsmopen_serial_write_AT_nocr(private_t *tech_pvt, const char *data) } if (res != 1) { ERRORA("Error RE-sending (%.1s): %d %d (%s)\n", GSMOPEN_P_LOG, &Data[i], count, res, strerror(errno)); + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + return -1; } } @@ -1849,6 +1881,26 @@ int gsmopen_serial_write_AT_noack(private_t *tech_pvt, const char *data) ERRORA("Error sending data... (%s)\n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + return -1; } UNLOCKA(tech_pvt->controldev_lock); @@ -1868,6 +1920,26 @@ int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data) if (gsmopen_serial_write_AT(tech_pvt, data) != strlen(data)) { ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + return -1; } //cicopet at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 2, NULL, 1); // 2.5 sec timeout @@ -1890,11 +1962,30 @@ int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *d if (gsmopen_serial_write_AT_nocr(tech_pvt, data) != strlen(data)) { ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + return -1; } - //at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 20, NULL, 1); // 20.5 sec timeout - at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 3, NULL, 1); // 3.5 sec timeout + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 5, NULL, 1); // 5.5 sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); @@ -1913,6 +2004,26 @@ int gsmopen_serial_write_AT_expect1(private_t *tech_pvt, const char *data, const if (gsmopen_serial_write_AT(tech_pvt, data) != strlen(data)) { ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); + + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; + + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); + + return -1; } From 4ff99df417fbd3f5eb550cfbd42626258e2a77ef Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 16 Apr 2012 16:23:24 +0200 Subject: [PATCH 153/630] gsmopen: Makefile.am updated --- src/mod/endpoints/mod_gsmopen/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile.am b/src/mod/endpoints/mod_gsmopen/Makefile.am index 8879a4616d..4d9f751a19 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile.am +++ b/src/mod/endpoints/mod_gsmopen/Makefile.am @@ -13,7 +13,7 @@ mod_LTLIBRARIES = mod_gsmopen.la mod_gsmopen_la_SOURCES = mod_gsmopen.cpp gsmopen_protocol.cpp mod_gsmopen_la_CFLAGS = $(AM_CFLAGS) -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I. -DGSMOPEN_SVN_VERSION=\"`cat $(switch_builddir)/.version`\" mod_gsmopen_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA) $(TIFF_LA) -mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lasound -lgsmme +mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lctb-0.16 $(SPANDSP_LA): $(TIFF_LA) $(SPANDSP_DIR) $(SPANDSP_DIR)/.update cd $(SPANDSP_BUILDDIR) && $(MAKE) -j1 From 044d802cf0517ab3ae0029e784e7ac5f29690d6d Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Mon, 16 Apr 2012 08:53:18 -0700 Subject: [PATCH 154/630] Suggested new phrases: day mode, night mode, lunch mode, etc. --- docs/phrase/phrase_en.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/phrase/phrase_en.xml b/docs/phrase/phrase_en.xml index f9b2a3e221..322cdf5e02 100644 --- a/docs/phrase/phrase_en.xml +++ b/docs/phrase/phrase_en.xml @@ -528,6 +528,11 @@ + + + + + From e1db065195f31885de40e7cb7285880e2ba37ba8 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 16 Apr 2012 11:14:14 -0500 Subject: [PATCH 155/630] FS-4115 possible workaround for sipura bug + recording --- src/switch_core_io.c | 3 +++ src/switch_core_media_bug.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 952b345e67..bfc8f1cd33 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -1101,6 +1101,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Write Buffer Failed!\n"); goto error; } + + /* Need to retrain the recording data */ + switch_core_media_bug_flush_all(session); } if (!(switch_buffer_write(session->raw_write_buffer, write_frame->data, write_frame->datalen))) { diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 0397aa666b..313552124f 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -126,6 +126,10 @@ SWITCH_DECLARE(void) switch_core_media_bug_flush(switch_media_bug_t *bug) switch_buffer_zero(bug->raw_write_buffer); switch_mutex_unlock(bug->write_mutex); } + + bug->record_frame_size = 0; + bug->record_pre_buffer_count = 0; + } SWITCH_DECLARE(void) switch_core_media_bug_inuse(switch_media_bug_t *bug, switch_size_t *readp, switch_size_t *writep) From ecfe3263e20720b750794b5c78c30715b0d2bd18 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 16 Apr 2012 11:55:52 -0500 Subject: [PATCH 156/630] FS-4114 --resolve this bug is actually in libsndfile, if its not fixed in the latest version we probably should report it upstream --- libs/libsndfile/.update | 2 +- libs/libsndfile/src/ima_adpcm.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/libsndfile/.update b/libs/libsndfile/.update index f195187f18..31cb06ca73 100644 --- a/libs/libsndfile/.update +++ b/libs/libsndfile/.update @@ -1 +1 @@ -Thu May 21 16:11:03 CDT 2009 +Mon Apr 16 11:52:47 CDT 2012 diff --git a/libs/libsndfile/src/ima_adpcm.c b/libs/libsndfile/src/ima_adpcm.c index a9bd6ef521..e3ab38d752 100644 --- a/libs/libsndfile/src/ima_adpcm.c +++ b/libs/libsndfile/src/ima_adpcm.c @@ -724,7 +724,9 @@ ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) if (offset == 0) { psf_fseek (psf, psf->dataoffset, SEEK_SET) ; pima->blockcount = 0 ; - pima->decode_block (psf, pima) ; + if (pima->decode_block) { + pima->decode_block (psf, pima) ; + } pima->samplecount = 0 ; return 0 ; } ; From 6e512f1a898a2d0aa3f8872a1c60aa4d7ffec157 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 16 Apr 2012 11:57:19 -0500 Subject: [PATCH 157/630] FS-4053 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index cfcebdab01..a103b86302 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -495,7 +495,7 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session) val = switch_channel_get_variable(tech_pvt->channel, "disable_q850_reason"); if (!val || switch_false(val)) { - if ((val = switch_channel_get_variable(tech_pvt->channel, "sip_reason_str"))) { + if ((val = switch_channel_get_variable(tech_pvt->channel, "sip_reason"))) { switch_snprintf(reason, sizeof(reason), "%s", val); } else { if (switch_channel_test_flag(channel, CF_INTERCEPT) || cause == SWITCH_CAUSE_PICKED_OFF || cause == SWITCH_CAUSE_LOSE_RACE) { From 02e5eaefec5104d7cdd4945d22bce9284e6eaf41 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 16 Apr 2012 16:14:20 -0500 Subject: [PATCH 158/630] FS-4118 --resolve --- src/mod/applications/mod_avmd/mod_avmd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index 58683b4587..ce3aed0916 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -494,9 +494,9 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) // double s_rate; // double e_rate; // double avg_a; - double sine_len; + //double sine_len; uint32_t sine_len_i; - uint32_t beep_len_i; + //uint32_t beep_len_i; // int valid; b = &session->b; @@ -508,9 +508,9 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) /*! Precompute values used heavily in the inner loop */ sine_len_i = SINE_LEN(session->rate); - sine_len = (double)sine_len_i; - beep_len_i = BEEP_LEN(session->rate); - + //sine_len = (double)sine_len_i; + //beep_len_i = BEEP_LEN(session->rate); + channel = switch_core_session_get_channel(session->session); /*! Insert frame of 16 bit samples into buffer */ From f4961bc905390ab42321a93d7c4a8b78929ce062 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 16 Apr 2012 16:38:48 -0500 Subject: [PATCH 159/630] fix dependency order --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 1e6d72f0c7..c6e112c4b9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -64,7 +64,7 @@ cd-moh-install: uhd-moh-install sounds-music-48000-install all-recursive: libfreeswitch.la clean-recusive: clean_core install-recursive: install-libLTLIBRARIES install-binPROGRAMS -$(RECURSIVE_TARGETS): +$(RECURSIVE_TARGETS): freeswitch @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ From 61894c23aebd6e02b24996b4d2c0e586a15b9211 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 17 Apr 2012 11:27:54 +0200 Subject: [PATCH 160/630] gsmopen: zeroize sms_message store in case we receive an empty message --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index f0b28e1c75..712276549f 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1110,7 +1110,7 @@ read: memset(at_command, 0, sizeof(at_command)); sprintf(at_command, "AT+CMGR=%d", tech_pvt->unread_sms_msg_id); - //memset(tech_pvt->sms_message, 0, sizeof(tech_pvt->sms_message)); + memset(tech_pvt->sms_message, 0, sizeof(tech_pvt->sms_message)); tech_pvt->reading_sms_msg = 1; res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); From 51810b98921e63f1dab59c881ec7f97a21541630 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 17 Apr 2012 08:31:47 -0500 Subject: [PATCH 161/630] FS-4120 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index e3c2145d71..7f78a6ea8c 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3942,7 +3942,7 @@ void sofia_presence_handle_sip_i_publish(nua_t *nua, sofia_profile_t *profile, n switch_str_nil(payload->pl_data), mod_sofia_globals.hostname, profile->name, - from_user, from_host, event_type); + from_user, from_host, event_type, contact_str); sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_send_sql, &cb); switch_safe_free(sql); From 37473751967fed3c14b9d71149f79b08bbdea6d8 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 17 Apr 2012 18:40:32 +0200 Subject: [PATCH 162/630] gsmopen: re-added gsmlib --- src/mod/endpoints/mod_gsmopen/gsmlib/README | 8 + .../gsmlib-1.10-patched-13ubuntu/ABOUT-NLS | 226 + .../gsmlib-1.10-patched-13ubuntu/AUTHORS | 0 .../gsmlib-1.10-patched-13ubuntu/COPYING | 482 + .../gsmlib-1.10-patched-13ubuntu/ChangeLog | 386 + .../gsmlib-1.10-patched-13ubuntu/INSTALL | 198 + .../gsmlib-1.10-patched-13ubuntu/Makefile.am | 24 + .../gsmlib-1.10-patched-13ubuntu/Makefile.in | 423 + .../gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS | 11 + .../gsmlib-1.10-patched-13ubuntu/README | 166 + .../gsmlib/gsmlib-1.10-patched-13ubuntu/TODO | 289 + .../gsmlib-1.10-patched-13ubuntu/acconfig.h | 33 + .../gsmlib-1.10-patched-13ubuntu/acinclude.m4 | 0 .../gsmlib-1.10-patched-13ubuntu/aclocal.m4 | 9704 +++ .../apps/Makefile.am | 36 + .../apps/Makefile.in | 442 + .../apps/gsmctl.cc | 635 + .../apps/gsmpb.cc | 507 + .../apps/gsmsendsms.cc | 257 + .../apps/gsmsmsd.cc | 723 + .../apps/gsmsmsstore.cc | 434 + .../gsmlib-1.10-patched-13ubuntu/configure | 30623 ++++++++ .../gsmlib-1.10-patched-13ubuntu/configure.in | 131 + .../contrib/gsm-utils.cron.d | 3 + .../contrib/gsm-utils.default | 13 + .../contrib/gsm-utils.init | 81 + .../contrib/gsmsmsrequeue | 48 + .../contrib/gsmsmsspool | 34 + .../debian/changelog | 284 + .../debian/compat | 1 + .../debian/control | 45 + .../debian/copyright | 34 + .../gsmlib-1.10-patched-13ubuntu/debian/dirs | 1 + .../debian/gsm-utils.cron.d | 3 + .../debian/gsm-utils.default | 18 + .../debian/gsm-utils.dirs | 11 + .../debian/gsm-utils.docs | 4 + .../debian/gsm-utils.examples | 2 + .../debian/gsm-utils.init | 87 + .../debian/gsm-utils.postinst | 28 + .../debian/gsm-utils.postrm | 43 + .../debian/gsmsiexfer.1 | 29 + .../debian/libgsmme-dev.docs | 2 + .../gsmlib-1.10-patched-13ubuntu/debian/rules | 129 + .../gsmlib-1.10-patched-13ubuntu/debian/watch | 2 + .../gsmlib-1.10-patched-13ubuntu/doc/FAQ | 101 + .../doc/Makefile.am | 33 + .../doc/Makefile.in | 412 + .../doc/README.NLS | 72 + .../doc/README.developers | 138 + .../doc/gsmctl.man | 683 + .../doc/gsminfo.man | 56 + .../doc/gsmlib.lsm | 20 + .../doc/gsmpb.man | 245 + .../doc/gsmsendsms.man | 154 + .../doc/gsmsmsd.man | 269 + .../doc/gsmsmsstore.man | 185 + .../ext/Makefile.am | 40 + .../ext/Makefile.in | 480 + .../ext/README.sieme | 75 + .../ext/gsm_sie_me.cc | 258 + .../ext/gsm_sie_me.h | 99 + .../ext/gsmsiectl.cc | 698 + .../ext/gsmsiexfer.cc | 292 + .../gsmlib-1.10-patched-13ubuntu/g41.patch | 29 + .../gsm_config.h.in | 344 + .../gsmlib-1.10.debmg/debian/gsm-utils.dirs | 11 + .../debian/gsm-utils.postinst | 28 + .../gsmlib-1.10.debmg/debian/gsm-utils.prerm | 7 + .../debian/gsm-utils.undocumented | 2 + .../gsmlib-1.10-patched-13ubuntu/gsmlib.spec | 92 + .../gsmlib/Makefile.am | 38 + .../gsmlib/Makefile.in | 461 + .../gsmlib/gsm_at.cc | 444 + .../gsmlib/gsm_at.h | 104 + .../gsmlib/gsm_cb.cc | 176 + .../gsmlib/gsm_cb.h | 106 + .../gsmlib/gsm_error.cc | 424 + .../gsmlib/gsm_error.h | 209 + .../gsmlib/gsm_event.cc | 174 + .../gsmlib/gsm_event.h | 68 + .../gsmlib/gsm_map_key.h | 128 + .../gsmlib/gsm_me_ta.cc | 1254 + .../gsmlib/gsm_me_ta.h | 402 + .../gsmlib/gsm_nls.cc | 32 + .../gsmlib/gsm_nls.h | 71 + .../gsmlib/gsm_parser.cc | 381 + .../gsmlib/gsm_parser.h | 125 + .../gsmlib/gsm_phonebook.cc | 585 + .../gsmlib/gsm_phonebook.h | 195 + .../gsmlib/gsm_port.h | 58 + .../gsmlib/gsm_sms.cc | 863 + .../gsmlib/gsm_sms.h | 480 + .../gsmlib/gsm_sms_codec.cc | 702 + .../gsmlib/gsm_sms_codec.h | 329 + .../gsmlib/gsm_sms_store.cc | 489 + .../gsmlib/gsm_sms_store.h | 295 + .../gsmlib/gsm_sorted_phonebook.cc | 503 + .../gsmlib/gsm_sorted_phonebook.h | 159 + .../gsmlib/gsm_sorted_phonebook_base.cc | 115 + .../gsmlib/gsm_sorted_phonebook_base.h | 220 + .../gsmlib/gsm_sorted_sms_store.cc | 499 + .../gsmlib/gsm_sorted_sms_store.h | 217 + .../gsmlib/gsm_sysdep.h | 83 + .../gsmlib/gsm_unix_serial.cc | 456 + .../gsmlib/gsm_unix_serial.h | 62 + .../gsmlib/gsm_util.cc | 379 + .../gsmlib/gsm_util.h | 232 + .../gsmlib/gsm_win32_serial.cc | 507 + .../gsmlib/gsm_win32_serial.h | 60 + .../intl/ChangeLog | 1086 + .../intl/Makefile | 214 + .../intl/Makefile.in | 214 + .../gsmlib-1.10-patched-13ubuntu/intl/VERSION | 1 + .../intl/bindtextdom.c | 203 + .../intl/cat-compat.c | 262 + .../intl/dcgettext.c | 624 + .../intl/dgettext.c | 59 + .../intl/explodename.c | 188 + .../intl/finddomain.c | 216 + .../intl/gettext.c | 70 + .../intl/gettext.h | 105 + .../intl/gettextP.h | 89 + .../intl/hash-string.h | 59 + .../intl/intl-compat.c | 76 + .../intl/l10nflist.c | 411 + .../intl/libgettext.h | 182 + .../intl/linux-msg.sed | 100 + .../intl/loadinfo.h | 76 + .../intl/loadmsgcat.c | 222 + .../intl/localealias.c | 424 + .../intl/po2tbl.sed.in | 102 + .../intl/textdomain.c | 108 + .../intl/xopen-msg.sed | 104 + .../po/Makefile.in.in | 250 + .../po/POTFILES.in | 19 + .../po/cat-id-tbl.c | 0 .../gsmlib-1.10-patched-13ubuntu/po/de.gmo | Bin 0 -> 34591 bytes .../gsmlib-1.10-patched-13ubuntu/po/de.po | 1758 + .../po/gsmlib.pot | 1689 + .../po/stamp-cat-id | 1 + .../scripts/Makefile.am | 15 + .../scripts/Makefile.in | 259 + .../scripts/config.guess | 1526 + .../scripts/config.rpath | 513 + .../scripts/config.sub | 1658 + .../scripts/debugconfig.sh | 3 + .../scripts/depcomp | 423 + .../scripts/install-sh | 250 + .../scripts/ltconfig | 3115 + .../scripts/ltmain.sh | 6538 ++ .../scripts/missing | 336 + .../scripts/mkinstalldirs | 40 + .../gsmlib-1.10-patched-13ubuntu/stamp-h.in | 1 + .../tests/Makefile.am | 65 + .../tests/Makefile.in | 544 + .../tests/runparser.sh | 12 + .../tests/runsms.sh | 18 + .../tests/runspb.sh | 17 + .../tests/runspb2.sh | 17 + .../tests/runspbi.sh | 18 + .../tests/runssms.sh | 21 + .../gsmlib-1.10-patched-13ubuntu/tests/spb.pb | 11 + .../tests/spb2.pb | 11 + .../tests/spbi1.pb | 3 + .../tests/spbi2-orig.pb | 4 + .../tests/testcb.cc | 40 + .../tests/testgsmlib.cc | 178 + .../tests/testparser-output.txt | 22 + .../tests/testparser.cc | 200 + .../tests/testpb.cc | 52 + .../tests/testpb2.cc | 75 + .../tests/testsms-output.txt | 167 + .../tests/testsms.cc | 80 + .../tests/testsms2.cc | 89 + .../tests/testspb-output.txt | 47 + .../tests/testspb.cc | 81 + .../tests/testspb2-output.txt | 47 + .../tests/testspbi-output.txt | 8 + .../tests/testssms-output.txt | 157 + .../tests/testssms.cc | 68 + .../win32/COPYING | 5 + .../win32/Makefile.am | 17 + .../win32/Makefile.in | 259 + .../win32/README.win | 41 + .../win32/getopt.c | 185 + .../win32/getopt.h | 49 + .../win32/gsm_config.h | 169 + .../win32/gsmctl.dsp | 118 + .../win32/gsmlib.dsp | 232 + .../win32/gsmlib.dsw | 149 + .../win32/gsmpb.dsp | 118 + .../win32/gsmsendsms.dsp | 118 + .../win32/gsmsmsd.dsp | 118 + .../win32/gsmsmsstore.dsp | 119 + .../win32/testgsmlib.dsp | 101 + .../win32/testsms.dsp | 100 + .../win32/testsms2.dsp | 100 + .../mod_gsmopen/gsmlib/gsmlib_1.10-13.diff | 64915 ++++++++++++++++ .../gsmlib/gsmlib_1.10.orig.tar.gz | Bin 0 -> 474591 bytes 200 files changed, 156102 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/README create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/AUTHORS create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acinclude.m4 create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/cat-id-tbl.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.gmo create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.po create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.sub create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/README b/src/mod/endpoints/mod_gsmopen/gsmlib/README new file mode 100644 index 0000000000..709f78f2ca --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/README @@ -0,0 +1,8 @@ +For Linux distros without gsmlib (eg: CentOS): + +Here are the original (ancient) sources for gsmlib, and the patch made by Ubuntu for modern compilers. + +In the directory gsmlib-1.10-patched-13ubuntu are the patched sources, ready for (no need to patch them again): + ./configure + make + make install diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS new file mode 100644 index 0000000000..28d38c76fd --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ABOUT-NLS @@ -0,0 +1,226 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do *not* +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +One advise in advance +===================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias or message inheritance) as the +implementation here. It is also not possible to offer this additional +functionality on top of a `catgets' implementation. Future versions of +GNU `gettext' will very likely convey even more functionality. So it +might be a good idea to change to GNU `gettext' as soon as possible. + + So you need not provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system provides +usable `catgets' (if using this is selected by the installer) or +`gettext' functions. If neither is available, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is *not* required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --with-catgets + ./configure --disable-nls + +will respectively bypass any pre-existing `catgets' or `gettext' to use +the internationalizing routines provided within this package, enable +the use of the `catgets' functions (if found on the locale system), or +else, *totally* disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + By default the configuration process will not test for the `catgets' +function and therefore they will not be used. The reasons are already +given above: the emulation on top of `catgets' cannot provide all the +extensions provided by the GNU `gettext' library. If you nevertheless +want to use the `catgets' functions use + + ./configure --with-catgets + +to enable the test for `catgets' (this causes no harm if `catgets' is +not available on your system). If you really select this option we +would like to hear about the reasons because we cannot think of any +good one ourself. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +ISO 639 `LL' two-letter code prior to using the programs in the +package. For example, let's suppose that you speak German. At the +shell prompt, merely execute `setenv LANG de' (in `csh'), +`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This +can be done from your `.login' or `.profile' file, once and for all. + + An operating system might already offer message localization for +many of its programs, while other programs have been installed locally +with the full capabilities of GNU `gettext'. Just using `gettext' +extended syntax for `LANG' would break proper localization of already +available operating system programs. In this case, users should set +both `LANGUAGE' and `LANG' variables in their environment, as programs +using GNU `gettext' give preference to `LANGUAGE'. For example, some +Swedish users would rather read translations in German than English for +when Swedish is not available. This is easily accomplished by setting +`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list, courtesy of Linux +International. You may reach your translation team at the address +`LL@li.org', replacing LL by the two-letter ISO 639 code for your +language. Language codes are *not* the same as the country codes given +in ISO 3166. The following translation teams exist, as of December +1997: + + Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en', + Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian + `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja', + Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish + `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es', + Swedish `sv', and Turkish `tr'. + +For example, you may reach the Chinese translation team by writing to +`zh@li.org'. + + If you'd like to volunteer to *work* at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is *not* the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +*actively* in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of December +1997. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination. + + Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv + .----------------------------------------------------. + bash | [] [] [] | 3 + bison | [] [] [] | 3 + clisp | [] [] [] [] | 4 + cpio | [] [] [] [] [] [] | 6 + diffutils | [] [] [] [] [] | 5 + enscript | [] [] [] [] [] [] | 6 + fileutils | [] [] [] [] [] [] [] [] [] [] | 10 + findutils | [] [] [] [] [] [] [] [] [] | 9 + flex | [] [] [] [] | 4 + gcal | [] [] [] [] [] | 5 + gettext | [] [] [] [] [] [] [] [] [] [] [] | 12 + grep | [] [] [] [] [] [] [] [] [] [] | 10 + hello | [] [] [] [] [] [] [] [] [] [] [] | 11 + id-utils | [] [] [] | 3 + indent | [] [] [] [] [] | 5 + libc | [] [] [] [] [] [] [] | 7 + m4 | [] [] [] [] [] [] | 6 + make | [] [] [] [] [] [] | 6 + music | [] [] | 2 + ptx | [] [] [] [] [] [] [] [] | 8 + recode | [] [] [] [] [] [] [] [] [] | 9 + sh-utils | [] [] [] [] [] [] [] [] | 8 + sharutils | [] [] [] [] [] [] | 6 + tar | [] [] [] [] [] [] [] [] [] [] [] | 11 + texinfo | [] [] [] | 3 + textutils | [] [] [] [] [] [] [] [] [] | 9 + wdiff | [] [] [] [] [] [] [] [] | 8 + `----------------------------------------------------' + 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv + 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If December 1997 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/AUTHORS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/AUTHORS new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING new file mode 100644 index 0000000000..bf50f20de6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/COPYING @@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library 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 Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey 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 library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307 USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog new file mode 100644 index 0000000000..bdd64ab61c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ChangeLog @@ -0,0 +1,386 @@ +gsmlib-1.10 + - reactivated code in gsm_at to retry sending PDU after + unsolicited result code + + - added description of unicode handling to FAQ + + - compilation fixes for gcc-3.0.4 + + - added quick exit for ATZ in UnixSerialPort constructor + if phone gives ERROR + + - added fix for phones that return +CLIP: "Number not available." + instead of giving caller ID + + - added get/setCLIRPresentation() functions to MeTa (contribution by + ivan) + + - added "NO CARRIER" event to the event mechanism (contribution by + clock) + + - added Win32 port of gsmsmsd (thanks to Konstantin Forostyan) + + - further extented Win32 port of gsmsmsd to handle outgoing messages + + - fixed problem with Ericsson T39m SMS sending (zero bytes in handshake) + + - added capability to send concatenated SMSs in gsmsmsd and gsmsendsms + + - fixed unsigned/signed char problems in Unix/Win32 serial port + implementations + + - added capability to send multiple SMSs to gsmsendsms/gsmsmsd + +gsmlib-1.9 + - fixed decoding of alphanumeric addresses in gsm_sms_codec. + + - fixed bug in gsm_event when checking whether to send an + acknowledgment for a received SMS + + - More Siemens-specific patches, some extensions to the AT + command parser + + - New code to print PIN status and set the PIN in gsmctl, setPIN + function in MeTa class (Andreas Roedl ) + + - Missing virtual destructor in Port class caused destructors of + UnixSerialPort and Win32SerialPort not to be called - fixed + + - Added new code to set functionality level on or off (thanks to + David Woodhouse) + + - found bug in SMS store implementation that caused the now + obsolete _capacity member to be set to a too low value + + - Added changes contributed by Frediano Ziglio to enable compilation + on Windows + + - Added call waiting functions contributed by Ivan + +gsmlib-1.8 + - added workaround for Nokia Cellular Card Phone RPE-1 GSM900 + that reports a CDS event that actually is an CDSI and sends a spurious + CR when waiting for a PDU + + - SMS are stored without index in files now + + - tested compilation with gcc-3.0.2 + + - added workaround for gsmlib getting confused when receiving SMS + and echo cannot be switched off - echos of the AT command are + filtered out in chat() now + + - extended gsm_phonebook preload mechanism to batch-load phonebooks + where the index does not start with 1 + + - Added workaround for Motorola Timeport 260 to write back + deliver messages to the ME + + - added workaround for compilation with libstdc++-v2 + + - private members of MeTa made protected + + - new ext directory for phone-specific extensions + +gsmlib-1.7 + - fixed bug with calculation of userData length if userDataHeader + is present (octet count was subtracted, not septet count) + + - fixed problem with string erase() at end of PDU for Falcom A2-1 + + - -t/--charset option of gsmpb did not work due to missing parameter + of getopt_long, fixed + + - The SMS decoder/encoder can now handle alphanumeric addresses + in the GSM default alphabet + + - set only those SMS stores that are actually needed to perform + SMS store operation + + - Fixed signalling error 321 (Invalid memory index) when trying to + read from empty SMS store entry + + - Fixed parsing error when reading current network operator if no + network connection + + - Added capability to parse cell broadcast messages to gsmlib and + the gsmsmsd program + + - Added workaround for Motorola Timeport 260 bug that doesn't correctly + report the message status when retrieving SMS messages from the + store + + - Added workaround for Motorola Timeport 260 that allocates index + numbers to SMS messages linearly so that index number can be + be larger than capacity reported by AT command + +gsmlib-1.6 + - more fixes for the COPS=? return format + + - fixed putBack() behaviour in gsm_parser (don't put back if end-of- + stream is reached) + + - added toString() function to gsm_sms_codec's Address class + + - SMS dates and times are now output in a locale-specific manner + + - fixed bug in Parser::getEol() (_eos was accidentally set to true) + + - added gsm_win32_serial module, Win32 project (VC++), and + Option FirstFone changes contributed by Frediano Ziglio + + + - fix in COM port recognition for Win32 (gsm_util) + + - renamed library files libgsm.* to libgsmme.* (now starting with + version 1.0) because of conflict with another Debian package + + - in gsm_phonebook and gsm_store the caching of entries can now + be disabled + + - added facilities to use other character sets for phonebooks + + - fixed workaround for Ericcson SH888 (missing service centre address) + + - fixed bug in gsm_phonebook that prevented texts with the + character '@' to be written to to the phonebook + + - fixed nasty memory allocation bug in gsmpb/gsmsmsstore + (automatic MeTa variable went out of scope even though used + later) + + - fixed Y2K problem in timestamp printing + + - fixed "make dist" to include win32 files + + - added workarounds for Falcom A2-1 (autodetection and enabling by + "export GSMLIB_FALCOM_A2_1_FIX=1", zero after PDU) + + - fixed bug that caused gsmlib to abort with an assert if a malformed + PDU was read + +gsmlib-1.5 + - adapted MeTa::getCurrentOPInfo() and MeTa::getAvailableOPInfo() + to handle Nokia 8290 quirks + + - code to set line speed in gsm_unix_serial reinserted (it was + accidentally removed in previous version) + + - minor changes to initialization sequence in gsm_unix_serial + + - bugfix in gsm_unix_serial.cc: readByte() == 0 does not mean no + more bytes, but is legal value + + - additionally allowed characters "*#pwPW" and '+' at any + position in telephone numbers + + - added environment variable GSMLIB_SH888_FIX that (if set) + enables the gsmlib workaround for Ericsson SH888's broken SMS TPDUs + + - fixed command line parameter handling bug in gsmsmsstore + + - fixed %files section .spec file to correctly include manual pages + + - fixed some bugs in terminal line setup (gsm_unix_serial) regarding + software/hardware handshake + + - added new "--sca" option to SMS-related apps to set the SMS + service centre address on the command line (useful if default is not + set correctly in the phone) + + - removed tcflush() call in UnixSerialPort::putLine that broke + the event system needed for gsmsmsd + +gsmlib-1.4 + - more attempts to fix UNIX serial port access + + - allow custom backends for sorted phonebooks to be integrated + into gsmlib (eg. for RDBMS or LDAP storage). Introduced a new + module gsm_sorted_phonebook_base that contains the infrastructure for + this. + + - Now gsmlib needs at least gcc-2.95.2 to compile correctly. + + - Implemented option to open device with software handshaking (XON/XOFF). + The applications now have an -X option to turn this on. + + - gsmlib now contains a facility to interrupt ongoing activity in a + controlled way. gsm_unix_serial now blocks for one second + maximum until it checks whether it was interrupted. + + - various small bugfixes + + - added workaround for phones that omit ':' in AT command responses + + - all debugging output is now printed to stderr + + - gsm_unix_serial: new attempt to initialize modem in a more + robust way (contributed) + + - gsm_sms: fixed handling of user data header (contributed) + +gsmlib-1.3 + - fixed bug that caused gsmlib to hang if TAs don't respond + to AT inquiries for serial number etc. + + - fixed bug with handling of CB mode AT command construction in + gsm_me_ta.cc, setSMSRoutingToTA() + + - allow '+' as the first character of phonenumbers + + - implemented reading and writing from/to stdin/stdout in + gsm_sorted_[sms_store|phonebook] and gsmpb/gsmsmsstore + + - fixed (hopefully) the intermittent hangup problem in + gsm_unix_serial_port + + - Some mobile phones cannot report the status of some facility + locks. The gsmctl program now prints out "unknown" in the + corresponding result line from the FLSTAT + operation if this problem occurs (instead of terminating). + + - switched off non-blocking access to serial device + +gsmlib-1.2 + - gsmlib now also works with TAs that can not switch off echo + + - fixed bug that prevented gsmlib from copying SMS_DELIVER and + SMS_STATUS_REPORT back to the ME + + - introduced -I (--init) parameter to all command line apps to + allow for device-specific initialization + + - made SMS decoding routines more robust against bad SMS (especially + premature end of PDU) + + - New debugging feature: If compiled without NDEBUG, the + environment variable GSMLIB_DEBUG determines the verbosity of + debugging messages (0 = none, 1 = many, 2 = extreme) + +gsmlib-1.1 + + - Parse multiple COPS (operator info) lines returned by some phones + + - accept string as numeric value when interpreting COPS=? response + (Ericsson phone + GSM12 GSM module) + + - accept string as numeric value when interpreting COPS? response + (Ericsson phone + GSM12 GSM module) + + - retry when initializing TA (ATZ/ATE0 sequences) + + - Set SMS routing: + allow mode 3 (special in-band technique) when setting routing + to TA (gsmlib should not be active when phone is switched to data mode + anyway) + + - Set SMS routing: + handle buffer mode but only if it was reported by the +CNMI=? command + (the Ericsson GM12 GSM modem does not like it otherwise) + + - Determine CPMS number of parameters for CPMS command (better + compability with some mobile phones / GSM modems) + + - handle missing service centre address in incoming SMS for Ericsson + model 6050102 + + - add new RING event to gsm_event.h/.cc, gsmsmsd now handles RING + indications properly + + - defined default event handler mostly to handle unexpected RING + indications that might otherwise confuse gsmlib + + - gsmsmsd: can now be cleanly terminated using the SIGINT or SIGTERM + signals + + - gsmsmsd: now handles multiple incoming SMS messages cleanly, before + there was a chance that some SMS messages coming in rapid succession + might have been lost + + - gsmsmsd: flush option implemented that dispatches and erases + existing messages in SMS store + + - gsmsmsd: added sending of SMS messages. gsmsmsd now accepts a + spool directory options where it expects to find SMS message file in a + simple format, these are dispatched every 5 seconds + +gsmlib-1.0 + + - RPM support (spec file) + + - the "+" is at least for the Siemens S10 and S25 a valid char in + telephone numbers (inserts a pause of 3 seconds), therefore it is now + allowed as part of telephone numbers + + - fixed incorrect analysis of facility class parameters in gsmctl.cc + + - restricted call forward time to 0..30 seconds in gsm_me_ta.cc + +gsmlib-0.3 + + - implemented timeout for accessing the mobile phone in order + to avoid hangs + + - upgraded to BETA status + + - written glossary for abbreviations (gsminfo(7)) + + - implemented NLS support, added German translations + + - implemented preserving the index position of phonebook entries in + gsmpb.cc and gsm_sorted_phonebook + + - cleaned up manual pages (alphabetic ordering of options etc.) + + - gsmsmstore program and gsm_sorted_sms_store./.cc completed and + tested + + - gsmpb and gsmsmsstore now have --verbose (-V) options for detailed + progress reporting + + - now check for getopt_long in configure (can be compiled on non-GNU + systems) + + - removed asserts regarding lengths of numeric data types, put them + into configure script + + - sorted options in apps/*.cc alphabetically (--help option) + + - in gsm_sorted_sms_store compare telephone numbers more sensibly + + - introduced -v option to gsmpb and gsmsmsstore to report execution + statistics + + - tested new synchronization function in gsmpb program + + - implemented operations in the gsmctl program + + - rewrote test cases (compare output) + + - completed gsmsmsstore program + + - first changes for compilation with VC++ 6.0 on WIN32 + +gsmlib-0.2 + + - gsmsmstore program and gsm_sorted_sms_store./.cc mostly + completed but not yet much tested + + - Fixed problem with some mobiles/TAs not giving prefixes after + certain AT sequences (reported for SIEMENS S25/IrDA, Nokia + 8810/IrDA) + + - Fixed problem with Xircom REM56G.100/Nokia 6150 that give + "CABLE: GSM" instead of "OK" after ATZ + + - Mobiles that return nothing when empty phonebook entries are + requested are now handled correctly (reported for SIEMENS S25/IrDA) + + - optimizations in gsm_*_phonebook modules (less AT commands necessary) + + - new synchronization function in gsmpb program that is (hopefully) + more sensible (see man page for details) + +gsmlib-0.1 + + - Initial release diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL new file mode 100644 index 0000000000..6242d6f388 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/INSTALL @@ -0,0 +1,198 @@ +GSMLIB Installation +=================== + + This distribution uses autoconf/automake/libtool. See below + for generic installation instructions. The default commands would be: + + ./configure + make + make install + + See also the section INSTALLATION in the README file in this + directory. For questions regarding the internationalization of this + package refer to doc/README.NLS and ./ABOUT-NLS. + + Developers: See also the file doc/README.developers. + +Basic Installation +================== + + These are generic installation instructions. + + 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, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + 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 at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' 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. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. 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. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +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 must use a version of `make' that +supports the `VPATH' variable, such as 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 `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have 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. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' 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. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +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 host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +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. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--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. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am new file mode 100644 index 0000000000..daf1ea0047 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.am @@ -0,0 +1,24 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: Toplevel Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 21.5.1999 +# ************************************************************************* + +SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext + +EXTRA_DIST = gsmlib.spec + +if COMPILE_INTL +SUBDIRS = intl $(SUBDIRS_) # po - make automake happy +else +SUBDIRS = $(SUBDIRS_) # po intl - make automake happy +endif + +all: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in new file mode 100644 index 0000000000..e9676cc981 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/Makefile.in @@ -0,0 +1,423 @@ +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 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. + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: Toplevel Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 21.5.1999 +# ************************************************************************* + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AR = @AR@ +AS = @AS@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +DATADIRNAME = @DATADIRNAME@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +GCJ = @GCJ@ +GCJFLAGS = @GCJFLAGS@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_LIB = @HAVE_LIB@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +RC = @RC@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ + +SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext + +EXTRA_DIST = gsmlib.spec +@COMPILE_INTL_TRUE@SUBDIRS = intl $(SUBDIRS_) # po - make automake happy +@COMPILE_INTL_FALSE@SUBDIRS = $(SUBDIRS_) # po intl - make automake happy +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = gsm_config.h +CONFIG_CLEAN_FILES = +DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ +INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ +aclocal.m4 configure configure.in gsm_config.h.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DIST_SUBDIRS = intl po gsmlib apps tests doc scripts win32 ext po \ +gsmlib apps tests doc scripts win32 ext +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +gsm_config.h: stamp-h + @if test ! -f $@; then \ + rm -f stamp-h; \ + $(MAKE) stamp-h; \ + else :; fi +stamp-h: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=gsm_config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h 2> /dev/null +$(srcdir)/gsm_config.h.in: $(srcdir)/stamp-h.in + @if test ! -f $@; then \ + rm -f $(srcdir)/stamp-h.in; \ + $(MAKE) $(srcdir)/stamp-h.in; \ + else :; fi +$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f gsm_config.h + +maintainer-clean-hdr: + +# 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. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + 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) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + 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: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" != "." || dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && 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) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)gsm_config.h.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags gsm_config.h.in $$unique $(LISP)) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(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 + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(DIST_SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +all-recursive-am: gsm_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile gsm_config.h +all-redirect: all-recursive-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-hdr distclean-tags distclean-generic clean-am + -rm -f libtool + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ +install-exec-am install-exec install-data-am install-data install-am \ +install uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +all: + +# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS new file mode 100644 index 0000000000..1efffa7d86 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/NEWS @@ -0,0 +1,11 @@ +NEWS - 9.1.2000 + + Version 1.0 - first release with RPM support and binary packages + +NEWS - 15.11.1999 + + BETA version (details see ChangeLog) + +NEWS - 16.7.1999 + + initial release diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README new file mode 100644 index 0000000000..2f5db9eb27 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/README @@ -0,0 +1,166 @@ +INTRODUCTION + + This distribution contains a library to access GSM mobile phones + through GSM modems or IrDA devices. Features include: + + * modification of phonebooks stored in the mobile phone or on the + SIM card + + * reading and writing of SMS messages stored in the mobile phone + + * sending and reception of SMS messages + + Additionally, some simple command line programs are provided to + use these functionalities. + + +REQUIREMENTS + + You need a mobile phone that conforms to the GSM + standards ETSI GSM 07.07, ETSI GSM 07.05, and others. + Non-GSM mobile phones will not work! Additionally, + to access the mobile phone from the computer you will probably need an + GSM modem (that would be a PC-CARD, usually). There might be some + mobile phones, however, that incorporate directly terminal + adapter (TA) functionality. Access via IrDA interfaces is also + reported to work. + + If you want to compile the library yourself please also read + doc/README.developers. + + +INSTALLATION + + This distribution uses autoconf/automake/libtool. See the file + INSTALL for generic installation instructions. The default + commands for installation under /usr/local would be: + + ./configure + make + make install + + If there are any problems you can generate a debug version. See + doc/README.developers for details. + + +AVAILABLE DOCUMENTATION + + For the command line tools UNIX manual pages are available in the + doc subdirectory of this distribution. These are installed by + default in the directories /usr/local/man1, man7, and man8. + + See also the files doc/README.developers, doc/README.NLS and doc/FAQ. + + +HARDWARE + + The following mobile phone/GSM modem combinations are reported to + be compatible in varying degrees with the current release: + + - Nokia 6150/Xircom REM56G.100 + - Nokia 6150/Options "GSM-Ready(R) Cellular-Only" modem + from Option International + - Nokia 6210/- (Linux IrDA serial device) + - Nokia 8810/- (Linux IrDA serial device) + - Siemens S10D/Dr Neuhaus Gipsy Card GSM + - Siemens S25/- (Linux IrDA serial device) + - Siemens S35i/- (Linux IrDA serial device) + - Siemens S45 + - Ericcson SH888/- (Linux IrDA serial device) + - Ericsson 6050102/GM 12 GSM module + - Ericsson T28s (firmware 000809 1106) + - Ericsson T20e (firmware R3A007) + - -/Siemens M20T (stand-alone GSM module) + - -/Wavecom WM02 GSM (stand-alone GSM module) + - Nokia 7110 (firware rev 4.80)/- (Linux IrDA serial device) + - Nokia 8290 (USA GSM 1900MHz)/- (Linux IrDA serial device) + - Falcom A2-1/- (stand-alone GSM module) + - Ericsson R320s/- (Linux IrDA serial device) + - Motorola Timeport 260/- (Serial cable and Linux IrDA serial device) + - Motorola Timeport 250/- (Linux IrDA serial device) + - Motorola Timeport P7389/- (Linux IrDA serial device) + - Nokia Cellular Card Phone RPE-1 GSM900 and + - Nokia Card Phone RPM-1 GSM900/1800 + - Nokia Cardphone/Compaq iPAQ + - Omnipoint technologies Redhawk 2000 GSM modem + - Ericsson T28 (but one firmware revision is reported to have problems) + - Ericcson T65 + - Ericcson T39m/Bluetooth + - Option International GlobeTrotter PCMCIA + + Note 1: Some of the mobile phones have an integrated GSM modem + that can be accessed via the Linux IrDA drivers. + + Note 2: Some of the abovementioned phones have still some glitches + with gsmlib (and I haven't tested them myself). + + For the following phones I receive a lot of errors reports: + + - Ericcson SH888: SMS function don't work with many firmware releases + + This list is not exhaustive, there are probably many other types of + phone or GSM modem that work with gsmlib. Just try it and report back + to me! + + +DISCLAIMER + + Even though care has been taken in the design and implementation + of this software it can not be excluded that this software could + destroy data in your mobile phone or may even render your mobile + phone useless (by erroneous PIN settings, for example). The + author will not be held responsible legally, financially, or in any + other form for any kind of damage that might occur from using + this software. + + This software is provided "as is" and without any expressed or implied + warranties, including, without limitation, the implied warranties of + merchantibility and fitness for any particular purpose. + + If you are not ready to accept these conditions please don't use + this software. + + +COPYING + + This software is available on the LGPL (GNU LIBRARY GENERAL + PUBLIC LICENSE), ie. it is allowed to link + the library to commercial programs. + + See the file COPYING for details on the license. + + +BUGS + + There still seem to be some problems with IrDA devices under + Linux. There have been reports of gsmlib-based applications + (eg. gsmctl) hanging upon startup after initializing the serial port + /dev/ircomm. I would be thankful for any input on this problem. + + If something does not work with your OS platform or the mobile/TA + combination please send a complete trace of the compilation or the + program execution that did fail. Make sure to compile with debugging + information enabled. Otherwise it will not be possible for me to do + much about the problem. Send bug reports to the mailing list or + to software@pxh.de. I promise not to publish telephone numbers or other + private information that might be contained in the execution traces + that you send me. + + +MAILING LISTS + + There are now two mailings lists available for announcements and + discussion of gsmlib-related issues (hosted on lists.over.net). + Refer to these pages for information on subscription procedures + and an archive of previous postings: + + http://lists.over.net/mailman/listinfo/gsmlib-announce/ + for announcements regarding GSMLIB + + http://lists.over.net/mailman/listinfo/gsmlib-devel/ + the GSMLIB development list + + +AUTHOR + + Peter Hofmann . diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO new file mode 100644 index 0000000000..3ea3aa3fd5 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/TODO @@ -0,0 +1,289 @@ +This is my list of TODOs for development of this software (not +necessarily in order of importance): + +("+" = DONE) + ++ handle: + > --> AT+COPS=? + > <-- + > <-- +COPS: (1,"AMENA",,"21403"),(3,"MOVISTAR",,"21407"), + > <-- (3,"E VODAFONE",,"21401"),,(0,1),(2) + > <-- + > <-- OK + > gsmctl[ERROR]: expected comma (at position 45 of string '(1,"AMENA",,"21403"),(3,"MOVISTAR",,"21407"),') + ++ extend README and web site with names of working phones (Siemens S45,...) + ++ add workaround: + > Manufacturer: Nokia Mobile Phones + > Model: 8290 + > Revision: SW5.22 + > Serial Number: 010070303406434 + > Functionality Level: 1 + > gsmctl[ERROR]: expected number, got '(2)' + +- add fork to gsmsmsd + ++ document "on" and "off" operations of gsmctl + +- Just assume full functionality and issue AT+CGMF=0 if we haven't already + done so for this MeTa. + ++ make update po + ++ add find function + ++ specify exact location of manual files in /usr/man/man* in spec + file, so that erase does not try to delete these directories + ++ update PO + ++ add option to gsmsendsms/gsmsmsd to request delivery reports + ++ Fix CBM reception in gsmsmsd, see testcb.cc program + ++ fix gsmsmsd: + --> AT+CNMI=? + <-- + <-- +CNMI: (1),(1),(0),(0),(0) + <-- + <-- OK + --> AT+CNMI=1,0,0,0,0 + <-- + <-- +CME ERROR: 003 + ./gsmsmsd[ERROR]: ME/TA error 'operation not allowed' (code 003) + ++ Wenn ich den SMS-Speicher auslesen möchte, bricht gsmlib ab, weil der + Speicherplatz 1 auf der SIM-Karte nicht belegt ist. Das kann z.B. + passieren, wenn man Nachrichten im Handy löscht. Es kommt der Fehlercode + 321 (Invalid memory index). Wie wäre es, in der Leseroutine alle + ungültigen Plätze zu ignorieren und solange zu lesen, bis die Anzahl der + vorhandenen Nachrichten im Speicher eingelesen ist? + ++ document --charset option of gsmpb + ++ Problems with PDUs with alphanumeric SCA, e.g.: + 07911497941902F00414D0E474989D769F5DE4320839001040122151820000 + ++ > 2. Ich kann mit meinem Nokia 6210 nicht den Telefon-SMS-Speicher + auslesen. Dies liegt an der Speicherwahl, die vor dem Auslesen + an das Telefon übermittelt wird. Von der gsmlib wird anscheinend + immer die Anzahl der Speicher aus dem "CPMS=?"-Befehl genommen + (z.B. "SM","SM","SM"). Notwendig ist es aber nur, die erste + Position (zum Lesen und Löschen) bzw. die ersten beiden + Positionen (zum Schreiben) zu benutzen. + Das Nokia 6210 unterstützt aber an der ritten Stelle nur "SM", + nicht "ME". So kann ich die SMS im Telefon leider nicht + auslesen :-( + +- add option to gsmpb/gsmssmstore deletion to delete ALL entries + +- recheck Solaris port + ++ cache character set settings in MeTa + ++ add documentation for new gsmctl and gsmpb charset parameters + ++ support characters sets other than GSM default alphabet for phone books + ++ create non-existent files (gsmpb and gsmsmsstore) + ++ rename libgsm to libgsmme, new major version 1 + ++ document sca/setsca operations/parameters in gsmctl + ++ document option to set SCA in SMS-related apps + ++ implement option to set SCA in SMS-related apps + ++ convert NDEBUG test output from cout to cerr + ++ test new gsm_unix_serial behaviour + ++ apply checks for telephone number in gsm_sorted_phonebook + ++ add interrupted() checks + ++ check for gcc-2.95.2 in configure + +- document custom backend options of gsmpb (and gsmsmsstore) + +- /var/lock/LCK..modem + ++ make gsmctl all continue even if there are some failures + ++ CPIN thing + ++ bring German translations up-to-date + ++ document -I parameter + ++ make chat routines robust against TAs that insist on echoing AT commands + ++ ericsson sh 888: + <-- AT+CLCK="P2",2,,1 + <-- + +CME ERROR: 4 + gsmctl[ERROR]: ME/TA error 'operation not supported' (code 4) + ++ put README etc. into gsmlib package (not only devel) + ++ make SMS decoding routines more robust against bad SMS (especially + premature end of PDU) + ++ stop gsm_sorted_sms_store.cc from copying back SMS that came from + the SC (SMS_DELIVER, SMS_STATUS_REPORT, SMS_SUBMIT_REPORT). Their + message type is ambiguous and the ME may misinterpret them. + ++ gsmsmsd: reinitialize modem every hour or so (signal termination implemented) + ++ implement store, flush and spool options of gsmsmsd, + document them in man pages + ++ test case for COPS answer numeric operator name in quotation marks + (testparser.cc) + ++ retry when initializing TA (ATZ/ATE0 sequences) + ++ correctly parse malformed SMS PDUs without SCA with Ericsson phone, + introduce Capability object for that. Ericsson ID: + Manufacturer: ERICSSON + Model: 6050102 + Revision: 990225 1852 CXC112143 + Serial Number: 520001690279310 + ++ Determine CPMS number of parameters for CPMS command (Ericsson + phone/GM12 GSM modem): + AT+CPMS? + +CPMS: "ME",0,10,"ME",0,10 + AT+CPMS=? + +CPMS: ("ME","SM"),("ME","SM") + ++ accept string as numeric value when interpreting COPS=? response + (Ericsson phone + GSM12 GSM module) + ++ accept string as numeric value when interpreting COPS? response + (Ericsson phone + GSM12 GSM module) + ++ It would be nice if it was possible to send sms:es + via gsmsmsd as well, via a spool directory or a socket (or stdin, in which + case one can put another program in front of this program and then + feed it with outgoing messages any way one wants). That way the program + could be the gateway between programs and the sms network. Now one has + to stop gsmsmsd to send an sms and that's not so elegant or write + ones own program. + ++ gsmsmsd geht davon aus, das ein platz frei ist und benutzt nur diesen.... + Wenn also eine SMS kommt, dann zieht es Sie raus, und löscht den + Speicherplatz. + Wenn aber die Karte voll ist, passiert gar nichts. Für eine automatisierte + umgebung ist das schlecht. besser wäre es, bei startup von gsmsmsd alle + Speicherplätze abzufrühstücken, und die Action aufzurufen. + ++ Ein RING bringt den gsmsmsd ziemlich heftig aus dem Tritt. Hab jetzt ´ne + Rufumleitung eingebaut. + ++ Links section in homepage + ++ AT+CNMI=? liefert bei mir folgendes zurück: + +CNMI: (0-3),(0-3),(0-2),0,(0-1) + Parameter 4 () liefert also keine Liste sondern nur ein Int zurück, du + versuchts aber ein ( zu parsen. + Was sagt die ETSI-spec. dazu ?? Ist das konform ?? + ++ give name of command at beginning of synopsis in man pages + ++ list combinations of mobiles phones/GSM modems in the README + ++ test ALARM in case of timeout when writing or reading to TA + ++ install headers in gsmlib subdirectory + ++ RPM spec file + ++ test index changes for sorted phonebook -> write second test case + ++ sort phone numbers the same way in gsm_sorted_sms_store and + gsm_sorted_phonebook + ++ write glossary for all these nice abbreviations (TA, ME, SC, SME, TE) + ++ HAVE_VSNPRINTF instead of HAVE_VPRINTF + ++ internationalization of messages with GNU gettext. Files: + +gsm_at.cc +gsm_parser.cc +gsm_sorted_phonebook.cc + +gsm_error.cc +gsm_phonebook.cc +gsm_sorted_sms_store.cc + +gsm_event.cc +gsm_sms.cc +gsm_unix_serial.cc + +gsm_me_ta.cc +gsm_sms_codec.cc +gsm_util.cc + +gsm_nls.cc +gsm_sms_store.cc + +gsmctl.cc +gsmpb.cc +gsmsendsms.cc + +gsmsmsd.cc +gsmsmsstore.cc + ++ implement indexed phonebook ops in gsmpb.cc + ++ describe phonebook file format in gsmpb.man + ++ update list of compatible hardware in README + ++ all #include must be enclosed in #ifdef's + ++ check for getopt_long in configure + ++ remove asserts regarding lengths of numeric data types, put them +into configure script +(string) + ++ sort options in apps/*.cc alphabetically + ++ in gsm_sorted_sms_store compare telephone numbers numerically + ++ introduce -v option to gsmpb and gsmsmsstore to report execution +statistics (gives a nicer feeling to users) + ++ test new synchronization function in gsmpb program + ++ implement equality operator for SMSSToreEntry + ++ test 'make install' + ++ implement operations in the gsmctl program + ++ test operations in the gsmctl program + ++ document operations in the gsmctl program + ++ rewrite test cases (compare output) + ++ write gsm_sorted_sms_store module (along the lines of gsm_sorted_phonebook) + ++ complete gsmsmsstore program (using abovementioned modules) + +TODO low priority: + +- implement SMS text mode + +- The action command of gsmsmsd would be easier to make, if the program + sent the values in environment variables instead (except the user data + which could be sent on stdin). + ++ Upgrade to latest autoheader, autoconf, libtool + +- provide German translations for manual pages + +- organize doc subdirectory for translated READMEs, manual pages + ++ Win32 port + +- test: optimization when accessing phonebooks: use size information +available via AT command to stop reading entries known to be empty (I +cannot test this with my hardware since CPBS? is not fully supported) + +- make apps accept stdin or stdout + ++ maybe strip leading and trailing whitespace from phonebook entries +when reading them from ME/TA or file? (not done, perhaps users want to +achieve special effects with white space) + +- support international character sets (8-bit, 16-bit) in phonebook +operations (I'd like to have input from users who need this) + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h new file mode 100644 index 0000000000..14ce58fbc3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acconfig.h @@ -0,0 +1,33 @@ +/* used by libtool*/ +#define PACKAGE 0 + +/* used by libtool*/ +#define VERSION 0 + +/* Define if getopt_long() available */ +#undef HAVE_GETOPT_LONG + +/* Define if alarm() available */ +#undef HAVE_ALARM + +/* Define if netinet/in.h header available */ +#undef HAVE_NETINET_IN_H + +/* Define if string.h header available */ +#undef HAVE_STRING_H + +/* Define for NLS */ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY + +/* Define LOCALEDIR */ +#define LOCALEDIR "/usr/share/locale" + +/* Define if libintl.h header available */ +#undef HAVE_LIBINTL_H + +/* Define if vsnprintf() function available */ +#undef HAVE_VSNPRINTF diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acinclude.m4 b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/acinclude.m4 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 new file mode 100644 index 0000000000..8d27d03353 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/aclocal.m4 @@ -0,0 +1,9704 @@ +# 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. + +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) + +# gettext.m4 serial 37 (gettext-0.14.4) +dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], ifelse([$1], [external], [no], [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AM_NLS + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + dnl Add a version number to the cache macros. + define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) + define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) + define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + + AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + dnl Now see whether libintl exists and depends on libiconv. + if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext_libintl=yes + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([bh_C_SIGNED])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl + AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ +mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ +strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ +__fsetlocking]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + gt_CHECK_DECL(_snprintf, [#include ]) + gt_CHECK_DECL(_snwprintf, [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL(feof_unlocked, [#include ]) + gt_CHECK_DECL(fgets_unlocked, [#include ]) + gt_CHECK_DECL(getc_unlocked, [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_ICONV + AM_LANGINFO_CODESET + if test $ac_cv_header_locale_h = yes; then + gt_LC_MESSAGES + fi + + if test -n "$INTL_MACOSX_LIBS"; then + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + gt_cv_func_CFPreferencesCopyAppValue, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + + +dnl gt_CHECK_DECL(FUNC, INCLUDES) +dnl Check whether a function is declared. +AC_DEFUN([gt_CHECK_DECL], +[ + AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, + [AC_TRY_COMPILE([$2], [ +#ifndef $1 + char *p = (char *) $1; +#endif +], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) + if test $ac_cv_have_decl_$1 = yes; then + gt_value=1 + else + gt_value=0 + fi + AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + +# glibc2.m4 serial 1 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, + ac_cv_gnu_library_2, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2=yes, + ac_cv_gnu_library_2=no) + ] + ) + AC_SUBST(GLIBC2) + GLIBC2="$ac_cv_gnu_library_2" + ] +) + +# glibc21.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) + +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) + +# intdiv0.m4 serial 1 (gettext-0.11.3) +dnl Copyright (C) 2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + AC_TRY_RUN([ +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} +], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, + [ + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + ]) + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, + [Define if integer division by zero raises signal SIGFPE.]) +]) + +# intmax.m4 serial 2 (gettext-0.14.2) +dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, + [AC_TRY_COMPILE([ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif +], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE(HAVE_INTMAX_T, 1, + [Define if you have the 'intmax_t' type in or .]) + fi +]) + +# inttypes-pri.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_REQUIRE([gt_HEADER_INTTYPES_H]) + if test $gt_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + gt_cv_inttypes_pri_broken, + [ + AC_TRY_COMPILE([#include +#ifdef PRId32 +char *p = PRId32; +#endif +], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, + [Define if exists and defines unusable PRI* macros.]) + fi +]) + +# inttypes.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H if exists and doesn't clash with +# . + +AC_DEFUN([gt_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) + ]) + if test $gt_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, + [Define if exists and doesn't clash with .]) + fi +]) + +# inttypes_h.m4 serial 6 +dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + gl_cv_header_inttypes_h=yes, + gl_cv_header_inttypes_h=no)]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) + +# lcmessage.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi +]) + +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 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 +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 GCC]) + 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. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path 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(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) + +# lib-link.m4 serial 6 (gettext-0.14.3) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.50) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +# lib-prefix.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 Debian 1.5.20-2 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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + 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"} + +# 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' >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' >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 + ;; +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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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 > conftest.exp + $SED '/^$/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` + ;; + 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 + ;; + *) + # 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); */ + } + + 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_unknown|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" + 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 + LDFLAGS="$LDFLAGS $link_static_flag" + 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 > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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' + ;; + +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 + + # 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)); 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 /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +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 + 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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 +])# 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 + + # 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 + ;; + +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* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=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 + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | 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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}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" + 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 + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +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($1) + +# Report which librarie types wil 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_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 + 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 + 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _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' + ;; + esac + fi + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _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*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _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 + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _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 + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + 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 + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC*) + # 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 + ;; + 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 + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + 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_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($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 + +# 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) + +# 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=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# 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=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# 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=$lt_sys_lib_search_path_spec + +# 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* | sysv5*) + symcode='[[BDRT]]' + ;; +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)= + ;; + 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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + ;; + 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*) + ;; + sco*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + 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 + ;; + unixware*) + ;; + 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' + ;; + + 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' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + 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* | sysv5*) + _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 + ;; + + 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 +]) + + +# 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' + ;; + linux*) + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _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 + ;; + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + 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 + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + 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* | sysv5*) + 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 + ;; + + 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # 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(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 + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + 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)=: + ;; + + sco3.2v5*) + _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)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + 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.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _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' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +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 + +# +# 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) + 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 +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_MSG_RESULT([$SED]) +]) + +# longdouble.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the compiler supports the 'long double' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_LONGDOUBLE], +[ + AC_CACHE_CHECK([for long double], gt_cv_c_long_double, + [if test "$GCC" = yes; then + gt_cv_c_long_double=yes + else + AC_TRY_COMPILE([ + /* The Stardent Vistra knows sizeof(long double), but does not support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + int array [2*(sizeof(long double) >= sizeof(double)) - 1]; + ], , + gt_cv_c_long_double=yes, gt_cv_c_long_double=no) + fi]) + if test $gt_cv_c_long_double = yes; then + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) + fi +]) + +# longlong.m4 serial 5 +dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG if 'long long' works. + +AC_DEFUN([gl_AC_TYPE_LONG_LONG], +[ + AC_CACHE_CHECK([for long long], ac_cv_type_long_long, + [AC_TRY_LINK([long long ll = 1LL; int i = 63;], + [long long llmax = (long long) -1; + return ll << i | ll >> i | llmax / ll | llmax % ll;], + ac_cv_type_long_long=yes, + ac_cv_type_long_long=no)]) + if test $ac_cv_type_long_long = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, + [Define if you have the 'long long' type.]) + fi +]) + +# nls.m4 serial 2 (gettext-0.14.3) +dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) + +AC_DEFUN([AM_MKINSTALLDIRS], +[ + dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate it. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) + +# po.m4 serial 7 (gettext-0.14.3) +dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + AC_MSG_RESULT( + [found $GMSGFMT program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + fi + + AC_OUTPUT_COMMANDS([ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" < +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, + [ + AC_EGREP_CPP(notposix, [ +#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], gt_cv_func_printf_posix="guessing no", + gt_cv_func_printf_posix="guessing yes") + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE(HAVE_POSIX_PRINTF, 1, + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) + +# progtest.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# signed.m4 serial 1 (gettext-0.10.40) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([bh_C_SIGNED], +[ + AC_CACHE_CHECK([for signed], bh_cv_c_signed, + [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) + if test $bh_cv_c_signed = no; then + AC_DEFINE(signed, , + [Define to empty if the C compiler doesn't support this keyword.]) + fi +]) + +# size_max.m4 serial 2 +dnl Copyright (C) 2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS(stdint.h) + dnl First test whether the system already has SIZE_MAX. + AC_MSG_CHECKING([for SIZE_MAX]) + result= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], result=yes) + if test -z "$result"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. + dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', + dnl which is guaranteed to work from LONG_MIN to LONG_MAX. + _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, + [#include ], result=?) + _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, + [#include ], result=?) + _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, + [#include ], result=?) + if test "$fits_in_uint" = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_TRY_COMPILE([#include + extern size_t foo; + extern unsigned long foo; + ], [], fits_in_uint=0) + fi + if test -z "$result"; then + if test "$fits_in_uint" = 1; then + result="$res_hi$res_lo"U + else + result="$res_hi$res_lo"UL + fi + else + dnl Shouldn't happen, but who knows... + result='~(size_t)0' + fi + fi + AC_MSG_RESULT([$result]) + if test "$result" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi +]) + +# stdint_h.m4 serial 5 +dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + gl_cv_header_stdint_h=yes, + gl_cv_header_stdint_h=no)]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) + +# uintmax_t.m4 serial 9 +dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +AC_PREREQ(2.13) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE(HAVE_UINTMAX_T, 1, + [Define if you have the 'uintmax_t' type in or .]) + fi +]) + +# ulonglong.m4 serial 4 +dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. + +AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], +[ + AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, + [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], + [unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull;], + ac_cv_type_unsigned_long_long=yes, + ac_cv_type_unsigned_long_long=no)]) + if test $ac_cv_type_unsigned_long_long = yes; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, + [Define if you have the 'unsigned long long' type.]) + fi +]) + +# wchar_t.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, + [AC_TRY_COMPILE([#include + wchar_t foo = (wchar_t)'\0';], , + gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) + fi +]) + +# wint_t.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, + [AC_TRY_COMPILE([#include + wint_t foo = (wchar_t)'\0';], , + gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) + fi +]) + +# xsize.m4 serial 3 +dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_REQUIRE([AC_C_INLINE]) + AC_CHECK_HEADERS(stdint.h) +]) + +# 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"]) +]) + +# 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 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# 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 +]) + +# 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 + +m4_include([acinclude.m4]) diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am new file mode 100644 index 0000000000..eff2f893fc --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.am @@ -0,0 +1,36 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: apps Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 5.6.1999 +# ************************************************************************* + +INCLUDES = -I.. + +bin_PROGRAMS = gsmsmsstore gsmctl gsmsmsd gsmpb gsmsendsms + +# build gsmsmsd from gsmsmsd.cc and libgsmme.la +gsmsmsd_SOURCES = gsmsmsd.cc +gsmsmsd_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmpb from gsmpb.cc and libgsmme.la +gsmpb_SOURCES = gsmpb.cc +gsmpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmctl from gsmctl.cc and libgsmme.la +gsmctl_SOURCES = gsmctl.cc +gsmctl_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmsendsms from gsmsendsms.cc and libgsmme.la +gsmsendsms_SOURCES = gsmsendsms.cc +gsmsendsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmsmsstore from gsmsmsstore.cc and libgsmme.la +gsmsmsstore_SOURCES = gsmsmsstore.cc +gsmsmsstore_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in new file mode 100644 index 0000000000..c18e2df06b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/Makefile.in @@ -0,0 +1,442 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: apps Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 5.6.1999 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +INCLUDES = -I.. + +bin_PROGRAMS = gsmsmsstore gsmctl gsmsmsd gsmpb gsmsendsms + +# build gsmsmsd from gsmsmsd.cc and libgsmme.la +gsmsmsd_SOURCES = gsmsmsd.cc +gsmsmsd_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmpb from gsmpb.cc and libgsmme.la +gsmpb_SOURCES = gsmpb.cc +gsmpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmctl from gsmctl.cc and libgsmme.la +gsmctl_SOURCES = gsmctl.cc +gsmctl_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmsendsms from gsmsendsms.cc and libgsmme.la +gsmsendsms_SOURCES = gsmsendsms.cc +gsmsendsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build gsmsmsstore from gsmsmsstore.cc and libgsmme.la +gsmsmsstore_SOURCES = gsmsmsstore.cc +gsmsmsstore_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) +subdir = apps +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = gsmsmsstore$(EXEEXT) gsmctl$(EXEEXT) gsmsmsd$(EXEEXT) \ + gsmpb$(EXEEXT) gsmsendsms$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_gsmctl_OBJECTS = gsmctl.$(OBJEXT) +gsmctl_OBJECTS = $(am_gsmctl_OBJECTS) +gsmctl_DEPENDENCIES = ../gsmlib/libgsmme.la +gsmctl_LDFLAGS = +am_gsmpb_OBJECTS = gsmpb.$(OBJEXT) +gsmpb_OBJECTS = $(am_gsmpb_OBJECTS) +gsmpb_DEPENDENCIES = ../gsmlib/libgsmme.la +gsmpb_LDFLAGS = +am_gsmsendsms_OBJECTS = gsmsendsms.$(OBJEXT) +gsmsendsms_OBJECTS = $(am_gsmsendsms_OBJECTS) +gsmsendsms_DEPENDENCIES = ../gsmlib/libgsmme.la +gsmsendsms_LDFLAGS = +am_gsmsmsd_OBJECTS = gsmsmsd.$(OBJEXT) +gsmsmsd_OBJECTS = $(am_gsmsmsd_OBJECTS) +gsmsmsd_DEPENDENCIES = ../gsmlib/libgsmme.la +gsmsmsd_LDFLAGS = +am_gsmsmsstore_OBJECTS = gsmsmsstore.$(OBJEXT) +gsmsmsstore_OBJECTS = $(am_gsmsmsstore_OBJECTS) +gsmsmsstore_DEPENDENCIES = ../gsmlib/libgsmme.la +gsmsmsstore_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsmctl.Po ./$(DEPDIR)/gsmpb.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsmsendsms.Po ./$(DEPDIR)/gsmsmsd.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsmsmsstore.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(gsmctl_SOURCES) $(gsmpb_SOURCES) $(gsmsendsms_SOURCES) \ + $(gsmsmsd_SOURCES) $(gsmsmsstore_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(gsmctl_SOURCES) $(gsmpb_SOURCES) $(gsmsendsms_SOURCES) $(gsmsmsd_SOURCES) $(gsmsmsstore_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu apps/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_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 $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +gsmctl$(EXEEXT): $(gsmctl_OBJECTS) $(gsmctl_DEPENDENCIES) + @rm -f gsmctl$(EXEEXT) + $(CXXLINK) $(gsmctl_LDFLAGS) $(gsmctl_OBJECTS) $(gsmctl_LDADD) $(LIBS) +gsmpb$(EXEEXT): $(gsmpb_OBJECTS) $(gsmpb_DEPENDENCIES) + @rm -f gsmpb$(EXEEXT) + $(CXXLINK) $(gsmpb_LDFLAGS) $(gsmpb_OBJECTS) $(gsmpb_LDADD) $(LIBS) +gsmsendsms$(EXEEXT): $(gsmsendsms_OBJECTS) $(gsmsendsms_DEPENDENCIES) + @rm -f gsmsendsms$(EXEEXT) + $(CXXLINK) $(gsmsendsms_LDFLAGS) $(gsmsendsms_OBJECTS) $(gsmsendsms_LDADD) $(LIBS) +gsmsmsd$(EXEEXT): $(gsmsmsd_OBJECTS) $(gsmsmsd_DEPENDENCIES) + @rm -f gsmsmsd$(EXEEXT) + $(CXXLINK) $(gsmsmsd_LDFLAGS) $(gsmsmsd_OBJECTS) $(gsmsmsd_LDADD) $(LIBS) +gsmsmsstore$(EXEEXT): $(gsmsmsstore_OBJECTS) $(gsmsmsstore_DEPENDENCIES) + @rm -f gsmsmsstore$(EXEEXT) + $(CXXLINK) $(gsmsmsstore_LDFLAGS) $(gsmsmsstore_OBJECTS) $(gsmsmsstore_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmctl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmpb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsendsms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsmsd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsmsstore.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cc.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cc.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cc.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-binPROGRAMS 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 tags uninstall uninstall-am \ + uninstall-binPROGRAMS 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc new file mode 100644 index 0000000000..df6fd28e1d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmctl.cc @@ -0,0 +1,635 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmctl.cc +// * +// * Purpose: GSM mobile phone control program +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 11.7.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#include + +using namespace std; +using namespace gsmlib; + +// my ME + +static MeTa *m; + +// information parameters + +enum InfoParameter {AllInfo, // print all info + MeInfo, // MeInfo must be first! + FunctionalityInfo, + OperatorInfo, + CurrentOperatorInfo, + FacilityLockStateInfo, + FacilityLockCapabilityInfo, + PasswordInfo, + PINInfo, + CLIPInfo, + CallForwardingInfo, + BatteryInfo, + BitErrorInfo, + SCAInfo, + CharSetInfo, + SignalInfo}; // SignalInfo must be last! + +// operation parameters + +// FIXME operations not implemented yet + +// options + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"operation", required_argument, (int*)NULL, 'o'}, + {"device", required_argument, (int*)NULL, 'd'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +// helper function, prints forwarding info + +void printForwardReason(string s, ForwardInfo &info) +{ + cout << s << " " + << (info._active ? _("active ") : _("inactive ")) + << _("number: ") << info._number + << _(" subaddr: ") << info._subAddr + << _(" time: ") << info._time << endl; +} + +// print information + +static void printInfo(InfoParameter ip) +{ + switch (ip) + { + case MeInfo: + { + MEInfo mei = m->getMEInfo(); + cout << _(" Manufacturer: ") << mei._manufacturer << endl + << _(" Model: ") << mei._model << endl + << _(" Revision: ") << mei._revision << endl + << _(" Serial Number: ") << mei._serialNumber << endl; + break; + } + case FunctionalityInfo: + { + try { + int fun; + fun = m->getFunctionalityLevel(); + cout << _(" Functionality Level: ") << fun << endl; + } catch (GsmException &x) { + cout << _(" Functionality Level: ") << _("unsupported") << endl; + } + break; + } + case OperatorInfo: + { + int count = 0; + vector opis = m->getAvailableOPInfo(); + for (vector::iterator i = opis.begin(); i != opis.end(); ++i) + { + cout << " Status: "); + switch (i->_status) + { + case UnknownOPStatus: cout << _("unknown"); break; + case CurrentOPStatus: cout << _("current"); break; + case AvailableOPStatus: cout << _("available"); break; + case ForbiddenOPStatus: cout << _("forbidden"); break; + } + cout << _(" Long name: '") << i->_longName << "' " + << _(" Short name: '") << i->_shortName << "' " + << _(" Numeric name: ") << i->_numericName << endl; + ++count; + } + break; + } + case CurrentOperatorInfo: + { + OPInfo opi = m->getCurrentOPInfo(); + cout << "" + << _(" Long name: '") << opi._longName << "' " + << _(" Short name: '") << opi._shortName << "' " + << _(" Numeric name: ") << opi._numericName + << _(" Mode: "); + switch (opi._mode) + { + case AutomaticOPMode: cout << _("automatic"); break; + case ManualOPMode: cout << _("manual"); break; + case DeregisterOPMode: cout << _("deregister"); break; + case ManualAutomaticOPMode: cout << _("manual/automatic"); break; + } + cout << endl; + break; + } + case FacilityLockStateInfo: + { + int count = 0; + vector fclc = m->getFacilityLockCapabilities(); + for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) + if (*i != "AB" && *i != "AG" && *i != "AC") + { + cout << " '" << *i << "'"; + try + { + if (m->getFacilityLockStatus(*i, VoiceFacility)) + cout << _(" Voice"); + } + catch (GsmException &e) + { + cout << _(" unknown"); + } + try + { + if (m->getFacilityLockStatus(*i, DataFacility)) + cout << _(" Data"); + } + catch (GsmException &e) + { + cout << _(" unknown"); + } + try + { + if (m->getFacilityLockStatus(*i, FaxFacility)) + cout << _(" Fax"); + } + catch (GsmException &e) + { + cout << _(" unknown"); + } + cout << endl; + ++count; + } + break; + } + case FacilityLockCapabilityInfo: + { + cout << " "; + vector fclc = m->getFacilityLockCapabilities(); + for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) + cout << "'" << *i << "' "; + cout << endl; + break; + } + case PasswordInfo: + { + vector pwi = m->getPasswords(); + int count = 0; + for (vector::iterator i = pwi.begin(); i != pwi.end(); ++i) + { + cout << " '" + << i->_facility << "' " << i->_maxPasswdLen << endl; + ++count; + } + break; + } + case PINInfo: + { + cout << " " << m->getPINStatus() << endl; + break; + } + case CLIPInfo: + { + cout << " " << (m->getNetworkCLIP() ? _("on") : _("off")) << endl; + break; + } + case CallForwardingInfo: + { + for (int r = 0; r < 4; ++r) + { + string text; + switch (r) + { + case 0: text = _("UnconditionalReason"); break; + case 1: text = _("MobileBusyReason"); break; + case 2: text = _("NoReplyReason"); break; + case 3: text = _("NotReachableReason"); break; + } + ForwardInfo voice, fax, data; + m->getCallForwardInfo((ForwardReason)r, voice, fax, data); + cout << " " + text + _(" Voice"), voice); + cout << " " + text + _(" Data"), data); + cout << " " + text + _(" Fax"), fax); + } + break; + } + case BatteryInfo: + { + cout << " "; + int bcs = m->getBatteryChargeStatus(); + switch (bcs) + { + case 0: cout << _("0 ME is powered by the battery") << endl; break; + case 1: cout << _("1 ME has a battery connected, but is not powered by it") + << endl; break; + case 2: cout << _("2 ME does not have a battery connected") << endl; break; + case 3: + cout << _("3 Recognized power fault, calls inhibited") << endl; + break; + } + cout << " " << m->getBatteryCharge() << endl; + break; + } + case BitErrorInfo: + { + cout << " " << m->getBitErrorRate() << endl; + break; + } + case SCAInfo: + { + cout << " " << m->getServiceCentreAddress() << endl; + break; + } + case CharSetInfo: + { + cout << " "; + vector cs = m->getSupportedCharSets(); + for (vector::iterator i = cs.begin(); i != cs.end(); ++i) + cout << "'" << *i << "' "; + cout << endl; + cout << " '" << m->getCurrentCharSet() << "'" << endl; + break; + } + case SignalInfo: + { + cout << " " << m->getSignalStrength() << endl; + break; + } + default: + assert(0); + break; + } +} + +// convert facility class string of the form "", "all", or any combination +// of "v" (voice), "d" (data), or "f" (fax) to numeric form + +FacilityClass strToFacilityClass(string facilityClassS) +{ + facilityClassS = lowercase(facilityClassS); + FacilityClass facilityClass = (FacilityClass)0; + if (facilityClassS == "all" || facilityClassS == "") + return (FacilityClass)ALL_FACILITIES; + + // OR in facility class bits + for (unsigned int i = 0; i < facilityClassS.length(); ++i) + if (facilityClassS[i] == 'v') + facilityClass = (FacilityClass)(facilityClass | VoiceFacility); + else if (facilityClassS[i] == 'd') + facilityClass = (FacilityClass)(facilityClass | DataFacility); + else if (facilityClassS[i] == 'f') + facilityClass = (FacilityClass)(facilityClass | FaxFacility); + else + throw GsmException( + stringPrintf(_("unknown facility class parameter '%c'"), + facilityClassS[i]), ParameterError); + + return facilityClass; +} + +// check if argc - optind is in range min..max +// throw exception otherwise + +void checkParamCount(int optind, int argc, int min, int max) +{ + int paramCount = argc - optind; + if (paramCount < min) + throw GsmException(stringPrintf(_("not enough parameters, minimum number " + "of parameters is %d"), min), + ParameterError); + else if (paramCount > max) + throw GsmException(stringPrintf(_("too many parameters, maximum number " + "of parameters is %d"), max), + ParameterError); +} + +// *** main program + +int main(int argc, char *argv[]) +{ + try + { + // handle command line options + string device = "/dev/mobilephone"; + string operation; + string baudrate; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "I:o:d:b:hvX", longOpts, &dummy)) + != -1) + switch (opt) + { + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 'd': + device = optarg; + break; + case 'o': + operation = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-b baudrate][-d device][-h]" + "[-I init string][-o operation]\n" + " [-v][-X]{parameters}") << endl + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -d, --device sets the destination device to " + "connect to") << endl + << _(" -h, --help prints this message") << endl + << _(" -I, --init device AT init sequence") << endl + << _(" -o, --operation operation to perform on the mobile \n" + " phone with the specified parameters") + << endl + << _(" -v, --version prints version and exits") << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << endl + << _(" parameters parameters to use for the operation\n" + " (if an operation is given) or\n" + " a specification which kind of\n" + " information to read from the mobile " + "phone") + << endl << endl + << _("Refer to gsmctl(1) for details on the available parameters" + " and operations.") + << endl << endl; + exit(0); + break; + case '?': + throw GsmException(_("unknown option"), ParameterError); + break; + } + + // open the port and ME/TA + m = new MeTa(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (device, + baudrate == "" ? + DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), + initString, swHandshake)); + + if (operation == "") + { // process info parameters + for (int i = optind; i < argc; ++i) + { + string param = lowercase(argv[i]); + if (param == "all") + for (int ip = MeInfo; ip <= SignalInfo; ++ip) + printInfo((InfoParameter)ip); + else if (param == "me") + printInfo(MeInfo); + else if (param == "fun") + printInfo(FunctionalityInfo); + else if (param == "op") + printInfo(OperatorInfo); + else if (param == "currop") + printInfo(CurrentOperatorInfo); + else if (param == "flstat") + printInfo(FacilityLockStateInfo); + else if (param == "flcap") + printInfo(FacilityLockCapabilityInfo); + else if (param == "pw") + printInfo(PasswordInfo); + else if (param == "pin") + printInfo(PINInfo); + else if (param == "clip") + printInfo(CLIPInfo); + else if (param == "forw") + printInfo(CallForwardingInfo); + else if (param == "batt") + printInfo(BatteryInfo); + else if (param == "biterr") + printInfo(BitErrorInfo); + else if (param == "sig") + printInfo(SignalInfo); + else if (param == "sca") + printInfo(SCAInfo); + else if (param == "cset") + printInfo(CharSetInfo); + else + throw GsmException( + stringPrintf(_("unknown information parameter '%s'"), + param.c_str()), + ParameterError); + } + } + else + { // process operation + operation = lowercase(operation); + if (operation == "dial") + { + // dial: number + checkParamCount(optind, argc, 1, 1); + + m->dial(argv[optind]); + + // wait for keypress from stdin + char c; + read(1, &c, 1); + } + else if (operation == "on") + { + m->setFunctionalityLevel(1); + } + else if (operation == "off") + { + m->setFunctionalityLevel(0); + } + else if (operation == "pin") + { + // pin: PIN + checkParamCount(optind, argc, 1, 1); + + m->setPIN(argv[optind]); + } + else if (operation == "setop") + { + // setop: opmode numeric FIXME allow long and numeric too + checkParamCount(optind, argc, 2, 2); + string opmodeS = lowercase(argv[optind]); + OPModes opmode; + if (opmodeS == "automatic") + opmode = AutomaticOPMode; + else if (opmodeS == "manual") + opmode = ManualOPMode; + else if (opmodeS == "deregister") + opmode = DeregisterOPMode; + else if (opmodeS == "manualautomatic") + opmode = ManualAutomaticOPMode; + else + throw GsmException(stringPrintf(_("unknown opmode parameter '%s'"), + opmodeS.c_str()), ParameterError); + + m->setCurrentOPInfo(opmode, "" , "", checkNumber(argv[optind + 1])); + } + else if (operation == "lock") + { + // lock: facility [facilityclass] [passwd] + checkParamCount(optind, argc, 1, 3); + string passwd = (argc - optind == 3) ? + (string)argv[optind + 2] : (string)""; + + m->lockFacility(argv[optind], + (argc - optind >= 2) ? + strToFacilityClass(argv[optind + 1]) : + (FacilityClass)ALL_FACILITIES, + passwd); + } + else if (operation == "unlock") + { + // unlock: facility [facilityclass] [passwd] + checkParamCount(optind, argc, 1, 3); + string passwd = argc - optind == 3 ? argv[optind + 2] : ""; + + m->unlockFacility(argv[optind], + (argc - optind >= 2) ? + strToFacilityClass(argv[optind + 1]) : + (FacilityClass)ALL_FACILITIES, + passwd); + } + else if (operation == "setpw") + { + // set password: facility oldpasswd newpasswd + checkParamCount(optind, argc, 1, 3); + string oldPasswd = argc - optind >= 2 ? argv[optind + 1] : ""; + string newPasswd = argc - optind == 3 ? argv[optind + 2] : ""; + + m->setPassword(argv[optind], oldPasswd, newPasswd); + } + else if (operation == "forw") + { + // call forwarding: mode reason number [facilityclass] [forwardtime] + checkParamCount(optind, argc, 2, 5); + + // get optional parameters facility class and forwardtime + int forwardTime = argc - optind == 5 ? checkNumber(argv[optind + 4]) : + NOT_SET; + FacilityClass facilityClass = + argc - optind >= 4 ? strToFacilityClass(argv[optind + 3]) : + (FacilityClass)ALL_FACILITIES; + + // get forward reason + string reasonS = lowercase(argv[optind + 1]); + ForwardReason reason; + if (reasonS == "unconditional") + reason = UnconditionalReason; + else if (reasonS == "mobilebusy") + reason = MobileBusyReason; + else if (reasonS == "noreply") + reason = NoReplyReason; + else if (reasonS == "notreachable") + reason = NotReachableReason; + else if (reasonS == "all") + reason = AllReasons; + else if (reasonS == "allconditional") + reason = AllConditionalReasons; + else + throw GsmException( + stringPrintf(_("unknown forward reason parameter '%s'"), + reasonS.c_str()), ParameterError); + + // get mode + string modeS = lowercase(argv[optind]); + ForwardMode mode; + if (modeS == "disable") + mode = DisableMode; + else if (modeS == "enable") + mode = EnableMode; + else if (modeS == "register") + mode = RegistrationMode; + else if (modeS == "erase") + mode = ErasureMode; + else + throw GsmException( + stringPrintf(_("unknown forward mode parameter '%s'"), + modeS.c_str()), ParameterError); + + m->setCallForwarding(reason, mode, + (argc - optind >= 3) ? argv[optind + 2] : "", + "", // subaddr + facilityClass, forwardTime); + } + else if (operation == "setsca") + { + // set sca: number + checkParamCount(optind, argc, 1, 1); + m->setServiceCentreAddress(argv[optind]); + } + else if (operation == "cset") + { + // set charset: string + checkParamCount(optind, argc, 1, 1); + m->setCharSet(argv[optind]); + } + else + throw GsmException(stringPrintf(_("unknown operation '%s'"), + operation.c_str()), ParameterError); + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc new file mode 100644 index 0000000000..6196b717c2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmpb.cc @@ -0,0 +1,507 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmpb.cc +// * +// * Purpose: phonebook management program +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 24.6.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"phonebook", required_argument, (int*)NULL, 'p'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"destination", required_argument, (int*)NULL, 'd'}, + {"source", required_argument, (int*)NULL, 's'}, + {"destination-backend", required_argument, (int*)NULL, 'D'}, + {"source-backend", required_argument, (int*)NULL, 'S'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"charset", required_argument, (int*)NULL, 't'}, + {"copy", no_argument, (int*)NULL, 'c'}, + {"synchronize", no_argument, (int*)NULL, 'y'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {"verbose", no_argument, (int*)NULL, 'V'}, + {"indexed", no_argument, (int*)NULL, 'i'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +// insert those entries from sourcePhonebook into destPhonebook +// that are not already present in destPhonebook + +void insertNotPresent(SortedPhonebookRef sourcePhonebook, + SortedPhonebookRef destPhonebook, + bool indexed, bool verbose) +{ + for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); + i != sourcePhonebook->end(); ++i) + { + pair range; + if (indexed) + { + int index = i->index(); + range = destPhonebook->equal_range(index); + } + else + { + string text = i->text(); + range = destPhonebook->equal_range(text); + } + + // do nothing if the entry is already present in the destination + bool alreadyPresent = false; + for (SortedPhonebookBase::iterator j = range.first; + j != range.second; ++j) + { + i->setUseIndex(indexed); + if (i->telephone() == j->telephone()) + { + alreadyPresent = true; + break; + } + } + // ... else insert it + if (! alreadyPresent) + { + if (verbose) + { + cout << stringPrintf(_("inserting '%s' tel# %s"), + i->text().c_str(), i->telephone().c_str()); + if (indexed) + cout << stringPrintf(_(" (index #%d)"), i->index()); + cout << endl; + } + i->setUseIndex(indexed); + destPhonebook->insert(*i); // insert + } + } +} + +// update those entries in destPhonebook, that +// - have the same name as one entry in destPhonebook +// - but have a different telephone number +// this is only done if the name in question is unique in the destPhonebook +// the case of several entries having the same in the sourcePhonebook +// is handled - only the first is considered for updating + +void updateEntries(SortedPhonebookRef sourcePhonebook, + SortedPhonebookRef destPhonebook, + bool verbose) +{ + bool firstLoop = true; + string lastText; + + for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); + i != sourcePhonebook->end(); ++i) + { + string text = i->text(); + if (! firstLoop && text != lastText) + { + pair range = + destPhonebook->equal_range(text); + + SortedPhonebookBase::iterator first = range.first; + if (first != destPhonebook->end() && range.second == ++first) + { // just one text in the destPhonebook + if (! (*range.first == *i)) // overwrite if different in destination + { + if (verbose) + cout << stringPrintf(_("updating '%s' tel# %s to new tel# %s"), + range.first->text().c_str(), + range.first->telephone().c_str(), + i->telephone().c_str()) + << endl; + + *range.first = *i; + } + } + lastText = text; + } + firstLoop = false; + } +} + +// the same but for indexed phonebooks + +void updateEntriesIndexed(SortedPhonebookRef sourcePhonebook, + SortedPhonebookRef destPhonebook, + bool verbose) +{ + for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); + i != sourcePhonebook->end(); ++i) + { + int index = i->index(); + + SortedPhonebookBase::iterator j = destPhonebook->find(index); + + if (j != destPhonebook->end()) + { // index present in the destPhonebook + if (! (*j == *i)) // overwrite if different in destination + { + if (verbose) + cout << stringPrintf(_("updating '%s' tel# %s to new tel# %s" + "(index %d)"), + j->text().c_str(), + j->telephone().c_str(), + i->telephone().c_str(), i->index()) + << endl; + + *j = *i; + } + } + } +} + +// delete those entries from destPhonebook, that are not present +// in sourcePhonebook + +void deleteNotPresent(SortedPhonebookRef sourcePhonebook, + SortedPhonebookRef destPhonebook, + bool indexed, bool verbose) +{ + for (SortedPhonebookBase::iterator i = destPhonebook->begin(); + i != destPhonebook->end(); ++i) + { + pair range; + if (indexed) + { + int index = i->index(); + range = sourcePhonebook->equal_range(index); + } + else + { + string text = i->text(); + range = sourcePhonebook->equal_range(text); + } + + bool found = false; + for (SortedPhonebookBase::iterator j = range.first; + j != range.second; ++j) + { + i->setUseIndex(indexed); + if (j->telephone() == i->telephone()) + { + found = true; + break; + } + } + if (! found) + { + if (verbose) + { + cout << stringPrintf(_("deleting '%s' tel# %s"), + i->text().c_str(), i->telephone().c_str()); + if (indexed) + cout << stringPrintf(_(" (index #%d)"), i->index()); + cout << endl; + } + destPhonebook->erase(i); +#ifdef BUGGY_MAP_ERASE + deleteNotPresent(sourcePhonebook, destPhonebook, indexed, verbose); + return; +#endif + } + } +} + +// *** main program + +int main(int argc, char *argv[]) +{ + try + { + // handle command line options + string destination; + string source; + string destinationBackend; + string sourceBackend; + string baudrate; + bool doSynchronize = true; + string phonebook; + SortedPhonebookRef sourcePhonebook, destPhonebook; + bool verbose = false; + bool indexed = false; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + string charSet; + Ref sourceMeTa, destMeTa; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "I:p:s:d:b:cyhvViD:S:Xt:", longOpts, + &dummy)) + != -1) + switch (opt) + { + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 'V': + verbose = true; + break; + case 'p': + phonebook = optarg; + break; + case 'd': + destination = optarg; + break; + case 's': + source = optarg; + break; + case 'D': + destinationBackend = optarg; + break; + case 'S': + sourceBackend = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 't': + charSet = optarg; + break; + case 'c': + doSynchronize = false; + break; + case 'i': + indexed = true; + break; + case 'y': + doSynchronize = true; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-b baudrate][-c][-d device or file][-h]" + "[-I init string]\n" + " [-p phonebook name][-s device or file]" + "[-t charset][-v]" + "[-V][-y][-X]") << endl + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -c, --copy copy source entries to destination") + << endl + << _(" -d, --destination sets the destination device to " + "connect \n" + " to, or the file to write") << endl + << _(" -D, --destination-backend sets the destination backend") + << endl + << _(" -h, --help prints this message") << endl + << _(" -i, --index takes index positions into account") + << endl + << _(" -I, --init device AT init sequence") << endl + << _(" -p, --phonebook name of phonebook to use") << endl + << _(" -s, --source sets the source device to connect to,\n" + " or the file to read") << endl + << _(" -t, --charset sets the character set to use for\n" + " phonebook entries") << endl + << _(" -S, --source-backend sets the source backend") + << endl + << _(" -v, --version prints version and exits") << endl + << _(" -V, --verbose print detailed progress messages") + << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << _(" -y, --synchronize synchronize destination with source\n" + " entries (destination is overwritten)\n" + " (see gsmpb(1) for details)") + << endl << endl; + exit(0); + break; + case '?': + throw GsmException(_("unknown option"), ParameterError); + break; + } + + // check if all parameters all present + if (destination == "" || source == "") + throw GsmException(_("both source and destination must be given"), + ParameterError); + + // start accessing source mobile phone or file + if (sourceBackend != "") + sourcePhonebook = + CustomPhonebookRegistry::createPhonebook(sourceBackend, source); + else if (source == "-") + sourcePhonebook = new SortedPhonebook(true, indexed); + else if (isFile(source)) + sourcePhonebook = new SortedPhonebook(source, indexed); + else + { + if (phonebook == "") + throw GsmException(_("phonebook name must be given"), ParameterError); + + sourceMeTa = new MeTa(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (source, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), initString, + swHandshake)); + if (charSet != "") + sourceMeTa->setCharSet(charSet); + sourcePhonebook = + new SortedPhonebook(sourceMeTa->getPhonebook(phonebook)); + } + + // make sure destination.c_str file exists + if (destination != "") + { + try + { + ofstream f(destination.c_str(), ios::out | ios::app); + } + catch (exception) + { + } + } + + // start accessing destination mobile phone or file + if (destinationBackend != "") + destPhonebook = + CustomPhonebookRegistry::createPhonebook(destinationBackend, + destination); + else if (destination == "-") + destPhonebook = new SortedPhonebook(false, indexed); + else if (isFile(destination)) + destPhonebook = new SortedPhonebook(destination, indexed); + else + { + if (phonebook == "") + throw GsmException(_("phonebook name must be given"), ParameterError); + + destMeTa = new MeTa(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (destination, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), initString, + swHandshake)); + if (charSet != "") + destMeTa->setCharSet(charSet); + PhonebookRef destPb = destMeTa->getPhonebook(phonebook); + + // check maximum lengths of source text and phonenumber when writing to + // mobile phone + unsigned int maxTextLen = destPb->getMaxTextLen(); + unsigned int maxTelLen = destPb->getMaxTelephoneLen(); + + for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); + i != sourcePhonebook->end(); ++i) + if (i->text().length() > maxTextLen) + throw GsmException( + stringPrintf(_("text '%s' is too large to fit into destination " + "(maximum size %d characters)"), + i->text().c_str(), maxTextLen), + ParameterError); + else if (i->telephone().length() > maxTelLen) + throw GsmException( + stringPrintf(_("phone number '%s' is too large to fit into " + "destination (maximum size %d characters)"), + i->telephone().c_str(), maxTelLen), + ParameterError); + + // read phonebook + destPhonebook = new SortedPhonebook(destPb); + } + + // now do the actual work + if (doSynchronize) + { // synchronizing + if (indexed) + { + sourcePhonebook->setSortOrder(ByIndex); + destPhonebook->setSortOrder(ByIndex); + // for an explanation see below + updateEntriesIndexed(sourcePhonebook, destPhonebook, verbose); + deleteNotPresent(sourcePhonebook, destPhonebook, true, verbose); + insertNotPresent(sourcePhonebook, destPhonebook, true, verbose); + } + else + { + sourcePhonebook->setSortOrder(ByText); + destPhonebook->setSortOrder(ByText); + // the following is done to avoid superfluous writes to the TA + // (that takes time) and keep updated (ie. telephone number changed) + // entries at the same place + // 1. update entries in place where just the number changed + updateEntries(sourcePhonebook, destPhonebook, verbose); + // 2. delete those that are not present anymore + deleteNotPresent(sourcePhonebook, destPhonebook, false, verbose); + // 3. insert the new ones + insertNotPresent(sourcePhonebook, destPhonebook, false, verbose); + } + } + else + { // copying + destPhonebook->clear(); + for (SortedPhonebookBase::iterator i = sourcePhonebook->begin(); + i != sourcePhonebook->end(); ++i) + { + if (verbose) + { + cout << stringPrintf(_("inserting '%s' tel# %s"), + i->text().c_str(), i->telephone().c_str()); + if (indexed) + cout << stringPrintf(_(" (index #%d)"), i->index()); + cout << endl; + } + destPhonebook->insert(*i); + } + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc new file mode 100644 index 0000000000..f6418842ac --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsendsms.cc @@ -0,0 +1,257 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmsendsms.cc +// * +// * Purpose: GSM sms send program +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 16.7.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// options + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"requeststat", no_argument, (int*)NULL, 'r'}, + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"sca", required_argument, (int*)NULL, 'C'}, + {"device", required_argument, (int*)NULL, 'd'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"concatenate", required_argument, (int*)NULL, 'c'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"test", no_argument, (int*)NULL, 't'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +// convert /r and /n to CR and LF + +static string unescapeString(char *line) +{ + string result; + bool escaped = false; + int index = 0; + + while (line[index] != 0 && + line[index] != CR && line[index] != LF) + { + if (escaped) + { + escaped = false; + if (line[index] == 'r') + result += CR; + else if (line[index] == 'n') + result += LF; + else if (line[index] == '\\') + result += '\\'; + else + result += line[index]; + } + else + if (line[index] == '\\') + escaped = true; + else + result += line[index]; + + ++index; + } + return result; +} + +// *** main program + +int main(int argc, char *argv[]) +{ + try + { + // handle command line options + string device = "/dev/mobilephone"; + bool test = false; + string baudrate; + Ref at; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + bool requestStatusReport = false; + // service centre address (set on command line) + string serviceCentreAddress; + MeTa *m = NULL; + string concatenatedMessageIdStr; + int concatenatedMessageId = -1; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "c:C:I:d:b:thvXr", longOpts, &dummy)) + != -1) + switch (opt) + { + case 'c': + concatenatedMessageIdStr = optarg; + break; + case 'C': + serviceCentreAddress = optarg; + break; + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 'd': + device = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 't': + test = true; + break; + case 'r': + requestStatusReport = true; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-b baudrate][-c concatenatedID]" + "[-C sca][-d device][-h][-I init string]\n" + " [-t][-v][-X] phonenumber [text]") << endl + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -c, --concatenate ID for concatenated SMS messages") + << endl + << _(" -C, --sca SMS service centre address") << endl + << _(" -d, --device sets the destination device to connect " + "to") << endl + << _(" -h, --help prints this message") << endl + << _(" -I, --init device AT init sequence") << endl + << _(" -r, --requeststat request SMS status report") << endl + << _(" -t, --test convert text to GSM alphabet and " + "vice\n" + " versa, no SMS message is sent") << endl + << _(" -v, --version prints version and exits") + << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << endl + << _(" phonenumber recipient's phone number") << endl + << _(" text optional text of the SMS message\n" + " if omitted: read from stdin") + << endl << endl; + exit(0); + break; + case '?': + throw GsmException(_("unknown option"), ParameterError); + break; + } + + if (! test) + { + // open the port and ME/TA + Ref port = new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (device, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), + initString, swHandshake); + // switch message service level to 1 + // this enables acknowledgement PDUs + m = new MeTa(port); + m->setMessageService(1); + + at = new GsmAt(*m); + } + + // check parameters + if (optind == argc) + throw GsmException(_("phone number and text missing"), ParameterError); + + if (optind + 2 < argc) + throw GsmException(_("more than two parameters given"), ParameterError); + + if (concatenatedMessageIdStr != "") + concatenatedMessageId = checkNumber(concatenatedMessageIdStr); + + // get phone number + string phoneNumber = argv[optind]; + + // get text + string text; + if (optind + 1 == argc) + { // read from stdin + char s[1000]; + cin.get(s, 1000); + text = unescapeString(s); + if (text.length() > 160) + throw GsmException(_("text is larger than 160 characters"), + ParameterError); + } + else + text = argv[optind + 1]; + + if (test) + cout << gsmToLatin1(latin1ToGsm(text)) << endl; + else + { + // send SMS + Ref submitSMS = new SMSSubmitMessage(); + // set service centre address in new submit PDU if requested by user + if (serviceCentreAddress != "") + { + Address sca(serviceCentreAddress); + submitSMS->setServiceCentreAddress(sca); + } + submitSMS->setStatusReportRequest(requestStatusReport); + Address destAddr(phoneNumber); + submitSMS->setDestinationAddress(destAddr); + if (concatenatedMessageId == -1) + m->sendSMSs(submitSMS, text, true); + else + m->sendSMSs(submitSMS, text, false, concatenatedMessageId); + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc new file mode 100644 index 0000000000..ffb2db0739 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsd.cc @@ -0,0 +1,723 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmsmsd.cc +// * +// * Purpose: SMS receiver daemon +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 5.6.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include + +#ifdef WIN32 +#include +#include +#include +#define popen _popen +#define pclose _pclose +#else +#include +#include +#include +#include +#endif +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"requeststat", no_argument, (int*)NULL, 'r'}, + {"direct", no_argument, (int*)NULL, 'D'}, + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"store", required_argument, (int*)NULL, 't'}, + {"device", required_argument, (int*)NULL, 'd'}, + {"spool", required_argument, (int*)NULL, 's'}, + {"sent", required_argument, (int*)NULL, 'S'}, + {"failed", required_argument, (int*)NULL, 'F'}, + {"priorities", required_argument, (int*)NULL, 'P'}, +#ifndef WIN32 + {"syslog", no_argument, (int*)NULL, 'L'}, +#endif + {"sca", required_argument, (int*)NULL, 'C'}, + {"flush", no_argument, (int*)NULL, 'f'}, + {"concatenate", required_argument, (int*)NULL, 'c'}, + {"action", required_argument, (int*)NULL, 'a'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +// my ME + +static MeTa *me = NULL; +string receiveStoreName; // store name for received SMSs + +// service centre address (set on command line) + +static string serviceCentreAddress; + +// ID if concatenated messages should be sent + +static int concatenatedMessageId = -1; + +// signal handler for terminate signal + +bool terminateSent = false; + +void terminateHandler(int signum) +{ + terminateSent = true; +} + +// local class to handle SMS events + +struct IncomingMessage +{ + // used if new message is put into store + int _index; // -1 means message want send directly + string _storeName; + // used if SMS message was sent directly to TA + SMSMessageRef _newSMSMessage; + // used if CB message was sent directly to TA + CBMessageRef _newCBMessage; + // used in both cases + GsmEvent::SMSMessageType _messageType; + + IncomingMessage() : _index(-1) {} +}; + +vector newMessages; + +class EventHandler : public GsmEvent +{ +public: + // inherited from GsmEvent + void SMSReception(SMSMessageRef newMessage, + SMSMessageType messageType); + void CBReception(CBMessageRef newMessage); + void SMSReceptionIndication(string storeName, unsigned int index, + SMSMessageType messageType); + + virtual ~EventHandler() {} +}; + +void EventHandler::SMSReception(SMSMessageRef newMessage, + SMSMessageType messageType) +{ + IncomingMessage m; + m._messageType = messageType; + m._newSMSMessage = newMessage; + newMessages.push_back(m); +} + +void EventHandler::CBReception(CBMessageRef newMessage) +{ + IncomingMessage m; + m._messageType = GsmEvent::CellBroadcastSMS; + m._newCBMessage = newMessage; + newMessages.push_back(m); +} + +void EventHandler::SMSReceptionIndication(string storeName, unsigned int index, + SMSMessageType messageType) +{ + IncomingMessage m; + m._index = index; + + if (receiveStoreName != "" && ( storeName == "MT" || storeName == "mt")) + m._storeName = receiveStoreName; + else + m._storeName = storeName; + + m._messageType = messageType; + newMessages.push_back(m); +} + +// execute action on string + +void doAction(string action, string result) +{ + if (action != "") + { + FILE *fd = popen(action.c_str(), "w"); + if (fd == NULL) + throw GsmException(stringPrintf(_("could not execute '%s'"), + action.c_str()), OSError); + fputs(result.c_str(), fd); + if (ferror(fd)) + throw GsmException(stringPrintf(_("error writing to '%s'"), + action.c_str()), OSError); + pclose(fd); + } + else + // default if no action: output on stdout + cout << result << endl; +} + +// send all SMS messages in spool dir + +bool requestStatusReport = false; + +void sendSMS(string spoolDirBase, string sentDirBase, string failedDirBase, + unsigned int priority, bool enableSyslog, Ref at) +{ + string spoolDir = spoolDirBase; + string sentDir = sentDirBase; + string failedDir = failedDirBase; + if ( priority >= 1 ) + { + spoolDir = spoolDirBase + stringPrintf(_("%d"),priority); + sentDir = sentDirBase + stringPrintf(_("%d"),priority); + failedDir = failedDirBase + stringPrintf(_("%d"),priority); + } + if ( priority > 1 ) + sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); + if (spoolDirBase != "") + { + // look into spoolDir for any outgoing SMS that should be sent +#ifdef WIN32 + struct _finddata_t fileInfo; + long fileHandle; + string pattern = spoolDir + "\\*"; + fileHandle = _findfirst(pattern.c_str(), &fileInfo); + bool moreFiles = fileHandle != -1L; +#else + DIR *dir = opendir(spoolDir.c_str()); + if (dir == (DIR*)NULL) + throw GsmException( + stringPrintf(_("error when calling opendir('%s')" + "(errno: %d/%s)"), + spoolDir.c_str(), errno, strerror(errno)), + OSError); +#endif + +#ifdef WIN32 + while (moreFiles) + { + if (strcmp(fileInfo.name, ".") != 0 && + strcmp(fileInfo.name, "..") != 0) +#else + struct dirent *entry; + while ((entry = readdir(dir)) != (struct dirent*)NULL) + if (strcmp(entry->d_name, ".") != 0 && + strcmp(entry->d_name, "..") != 0) +#endif + { + if ( priority > 1 ) + sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); + // read in file + // the first line is interpreted as the phone number + // the rest is the message +#ifdef WIN32 + string filename = spoolDir + "\\" + fileInfo.name; +#else + string filename = spoolDir + "/" + entry->d_name; +#endif + ifstream ifs(filename.c_str()); + if (! ifs) +#ifndef WIN32 + if (enableSyslog) + { + syslog(LOG_WARNING, "Could not open SMS spool file %s", + filename.c_str()); + if (failedDirBase != "") { + string failedfilename = failedDir + "/" + entry->d_name; + rename(filename.c_str(),failedfilename.c_str()); + } + continue; + } + else +#endif + throw GsmException( + stringPrintf(_("count not open SMS spool file %s"), + filename.c_str()), ParameterError); + char phoneBuf[1001]; + ifs.getline(phoneBuf, 1000); + for(int i=0;i<1000;i++) + if(phoneBuf[i]=='\t' || phoneBuf[i]==0) + { // ignore everything after a in the phone number + phoneBuf[i]=0; + break; + } + string text; + while (! ifs.eof()) + { + char c; + ifs.get(c); + text += c; + } + ifs.close(); + + // remove trailing newline/linefeed + while (text[text.length() - 1] == '\n' || + text[text.length() - 1] == '\r') + text = text.substr(0, text.length() - 1); + + // send the message + string phoneNumber(phoneBuf); + Ref submitSMS = new SMSSubmitMessage(); + // set service centre address in new submit PDU if requested by user + if (serviceCentreAddress != "") + { + Address sca(serviceCentreAddress); + submitSMS->setServiceCentreAddress(sca); + } + submitSMS->setStatusReportRequest(requestStatusReport); + Address destAddr(phoneNumber); + submitSMS->setDestinationAddress(destAddr); + try + { + if (concatenatedMessageId == -1) + me->sendSMSs(submitSMS, text, true); + else + { + // maximum for concatenatedMessageId is 255 + if (concatenatedMessageId > 256) + concatenatedMessageId = 0; + me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); + } +#ifndef WIN32 + if (enableSyslog) + syslog(LOG_NOTICE, "Sent SMS to %s from file %s", phoneBuf, filename.c_str()); +#endif + if (sentDirBase != "") { +#ifdef WIN32 + string sentfilename = sentDir + "\\" + fileInfo.name; +#else + string sentfilename = sentDir + "/" + entry->d_name; +#endif + rename(filename.c_str(),sentfilename.c_str()); + } else { + unlink(filename.c_str()); + } + } + catch (GsmException &me) + { +#ifndef WIN32 + if (enableSyslog) + syslog(LOG_WARNING, "Failed sending SMS to %s from file %s: %s", phoneBuf, + filename.c_str(), me.what()); + else +#endif + cerr << "Failed sending SMS to " << phoneBuf << " from " + << filename << ": " << me.what() << endl; + if (failedDirBase != "") { +#ifdef WIN32 + string failedfilename = failedDir + "\\" + fileInfo.name; +#else + string failedfilename = failedDir + "/" + entry->d_name; +#endif + rename(filename.c_str(),failedfilename.c_str()); + } + } +#ifdef WIN32 + } + moreFiles = _findnext(fileHandle, &fileInfo) == 0; +#endif + } +#ifdef WIN32 + _findclose(fileHandle); +#else + closedir(dir); +#endif + } +} + +#ifndef WIN32 +void syslogExit(int exitcode, int *dummy) +{ + syslog(LOG_NOTICE, "exited (exit %d)",exitcode); +} +#endif + +// *** main program + +int main(int argc, char *argv[]) +{ + bool enableSyslog = false; + try + { + string device = "/dev/mobilephone"; + string action; + string baudrate; + bool enableSMS = true; + bool enableCB = true; + bool enableStat = true; + bool flushSMS = false; + bool onlyReceptionIndication = true; + string spoolDir; + string sentDir = ""; + string failedDir = ""; + unsigned int priorities = 0; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + string concatenatedMessageIdStr; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:S:F:P:LXDr", + longOpts, &dummy)) != -1) + switch (opt) + { + case 'c': + concatenatedMessageIdStr = optarg; + break; + case 'r': + requestStatusReport = true; + break; + case 'D': + onlyReceptionIndication = false; + break; + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 't': + receiveStoreName = optarg; + break; + case 'd': + device = optarg; + break; + case 'C': + serviceCentreAddress = optarg; + break; + case 's': + spoolDir = optarg; + break; + case 'L': + enableSyslog = true; + break; + case 'S': + sentDir = optarg; + break; + case 'F': + failedDir = optarg; + break; + case 'P': + priorities = abs(atoi(optarg)); + break; + case 'f': + flushSMS = true; + break; + case 'a': + action = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-a action][-b baudrate][-C sca][-d device]" + "[-f][-h][-I init string]\n" + " [-s spool dir][-t][-v]{sms_type}") + << endl << endl + << _(" -a, --action the action to execute when an SMS " + "arrives\n" + " (SMS is send to stdin of action)") + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -c, --concatenate start ID for concatenated SMS messages") + << endl + << _(" -C, --sca SMS service centre address") << endl + << _(" -d, --device sets the device to connect to") << endl + << _(" -D, --direct enable direct routing of SMSs") << endl + << _(" -f, --flush flush SMS from store") << endl + << _(" -F, --failed directory to move failed SMS to,") << endl + << _(" if unset, the SMS will be deleted") << endl + << _(" -h, --help prints this message") << endl + << _(" -I, --init device AT init sequence") << endl +#ifndef WIN32 + << _(" -L, --syslog log errors and information to syslog") + << endl +#endif + << _(" -P, --priorities number of priority levels to use,") << endl + << _(" (default: none)") << endl + << _(" -r, --requeststat request SMS status report") << endl + << _(" -s, --spool spool directory for outgoing SMS") + << endl + << _(" -S, --sent directory to move sent SMS to,") << endl + << _(" if unset, the SMS will be deleted") << endl + << _(" -t, --store name of SMS store to use for flush\n" + " and/or temporary SMS storage") << endl + << endl + << _(" -v, --version prints version and exits") << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << endl + << _(" sms_type may be any combination of") << endl << endl + << _(" sms, no_sms controls reception of normal SMS") + << endl + << _(" cb, no_cb controls reception of cell broadcast" + " messages") << endl + << _(" stat, no_stat controls reception of status reports") + << endl << endl + << _(" default is \"sms cb stat\"") << endl << endl + << _("If no action is given, the SMS is printed to stdout") + << endl << endl + << _("If -P is given, it activates the priority system and sets the") << endl + << _("number or levels to use. For every level, there must be directories") << endl + << _("named +.") << endl + << _("For example \"-P 2 -s queue -S send -F failed\" needs the following") <getSMSStore(receiveStoreName); + + for (SMSStore::iterator s = store->begin(); s != store->end(); ++s) + if (! s->empty()) + { + string result = _("Type of message: "); + switch (s->message()->messageType()) + { + case SMSMessage::SMS_DELIVER: + result += _("SMS message\n"); + break; + case SMSMessage::SMS_SUBMIT_REPORT: + result += _("submit report message\n"); + break; + case SMSMessage::SMS_STATUS_REPORT: + result += _("status report message\n"); + break; + } + result += s->message()->toString(); + doAction(action, result); + store->erase(s); + } + } + + // set default SMS store if -t option was given or + // read from ME otherwise + if (receiveStoreName == "") + { + string dummy1, dummy2; + me->getSMSStore(dummy1, dummy2, receiveStoreName ); + } + else + me->setSMSStore(receiveStoreName, 3); + + // switch message service level to 1 + // this enables SMS routing to TA + me->setMessageService(1); + + // switch on SMS routing + me->setSMSRoutingToTA(enableSMS, enableCB, enableStat, + onlyReceptionIndication); + + // register event handler to handle routed SMSs, CBMs, and status reports + me->setEventHandler(new EventHandler()); + + // wait for new messages + bool exitScheduled = false; + while (1) + { +#ifdef WIN32 + ::timeval timeoutVal; + timeoutVal.tv_sec = 5; + timeoutVal.tv_usec = 0; + me->waitEvent((gsmlib::timeval *)&timeoutVal); +#else + struct timeval timeoutVal; + timeoutVal.tv_sec = 5; + timeoutVal.tv_usec = 0; + me->waitEvent(&timeoutVal); +#endif + // if it returns, there was an event or a timeout + while (newMessages.size() > 0) + { + // get first new message and remove it from the vector + SMSMessageRef newSMSMessage = newMessages.begin()->_newSMSMessage; + CBMessageRef newCBMessage = newMessages.begin()->_newCBMessage; + GsmEvent::SMSMessageType messageType = + newMessages.begin()->_messageType; + int index = newMessages.begin()->_index; + string storeName = newMessages.begin()->_storeName; + newMessages.erase(newMessages.begin()); + + // process the new message + string result = _("Type of message: "); + switch (messageType) + { + case GsmEvent::NormalSMS: + result += _("SMS message\n"); + break; + case GsmEvent::CellBroadcastSMS: + result += _("cell broadcast message\n"); + break; + case GsmEvent::StatusReportSMS: + result += _("status report message\n"); + break; + } + if (! newSMSMessage.isnull()) + result += newSMSMessage->toString(); + else if (! newCBMessage.isnull()) + result += newCBMessage->toString(); + else + { + SMSStoreRef store = me->getSMSStore(storeName); + store->setCaching(false); + + if (messageType == GsmEvent::CellBroadcastSMS) + result += (*store.getptr())[index].cbMessage()->toString(); + else + result += (*store.getptr())[index].message()->toString(); + + store->erase(store->begin() + index); + } + + // call the action + doAction(action, result); + } + + // if no new SMS came in and program exit was scheduled, then exit + if (exitScheduled) + exit(0); + + // handle terminate signal + if (terminateSent) + { + exitScheduled = true; + // switch off SMS routing + try + { + me->setSMSRoutingToTA(false, false, false); + } + catch (GsmException &ge) + { + // some phones (e.g. Motorola Timeport 260) don't allow to switch + // off SMS routing which results in an error. Just ignore this. + } + // the AT sequences involved in switching of SMS routing + // may yield more SMS events, so go round the loop one more time + } + + // send spooled SMS + if (! terminateSent) + sendSMS(spoolDir, sentDir, failedDir, priorities, enableSyslog, me->getAt()); + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + if (ge.getErrorClass() == MeTaCapabilityError) + cerr << argv[0] << _("[ERROR]: ") + << _("(try setting sms_type, please refer to gsmsmsd manpage)") + << endl; + // switch off message routing, so that following invocations of gsmsmd + // are not swamped with message deliveries while they start up + if (me != NULL) + { + try + { + me->setSMSRoutingToTA(false, false, false); + } + catch (GsmException &ge) + { + // some phones (e.g. Motorola Timeport 260) don't allow to switch + // off SMS routing which results in an error. Just ignore this. + } + } + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc new file mode 100644 index 0000000000..2bb50a0c76 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/apps/gsmsmsstore.cc @@ -0,0 +1,434 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmsmsstore.cc +// * +// * Purpose: SMS store management program +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.8.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"store", required_argument, (int*)NULL, 't'}, + {"erase", no_argument, (int*)NULL, 'e'}, + {"add", no_argument, (int*)NULL, 'a'}, + {"list", no_argument, (int*)NULL, 'l'}, + {"destination", required_argument, (int*)NULL, 'd'}, + {"source", required_argument, (int*)NULL, 's'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"sca", required_argument, (int*)NULL, 'C'}, + {"copy", no_argument, (int*)NULL, 'c'}, + {"delete", no_argument, (int*)NULL, 'x'}, + {"backup", no_argument, (int*)NULL, 'k'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {"verbose", no_argument, (int*)NULL, 'V'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +bool verbose = false; // true if --verbose option given + +// type of operation to perform + +enum Operation {CopyOp = 'c', BackupOp = 'k', DeleteOp = 'x', + AddOp = 'a', ListOp = 'l', NoOp = 0}; + +// aux function, insert entry only if not already present in dest + +void backup(SortedSMSStoreRef destStore, SMSStoreEntry &entry) +{ + // the following only works because we know that the default sort order + // is by date + assert(destStore->sortOrder() == ByDate); + + Timestamp date = entry.message()->serviceCentreTimestamp(); + pair range = + destStore->equal_range(date); + + for (SortedSMSStore::iterator j = range.first; + j != range.second; ++j) + if (entry == *j) + // do nothing if the entry is already present in the destination + return; + + if (verbose) + cout << stringPrintf(_("inserting entry #%d from source into destination"), + entry.index()) << endl + << entry.message()->toString(); + destStore->insert(entry); // insert +} + +// aux function, throw exception if operation != NoOp + +void checkNoOp(Operation operation, int opt) +{ + if (operation != NoOp) + throw GsmException(stringPrintf(_("incompatible options '%c' and '%c'"), + (char)operation, (char)opt), + ParameterError); +} + +// *** main program + +int main(int argc, char *argv[]) +{ + try + { + // handle command line options + string destination; + string source; + string baudrate; + string storeName; + char operation = NoOp; + SortedSMSStoreRef sourceStore, destStore; + bool useIndices = false; // use indices in delete, copy, backup op + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + // service centre address (set on command line) + string serviceCentreAddress; + Ref sourceMeTa, destMeTa; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "I:t:s:d:b:cxlakhvVXC:", + longOpts, &dummy)) + != -1) + switch (opt) + { + case 'C': + serviceCentreAddress = optarg; + break; + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 'V': + verbose = true; + break; + case 't': + storeName = optarg; + break; + case 'd': + destination = optarg; + break; + case 's': + source = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 'c': + checkNoOp((Operation)operation, opt); + operation = CopyOp; + break; + case 'x': + checkNoOp((Operation)operation, opt); + operation = DeleteOp; + break; + case 'l': + checkNoOp((Operation)operation, opt); + operation = ListOp; + break; + case 'a': + checkNoOp((Operation)operation, opt); + operation = AddOp; + break; + case 'k': + checkNoOp((Operation)operation, opt); + operation = BackupOp; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-a][-b baudrate][-c][-C sca]" + "[-d device or file]\n" + " [-h][-I init string][-k][-l]" + "[-s device or file]" + "[-t SMS store name]\n [-v][-V][-x][-X]" + "{indices}|[phonenumber text]") << endl + << endl + << _(" -a, --add add new SMS submit message\n" + " (phonenumber and text) to destination") + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -c, --copy copy source entries to destination\n" + " (if indices are given, " + "copy only these entries)") << endl + << _(" -C, --sca SMS service centre address") << endl + << _(" -d, --destination sets the destination device to\n" + " connect to, or the file to write to") + << endl + << _(" -h, --help prints this message") << endl + << _(" -I, --init device AT init sequence") << endl + << _(" -k, --backup backup new entries to destination\n" + " (if indices are given, " + "copy only these entries)") << endl + << _(" -l, --list list source to stdout") << endl + << _(" -s, --source sets the source device to connect to,\n" + " or the file to read") << endl + << _(" -t, --store name of SMS store to use") << endl + << _(" -v, --version prints version and exits") << endl + << _(" -V, --verbose print detailed progress messages") + << endl + << _(" -x, --delete delete entries denoted by indices") + << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << endl; + exit(0); + break; + case '?': + throw GsmException(_("unknown option"), ParameterError); + break; + } + + // check if parameters are complete + if (operation == NoOp) + throw GsmException(_("no operation option given"), ParameterError); + if (operation == BackupOp || operation == CopyOp) + if (destination.length() == 0 || source.length() == 0) + throw GsmException(_("both source and destination required"), + ParameterError); + if (operation == ListOp) + { + if (destination.length() != 0) + throw GsmException(_("destination must not be given"), ParameterError); + if (source.length() == 0) + throw GsmException(_("source required"), ParameterError); + } + if (operation == AddOp || operation == DeleteOp) + { + if (source.length() != 0) + throw GsmException(_("source must not be given"), ParameterError); + if (destination.length() == 0) + throw GsmException(_("destination required"), ParameterError); + } + if (operation == CopyOp || operation == DeleteOp || operation == BackupOp) + { + // check if all indices are numbers + for (int i = optind; i < argc; ++i) + for (char *pp = argv[i]; *pp != 0; ++pp) + if (! isdigit(*pp)) + throw GsmException(stringPrintf(_("expected number, got '%s'"), + argv[i]), ParameterError); + useIndices = optind != argc; + } + else if (operation == AddOp) + { + if (optind + 2 < argc) + throw GsmException(_("more than two parameters given"), + ParameterError); + if (optind + 2 > argc) + throw GsmException(_("not enough parameters given"), + ParameterError); + } + else + if (optind != argc) + throw GsmException(_("unexpected parameters"), ParameterError); + + // start accessing source store or file if required by operation + if (operation == CopyOp || operation == BackupOp || operation == ListOp) + if (source == "-") + sourceStore = new SortedSMSStore(true); + else if (isFile(source)) + sourceStore = new SortedSMSStore(source); + else + { + if (storeName == "") + throw GsmException(_("store name must be given"), ParameterError); + + sourceMeTa = new MeTa(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (source, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), initString, + swHandshake)); + sourceStore = new SortedSMSStore(sourceMeTa->getSMSStore(storeName)); + } + + // make sure destination file exists if specified + // Use isFile() for its exception-throwing properties, and discard + // return value cos we don't care (yet) whether it's a device or a + // regular file. + if (destination != "") + isFile(destination); + + // start accessing destination store or file + if (operation == CopyOp || operation == BackupOp || operation == AddOp || + operation == DeleteOp) + if (destination == "-") + destStore = new SortedSMSStore(false); + else if (isFile(destination)) + destStore = new SortedSMSStore(destination); + else + { + if (storeName == "") + throw GsmException(_("store name must be given"), ParameterError); + + destMeTa = new MeTa(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (destination, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), initString, + swHandshake)); + destStore = new SortedSMSStore(destMeTa->getSMSStore(storeName)); + } + + // now do the actual work + switch (operation) + { + case BackupOp: + { + sourceStore->setSortOrder(ByIndex); // needed in loop + + if (useIndices) + for (int i = optind; i < argc; ++i) + { + SortedSMSStore::iterator j = sourceStore->find(atoi(argv[i])); + if (j == sourceStore->end()) + throw GsmException(stringPrintf(_("no index '%s' in source"), + argv[i]), ParameterError); + backup(destStore, *j); + } + else + for (SortedSMSStore::iterator i = sourceStore->begin(); + i != sourceStore->end(); ++i) + backup(destStore, *i); + break; + } + case CopyOp: + { + destStore->clear(); + if (! useIndices) // copy all entries + { + for (SortedSMSStore::iterator i = sourceStore->begin(); + i != sourceStore->end(); ++i) + { + if (verbose) + cout << stringPrintf(_("inserting entry #%d from source " + "into destination"), i->index()) << endl + << i->message()->toString(); + destStore->insert(*i); + } + } + else // copy indexed entries + { + sourceStore->setSortOrder(ByIndex); // needed in loop + + for (int i = optind; i < argc; ++i) + { + SortedSMSStore::iterator j = sourceStore->find(atoi(argv[i])); + if (j == sourceStore->end()) + throw GsmException(stringPrintf(_("no index '%s' in source"), + argv[i]), ParameterError); + if (verbose) + cout << stringPrintf(_("inserting entry #%d from source into " + "destination"), j->index()) << endl + << j->message()->toString(); + destStore->insert(*j); + } + } + break; + } + case ListOp: + { + for (SortedSMSStore::iterator i = sourceStore->begin(); + i != sourceStore->end(); ++i) + cout << stringPrintf(_("index #%d"), i->index()) << endl + << i->message()->toString(); + break; + } + case AddOp: + { + SMSMessageRef sms = new SMSSubmitMessage(argv[optind + 1], argv[optind]); + // set service centre address in new submit PDU if requested by user + if (serviceCentreAddress != "") + { + Address sca(serviceCentreAddress); + sms->setServiceCentreAddress(sca); + } + if (verbose) + cout << _("inserting new entry into destination") << endl + << sms->toString(); + destStore->insert(sms); + break; + } + case DeleteOp: + { + destStore->setSortOrder(ByIndex); + for (int i = optind; i < argc; ++i) + { + int index = atoi(argv[i]); + if (verbose) + { + SortedSMSStore::iterator e = destStore->find(index); + if (e != destStore->end()) + cout << stringPrintf(_("deleting entry #%d from destination"), + index) << endl + << e->message()->toString(); + } + if (destStore->erase(index) != 1) + throw GsmException(stringPrintf(_("no index '%s' in destination"), + argv[i]), ParameterError); + } + break; + } + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure new file mode 100755 index 0000000000..5918af81fb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure @@ -0,0 +1,30623 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# 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. +## --------------------- ## +## 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= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="gsmlib/gsm_error.h" +# 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_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 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT 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 DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ALLOCA GSM_VERSION MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE GLIBC2 GLIBC21 INTL_MACOSX_LIBS HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB COMPILE_INTL_TRUE COMPILE_INTL_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 this package 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 + + 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) + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + +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-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +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. + +_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 + +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 $as_me, 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 + + + + + + + + + + + + + + + + + + + + +ac_aux_dir= +for ac_dir in scripts $srcdir/scripts; 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 scripts $srcdir/scripts" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&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' + + +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 + + + +echo "$as_me:$LINENO: checking for textdomain in -lintl" >&5 +echo $ECHO_N "checking for textdomain in -lintl... $ECHO_C" >&6 +if test "${ac_cv_lib_intl_textdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $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 textdomain (); +int +main () +{ +textdomain (); + ; + 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_intl_textdomain=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_intl_textdomain=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_intl_textdomain" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_textdomain" >&6 +if test $ac_cv_lib_intl_textdomain = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBINTL 1 +_ACEOF + + LIBS="-lintl $LIBS" + +fi + + + ac_config_headers="$ac_config_headers gsm_config.h" + + +am__api_version="1.9" +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 + +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 + + + +# 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=gsmlib + VERSION=1.10 + + +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 -' + + + + +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 + + + + +# 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; + + +if test "$CXXFLAGS" = ""; then + CXXFLAGS="-O2" +fi + + + +if test x"`egrep _REENTRANT /usr/include/features.h`" != x; then + CXXFLAGS="-D_REENTRANT $CXXFLAGS" + CFLAGS="-D_REENTRANT $CFLAGS" +fi + +CXXFLAGS="-Wall $CXXFLAGS" + +# 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 +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 + +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 + + + +# 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='$CC -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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}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" + 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 + ;; + +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* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=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 + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | 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"} + +# 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 3740 "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 + ;; + +esac + +need_locks="$enable_libtool_lock" + + +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 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 + + + +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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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:5311:" \ + "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` + ;; + 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 + ;; + *) + # 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* | sysv5*) + symcode='[BDRT]' + ;; +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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + 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=no +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"} + +# 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' >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' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static 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_prog_compiler_static" + 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 > conftest.exp + $SED '/^$/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 + + + + +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:6407: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6411: \$? = $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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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' + ;; + + 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' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + 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* | sysv5*) + 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 + ;; + + 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:6669: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6673: \$? = $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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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 + +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:6731: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6735: \$? = $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 > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || 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 + ;; + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + 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 + link_all_deplibs=no + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + 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* | sysv5*) + 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 + ;; + + 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + 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 + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + 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=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + 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.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +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 + +# +# 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 + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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' + ;; + +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 + + # 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)); 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 /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +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 + 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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 + +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" + 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); */ + } + + 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_unknown|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 + LDFLAGS="$LDFLAGS $link_static_flag" + 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); */ + } + + 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_unknown|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 librarie types wil 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 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 + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# 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=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# 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=$lt_compiler_lib_search_path + +# 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=$lt_sys_lib_search_path_spec + +# 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 + + # 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_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"} + +# 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' >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' >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 + 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 + 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + 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*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + 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 + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + 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 + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + 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 + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + 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 + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + 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 +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= + ;; + 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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + ;; + 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*) + ;; + sco*) + case $cc_basename in + CC*) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + 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 + ;; + unixware*) + ;; + 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:11334: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11338: \$? = $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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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 + +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:11396: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11400: \$? = $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 > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || 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' + ;; + linux*) + link_all_deplibs_CXX=no + ;; + *) + 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 + +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 + +# +# 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 + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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' + ;; + +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 + + # 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)); 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 /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +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 + 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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 + +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 + +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_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 + 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_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 + 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_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 + 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_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 + 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_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 + 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_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 + 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_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 + 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" + 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); */ + } + + 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_unknown|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 + LDFLAGS="$LDFLAGS $link_static_flag" + 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); */ + } + + 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_unknown|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 + + +# 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 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 + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# 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=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# 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=$lt_compiler_lib_search_path_CXX + +# 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=$lt_sys_lib_search_path_spec + +# 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"} + +# 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' >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' >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 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +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' + ;; + + 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' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + 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* | sysv5*) + 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 + ;; + + 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:13764: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13768: \$? = $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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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 + +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:13826: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13830: \$? = $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 > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || 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 + ;; + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + 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 + link_all_deplibs_F77=no + else + ld_shlibs_F77=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + 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* | sysv5*) + 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 + ;; + + 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + 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 + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + 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=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + 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.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +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 + +# +# 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 + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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' + ;; + +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 + + # 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)); 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 /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +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 + 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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 + +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 + +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 + + + +# 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 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 + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# 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=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# 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=$lt_compiler_lib_search_path_F77 + +# 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=$lt_sys_lib_search_path_spec + +# 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"} + +# 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' >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' >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:15967: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15971: \$? = $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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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' + ;; + + 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' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + 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* | sysv5*) + 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 + ;; + + 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:16229: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16233: \$? = $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 >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || 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 + +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:16291: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16295: \$? = $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 > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || 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 + ;; + 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + 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 + link_all_deplibs_GCJ=no + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + 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* | sysv5*) + 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 + ;; + + 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + 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 + ;; + 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* | netbsdelf*-gnu | knetbsd*-gnu) + 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=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + 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.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + 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 + +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 + +# +# 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 + 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 + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + 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' + ;; + +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 + + # 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)); 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 /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +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 + 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" + ;; + +sco3.2v5*) + version_type=osf + 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 + ;; + +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.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + +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 + +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 + +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" + 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); */ + } + + 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_unknown|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 + LDFLAGS="$LDFLAGS $link_static_flag" + 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); */ + } + + 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_unknown|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 + + +# 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 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 + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# 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=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# 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=$lt_compiler_lib_search_path_GCJ + +# 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=$lt_sys_lib_search_path_spec + +# 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"} + +# 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' >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' >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 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 + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# 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=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# 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=$lt_compiler_lib_search_path_RC + +# 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=$lt_sys_lib_search_path_spec + +# 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 + + + + + + + + + + + + + + + + + + + + + +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 + +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=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 + +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 "$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. */ + +#include +main() +{ +#if defined(__GNUC__) && \ + ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) + return 1; +#endif + 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 + : +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 "need at least gcc 2.95 to compile correctly" +exit 1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+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 +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + 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_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+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. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + 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_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+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. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* 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 $ac_func (); +/* 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_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + 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 + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 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_c_stack_direction=1 +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_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 +echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_getopt_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $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 getopt_long (); +int +main () +{ +getopt_long (); + ; + 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_c_getopt_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_c_getopt_long=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_c_getopt_long" >&5 +echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 +if test $ac_cv_lib_c_getopt_long = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_GETOPT_LONG 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for alarm in -lc" >&5 +echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_alarm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $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 alarm (); +int +main () +{ +alarm (); + ; + 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_c_alarm=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_c_alarm=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_c_alarm" >&5 +echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 +if test $ac_cv_lib_c_alarm = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_ALARM 1 +_ACEOF + +fi + + + +for ac_header in netinet/in.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + + +for ac_header in string.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + + +for ac_header in libintl.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + +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 + + +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 "vsnprintf" >/dev/null 2>&1; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_VSNPRINTF 1 +_ACEOF + +fi +rm -f conftest* + + +echo "$as_me:$LINENO: checking for unsigned short int" >&5 +echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_short_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 ((unsigned short int *) 0) + return 0; +if (sizeof (unsigned short 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_unsigned_short_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_short_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 + +echo "$as_me:$LINENO: checking size of unsigned short int" >&5 +echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_short_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 (unsigned short 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 (unsigned short 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 (unsigned short 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 (unsigned short 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 (unsigned short 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_unsigned_short_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned short 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: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&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 (unsigned short int)); } +unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned short int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned short int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned short 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_unsigned_short_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 (unsigned short int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned short 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_unsigned_short_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned long int" >&5 +echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_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 ((unsigned long int *) 0) + return 0; +if (sizeof (unsigned long 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_unsigned_long_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 + +echo "$as_me:$LINENO: checking size of unsigned long int" >&5 +echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_long_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 (unsigned long 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 (unsigned long 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 (unsigned long 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 (unsigned long 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 (unsigned long 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_unsigned_long_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long 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: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&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 (unsigned long int)); } +unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned long int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned long int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned long 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_unsigned_long_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 (unsigned long int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long 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_unsigned_long_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned int" >&5 +echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_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 ((unsigned int *) 0) + return 0; +if (sizeof (unsigned 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_unsigned_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 + +echo "$as_me:$LINENO: checking size of unsigned int" >&5 +echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_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 (unsigned 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 (unsigned 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 (unsigned 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 (unsigned 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 (unsigned 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_unsigned_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned 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: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&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 (unsigned int)); } +unsigned long ulongval () { return (long) (sizeof (unsigned int)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned 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_unsigned_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 (unsigned int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned 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_unsigned_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int +_ACEOF + + + +GSM_VERSION="1:4:0" + + +LINGUAS="de" +ALL_LINGUAS=$LINGUAS + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + + +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; 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_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; 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_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; 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_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2+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 +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2=yes +else + ac_cv_gnu_library_2=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2" >&6 + + GLIBC2="$ac_cv_gnu_library_2" + + +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 + +echo "$as_me:$LINENO: checking for library containing strerror" >&5 +echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 +if test "${ac_cv_search_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_strerror=no +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 strerror (); +int +main () +{ +strerror (); + ; + 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_search_strerror="none required" +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 "$ac_cv_search_strerror" = no; then + for ac_lib in cposix; do + LIBS="-l$ac_lib $ac_func_search_save_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 strerror (); +int +main () +{ +strerror (); + ; + 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_search_strerror="-l$ac_lib" +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_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +echo "${ECHO_T}$ac_cv_search_strerror" >&6 +if test "$ac_cv_search_strerror" != no; then + test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" + +fi + + + echo "$as_me:$LINENO: checking for signed" >&5 +echo $ECHO_N "checking for signed... $ECHO_C" >&6 +if test "${bh_cv_c_signed+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 () +{ +signed char x; + ; + 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 + bh_cv_c_signed=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +bh_cv_c_signed=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5 +echo "${ECHO_T}$bh_cv_c_signed" >&6 + if test $bh_cv_c_signed = no; then + +cat >>confdefs.h <<\_ACEOF +#define signed +_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 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 long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_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. */ +long long ll = 1LL; int i = 63; +int +main () +{ +long long llmax = (long long) -1; + return ll << i | ll >> i | llmax / ll | llmax % ll; + ; + 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_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + if test $ac_cv_type_long_long = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_LONG 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6 +if test "${gt_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$GCC" = yes; then + gt_cv_c_long_double=yes + else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + /* The Stardent Vistra knows sizeof(long double), but does not support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + int array [2*(sizeof(long double) >= sizeof(double)) - 1]; + +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 + gt_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_c_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5 +echo "${ECHO_T}$gt_cv_c_long_double" >&6 + if test $gt_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for wchar_t" >&5 +echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 +if test "${gt_cv_c_wchar_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. */ +#include + wchar_t foo = (wchar_t)'\0'; +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 + gt_cv_c_wchar_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_c_wchar_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5 +echo "${ECHO_T}$gt_cv_c_wchar_t" >&6 + if test $gt_cv_c_wchar_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WCHAR_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for wint_t" >&5 +echo $ECHO_N "checking for wint_t... $ECHO_C" >&6 +if test "${gt_cv_c_wint_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. */ +#include + wint_t foo = (wchar_t)'\0'; +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 + gt_cv_c_wint_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_c_wint_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5 +echo "${ECHO_T}$gt_cv_c_wint_t" >&6 + if test $gt_cv_c_wint_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WINT_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${gl_cv_header_inttypes_h+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 +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + 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 + gl_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gl_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6 + if test $gl_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 +if test "${gl_cv_header_stdint_h+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 +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + 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 + gl_cv_header_stdint_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gl_cv_header_stdint_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5 +echo "${ECHO_T}$gl_cv_header_stdint_h" >&6 + if test $gl_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + + + echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 +if test "${gt_cv_c_intmax_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. */ + +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + +int +main () +{ +intmax_t x = -1; + ; + 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 + gt_cv_c_intmax_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_c_intmax_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5 +echo "${ECHO_T}$gt_cv_c_intmax_t" >&6 + if test $gt_cv_c_intmax_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INTMAX_T 1 +_ACEOF + + fi + + + + echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5 +echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6 +if test "${gt_cv_func_printf_posix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "notposix" >/dev/null 2>&1; then + gt_cv_func_printf_posix="guessing no" +else + gt_cv_func_printf_posix="guessing yes" +fi +rm -f conftest* + + +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 +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 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 + gt_cv_func_printf_posix=yes +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 ) +gt_cv_func_printf_posix=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5 +echo "${ECHO_T}$gt_cv_func_printf_posix" >&6 + case $gt_cv_func_printf_posix in + *yes) + +cat >>confdefs.h <<\_ACEOF +#define HAVE_POSIX_PRINTF 1 +_ACEOF + + ;; + esac + + + +for ac_header in stdlib.h unistd.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* 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 $ac_func (); +/* 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_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + 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 + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +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 +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (1); + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (1); + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + 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 + ac_cv_func_mmap_fixed_mapped=yes +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_func_mmap_fixed_mapped=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MMAP 1 +_ACEOF + +fi +rm -f conftest.mmap + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+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 +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +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 + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (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 + gt_cv_int_divbyzero_sigfpe=yes +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 ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_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. */ +unsigned long long ull = 1ULL; int i = 63; +int +main () +{ +unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull; + ; + 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_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 + if test $ac_cv_type_unsigned_long_long = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UNSIGNED_LONG_LONG 1 +_ACEOF + + fi + + + + + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +if test "${gt_cv_header_inttypes_h+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 +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 + gt_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_header_inttypes_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 +if test "${gt_cv_inttypes_pri_broken+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 +#ifdef PRId32 +char *p = PRId32; +#endif + +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 + gt_cv_inttypes_pri_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_inttypes_pri_broken=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + +for ac_header in stdint.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + echo "$as_me:$LINENO: checking for SIZE_MAX" >&5 +echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6 + result= + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Found it" >/dev/null 2>&1; then + result=yes +fi +rm -f conftest* + + if test -z "$result"; then + 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) < 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $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 +?*) res_hi=$ac_lo;; +'') result=? ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ +#include +long longval () { return ~(size_t)0 / 10; } +unsigned long ulongval () { return ~(size_t)0 / 10; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if ((~(size_t)0 / 10) < 0) + { + long i = longval (); + if (i != (~(size_t)0 / 10)) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != (~(size_t)0 / 10)) + 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 + res_hi=`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 ) +result=? +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val + 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) < 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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 +?*) res_lo=$ac_lo;; +'') result=? ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ +#include +long longval () { return ~(size_t)0 % 10; } +unsigned long ulongval () { return ~(size_t)0 % 10; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if ((~(size_t)0 % 10) < 0) + { + long i = longval (); + if (i != (~(size_t)0 % 10)) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != (~(size_t)0 % 10)) + 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 + res_lo=`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 ) +result=? +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val + 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned 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 +?*) fits_in_uint=$ac_lo;; +'') result=? ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 +echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ +#include +long longval () { return sizeof (size_t) <= sizeof (unsigned int); } +unsigned long ulongval () { return sizeof (size_t) <= sizeof (unsigned int); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if ((sizeof (size_t) <= sizeof (unsigned int)) < 0) + { + long i = longval (); + if (i != (sizeof (size_t) <= sizeof (unsigned int))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != (sizeof (size_t) <= sizeof (unsigned 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 + fits_in_uint=`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 ) +result=? +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val + if test "$fits_in_uint" = 1; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + extern size_t foo; + extern unsigned long foo; + +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 + fits_in_uint=0 +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 + fi + if test -z "$result"; then + if test "$fits_in_uint" = 1; then + result="$res_hi$res_lo"U + else + result="$res_hi$res_lo"UL + fi + else + result='~(size_t)0' + fi + fi + echo "$as_me:$LINENO: result: $result" >&5 +echo "${ECHO_T}$result" >&6 + if test "$result" != yes; then + +cat >>confdefs.h <<_ACEOF +#define SIZE_MAX $result +_ACEOF + + fi + + + + + +for ac_header in stdint.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + + + echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 +echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + 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 + gt_cv_func_CFPreferencesCopyAppValue=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 +_ACEOF + + fi + echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 +echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + 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 + gt_cv_func_CFLocaleCopyCurrent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFLOCALECOPYCURRENT 1 +_ACEOF + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# 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; +# Prepare PATH_SEPARATOR. +# 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 +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 GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $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. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path 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 "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&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 "${acl_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 ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + : +else + enable_rpath=yes +fi; + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_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 ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_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_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<\_ACEOF +#define ptrdiff_t long +_ACEOF + + +fi + + + + + + + + + + + +for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.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 the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_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 + + + + + + + + + + + + + + + + + + + + + + + + +for ac_func in asprintf fwprintf getcwd getegid geteuid getgid getuid \ +mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ +strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ +__fsetlocking +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* 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 $ac_func (); +/* 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_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + 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 + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5 +echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl__snprintf+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 +int +main () +{ + +#ifndef _snprintf + char *p = (char *) _snprintf; +#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_have_decl__snprintf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl__snprintf=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5 +echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6 + if test $ac_cv_have_decl__snprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNPRINTF $gt_value +_ACEOF + + + + echo "$as_me:$LINENO: checking whether _snwprintf is declared" >&5 +echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl__snwprintf+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 +int +main () +{ + +#ifndef _snwprintf + char *p = (char *) _snwprintf; +#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_have_decl__snwprintf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl__snwprintf=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5 +echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6 + if test $ac_cv_have_decl__snwprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNWPRINTF $gt_value +_ACEOF + + + + + echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 +echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_feof_unlocked+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 +int +main () +{ + +#ifndef feof_unlocked + char *p = (char *) feof_unlocked; +#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_have_decl_feof_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_feof_unlocked=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6 + if test $ac_cv_have_decl_feof_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED $gt_value +_ACEOF + + + + echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 +echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_fgets_unlocked+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 +int +main () +{ + +#ifndef fgets_unlocked + char *p = (char *) fgets_unlocked; +#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_have_decl_fgets_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_fgets_unlocked=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6 + if test $ac_cv_have_decl_fgets_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED $gt_value +_ACEOF + + + + echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 +echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_getc_unlocked+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 +int +main () +{ + +#ifndef getc_unlocked + char *p = (char *) getc_unlocked; +#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_have_decl_getc_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_getc_unlocked=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 + if test $ac_cv_have_decl_getc_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $gt_value +_ACEOF + + + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + 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 () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + 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 + am_cv_func_iconv=yes +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 "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + 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 () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + 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 + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +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 + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+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 +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +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 + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+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 +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + 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 + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${gt_cv_val_LC_MESSAGES+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 +int +main () +{ +return LC_MESSAGES + ; + 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 + gt_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_val_LC_MESSAGES=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$gt_cv_val_LC_MESSAGES" >&6 + if test $gt_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + + fi + + if test -n "$INTL_MACOSX_LIBS"; then + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + fi + + for ac_prog in bison +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_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # 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_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 +echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + 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 + gt_cv_func_CFPreferencesCopyAppValue=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 +_ACEOF + + fi + echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 +echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + 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 + gt_cv_func_CFLocaleCopyCurrent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFLOCALECOPYCURRENT 1 +_ACEOF + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libc+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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + 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 + gt_cv_func_gnugettext1_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libc=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval="$with_libintl_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + 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 + gt_cv_func_gnugettext1_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libintl=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + 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 + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext1_libintl=yes + +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 + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 + fi + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" + LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + else + USE_NLS=no + fi + fi + + echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + if test "$USE_NLS" = "yes"; then + echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$gt_source" >&6 + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$LIBINTL" >&6 + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DCGETTEXT 1 +_ACEOF + + fi + + POSUB=po + fi + + + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + +_localedir=`eval "echo $datadir/locale"` +if test "$_localedir" = "NONE/share/locale"; then + cat >>confdefs.h <<_ACEOF +#define LOCALEDIR "/usr/local/share/locale" +_ACEOF + +else + _localedir=`echo \"$_localedir\"` + cat >>confdefs.h <<_ACEOF +#define LOCALEDIR $_localedir +_ACEOF + +fi + + + +if test x$USE_INCLUDED_LIBINTL = xyes; then + COMPILE_INTL_TRUE= + COMPILE_INTL_FALSE='#' +else + COMPILE_INTL_TRUE='#' + COMPILE_INTL_FALSE= +fi + + + ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" + ac_config_commands="$ac_config_commands default" +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 "${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 "${COMPILE_INTL_TRUE}" && test -z "${COMPILE_INTL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"COMPILE_INTL\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"COMPILE_INTL\" 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 $as_me, 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="\\ +config.status +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" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_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" ;; + "gsmlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsmlib/Makefile" ;; + "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "apps/Makefile" ) CONFIG_FILES="$CONFIG_FILES apps/Makefile" ;; + "win32/Makefile" ) CONFIG_FILES="$CONFIG_FILES win32/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; + "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "ext/Makefile" ) CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "gsm_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS gsm_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,@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,@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,@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,@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,@EGREP@,$EGREP,;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,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;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,@ALLOCA@,$ALLOCA,;t t +s,@GSM_VERSION@,$GSM_VERSION,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@GLIBC2@,$GLIBC2,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t +s,@HAVE_POSIX_PRINTF@,$HAVE_POSIX_PRINTF,;t t +s,@HAVE_ASPRINTF@,$HAVE_ASPRINTF,;t t +s,@HAVE_SNPRINTF@,$HAVE_SNPRINTF,;t t +s,@HAVE_WPRINTF@,$HAVE_WPRINTF,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@COMPILE_INTL_TRUE@,$COMPILE_INTL_TRUE,;t t +s,@COMPILE_INTL_FALSE@,$COMPILE_INTL_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 + + # 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; } + + 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 +_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-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + default ) echo timestamp > stamp-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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in new file mode 100644 index 0000000000..d586c4e35d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/configure.in @@ -0,0 +1,131 @@ +dnl ************************************************************************* +dnl * GSM TA/ME library +dnl * +dnl * File: configure.in +dnl * +dnl * Purpose: autoconf configure script template +dnl * +dnl * Author: Peter Hofmann (software@pxh.de) +dnl * +dnl * Created: 11.11.1999 +dnl ************************************************************************* + +dnl Process this file with autoconf to produce a configure script. +AC_INIT(gsmlib/gsm_error.h) + +dnl Other +AC_CONFIG_AUX_DIR(scripts) +AC_PROG_INSTALL + +dnl check for libintl +AC_CHECK_LIB(intl, textdomain) + +dnl use config header +AM_CONFIG_HEADER(gsm_config.h) + +dnl use automake +AM_INIT_AUTOMAKE(gsmlib, 1.10) + +dnl change to no if you want no shared libraries for debugging purposes +AM_ENABLE_SHARED(yes) + +dnl use -O2 optimization by default +if test "$CXXFLAGS" = ""; then + CXXFLAGS="-O2" +fi + +dnl comment out this line to get extensive debugging output and asserts +dnl CXXFLAGS="-DNDEBUG $CXXFLAGS" + +dnl uncomment to get translations without installing gsmlib +dnl CXXFLAGS="-DLOCAL_TRANSLATIONS $CXXFLAGS" + +dnl check _REENTRANT in header files +if test x"`egrep _REENTRANT /usr/include/features.h`" != x; then + CXXFLAGS="-D_REENTRANT $CXXFLAGS" + CFLAGS="-D_REENTRANT $CFLAGS" +fi + +dnl output all warnings +CXXFLAGS="-Wall $CXXFLAGS" + +dnl use libtool +AM_PROG_LIBTOOL + +dnl Checks for programs. +AC_PROG_CPP +AC_PROG_CXX + +dnl check for gcc 2.95.x +AC_TRY_RUN([ +#include +main() +{ +#if defined(__GNUC__) && \ + ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) + return 1; +#endif + return 0; +} +],, +[echo "need at least gcc 2.95 to compile correctly" +exit 1]) + +dnl check for alloca +AC_FUNC_ALLOCA + +dnl check for getopt_long in the C library +AC_CHECK_LIB(c, getopt_long, AC_DEFINE(HAVE_GETOPT_LONG)) + +dnl check for alarm in the C library +AC_CHECK_LIB(c, alarm, AC_DEFINE(HAVE_ALARM)) + +dnl check for netinet/in.h header +AC_CHECK_HEADERS(netinet/in.h) + +dnl check for string.h header +AC_CHECK_HEADERS(string.h) + +dnl check for libintl.h header +AC_CHECK_HEADERS(libintl.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST + +dnl check for vsnprintf() +dnl AC_FUNC_VPRINTF +AC_EGREP_HEADER(vsnprintf, stdio.h, AC_DEFINE(HAVE_VSNPRINTF)) + +dnl checks for builtin data type sizes +AC_CHECK_SIZEOF(unsigned short int, 2) +AC_CHECK_SIZEOF(unsigned long int, 4) +AC_CHECK_SIZEOF(unsigned int, 4) + +dnl Project-specific settings +GSM_VERSION="1:4:0" +AC_SUBST(GSM_VERSION) + +dnl national language support (NLS) +LINGUAS="de" +ALL_LINGUAS=$LINGUAS +AM_GNU_GETTEXT + +dnl set locale dir (FIXME there must be a better way) +_localedir=`eval "echo $datadir/locale"` +if test "$_localedir" = "NONE/share/locale"; then + AC_DEFINE_UNQUOTED(LOCALEDIR, "/usr/local/share/locale") +else + _localedir=`echo \"$_localedir\"` + AC_DEFINE_UNQUOTED(LOCALEDIR, $_localedir) +fi + +dnl whether to compile the intl directory +AM_CONDITIONAL(COMPILE_INTL, test x$USE_INCLUDED_LIBINTL = xyes) + +AC_OUTPUT(Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile + doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in + ext/Makefile, + echo timestamp > stamp-h) + +dnl repair Makefile in po subdir +dnl sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d new file mode 100644 index 0000000000..7974513ccc --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.cron.d @@ -0,0 +1,3 @@ +# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils + +*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default new file mode 100644 index 0000000000..8ab73a9530 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.default @@ -0,0 +1,13 @@ +PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 +BAUDRATE=9600 +PIN="" # or 1234 + +SPOOLDIR=/var/spool/sms +PRIORITIES=3 + +SMSADMIN=root +SUBJECT="SMS delivery report:" + +SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor + +do_accounting () { true; } # it's your turn diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init new file mode 100644 index 0000000000..7bb3ac0cd1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsm-utils.init @@ -0,0 +1,81 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: gsm-utils +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO +# +# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon +# +# written by Matthias Goebl + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/bin/gsmsmsd +NAME=gsmsmsd +DESC="GSM SMS send daemon" + +test -x $DAEMON || exit 0 + +PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 +BAUDRATE=9600 +PIN="" # or 1234 +SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor +SPOOLDIR=/var/spool/sms +PRIORITIES=3 +STARTOPTS="" +SMSUSER="gsmsms:gsmsms" +test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters + +OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" +OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" +test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" +test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" +test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS + +case "$1" in + start) + echo -n "Starting $DESC: " + if [ -n "$PIN" ];then + echo -n "entering PIN.. " + ( + # This is ugly.. But if the PIN is already entered, the ME returns + # "ERROR" and makes gsmctl retrying.. + /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & + PID=$! + sleep 3 + kill $PID 2>/dev/null + ) >/dev/null 2>&1 + fi + echo -n "$NAME" + start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS + echo "." + ;; + stop) + echo -n "Stopping $DESC: $NAME " + start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --exec $DAEMON + sleep 5 + echo "." + ;; + restart|force-reload) + echo -n "Restarting $DESC: $NAME" + start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS + sleep 5 + start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --make-pidfile --background --exec $DAEMON -- $OPTIONS + echo "." + ;; + *) + N=/etc/init.d/gsm-utils + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue new file mode 100644 index 0000000000..88b65c15bf --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsrequeue @@ -0,0 +1,48 @@ +#! /bin/bash +# +# /usr/bin/gsmsmsrequeue: Re-queues failed SMS +# +# written by Matthias Goebl + +SPOOLDIR=/var/spool/sms +PRIORITIES=3 +SMSADMIN=root +SUBJECT="SMS delivery report:" + +send_notify() +{ + tmpfile="$SPOOLDIR/tmp/"`basename "$1"` + status="$2" + if mv "$1" "$tmpfile" 2>/dev/null; then + # extract the first tab-separated field after the phone number as + # email-address to send the notification to + mailto=` cat "$tmpfile" | sed -ne '1s/^[^ ]* \([^ ]*\).*/\1/p' ` + test -z "$mailto" && mailto="$SMSADMIN" + cat "$tmpfile" | mail -s "$SUBJECT $status" "$mailto" + rm "$tmpfile" + fi +} +do_accounting() +{ + true; +} + +test -r /etc/default/gsm-utils && . /etc/default/gsm-utils + +for p in `seq 1 $PRIORITIES`; do + ls "$SPOOLDIR/failed$p" | while read file; do + if expr "$file" : ".*rrrrrrrrrrrr" >/dev/null; then + send_notify "$SPOOLDIR/failed$p/$file" "failed" + else + # re-queue SMS + mv "$SPOOLDIR/failed$p/$file" "$SPOOLDIR/queue$p/${file}r" 2>/dev/null + fi + done +done + +for p in `seq 1 $PRIORITIES`; do + ls "$SPOOLDIR/sent$p" | while read file; do + do_accounting "$SPOOLDIR/sent$p/$file" "sent" + send_notify "$SPOOLDIR/sent$p/$file" "sent" + done +done diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool new file mode 100644 index 0000000000..75bc1f9b79 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/contrib/gsmsmsspool @@ -0,0 +1,34 @@ +#! /bin/bash +# +# /usr/bin/gsmsmsspool: Queues SMS for sending +# +# written by Matthias Goebl + +SPOOLDIR=/var/spool/sms +PRIORITIES=3 +test -r /etc/default/gsm-utils && . /etc/default/gsm-utils + +if [ -z "$1" ]; then + echo "Usage: gsmsmsspool NUMBER [MESSAGE]" + exit 1 +fi + +priority=$PRIORITIES # default priority +test -n "$GSMSMS_PRIORITY" && priority="$GSMSMS_PRIORITY" +mailto=`id -un` +test -n "$GSMSMS_NOTIFY" && mailto="$GSMSMS_NOTIFY" + +tmpfile="$SPOOLDIR/tmp/`date +%s`.$$" +umask 022 +echo "$1 $mailto" > "$tmpfile" +if [ -n "$2" ]; then + echo "$2" | head -c 160 >> "$tmpfile" +else + head -c 160 >> "$tmpfile" +fi + +if [ "`id -un`" = "root" ]; then + chown gsmsms:gsmsms "$tmpfile" +fi + +mv "$tmpfile" "$SPOOLDIR/queue$priority/" diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog new file mode 100644 index 0000000000..86bca0b277 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/changelog @@ -0,0 +1,284 @@ +gsmlib (1.10-13) unstable; urgency=low + + * Ack NMU, Thanks Michael, Christoph & Petter + * debian/control add Homepage: + * Update debian/copyright; gsm-lib/COPYING actually specifies LGPL: + - fixes lintian:copyright-without-copyright-notice + * Update manpages fixes lintian:hyphen-used-as-minus-sign + * Update debian/gsm-utils.init + - fixes lintian:init.d-script-missing-lsb-short-description + * Bug fixes from ubuntu + - Don't install contrib/gsm-utils.init dh_installinit debian/gsm-utils.init + - Create /var/run/gsm-utils + * Add case 'L' to apps/gsmsmsd.cc - thks to Andrew Suffield + - syslog support does not work (Closes: #346240) + * gsm-utils.init really call restart with --stop first + - init script calls --start twice (Closes: #377448) + * Explictly set /bin/bash: gsmsmsspool & gsmsmsrequeue + - bashism in /bin/sh script (Closes: #464981) + - gsmsmsrequeue contains bashism or function error (Closes: #459396) + * Patch apps/gsmsmsstore.cc - thks Isaac Wilcox + - gsmsmsstore device existence check causes problems with RFCOMM + devices (Closes: #340179) + * Only start gsmsmsd if set in /etc/default/gsm-utils. crontab -> examples + - gsmsmsd should be optional / start only if told so in + /etc/default/gsm-utils (Closes: #474093) + * Apply patch from Stefan Katerkamp & Jacob Nevins + - Gsmsendsms fails with SonyEricsson W880 (fix included) (Closes: + #413341) + + -- Mark Purcell Mon, 06 Oct 2008 15:01:49 +1100 + +gsmlib (1.10-12.5) unstable; urgency=low + + * Non-maintainer upload. + * Yet another bashism that was later on reported on the old bug report, thus + again closes: #464981 + * Also found a shell related problem in debian/rules and fixed it. + * Bumped standard to 3.7.3. + + -- Michael Meskes Mon, 14 Apr 2008 10:48:19 +0200 + +gsmlib (1.10-12.4) unstable; urgency=low + + * Non-maintainer upload. + * Argh, somehow I mananged to upload without fixing the bug completely, + sorry. Added those missing braces, closes: #464981. + + -- Michael Meskes Wed, 09 Apr 2008 14:46:08 +0200 + +gsmlib (1.10-12.3) unstable; urgency=high + + * Non-maintainer upload. + * Removed bashism in contrib/gsmsmsrequeue (Closes: #464981). + + -- Michael Meskes Sun, 06 Apr 2008 15:37:35 +0200 + +gsmlib (1.10-12.2) unstable; urgency=low + + * Non-maintainer upload. + * Fix FTBFS with GCC 4.3: 'strerror' was not declared in this scope, thanks + to Cyril Brulebois for the patch (Closes: #455402). + + -- Christoph Berg Fri, 04 Apr 2008 18:01:05 +0200 + +gsmlib (1.10-12.1) unstable; urgency=low + + * Non-maintainer upload to solve release goal. + * Add LSB dependency header to init.d scripts (Closes: #464061). + + -- Petter Reinholdtsen Fri, 28 Mar 2008 11:39:20 +0100 + +gsmlib (1.10-12) unstable; urgency=low + + * addgroup --system gsmsms works better. Thanks Jon + * only delete gsmsms on purge + - gsm-utils: deletes and recreates the gsmsms user on each upgrade + (Closes: #346238) + - gsm-utils fails installation / addgroup: The user gsmsms; does + not exist (Closes: #445404) + * lintian cleanup: debian-rules-ignores-make-clean-error substvar- + source-version-is-deprecated + * Scripts are installed +x + - gsm-utils: uselessly installs non-executable scripts into /usr/bin + (Closes: #346230) + * Remove bogus symlink + - gsm-utils: wrong symlink for manpage gsmsiectl.1 (Closes: #322382) + - gsm-utils: gsmsiectl.1 dangling symlink (Closes: #399582) + * debian/gsm-utils.init reload/restart was not calling --stop. Thanks + Barry + - init script calls --start twice (Closes: #377448) + + -- Mark Purcell Mon, 08 Oct 2007 21:44:00 +0100 + +gsmlib (1.10-11) unstable; urgency=low + + * Create system group gsmsms - Thanks Emmanuel + - gsm-utils: creates group in non-system gid range (Closes: #353967) + - gsm-utils: postinst should create system grp gsmsms (Closes: + #390266) + * Upgrade to compat 4 + * Apply gcc-4.3 patch from Martin + - FTBFS with GCC 4.3: missing #includes (Closes: #417222) + + -- Mark Purcell Sat, 29 Sep 2007 18:22:56 +0100 + +gsmlib (1.10-10) unstable; urgency=low + + * FTBFS with G++ 4.1: extra qualifications (Closes: #356109) + + -- Mark Purcell Sat, 20 May 2006 21:54:42 +0100 + +gsmlib (1.10-9) unstable; urgency=low + + * library package needs to be renamed (libstdc++ allocator change) + (Closes: #339179) + + -- Mark Purcell Mon, 21 Nov 2005 21:19:51 +0000 + +gsmlib (1.10-8) unstable; urgency=low + + * removal of automake1.6 (Closes: #335123) + * fails with dash [bashisms in scripts] (Closes: #309834) + * Update libtool Fixes: gsmlib(GNU/k*BSD): FTBFS: out of date libtool scripts (Closes: + #319688) + * [INTL:de] German PO file corrections (Closes: #314060) + * Fix: old-fsf-address-in-copyright-file + + -- Mark Purcell Thu, 3 Nov 2005 22:40:19 +0000 + +gsmlib (1.10-7) unstable; urgency=low + + * C++ 4.0 transition + * Closes: #315864: Missing manpages + * gsm-utils: maintainer-script-needs-depends-on-adduser postinst + + -- Mark Purcell Sat, 23 Jul 2005 00:46:31 +1000 + +gsmlib (1.10-6) unstable; urgency=low + + * Rebuild for invalid dependancies + * Closes: #258056: libgsmme 99% cpu usage + - Patch from Emard + * Closes: #274382: FTBFS with gcc-3.4: template-id `operator< + <>' for `bool gsmlib::operator<(const + gsmlib::MapKey<gsmlib::SortedPhonebookBase>&, const + gsmlib::MapKey<gsmlib::SortedPhonebookBase>&)' does not + match any template declaration + - Patch from Andreas Jochens + * Closes: #294251: FTBFS (amd64/gcc-4.0): explicit qualification in + declaration of `bool gsmlib::operator<(const + gsmlib::MapKey<SortedStore>&, const + gsmlib::MapKey<SortedStore>&)' + - Patch from Andreas Jochens + * Closes: #200189: Patch and contribution + + Added multi-queue-priority-system and syslog patch (Matthias Goebl) + + Included init, spool and requeue scripts for gsmsmsd (Matthias Goebl) + + gsmsmsd runs with own user and group (gsmsms:gsmsms) (Matthias Goebl) + + -- Mark Purcell Tue, 17 May 2005 11:34:45 +0100 + +gsmlib (1.10-5) unstable; urgency=low + + * Change Section: libdevel + * gsm_unix_serial.cc patch from Daniel Schepler to fix g++-3.3 + compliation. Thanks. (Closes: Bug#195151) + + -- Mark Purcell Sat, 19 Jul 2003 15:57:28 +1000 + +gsmlib (1.10-4) unstable; urgency=low + + * Include file descriptor leak patch from Edd Dumbill (Closes: + Bug#168475) + * lintian cleanup: description-synopsis-might-not-be-phrased-properly + * lintian cleanup: configure-generated-file-in-source + + -- Mark Purcell Sun, 9 Feb 2003 14:04:54 +1100 + +gsmlib (1.10-3) unstable; urgency=low + + * New Maintainer (Closes: Bug#180061). Thanks Mikael for your work. + + -- Mark Purcell Sat, 8 Feb 2003 16:55:26 +1100 + +gsmlib (1.10-2) unstable; urgency=low + + * Rebuild to use the new c++ ABI (GCC 3.2) + + -- Mikael Hedin Thu, 23 Jan 2003 20:57:50 +0100 + +gsmlib (1.10-1) unstable; urgency=low + + * New upstrem release. + + -- Mikael Hedin Wed, 6 Nov 2002 17:44:17 +0100 + +gsmlib (1.9-2) unstable; urgency=low + + * Made new rules for the config.guess/sub update thing (closes: #146865, + #146867). + + -- Mikael Hedin Tue, 14 May 2002 09:28:03 +0200 + +gsmlib (1.9-1) unstable; urgency=low + + * New upstream version. + * Use chrpath to get rid of rpaths. + * Add mini-manpage for gsmsiexfer. + * Remove b-d on auto-stuff, we don't use them. + + -- Mikael Hedin Mon, 13 May 2002 22:10:28 +0200 + +gsmlib (1.8-2) unstable; urgency=low + + * Removed b-d on gcc 3.0, as they are no longer nessecary. + + -- Mikael Hedin Thu, 24 Jan 2002 12:59:07 +0100 + +gsmlib (1.8-1) unstable; urgency=low + + * New upstream version. + * Revert the arch hack, now it should compile with either g++. + * Include the new lib in libgsmme1. Run dh_makeshlibs -V because of this. + * Added info for gsmsiectl in gsmctl(1). + + -- Mikael Hedin Wed, 9 Jan 2002 22:38:45 +0100 + +gsmlib (1.7-2) unstable; urgency=low + + * gsm-utils: Added shlibs:Depends (closes: #126127). + * Spelling correction (closes: #124705, #124972) + * Rm libgsmme1.postins, and let dh_makeshlibs take care of ldconfig. + * Made explicit arch list without sparc and arm, they cannot use g++-3.0 + right now. + + -- Mikael Hedin Sat, 22 Dec 2001 20:27:54 +0100 + +gsmlib (1.7-1) unstable; urgency=low + + * New upstream + * Use gcc-3.0 and g++-3.0, 2.95 doesn't compile. + + -- Mikael Hedin Thu, 1 Nov 2001 10:24:33 +0100 + +gsmlib (1.6-5) unstable; urgency=low + + * Updated manpage (closes: #110973) + * Corrected problem with OP status (closes: #110970) + + -- Mikael Hedin Sat, 8 Sep 2001 18:12:17 +0200 + +gsmlib (1.6-4) unstable; urgency=low + + * Support DEB_BUILD_OPTIONS + * Changed libgsmme-dev to section devel. + * Reran libtoolize. + * Lots of small patches to compile with g++-3.0. (Closes: #104411) + * Removed dh_testversion. + + -- Mikael Hedin Thu, 12 Jul 2001 16:06:23 +0200 + +gsmlib (1.6-3) unstable; urgency=low + + * Various minor corrections. + + -- Mikael Hedin Thu, 8 Mar 2001 16:24:07 +0100 + +gsmlib (1.6-2) unstable; urgency=low + + * Dont install INSTALL. Correct indentation for libgsmme1 description. + + -- Mikael Hedin Tue, 6 Mar 2001 14:55:05 +0100 + +gsmlib (1.6-1) unstable; urgency=low + + * New upstream version. + + -- Mikael Hedin Mon, 29 Jan 2001 17:57:21 +0100 + +gsmlib (1.5-1) unstable; urgency=low + + * Initial Release. + + -- Mikael Hedin Thu, 14 Dec 2000 01:06:40 +0100 + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat new file mode 100644 index 0000000000..b8626c4cff --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/compat @@ -0,0 +1 @@ +4 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control new file mode 100644 index 0000000000..b230b8b838 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/control @@ -0,0 +1,45 @@ +Source: gsmlib +Section: comm +Priority: extra +Maintainer: Mark Purcell +Build-Depends: debhelper (>= 3.0.0), chrpath +Standards-Version: 3.7.3 +Homepage: http://www.pxh.de/fs/gsmlib/ + +Package: libgsmme-dev +Section: libdevel +Architecture: any +Depends: libgsmme1c2a (= ${binary:Version}), libc6-dev +Description: Header files and static libraries for gsmlib + Headers and static libraries for use when compiling programs with + gsmlib. + . + gsmlib is a library for access to a GSM mobile phone using the + standards ETSI GSM 07.07, ETSI GSM 07.05, and others. + +Package: libgsmme1c2a +Conflicts: libgsmme1, libgsmme1c102, libgsmme1c2 +Replaces: libgsmme1c102, libgsmme1c2 +Section: libs +Architecture: any +Depends: ${shlibs:Depends} +Description: GSM mobile phone access library + Library to access GSM mobile phones through GSM modems or IrDA devices. + Features include: + . + * modification of phone books stored in the mobile phone or on the + SIM card + * reading and writing of SMS messages stored in the mobile phone + * sending and reception of SMS messages + . + gsmlib uses standard ETSI GSM 07.07, ETSI GSM 07.05, and others. + +Package: gsm-utils +Section: comm +Architecture: any +Depends: ${shlibs:Depends}, adduser +Description: GSM mobile phone access applications + Some simple command line programs to access a GSM mobile phone via + GSM modem or IrDA. Functions include: modification of phone books and + reading, writing, sending and receiving SMS messages. Uses the GSM + standards ETSI GSM 07.07, ETSI GSM 07.05, and others. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright new file mode 100644 index 0000000000..dcb44c32cd --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/copyright @@ -0,0 +1,34 @@ +This package was debianized by Mikael Hedin on +Thu, 14 Dec 2000 01:06:40 +0100. + +It was downloaded from http://www.pxh.de/fs/gsmlib/index.html + +Upstream Author: Peter Hofmann + +ext/gsmsiexfer.cc:// * Author: Christian W. Zuckschwerdt + +Copyright: + + Copyright (C) 1999-2002 Peter Hofmann + +License: + + This package is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This package 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. + +The Debian packaging is (C) 2000, Mikael Hedin and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs new file mode 100644 index 0000000000..a39a14c5cf --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/dirs @@ -0,0 +1 @@ +/var/run/gsm-utils diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d new file mode 100644 index 0000000000..7974513ccc --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.cron.d @@ -0,0 +1,3 @@ +# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils + +*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default new file mode 100644 index 0000000000..11901da54a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.default @@ -0,0 +1,18 @@ +PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 +BAUDRATE=9600 +PIN="" # or 1234 + +# RUNGSMSMS: If set to anything other that 'yes', the asterisk init.d script +# will not run. The default is 'yes'. +# You should probaly also install the crontab from /usr/share/doc/gsm-utils/examples +RUNGSMSMS=no + +SPOOLDIR=/var/spool/sms +PRIORITIES=3 + +SMSADMIN=root +SUBJECT="SMS delivery report:" + +SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor + +do_accounting () { true; } # it's your turn diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs new file mode 100644 index 0000000000..7bc765edd6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.dirs @@ -0,0 +1,11 @@ +var/spool/sms/queue1 +var/spool/sms/queue2 +var/spool/sms/queue3 +var/spool/sms/sent1 +var/spool/sms/sent2 +var/spool/sms/sent3 +var/spool/sms/failed1 +var/spool/sms/failed2 +var/spool/sms/failed3 +var/spool/sms/tmp +var/run/gsm-utils diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs new file mode 100644 index 0000000000..d4f3801ab1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.docs @@ -0,0 +1,4 @@ +NEWS +README +TODO +doc/FAQ diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples new file mode 100644 index 0000000000..bd892f97be --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.examples @@ -0,0 +1,2 @@ +contrib/gsm-utils.cron.d +contrib/gsm-utils.init diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init new file mode 100644 index 0000000000..bc51002f65 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.init @@ -0,0 +1,87 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: gsm-utils +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO +# +# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon +# +# written by Matthias Goebl + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/bin/gsmsmsd +NAME=gsmsmsd +DESC="GSM SMS send daemon" + +test -x $DAEMON || exit 0 + +if [ "$RUNGSMSMS" != "yes" ];then + echo "GSM SMS deamon not yet configured. Edit /etc/default/gsm-utils first." + exit 0 +fi + + +PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 +BAUDRATE=9600 +PIN="" # or 1234 +SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor +SPOOLDIR=/var/spool/sms +PRIORITIES=3 +STARTOPTS="" +SMSUSER="gsmsms:gsmsms" +test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters + +OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" +OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" +test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" +test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" +test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS + +case "$1" in + start) + echo -n "Starting $DESC: " + if [ -n "$PIN" ];then + echo -n "entering PIN.. " + ( + # This is ugly.. But if the PIN is already entered, the ME returns + # "ERROR" and makes gsmctl retrying.. + /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & + PID=$! + sleep 3 + kill $PID 2>/dev/null + ) >/dev/null 2>&1 + fi + echo -n "$NAME" + start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS + echo "." + ;; + stop) + echo -n "Stopping $DESC: $NAME " + start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --exec $DAEMON + sleep 5 + echo "." + ;; + restart|force-reload) + echo -n "Restarting $DESC: $NAME" + start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --make-pidfile --background --exec $DAEMON -- $OPTIONS + sleep 5 + start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ + --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS + echo "." + ;; + *) + N=/etc/init.d/gsm-utils + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst new file mode 100644 index 0000000000..2954c4a400 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postinst @@ -0,0 +1,28 @@ +#!/bin/sh -e + +# create gsmsms group if necessary. +if ! grep -q ^gsmsms: /etc/group; then +# echo Adding system group: gsmsms. + addgroup --system gsmsms +fi + +# create gsmsms user if necessary. +if ! grep -q ^gsmsms: /etc/passwd; then +# echo Adding system user: gsmsms. + adduser --system --ingroup gsmsms \ + --no-create-home --home /var/spool/sms gsmsms +fi + +# allow gsmsms to use serial lines +if ! groups gsmsms | grep -q dialout ; then + adduser gsmsms dialout +fi + +# echo Updating spool directory structure: /var/spool/sms +chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils +chmod 700 /var/spool/sms/* +chmod 750 /var/spool/sms +chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp + +# Add the rest automatically.. +#DEBHELPER# diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm new file mode 100644 index 0000000000..cba60a894c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsm-utils.postrm @@ -0,0 +1,43 @@ +#!/bin/sh +# postrm script for #PACKAGE# +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + purge) + deluser gsmsms + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 new file mode 100644 index 0000000000..4dc996578a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/gsmsiexfer.1 @@ -0,0 +1,29 @@ +.\" -*- eval: (nroff-mode) -*- +.de TQ +.br +.ns +.TP \\$1 +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH GSMSIEXFER 1 "" "gsmsiexfer" +.SH NAME +gsmsiexfer \- Siemens ME file transfer program for Siemens phones S25, S35, S45, ME45, SL45 +.SH SYNOPSIS +.B gsmsiexfer \-\-help +.PP +.SH DESCRIPTION +\fIgsmsiexer\fP comes with no man page. Try gsmsiexfer \-\-help, or +read the source. +.PP +.SH "SEE ALSO" +.BR gsminfo(7), +.BR gsmctl(1), +.BR gsmsendsms(1), +.BR gsmsmsd(8), +.BR gsmsmsstore(1). + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs new file mode 100644 index 0000000000..8c378905c5 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/libgsmme-dev.docs @@ -0,0 +1,2 @@ +doc/README.developers +doc/README.NLS diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules new file mode 100644 index 0000000000..a615ea02d4 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/rules @@ -0,0 +1,129 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# shared library versions, option 1 +#version=2.0.5 +#major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +me_version=`ls gsmlib/.libs/libgsmme*.so.* | \ + awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +me_major=`ls gsmlib/.libs/libgsmme*.so.* | \ + awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` +ex_version=`ls ext/.libs/libgsmext*.so.* | \ + awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +ex_major=`ls ext/.libs/libgsmext*.so.* | \ + awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + + +export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + +# FOR AUTOCONF 2.13 ONLY +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += $(DEB_HOST_GNU_TYPE) +else + confflags += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE) +endif + +ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) +CFLAGS += -g +CXXFLAGS += -g +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" INSTALL_PROGRAM=$(INSTALL_PROGRAM) \ + ./configure $(confflags) --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info + + touch configure-stamp + +build: configure-stamp build-stamp +build-stamp: + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + # Add here commands to clean up after the build process. + [ ! -f Makefile ] || $(MAKE) distclean + rm -f build-stamp configure-stamp config.log config.status po/de.gmo + + -test -r /usr/share/misc/config.sub && \ + cp -f /usr/share/misc/config.sub scripts/config.sub + -test -r /usr/share/misc/config.guess && \ + cp -f /usr/share/misc/config.guess scripts/config.guess + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + dh_installdirs -pgsm-utils + + # Add here commands to install the package into debian/gsmlib. + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp + chrpath -d debian/tmp/usr/bin/* + cp contrib/gsmsmsspool contrib/gsmsmsrequeue debian/tmp/usr/bin + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + # + # build libgsmlib${major} package by moving files from gsmlib-dev + # + dh_movefiles -plibgsmme$(me_major)c2a \ + usr/lib/libgsmme.so.$(me_major) \ + usr/lib/libgsmme.so.$(me_version) \ + usr/lib/libgsmext.so.$(ex_major) \ + usr/lib/libgsmext.so.$(ex_version) \ + usr/share/locale + + dh_movefiles -plibgsmme-dev \ + usr/include \ + usr/lib + + dh_movefiles -pgsm-utils \ + usr/bin + + + dh_installdocs + dh_installexamples + dh_installmenu + dh_installinit + dh_installcron + dh_installman -pgsm-utils debian/*.1 debian/tmp/usr/share/man/man*/* + dh_installinfo + dh_installchangelogs ChangeLog + dh_link + dh_strip + dh_compress + dh_fixperms + dh_makeshlibs -V + dh_installdeb + dh_shlibdeps -ldebian/libgsmme1c2a/usr/lib + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch new file mode 100644 index 0000000000..530c7916ca --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/debian/watch @@ -0,0 +1,2 @@ +version=2 +http://www.pxh.de/fs/gsmlib/download/content.html gsmlib-(.*)\.tar\.gz diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ new file mode 100644 index 0000000000..303ab14555 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/FAQ @@ -0,0 +1,101 @@ +*** 1. I get the error + /usr/local/bin/gsmsmsd [ERROR]: cannot route status report message to TE + +Some phones/modems cannot route all kinds of SMS to the TE +(computer). Please try + + gsmsmsd no_stat + +This is documented in the gsmsmsd manual page. + + +*** 2. Siemens M20T expects an initial PIN. + +For the Siemens M20T an initial PIN must be send once (probably when +it is switched on or the computer is powered on). This PIN is used for +all subsequent invocations of gsmlib-based programs. The trick is to +issue the following program (eg. in the rc-scripts of the operating system): + + gsmctl -I "+cpin=" + + +*** 3. Sending SMS with or retrieving SMS from my Ericsson SH888 does +not work. + +Set the environment variable GSMLIB_SH888_FIX: + +export GSMLIB_SH888_FIX=1 (bash) +setenv GSMLIB_SH888_FIX 1 (tcsh) + +If it works now, I need your model number. You could just enter +"AT+CGMM" in a terminal program and send me the results. Alternatively +set the environment variable GSMLIB_DEBUG=2 and me the dump. + +*** 4. I get the error "ME/TA error 'Unidentified subscriber' (code +28)" when trying to send SMS using gsmsendsms or gsmsmsd. + +The SMS service centre address (SCA, the phone number of the centre that is +accepting SMS for delivery) is not set correctly in your phone. There +are three ways to correct this: + +1. set the default SCA (example is for Germany T-D1): + + gsmctl -o setsca "+491710760000" + +2. Use the menus of your phone to set the SMS SCA. + +3. Use the option "--sca 1234567" for the gsmsmsd, gsmsmsstore, and +gsmsendsms programs. This tries to set the SCA in the SMS itself (does +not change default SCA) and might not work with all phones. + +*** 5. gsmlib works unreliably with my phone. + +Try another baudrate, even higher baudrates sometimes work better then +lower ones. + +*** 6. On Win32 accessing the COM device fails. + +Use COMx: (x is the number of the COM device) instead of the UNIX +device name. If this doesn't work use "\\.\COMx:". + +*** 7. Windows 2000 Does Not Support Mapping Virtual COM Ports to + Infrared Ports. + +Windows 2000 users should follow the instructions in +support.microsoft.com article Q252795 in order to connect with their +mobile. + +*** 8. gcc-compiled shared C++ libraries do not work properly on some + commercial UNIX systems and with older version of gcc. + +The symptoms may be that the program dumps core on exceptions (AIX) or that +global constructors are not called (Solaris). + +Try to compile gsmlib with + + ./configure --disable-shared --enable-static + +if you encounter strange problems. + +*** 9. How to support unicode? + +You need 6 steps: + +1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET + +2. set your locale correctly, for example, my locale, china. + setlocale(LC_ALL, "chs"); + +3. translate MBCS(multiple byte character set) string to unicode string. + wchar_t wstr[ 1000 ]; + memset(wstr, 0, 2000); + mbstowcs(wstr, data.c_str(), data.length()); + +4. get unicode string length. + int wcs_len = wcslen(wstr); + +5. change unicode string to net order. + for (int i = 0; i < wcs_len; i++) + wstr[ i ] = htons(wstr[ i ]); + +6. put unicode string into pdu. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am new file mode 100644 index 0000000000..f194f8d496 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.am @@ -0,0 +1,33 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: doc Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 11.6.1999 +# ************************************************************************* + +man_MANS = gsmsmsd.8 gsmctl.1 gsmpb.1 gsmsendsms.1 gsmsmsstore.1 gsminfo.7 + +EXTRA_DIST = gsmsmsd.man gsmctl.man gsmpb.man gsmsendsms.man \ + gsmsmsstore.man gsmlib.lsm gsminfo.man \ + README.NLS README.developers FAQ + +%.1: %.man + sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ + $< > $@ + +%.7: %.man + sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ + $< > $@ + +%.8: %.man + sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ + $< > $@ + +clean-local: + rm -f *.1 *.7 *.8 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in new file mode 100644 index 0000000000..f0f33528e3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/Makefile.in @@ -0,0 +1,412 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: doc Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 11.6.1999 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +man_MANS = gsmsmsd.8 gsmctl.1 gsmpb.1 gsmsendsms.1 gsmsmsstore.1 gsminfo.7 + +EXTRA_DIST = gsmsmsd.man gsmctl.man gsmpb.man gsmsendsms.man \ + gsmsmsstore.man gsmlib.lsm gsminfo.man \ + README.NLS README.developers FAQ + +subdir = doc +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done + +man7dir = $(mandir)/man7 +install-man7: $(man7_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man7dir) + @list='$(man7_MANS) $(dist_man7_MANS) $(nodist_man7_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.7*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 7*) ;; \ + *) ext='7' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man7dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man7dir)/$$inst; \ + done +uninstall-man7: + @$(NORMAL_UNINSTALL) + @list='$(man7_MANS) $(dist_man7_MANS) $(nodist_man7_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.7*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man7dir)/$$inst"; \ + rm -f $(DESTDIR)$(man7dir)/$$inst; \ + done + +man8dir = $(mandir)/man8 +install-man8: $(man8_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man8dir) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ + done +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ + rm -f $(DESTDIR)$(man8dir)/$$inst; \ + done +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man7dir) $(DESTDIR)$(man8dir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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-local mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 install-man7 install-man8 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 uninstall-man7 uninstall-man8 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + clean-local distclean distclean-generic distclean-libtool \ + distdir dvi dvi-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-man1 install-man7 \ + install-man8 install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool uninstall \ + uninstall-am uninstall-info-am uninstall-man uninstall-man1 \ + uninstall-man7 uninstall-man8 + + +%.1: %.man + sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ + $< > $@ + +%.7: %.man + sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ + $< > $@ + +%.8: %.man + sed -e "s/##VERSION##/$(VERSION)/g;s/##DATE##/`date`/g" \ + $< > $@ + +clean-local: + rm -f *.1 *.7 *.8 +# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS new file mode 100644 index 0000000000..a5381f6104 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.NLS @@ -0,0 +1,72 @@ +0 Introduction +-------------- + +This version of gsmlib contains national language support (NLS) using +the GNU (or OS-supplied) gettext library. gettext eases the handling +of translations of (usually english) output messages to other +languages by introducing the concept of message catalogs. + +Message catalogs can exist in various formats. The human-readable and +-editable format is the PO file format. I have written a PO-file for +the german language (de.po). These human-readable files are then +translated to MO files which can be used by the gettext library. + +Please refer to the GNU gettext documentation (at the time of this +writing gettext-0.10) for further details. + + +1 Compiling gsmlib with localized messages +------------------------------------------ + +Gsmlib is compiled by default with NLS enabled. If you don't want +NLS invoke configure with the option + +./configure --disable-nls + + +2 Adding new message dialogs +---------------------------- + +1. Edit the ALL_LINGUAS line in "source/configure.in" and add your + language, eg. French: + + ALL_LINGUAS="de fr" + +2. Execute "autoconf" to create a new "configure" script (possible + problem: incompatible "autoconf") + +3. Now issue "./configure" in the "sources" directory. + +4. go to the "po" subdirectory + +5. do a "touch fr.po" to create an initially empty PO-file. + +6. do a "make update-po". This extracts all the strings from the files + listed in "POTFILES" and puts them with empty translations into "fr.po" + (it also updates existing po-Files such as "de.po"). + +7. Now use the editor of your choice to provide translations in + "fr.po". There is an emacs major mode (po-mode) that eases this + process. + +8. now issue "make". This causes an "fr.mo" to be created. + + +3 Adding new strings to gsmlib source code +------------------------------------------ + +1. If you add new strings to the gsmlib source code that need + translation enclose them with "_(" and ")" (see gettext documentation + for special cases). + +2. go to the "po" directory. + +3. do a "make update-po". This updates all existing PO-files (removing + obsolete translations, providing new, emptry entries). + +4. Provide translations for the new, empty entries (ideally using + emacs po-mode) + +5. now issue "make". This causes up-to-date MO-files to be created. + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers new file mode 100644 index 0000000000..7fdcc11940 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/README.developers @@ -0,0 +1,138 @@ +OVERVIEW + + The GSM library is written in C++ and uses the latest C++ + features: namespaces, exceptions, the standard template library. + + The actual library source code is in the gsmlib subdirectory of + this distribution. The following modules are available: + + gsm_alloca.h OS-specific alloca defines + gsm_at.h Utility classes for AT command sequence handling + gsm_error.h Error codes and error handling functions + gsm_event.h Event handler interface + gsm_me_ta.h Mobile Equipment/Terminal Adapter and SMS functions + (ETSI GSM 07.07 and 07.05) + gsm_parser.h Parser to parse MA/TA result strings + gsm_phonebook.h Phonebook management functions + gsm_port.h Abstract port definition + gsm_sms.h SMS functions (ETSI GSM 07.05) + gsm_sms_codec.h Coder and Encoder for SMS TPDUs + gsm_sms_store.h SMS functions, SMS store (ETSI GSM 07.05) + gsm_sorted_phonebook.h Alphabetically sorted phonebook + (residing in files or in the ME) + gsm_sorted_sms_store.h Sorted SMS store + (sorted by address, time or type) + (residing in files or in the ME) + gsm_unix_serial.h UNIX serial port implementation + gsm_util.h Various utilities + + +REQUIREMENTS + + I have used egcs-1.1.2 and libstdc++.so.2.8.0 for compiling the + library and all programs. Older probably don't work because of + missing features. + + +AVAILABLE DOCUMENTATION + + If you want to do your own programming using the GSM library please + refer to the extensively documented header files or to the example + programs in the test or apps subdirectory. + + I have used the following documentation to develop this software: + + gts_gsm_02.30_v5.2.0.pdf + gts_gsm_03.40_v5.3.0.pdf + gts_gsm_04.11_v5.1.0.pdf + gts_gsm_02.82_v5.0.0.pdf + gts_gsm_03.41_v5.2.0.pdf + gts_gsm_07.05_v5.3.0.pdf + gts_gsm_03.38_v5.3.0.pdf + gts_gsm_04.08_v5.1.0.pdf + gts_gsm_07.07_v5.0.0.pdf + + Due to copyright reasons I cannot include this documentation in + this distribution. You can download it from the ETSI website + (www.etsi.org) for free, though. + + +COMPILATION + + The code is automatically compiled without debugging code enabled + (mostly assert()'s). + + If there are any problems you can generate a debug version + by issuing + + CXXFLAGS="-g" ./configure --disable-shared + + To switch on asserts and additional debugging output change the line + + CXXFLAGS="-DNEBUG $CXXFLAGS" + + in configure.in do + + dnl CXXFLAGS="-DNEBUG $CXXFLAGS" + + Then regenerate configure by executing autoconf. + + You must use at least gcc-2.95.2 to compile gsmlib successfully. + + +TESTS + + The tests directory contains a number of software tests. Two kinds + of test programs are provided: Those, that run without a mobile + phone and those that require a mobile phone to be connected to a + serial port. + + No access to mobile phone needed: + runparser.sh Test the parser for AT responses + runsms.sh Test SMS message encoding and decoding routines + runspb.sh Test sorted phonebook module + runssms.sh Test sorted SMS store module + + Give mobile phone device as argument: + testsms2 Manipulate SMS store in the mobile phone (read/write) + testgsmlib Test the gsm_me_ta module (readonly) + testpb Dump all phonebooks in the mobile phone to the stdout + (readonly) + testpb2 Manipulate phonebook in the mobile phone (read/write) + + The tests that do not require a mobile phone can be executed by + issuing "make check" in the tests subdirectory. The others must be + invoked manually. WARNING: These tests alter the contents of the + mobile phone's phonebook or SMS message memory!!! Make sure, that + you understand what the test does and be prepared for loss of data in + the mobile phone. + +HINTS + + - By default gsmlib is compiled with NDEBUG set. There are lots + of assert()s all over the library that may help to find problems + in programs that use the library. Disable NDEBUG to get best + debugging support. + +CUSTOM BACKENDS + + gsmlib now allows custom backends to be defined for sorted phonebooks + and sorted SMS stores. This can be used to store phonebook entries in + relational databases or LDAP servers. The interfaces are defined in + gsm_sorted_phonebook_base.h and gsm_sorted_sms_store_base.h, + respectively. + + To register a custom backend (eg. for sorted phonebooks) follow + these steps: + + 1. Define a subclass of CustomPhonebookFactory. + + 2. Define a static initializer class in your module that uses the + interface CustomPhonebookRegistry::registerCustomPhonebookFactory() + to make your custom backend available. + + 3. Link your module to any application that should use your custom + backend. The gsmpb and gsmsmsstore programs are prepared to use the + CustomPhonebookRegistry class to obtain your custom backend + objects. + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man new file mode 100644 index 0000000000..fdd48d3377 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmctl.man @@ -0,0 +1,683 @@ +.TH GSMCTL 8 "##DATE##" "gsmctl v##VERSION##" +.SH NAME +gsmctl, gsmsiectl \- GSM mobile phone control program +.SH SYNOPSIS +.B gsmctl +.RB [\| \-b +.IR baudrate \|] +.RB [\| \-\-baudrate +.IR baudrate\| ] +.RB [ \|\-d +.IR device\| ] +.RB [ \|\-\-device +.IR device\fP ] +.RB [ \|\-h\| ] +.RB [ \|\-\-help\| ] +.RB [ \|\-I +.IR "init string" \|] +.RB [ \|\-\-init +.IR "init string" \|] +.RB [ \|\-v\| ] +.RB [ \|\-\-version\| ] +.RB [ \|\-X\| ] +.RB [ \|\-\-xonxoff\| ] +.BI \-o \ operation +.RB | \ \-\-operation +.IR operation \ | +.I parameters +.PP +.B gsmsiectl +.RB [\| \-b +.IR baudrate \|] +.RB [\| \-\-baudrate +.IR baudrate\| ] +.RB [ \|\-d +.IR device\| ] +.RB [ \|\-\-device +.IR device\fP ] +.RB [ \|\-h\| ] +.RB [ \|\-\-help\| ] +.RB [ \|\-I +.IR "init string" \|] +.RB [ \|\-\-init +.IR "init string" \|] +.RB [ \|\-v\| ] +.RB [ \|\-\-version\| ] +.RB [ \|\-X\| ] +.RB [ \|\-\-xonxoff\| ] +.BI \-o \ operation +.RB | \ \-\-operation +.IR operation \ | +.I parameters +.SH DESCRIPTION +.B gsmctl +can request information from or perform operations on an GSM mobile +phone. +.PP +.B gsmctl +attaches itself to the +.I device +given on the command line (usually an GSM modem) using the specified +.IR baudrate . +If no +.I device +is given, the device +.I /dev/mobilephone +is used. If no +.I baudrate +is given, a default baud rate of 38400 is used. +.PP +.B gsmctl +can be used in to modes: If no +.B \-\-operation +option is given the +.I parameters +specify the status information to be retrieved from +the mobile phone. See the section +.B STATUS INFORMATION +for more details. If an +.B \-\-operation +option is given the requested +.I operation +is performed on the mobile using the +.IR parameters . +See the section +.B OPERATIONS +for more details. +.PP +.B gsmsiectl +is the same program with some extension for Siemens mobile phones. +Some extra +.B OPERATIONS +are available in this case. +.PP +Error messages are printed to the standard error output. If the +program terminates on error the error code 1 is returned. +.SH OPTIONS +.TP +.BI \-b\ baudrate ,\ \-\-baudrate\ baudrate +The baud rate to use. Defaults to 38400. +.TP +.BI \-d\ device ,\ \-\-device\ device +The device to which the GSM modem is connected. The default is +.IR /dev/mobilephone . +.TP +.B \-h,\ \-\-help +Prints an option summary. +.TP +.BI \-I\ "init string" ,\ \-\-init\ "init string" +Initialization string to send to the TA (default: "E0"). Note that the +sequence "ATZ" is sent first. +.TP +.BI \-o\ operation ,\ \-\-operation\ operation +This option is used to perform an operation on the mobile phone. Refer +to the section +.B OPERATIONS +for more information on the available +operations and the +.I parameters +required for each operation. +.TP +.B \-v,\ \-\-version +Prints the program version. +.TP +.B \-X,\ \-\-xonxoff +Uses software handshaking (XON/XOFF) for accessing the device. +.SH STATUS INFORMATION +If called without the +.B \-\-operation +option +.B gsmctl +prints out default mobile phone status information as specified by the +.I parameters +described below: +.TP 7 +.B ALL +Prints all available information. +.TP 7 +.B BATT +Prints out information about the current battery status. Two lines of +the form " text" and " charge" are printed. Text may be +of "0 ME is powered by the battery", "1 ME has a battery connected, +but is not powered by it", "2 ME does not have a battery connected", +or "3 Recognized power fault, calls inhibited". Charge is a number in +the range 0..100 where 0 means that the battery is empty or not +connected and 100 means full charge. +.TP 7 +.B BITERR +Prints information about the current bit error rate. The output is of +form " value" where value can be of 0..7, 99 (99 means not +available or not detectable). +.TP 7 +.B CLIP +This option prints a line of the form " on" if caller line +identification is turned on in the network, " off" otherwise. +.TP 7 +.B CSET +Display info about charsets. The output is in the form " +available" and " current", which describes the charsets +available and which is current. +.TP 7 +.B CURROP +Prints information about the current operator. The output line has the +form " Long name: \'xxxx\' Short name: \'yyyy\' Numeric Name: zzzz". +.TP 7 +.B FLCAP +Prints out the two-letter names of available facility locks. The +meaning of standardized facility lock names is as follows: +.RS +.TP 3 +.I CS +Lock control surface (eg. phone keyboard) +.TP 3 +.I PS +Lock phone to SIM card (mobile phone asks password when other than +current SIM card inserted) +.TP 3 +.I SC +Lock SIM card (SIM asks password in mobile phone power-up and when +this lock command issued) +.TP 3 +.I AO +Barr all outgoing calls +.TP 3 +.I OI +Barr outgoing international calls +.TP 3 +.I OX +Barr outgoing international calls except to home country +.TP 3 +.I AI +Barr all incoming calls +.TP 3 +.I IR +Barr incoming calls when roaming outside the home country +.TP 3 +.I NT +Barr incoming calls from numbers not stored to TA memory +.TP 3 +.I NM +Barr incoming calls from numbers not stored to mobile phone memory +.TP 3 +.I NS +Barr incoming calls from numbers not stored to SIM memory +.TP 3 +.I NA +Barr incoming calls from numbers not stored in Any memory +.TP 3 +.I AB +All Barring services (FIXME) +.TP 3 +.I AG +All outGoing barring services (FIXME) +.TP 3 +.I AC +All inComing barring services (FIXME) +.TP 3 +.I FD +SIM fixed dialling memory feature (if PIN2 authentication has not been +done during the current session, PIN2 is required as ) +.PP +Note that mobile phones may implement facility locks not documented +here. +.RE +.TP 7 +.B FLSTAT +Prints information about the status of facility locking in the mobile +phone. For each facility a line of the form " \'facilityname\' +classes" is printed. The classes may be "Voice", "Data", and/or "Fax" +depending on the class for which the facility is enabled. If "unknown" +is printed out this means that the TA is not able to report the +status. If the facility is not enabled for any class, no class +identifier is printed. See +.B FLCAP +for information about the available two-letter names of facility +locks. +.TP 7 +.B FORW +Prints information about call forwarding enabled in the mobile +phone. For each combination of reason (UnconditionalReason, +MobileBusyReason, NoReplyReason, and NotReachableReason) and class +(Voice, Data, and Fax) a line of the form " reason class +number: xxx subaddr: yyy time: zzz" is printed. The time is the number +of seconds to wait before forwarding in case of NoReplyReason. +.TP 7 +.B ME +Prints manufacturer, model, revision, and serial number of +the mobile phone (ME = mobile equipment). Output lines are numbered from +"" to "". +.TP 7 +.B OP +Prints information about the currently available mobile network +operators. For each operator an output line of the form " status +Long name: \'xxxx\' Short name: \'yyyy\' Numeric name: zzz" is returned +where status may be of: +.RS +.TP 10 +.I unknown +The status of the operator is unknown. +.TP +.I current +This is the currently selected operator. +.TP +.I available +This operator is available for selection. +.TP +.I forbidden +This operator is not available for selection, ie. not +accessible with this SIM card. +.RE +.TP 7 +.B PIN +Prints information about the current PIN status. The output is of +form " status". Where status can be one of the following lines: +.RS +.TP 10 +.I READY +ME is not pending for any password. +.TP +.I SIM PIN +ME is waiting SIM PIN to be given. +.TP +.I SIM PUK +ME is waiting SIM PUK to be given. +.TP +.I PH\-SIM PIN +ME is waiting phone/-to/-SIM card password to be given. +.TP +.I PH/-FSIM PIN +ME is waiting phone/-to/-very first SIM card password to be given. +.TP +.I PH/-FSIM PUK +ME is waiting phone/-to/-very first SIM card unblocking password to be +given. +.TP +.I SIM PIN2 +ME is waiting SIM PIN2 to be given. +.TP +.I SIM PUK2 +ME is waiting SIM PUK2 to be given. +.TP +.I PH/-NET PIN +ME is waiting network personalisation password to be given. +.TP +.I PH/-NET PUK +ME is waiting network personalisation unblocking password to be given. +.TP +.I PH/-NETSUB PIN +ME is waiting network subset personalisation password to be given. +.RE +.TP 7 +.B PW +Facilities in the mobile phone may be protected by passwords (ie. PINs +or PUKs). This option prints out lines of the form " +\'facilityname\' len" for each facility for which a facility lock +password exists. See +.B FLCAP +for information about the available two-letter names of facility +locks. +.TP 7 +.B SCA +Reports the default SMS service centre address currently set in the +mobile phone. +.TP 7 +.B SIG +Prints information about the current network signal +strength. The output is of the form " value". Following values +are possible: +.TP +.po +7 +.I 0 +-113 dBm or less +.TP +.I 1 +-111 dBm +.TP +.I 2...30 +-109... -53 dBm (in steps of 2 dBm) +.TP +.I 31 +-51 dBm or greater +.TP +.I 99 +not known or not detectable +.PP +.po +.SH OPERATIONS +.TP +.BI dial\ number +Dials +.IR number . +After dialling +.B gsmctl +waits for a keypress to terminate. +.PP +.B forw +.IR mode\ reason\ number\ [\| facilityclass\| ]\ [ forwardtime ] +.RS +Changes the call forwarding behaviour in the network. +.I mode +can be any of: +.RS 3 +.I disable +Call forwarding is disabled. +.PP +.I enable +Call forwarding is enabled. The call forwarding reason, number, and +(optionally) forwardtime must be registered beforehand. +.PP +.I register +This registers the call forwarding reason, number, and forwardtime in +the network. +.PP +.I erase +This is the counterpart to register. It erase the call forwarding info +in the network. +.RE +.PP +.I reason +can be any of: +.RS 3 +.I unconditional +This applies to every call. +.PP +.I mobilebusy +The mobile phone is busy. +.PP +.I noreply +The call is not answered in \fIforwardtime\fP seconds. +.PP +.I notreachable +Mobile phone cannot be reached (ie. switched off). +.PP +.I all +This refers to all forwarding reasons. +.PP +.I allconditional +This refers to all conditional forward reasons +.RI ( mobilebusy ,\ noreply ,\ notreachable ). +.RE +.PP +.I number +is the number the incoming call is forwarded to. See the explanation +for +.I lock +operation for the meaning of +.IR facilityclass . +The default for +.I forwardtime +is 20 seconds if omitted. +.I forwardtime +can be in the range 1..30. +.RE +.PP +.TP +.BI off +Sets functionality level of the phone to 0 (low functionality). The +effects of this command depend on the phone (eg. sets low power +consumption). +.PP +.TP +.BI on +Sets functionality level of the phone to 1 (high functionality). The +effects of this command depend on the phone. +.PP +.TP +.BI pin\ pin +Sets PIN code. Use +.BI gsmctl\ pin +to get the current pin status. +.PP +.B lock +.IR facility\ [\| facilityclass \|]\ [\| passwd \|] +.RS +Locks the named facility. Use +.BI gsmctl\ flcap +to get a list of supported facilities. The +.I facilityclass +can be any of: +.RS 3 +.I all +Voice, data, and fax. +.PP +.I v\ vf\ vd\ f\ fd\ d +Any combination of voice, data and fax. +.RE +.PP +The default is \fIall\fP if \fIfacilityclass\fP is omitted. The +\fIpasswd\fP is password for the facility. If no password is given +this parameter can be omitted. +.RE +.PP +.BI setop\ opmode\ numericname +.RS +Sets the current operator to +.IR numericname . +Use +.BI gsmctl\ op +to get a list of operators with their numeric codes. +.I opmode +can be any of: +.RS 3 +.I automatic +.PP +.I manual +.PP +.I deregister +Deregister from network. +.PP +.I manualautomatic +If manual selection fails, automatic mode is entered. +.RE +.RE +.PP +.B setpw +.IR facility\ [\| oldpasswd\| ]\ [\| newpasswd\| ] +.RS +Sets the password for the facility. If one of the passwords is omitted +this means that the facility has no password protection. Passwords are +PIN1, PIN2, PUK etc. +.RE +.TP +.BI setsca\ service\ centre\ address +Sets the default SMS service centre address. +.PP +.B unlock +.IR facility\ [\| facilityclass\| ]\ [ \|passwd\| ] +.RS +This is the reverse operation to \fBlock\fP. See above for a +description of the parameters. +.RE +.PP +.B Extra operators for gsmsiectl: +.PP +.B cset +.RS +Charset info. +.RE +.PP +.B pbook +.RS +Phone book info. +.RE +.PP +.B signal +.RS +Signal tone info. +.RE +.PP +.B ring +.RS +Ringing tone info. +.RE +.PP +.B binary +.RS +Binary info. +.RE +.SH EXAMPLES +The following invocation of +.I gsmctl +prints out all available status information for the mobile phone +connected to +.B /dev/mobilephone +.PP +.nf +.IP "" 3 +gsmctl all +.fi +.PP +The output could look like (lines edited to fit): +.RS 3 +.PP +.PD 0 + Manufacturer: SIEMENS +.HP + Model: S10 +.HP + Revision: 06 +.HP + Serial Number: 448058511817585 +.HP + Status: available Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 +.HP + Status: forbidden Long name: 'D2 PRIVAT' Short name: '' Numeric name: 26202 +.HP + Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic +.HP + 'CS' +.HP + 'PS' +.HP + 'SC' Voice Data Fax +.HP + 'AO' +.HP + 'OI' +.HP + 'OX' +.HP + 'AI' +.HP + 'IR' +.HP + 'CS' 'PS' 'SC' 'AO' 'OI' 'OX' 'AI' 'IR' 'AB' 'AG' 'AC' +.HP + 'PS' 8 +.HP + 'SC' 8 +.HP + 'AO' 4 +.HP + 'OI' 4 +.HP + 'OX' 4 +.HP + 'AI' 4 +.HP + 'IR' 4 +.HP + 'AB' 4 +.HP + 'AG' 4 +.HP + 'AC' 4 +.HP + on +.HP + UnconditionalReason Voice inactive number: subaddr: time: -1 +.HP + UnconditionalReason Data inactive number: subaddr: time: -1 +.HP + UnconditionalReason Fax inactive number: subaddr: time: -1 +.HP + MobileBusyReason Voice active number: +494012345678 subaddr: time: -1 +.HP + MobileBusyReason Data inactive number: subaddr: time: -1 +.HP + MobileBusyReason Fax inactive number: subaddr: time: -1 +.HP + NoReplyReason Voice active number: +494012345678 subaddr: time: 20 +.HP + NoReplyReason Data inactive number: subaddr: time: -1 +.HP + NoReplyReason Fax inactive number: subaddr: time: -1 +.HP + NotReachableReason Voice active number: +494012345678 subaddr: time: -1 +.HP + NotReachableReason Data inactive number: subaddr: time: -1 +.HP + NotReachableReason Fax inactive number: subaddr: time: -1 +.HP + 0 ME is powered by the battery +.HP + 100 +.HP + 0 +.HP + 19 +.RE +.PD +.PP +The following locks the keys on the mobile phone: +.nf +.IP "" 3 +gsmctl -o lock cs +.fi +.PP +This changes the SIM card PIN from 1234 to 2345: +.nf +.IP "" 3 +gsmctl -o setpw sc 1234 2345 +.fi +.PP +Switch off all call forwarding (actually erase the numbers): +.nf +.IP "" 3 +gsmctl -o forw erase all +.fi +.PP +Switch on call forwarding to German D1 voice box: +.nf +.IP "" 3 +gsmctl -o forw register notreachable 3313 +gsmctl -o forw enable notreachable +.fi +.PP +.SH FILES +.TP +.B /dev/mobilephone +Default mobile phone device. +.SH AUTHOR +Peter Hofmann +.SH BUGS +Report bugs to software@pxh.de. Include a complete, self-ncontained +example that will allow the bug to be reproduced, and say which +version of \fIgsmctl\fP you are using. +.SH COPYRIGHT +Copyright \(co 1999 Peter Hofmann +.PP +.B gsmctl +is free software; you can redistribute it and/or modify it under the +terms of the GNU Library General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. +.PP +.B gsmctl +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 Library General Public +License for more details. +.PP +You should have received a copy of the GNU Library General Public +License along with +.BR gsmctl ; +see the file COPYING. If not, write to the Free Software Foundation, +675 Mass Ave, Cambridge, MA 02139, USA. +.SH "SEE ALSO" +.BR gsminfo (7), +.BR gsmpb (1), +.BR gsmsendsms (1), +.BR gsmsmsd (8), +.BR gsmsmsstore (1). + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man new file mode 100644 index 0000000000..7939502779 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsminfo.man @@ -0,0 +1,56 @@ +.\" -*- eval: (nroff-mode) -*- +.de TQ +.br +.ns +.TP \\$1 +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH GSMINFO 7 "##DATE##" "gsmctl v##VERSION##" +.PP +.SH NAME +gsminfo \- GSM general information +.PP +.SH DESCRIPTION +\fIgsmlib\fP is a library to access GSM mobile phones through GSM +modems or via IrDA devices. In the \fIgsmlib\fP documentation and error +messages the following abbreviations are used: +.TP .7i +\fBME\fP +Mobile Equipment. The mobile phone, usually. +.TP .7i +\fBSC\fP +Service Centre. In the context of this documentation, the center +responsible for sending and relaying SMs. +.TP .7i +\fBSM\fP +Short Message. +.TP .7i +\fBSME\fP +Short Message Equipment. Usually the mobile phone. +.TP .7i +\fBTA\fP +Terminal Adapter. This can be a GSM modem PC card or it can be +integrated into the ME. +.TP .7i +\fBTE\fP +Terminal Equipment. This is the device to which the TA is connected, +usually the computer. +.PP +.SH AUTHOR +Peter Hofmann +.PP +.SH COPYRIGHT +Copyright \(co 1999 Peter Hofmann +.PP +.SH "SEE ALSO" +.BR gsmctl(1), +.BR gsmpb(1), +.BR gsmsendsms(1), +.BR gsmsmsd(8), +.BR gsmsmsstore(1). + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm new file mode 100644 index 0000000000..6056b88eed --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmlib.lsm @@ -0,0 +1,20 @@ +Begin3 +Title: gsmlib +Version: 1.0 +Entered-date: 29JUL99 +Description: This distribution contains a library to access + GSM mobile phones through GSM modems. Features include: + * modification of phonebooks stored in the + mobile phone or on the SIM card + * reading and writing of SMS messages stored in + the mobile phone + * sending and reception of SMS messages + Additionally, some simple command line programs are + provided to use these functionalities. +Keywords: gsm mobile phone modem sms +Author: Peter Hofmann +Maintained-by: Peter Hofmann +Primary-site: http://www.pxh.de/fs/gsmlib/ +Platforms: Linux +Copying-policy: LGPL +End diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man new file mode 100644 index 0000000000..fef171e0aa --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmpb.man @@ -0,0 +1,245 @@ +.\" -*- eval: (nroff-mode) -*- +.de TQ +.br +.ns +.TP \\$1 +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH GSMPB 8 "##DATE##" "gsmpb v##VERSION##" +.SH NAME +gsmpb \- GSM mobile phone phonebook manipulation program +.SH SYNOPSIS +.B gsmpb +[ \fB\-b\fP \fIbaudrate\fP ] +[ \fB\-\-baudrate\fP \fIbaudrate\fP ] +[ \fB\-c\fP ] +[ \fB\-\-copy\fP ] +[ \fB\-d\fP \fIdestination device or file\fP ] +[ \fB\-\-destination\fP \fIdestination device or file\fP ] +[ \fB\-h\fP ] +[ \fB\-\-help\fP ] +[ \fB\-i\fP ] +[ \fB\-\-index\fP ] +[ \fB\-I\fP \fIinit string\fP ] +[ \fB\-\-init\fP \fIinit string\fP ] +[ \fB\-p\fP \fIphonebook name\fP ] +[ \fB\-\-phonebook\fP \fIphonebook name\fP ] +[ \fB\-s\fP \fIsource device or file\fP ] +[ \fB\-\-source\fP \fIsource device or file\fP ] +[ \fB\-t\fP \fIcharacter set\fP ] +[ \fB\-\-charset\fP \fIcharacter set\fP ] +[ \fB\-v\fP ] +[ \fB\-\-version\fP ] +[ \fB\-V\fP ] +[ \fB\-\-verbose\fP ] +[ \fB\-X\fP ] +[ \fB\-\-xonxoff\fP ] +[ \fB\-y\fP ] +[ \fB\-\-synchronize\fP ] +.PP +.SH DESCRIPTION +\fIgsmpb\fP can store or retrieve phonebook entries residing in a GSM +mobile phone's phonebook to or from a file. A synchronization mode is +also available. +.PP +\fIgsmpb\fP reads entries from the source which can be a mobile phone +(if a serial device file is given) or a file (if a file name is +given). The source is never modified. \fIgsmpb\fP writes phonebook +entries to a destination file or device. Depending on the mode the +source is copied to the destination file, thus overwriting the +destination, or the destination is synchronized with regard to the +source which is the default (details see below). +.PP +If "\-" is given as the parameter for the \fB\-\-source\fP or +\fB\-\-destination\fP options, the phonebook is read from standard input +and/or written to standard output, respectively. +.PP +Phonebook entries names are encoded using the GSM default alphabet in +the mobile phone, whereas they are stored using the Latin\-1 encoding +in phonebook files. When reading phonebook entries from a mobile phone +entry names are converted from the GSM default to Latin\-1. Characters +that can not be converted to Latin\-1 are encoded as character code +172 (Latin\-1 boolean "not"). When writing file-based phonebook entries +to a mobile phone a conversion to the GSM default alphabet takes +place. Characters that can not be converted are encoded as GSM delta +(code 16). If the default character set has been changed using the +\fB\-\-charset\fP option no conversion takes place. +.PP +Error messages are printed to the standard error output. If the program +terminates on error the error code 1 is returned. +.PP +.SH OPTIONS +.TP .7i +\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP +The baud rate to use. The default baudrate is 38400. +.TP .7i +\fB\-c\fP, \fB\-\-copy\fP +This causes the contents of the source to be copied to the +destination. After this operation the destination has exactly the same +contents as the source. +.TP .7i +\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP +The destination device or file. +.TP .7i +\fB\-h\fP, \fB\-\-help\fP +Prints an option summary. +.TP .7i +\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP +Initialization string to send to the TA (default: "E0"). Note that the +sequence "ATZ" is sent first. +.TP .7i +\fB\-i\fP, \fB\-\-index\fP +If the index position is given, \fIgsmpb\fP preserves the assignment +of entries to memory slots in the mobile phone's phonebook. This can +be used to backup phonebook entries with their position into a +phonebook file or to change the position of entries by editing a +phonebook file and writing them back to the mobile phone. +If this option is given the phonebook file used as the source +must contain indices for every entry. Additionally, these indices must +be unique, ie. it is not allowed to assign one entry twice to a +specific position in the mobile phone's phonebook. +.TP .7i +\fB\-p\fP \fIphonebook\fP, \fB\-\-phonebook\fP \fIphonebook\fP +The name of the phonebook to read from or write to. This is only used +for device sources and destinations. Commonly available phonebooks +are: +.TP .3i +.po +0.7i +.ll 5.8i +\fIFD\fP +SIM fixdialling\-phonebook +.TP .3i +\fILD\fP +SIM last\-dialling\-phonebook +.TP .3i +\fIME\fP +ME phonebook +.TP .3i +\fIMT\fP +combined ME and SIM phonebook +.TP .3i +\fISM\fP +SIM phonebook +.TP .3i +\fITA\fP +TA phonebook +.TP .7i +.po -0.7i +.ll 6.5i +\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP +The source device or file. +.TP +\fB\-t\fP \fIcharacter set\fP, \fB\-\-charset\fP \fIcharacter set\fP +Set the character set to use for phonebook operations (default is the +GSM default alphabet). +.TP +\fB\-v\fP, \fB\-\-version\fP +Prints the program version. +.TP .7i +\fB\-V\fP, \fB\-\-verbose\fP +Prints out a detailed progress report. +.TP .7i +\fB\-X\fP, \fB\-\-xonxoff\fP +Uses software handshaking (XON/XOFF) for accessing the device. +.TP .7i +\fB\-y\fP, \fB\-\-synchronize\fP +This causes the contents of the source to be synchronized with the +destination (default). Synchronization in this context means: +.TP .2i +.po +0.7i +.ll 5.8i +\- +If the source contains an entry with a name that does not exist in the +destination this entry is added to the destination. +.TP .2i +\- +If the source contains an entry with a name that can also be found in +the destination, the entry in the destination is overwritten (ie. the +telephone number is updated). Exception: More then one entry with the +name exists in the destination. In this case the new entry ist just added. +.TP .2i +\- +Entries in the destination that do not exist in the source are +deleted. +.PP +Note that synchronization has the following properties that differ +from copying: This algorithm does not change the location of unchanged +entries in the destination phonebook. The synchronization function +is not case-sensitive when comparing names. +.PP +.po -0.7i +.ll 6.5i +.SH PHONEBOOK FILE FORMAT +Phonebook entries are stored in phonebook files that are meant to be +human-readable and -editable. There is one phonebook entry per line, +and each line has the format: +.PP +.nf +index|text|phone number +.fi +.PP +The fields have the following meanings: +.TP .7i +\fIindex\fP +The index of the entry which must be a positive number. The index may +also be empty. Indices can be used in conjunction with the +\fB\-\-index\fP option to store the entry into a specific position in +the mobile phone. +.TP .7i +\fItext\fP +Descriptive text for the entry. The text may contain the special +characters '\\', '|', carriage return (ASCII code 13), or line feed +(ASCII code 10). These must be written "\\\\", "\\|", "\\r", "\\n", +respectively. The text should only contain characters that can be +encoded using the GSM default alphabet (see comments above). +.TP .7i +\fIphone number\fP +Phone numbers can only contains the digits 0\-9 and the '+' sign. A '+' +sign denotes an international number. +.PP +.SH EXAMPLES +The following invocation of \fIgsmpb\fP synchronizes the mobile phone's +SIM phonebook with the file $HOME/.phonebook: +.PP +.nf +gsmpb \-\-synchronize \-b 19200 \-d /dev/mobilephone \\ + \-s $HOME/.phonebook \-p "SM" +.fi +.PP +.SH AUTHOR +Peter Hofmann +.PP +.SH BUGS +Report bugs to software@pxh.de. Include a complete, self-contained +example that will allow the bug to be reproduced, and say which +version of \fIgsmpb\fP you are using. +.PP +.SH COPYRIGHT +Copyright \(co 1999 Peter Hofmann +.LP +\fIgsmpb\fP is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. +.LP +\fIgsmpb\fP 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 Library General Public License +for more details. +.LP +You should have received a copy of the GNU Library General Public License along +with \fIgsmpb\fP; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +.PP +.SH "SEE ALSO" +.BR gsminfo(7), +.BR gsmctl(1), +.BR gsmsendsms(1), +.BR gsmsmsd(8), +.BR gsmsmsstore(1). + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man new file mode 100644 index 0000000000..d3c8a9c395 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsendsms.man @@ -0,0 +1,154 @@ +.\" -*- eval: (nroff-mode) -*- +.de TQ +.br +.ns +.TP \\$1 +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH GSMSENDSMS 8 "##DATE##" "gsmsendsms v##VERSION##" +.PP +.SH NAME +gsmsendsms \- SMS message sender utility +.PP +.SH SYNOPSIS +.B gsmsendsms +[ \fB\-b\fP \fIbaudrate\fP ] +[ \fB\-\-baudrate\fP \fIbaudrate\fP ] +[ \fB\-c\fP \fIconcatenatedID\fP ] +[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] +[ \fB\-C\fP \fIservice centre address\fP ] +[ \fB\-\-sca\fP \fIservice centre address\fP ] +[ \fB\-d\fP \fIdevice\fP ] +[ \fB\-\-device\fP \fIdevice\fP ] +[ \fB\-h\fP ] +[ \fB\-\-help\fP ] +[ \fB\-I\fP \fIinit string\fP ] +[ \fB\-\-init\fP \fIinit string\fP ] +[ \fB\-r\fP ] +[ \fB\-\-requeststat\fP ] +[ \fB\-t\fP ] +[ \fB\-\-test\fP ] +[ \fB\-v\fP ] +[ \fB\-\-version\fP ] +[ \fB\-X\fP ] +[ \fB\-\-xonxoff\fP ] +\fIphonenumber\fP +[ \fItext\fP ] +.PP +.SH DESCRIPTION +\fIgsmsendsms\fP sends SMS short messages using an GSM mobile phone. +.PP +\fIgsmsendsms\fP attaches itself to the \fIdevice\fP given on the command +line (usually an GSM modem) using the specified \fIbaudrate\fP. If no +\fIdevice\fP is given, the device \fI/dev/mobilephone\fP is used. If +no \fIbaudrate\fP is given, a default baud rate of 38400 is used. +.PP +\fIgsmsendsms\fP accepts a phone number (recipient address) and the +short message text as parameters. The text may have a maximum length +of 160 characters which is the maximum SMS message length. The GSM +default alphabet is used for encoding. ASCII and Latin\-1 characters +that can not be encoded using the GSM default alphabet are converted +to the GSM delta character (GSM code 16). +.PP +Error messages are printed to the standard error output. If the program +terminates on error the error code 1 is returned. +.PP +.SH OPTIONS +.TP +\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP +The baud rate to use. +.TP +\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP +If an ID is given, large SMSs are split into several, concatenated +SMSs. All SMSs have the same ID and are numbered consecutively so that +the receiving phone can assemble them in the correct order. IDs must +be in the range 0..255. Not all receiving phones will support +concatenated SMSs (and display them as separate SMSs), +since all the numbering and ID information is +carried in the user data header element at the beginning of the SMS +user data. This information may show up as garbage in such phones. +.TP +\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP +Sets the service centre address to use for all SUBMIT SMSs (may not +work with some phones). +.TP +\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP +The device to which the GSM modem is connected. The default is +\fI/dev/mobilephone\fP. +.TP +\fB\-h\fP, \fB\-\-help\fP +Prints an option summary. +.TP +\fB-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP +Initialization string to send to the TA (default: "E0"). Note that the +sequence "ATZ" is sent first. +.TP +\fB\-r\fP, \fB\-\-requeststat\fP +Request status reports for sent SMS. +.TP +\fB\-t\fP, \fB\-\-test\fP +If this option is given the text is converted +to the GSM default alphabet and back to Latin\-1. This option can be +used to find out how ASCII or Latin\-1 texts are converted to the GSM +default alphabet. Characters that can not be converted to the GSM default +alphabet are reported as ASCII code 172 (Latin\-1 boolean "not") +after this double conversion. No SMS messages are sent, a connection +to a mobile phone is not established. +.TP +\fB\-v\fP, \fB\-\-version\fP +Prints the program version. +.TP +\fB\-X\fP, \fB\-\-xonxoff\fP +Uses software handshaking (XON/XOFF) for accessing the device. +.PP +.SH EXAMPLES +The following two invocations of \fIgsmsendsms\fP each send the same +SMS message to the number "1234": +.PP +.nf +gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 "This is a test." +echo "This is a test." | gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 +.fi +.PP +.SH FILES +.TP 1.4i +.B /dev/mobilephone +Default mobile phone device. +.PP +.SH AUTHOR +Peter Hofmann +.PP +.SH BUGS +Report bugs to software@pxh.de. Include a complete, self-contained +example that will allow the bug to be reproduced, and say which +version of \fIgsmsendsms\fP you are using. +.PP +.SH COPYRIGHT +Copyright \(co 1999 Peter Hofmann +.LP +\fIgsmsendsms\fP is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. +.LP +\fIgsmsendsms\fP 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 +Library General Public License for more details. +.LP +You should have received a copy of the GNU Library General Public License along +with \fIgsmsendsms\fP; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +.PP +.SH "SEE ALSO" +.BR gsminfo(7), +.BR gsmpb(1), +.BR gsmctl(1), +.BR gsmsmsd(8), +.BR gsmsmsstore(1). + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man new file mode 100644 index 0000000000..89e9c95f39 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsd.man @@ -0,0 +1,269 @@ +.\" -*- eval: (nroff-mode) -*- +.de TQ +.br +.ns +.TP \\$1 +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH GSMSMSD 8 "##DATE##" "gsmsmsd v##VERSION##" +.PP +.SH NAME +gsmsmsd \- SMS message reception daemon +.PP +.SH SYNOPSIS +.B gsmsmsd +[ \fB\-a\fP \fIaction\fP ] +[ \fB\-\-action\fP \fIaction\fP ] +[ \fB\-b\fP \fIbaudrate\fP ] +[ \fB\-\-baudrate\fP \fIbaudrate\fP ] +[ \fB\-c\fP \fIconcatenatedID\fP ] +[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] +[ \fB\-C\fP \fIservice centre address\fP ] +[ \fB\-\-sca\fP \fIservice centre address\fP ] +[ \fB\-d\fP \fIdevice\fP ] +[ \fB\-\-device\fP \fIdevice\fP ] +[ \fB\-D\fP ] +[ \fB\-\-direct\fP ] +[ \fB\-f\fP ] +[ \fB\-\-flush\fP ] +[ \fB\-h\fP ] +[ \fB\-\-help\fP ] +[ \fB\-I\fP \fIinit string\fP ] +[ \fB\-\-init\fP \fIinit string\fP ] +[ \fB\-r\fP ] +[ \fB\-\-requeststat\fP ] +[ \fB\-s\fP \fIspool directory\fP ] +[ \fB\-\-spool\fP \fIspool directory\fP ] +[ \fB\-t\fP \fISMS store name\fP ] +[ \fB\-\-store\fP \fISMS store name\fP ] +[ \fB\-v\fP ] +[ \fB\-\-version\fP ] +[ \fB\-X\fP ] +[ \fB\-\-xonxoff\fP ] +{ \fIsms_type\fP } +.PP +.SH DESCRIPTION +\fIgsmsmsd\fP reads new incoming SMS from the mobile phone and +dispatches them to a user-defined action. Additionally it can send SMS +message that it reads from a spooldir. +.PP +\fIgsmsmsd\fP attaches itself to the \fIdevice\fP given on the command +line (usually an GSM modem) using the specified \fIbaudrate\fP and +waits for incoming SMS messages. If no \fIdevice\fP is given, the +device \fI/dev/mobilephone\fP is used. If no \fIbaudrate\fP is given, a +default baud rate of 38400 is used. +.PP +If no action is given, the SMS message is printed to the standard +output. If an \fIaction\fP is specified the \fIaction\fP is excecuted using the +shell and the SMS message is written to the standard input of the action. +.PP +\fIgsmsmsd\fP needs one empty storage slot for SMS messages in the +mobile phone, otherwise SMS reception will not work. The SMS store to +use for temporary storage of incoming SMS can be selected using the +\fB\-\-store\fP option, otherwise the ME default store is used. +.PP +To terminate \fIgsmsmsd\fP cleanly (without losing SMS messages) one +should send either SIGINT (CTRL\-C on the command line) or SIGTERM to +the process. +.PP +Error messages are printed to the standard error output. If the program +terminates on error the error code 1 is returned. +.PP +\fIsms_type\fP may be any combination of: +.TP +\fIsms\fP, \fIno_sms\fP +Controls reception of normal SMS messages. +.TP +\fIcb\fP, \fIno_cb\fP +Controls reception of cell broadcast messages. +.TP +\fIstat\fP, \fIno_stat\fP +Controls reception of status reports. +.PP +The default is \fIsms\fP, \fIcb\fP, and \fIstat\fP. +.PP +.SH OPTIONS +.TP +\fB\-a\fP \fIaction\fP, \fB\-\-action\fP \fIaction\fP +The action to execute for each incoming SMS message. If no action +is given the SMS is written to the standard output. +.TP +\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP +The baud rate to use. +.TP +\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP +If an ID is given, large SMSs are split into several, concatenated +SMSs. All SMSs have the same ID and are numbered consecutively so that +the receiving phone can assemble them in the correct order. IDs must +be in the range 0..255. This number is increased by one for every +outgoing concatenated SMS and wraps around after 255. +Not all receiving phones will support +concatenated SMSs (and display them as separate SMSs), +since all the numbering and ID information is +carried in the user data header element at the beginning of the SMS +user data. This information may show up as garbage in such phones. +.TP +\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP +Sets the service centre address to use for all SUBMIT SMSs (may not +work with some phones). +.TP +\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP +The device to which the GSM modem is connected. The default is +\fI/dev/mobilephone\fP. +.TP +\fB\-D\fP, \fB\-\-direct\fP +Enables direct routing of incoming SMS messages to the TE. This is not +supported by many mobile phone/GSM modem combinations. Therefore, the +default is to store incoming SMS temporarily before processing them in +the indicated store. +.TP +\fB\-f\fP, \fB\-\-flush\fP +This option causes \fIgsmsmsd\fP to flush (ie. read and erase) +existing SMS messages from +the SMS store selected by the \fB\-\-store\fP option. The action given +by the \fB\-\-action\fP option is executed on each of the flushed +SMS. This option should be used to ensure that enough space is +available in the SMS store for temporary storage of incoming SMS, +otherwise incoming SMS might be ignored silently by the ME. +.TP +\fB\-h\fP, \fB\-\-help\fP +Prints an option summary. +.TP +\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP +Initialization string to send to the TA (default: "E0"). Note that the +sequence "ATZ" is sent first. +.TP +\fB\-r\fP, \fB\-\-requeststat\fP +Request status reports for sent SMS. Note: This option only makes +sense if the phone supports routing of status reports to the +TE. Otherwise the status reports might show on the phone's display or +get lost. +.TP +\fB\-s\fP \fIspool directory\fP, \fB\-\-spool\fP \fIspool directory\fP +This option sets the spool directory where \fIgsmsmsd\fP expects SMS +messages to send. The format of SMS files is very simple: The first +line contains the phone number of the recipient. Everything else after +the first line is interpreted as the SMS text. Please refer to +.BR gsmsendsms(1) +for details on the SMS text character set and maximum length. +\fIgsmsmsd\fP polls the spool directory every 5 seconds. Sent +SMS message files are removed. +.TP +\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP +The name of the SMS store to read from (for the \fB\-\-flush\fP option) +or write to (for temporary SMS storage). This option must +be must be used in conjunction with the \fB\-\-flush\fP option. If this +option is omitted the ME uses it's default SMS store for temporary +storage of incoming SMS. A commonly available message +store is "SM" (SIM card). +.TP +\fB\-v\fP, \fB\-\-version\fP +Prints the program version. +.TP +\fB\-X\fP, \fB\-\-xonxoff\fP +Uses software handshaking (XON/XOFF) for accessing the device. +.PP +.SH EXAMPLES +The following invocation of \fIgsmsmsd\fP sends each incoming SMS message +as a mail to the user "smsadmin": +.PP +.nf +gsmsmsd \-d /dev/ttyS2 \-b 19200 \-a "mail smsadmin" +.fi +.PP +This is the format of SMS deliver messages as output from \fIgsmsmsd\fP: +.PP +.nf +---------------------------------------------------------------- +Message type: SMS\-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '01805000102' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 17.12.98 14:10:55(+0100) +User data length: 159 +User data header: 0x +User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung lauft +noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen +Sie Ihren Teiln.-Gutschein an 0180/5000 056' +---------------------------------------------------------------- +.fi +.PP +This is the format of SMS status report messages as output from \fIgsmsmsd\fP: +.PP +.nf +---------------------------------------------------------------- +Message type: SMS\-STATUS\-REPORT +SC address: '' +More messages to send: 0 +Status report qualifier: 0 +Message reference: 0 +Recipient address: '' +SC timestamp: 00.00.00 00:00:00(+0000) +Discharge time: 00.00.00 00:00:00(+0000) +Status: 0x0 'Short message received by the SME' +---------------------------------------------------------------- +.fi +.PP +The following invocation of \fIgsmsmsd\fP flushes all existing +messages from the "SM" SMS store and looks in the "/tmp/spooldir" +directory for SMS to send: +.PP +.nf +gsmsmsd \-d /dev/ttyS2 \-\-spool /tmp/spooldir \-f \-\-store sm \\ +\-\-action 'mail smsadmin' +.fi +.PP +.SH FILES +.TP 1.4i +.B /dev/mobilephone +Default mobile phone device. +.PP +.SH AUTHOR +Peter Hofmann +.PP +.SH BUGS +Cell broadcast SMS message reception has not been tested, but it has +been enabled in the \fIgsmsmsd\fP daemon. +.PP +The mobile phone device is blocked when the \fIgsmsmsd\fP daemon is +running, ie. it cannot be used for data transfer or from the other +programs of this suite (\fIgsmpb\fP, \fIgsmsms\fP). +.PP +Report bugs to software@pxh.de. Include a complete, self-contained +example that will allow the bug to be reproduced, and say which +version of \fIgsmsmsd\fP you are using. +.PP +.SH COPYRIGHT +Copyright \(co 1999 Peter Hofmann +.LP +\fIgsmsmsd\fP is free software; you can redistribute it and/or modify it under +the terms of the GNU Library General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. +.LP +\fIgsmsmsd\fP 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 +Library General Public License for more details. +.LP +You should have received a copy of the GNU Library General Public License along +with \fIgsmsmsd\fP; see the file COPYING. If not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +.PP +.SH "SEE ALSO" +.BR gsminfo(7), +.BR gsmpb(1), +.BR gsmctl(1), +.BR gsmsendsms(1), +.BR gsmsmsstore(1). + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man new file mode 100644 index 0000000000..fb3fb9bc7f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/doc/gsmsmsstore.man @@ -0,0 +1,185 @@ +.\" -*- eval: (nroff-mode) -*- +.de TQ +.br +.ns +.TP \\$1 +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH GSMSMSSTORE 8 "##DATE##" "gsmsmsstore v##VERSION##" +.SH NAME +gsmsmsstore \- SMS store manipulation program +.SH SYNOPSIS +.B gsmsmsstore +[ \fB\-a\fP ] +[ \fB\-\-add\fP ] +[ \fB\-b\fP \fIbaudrate\fP ] +[ \fB\-\-baudrate\fP \fIbaudrate\fP ] +[ \fB\-c\fP ] +[ \fB\-\-copy\fP ] +[ \fB\-C\fP \fIservice centre address\fP ] +[ \fB\-\-sca\fP \fIservice centre address\fP ] +[ \fB\-d\fP \fIdestination device or file\fP ] +[ \fB\-\-destination\fP \fIdestination device or file\fP ] +[ \fB\-h\fP ] +[ \fB\-\-help\fP ] +[ \fB\-I\fP \fIinit string\fP ] +[ \fB\-\-init\fP \fIinit string\fP ] +[ \fB\-k\fP ] +[ \fB\-\-backup\fP ] +[ \fB\-l\fP ] +[ \fB\-\-list\fP ] +[ \fB\-s\fP \fIsource device or file\fP ] +[ \fB\-\-source\fP \fIsource device or file\fP ] +[ \fB\-t\fP \fISMS store name\fP ] +[ \fB\-\-store\fP \fISMS store name\fP ] +[ \fB\-v\fP ] +[ \fB\-\-version\fP ] +[ \fB\-V\fP ] +[ \fB\-\-verbose\fP ] +[ \fB\-x\fP ] +[ \fB\-\-delete\fP ] +[ \fB\-X\fP ] +[ \fB\-\-xonxoff\fP ] +{ \fIindices\fP } +[ \fIphonenumber\fP \fItext\fP ] +.PP +.SH DESCRIPTION +\fIgsmsmsstore\fP can store or retrieve SMS messages entries residing +in a GSM mobile phone's SMS store to or from a file, add SMS messages +to a store, or list the store's contents. Additionally, it is possible +to add SMS submit messages to a store. +.PP +\fIgsmsmsstore\fP reads entries from the source which can be a mobile +phone (if a serial device file is given) or a file (if a file name is +given). The source is never modified. \fIgsmsmsstore\fP writes SMS +messages to a destination file or device in the case of \fB\-\-copy\fP, +\fB\-\-backup\fP, and \fB\-\-add\fP. +.PP +The \fB\-\-list\fP option does not change any file but just lists the +contents to standard output. +.PP +The \fB\-\-backup\fP and \fB\-\-copy\fP options require both source and +destination files or devices. The \fB\-\-list\fP option requires a +source. The \fB\-\-add\fP and \fB\-\-delete\fP options require a +destination file or device. +.PP +If "\-" is given as the parameter for the \fB\-\-source\fP or +\fB\-\-destination\fP options, the SMS store is read from standard input +and/or written to standard output, respectively. +.PP +SMS message files are not human-readable. +.PP +Error messages are printed to the standard error output. If the program +terminates on error the error code 1 is returned. +.PP +.SH OPTIONS +.TP +\fB\-a\fP, \fB\-\-add\fP +Adds an SMS submit message with recipient address \fIphonenumber\fP and +text \fItext\fP to the destination. +.TP +\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP +The baud rate to use. The default baudrate is 38400. +.TP +\fB\-c\fP, \fB\-\-copy\fP +This causes the contents of the source to be copied to the +destination. After this operation the destination has exactly the same +contents as the source. If \fIindices\fP are given on the command +line only those SMS messages denoted by the indices are copied to the +destination. +.TP +\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP +Sets the service centre address to use for all SUBMIT SMSs (may not +work with some phones). +.TP +\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP +The destination device or file. +.TP +\fB\-h\fP, \fB\-\-help\fP +Prints an option summary. +.TP +\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP +Initialization string to send to the TA (default: "E0"). Note that the +sequence "ATZ" is sent first. +.TP +\fB\-k\fP, \fB\-\-backup\fP +This causes those entries to be added from the source to the +destination that are not already present in the destination. If +\fIindices\fP are given on the command line only those SMS messages +denoted by the indices are backed up (ie. added) to the destination. +.TP +\fB\-l\fP, \fB\-\-list\fP +Prints out the entire contents of the source in human-readable form. +.TP +\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP +The source device or file. +.TP +\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP +The name of the SMS store to read from or write to. This information is +only used for device sources and destinations. A commonly available message +store is "SM" (SIM card). +.TP +\fB\-v\fP, \fB\-\-version\fP +Prints the program version. +.TP +\fB\-V\fP, \fB\-\-verbose\fP +Prints out a detailed progress report. +.TP +\fB\-x\fP, \fB\-\-delete\fP +Delete the SMS messages as denoted by the \fIindices\fP from the destination. +.TP +\fB\-X\fP, \fB\-\-xonxoff\fP +Uses software handshaking (XON/XOFF) for accessing the device. +.PP +.SH EXAMPLES +The following command lists all entries in the mobile phone connected +to \fI/dev/mobilephone\fP to the standard output: +.PP +.nf +gsmsmsstore \-b 19200 \-s /dev/mobilephone \-t SM \-l +.fi +.PP +The following adds entries 4, 7, and 10 from the device +\fI/dev/mobilephone\fP to the file \fIsmsstore\fP: +.PP +.nf +gsmsmsstore \-s /dev/mobilephone \-d /home/fred/smsstore + \-t SM \-b 4 7 10 +.fi +.PP +.SH AUTHOR +Peter Hofmann +.PP +.SH BUGS +Report bugs to software@pxh.de. Include a complete, self-contained +example that will allow the bug to be reproduced, and say which +version of \fIgsmsmsstore\fP you are using. +.PP +.SH COPYRIGHT +Copyright \(co 1999 Peter Hofmann +.LP +\fIgsmsmsstore\fP is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2, or (at +your option) any later version. +.LP +\fIgsmsmsstore\fP 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 +Library General Public License for more details. +.LP +You should have received a copy of the GNU Library General Public License +along with \fIgsmsmsstore\fP; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +.PP +.SH "SEE ALSO" +.BR gsminfo(7), +.BR gsmctl(1), +.BR gsmpb(1), +.BR gsmsendsms(1), +.BR gsmsmsd(8). diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am new file mode 100644 index 0000000000..1c1d2fc3ce --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.am @@ -0,0 +1,40 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: Makefile for phone-specific extensions +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 16.12.2001 +# ************************************************************************* + +INCLUDES = -I.. + +EXTRA_DIST = README.sieme + +# build addon library +lib_LTLIBRARIES = libgsmext.la + +libgsmext_la_SOURCES = gsm_sie_me.cc + +libgsmext_la_LDFLAGS = -version-info $(GSM_VERSION) + +gsmincludedir = $(includedir)/gsmlib + +gsminclude_HEADERS = gsm_sie_me.h + +# build programs +bin_PROGRAMS = gsmsiectl gsmsiexfer + +# build gsmsiectl from gsmsiectl.cc and libgsmme.la +gsmsiectl_SOURCES = gsmsiectl.cc +gsmsiectl_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) + +# build gsmsiexfer from gsmsiexfer.cc and libgsmme.la +gsmsiexfer_SOURCES = gsmsiexfer.cc +gsmsiexfer_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in new file mode 100644 index 0000000000..42240fb530 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/Makefile.in @@ -0,0 +1,480 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: Makefile for phone-specific extensions +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 16.12.2001 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +INCLUDES = -I.. + +EXTRA_DIST = README.sieme + +# build addon library +lib_LTLIBRARIES = libgsmext.la + +libgsmext_la_SOURCES = gsm_sie_me.cc + +libgsmext_la_LDFLAGS = -version-info $(GSM_VERSION) + +gsmincludedir = $(includedir)/gsmlib + +gsminclude_HEADERS = gsm_sie_me.h + +# build programs +bin_PROGRAMS = gsmsiectl gsmsiexfer + +# build gsmsiectl from gsmsiectl.cc and libgsmme.la +gsmsiectl_SOURCES = gsmsiectl.cc +gsmsiectl_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) + +# build gsmsiexfer from gsmsiexfer.cc and libgsmme.la +gsmsiexfer_SOURCES = gsmsiexfer.cc +gsmsiexfer_LDADD = ../gsmlib/libgsmme.la libgsmext.la $(INTLLIBS) +subdir = ext +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + +libgsmext_la_LIBADD = +am_libgsmext_la_OBJECTS = gsm_sie_me.lo +libgsmext_la_OBJECTS = $(am_libgsmext_la_OBJECTS) +bin_PROGRAMS = gsmsiectl$(EXEEXT) gsmsiexfer$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_gsmsiectl_OBJECTS = gsmsiectl.$(OBJEXT) +gsmsiectl_OBJECTS = $(am_gsmsiectl_OBJECTS) +gsmsiectl_DEPENDENCIES = ../gsmlib/libgsmme.la libgsmext.la +gsmsiectl_LDFLAGS = +am_gsmsiexfer_OBJECTS = gsmsiexfer.$(OBJEXT) +gsmsiexfer_OBJECTS = $(am_gsmsiexfer_OBJECTS) +gsmsiexfer_DEPENDENCIES = ../gsmlib/libgsmme.la libgsmext.la +gsmsiexfer_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsm_sie_me.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsmsiectl.Po ./$(DEPDIR)/gsmsiexfer.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(libgsmext_la_SOURCES) $(gsmsiectl_SOURCES) \ + $(gsmsiexfer_SOURCES) +HEADERS = $(gsminclude_HEADERS) + +DIST_COMMON = $(gsminclude_HEADERS) Makefile.am Makefile.in +SOURCES = $(libgsmext_la_SOURCES) $(gsmsiectl_SOURCES) $(gsmsiexfer_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ext/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libLTLIBRARIES_INSTALL = $(INSTALL) +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test -z "$dir" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libgsmext.la: $(libgsmext_la_OBJECTS) $(libgsmext_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libgsmext_la_LDFLAGS) $(libgsmext_la_OBJECTS) $(libgsmext_la_LIBADD) $(LIBS) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_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 $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +gsmsiectl$(EXEEXT): $(gsmsiectl_OBJECTS) $(gsmsiectl_DEPENDENCIES) + @rm -f gsmsiectl$(EXEEXT) + $(CXXLINK) $(gsmsiectl_LDFLAGS) $(gsmsiectl_OBJECTS) $(gsmsiectl_LDADD) $(LIBS) +gsmsiexfer$(EXEEXT): $(gsmsiexfer_OBJECTS) $(gsmsiexfer_DEPENDENCIES) + @rm -f gsmsiexfer$(EXEEXT) + $(CXXLINK) $(gsmsiexfer_LDFLAGS) $(gsmsiexfer_OBJECTS) $(gsmsiexfer_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sie_me.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsiectl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsmsiexfer.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cc.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cc.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cc.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +gsmincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-gsmincludeHEADERS: $(gsminclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(gsmincludedir) + @list='$(gsminclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f"; \ + $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f; \ + done + +uninstall-gsmincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(gsminclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(gsmincludedir)/$$f"; \ + rm -f $(DESTDIR)$(gsmincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) +install-binPROGRAMS: install-libLTLIBRARIES + + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(gsmincludedir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-gsmincludeHEADERS + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-binPROGRAMS uninstall-gsmincludeHEADERS \ + uninstall-info-am uninstall-libLTLIBRARIES + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLTLIBRARIES clean-libtool distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-exec install-exec-am \ + install-gsmincludeHEADERS install-info install-info-am \ + install-libLTLIBRARIES install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-gsmincludeHEADERS \ + uninstall-info-am uninstall-libLTLIBRARIES + +# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme new file mode 100644 index 0000000000..4305ae33a2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/README.sieme @@ -0,0 +1,75 @@ +Extended support for Siemens mobile phones via gsmlib +----------------------------------------------------- + +* Hardware: + +Supported phones: S25, S35, S45, ME45, SL45 +Tested phones: S45, ME45 + +* Feature list: + + - ACM: Output ACM (accumulated call meter) and ACMmax => maybe not + + - BNR/BNW: Binary read and write => yes, xfer + + - CID: Output card ID => maybe + + - CKS: Output SIM card status => maybe + + - CNI: Output call number information => maybe + + - DBR: Database Read => yes, phonebook + + - DLD: Delete the "last number redial" memory => maybe dangerous? + + - GAUTH: Select Type of Authentication for PPP => no + + - ICO: Icon control => no + + - LCK: Switch locks on and off => yes, lock/unlock + + - LNG: Language settings => maybe + + - MGL: List SMS => no + + - MGO: SMS overflow indicator => no + + - MGR: Read SMS (same as AT+CMGR) => no + + - MSO: Switch device off => maybe not + + - NFS: Select NF hardware => maybe + + - NFV: Set the volume => maybe + + - PBC: Seek in telephone book => no + + - PBG: Sorted telephone book => yes + + - PBS: Select a telephone book => yes + + - PIC: Output PIN counter => maybe + + - PLM: Read the PLMN list => yes + + - PLR/PLW: read/write preferred-operator list => yes + + - PST: Play Signal Tone => yes + + - PWD: Change password to a lock => maybe + + - RTC: Set the ringing tone => yes + + - STK: SIM toolkit => no + + +* Additional References + +http://www.s45-world.net/vissie.htm + + +* Author and contact + +Christian W. Zuckschwerdt +http://triq.net/gsm.html + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc new file mode 100644 index 0000000000..fb22260836 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.cc @@ -0,0 +1,258 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sie_me.cc +// * +// * Purpose: Mobile Equipment/Terminal Adapter and SMS functions +// * (According to "AT command set for S45 Siemens mobile phones" +// * v1.8, 26. July 2001 - Common AT prefix is "^S") +// * +// * Author: Christian W. Zuckschwerdt +// * +// * Created: 2001-12-15 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// SieMe members + +void SieMe::init() throw(GsmException) +{ +} + +SieMe::SieMe(Ref port) throw(GsmException) : MeTa::MeTa(port) +{ + // initialize Siemens ME + + init(); +} + +vector SieMe::getSupportedPhonebooks() throw(GsmException) +{ + Parser p(_at->chat("^SPBS=?", "^SPBS:")); + return p.parseStringList(); +} + +string SieMe::getCurrentPhonebook() throw(GsmException) +{ + if (_lastPhonebookName == "") + { + Parser p(_at->chat("^SPBS?", "^SPBS:")); + // answer is e.g. ^SPBS: "SM",41,250 + _lastPhonebookName = p.parseString(); + p.parseComma(); + int _currentNumberOfEntries = p.parseInt(); + p.parseComma(); + int _maxNumberOfEntries = p.parseInt(); + } + return _lastPhonebookName; +} + +void SieMe::setPhonebook(string phonebookName) throw(GsmException) +{ + if (phonebookName != _lastPhonebookName) + { + _at->chat("^SPBS=\"" + phonebookName + "\""); + _lastPhonebookName = phonebookName; + } +} + + +IntRange SieMe:: getSupportedSignalTones() throw(GsmException) +{ + Parser p(_at->chat("^SPST=?", "^SPST:")); + // ^SPST: (0-4),(0,1) + IntRange typeRange = p.parseRange(); + p.parseComma(); + vector volumeList = p.parseIntList(); + return typeRange; +} + +void SieMe:: playSignalTone(int tone) throw(GsmException) +{ + _at->chat("^SPST=" + intToStr(tone) + ",1"); +} + +void SieMe:: stopSignalTone(int tone) throw(GsmException) +{ + _at->chat("^SPST=" + intToStr(tone) + ",0"); +} + + +IntRange SieMe::getSupportedRingingTones() throw(GsmException) // (AT^SRTC=?) +{ + Parser p(_at->chat("^SRTC=?", "^SRTC:")); + // ^SRTC: (0-42),(1-5) + IntRange typeRange = p.parseRange(); + p.parseComma(); + IntRange volumeRange = p.parseRange(); + return typeRange; +} + +int SieMe::getCurrentRingingTone() throw(GsmException) // (AT^SRTC?) +{ + Parser p(_at->chat("^SRTC?", "^SRTC:")); + // ^SRTC: 41,2,0 + int type = p.parseInt(); + p.parseComma(); + int volume = p.parseInt(); + p.parseComma(); + int ringing = p.parseInt(); + return type; +} + +void SieMe::setRingingTone(int tone, int volume) throw(GsmException) +{ + _at->chat("^SRTC=" + intToStr(tone) + "," + intToStr(volume)); +} + +void SieMe:: playRingingTone() throw(GsmException) +{ + // get ringing bool + Parser p(_at->chat("^SRTC?", "^SRTC:")); + // ^SRTC: 41,2,0 + int type = p.parseInt(); + p.parseComma(); + int volume = p.parseInt(); + p.parseComma(); + int ringing = p.parseInt(); + + if (ringing == 0) + toggleRingingTone(); +} + +void SieMe::stopRingingTone() throw(GsmException) +{ + // get ringing bool + Parser p(_at->chat("^SRTC?", "^SRTC:")); + // ^SRTC: 41,2,0 + int type = p.parseInt(); + p.parseComma(); + int volume = p.parseInt(); + p.parseComma(); + int ringing = p.parseInt(); + + if (ringing == 1) + toggleRingingTone(); +} + +void SieMe::toggleRingingTone() throw(GsmException) // (AT^SRTC) +{ + _at->chat("^SRTC"); +} + +// Siemens get supported binary read +vector SieMe::getSupportedBinaryReads() throw(GsmException) +{ + Parser p(_at->chat("^SBNR=?", "^SBNR:")); + // ^SBNR: ("bmp",(0-3)),("mid",(0-4)),("vcf",(0-500)),("vcs",(0-50)) + + return p.parseParameterRangeList(); +} + +// Siemens get supported binary write +vector SieMe::getSupportedBinaryWrites() throw(GsmException) +{ + Parser p(_at->chat("^SBNW=?", "^SBNW:")); + // ^SBNW: ("bmp",(0-3)),("mid",(0-4)),("vcf",(0-500)),("vcs",(0-50)),("t9d",(0)) + + return p.parseParameterRangeList(); +} + +// Siemens Binary Read +BinaryObject SieMe::getBinary(string type, int subtype) throw(GsmException) +{ + // expect several response lines + vector result; + result = _at->chatv("^SBNR=\"" + type + "\"," + intToStr(subtype), "^SBNR:"); + // "bmp",0,1,5 pdu "bmp",0,2,5 ... + // most likely to be PDUs of 382 chars (191 * 2) + string pdu; + int fragmentCount = 0; + for (vector::iterator i = result.begin(); i != result.end(); ++i) + { + ++fragmentCount; + // parse header + Parser p(*i); + string fragmentType = p.parseString(); + if (fragmentType != type) + throw GsmException(_("bad PDU type"), ChatError); + p.parseComma(); + int fragmentSubtype = p.parseInt(); + if (fragmentSubtype != subtype) + throw GsmException(_("bad PDU subtype"), ChatError); + p.parseComma(); + int fragmentNumber = p.parseInt(); + if (fragmentNumber != fragmentCount) + throw GsmException(_("bad PDU number"), ChatError); + p.parseComma(); + int numberOfFragments = p.parseInt(); + if (fragmentNumber > numberOfFragments) + throw GsmException(_("bad PDU number"), ChatError); + + // concat pdu fragment + ++i; + pdu += *i; + } + + BinaryObject bnr; + bnr._type = type; + bnr._subtype = subtype; + bnr._size = pdu.length() / 2; + bnr._data = new unsigned char[pdu.length() / 2]; + if (! hexToBuf(pdu, bnr._data)) + throw GsmException(_("bad hexadecimal PDU format"), ChatError); + + return bnr; +} + +// Siemens Binary Write +void SieMe::setBinary(string type, int subtype, BinaryObject obj) + throw(GsmException) +{ + if (obj._size <= 0) + throw GsmException(_("bad object"), ParameterError); + + // Limitation: The maximum pdu size is 176 bytes (or 352 characters) + // this should be a configurable field + int maxPDUsize = 176; + int numberOfPDUs = (obj._size + maxPDUsize - 1) / maxPDUsize; + unsigned char *p = obj._data; + + for (int i = 1; i <= numberOfPDUs; ++i) + { + // construct pdu + int size = maxPDUsize; + if (i == numberOfPDUs) + size = obj._size - (numberOfPDUs - 1) * maxPDUsize; + string pdu = bufToHex(p, size); + p += size; + + cout << "processing " << i << " of " << numberOfPDUs + << " of " << size << " bytes." << endl; + cout << "^SBNW=\"" + type + "\"," + intToStr(subtype) + "," + + intToStr(i) + "," + intToStr(numberOfPDUs) << endl; + cout << pdu << endl; + + _at->sendPdu("^SBNW=\"" + type + "\"," + intToStr(subtype) + "," + + intToStr(i) + "," + intToStr(numberOfPDUs), "", + pdu, true); + cout << "OK" << endl; + } +} + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h new file mode 100644 index 0000000000..2c827a0379 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsm_sie_me.h @@ -0,0 +1,99 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sie_me.h +// * +// * Purpose: Mobile Equipment/Terminal Adapter and SMS functions +// * (According to "AT command set for S45 Siemens mobile phones" +// * v1.8, 26. July 2001 - Common AT prefix is "^S") +// * +// * Author: Christian W. Zuckschwerdt +// * +// * Created: 2001-12-15 +// ************************************************************************* + +#ifndef GSM_SIE_ME_H +#define GSM_SIE_ME_H + +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // *** Siemens mobile phone binary objects (bitmap, midi, vcal, vcard) + + struct BinaryObject + { + string _type; // Object type + int _subtype; // Object subtype (storage number) + unsigned char *_data; // Object binary data + int _size; // Object data size + }; + + // *** this class allows extended access to Siemens moblie phones + + class SieMe : public MeTa + { + private: + // init ME/TA to sensible defaults + void init() throw(GsmException); + + public: + // initialize a new MeTa object given the port + SieMe(Ref port) throw(GsmException); + + + // get the current phonebook in the Siemens ME + vector getSupportedPhonebooks() throw(GsmException);// (AT^SPBS=?) + + // get the current phonebook in the Siemens ME + string getCurrentPhonebook() throw(GsmException); // (AT^SPBS?) + + // set the current phonebook in the Siemens ME + // remember the last phonebook set for optimisation + void setPhonebook(string phonebookName) throw(GsmException); // (AT^SPBS=) + + + // Siemens get supported signal tones + IntRange getSupportedSignalTones() throw(GsmException); // (AT^SPST=?) + + // Siemens set ringing tone + void playSignalTone(int tone) throw(GsmException); // (AT^SRTC=x,1) + + // Siemens set ringing tone + void stopSignalTone(int tone) throw(GsmException); // (AT^SRTC=x,0) + + + // Siemens get ringing tone + IntRange getSupportedRingingTones() throw(GsmException); // (AT^SRTC=?) + // Siemens get ringing tone + int getCurrentRingingTone() throw(GsmException); // (AT^SRTC?) + // Siemens set ringing tone + void setRingingTone(int tone, int volume) throw(GsmException);// (AT^SRTC=) + // Siemens set ringing tone on + void playRingingTone() throw(GsmException); + // Siemens set ringing tone of + void stopRingingTone() throw(GsmException); + // Siemens toggle ringing tone + void toggleRingingTone() throw(GsmException); // (AT^SRTC) + + // Siemens get supported binary read + vector getSupportedBinaryReads() throw(GsmException); + + // Siemens get supported binary write + vector getSupportedBinaryWrites() throw(GsmException); + + // Siemens Binary Read + BinaryObject getBinary(string type, int subtype) throw(GsmException); + + // Siemens Binary Write + void setBinary(string type, int subtype, BinaryObject obj) + throw(GsmException); + }; +}; + +#endif // GSM_ME_TA_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc new file mode 100644 index 0000000000..4ea92edfea --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiectl.cc @@ -0,0 +1,698 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmsiectl.cc +// * +// * Purpose: GSM Siemens mobile phone control program +// * +// * Author: Christian W. Zuckschwerdt +// * +// * Created: 2001-12-15 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#include + +using namespace std; +using namespace gsmlib; + +// my ME + +static SieMe *m; + +// information parameters + +enum InfoParameter {AllInfo, // print all info + MeInfo, // MeInfo must be first! + OperatorInfo, + CurrentOperatorInfo, + FacilityLockStateInfo, + FacilityLockCapabilityInfo, + PasswordInfo, + CLIPInfo, + CallForwardingInfo, + BatteryInfo, + BitErrorInfo, + SCAInfo, + CharSetInfo, + PhonebookInfo, // extended Siemens info + SignalToneInfo, + RingingToneInfo, + BinaryInfo, + SignalInfo}; // SignalInfo must be last! + +// operation parameters + +// FIXME operations not implemented yet + +// options + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"operation", required_argument, (int*)NULL, 'o'}, + {"device", required_argument, (int*)NULL, 'd'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +// helper function, prints forwarding info + +void printForwardReason(string s, ForwardInfo &info) +{ + cout << s << " " + << (info._active ? _("active ") : _("inactive ")) + << _("number: ") << info._number + << _(" subaddr: ") << info._subAddr + << _(" time: ") << info._time << endl; +} + +// helper function, prints integer range + +void printIntRange(IntRange ir) +{ + cout << "(" << ir._low; + if (ir._high != NOT_SET) + cout << "-" << ir._high; + cout << ")"; +} + +// helper function, prints parameter range + +void printParameterRange(ParameterRange pr) +{ + cout << "(\"" << pr._parameter << "\","; + printIntRange(pr._range); + cout << ")"; +} + +// print information + +static void printInfo(InfoParameter ip) +{ + switch (ip) + { + case MeInfo: + { + MEInfo mei = m->getMEInfo(); + cout << _(" Manufacturer: ") << mei._manufacturer << endl + << _(" Model: ") << mei._model << endl + << _(" Revision: ") << mei._revision << endl + << _(" Serial Number: ") << mei._serialNumber << endl; + break; + } + case OperatorInfo: + { + int count = 0; + vector opis = m->getAvailableOPInfo(); + for (vector::iterator i = opis.begin(); i != opis.end(); ++i) + { + cout << " Status: "); + switch (i->_status) + { + case UnknownOPStatus: cout << _("unknown"); break; + case CurrentOPStatus: cout << _("current"); break; + case AvailableOPStatus: cout << _("available"); break; + case ForbiddenOPStatus: cout << _("forbidden"); break; + } + cout << _(" Long name: '") << i->_longName << "' " + << _(" Short name: '") << i->_shortName << "' " + << _(" Numeric name: ") << i->_numericName << endl; + ++count; + } + break; + } + case CurrentOperatorInfo: + { + OPInfo opi = m->getCurrentOPInfo(); + cout << "" + << _(" Long name: '") << opi._longName << "' " + << _(" Short name: '") << opi._shortName << "' " + << _(" Numeric name: ") << opi._numericName + << _(" Mode: "); + switch (opi._mode) + { + case AutomaticOPMode: cout << _("automatic"); break; + case ManualOPMode: cout << _("manual"); break; + case DeregisterOPMode: cout << _("deregister"); break; + case ManualAutomaticOPMode: cout << _("manual/automatic"); break; + } + cout << endl; + break; + } + case FacilityLockStateInfo: + { + int count = 0; + vector fclc = m->getFacilityLockCapabilities(); + for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) + if (*i != "AB" && *i != "AG" && *i != "AC") + { + cout << " '" << *i << "'"; + try + { + if (m->getFacilityLockStatus(*i, VoiceFacility)) + cout << _(" Voice"); + } + catch (GsmException &e) + { + cout << _(" unknown"); + } + try + { + if (m->getFacilityLockStatus(*i, DataFacility)) + cout << _(" Data"); + } + catch (GsmException &e) + { + cout << _(" unknown"); + } + try + { + if (m->getFacilityLockStatus(*i, FaxFacility)) + cout << _(" Fax"); + } + catch (GsmException &e) + { + cout << _(" unknown"); + } + cout << endl; + ++count; + } + break; + } + case FacilityLockCapabilityInfo: + { + cout << " "; + vector fclc = m->getFacilityLockCapabilities(); + for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) + cout << "'" << *i << "' "; + cout << endl; + break; + } + case PasswordInfo: + { + vector pwi = m->getPasswords(); + int count = 0; + for (vector::iterator i = pwi.begin(); i != pwi.end(); ++i) + { + cout << " '" + << i->_facility << "' " << i->_maxPasswdLen << endl; + ++count; + } + break; + } + case CLIPInfo: + { + cout << " " << (m->getNetworkCLIP() ? _("on") : _("off")) << endl; + break; + } + case CallForwardingInfo: + { + for (int r = 0; r < 4; ++r) + { + string text; + switch (r) + { + case 0: text = _("UnconditionalReason"); break; + case 1: text = _("MobileBusyReason"); break; + case 2: text = _("NoReplyReason"); break; + case 3: text = _("NotReachableReason"); break; + } + ForwardInfo voice, fax, data; + m->getCallForwardInfo((ForwardReason)r, voice, fax, data); + cout << " " + text + _(" Voice"), voice); + cout << " " + text + _(" Data"), data); + cout << " " + text + _(" Fax"), fax); + } + break; + } + case BatteryInfo: + { + cout << " "; + int bcs = m->getBatteryChargeStatus(); + switch (bcs) + { + case 0: cout << _("0 ME is powered by the battery") << endl; break; + case 1: cout << _("1 ME has a battery connected, but is not powered by it") + << endl; break; + case 2: cout << _("2 ME does not have a battery connected") << endl; break; + case 3: + cout << _("3 Recognized power fault, calls inhibited") << endl; + break; + } + cout << " " << m->getBatteryCharge() << endl; + break; + } + case BitErrorInfo: + { + cout << " " << m->getBitErrorRate() << endl; + break; + } + case SCAInfo: + { + cout << " " << m->getServiceCentreAddress() << endl; + break; + } + case CharSetInfo: + { + cout << " "; + vector cs = m->getSupportedCharSets(); + for (vector::iterator i = cs.begin(); i != cs.end(); ++i) + cout << "'" << *i << "' "; + cout << endl; + cout << " '" << m->getCurrentCharSet() << "'" << endl; + break; + } + case SignalInfo: + { + cout << " " << m->getSignalStrength() << endl; + break; + } + case PhonebookInfo: + { + cout << " "; + vector pb = m->getSupportedPhonebooks(); + for (vector::iterator i = pb.begin(); i != pb.end(); ++i) + cout << "'" << *i << "' "; + cout << endl; + cout << " '" << m->getCurrentPhonebook() << "'" << endl; + break; + } + case SignalToneInfo: + { + cout << " "; + IntRange st = m->getSupportedSignalTones(); + printIntRange(st); + cout << endl; +// cout << " '" << m->getCurrentSignalTone() << "'" << endl; + break; + } + case RingingToneInfo: + { + cout << " "; + IntRange rt = m->getSupportedRingingTones(); + printIntRange(rt); + cout << endl; + cout << " " << m->getCurrentRingingTone() << endl; + break; + } + case BinaryInfo: + { + cout << " "; + vector bnr = m->getSupportedBinaryReads(); + for (vector::iterator i = bnr.begin(); i != bnr.end(); ++i) + { + printParameterRange(*i); + cout << " "; + } + cout << endl; + cout << " "; + vector bnw = m->getSupportedBinaryWrites(); + for (vector::iterator i = bnw.begin(); i != bnw.end(); ++i) + { + printParameterRange(*i); + cout << " "; + } + cout << endl; + break; + } + default: + assert(0); + break; + } +} + +// convert facility class string of the form "", "all", or any combination +// of "v" (voice), "d" (data), or "f" (fax) to numeric form + +FacilityClass strToFacilityClass(string facilityClassS) +{ + facilityClassS = lowercase(facilityClassS); + FacilityClass facilityClass = (FacilityClass)0; + if (facilityClassS == "all" || facilityClassS == "") + return (FacilityClass)ALL_FACILITIES; + + // OR in facility class bits + for (unsigned int i = 0; i < facilityClassS.length(); ++i) + if (facilityClassS[i] == 'v') + facilityClass = (FacilityClass)(facilityClass | VoiceFacility); + else if (facilityClassS[i] == 'd') + facilityClass = (FacilityClass)(facilityClass | DataFacility); + else if (facilityClassS[i] == 'f') + facilityClass = (FacilityClass)(facilityClass | FaxFacility); + else + throw GsmException( + stringPrintf(_("unknown facility class parameter '%c'"), + facilityClassS[i]), ParameterError); + + return facilityClass; +} + +// check if argc - optind is in range min..max +// throw exception otherwise + +void checkParamCount(int optind, int argc, int min, int max) +{ + int paramCount = argc - optind; + if (paramCount < min) + throw GsmException(stringPrintf(_("not enough parameters, minimum number " + "of parameters is %d"), min), + ParameterError); + else if (paramCount > max) + throw GsmException(stringPrintf(_("too many parameters, maximum number " + "of parameters is %d"), max), + ParameterError); +} + +// *** main program + +int main(int argc, char *argv[]) +{ + try + { + // handle command line options + string device = "/dev/mobilephone"; + string operation; + string baudrate; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "I:o:d:b:hvX", longOpts, &dummy)) + != -1) + switch (opt) + { + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 'd': + device = optarg; + break; + case 'o': + operation = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-b baudrate][-d device][-h]" + "[-I init string][-o operation]\n" + " [-v][-X]{parameters}") << endl + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -d, --device sets the destination device to " + "connect to") << endl + << _(" -h, --help prints this message") << endl + << _(" -I, --init device AT init sequence") << endl + << _(" -o, --operation operation to perform on the mobile \n" + " phone with the specified parameters") + << endl + << _(" -v, --version prints version and exits") << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << endl + << _(" parameters parameters to use for the operation\n" + " (if an operation is given) or\n" + " a specification which kind of\n" + " information to read from the mobile " + "phone") + << endl << endl + << _("Refer to gsmctl(1) for details on the available parameters" + " and operations.") + << endl << endl; + exit(0); + break; + case '?': + throw GsmException(_("unknown option"), ParameterError); + break; + } + + // open the port and ME/TA + m = new SieMe(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (device, + baudrate == "" ? + DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), + initString, swHandshake)); + + if (operation == "") + { // process info parameters + for (int i = optind; i < argc; ++i) + { + string param = lowercase(argv[i]); + if (param == "all") + for (int ip = MeInfo; ip <= SignalInfo; ++ip) + printInfo((InfoParameter)ip); + else if (param == "me") + printInfo(MeInfo); + else if (param == "op") + printInfo(OperatorInfo); + else if (param == "currop") + printInfo(CurrentOperatorInfo); + else if (param == "flstat") + printInfo(FacilityLockStateInfo); + else if (param == "flcap") + printInfo(FacilityLockCapabilityInfo); + else if (param == "pw") + printInfo(PasswordInfo); + else if (param == "clip") + printInfo(CLIPInfo); + else if (param == "forw") + printInfo(CallForwardingInfo); + else if (param == "batt") + printInfo(BatteryInfo); + else if (param == "biterr") + printInfo(BitErrorInfo); + else if (param == "sig") + printInfo(SignalInfo); + else if (param == "sca") + printInfo(SCAInfo); + else if (param == "cset") + printInfo(CharSetInfo); + else if (param == "pbook") + printInfo(PhonebookInfo); + else if (param == "signal") + printInfo(SignalToneInfo); + else if (param == "ring") + printInfo(RingingToneInfo); + else if (param == "binary") + printInfo(BinaryInfo); + else + throw GsmException( + stringPrintf(_("unknown information parameter '%s'"), + param.c_str()), + ParameterError); + } + } + else + { // process operation + operation = lowercase(operation); + if (operation == "dial") + { + // dial: number + checkParamCount(optind, argc, 1, 1); + + m->dial(argv[optind]); + + // wait for keypress from stdin + char c; + read(1, &c, 1); + } + else if (operation == "setop") + { + // setop: opmode numeric FIXME allow long and numeric too + checkParamCount(optind, argc, 2, 2); + string opmodeS = lowercase(argv[optind]); + OPModes opmode; + if (opmodeS == "automatic") + opmode = AutomaticOPMode; + else if (opmodeS == "manual") + opmode = ManualOPMode; + else if (opmodeS == "deregister") + opmode = DeregisterOPMode; + else if (opmodeS == "manualautomatic") + opmode = ManualAutomaticOPMode; + else + throw GsmException(stringPrintf(_("unknown opmode parameter '%s'"), + opmodeS.c_str()), ParameterError); + + m->setCurrentOPInfo(opmode, "" , "", checkNumber(argv[optind + 1])); + } + else if (operation == "lock") + { + // lock: facility [facilityclass] [passwd] + checkParamCount(optind, argc, 1, 3); + string passwd = (argc - optind == 3) ? + (string)argv[optind + 2] : (string)""; + + m->lockFacility(argv[optind], + (argc - optind >= 2) ? + strToFacilityClass(argv[optind + 1]) : + (FacilityClass)ALL_FACILITIES, + passwd); + } + else if (operation == "unlock") + { + // unlock: facility [facilityclass] [passwd] + checkParamCount(optind, argc, 1, 3); + string passwd = argc - optind == 3 ? argv[optind + 2] : ""; + + m->unlockFacility(argv[optind], + (argc - optind >= 2) ? + strToFacilityClass(argv[optind + 1]) : + (FacilityClass)ALL_FACILITIES, + passwd); + } + else if (operation == "setpw") + { + // set password: facility oldpasswd newpasswd + checkParamCount(optind, argc, 1, 3); + string oldPasswd = argc - optind >= 2 ? argv[optind + 1] : ""; + string newPasswd = argc - optind == 3 ? argv[optind + 2] : ""; + + m->setPassword(argv[optind], oldPasswd, newPasswd); + } + else if (operation == "forw") + { + // call forwarding: mode reason number [facilityclass] [forwardtime] + checkParamCount(optind, argc, 2, 5); + + // get optional parameters facility class and forwardtime + int forwardTime = argc - optind == 5 ? checkNumber(argv[optind + 4]) : + NOT_SET; + FacilityClass facilityClass = + argc - optind >= 4 ? strToFacilityClass(argv[optind + 3]) : + (FacilityClass)ALL_FACILITIES; + + // get forward reason + string reasonS = lowercase(argv[optind + 1]); + ForwardReason reason; + if (reasonS == "unconditional") + reason = UnconditionalReason; + else if (reasonS == "mobilebusy") + reason = MobileBusyReason; + else if (reasonS == "noreply") + reason = NoReplyReason; + else if (reasonS == "notreachable") + reason = NotReachableReason; + else if (reasonS == "all") + reason = AllReasons; + else if (reasonS == "allconditional") + reason = AllConditionalReasons; + else + throw GsmException( + stringPrintf(_("unknown forward reason parameter '%s'"), + reasonS.c_str()), ParameterError); + + // get mode + string modeS = lowercase(argv[optind]); + ForwardMode mode; + if (modeS == "disable") + mode = DisableMode; + else if (modeS == "enable") + mode = EnableMode; + else if (modeS == "register") + mode = RegistrationMode; + else if (modeS == "erase") + mode = ErasureMode; + else + throw GsmException( + stringPrintf(_("unknown forward mode parameter '%s'"), + modeS.c_str()), ParameterError); + + m->setCallForwarding(reason, mode, + (argc - optind >= 3) ? argv[optind + 2] : "", + "", // subaddr + facilityClass, forwardTime); + } + else if (operation == "setsca") + { + // set sca: number + checkParamCount(optind, argc, 1, 1); + m->setServiceCentreAddress(argv[optind]); + } + else if (operation == "cset") + { + // set charset: string + checkParamCount(optind, argc, 1, 1); + m->setCharSet(argv[optind]); + } + else if (operation == "signal") + { + // play signal tone: int + checkParamCount(optind, argc, 1, 1); + int tone = atoi(argv[optind]); + m->playSignalTone(tone); + } + else if (operation == "setrt") + { + // set ringing tone: int int + checkParamCount(optind, argc, 2, 2); + int tone = atoi(argv[optind]); + int volume = atoi(argv[optind + 1]); + m->setRingingTone(tone, volume); + } + else if (operation == "playrt") + { + // play/stop ringing tone + m->toggleRingingTone(); + } + else + throw GsmException(stringPrintf(_("unknown operation '%s'"), + operation.c_str()), ParameterError); + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc new file mode 100644 index 0000000000..90fce1f471 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/ext/gsmsiexfer.cc @@ -0,0 +1,292 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsmsiexfer.cc +// * +// * Purpose: Siemens ME file transfer program +// * +// * Author: Christian W. Zuckschwerdt +// * +// * Created: 2001-12-16 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#if defined(HAVE_GETOPT_LONG) || defined(WIN32) +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +#ifdef HAVE_GETOPT_LONG +static struct option longOpts[] = +{ + {"xonxoff", no_argument, (int*)NULL, 'X'}, + {"init", required_argument, (int*)NULL, 'I'}, + {"destination", required_argument, (int*)NULL, 'd'}, + {"source", required_argument, (int*)NULL, 's'}, + {"baudrate", required_argument, (int*)NULL, 'b'}, + {"type", required_argument, (int*)NULL, 't'}, + {"subtype", required_argument, (int*)NULL, 'i'}, + {"help", no_argument, (int*)NULL, 'h'}, + {"version", no_argument, (int*)NULL, 'v'}, + {"verbose", no_argument, (int*)NULL, 'V'}, + {(char*)NULL, 0, (int*)NULL, 0} +}; +#else +#define getopt_long(argc, argv, options, longopts, indexptr) \ + getopt(argc, argv, options) +#endif + +// I f*ck up this file IO thing. + +// read binary object from stdin +BinaryObject readBinaryFile(istream &ifs, string filename) +{ + size_t size = 10000; // Bad coder, no biscuits! + BinaryObject bnr; + bnr._data = new unsigned char[size]; + ifs.read((char*)bnr._data, size); + bnr._size = ifs.gcount(); + return bnr; +} + +// read binary object from file +BinaryObject readFile(string filename) +{ + // open the file + ifstream ifs(filename.c_str()); + if (ifs.bad()) + throw GsmException(stringPrintf(_("cannot open file '%s'"), + filename.c_str()), + OSError); + // and read the file + return readBinaryFile(ifs, filename); +} + +// read binary object from stdin +BinaryObject readFile(bool fromStdin) +{ + // read from stdin +// if (fromStdin) + return readBinaryFile(cin, (string)_("")); +} + +// write binary object to file +void writeBinaryFile(ostream &ofs, string filename, BinaryObject bnw) +{ + // well just dump the data + ofs.write((char*)bnw._data, bnw._size); +} + +// write binary object +void writeFile(string filename, BinaryObject obj) +{ + // open the file + ofstream ofs(filename.c_str()); + if (ofs.bad()) + throw GsmException(stringPrintf(_("cannot open file '%s'"), + filename.c_str()), + OSError); + // and read the file + writeBinaryFile(ofs, filename, obj); +} + +// write binary object to stdout +void writeFile(bool toStdout, BinaryObject obj) +{ +// if (toStdout) + writeBinaryFile(cout, (string)_(""), obj); +} + +// *** main program + +int main(int argc, char *argv[]) +{ + try + { + // handle command line options + string destination; + string source; + string baudrate; + string type; + string subtype; + int subtypeN; + bool verbose = false; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + Ref sourceMeTa, destMeTa; + BinaryObject sourceObject; + + int opt; + int dummy; + while((opt = getopt_long(argc, argv, "XI:s:d:b:hvVt:i:", longOpts, + &dummy)) + != -1) + switch (opt) + { + case 'X': + swHandshake = true; + break; + case 'I': + initString = optarg; + break; + case 'V': + verbose = true; + break; + case 't': + type = optarg; + break; + case 'i': + subtype = optarg; + subtypeN = atoi(optarg); + break; + case 'd': + destination = optarg; + break; + case 's': + source = optarg; + break; + case 'b': + baudrate = optarg; + break; + case 'v': + cerr << argv[0] << stringPrintf(_(": version %s [compiled %s]"), + VERSION, __DATE__) << endl; + exit(0); + break; + case 'h': + cerr << argv[0] << _(": [-b baudrate][-c][-d device or file][-h]" + "[-I init string]\n" + " [-p phonebook name][-s device or file]" + "[-t charset][-v]" + "[-V][-y][-X]") << endl + << endl + << _(" -b, --baudrate baudrate to use for device " + "(default: 38400)") + << endl + << _(" -c, --copy copy source entries to destination") + << endl + << _(" -d, --destination sets the destination device to " + "connect \n" + " to, or the file to write") << endl + << _(" -D, --destination-backend sets the destination backend") + << endl + << _(" -h, --help prints this message") << endl + << _(" -i, --index takes index positions into account") + << endl + << _(" -I, --init device AT init sequence") << endl + << _(" -p, --phonebook name of phonebook to use") << endl + << _(" -s, --source sets the source device to connect to,\n" + " or the file to read") << endl + << _(" -t, --charset sets the character set to use for\n" + " phonebook entries") << endl + << _(" -S, --source-backend sets the source backend") + << endl + << _(" -v, --version prints version and exits") << endl + << _(" -V, --verbose print detailed progress messages") + << endl + << _(" -X, --xonxoff switch on software handshake") << endl + << _(" -y, --synchronize synchronize destination with source\n" + " entries (destination is overwritten)\n" + " (see gsmpb(1) for details)") + << endl << endl; + exit(0); + break; + case '?': + throw GsmException(_("unknown option"), ParameterError); + break; + } + + // check if all parameters all present + if (destination == "" || source == "") + throw GsmException(_("both source and destination must be given"), + ParameterError); + + // start accessing source mobile phone or file + if (source == "-") + sourceObject = readFile(true); + else if (isFile(source)) + sourceObject = readFile(source); + else + { + if (type == "") + throw GsmException(_("type be given"), ParameterError); + if (subtype == "") + throw GsmException(_("subtype be given"), ParameterError); + + sourceMeTa = new SieMe(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (source, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), initString, + swHandshake)); + sourceObject = sourceMeTa->getBinary(type, subtypeN); + } + + // make sure destination.c_str file exists + if (destination != "") + { + try + { + ofstream f(destination.c_str(), ios::out | ios::app); + } + catch (exception) + { + } + } + + // start accessing destination mobile phone or file + if (destination == "-") + writeFile(true, sourceObject); + else if (isFile(destination)) + writeFile(destination, sourceObject); + else + { + if (type == "") + throw GsmException(_("type must be given"), ParameterError); + if (subtype == "") + throw GsmException(_("subtype must be given"), ParameterError); + + destMeTa = new SieMe(new +#ifdef WIN32 + Win32SerialPort +#else + UnixSerialPort +#endif + (destination, + baudrate == "" ? DEFAULT_BAUD_RATE : + baudRateStrToSpeed(baudrate), initString, + swHandshake)); + destMeTa->setBinary(type, subtypeN, sourceObject); + } + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch new file mode 100644 index 0000000000..4c33e6a7d2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/g41.patch @@ -0,0 +1,29 @@ +--- ./gsmlib/gsm_me_ta.h~ 2006-03-09 19:15:59.000000000 +0000 ++++ ./gsmlib/gsm_me_ta.h 2006-03-09 19:16:31.000000000 +0000 +@@ -291,8 +291,8 @@ + // 3 disable phone receive RF circuits only + // 4 disable phone both transmit and receive RF circuits + // 5...127 implementation-defined +- int MeTa::getFunctionalityLevel() throw(GsmException); +- void MeTa::setFunctionalityLevel(int level) throw(GsmException); ++ int getFunctionalityLevel() throw(GsmException); ++ void setFunctionalityLevel(int level) throw(GsmException); + + // return battery charge status (+CBC): + // 0 ME is powered by the battery +@@ -386,13 +386,13 @@ + void setCallWaitingLockStatus(FacilityClass cl, + bool lock)throw(GsmException); + +- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); ++ void setCLIRPresentation(bool enable) throw(GsmException); + //(+CLIR) + + // 0:according to the subscription of the CLIR service + // 1:CLIR invocation + // 2:CLIR suppression +- int MeTa::getCLIRPresentation() throw(GsmException); ++ int getCLIRPresentation() throw(GsmException); + + friend class Phonebook; + friend class SMSStore; diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in new file mode 100644 index 0000000000..4ed31e1464 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsm_config.h.in @@ -0,0 +1,344 @@ +/* gsm_config.h.in. Generated from configure.in by autoheader. */ +/* used by libtool*/ +#define PACKAGE 0 + +/* used by libtool*/ +#define VERSION 0 + +/* Define if getopt_long() available */ +#undef HAVE_GETOPT_LONG + +/* Define if alarm() available */ +#undef HAVE_ALARM + +/* Define if netinet/in.h header available */ +#undef HAVE_NETINET_IN_H + +/* Define if string.h header available */ +#undef HAVE_STRING_H + +/* Define for NLS */ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY + +/* Define LOCALEDIR */ +#define LOCALEDIR "/usr/share/locale" + +/* Define if libintl.h header available */ +#undef HAVE_LIBINTL_H + +/* Define if vsnprintf() function available */ +#undef HAVE_VSNPRINTF + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_FEOF_UNLOCKED + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FGETS_UNLOCKED + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_GETC_UNLOCKED + +/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNPRINTF + +/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNWPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `fwprintf' function. */ +#undef HAVE_FWPRINTF + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define if you have the 'intmax_t' type in or . */ +#undef HAVE_INTMAX_T + +/* Define if exists and doesn't clash with . */ +#undef HAVE_INTTYPES_H + +/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `intl' library (-lintl). */ +#undef HAVE_LIBINTL + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the 'long double' type. */ +#undef HAVE_LONG_DOUBLE + +/* Define if you have the 'long long' type. */ +#undef HAVE_LONG_LONG + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define if your printf() function supports format strings with positions. */ +#undef HAVE_POSIX_PRINTF + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* 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 `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_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 you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define if you have the 'uintmax_t' type in or . */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the 'unsigned long long' type. */ +#undef HAVE_UNSIGNED_LONG_LONG + +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define to 1 if you have the `wcslen' function. */ +#undef HAVE_WCSLEN + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* Define to 1 if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define to 1 if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define to 1 if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define to 1 if you have the `__fsetlocking' function. */ +#undef HAVE___FSETLOCKING + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE + +/* 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 + +/* Define if exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + +/* The size of a `unsigned int', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_INT + +/* The size of a `unsigned long int', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG_INT + +/* The size of a `unsigned short int', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_SHORT_INT + +/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#undef SIZE_MAX + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* 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 as the type of the result of subtracting two pointers, if the system + doesn't define it. */ +#undef ptrdiff_t + +/* Define to empty if the C compiler doesn't support this keyword. */ +#undef signed + +/* Define to `unsigned' if does not define. */ +#undef size_t + +/* Define to unsigned long or unsigned long long if and + don't define. */ +#undef uintmax_t diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs new file mode 100644 index 0000000000..7bc765edd6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.dirs @@ -0,0 +1,11 @@ +var/spool/sms/queue1 +var/spool/sms/queue2 +var/spool/sms/queue3 +var/spool/sms/sent1 +var/spool/sms/sent2 +var/spool/sms/sent3 +var/spool/sms/failed1 +var/spool/sms/failed2 +var/spool/sms/failed3 +var/spool/sms/tmp +var/run/gsm-utils diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst new file mode 100644 index 0000000000..cc623b611b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.postinst @@ -0,0 +1,28 @@ +#!/bin/sh -e + +# create gsmsms group if necessary. +if ! grep -q ^gsmsms: /etc/group; then +# echo Adding system group: gsmsms. + addgroup gsmsms +fi + +# create gsmsms user if necessary. +if ! grep -q ^gsmsms: /etc/passwd; then +# echo Adding system user: gsmsms. + adduser --system --ingroup gsmsms \ + --no-create-home --home /var/spool/sms gsmsms +fi + +# allow gsmsms to use serial lines +if ! groups gsmsms | grep -q dialout ; then + adduser gsmsms dialout +fi + +# echo Updating spool directory structure: /var/spool/sms +chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils +chmod 700 /var/spool/sms/* +chmod 750 /var/spool/sms +chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp + +# Add the rest automatically.. +#DEBHELPER# diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm new file mode 100644 index 0000000000..34c947e93e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.prerm @@ -0,0 +1,7 @@ +#!/bin/sh -e + +deluser gsmsms || true +delgroup gsmsms || true + +# Add the rest automatically.. +#DEBHELPER# diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented new file mode 100644 index 0000000000..62d096021d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib-1.10.debmg/debian/gsm-utils.undocumented @@ -0,0 +1,2 @@ +gsmsmsspool.1 +gsmsmsrequeue.8 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec new file mode 100644 index 0000000000..c262954cc5 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib.spec @@ -0,0 +1,92 @@ +%define LIBVER 1.0.4 +Summary: Library to access GSM mobile phones through GSM modems +Name: gsmlib +Version: 1.10 +Release: 1 +Source: gsmlib-%{version}.tar.gz +Group: System Environment/Libraries +Copyright: GNU LIBRARY GENERAL PUBLIC LICENSE +URL: http://www.pxh.de/fs/gsmlib/ +Vendor: Peter Hofmann +Buildroot: /var/tmp/gsmlib-root + +%package devel +Summary: Development tools for programs which will use the gsmlib library. +Group: Development/Libraries +Requires: gsmlib + +%package ext +Summary: Extensions to gsmlib to support non-standard phone features. +Group: Development/Libraries +Requires: gsmlib + +%description +This distribution contains a library to access +GSM mobile phones through GSM modems. Features include: + * modification of phonebooks stored in the + mobile phone or on the SIM card + * reading and writing of SMS messages stored in + the mobile phone + * sending and reception of SMS messages +Additionally, some simple command line programs are +provided to use these functionalities. + +%description devel +The gsmlib-devel package includes the header files and static libraries +necessary for developing programs which use the gsmlib library. + +%description ext +The extension package of gsmlib contains programs, libraries, and +documentation to support non-standard features of GSM phones. The +following phones/phone types are currently supported: + * Siemens GSM phones + +%prep +%setup + +%build +CXXFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr +make + +%install +make DESTDIR="$RPM_BUILD_ROOT" install + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root) +/usr/lib/libgsmme.so +/usr/lib/libgsmme.so.%{LIBVER} +/usr/bin/gsmsmsstore +/usr/bin/gsmctl +/usr/bin/gsmsmsd +/usr/bin/gsmpb +/usr/bin/gsmsendsms +/usr/man/man1/gsmctl.1.gz +/usr/man/man7/gsminfo.7.gz +/usr/man/man1/gsmpb.1.gz +/usr/man/man1/gsmsendsms.1.gz +/usr/man/man8/gsmsmsd.8.gz +/usr/man/man1/gsmsmsstore.1.gz +/usr/share/locale/de/LC_MESSAGES/gsmlib.mo + +%doc README INSTALL ABOUT-NLS AUTHORS COPYING NEWS TODO +%doc doc/README.NLS doc/README.developers doc/FAQ ChangeLog + +%files devel +%defattr(-,root,root) +/usr/lib/libgsmme.a +/usr/include/gsmlib + +%files ext +/usr/bin/gsmsiectl +/usr/bin/gsmsiexfer +/usr/lib/libgsmext.so +/usr/lib/libgsmext.so.%{LIBVER} + +%doc ext/README.sieme diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am new file mode 100644 index 0000000000..12d6948c52 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.am @@ -0,0 +1,38 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: GSM library Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 5.5.1999 +# ************************************************************************* + +INCLUDES = -I.. + +lib_LTLIBRARIES = libgsmme.la + +libgsmme_la_SOURCES = gsm_phonebook.cc gsm_util.cc gsm_unix_serial.cc \ + gsm_me_ta.cc gsm_at.cc gsm_error.cc gsm_parser.cc \ + gsm_sms.cc gsm_sms_codec.cc gsm_sms_store.cc \ + gsm_event.cc gsm_sorted_phonebook.cc \ + gsm_sorted_sms_store.cc gsm_nls.cc \ + gsm_sorted_phonebook_base.cc gsm_cb.cc + +gsmincludedir = $(includedir)/gsmlib + +gsminclude_HEADERS = gsm_at.h gsm_parser.h gsm_sms.h gsm_unix_serial.h \ + gsm_error.h gsm_phonebook.h gsm_sms_codec.h \ + gsm_util.h gsm_me_ta.h gsm_port.h gsm_sms_store.h \ + gsm_event.h gsm_sorted_phonebook.h \ + gsm_sorted_sms_store.h gsm_map_key.h \ + gsm_sorted_phonebook_base.h gsm_cb.h + +noinst_HEADERS = gsm_nls.h gsm_sysdep.h + +libgsmme_la_LDFLAGS = -version-info $(GSM_VERSION) + +EXTRA_DIST = gsm_win32_serial.h gsm_win32_serial.cc diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in new file mode 100644 index 0000000000..5e1f2477cb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/Makefile.in @@ -0,0 +1,461 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: GSM library Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 5.5.1999 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +INCLUDES = -I.. + +lib_LTLIBRARIES = libgsmme.la + +libgsmme_la_SOURCES = gsm_phonebook.cc gsm_util.cc gsm_unix_serial.cc \ + gsm_me_ta.cc gsm_at.cc gsm_error.cc gsm_parser.cc \ + gsm_sms.cc gsm_sms_codec.cc gsm_sms_store.cc \ + gsm_event.cc gsm_sorted_phonebook.cc \ + gsm_sorted_sms_store.cc gsm_nls.cc \ + gsm_sorted_phonebook_base.cc gsm_cb.cc + + +gsmincludedir = $(includedir)/gsmlib + +gsminclude_HEADERS = gsm_at.h gsm_parser.h gsm_sms.h gsm_unix_serial.h \ + gsm_error.h gsm_phonebook.h gsm_sms_codec.h \ + gsm_util.h gsm_me_ta.h gsm_port.h gsm_sms_store.h \ + gsm_event.h gsm_sorted_phonebook.h \ + gsm_sorted_sms_store.h gsm_map_key.h \ + gsm_sorted_phonebook_base.h gsm_cb.h + + +noinst_HEADERS = gsm_nls.h gsm_sysdep.h + +libgsmme_la_LDFLAGS = -version-info $(GSM_VERSION) + +EXTRA_DIST = gsm_win32_serial.h gsm_win32_serial.cc +subdir = gsmlib +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + +libgsmme_la_LIBADD = +am_libgsmme_la_OBJECTS = gsm_phonebook.lo gsm_util.lo gsm_unix_serial.lo \ + gsm_me_ta.lo gsm_at.lo gsm_error.lo gsm_parser.lo gsm_sms.lo \ + gsm_sms_codec.lo gsm_sms_store.lo gsm_event.lo \ + gsm_sorted_phonebook.lo gsm_sorted_sms_store.lo gsm_nls.lo \ + gsm_sorted_phonebook_base.lo gsm_cb.lo +libgsmme_la_OBJECTS = $(am_libgsmme_la_OBJECTS) + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsm_at.Plo ./$(DEPDIR)/gsm_cb.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_error.Plo ./$(DEPDIR)/gsm_event.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_me_ta.Plo ./$(DEPDIR)/gsm_nls.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_parser.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_phonebook.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sms.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sms_codec.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sms_store.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sorted_phonebook.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sorted_phonebook_base.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_sorted_sms_store.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_unix_serial.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/gsm_util.Plo +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(libgsmme_la_SOURCES) +HEADERS = $(gsminclude_HEADERS) $(noinst_HEADERS) + +DIST_COMMON = $(gsminclude_HEADERS) $(noinst_HEADERS) Makefile.am \ + Makefile.in +SOURCES = $(libgsmme_la_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu gsmlib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libLTLIBRARIES_INSTALL = $(INSTALL) +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test -z "$dir" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libgsmme.la: $(libgsmme_la_OBJECTS) $(libgsmme_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libgsmme_la_LDFLAGS) $(libgsmme_la_OBJECTS) $(libgsmme_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_at.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_cb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_event.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_me_ta.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_nls.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_parser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_phonebook.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sms.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sms_codec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sms_store.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sorted_phonebook.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sorted_phonebook_base.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_sorted_sms_store.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_unix_serial.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsm_util.Plo@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cc.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cc.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cc.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +gsmincludeHEADERS_INSTALL = $(INSTALL_HEADER) +install-gsmincludeHEADERS: $(gsminclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(gsmincludedir) + @list='$(gsminclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f"; \ + $(gsmincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(gsmincludedir)/$$f; \ + done + +uninstall-gsmincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(gsminclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(gsmincludedir)/$$f"; \ + rm -f $(DESTDIR)$(gsmincludedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 $(LTLIBRARIES) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(gsmincludedir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-gsmincludeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-gsmincludeHEADERS uninstall-info-am \ + uninstall-libLTLIBRARIES + +.PHONY: GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-gsmincludeHEADERS install-info \ + install-info-am install-libLTLIBRARIES install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + tags uninstall uninstall-am uninstall-gsmincludeHEADERS \ + uninstall-info-am uninstall-libLTLIBRARIES + +# 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc new file mode 100644 index 0000000000..1c163d06e1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.cc @@ -0,0 +1,444 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_at.cc +// * +// * Purpose: Utility classes for AT command sequence handling +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// GsmAt members + +bool GsmAt::matchResponse(string answer, string responseToMatch) +{ + if (answer.substr(0, responseToMatch.length()) == responseToMatch) + return true; + else + // some TAs omit the ':' at the end of the response + if (_meTa.getCapabilities()._omitsColon && + responseToMatch[responseToMatch.length() - 1] == ':' && + answer.substr(0, responseToMatch.length() - 1) == + responseToMatch.substr(0, responseToMatch.length() - 1)) + return true; + return false; +} + +string GsmAt::cutResponse(string answer, string responseToMatch) +{ + if (answer.substr(0, responseToMatch.length()) == responseToMatch) + return normalize(answer.substr(responseToMatch.length(), + answer.length() - + responseToMatch.length())); + else + // some TAs omit the ':' at the end of the response + if (_meTa.getCapabilities()._omitsColon && + responseToMatch[responseToMatch.length() - 1] == ':' && + answer.substr(0, responseToMatch.length() - 1) == + responseToMatch.substr(0, responseToMatch.length() - 1)) + return normalize(answer.substr(responseToMatch.length() - 1, + answer.length() - + responseToMatch.length() + 1)); + assert(0); + return ""; +} + +void GsmAt::throwCmeException(string s) throw(GsmException) +{ + if (matchResponse(s, "ERROR")) + throw GsmException(_("unspecified ME/TA error"), ChatError); + + bool meError = matchResponse(s, "+CME ERROR:"); + if (meError) + s = cutResponse(s, "+CME ERROR:"); + else + s = cutResponse(s, "+CMS ERROR:"); + istrstream is(s.c_str()); + int error; + is >> error; + throw GsmException(_("ME/TA error '") + + (meError ? getMEErrorText(error) : + getSMSErrorText(error)) + + "' " + + stringPrintf(_("(code %s)"), s.c_str()), + ChatError, error); +} + +GsmAt::GsmAt(MeTa &meTa) : + _meTa(meTa), _port(meTa.getPort()), _eventHandler(NULL) +{ +} + +string GsmAt::chat(string atCommand, string response, + bool ignoreErrors, bool acceptEmptyResponse) + throw(GsmException) +{ + string dummy; + return chat(atCommand, response, dummy, ignoreErrors, false, + acceptEmptyResponse); +} + +string GsmAt::chat(string atCommand, string response, string &pdu, + bool ignoreErrors, bool expectPdu, + bool acceptEmptyResponse) throw(GsmException) +{ + string s; + bool gotOk = false; // special handling for empty SMS entries + + // send AT command + putLine("AT" + atCommand); + // and gobble up CR/LF (and possibly echoed characters if echo can't be + // switched off) + // Also, some mobiles (e.g., Sony Ericsson K800i) respond to commands + // like "at+cmgf=0" with "+CMGF: 0" on success as well as the "OK" + // status -- so gobble that (but not if that sort of response was expected) + // FIXME: this is a gross hack, should be done via capabilities or sth + #include + string::size_type loc = atCommand.find( "=", 1 ); + string expect; + if (loc != string::npos) { + expect = atCommand; + expect.replace(loc, 1, " "); + expect.insert(loc, ":"); + } else { + expect = ""; + } + do + { + s = normalize(getLine()); + } + while (s.length() == 0 || s == "AT" + atCommand || + ((response.length() == 0 || !matchResponse(s, response)) && + (expect.length() > 0 && matchResponse(s, expect)))); + + // handle errors + if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) + if (ignoreErrors) + return ""; + else + throwCmeException(s); + if (matchResponse(s, "ERROR")) + if (ignoreErrors) + return ""; + else + throw GsmException(_("ME/TA error '' (code not known)"), + ChatError, -1); + + // return if response is "OK" and caller says this is OK + if (acceptEmptyResponse && s == "OK") + return ""; + + // handle PDU if one is expected + if (expectPdu) + { + string ps; + do + { + ps = normalize(getLine()); + } + while (ps.length() == 0 && ps != "OK"); + if (ps == "OK") + gotOk = true; + else + { + pdu = ps; + // remove trailing zero added by some devices (e.g. Falcom A2-1) + if (pdu.length() > 0 && pdu[pdu.length() - 1] == 0) + pdu.erase(pdu.length() - 1); + } + } + + // handle expected response + if (response.length() == 0) // no response expected + { + if (s == "OK") return ""; + // else fall through to error + } + else + { + string result; + // some TA/TEs don't prefix their response with the response string + // as proscribed by the standard: just handle either case + if (matchResponse(s, response)) + result = cutResponse(s, response); + else + result = s; + + if (gotOk) + return result; + else + { + // get the final "OK" + do + { + s = normalize(getLine()); + } + while (s.length() == 0); + + if (s == "OK") return result; + // else fall through to error + } + } + throw GsmException( + stringPrintf(_("unexpected response '%s' when sending 'AT%s'"), + s.c_str(), atCommand.c_str()), + ChatError); +} + +vector GsmAt::chatv(string atCommand, string response, + bool ignoreErrors) throw(GsmException) +{ + string s; + vector result; + + // send AT command + putLine("AT" + atCommand); + // and gobble up CR/LF (and possibly echoed characters if echo can't be + // switched off) + do + { + s = normalize(getLine()); + } + while (s.length() == 0 || s == "AT" + atCommand); + + // handle errors + if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) + if (ignoreErrors) + return result; + else + throwCmeException(s); + if (matchResponse(s, "ERROR")) + if (ignoreErrors) + return result; + else + throw GsmException(_("ME/TA error '' (code not known)"), + ChatError, -1); + + // push all lines that are not empty + // cut response prefix if it is there + // stop when an OK line is read + while (1) + { + if (s == "OK") + return result; + // some TA/TEs don't prefix their response with the response string + // as proscribed by the standard: just handle either case + if (response.length() != 0 && matchResponse(s, response)) + result.push_back(cutResponse(s, response)); + else + result.push_back(s); + // get next line + do + { + s = normalize(getLine()); + } + while (s.length() == 0); + reportProgress(); + } + + // never reached + assert(0); + return result; +} + +string GsmAt::normalize(string s) +{ + size_t start = 0, end = s.length(); + bool changed = true; + + while (start < end && changed) + { + changed = false; + if (isspace(s[start])) + { + ++start; + changed = true; + } + else + if (isspace(s[end - 1])) + { + --end; + changed = true; + } + } + return s.substr(start, end - start); +} + +string GsmAt::sendPdu(string atCommand, string response, string pdu, + bool acceptEmptyResponse) throw(GsmException) +{ + string s; + bool errorCondition; + bool retry = false; + int tries = 5; // How many error conditions do we accept + + int c; + do + { + errorCondition = false; + putLine("AT" + atCommand); + do + { + retry = false; + try + { + do + { + // read first of two bytes "> " + c = readByte(); + } + // there have been reports that some phones give spurious CRs + // LF separates CDSI messages if there are more than one + while (c == CR || c == LF); + } + catch (GsmException &e) + { + c = '-'; + errorCondition = true; // TA does not expect PDU anymore, retry + } + + if (c == '+' || c == 'E') // error or unsolicited result code + { + _port->putBack(c); + s = normalize(getLine()); + errorCondition = (s != ""); + + retry = ! errorCondition; + } + } + while (retry); + } + while (errorCondition && tries--); + + if (! errorCondition) + { + + if (c != '>' || readByte() != ' ') + throw GsmException(_("unexpected character in PDU handshake"), + ChatError); + + putLine(pdu + "\032", false); // write pdu followed by CTRL-Z + + // some phones (Ericcson T68, T39) send spurious zero characters after + // accepting the PDU + c = readByte(); + if (c != 0) + _port->putBack(c); + + // loop while empty lines (maybe with a zero, Ericsson T39m) + // or an echo of the pdu (with or without CTRL-Z) + // is read + do + { + s = normalize(getLine()); + } + while (s.length() == 0 || s == pdu || s == (pdu + "\032") || + (s.length() == 1 && s[0] == 0)); + } + + // handle errors + if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) + throwCmeException(s); + if (matchResponse(s, "ERROR")) + throw GsmException(_("ME/TA error '' (code not known)"), + ChatError, -1); + + // return if response is "OK" and caller says this is OK + if (acceptEmptyResponse && s == "OK") + return ""; + + if (matchResponse(s, response)) + { + string result = cutResponse(s, response); + // get the final "OK" + do + { + s = normalize(getLine()); + } + while (s.length() == 0); + + if (s == "OK") return result; + // else fall through to error + } + throw GsmException( + stringPrintf(_("unexpected response '%s' when sending 'AT%s'"), + s.c_str(), atCommand.c_str()), + ChatError); +} + +string GsmAt::getLine() throw(GsmException) +{ + if (_eventHandler == (GsmEvent*)NULL) + return _port->getLine(); + else + { + bool eventOccurred; + string result; + do + { + eventOccurred = false; + result = _port->getLine(); + string s = normalize(result); + if (matchResponse(s, "+CMT:") || + matchResponse(s, "+CBM:") || + matchResponse(s, "+CDS:") || + matchResponse(s, "+CMTI:") || + matchResponse(s, "+CBMI:") || + matchResponse(s, "+CDSI:") || + matchResponse(s, "RING") || + matchResponse(s, "NO CARRIER") || + // hack: the +CLIP? sequence returns +CLIP: n,m + // which is NOT an unsolicited result code + (matchResponse(s, "+CLIP:") && s.length() > 10)) + { + _eventHandler->dispatch(s, *this); + eventOccurred = true; + } + } + while (eventOccurred); + return result; + } +} + +void GsmAt::putLine(string line, + bool carriageReturn) throw(GsmException) +{ + _port->putLine(line, carriageReturn); + // remove empty echo line + if (carriageReturn) + getLine(); +} + +bool GsmAt::wait(GsmTime timeout) throw(GsmException) +{ + return _port->wait(timeout); +} + +int GsmAt::readByte() throw(GsmException) +{ + return _port->readByte(); +} + +GsmEvent *GsmAt::setEventHandler(GsmEvent *newHandler) +{ + GsmEvent *result = _eventHandler; + _eventHandler = newHandler; + return result; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h new file mode 100644 index 0000000000..96c3359425 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_at.h @@ -0,0 +1,104 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_at.h +// * +// * Purpose: Utility classes for AT command sequence handling +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.5.1999 +// ************************************************************************* + +#ifndef GSM_AT_H +#define GSM_AT_H + +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // forward declarations + + class GsmEvent; + class MeTa; + + // utiliy class to handle AT sequences + + class GsmAt : public RefBase + { + protected: + MeTa &_meTa; + Ref _port; + GsmEvent *_eventHandler; + + // return true if response matches + bool matchResponse(string answer, string responseToMatch); + + // cut response and normalize + string cutResponse(string answer, string responseToMatch); + + // parse CME error contained in string and throw MeTaException + void throwCmeException(string s) throw(GsmException); + + public: + GsmAt(MeTa &meTa); + + // return MeTa object for this AT object + MeTa &getMeTa() {return _meTa;} + + // the following sequence functions recognize asynchronous messages + // from the TA and return the appropriate event + + // send AT command, wait for response response, returns response line + // without response match + // if response == "" only an OK is expected + // white space at beginning or end are removed + // +CME ERROR or ERROR raises exception (if ignoreErrors == true) + // additionally, accept empty responses (just an OK) + // if acceptEmptyResponse == true + // in this case an empty string is returned + string chat(string atCommand = "", + string response = "", + bool ignoreErrors = false, + bool acceptEmptyResponse = false) throw(GsmException); + + // same as chat() above but also get pdu if expectPdu == true + string chat(string atCommand, + string response, + string &pdu, + bool ignoreErrors = false, + bool expectPdu = true, + bool acceptEmptyResponse = false) throw(GsmException); + + // same as above, but expect several response lines + vector chatv(string atCommand = "", + string response = "", + bool ignoreErrors = false) + throw(GsmException); + + // removes whitespace at beginning and end of string + string normalize(string s); + + // send pdu (wait for and send + // at the end + // return text after response + string sendPdu(string atCommand, string response, string pdu, + bool acceptEmptyResponse = false) throw(GsmException); + + // functions from class Port + string getLine() throw(GsmException); + void putLine(string line, + bool carriageReturn = true) throw(GsmException); + bool wait(GsmTime timeout) throw(GsmException); + int readByte() throw(GsmException); + + // set event handler class, return old one + GsmEvent *setEventHandler(GsmEvent *newHandler); + }; +}; + +#endif // GSM_AT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc new file mode 100644 index 0000000000..37c0e4aae7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.cc @@ -0,0 +1,176 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_cb.cc +// * +// * Purpose: Cell Broadcast Message Implementation +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.8.2001 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// local constants + +static const string dashes = +"---------------------------------------------------------------------------"; + +// CBDataCodingScheme members + +CBDataCodingScheme::CBDataCodingScheme(unsigned char dcs) : _dcs(dcs) +{ + if ((_dcs & 0xf0) <= 0x30) // bits 7..4 in the range 0000..0011 + if ((_dcs & 0x30) == 0) + _language = (Language)_dcs; + else + _language = Unknown; +} + +string CBDataCodingScheme::toString() const +{ + string result; + if (compressed()) result += _("compressed "); + switch (getLanguage()) + { + case German: + result += _("German"); + break; + case English: + result += _("English"); + break; + case Italian: + result += _("Italian"); + break; + case French: + result += _("French"); + break; + case Spanish: + result += _("Spanish"); + break; + case Dutch: + result += _("Dutch"); + break; + case Swedish: + result += _("Swedish"); + break; + case Danish: + result += _("Danish"); + break; + case Portuguese: + result += _("Portuguese"); + break; + case Finnish: + result += _("Finnish"); + break; + case Norwegian: + result += _("Norwegian"); + break; + case Greek: + result += _("Greek"); + break; + case Turkish: + result += _("Turkish"); + break; + } + result += " "; + switch (getAlphabet()) + { + case DCS_DEFAULT_ALPHABET: + result += _("default alphabet"); + break; + case DCS_EIGHT_BIT_ALPHABET: + result += _("8-bit alphabet"); + break; + case DCS_SIXTEEN_BIT_ALPHABET: + result += _("16-bit alphabet"); + break; + case DCS_RESERVED_ALPHABET: + result += _("reserved alphabet"); + break; + } + return result; +} + +// CBMessage members + +CBMessage::CBMessage(string pdu) throw(GsmException) +{ + SMSDecoder d(pdu); + _messageCode = d.getInteger(6) << 4; + _geographicalScope = (GeographicalScope)d.get2Bits(); + _updateNumber = d.getInteger(4); + _messageCode |= d.getInteger(4); + _messageIdentifier = d.getInteger(8) << 8; + _messageIdentifier |= d.getInteger(8); + _dataCodingScheme = CBDataCodingScheme(d.getOctet()); + _totalPageNumber = d.getInteger(4); + _currentPageNumber = d.getInteger(4); + + // the values 82 and 93 come from ETSI GSM 03.41, section 9.3 + d.markSeptet(); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + { + _data = d.getString(93); + _data = gsmToLatin1(_data); + } + else + { + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * 82); + d.getOctets(s, 82); + _data.assign((char*)s, (unsigned int)82); + } +} + +string CBMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: CB") << endl + << _("Geographical scope: "); + switch (_geographicalScope) + { + case CellWide: + os << "Cell wide" << endl; + break; + case PLMNWide: + os << "PLMN wide" << endl; + break; + case LocationAreaWide: + os << "Location area wide" << endl; + break; + case CellWide2: + os << "Cell wide (2)" << endl; + break; + } + // remove trailing \r characters for output + string data = _data; + string::iterator i; + for (i = data.end(); i > data.begin() && *(i - 1) == '\r'; + --i); + data.erase(i, data.end()); + + os << _("Message Code: ") << _messageCode << endl + << _("Update Number: ") << _updateNumber << endl + << _("Message Identifer: ") << _messageIdentifier << endl + << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl + << _("Total page number: ") << _totalPageNumber << endl + << _("Current page number: ") << _currentPageNumber << endl + << _("Data: '") << data << "'" << endl + << dashes << endl << endl << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h new file mode 100644 index 0000000000..3457c8105c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_cb.h @@ -0,0 +1,106 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_cb.h +// * +// * Purpose: Cell Broadcast Message Implementation +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.8.2001 +// ************************************************************************* + +#ifndef GSM_CB_H +#define GSM_CB_H + +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // representation of DataCodingScheme + // The data coding scheme is described in detail in ETSI GSM 03.38, section 5 + // This class reuses the DCS_* constants from DataCodingScheme in + // gsm_sms_codec + + class CBDataCodingScheme + { + public: + enum Language {German = 0, English = 1, Italian = 2, French = 3, + Spanish = 4, Dutch = 5, Swedish = 6, Danish = 7, + Portuguese = 8, Finnish = 9, Norwegian = 10, Greek = 11, + Turkish = 12, Unknown = 1000}; + + private: + unsigned char _dcs; + Language _language; + + public: + // initialize with data coding scheme octet + CBDataCodingScheme(unsigned char dcs); + + // default constructor + CBDataCodingScheme() : _dcs(DCS_DEFAULT_ALPHABET), _language(English) {} + + // return language of CBM + Language getLanguage() const {return _language;} + + // return compression level (if language == Unknown) + bool compressed() const {return (_dcs & DCS_COMPRESSED) == DCS_COMPRESSED;} + + // return type of alphabet used + // (DCS_DEFAULT_ALPHABET, DCS_EIGHT_BIT_ALPHABET, DCS_SIXTEEN_BIT_ALPHABET, + // DCS_RESERVED_ALPHABET) + unsigned char getAlphabet() const + {return _language == Unknown ? _dcs & (3 << 2) : DCS_DEFAULT_ALPHABET;} + + // create textual representation of CB data coding scheme + string toString() const; + }; + + // representation of Cell Broadcast message (CBM) + // The CBM format is described in detail in ETSI GSM 03.41, section 9.3 + + class CBMessage : public RefBase + { + public: + enum GeographicalScope {CellWide, PLMNWide, LocationAreaWide, + CellWide2}; + + private: + // fields parsed from the CB TPDU + GeographicalScope _geographicalScope; + int _messageCode; + int _updateNumber; + int _messageIdentifier; + CBDataCodingScheme _dataCodingScheme; + int _totalPageNumber; + int _currentPageNumber; + string _data; + + public: + // constructor with given pdu + CBMessage(string pdu) throw(GsmException); + + // accessor functions + GeographicalScope getGeographicalScope() const {return _geographicalScope;} + int getMessageCode() const {return _messageCode;} + int getUpdateNumber() const {return _updateNumber;} + int getMessageIdentifier() const {return _messageIdentifier;} + CBDataCodingScheme getDataCodingScheme() const {return _dataCodingScheme;} + int getTotalPageNumber() const {return _totalPageNumber;} + int getCurrentPageNumber() const {return _currentPageNumber;} + string getData() const {return _data;} + + // create textual representation of CBM + string toString() const; + }; + + // some useful typdefs + typedef Ref CBMessageRef; +}; + +#endif // GSM_CB_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc new file mode 100644 index 0000000000..2cf9179ede --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.cc @@ -0,0 +1,424 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_error.cc +// * +// * Purpose: Error codes and error handling functions +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 11.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +string gsmlib::getMEErrorText(const int errorCode) throw(GsmException) +{ + switch (errorCode) + { + case ME_PHONE_FAILURE: + return _("phone failure"); + break; + case ME_NO_CONNECTION_TO_PHONE: + return _("no connection to phone"); + break; + case ME_PHONE_ADAPTOR_LINK_RESERVED: + return _("phone adaptor link reserved"); + break; + case ME_OPERATION_NOT_ALLOWED: + return _("operation not allowed"); + break; + case ME_OPERATION_NOT_SUPPORTED: + return _("operation not supported"); + break; + case ME_PH_SIM_PIN_REQUIRED: + return _("ph SIM PIN required"); + break; + case ME_SIM_NOT_INSERTED: + return _("SIM not inserted"); + break; + case ME_SIM_PIN_REQUIRED: + return _("SIM PIN required"); + break; + case ME_SIM_PUK_REQUIRED: + return _("SIM PUK required"); + break; + case ME_SIM_FAILURE: + return _("SIM failure"); + break; + case ME_SIM_BUSY: + return _("SIM busy"); + break; + case ME_SIM_WRONG: + return _("SIM wrong"); + break; + case ME_INCORRECT_PASSWORD: + return _("incorrect password"); + break; + case ME_SIM_PIN2_REQUIRED: + return _("SIM PIN2 required"); + break; + case ME_SIM_PUK2_REQUIRED: + return _("SIM PUK2 required"); + break; + case ME_MEMORY_FULL: + return _("memory full"); + break; + case ME_INVALID_INDEX: + return _("invalid index"); + break; + case ME_NOT_FOUND: + return _("not found"); + break; + case ME_MEMORY_FAILURE: + return _("memory failure"); + break; + case ME_TEXT_STRING_TOO_LONG: + return _("text string too long"); + break; + case ME_INVALID_CHARACTERS_IN_TEXT_STRING: + return _("invalid characters in text string"); + break; + case ME_DIAL_STRING_TOO_LONG: + return _("dial string too long"); + break; + case ME_INVALID_CHARACTERS_IN_DIAL_STRING: + return _("invalid characters in dial string"); + break; + case ME_NO_NETWORK_SERVICE: + return _("no network service"); + break; + case ME_NETWORK_TIMEOUT: + return _("network timeout"); + break; + case ME_UNKNOWN: + return _("unknown"); + break; + default: + throw GsmException(stringPrintf(_("invalid ME error %d"), errorCode), + OtherError); + } +} + +string gsmlib::getSMSErrorText(const int errorCode) throw(GsmException) +{ + switch (errorCode) + { + case SMS_UNASSIGNED_OR_UNALLOCATED_NUMBER: + return _("Unassigned (unallocated) number"); + break; + case SMS_OPERATOR_DETERMINED_BARRING: + return _("Operator determined barring"); + break; + case SMS_CALL_BARRED: + return _("Call barred"); + break; + case SMS_NETWORK_FAILURE: + return _("Network failure"); + break; + case SMS_SHORT_MESSAGE_TRANSFER_REJECTED: + return _("Short message transfer rejected"); + break; + case SMS_CONGESTION: + case SMS_CONGESTION2: + return _("Congestion"); + break; + case SMS_DESTINATION_OUT_OF_SERVICE: + return _("Destination out of service"); + break; + case SMS_UNIDENTIFIED_SUBSCRIBER: + return _("Unidentified subscriber"); + break; + case SMS_FACILITY_REJECTED: + return _("Facility rejected"); + break; + case SMS_UNKNOWN_SUBSCRIBER: + return _("Unknown subscriber"); + break; + case SMS_NETWORK_OUT_OF_ORDER: + return _("Network out of order"); + break; + case SMS_TEMPORARY_FAILURE: + return _("Temporary failure"); + break; + case SMS_RESOURCES_UNAVAILABLE_UNSPECIFIED: + return _("Resources unavailable, unspecified"); + break; + case SMS_REQUESTED_FACILITY_NOT_SUBSCRIBED: + return _("Requested facility not subscribed"); + break; + case SMS_REQUESTED_FACILITY_NOT_IMPLEMENTED: + return _("Requested facility not implemented"); + break; + case SMS_INVALID_TRANSACTION_IDENTIFIER: + return _("Invalid Transaction Identifier"); + break; + case SMS_SEMANTICALLY_INCORRECT_MESSAGE: + return _("Semantically incorrect message"); + break; + case SMS_INVALID_MANDATORY_INFORMATION: + return _("Invalid mandatory information"); + break; + case SMS_MESSAGE_TYPE_NONEXISTENT_OR_NOT_IMPLEMENTED: + return _("Message type non-existent or not implemented"); + break; + case SMS_MESSAGE_NOT_COMPATIBLE_WITH_SHORT_MESSAGE_PROTOCOL_STATE: + return _("Message not compatible with short message protocol state"); + break; + case SMS_INFORMATION_ELEMENT_NONEXISTENT_OR_NOT_IMPLEMENTED: + return _("Information element non-existent or not implemented"); + break; + case SMS_UNSPECIFIED_PROTOCOL_ERROR: + return _("Protocol error, unspecified"); + break; + case SMS_UNSPECIFIED_INTERWORKING_ERROR: + return _("Interworking, unspecified"); + break; + case SMS_TELEMATIC_INTERWORKING_NOT_SUPPORTED: + return _("Telematic interworking not supported"); + break; + case SMS_SHORT_MESSAGE_TYPE_0_NOT_SUPPORTED: + return _("Short message Type 0 not supported"); + break; + case SMS_CANNOT_REPLACE_SHORT_MESSAGE: + return _("Cannot replace short message"); + break; + case SMS_UNSPECIFIED_TP_PID_ERROR: + return _("Unspecified TP-PID error"); + break; + case SMS_DATA_CODING_SCHEME_NOT_SUPPORTED: + return _("Data coding scheme (alphabet) not supported"); + break; + case SMS_MESSAGE_CLASS_NOT_SUPPORTED: + return _("Message class not supported"); + break; + case SMS_UNSPECIFIEC_TP_DCS_ERROR: + return _("Unspecifiec TP-DCS error"); + break; + case SMS_COMMAND_CANNOT_BE_ACTIONED: + return _("Command cannot be actioned"); + break; + case SMS_COMMAND_UNSUPPORTED: + return _("Command unsupported"); + break; + case SMS_UNSPECIFIED_TP_COMMAND_ERROR: + return _("Unspecified TP-Command error"); + break; + case SMS_TPDU_NOT_SUPPORTED: + return _("TPDU not supported"); + break; + case SMS_SC_BUSY: + return _("SC busy"); + break; + case SMS_NO_SC_SUBSCRIPTION: + return _("No SC subscription"); + break; + case SMS_SC_SYSTEM_FAILURE: + return _("SC system failure"); + break; + case SMS_INVALID_SME_ADDRESS: + return _("Invalid SME address"); + break; + case SMS_DESTINATION_SME_BARRED: + return _("Destination SME barred"); + break; + case SMS_SM_REJECTED_DUPLICATED_SM: + return _("SM Rejected-Duplicated SM"); + break; + case SMS_SIM_SMS_STORAGE_FULL: + return _("SIM SMS storage full"); + break; + case SMS_NO_SMS_STORAGE_CAPABILITY_IN_SIM: + return _("No SMS storage capability in SIM"); + break; + case SMS_ERROR_IN_MS: + return _("Error in MS"); + break; + case SMS_MEMORY_CAPACITY_EXCEED: + return _("Memory Capacity Exceed"); + break; + case SMS_UNSPECIFIED_ERROR_CAUSE: + return _("Unspecified error cause"); + break; + case SMS_ME_FAILURE: + return _("ME failure"); + break; + case SMS_SMS_SERVICE_OF_ME_RESERVED: + return _("SMS service of ME reserved"); + break; + case SMS_OPERATION_NOT_ALLOWED: + return _("operation not allowed"); + break; + case SMS_OPERATION_NOT_SUPPORTED: + return _("operation not supported"); + break; + case SMS_INVALID_PDU_MODE_PARAMETER: + return _("invalid PDU mode parameter"); + break; + case SMS_INVALID_TEXT_MODE_PARAMETER: + return _("invalid text mode parameter"); + break; + case SMS_SIM_NOT_INSERTED: + return _("SIM not inserted"); + break; + case SMS_SIM_PIN_REQUIRED: + return _("SIM PIN required"); + break; + case SMS_PH_SIM_PIN_REQUIRED: + return _("PH-SIM PIN required"); + break; + case SMS_SIM_FAILURE: + return _("SIM failure"); + break; + case SMS_SIM_BUSY: + return _("SIM busy"); + break; + case SMS_SIM_WRONG: + return _("SIM wrong"); + break; + case SMS_SIM_PUK_REQUIRED: + return _("SIM PUK required"); + break; + case SMS_SIM_PIN2_REQUIRED: + return _("SIM PIN2 required"); + break; + case SMS_SIM_PUK2_REQUIRED: + return _("SIM PUK2 required"); + break; + case SMS_MEMORY_FAILURE: + return _("memory failure"); + break; + case SMS_INVALID_MEMORY_INDEX: + return _("invalid memory index"); + break; + case SMS_MEMORY_FULL: + return _("memory full"); + break; + case SMS_SMSC_ADDRESS_UNKNOWN: + return _("SMSC address unknown"); + break; + case SMS_NO_NETWORK_SERVICE: + return _("no network service"); + break; + case SMS_NETWORK_TIMEOUT: + return _("network timeout"); + break; + case SMS_NO_CNMA_ACKNOWLEDGEMENT_EXPECTED: + return _("no +CNMA acknowledgement expected"); + break; + case SMS_UNKNOWN_ERROR: + return _("unknown error"); + break; + default: + throw GsmException(stringPrintf(_("invalid SMS error %d"), errorCode), + OtherError); + } +} + +string gsmlib::getSMSStatusString(unsigned char status) +{ + string result; + if (status < SMS_STATUS_TEMPORARY_BIT) + { + switch (status) + { + case SMS_STATUS_RECEIVED: + result = _("Short message received by the SME"); + break; + case SMS_STATUS_FORWARDED: + result = _("Short message forwarded by the SC to the SME but the SC " + "is unable to confirm delivery"); + break; + case SMS_STATUS_SM_REPLACES: + result = _("Short message replaced by the SC"); + break; + default: + result = _("reserved"); + break; + } + return result; + } + else if (status & SMS_STATUS_TEMPORARY_BIT) + { + switch (status & ~(SMS_STATUS_TEMPORARY_BIT | SMS_STATUS_PERMANENT_BIT)) + { + case SMS_STATUS_CONGESTION: + result = _("Congestion"); + break; + case SMS_STATUS_SME_BUSY: + result = _("SME busy"); + break; + case SMS_STATUS_NO_RESPONSE_FROM_SME: + result = _("No response from SME"); + break; + case SMS_STATUS_SERVICE_REJECTED: + result = _("Service rejected"); + break; + case SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE: + result = _("Quality of service not available"); + break; + case SMS_STATUS_ERROR_IN_SME: + result = _("Error in SME"); + break; + default: + result = _("reserved"); + break; + } + if (status & SMS_STATUS_PERMANENT_BIT) + return result + _(" (Temporary error, SC is not making any " + "more transfer attempts)"); + else + return result + _(" (Temporary error, SC still trying to " + "transfer SM)"); + } + else + { + switch (status & ~SMS_STATUS_PERMANENT_BIT) + { + case SMS_STATUS_REMOTE_PROCECURE_ERROR: + result = _("Remote Procedure Error"); + break; + case SMS_STATUS_INCOMPATIBLE_DESTINATION: + result = _("Incompatible destination"); + break; + case SMS_STATUS_CONNECTION_REJECTED_BY_SME: + result = _("Connection rejected by SME"); + break; + case SMS_STATUS_NOT_OBTAINABLE: + result = _("Not obtainable"); + break; + case SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE: + result = _("Quality of service not available"); + break; + case SMS_STATUS_NO_INTERWORKING_AVAILABLE: + result = _("No interworking available"); + break; + case SMS_STATUS_SM_VALIDITY_PERDIOD_EXPIRED: + result = _("SM validity period expired"); + break; + case SMS_STATUS_SM_DELETED_BY_ORIGINATING_SME: + result = _("SM deleted by originating SME"); + break; + case SMS_STATUS_SM_DELETED_BY_ADMINISTRATION: + result = _("SM deleted by SC administration"); + break; + case SMS_STATUS_SM_DOES_NOT_EXIST: + result = _("SM does not exit"); + break; + default: + result = _("reserved"); + break; + } + return result + _(" (Permanent Error, SC is not making any " + "more transfer attempts)"); + } +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h new file mode 100644 index 0000000000..5dc96538e3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_error.h @@ -0,0 +1,209 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_error.h +// * +// * Purpose: Error codes and error handling functions +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.5.1999 +// ************************************************************************* + +#ifndef GSM_ERROR_H +#define GSM_ERROR_H + +#include +#include + +using namespace std; + +namespace gsmlib +{ + // different classes of GSM errors + enum GsmErrorClass{OSError, // error caused by OS call (eg. file handling) + ParserError, // error when parsing AT response + ChatError, // error in chat sequence (ME/TA/SMS error) + ParameterError, // gsmlib function called with bad params + NotImplementedError, // feature not implemented + MeTaCapabilityError, // non-existent capability in ME + SMSFormatError, // SMS format error + InterruptException, // gsmlib was interrupted() + OtherError}; // all other errors + + // all gsmlib exceptions + + class GsmException : public runtime_error + { + private: + GsmErrorClass _errorClass; + int _errorCode; + + public: + GsmException(string errorText, GsmErrorClass errorClass) : + runtime_error(errorText), _errorClass(errorClass), _errorCode(-1) {} + + GsmException(string errorText, GsmErrorClass errorClass, int errorCode) : + runtime_error(errorText), _errorClass(errorClass), + _errorCode(errorCode) {} + + int getErrorCode() const {return _errorCode;} + + GsmErrorClass getErrorClass() const {return _errorClass;} + }; + + // error codes returned by TA/ME (+CMEE) + + const int ME_PHONE_FAILURE = 0; + const int ME_NO_CONNECTION_TO_PHONE = 1; + const int ME_PHONE_ADAPTOR_LINK_RESERVED = 2; + const int ME_OPERATION_NOT_ALLOWED = 3; + const int ME_OPERATION_NOT_SUPPORTED = 4; + const int ME_PH_SIM_PIN_REQUIRED = 5; + const int ME_SIM_NOT_INSERTED = 10; + const int ME_SIM_PIN_REQUIRED = 11; + const int ME_SIM_PUK_REQUIRED = 12; + const int ME_SIM_FAILURE = 13; + const int ME_SIM_BUSY = 14; + const int ME_SIM_WRONG = 15; + const int ME_INCORRECT_PASSWORD = 16; + const int ME_SIM_PIN2_REQUIRED = 17; + const int ME_SIM_PUK2_REQUIRED = 18; + const int ME_MEMORY_FULL = 20; + const int ME_INVALID_INDEX = 21; + const int ME_NOT_FOUND = 22; + const int ME_MEMORY_FAILURE = 23; + const int ME_TEXT_STRING_TOO_LONG = 24; + const int ME_INVALID_CHARACTERS_IN_TEXT_STRING = 25; + const int ME_DIAL_STRING_TOO_LONG = 26; + const int ME_INVALID_CHARACTERS_IN_DIAL_STRING = 27; + const int ME_NO_NETWORK_SERVICE = 30; + const int ME_NETWORK_TIMEOUT = 31; + const int ME_UNKNOWN = 100; + + // return descriptive text for the given error code + // the text is already translated + extern string getMEErrorText(const int errorCode) throw(GsmException); + + // SMS error codes + + // error codes from ETSI GSM 04.11, Annex E + const int SMS_UNASSIGNED_OR_UNALLOCATED_NUMBER = 1; + const int SMS_OPERATOR_DETERMINED_BARRING = 8; + const int SMS_CALL_BARRED = 10; + const int SMS_NETWORK_FAILURE = 17; + const int SMS_SHORT_MESSAGE_TRANSFER_REJECTED = 21; + const int SMS_CONGESTION = 22; + const int SMS_DESTINATION_OUT_OF_SERVICE = 27; + const int SMS_UNIDENTIFIED_SUBSCRIBER = 28; + const int SMS_FACILITY_REJECTED = 29; + const int SMS_UNKNOWN_SUBSCRIBER = 30; + const int SMS_NETWORK_OUT_OF_ORDER = 38; + const int SMS_TEMPORARY_FAILURE = 41; + const int SMS_CONGESTION2 = 42; + const int SMS_RESOURCES_UNAVAILABLE_UNSPECIFIED = 47; + const int SMS_REQUESTED_FACILITY_NOT_SUBSCRIBED = 50; + const int SMS_REQUESTED_FACILITY_NOT_IMPLEMENTED = 69; + const int SMS_INVALID_TRANSACTION_IDENTIFIER = 81; + const int SMS_SEMANTICALLY_INCORRECT_MESSAGE = 95; + const int SMS_INVALID_MANDATORY_INFORMATION = 96; + const int SMS_MESSAGE_TYPE_NONEXISTENT_OR_NOT_IMPLEMENTED = 97; + const int SMS_MESSAGE_NOT_COMPATIBLE_WITH_SHORT_MESSAGE_PROTOCOL_STATE = 98; + const int SMS_INFORMATION_ELEMENT_NONEXISTENT_OR_NOT_IMPLEMENTED = 99; + const int SMS_UNSPECIFIED_PROTOCOL_ERROR = 111; + const int SMS_UNSPECIFIED_INTERWORKING_ERROR = 127; + + // error codes from ETSI GSM 03.40, section 9.2.3.22 + const int SMS_TELEMATIC_INTERWORKING_NOT_SUPPORTED = 0x80; + const int SMS_SHORT_MESSAGE_TYPE_0_NOT_SUPPORTED = 0x81; + const int SMS_CANNOT_REPLACE_SHORT_MESSAGE = 0x82; + const int SMS_UNSPECIFIED_TP_PID_ERROR = 0x8f; + const int SMS_DATA_CODING_SCHEME_NOT_SUPPORTED = 0x90; + const int SMS_MESSAGE_CLASS_NOT_SUPPORTED = 0x91; + const int SMS_UNSPECIFIEC_TP_DCS_ERROR = 0x9f; + const int SMS_COMMAND_CANNOT_BE_ACTIONED = 0xa0; + const int SMS_COMMAND_UNSUPPORTED = 0xa1; + const int SMS_UNSPECIFIED_TP_COMMAND_ERROR = 0xaf; + const int SMS_TPDU_NOT_SUPPORTED = 0xb0; + const int SMS_SC_BUSY = 0xc0; + const int SMS_NO_SC_SUBSCRIPTION = 0xc1; + const int SMS_SC_SYSTEM_FAILURE = 0xc2; + const int SMS_INVALID_SME_ADDRESS = 0xc3; + const int SMS_DESTINATION_SME_BARRED = 0xc4; + const int SMS_SM_REJECTED_DUPLICATED_SM = 0xc5; + const int SMS_SIM_SMS_STORAGE_FULL = 0xd0; + const int SMS_NO_SMS_STORAGE_CAPABILITY_IN_SIM = 0xd1; + const int SMS_ERROR_IN_MS = 0xd2; + const int SMS_MEMORY_CAPACITY_EXCEED = 0xd3; + const int SMS_UNSPECIFIED_ERROR_CAUSE = 0xff; + + // error codes from ETSI GSM 07.05, section 3.2.5 + const int SMS_ME_FAILURE = 300; + const int SMS_SMS_SERVICE_OF_ME_RESERVED = 301; + const int SMS_OPERATION_NOT_ALLOWED = 302; + const int SMS_OPERATION_NOT_SUPPORTED = 303; + const int SMS_INVALID_PDU_MODE_PARAMETER = 304; + const int SMS_INVALID_TEXT_MODE_PARAMETER = 305; + const int SMS_SIM_NOT_INSERTED = 310; + const int SMS_SIM_PIN_REQUIRED = 311; + const int SMS_PH_SIM_PIN_REQUIRED = 312; + const int SMS_SIM_FAILURE = 313; + const int SMS_SIM_BUSY = 314; + const int SMS_SIM_WRONG = 315; + const int SMS_SIM_PUK_REQUIRED = 316; + const int SMS_SIM_PIN2_REQUIRED = 317; + const int SMS_SIM_PUK2_REQUIRED = 318; + const int SMS_MEMORY_FAILURE = 320; + const int SMS_INVALID_MEMORY_INDEX = 321; + const int SMS_MEMORY_FULL = 322; + const int SMS_SMSC_ADDRESS_UNKNOWN = 330; + const int SMS_NO_NETWORK_SERVICE = 331; + const int SMS_NETWORK_TIMEOUT = 332; + const int SMS_NO_CNMA_ACKNOWLEDGEMENT_EXPECTED = 340; + const int SMS_UNKNOWN_ERROR = 500; + + // return descriptive text for the given error code + // the text is already translated + extern string getSMSErrorText(const int errorCode) throw(GsmException); + + // SMS status handling + // success codes + const int SMS_STATUS_RECEIVED = 0; + const int SMS_STATUS_FORWARDED = 1; + const int SMS_STATUS_SM_REPLACES = 2; + + // if this bit is set, the error is only temporary and + // the SC is still trying to transfer the SM + const int SMS_STATUS_TEMPORARY_BIT = 32; + + // if this bit is set, the error is only temporary and + // the SC is still trying to transfer the SM + const int SMS_STATUS_PERMANENT_BIT = 64; + // both bits may be set at once + + // temporary errors (both bits may be set) + const int SMS_STATUS_CONGESTION = 0; + const int SMS_STATUS_SME_BUSY = 1; + const int SMS_STATUS_NO_RESPONSE_FROM_SME = 2; + const int SMS_STATUS_SERVICE_REJECTED = 3; + const int SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE = 4; + const int SMS_STATUS_ERROR_IN_SME = 5; + + // permanent errors (SMS_STATUS_PERMANENT_BIT is set) + const int SMS_STATUS_REMOTE_PROCECURE_ERROR = 0; + const int SMS_STATUS_INCOMPATIBLE_DESTINATION = 1; + const int SMS_STATUS_CONNECTION_REJECTED_BY_SME = 2; + const int SMS_STATUS_NOT_OBTAINABLE = 3; + // const int SMS_STATUS_QUALITY_OF_SERVICE_UNAVAILABLE = 4; + const int SMS_STATUS_NO_INTERWORKING_AVAILABLE = 5; + const int SMS_STATUS_SM_VALIDITY_PERDIOD_EXPIRED = 6; + const int SMS_STATUS_SM_DELETED_BY_ORIGINATING_SME = 7; + const int SMS_STATUS_SM_DELETED_BY_ADMINISTRATION = 8; + const int SMS_STATUS_SM_DOES_NOT_EXIST = 9; + + // return text for SMS status code + // the text is already translated + string getSMSStatusString(unsigned char status); +}; + +#endif // GSM_ERROR_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc new file mode 100644 index 0000000000..a608b04f62 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.cc @@ -0,0 +1,174 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_event.cc +// * +// * Purpose: Event handler interface +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 7.6.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// GsmEvent members + +void GsmEvent::dispatch(string s, GsmAt &at) throw(GsmException) +{ + SMSMessageType messageType; + bool indication = false; + if (s.substr(0, 5) == "+CMT:") + messageType = NormalSMS; + else if (s.substr(0, 5) == "+CBM:") + messageType = CellBroadcastSMS; + else if (s.substr(0, 5) == "+CDS:") + { + // workaround for phones that report CDS when they actually mean CDSI + indication = at.getMeTa().getCapabilities()._CDSmeansCDSI; + messageType = StatusReportSMS; + } + else if (s.substr(0, 6) == "+CMTI:") + { + indication = true; + messageType = NormalSMS; + } + else if (s.substr(0, 6) == "+CBMI:") + { + indication = true; + messageType = CellBroadcastSMS; + } + else if (s.substr(0, 6) == "+CDSI:") + { + indication = true; + messageType = StatusReportSMS; + } + else if (s.substr(0, 4) == "RING") + { + ringIndication(); + return; + } + // handling NO CARRIER + else if (s.substr(0, 10) == "NO CARRIER") + { + noAnswer(); + return; + } + + else if (s.substr(0, 6) == "+CLIP:") + { + // ,[,,[,]] + s = s.substr(6); + Parser p(s); + string num = p.parseString(); + if (p.parseComma(true)) + { + unsigned int numberFormat; + if ((numberFormat = p.parseInt()) == InternationalNumberFormat) + num = "+" + num; + else if (numberFormat != UnknownNumberFormat) + throw GsmException(stringPrintf(_("unexpected number format %d"), + numberFormat), OtherError); + } + string subAddr; + string alpha; + if (p.parseComma(true)) + { + subAddr = p.parseString(true); + p.parseComma(); + p.parseInt(true); // FIXME subaddr type ignored + + if (p.parseComma(true)) + alpha = p.parseString(true); + } + + // call the event handler + callerLineID(num, subAddr, alpha); + return; + } + else + throw GsmException(stringPrintf(_("unexpected unsolicited event '%s'"), + s.c_str()), OtherError); + + if (indication) + { + // handle SMS storage indication + s = s.substr(6); + Parser p(s); + string storeName = p.parseString(); + p.parseComma(); + unsigned int index = p.parseInt(); + SMSReceptionIndication(storeName, index - 1, messageType); + } + else + if (messageType == CellBroadcastSMS) + { + // handle CB message + string pdu = at.getLine(); + + CBMessageRef cb = new CBMessage(pdu); + + // call the event handler + CBReception(cb); + } + else + { + // handle SMS + string pdu = at.getLine(); + + // add missing service centre address if required by ME + if (! at.getMeTa().getCapabilities()._hasSMSSCAprefix) + pdu = "00" + pdu; + + SMSMessageRef sms = SMSMessage::decode(pdu); + + // send acknowledgement if necessary + if (at.getMeTa().getCapabilities()._sendAck) + at.chat("+CNMA"); + + // call the event handler + SMSReception(sms, messageType); + } +} + +void GsmEvent::callerLineID(string number, string subAddr, string alpha) +{ + // ignore event +} + +void GsmEvent::SMSReception(SMSMessageRef newMessage, + SMSMessageType messageType) +{ + // ignore event +} + +void GsmEvent::CBReception(CBMessageRef newMessage) +{ + // ignore event +} + +void GsmEvent::SMSReceptionIndication(string storeName, unsigned int index, + SMSMessageType messageType) +{ + // ignore event +} + +void GsmEvent::ringIndication() +{ + // ignore event +} + +void GsmEvent::noAnswer() +{ + // ignore event +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h new file mode 100644 index 0000000000..b2b986cd15 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_event.h @@ -0,0 +1,68 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_event.h +// * +// * Purpose: Event handler interface +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 7.6.1999 +// ************************************************************************* + +#ifndef GSM_EVENT_H +#define GSM_EVENT_H + +#include +#include + +using namespace std; + +namespace gsmlib +{ + // forward declarations + + class GsmAt; + + // event handler interface + + class GsmEvent + { + private: + // dispatch CMT/CBR/CDS/CLIP etc. + void dispatch(string s, GsmAt &at) throw(GsmException); + + public: + // for SMSReception, type of SMS + enum SMSMessageType {NormalSMS, CellBroadcastSMS, StatusReportSMS}; + + // caller line identification presentation + // only called if setCLIPEvent(true) is set + virtual void callerLineID(string number, string subAddr, string alpha); + + // called if the string NO CARRIER is read + virtual void noAnswer(); + + // SMS reception + // only called if setSMSReceptionEvent(...true...) is set + virtual void SMSReception(SMSMessageRef newMessage, + SMSMessageType messageType); + + // CB reception + // only called if setSMSReceptionEvent(...true...) is set + // storage of CBM in ME is not supported by the standard + virtual void CBReception(CBMessageRef newMessage); + + // SMS reception indication (called when SMS is not delivered to TE + // but stored in ME memory) + virtual void SMSReceptionIndication(string storeName, unsigned int index, + SMSMessageType messageType); + + // RING indication + virtual void ringIndication(); + + friend class gsmlib::GsmAt; + }; +}; + +#endif // GSM_EVENT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h new file mode 100644 index 0000000000..d47b7e0cd9 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_map_key.h @@ -0,0 +1,128 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_map_key.h +// * +// * Purpose: Common MapKey implementation for the multimaps in +// * gsm_sorted_sms_store and gsm_sorted_phonebook +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 5.11.1999 +// ************************************************************************* + +#ifndef GSM_MAP_KEY_H +#define GSM_MAP_KEY_H + +#include + +namespace gsmlib +{ + // sort order for MapKeys + + enum SortOrder {ByText = 0, ByTelephone = 1, ByIndex = 2, ByDate = 3, + ByType = 4, ByAddress = 5}; + + // wrapper for map key, can access Sortedtore to get sortOrder() + + template class MapKey + { + public: + SortedStore &_myStore; // my store + // different type keys + Address _addressKey; + Timestamp _timeKey; + int _intKey; + string _strKey; + + public: + // constructors for the different sort keys + MapKey(SortedStore &myStore, Address key) : + _myStore(myStore), _addressKey(key) {} + MapKey(SortedStore &myStore, Timestamp key) : + _myStore(myStore), _timeKey(key) {} + MapKey(SortedStore &myStore, int key) : + _myStore(myStore), _intKey(key) {} + MapKey(SortedStore &myStore, string key) : + _myStore(myStore), _strKey(key) {} + +/* + friend + bool operator< +#ifndef WIN32 + <> +#endif + (const MapKey &x, + const MapKey &y); + friend + bool operator== +#ifndef WIN32 + <> +#endif + (const MapKey &x, + const MapKey &y); +*/ + }; + + // compare two keys + template + extern bool operator<(const MapKey &x, + const MapKey &y); + template + extern bool operator==(const MapKey &x, + const MapKey &y); + + // MapKey members + + template + bool operator<(const MapKey &x, + const MapKey &y) + { + assert(&x._myStore == &y._myStore); + + switch (x._myStore.sortOrder()) + { + case ByDate: + return x._timeKey < y._timeKey; + case ByAddress: + return x._addressKey < y._addressKey; + case ByIndex: + case ByType: + return x._intKey < y._intKey; + case ByTelephone: + return Address(x._strKey) < Address(y._strKey); + case ByText: + return x._strKey < y._strKey; + default: + assert(0); + return true; + } + } + + template + bool operator==(const MapKey &x, + const MapKey &y) + { + assert(&x._myStore == &y._myStore); + + switch (x._myStore.sortOrder()) + { + case ByDate: + return x._timeKey == y._timeKey; + case ByAddress: + return x._addressKey == y._addressKey; + case ByIndex: + case ByType: + return x._intKey == y._intKey; + case ByTelephone: + return Address(x._strKey) == Address(y._strKey); + case ByText: + return x._strKey == y._strKey; + default: + assert(0); + return true; + } + } +}; + +#endif // GSM_MAP_KEY_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc new file mode 100644 index 0000000000..1f9e84581a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.cc @@ -0,0 +1,1254 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_me_ta.cc +// * +// * Purpose: Mobile Equipment/Terminal Adapter functions +// * (ETSI GSM 07.07) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 10.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +#include + +using namespace std; +using namespace gsmlib; + +// Capabilities members + +Capabilities::Capabilities() : + _hasSMSSCAprefix(true), + _cpmsParamCount(-1), // initialize to -1, must be set later by + // setSMSStore() function + _omitsColon(true), // FIXME + _veryShortCOPSanswer(false), // Falcom A2-1 + _wrongSMSStatusCode(false), // Motorola Timeport 260 + _CDSmeansCDSI(false), // Nokia Cellular Card Phone RPE-1 GSM900 and + // Nokia Card Phone RPM-1 GSM900/1800 + _sendAck(false) // send ack for directly routed SMS +{ +} + +// MeTa members + +void MeTa::init() throw(GsmException) +{ + // switch on extended error codes + // caution: may be ignored by some TAs, so allow it to fail + _at->chat("+CMEE=1", "", true, true); + + // select SMS pdu mode + _at->chat("+CMGF=0"); + + // now fill in capability object + MEInfo info = getMEInfo(); + + // Ericsson model 6050102 + if ((info._manufacturer == "ERICSSON" && + (info._model == "1100801" || + info._model == "1140801")) || + getenv("GSMLIB_SH888_FIX") != NULL) + { + // the Ericsson leaves out the service centre address + _capabilities._hasSMSSCAprefix = false; + } + + // handle Falcom strangeness + if ((info._manufacturer == "Funkanlagen Leipoldt OHG" && + info._revision == "01.95.F2") || + getenv("GSMLIB_FALCOM_A2_1_FIX") != NULL) + { + _capabilities._veryShortCOPSanswer = true; + } + + // handle Motorola SMS store bug - wrong status code + if ((info._manufacturer == "Motorola" && + info._model == "L Series")) + { + _capabilities._wrongSMSStatusCode = true; + } + + // handle Nokia Cellular Card Phone RPE-1 GSM900 and + // Nokia Card Phone RPM-1 GSM900/1800 bug - CDS means CDSI + if ((info._manufacturer == "Nokia Mobile Phones" && + (info._model == "Nokia Cellular Card Phone RPE-1 GSM900" || + info._model == "Nokia Card Phone RPM-1 GSM900/1800"))) + { + _capabilities._CDSmeansCDSI = true; + } + + // find out whether we are supposed to send an acknowledgment + Parser p(_at->chat("+CSMS?", "+CSMS:")); + _capabilities._sendAck = p.parseInt() >= 1; + + // set GSM default character set + try + { + setCharSet("GSM"); + } + catch (GsmException) + { + // ignore errors, some devices don't support this + } + + // set default event handler + // necessary to handle at least RING indications that might + // otherwise confuse gsmlib + _at->setEventHandler(&_defaultEventHandler); +} + +MeTa::MeTa(Ref port) throw(GsmException) : _port(port) +{ + // initialize AT handling + _at = new GsmAt(*this); + + init(); +} + +// MeTa::MeTa(Ref at) throw(GsmException) : +// _at(at) +// { +// init(); +// } + +void MeTa::setPIN(string pin) throw(GsmException) +{ + _at->chat("+CPIN=\"" + pin + "\""); +} + +string MeTa::getPINStatus() throw(GsmException) +{ + Parser p(_at->chat("+CPIN?", "+CPIN:")); + return p.parseString(); +} + +void MeTa::setPhonebook(string phonebookName) throw(GsmException) +{ + if (phonebookName != _lastPhonebookName) + { + _at->chat("+CPBS=\"" + phonebookName + "\""); + _lastPhonebookName = phonebookName; + } +} + +string MeTa::setSMSStore(string smsStore, int storeTypes, bool needResultCode) + throw(GsmException) +{ + if (_capabilities._cpmsParamCount == -1) + { + // count the number of parameters for the CPMS AT sequences + _capabilities._cpmsParamCount = 1; + Parser p(_at->chat("+CPMS=?", "+CPMS:")); + p.parseStringList(); + while (p.parseComma(true)) + { + ++_capabilities._cpmsParamCount; + p.parseStringList(); + } + } + + // optimatization: only set current SMS store if different from last call + // or the result code is needed + if (needResultCode || _lastSMSStoreName != smsStore) + { + _lastSMSStoreName = smsStore; + + // build chat string + string chatString = "+CPMS=\"" + smsStore + "\""; + for (int i = 1; i < min(_capabilities._cpmsParamCount, storeTypes); ++i) + chatString += ",\"" + smsStore + "\""; + + return _at->chat(chatString, "+CPMS:"); + } + return ""; +} + +void MeTa::getSMSStore(string &readDeleteStore, + string &writeSendStore, + string &receiveStore) throw(GsmException) +{ + Parser p(_at->chat("+CPMS?", "+CPMS:")); + writeSendStore = receiveStore = ""; + readDeleteStore = p.parseString(); + p.parseComma(); + p.parseInt(); + p.parseComma(); + p.parseInt(); + if (p.parseComma(true)) + { + writeSendStore = p.parseString(); + p.parseComma(); + p.parseInt(); + p.parseComma(); + p.parseInt(); + if (p.parseComma(true)) + { + receiveStore = p.parseString(); + } + } +} + +void MeTa::waitEvent(GsmTime timeout) throw(GsmException) +{ + if (_at->wait(timeout)) + _at->chat(); // send AT, wait for OK, handle events +} + +// aux function for MeTa::getMEInfo() + +static string stringVectorToString(const vector& v, + char separator = '\n') +{ + if (v.empty()) + return ""; + + // concatenate string in vector as rows + string result; + for (vector::const_iterator i = v.begin();;) + { + string s = *i; + // remove leading and trailing "s + if (s.length() > 0 && s[0] == '"') + s.erase(s.begin()); + if (s.length() > 0 && s[s.length() - 1] == '"') + s.erase(s.end() - 1); + + result += s; + // don't add end line to last + if ( ++i == v.end() || !separator) + break; + result += separator; + } + return result; +} + +MEInfo MeTa::getMEInfo() throw(GsmException) +{ + MEInfo result; + // some TAs just return OK and no info line + // leave the info empty in this case + // some TAs return multirows with info like address, firmware version + result._manufacturer = + stringVectorToString(_at->chatv("+CGMI", "+CGMI:", false)); + result._model = stringVectorToString(_at->chatv("+CGMM", "+CGMM:", false)); + result._revision = + stringVectorToString(_at->chatv("+CGMR", "+CGMR:", false)); + result._serialNumber = + stringVectorToString(_at->chatv("+CGSN", "+CGSN:", false),0); + return result; +} + +vector MeTa::getSupportedCharSets() throw(GsmException) +{ + Parser p(_at->chat("+CSCS=?", "+CSCS:")); + return p.parseStringList(); +} + +string MeTa::getCurrentCharSet() throw(GsmException) +{ + if (_lastCharSet == "") + { + Parser p(_at->chat("+CSCS?", "+CSCS:")); + _lastCharSet = p.parseString(); + } + return _lastCharSet; +} + +void MeTa::setCharSet(string charSetName) throw(GsmException) +{ + _at->chat("+CSCS=\"" + charSetName + "\""); + _lastCharSet = ""; +} + +string MeTa::getExtendedErrorReport() throw(GsmException) +{ + return _at->chat("+CEER", "+CEER:"); +} + +void MeTa::dial(string number) throw(GsmException) +{ + _at->chat("D" + number + ";"); +} + +void MeTa::answer() throw(GsmException) +{ + _at->chat("A"); +} + +void MeTa::hangup() throw(GsmException) +{ + _at->chat("H"); + +} + +vector MeTa::getAvailableOPInfo() throw(GsmException) +{ + vector result; + vector responses = _at->chatv("+COPS=?", "+COPS:"); + + // special treatment for Falcom A2-1, answer looks like + // responses.push_back("(1,29341),(3,29340)"); + if (_capabilities._veryShortCOPSanswer) + { + if (responses.size() == 1) + { + Parser p(responses[0]); + while (p.parseChar('(', true)) + { + OPInfo opi; + opi._status = (OPStatus)p.parseInt(); + p.parseComma(); + opi._numericName = p.parseInt(); + p.parseChar(')'); + p.parseComma(true); + result.push_back(opi); + } + } + } + else + // some formats I have encountered... + //responses.push_back("2,,,31017,,(0,1),(2)"); + //responses.push_back("(3,\"UK CELLNET\",\"CLNET\",\"23410\")," + // "(3,\"ONE2 ONE\",\"ONE2ONE\",\"23430\")," + // "(3,\"ORANGE\",\"ORANGE\",\"23433\")"); + //responses.push_back("(2,\"D1-TELEKOM\",,26201)," + // "(3,\"D2 PRIVAT\",,26202),,(0,1,3,4),(0,2)"); + // some phones arbitrarily split the response into several lines + //responses.push_back("(1,\"AMENA\",,\"21403\")," + // "(3,\"MOVISTAR\",,\"21407\"),"); + //responses.push_back("(3,\"E VODAFONE\",,\"21401\"),,(0,1),(2)"); + + // GSM modems might return + // 1. quadruplets of info enclosed in brackets separated by comma + // 2. several lines of quadruplets of info enclosed in brackets + // 3. several lines of quadruplets without brackets and additional + // info at EOL (e.g. Nokia 8290) + for (vector::iterator i = responses.begin(); + i != responses.end(); ++i) + { +// while (i->length() > 0 && ! isprint((*i)[i->length() - 1])) +// i->erase(i->length() - 1, 1); + + bool expectClosingBracket = false; + Parser p(*i); + while (1) + { + OPInfo opi; + expectClosingBracket = p.parseChar('(', true); + int status = p.parseInt(true); + opi._status = (status == NOT_SET ? UnknownOPStatus : (OPStatus)status); + p.parseComma(); + opi._longName = p.parseString(true); + p.parseComma(); + opi._shortName = p.parseString(true); + p.parseComma(); + try + { + opi._numericName = p.parseInt(true); + } + catch (GsmException &e) + { + if (e.getErrorClass() == ParserError) + { + // the Ericsson GM12 GSM modem returns the numeric ID as string + string s = p.parseString(); + opi._numericName = checkNumber(s); + } + else + throw e; + } + if (expectClosingBracket) p.parseChar(')'); + result.push_back(opi); + if (! p.parseComma(true)) break; + // two commas ",," mean the list is finished + if (p.getEol() == "" || p.parseComma(true)) break; + } + // without brackets, the ME/TA must use format 3. + if (! expectClosingBracket) break; + } + return result; +} + +OPInfo MeTa::getCurrentOPInfo() throw(GsmException) +{ + OPInfo result; + + // 1. This exception thing is necessary because not all ME/TA combinations + // might support all the formats and then return "ERROR". + // 2. Additionally some modems return "ERROR" for all "COPS=3,n" command + // and report only one format with the "COPS?" command (e.g. Nokia 8290). + + // get long format + try + { + try + { + _at->chat("+COPS=3,0"); + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + Parser p(_at->chat("+COPS?", "+COPS:")); + result._mode = (OPModes)p.parseInt(); + // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0" + // if no network connection + if (p.parseComma(true)) + { + if (p.parseInt() == 0) + { + p.parseComma(); + result._longName = p.parseString(); + } + } + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + + // get short format + try + { + try + { + _at->chat("+COPS=3,1"); + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + Parser p(_at->chat("+COPS?", "+COPS:")); + result._mode = (OPModes)p.parseInt(); + // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0" + // if no network connection + if (p.parseComma(true)) + { + if (p.parseInt() == 1) + { + p.parseComma(); + result._shortName = p.parseString(); + } + } + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + + // get numeric format + try + { + try + { + _at->chat("+COPS=3,2"); + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + Parser p(_at->chat("+COPS?", "+COPS:")); + result._mode = (OPModes)p.parseInt(); + // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0" + // if no network connection + if (p.parseComma(true)) + { + if (p.parseInt() == 2) + { + p.parseComma(); + try + { + result._numericName = p.parseInt(); + } + catch (GsmException &e) + { + if (e.getErrorClass() == ParserError) + { + // the Ericsson GM12 GSM modem returns the numeric ID as string + string s = p.parseString(); + result._numericName = checkNumber(s); + } + else + throw e; + } + } + } + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + return result; +} + +void MeTa::setCurrentOPInfo(OPModes mode, + string longName, + string shortName, + int numericName) throw(GsmException) +{ + bool done = false; + if (longName != "") + { + try + { + _at->chat("+COPS=" + intToStr((int)mode) + ",0,\"" + longName + "\""); + done = true; + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + } + if (shortName != "" && ! done) + { + try + { + _at->chat("+COPS=" + intToStr((int)mode) + ",1,\"" + shortName + "\""); + done = true; + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + } + if (numericName != NOT_SET && ! done) + { + try + { + _at->chat("+COPS=" + intToStr((int)mode) + ",2," + + intToStr(numericName)); + done = true; + } + catch (GsmException &e) + { + if (e.getErrorClass() != ChatError) throw; + } + } + if (! done) + throw GsmException(_("unable to set operator"), OtherError); +} + +vector MeTa::getFacilityLockCapabilities() throw(GsmException) +{ + string locks = _at->chat("+CLCK=?", "+CLCK:"); + // some TA don't add '(' and ')' (Option FirstFone) + if (locks.length() && locks[0] != '(') + { + locks.insert(locks.begin(),'('); + locks += ')'; + } + Parser p(locks); + return p.parseStringList(); +} + +bool MeTa::getFacilityLockStatus(string facility, FacilityClass cl) + throw(GsmException) +{ + // some TA return always multiline response with all classes + // (Option FirstFone) + // !!! errors handling is correct (responses.empty() true) ? + vector responses = + _at->chatv("+CLCK=\"" + facility + "\",2,," + intToStr((int)cl),"+CLCK:",true); + for (vector::iterator i = responses.begin(); + i != responses.end(); ++i) + { + Parser p(*i); + int enabled = p.parseInt(); + + // if the first time and there is no comma this + // return direct state of classes + // else return all classes + if (i == responses.begin()) + { + if (!p.parseComma(true)) + return enabled == 1; + } + else + p.parseComma(); + + if ( p.parseInt() == (int)cl ) + return enabled == 1; + } + return false; + +// Parser p(_at->chat("+CLCK=\"" + facility + "\",2,," + intToStr((int)cl), +// "+CLCK:")); +// return p.parseInt() == 1; +} + +void MeTa::lockFacility(string facility, FacilityClass cl, string passwd) + throw(GsmException) +{ + if (passwd == "") + _at->chat("+CLCK=\"" + facility + "\",1,," + intToStr((int)cl)); + else + _at->chat("+CLCK=\"" + facility + "\",1,\"" + passwd + "\"," + + intToStr((int)cl)); +} + +void MeTa::unlockFacility(string facility, FacilityClass cl, string passwd) + throw(GsmException) +{ + if (passwd == "") + _at->chat("+CLCK=\"" + facility + "\",0,," + intToStr((int)cl)); + else + _at->chat("+CLCK=\"" + facility + "\",0,\"" + passwd + "\"," + + intToStr((int)cl)); +} + +vector MeTa::getPasswords() throw(GsmException) +{ + vector result; + Parser p(_at->chat("+CPWD=?", "+CPWD:")); + while (1) + { + PWInfo pwi; + if (!p.parseChar('(', true)) break; // exit if no new tuple + pwi._facility = p.parseString(); + p.parseComma(); + pwi._maxPasswdLen = p.parseInt(); + p.parseChar(')'); + p.parseComma(true); + result.push_back(pwi); + } + return result; +} + +void MeTa::setPassword(string facility, string oldPasswd, string newPasswd) + throw(GsmException) +{ + _at->chat("+CPWD=\"" + facility + "\",\"" + oldPasswd + "\",\"" + + newPasswd + "\""); +} + +bool MeTa::getNetworkCLIP() throw(GsmException) +{ + Parser p(_at->chat("+CLIP?", "+CLIP:")); + p.parseInt(); // ignore result code presentation + p.parseComma(); + return p.parseInt() == 1; +} + +void MeTa::setCLIPPresentation(bool enable) throw(GsmException) +{ + if (enable) + _at->chat("+CLIP=1"); + else + _at->chat("+CLIP=0"); +} + +bool MeTa::getCLIPPresentation() throw(GsmException) +{ + Parser p(_at->chat("+CLIP?", "+CLIP:")); + return p.parseInt() == 1; // ignore rest of line +} + +void MeTa::setCallForwarding(ForwardReason reason, + ForwardMode mode, + string number, + string subaddr, + FacilityClass cl, + int forwardTime) throw(GsmException) +{ + // FIXME subaddr is currently ignored + if (forwardTime != NOT_SET && (forwardTime < 0 || forwardTime > 30)) + throw GsmException(_("call forward time must be in the range 0..30"), + ParameterError); + + int numberType; + number = removeWhiteSpace(number); + if (number.length() > 0 && number[0] == '+') + { + numberType = InternationalNumberFormat; + number = number.substr(1); // skip the '+' at the beginning + } + else + numberType = UnknownNumberFormat; + _at->chat("+CCFC=" + intToStr(reason) + "," + intToStr(mode) + "," + "\"" + number + "\"," + + (number.length() > 0 ? intToStr(numberType) : "") + + "," + intToStr(cl) + + // FIXME subaddr and type + (forwardTime == NOT_SET ? "" : + (",,," + intToStr(forwardTime)))); +} + +void MeTa::getCallForwardInfo(ForwardReason reason, + ForwardInfo &voice, + ForwardInfo &fax, + ForwardInfo &data) throw(GsmException) +{ + // Initialize to some sensible values: + voice._active = false; + voice._cl = VoiceFacility; + voice._time = -1; + voice._reason = NoReason; + data._active = false; + data._cl = DataFacility; + data._time = -1; + data._reason = NoReason; + fax._active = false; + fax._cl = FaxFacility; + fax._time = -1; + fax._reason = NoReason; + + vector responses = + _at->chatv("+CCFC=" + intToStr(reason) + ",2", "+CCFC:"); + if (responses.size() == 1) + { + // only one line was returned. We have to ask for all three classes + // (voice, data, fax) separately + responses.clear(); + responses.push_back(_at->chat("+CCFC=" + intToStr(reason) + + ",2,,,1", "+CCFC:")); + responses.push_back(_at->chat("+CCFC=" + intToStr(reason) + + ",2,,,2", "+CCFC:")); + responses.push_back(_at->chat("+CCFC=" + intToStr(reason) + + ",2,,,4", "+CCFC:")); + } + + for (vector::iterator i = responses.begin(); + i != responses.end(); ++i) + { + Parser p(*i); + int status = p.parseInt(); + p.parseComma(); + FacilityClass cl = (FacilityClass)p.parseInt(); + string number; + string subAddr; + int forwardTime = NOT_SET; + + // parse number + if (p.parseComma(true)) + { + number = p.parseString(); + p.parseComma(); + unsigned int numberType = p.parseInt(); + if (numberType == InternationalNumberFormat) number = "+" + number; + + // parse subaddr + if (p.parseComma(true)) + { + // FIXME subaddr type not handled + subAddr = p.parseString(true); + p.parseComma(); + p.parseInt(true); + + // parse forwardTime + if (p.parseComma(true)) + { + forwardTime = p.parseInt(); + } + } + } + switch (cl) + { + case VoiceFacility: + voice._active = (status == 1); + voice._cl = VoiceFacility; + voice._number = number; + voice._subAddr = subAddr; + voice._time = forwardTime; + voice._reason = reason; + break; + case DataFacility: + data._active = (status == 1); + data._cl = DataFacility; + data._number = number; + data._subAddr = subAddr; + data._time = forwardTime; + data._reason = reason; + break; + case FaxFacility: + fax._active = (status == 1); + fax._cl = FaxFacility; + fax._number = number; + fax._subAddr = subAddr; + fax._time = forwardTime; + fax._reason = reason; + break; + } + } +} + +int MeTa::getBatteryChargeStatus() throw(GsmException) +{ + Parser p(_at->chat("+CBC", "+CBC:")); + return p.parseInt(); +} + +int MeTa::getBatteryCharge() throw(GsmException) +{ + Parser p(_at->chat("+CBC", "+CBC:")); + p.parseInt(); + p.parseComma(); + return p.parseInt(); +} + +int MeTa::getFunctionalityLevel() throw(GsmException) +{ + try { + Parser p(_at->chat("+CFUN?", "+CFUN:")); + // some phones return functionality level like "(2)" + bool expectClosingParen = p.parseChar('(', true); + int result = p.parseInt(); + if (expectClosingParen) + p.parseChar(')'); + return result; + } + catch (GsmException &x) + { + if (x.getErrorClass() == ChatError) + { + throw GsmException(_("Functionality Level commands not supported by ME"), + MeTaCapabilityError); + } else { + throw; + } + } +} + +void MeTa::setFunctionalityLevel(int level) throw(GsmException) +{ + try { + Parser p(_at->chat("+CFUN=" + intToStr(level))); + } catch (GsmException &x) { + if (x.getErrorClass() == ChatError) + { + // If the command AT+CFUN commands really aren't supported by the ME, + // then this will throw an appropriate exception for us. + getFunctionalityLevel(); + // If the number was just out of range, we get here. + throw GsmException(_("Requested Functionality Level out of range"), + ParameterError); + } + throw; + } +} + +int MeTa::getSignalStrength() throw(GsmException) +{ + Parser p(_at->chat("+CSQ", "+CSQ:")); + return p.parseInt(); +} + +int MeTa::getBitErrorRate() throw(GsmException) +{ + Parser p(_at->chat("+CSQ", "+CSQ:")); + p.parseInt(); + p.parseComma(); + return p.parseInt(); +} + +vector MeTa::getPhoneBookStrings() throw(GsmException) +{ + Parser p(_at->chat("+CPBS=?", "+CPBS:")); + return p.parseStringList(); +} + +PhonebookRef MeTa::getPhonebook(string phonebookString, + bool preload) throw(GsmException) +{ + for (PhonebookVector::iterator i = _phonebookCache.begin(); + i != _phonebookCache.end(); ++i) + { + if ((*i)->name() == phonebookString) + return *i; + } + PhonebookRef newPb(new Phonebook(phonebookString, _at, *this, preload)); + _phonebookCache.push_back(newPb); + return newPb; +} + +string MeTa::getServiceCentreAddress() throw(GsmException) +{ + Parser p(_at->chat("+CSCA?", "+CSCA:")); + return p.parseString(); +} + +void MeTa::setServiceCentreAddress(string sca) throw(GsmException) +{ + int type; + sca = removeWhiteSpace(sca); + if (sca.length() > 0 && sca[0] == '+') + { + type = InternationalNumberFormat; + sca = sca.substr(1, sca.length() - 1); + } + else + type = UnknownNumberFormat; + Parser p(_at->chat("+CSCA=\"" + sca + "\"," + intToStr(type))); +} + +vector MeTa::getSMSStoreNames() throw(GsmException) +{ + Parser p(_at->chat("+CPMS=?", "+CPMS:")); + // only return values + return p.parseStringList(); +} + +SMSStoreRef MeTa::getSMSStore(string storeName) throw(GsmException) +{ + for (SMSStoreVector::iterator i = _smsStoreCache.begin(); + i != _smsStoreCache.end(); ++i) + { + if ((*i)->name() == storeName) + return *i; + } + SMSStoreRef newSs(new SMSStore(storeName, _at, *this)); + _smsStoreCache.push_back(newSs); + return newSs; +} + +void MeTa::sendSMS(Ref smsMessage) throw(GsmException) +{ + smsMessage->setAt(_at); + smsMessage->send(); +} + +void MeTa::sendSMSs(Ref smsTemplate, string text, + bool oneSMS, + int concatenatedMessageId) + throw(GsmException) +{ + assert(! smsTemplate.isnull()); + + // compute maximum text length for normal SMSs and concatenated SMSs + unsigned int maxTextLength, concMaxTextLength; + switch (smsTemplate->dataCodingScheme().getAlphabet()) + { + case DCS_DEFAULT_ALPHABET: + maxTextLength = 160; + concMaxTextLength = 152; + break; + case DCS_EIGHT_BIT_ALPHABET: + maxTextLength = 140; + concMaxTextLength = 134; + break; + case DCS_SIXTEEN_BIT_ALPHABET: + maxTextLength = 70; + concMaxTextLength = 67; + break; + default: + throw GsmException(_("unsupported alphabet for SMS"), + ParameterError); + break; + } + + // simple case, only send one SMS + if (oneSMS || text.length() <= maxTextLength) + { + if (text.length() > maxTextLength) + throw GsmException(_("SMS text is larger than allowed"), + ParameterError); + smsTemplate->setUserData(text); + sendSMS(smsTemplate); + } + else // send multiple SMSs + { + if (concatenatedMessageId != -1) + maxTextLength = concMaxTextLength; + + int numMessages = (text.length() + maxTextLength - 1) / maxTextLength; + if (numMessages > 255) + throw GsmException(_("not more than 255 concatenated SMSs allowed"), + ParameterError); + unsigned char numMessage = 0; + while (true) + { + if (concatenatedMessageId != -1) + { + unsigned char udhs[] = {0x00, 0x03, concatenatedMessageId, + numMessages, ++numMessage}; + UserDataHeader udh(string((char*)udhs, 5)); + smsTemplate->setUserDataHeader(udh); + } + smsTemplate->setUserData(text.substr(0, maxTextLength)); + sendSMS(smsTemplate); + if (text.length() < maxTextLength) + break; + text.erase(0, maxTextLength); + } + } +} + +void MeTa::setMessageService(int serviceLevel) throw(GsmException) +{ + string s; + switch (serviceLevel) + { + case 0: + s = "0"; + break; + case 1: + s = "1"; + break; + default: + throw GsmException(_("only serviceLevel 0 or 1 supported"), + ParameterError); + } + // some devices (eg. Origo 900) don't support service level setting + _at->chat("+CSMS=" + s, "+CSMS:", true); +} + +unsigned int MeTa::getMessageService() throw(GsmException) +{ + Parser p(_at->chat("+CSMS?", "+CSMS:")); + return p.parseInt(); +} + +void MeTa::getSMSRoutingToTA(bool &smsRouted, + bool &cbsRouted, + bool &statusReportsRouted) throw(GsmException) +{ + Parser p(_at->chat("+CNMI?", "+CNMI:")); + p.parseInt(); + int smsMode = 0; + int cbsMode = 0; + int statMode = 0; + int bufferMode = 0; + + if (p.parseComma(true)) + { + smsMode = p.parseInt(); + if (p.parseComma(true)) + { + cbsMode = p.parseInt(); + if (p.parseComma(true)) + { + statMode = p.parseInt(); + if (p.parseComma(true)) + { + bufferMode = p.parseInt(); + } + } + } + } + + smsRouted = (smsMode == 2) || (smsMode == 3); + cbsRouted = (cbsMode == 2) || (cbsMode == 3); + statusReportsRouted = (statMode == 1); +} + +void MeTa::setSMSRoutingToTA(bool enableSMS, bool enableCBS, + bool enableStatReport, + bool onlyReceptionIndication) + throw(GsmException) +{ + bool smsModesSet = false; + bool cbsModesSet = false; + bool statModesSet = false; + bool bufferModesSet = false; + + // find out capabilities + Parser p(_at->chat("+CNMI=?", "+CNMI:")); + vector modes = p.parseIntList(); + vector smsModes(1); + vector cbsModes(1); + vector statModes(1); + vector bufferModes(1); + if (p.parseComma(true)) + { + smsModes = p.parseIntList(); + smsModesSet = true; + if (p.parseComma(true)) + { + cbsModes = p.parseIntList(); + cbsModesSet = true; + if (p.parseComma(true)) + { + statModes = p.parseIntList(); + statModesSet = true; + if (p.parseComma(true)) + { + bufferModes = p.parseIntList(); + bufferModesSet = true; + } + } + } + } + + // now set the mode vectors to the default if not set + if (! smsModesSet) smsModes[0] = true; + if (! cbsModesSet) cbsModes[0] = true; + if (! statModesSet) statModes[0] = true; + if (! bufferModesSet) bufferModes[0] = true; + + string chatString; + + // now try to set some optimal combination depending on + // ME/TA's capabilities + + // handle modes + if (isSet(modes, 2)) + chatString = "2"; + else if (isSet(modes, 1)) + chatString = "1"; + else if (isSet(modes, 0)) + chatString = "0"; + else if (isSet(modes, 3)) + chatString = "3"; + + if (onlyReceptionIndication) + { + // handle sms mode + if (enableSMS) + { + if (isSet(smsModes, 1)) + chatString += ",1"; + else + throw GsmException(_("cannot route SMS messages to TE"), + MeTaCapabilityError); + } + else + chatString += ",0"; + + // handle cbs mode + if (enableCBS) + { + if (isSet(cbsModes, 1)) + chatString += ",1"; + else if (isSet(cbsModes, 2)) + chatString += ",2"; + else + throw GsmException(_("cannot route cell broadcast messages to TE"), + MeTaCapabilityError); + } + else + chatString += ",0"; + + // handle stat mode + if (enableStatReport) + { + if (isSet(statModes, 2)) + chatString += ",2"; + else + throw GsmException(_("cannot route status reports messages to TE"), + MeTaCapabilityError); + } + else + chatString += ",0"; + } + else + { + // handle sms mode + if (enableSMS) + { + if (isSet(smsModes, 2)) + chatString += ",2"; + else if (isSet(smsModes, 3)) + chatString += ",3"; + else + throw GsmException(_("cannot route SMS messages to TE"), + MeTaCapabilityError); + } + else + chatString += ",0"; + + // handle cbs mode + if (enableCBS) + { + if (isSet(cbsModes, 2)) + chatString += ",2"; + else if (isSet(cbsModes, 3)) + chatString += ",3"; + else + throw GsmException(_("cannot route cell broadcast messages to TE"), + MeTaCapabilityError); + } + else + chatString += ",0"; + + // handle stat mode + if (enableStatReport) + { + if (isSet(statModes, 1)) + chatString += ",1"; + else if (isSet(statModes, 2)) + chatString += ",2"; + else + throw GsmException(_("cannot route status report messages to TE"), + MeTaCapabilityError); + } + else + chatString += ",0"; + } + + // handle buffer mode but only if it was reported by the +CNMI=? command + // the Ericsson GM12 GSM modem does not like it otherwise + if (bufferModesSet) + if (isSet(bufferModes, 1)) + chatString += ",1"; + else + chatString += ",0"; + + _at->chat("+CNMI=" + chatString); +} + +bool MeTa::getCallWaitingLockStatus(FacilityClass cl) + throw(GsmException) +{ + // some TA return always multiline response with all classes + // (Option FirstFone) + // !!! errors handling is correct (responses.empty() true) ? + vector responses = + _at->chatv("+CCWA=0,2," + intToStr((int)cl),"+CCWA:",true); + for (vector::iterator i = responses.begin(); + i != responses.end(); ++i) + { + Parser p(*i); + int enabled = p.parseInt(); + + // if the first time and there is no comma this + // return direct state of classes + // else return all classes + if (i == responses.begin()) + { + if (! p.parseComma(true)) + return enabled == 1; + } + else + p.parseComma(); + + if (p.parseInt() == (int)cl) + return enabled == 1; + } + return false; + +} +void MeTa::setCallWaitingLockStatus(FacilityClass cl, bool lock) + throw(GsmException) +{ + if(lock) + _at->chat("+CCWA=0,1," + intToStr((int)cl)); + else + _at->chat("+CCWA=0,0," + intToStr((int)cl)); +} + +void MeTa::setCLIRPresentation(bool enable) throw(GsmException) +{ + if (enable) + _at->chat("+CLIR=1"); + else + _at->chat("+CLIR=0"); +} + +int MeTa::getCLIRPresentation() throw(GsmException) +{ + // 0:according to the subscription of the CLIR service + // 1:CLIR invocation + // 2:CLIR suppression + Parser p(_at->chat("+CLIR?", "+CLIR:")); + return p.parseInt(); +} + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h new file mode 100644 index 0000000000..f397e84695 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_me_ta.h @@ -0,0 +1,402 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_me_ta.h +// * +// * Purpose: Mobile Equipment/Terminal Adapter and SMS functions +// * (ETSI GSM 07.07 and 07.05) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.5.1999 +// ************************************************************************* + +#ifndef GSM_ME_TA_H +#define GSM_ME_TA_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // *** phone capability description (you could also call it phone quirks) + + struct Capabilities + { + bool _hasSMSSCAprefix; // SMS have service centre address prefix + int _cpmsParamCount; // number of SMS store parameters to + // CPMS command + bool _omitsColon; // omits trailing ':' in AT responses + bool _veryShortCOPSanswer; // Falcom A2-1 + bool _wrongSMSStatusCode; // Motorola Timeport 260 + bool _CDSmeansCDSI; // Nokia Cellular Card Phone RPE-1 GSM900 + bool _sendAck; // send ack for directly routed SMS + Capabilities(); // constructor, set default behaviours + }; + + // *** auxiliary structs + + // Static ME information (AT command sequences given in brackets) + struct MEInfo + { + string _manufacturer; // (+CGMI) + string _model; // (+CGMM) + string _revision; // (+CGMR) + string _serialNumber; // (+CGSN), IMEI + }; + + // modes for network operation selection + enum OPModes {AutomaticOPMode = 0, ManualOPMode = 1, + DeregisterOPMode = 2, ManualAutomaticOPMode = 4}; + + // status codes or network operaton selection + enum OPStatus {UnknownOPStatus = 0, AvailableOPStatus = 1, + CurrentOPStatus = 2, ForbiddenOPStatus = 3}; + + // network operator info + struct OPInfo + { + OPModes _mode; + OPStatus _status; + string _longName; + string _shortName; + int _numericName; // may be NOT_SET + + OPInfo() : _status(UnknownOPStatus), _numericName(NOT_SET) {} + }; + + // facility classes + enum FacilityClass {VoiceFacility = 1, DataFacility = 2, FaxFacility = 4}; + const int ALL_FACILITIES = VoiceFacility | DataFacility | FaxFacility; + + // struct to hold password info + struct PWInfo + { + string _facility; + int _maxPasswdLen; + }; + + // call forward reasons + // AllReasons encompasses 0..3 + // AllConditionalReasons encompasses 1..3 + enum ForwardReason {UnconditionalReason = 0, MobileBusyReason = 1, + NoReplyReason = 2, NotReachableReason = 3, + AllReasons = 4, AllConditionalReasons = 5, NoReason = 6}; + + // call forward modes + enum ForwardMode {DisableMode = 0, EnableMode = 1, + RegistrationMode = 3, ErasureMode = 4}; + + // call forward info + struct ForwardInfo + { + bool _active; // status in the network + FacilityClass _cl; // voice, fax, or data + string _number; // telephone number + string _subAddr; // subaddress + int _time; // time in the range 1..30 (for NoReplyReason) + ForwardReason _reason; // reason for the forwarding + }; + + // SMS types + typedef Ref SMSStoreRef; + typedef vector SMSStoreVector; + + // this class allows access to all functions of a ME/TA as described + // in sections 5-8 of ETSI GSM 07.07 + // Note: If the ME is changed (ie. disconnected an another one connected + // to the TA), a new ME object must be created + // (Mobile equipment = ME, terminal adapter = TA) + class MeTa : public RefBase + { + protected: + Ref _port; // port the ME/TA is connected to + Ref _at; // chat object for the port + PhonebookVector _phonebookCache; // cache of all used phonebooks + SMSStoreVector _smsStoreCache; // cache of all used phonebooks + string _lastPhonebookName; // remember last phonebook set on ME/TA + string _lastSMSStoreName; // remember last SMS store set on ME/TA + Capabilities _capabilities; // ME/TA quirks + GsmEvent _defaultEventHandler; // default event handler + // see comments in MeTa::init() + string _lastCharSet; // remember last character set + + // init ME/TA to sensible defaults + void init() throw(GsmException); + + public: + // initialize a new MeTa object given the port + MeTa(Ref port) throw(GsmException); + + // initialize a new MeTa object given the AT handler + //MeTa(Ref at) throw(GsmException); + + // set the current phonebook in the ME + // remember the last phonebook set for optimisation + void setPhonebook(string phonebookName) throw(GsmException); + + // set the current SMS store in the ME + // set storeTypes to + // 1 to set store for reading and deleting + // 2 to set store for writing and sending (includes type 1) + // 3 to preferred store for receiving SMS (includes types 1 and 2) + // remember the last SMS store set for optimisation + // if needResultCode is set this optimisation is not done + string setSMSStore(string smsStore, int storeTypes, + bool needResultCode = false) + throw(GsmException); + + // get current SMS store settings + void getSMSStore(string &readDeleteStore, + string &writeSendStore, + string &receiveStore) throw(GsmException); + + // get capabilities of this ME/TA + Capabilities getCapabilities() const {return _capabilities;} + + // return my port + Ref getPort() {return _port;} + + // return my at handler + Ref getAt() {return _at;} + + // set event handler for unsolicited result codes + GsmEvent *setEventHandler(GsmEvent *newHandler) + {return _at->setEventHandler(newHandler);} + + // wait for an event + void waitEvent(GsmTime timeout) throw(GsmException); + + // *** ETSI GSM 07.07 Section 5: "General Commands" + + // return ME information + MEInfo getMEInfo() throw(GsmException); + + // return available character sets + vector getSupportedCharSets() throw(GsmException);// (+CSCS=?) + + // return current character set (default: GSM) + string getCurrentCharSet() throw(GsmException);// (+CSCS?) + + // set character set to use + void setCharSet(string charSetName) throw(GsmException);// (+CSCS=) + + // *** ETSI GSM 07.07 Section 6: "Call control commands and methods" + + // get extended error report + string getExtendedErrorReport() throw(GsmException);// (+CEER) + + // dial a number, CLI presentation as defined in network + void dial(string number) throw(GsmException);// (ATD) + + // answer + void answer() throw(GsmException); // (ATA) + + // hangup + void hangup() throw(GsmException); // (ATH) + + // set Personal Identification Number + void setPIN(string number) throw(GsmException);// (+CPIN) + + // get PIN Status + string getPINStatus() throw(GsmException);// (+CPIN?) + + // *** ETSI GSM 07.07 Section 7: "Network service related commands" + + // return available network operators + // this fills in all fields of OPInfo with the exception of _mode + vector getAvailableOPInfo() throw(GsmException); // (+COPS=?) + + // return current network operators + // this fills in all the fields of OPInfo with the exception of _status + OPInfo getCurrentOPInfo() throw(GsmException); + + // set network operator + // caller must fill in ALL names it has read from previous calls + // of getCurrentOPInfo() or getAvailableOPInfo() + // (because ME/TA might not implement all names) + void setCurrentOPInfo(OPModes mode, + string longName = "", + string shortName = "", + int numericName = NOT_SET) throw(GsmException); + + // get facility lock capabilities (+CLCK) + vector getFacilityLockCapabilities() throw(GsmException); + + // query facility lock status for named facility + bool getFacilityLockStatus(string facility, FacilityClass cl) + throw(GsmException); + + // lock facility + void lockFacility(string facility, FacilityClass cl, string passwd = "") + throw(GsmException); + + // unlock facility + void unlockFacility(string facility, FacilityClass cl, string passwd = "") + throw(GsmException); + + // return names of facility for which a password can be set + // and the maximum length of the respective password + vector getPasswords() throw(GsmException);// (+CPWD=?) + + // set password for the given facility + void setPassword(string facility, string oldPasswd, string newPasswd) + throw(GsmException); + // (+CPWD=) + + // get CLIP (caller line identification presentation) in the network + bool getNetworkCLIP() throw(GsmException);// (+CLIP?) + + // set CLIP presentation on or off + // enables GsmEvent::callerLineID + void setCLIPPresentation(bool enable) throw(GsmException);// (+CLIP=) + + // returns if the above is enable + bool getCLIPPresentation() throw(GsmException);// (+CLIP?) + + // set call forwarding + void setCallForwarding(ForwardReason reason, + ForwardMode mode, + string number, + string subaddr, + FacilityClass cl = (FacilityClass)ALL_FACILITIES, + int forwardTime = NOT_SET) + throw(GsmException); // (+CCFC=) + + // get Information of currently set CF in the network + // the caller must give the reason to query + void getCallForwardInfo(ForwardReason reason, + ForwardInfo &voice, + ForwardInfo &fax, + ForwardInfo &data) + throw(GsmException); // (+CCFC=) + + + // *** ETSI GSM 07.07 Section 8: "Mobile Equipment control + // and status commands" + + // return/set ME functionality level (+CFUN): + // 0 Minimum functionality + // 1 full functionality + // 2 disable phone transmit RF circuits only + // 3 disable phone receive RF circuits only + // 4 disable phone both transmit and receive RF circuits + // 5...127 implementation-defined + int getFunctionalityLevel() throw(GsmException); + void setFunctionalityLevel(int level) throw(GsmException); + + // return battery charge status (+CBC): + // 0 ME is powered by the battery + // 1 ME has a battery connected, but is not powered by it + // 2 ME does not have a battery connected + // 3 Recognized power fault, calls inhibited + int getBatteryChargeStatus() throw(GsmException); + + // return battery charge (range 0..100) (+CBC) + int getBatteryCharge() throw(GsmException); + + // get signal strength indication (+CSQ): + // 0 -113 dBm or less + // 1 -111 dBm + // 2...30 -109... -53 dBm + // 31 -51 dBm or greater + // 99 not known or not detectable + int getSignalStrength() throw(GsmException); + + // get channel bit error rate (+CSQ): + // 0...7 as RXQUAL values in the table in GSM 05.08 [20] subclause 8.2.4 + // 99 not known or not detectable + int getBitErrorRate() throw(GsmException); + + // get available phone book memory storage strings (+CPBS=?) + vector getPhoneBookStrings() throw(GsmException); + + // get phone book given the phone book memory storage string + PhonebookRef getPhonebook(string phonebookString, + bool preload = false) throw(GsmException); + + + // *** ETSI GSM 07.05 SMS functions + + // return service centre address (+CSCA?) + string getServiceCentreAddress() throw(GsmException); + + // set service centre address (+CSCA=) + void setServiceCentreAddress(string sca) throw(GsmException); + + // return names of available message stores (, +CPMS=?) + vector getSMSStoreNames() throw(GsmException); + + // return SMS store given the name + SMSStoreRef getSMSStore(string storeName) throw(GsmException); + + // send a single SMS message + void sendSMS(Ref smsMessage) throw(GsmException); + + // send one or several (concatenated) SMS messages + // The SUBMIT message template must have all options set, only + // the userData and the userDataHeader are changed. + // If oneSMS is true, only one SMS is sent. Otherwise several SMSs + // are sent. If concatenatedMessageId is != -1 this is used as the message + // ID for concatenated SMS (for this a user data header as defined in + // GSM GTS 3.40 is used, the old UDH in the template is overwritten). + void sendSMSs(Ref smsTemplate, string text, + bool oneSMS = false, + int concatenatedMessageId = -1) + throw(GsmException); + + // set SMS service level + // if set to 1 send commands return ACK PDU, 0 is the default + void setMessageService(int serviceLevel) throw(GsmException); + + // return SMS service level + unsigned int getMessageService() throw(GsmException); + + // return true if any of the thre message types GsmEvent::SMSMessageType + // is routed directly to the TA and not stored in the ME + void getSMSRoutingToTA(bool &smsRouted, // (+CNMI?) + bool &cbsRouted, + bool &statusReportsRouted) throw(GsmException); + + // sets routing of SMS to TA to true for all supported SMSMessageTypes + // if onlyReceptionIndication is set to true + // only GsmEvent::SMSReceptionIndication is called + // this has two reasons: GSM 07.05 section 3.4.1 does not recommend + // direct routing of new SMS to the TA + // I cannot test direct routing of SMS because it does not work with + // my hardware + void setSMSRoutingToTA(bool enableSMS, bool enableCBS, + bool enableStatReport, + bool onlyReceptionIndication = true) + throw(GsmException); + // (+CNMI=) + + bool getCallWaitingLockStatus(FacilityClass cl) + throw(GsmException); + + void setCallWaitingLockStatus(FacilityClass cl, + bool lock)throw(GsmException); + + void setCLIRPresentation(bool enable) throw(GsmException); + //(+CLIR) + + // 0:according to the subscription of the CLIR service + // 1:CLIR invocation + // 2:CLIR suppression + int getCLIRPresentation() throw(GsmException); + + friend class Phonebook; + friend class SMSStore; + }; +}; + +#endif // GSM_ME_TA_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc new file mode 100644 index 0000000000..5eb205bf81 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.cc @@ -0,0 +1,32 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_nls.cc +// * +// * Purpose: Groups macros, initialization and includes +// * for National Language Support (NLS) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.11.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include + +using namespace std; + +#ifdef ENABLE_NLS + +using namespace gsmlib; + +#ifdef HAVE_LOCALE_H +#include +#endif + +bool InitNLS::initialized = false; + +#endif // ENABLE_NLS diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h new file mode 100644 index 0000000000..6bfa6eb2f7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_nls.h @@ -0,0 +1,71 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_nls.h +// * +// * Purpose: Groups macros, initialization and includes +// * for National Language Support (NLS) +// * +// * Warning: Only include this header from gsmlib .cc-files +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.11.1999 +// ************************************************************************* + +#ifndef GSM_NLS_H +#define GSM_NLS_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef ENABLE_NLS + +#ifdef HAVE_LIBINTL_H +#include +#else +#include "../intl/libintl.h" +#endif +#ifdef HAVE_LOCALE_H +#include +#endif + +#define _(String) dgettext(PACKAGE, String) + +// this causes automatic NLS initialization if one file of the library +// includes gsm_nls.h + +namespace gsmlib +{ + const class InitNLS + { + static bool initialized; + + public: + InitNLS() + { + if (! initialized) // do only once + { + setlocale(LC_ALL, ""); +#ifdef LOCAL_TRANSLATIONS + bindtextdomain(PACKAGE, "../po"); +#else + bindtextdomain(PACKAGE, LOCALEDIR); +#endif + textdomain(PACKAGE); + initialized = true; + } + } + } initNLS; +}; + +#else + +#define _(String) (String) + +#endif // ENABLE_NLS + +#define N_(String) (String) + +#endif // GSM_NLS_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc new file mode 100644 index 0000000000..38a21cd515 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.cc @@ -0,0 +1,381 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_parser.cc +// * +// * Purpose: Parser to parse MA/TA result strings +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 13.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// Parser members + +int Parser::nextChar(bool skipWhiteSpace) +{ + if (skipWhiteSpace) + while (_i < _s.length() && isspace(_s[_i])) ++_i; + + if (_i == _s.length()) + { + _eos = true; + return -1; + } + + return _s[_i++]; +} + +bool Parser::checkEmptyParameter(bool allowNoParameter) throw(GsmException) +{ + int c = nextChar(); + if (c == ',' || c == -1) + if (allowNoParameter) + { + putBackChar(); + return true; + } + else + throwParseException(_("expected parameter")); + + putBackChar(); + return false; +} + +string Parser::parseString2(bool stringWithQuotationMarks) + throw(GsmException) +{ + int c; + string result; + if (parseChar('"', true)) // OK, string starts and ends with quotation mark + if (stringWithQuotationMarks) + { + // read till end of line + while ((c = nextChar(false)) != -1) + result += c; + + // check for """ at end of line + if (result.length() == 0 || result[result.length() - 1] != '"') + throwParseException(_("expected '\"'")); + + // remove """ at the end + result.resize(result.length() - 1); + } + else + { + // read till next """ + while ((c = nextChar(false)) != '"') + if (c == -1) + throwParseException(); + else + result += c; + } + else // string ends with "," or EOL + { + c = nextChar(false); + while (c != ',' && c != -1) + { + result += c; + c = nextChar(false); + } + if (c == ',') putBackChar(); + } + + return result; +} + +int Parser::parseInt2() throw(GsmException) +{ + string s; + int c; + int result; + + while (isdigit(c = nextChar())) s += c; + + putBackChar(); + if (s.length() == 0) + throwParseException(_("expected number")); + + istrstream is(s.c_str()); + is >> result; + return result; +} + +void Parser::throwParseException(string message) throw(GsmException) +{ + ostrstream os; + if (message.length() == 0) + throw GsmException(stringPrintf(_("unexpected end of string '%s'"), + _s.c_str()), ParserError); + else + throw GsmException(message + + stringPrintf(_(" (at position %d of string '%s')"), _i, + _s.c_str()), ParserError); +} + +Parser::Parser(string s) : _i(0), _s(s), _eos(false) +{ +} + +bool Parser::parseChar(char c, bool allowNoChar) throw(GsmException) +{ + if (nextChar() != c) + if (allowNoChar) + { + putBackChar(); + return false; + } + else + throwParseException(stringPrintf(_("expected '%c'"), c)); + return true; +} + +vector Parser::parseStringList(bool allowNoList) + throw(GsmException) +{ + // handle case of empty parameter + vector result; + if (checkEmptyParameter(allowNoList)) return result; + + parseChar('('); + if (nextChar() != ')') + { + putBackChar(); + while (1) + { + result.push_back(parseString()); + int c = nextChar(); + if (c == ')') + break; + if (c == -1) + throwParseException(); + if (c != ',') + throwParseException(_("expected ')' or ','")); + } + } + + return result; +} + +vector Parser::parseIntList(bool allowNoList) + throw(GsmException) +{ + // handle case of empty parameter + bool isRange = false; + vector result; + int resultCapacity = 0; + unsigned int saveI = _i; + + if (checkEmptyParameter(allowNoList)) return result; + + // check for the case of a integer list consisting of only one parameter + // some TAs omit the parentheses in this case + if (isdigit(nextChar())) + { + putBackChar(); + int num = parseInt(); + result.resize(num + 1, false); + result[num] = true; + return result; + } + putBackChar(); + + // run in two passes + // pass 0: find capacity needed for result + // pass 1: resize result and fill it in + for (int pass = 0; pass < 2; ++pass) + { + if (pass == 1) + { + _i = saveI; + result.resize(resultCapacity + 1, false); + } + + parseChar('('); + if (nextChar() != ')') + { + putBackChar(); + int lastInt = -1; + while (1) + { + int thisInt = parseInt(); + + if (isRange) + { + assert(lastInt != -1); + if (lastInt <= thisInt) + for (int i = lastInt; i < thisInt; ++i) + { + if (i > resultCapacity) + resultCapacity = i; + if (pass == 1) + result[i] = true; + } + else + for (int i = thisInt; i < lastInt; ++i) + { + if (i > resultCapacity) + resultCapacity = i; + if (pass == 1) + result[i] = true; + } + isRange = false; + } + + if (thisInt > resultCapacity) + resultCapacity = thisInt; + if (pass == 1) + result[thisInt] = true; + lastInt = thisInt; + + int c = nextChar(); + if (c == ')') + break; + + if (c == -1) + throwParseException(); + + if (c != ',' && c != '-') + throwParseException(_("expected ')', ',' or '-'")); + + if (c == ',') + isRange = false; + else // is '-' + if (isRange) + throwParseException(_("range of the form a-b-c not allowed")); + else + isRange = true; + } + } + } + if (isRange) + throwParseException(_("range of the form a- no allowed")); + return result; +} + +vector Parser::parseParameterRangeList(bool allowNoList) + throw(GsmException) +{ + // handle case of empty parameter + vector result; + if (checkEmptyParameter(allowNoList)) return result; + + result.push_back(parseParameterRange()); + while (parseComma(true)) + { + result.push_back(parseParameterRange()); + } + + return result; +} + +ParameterRange Parser::parseParameterRange(bool allowNoParameterRange) + throw(GsmException) +{ + // handle case of empty parameter + ParameterRange result; + if (checkEmptyParameter(allowNoParameterRange)) return result; + + parseChar('('); + result._parameter = parseString(); + parseComma(); + result._range = parseRange(false, true); + parseChar(')'); + + return result; +} + +IntRange Parser::parseRange(bool allowNoRange, bool allowNonRange) + throw(GsmException) +{ + // handle case of empty parameter + IntRange result; + if (checkEmptyParameter(allowNoRange)) return result; + + parseChar('('); + result._low = parseInt(); + // allow non-ranges is allowNonRange == true + if (parseChar('-', allowNonRange)) + result._high = parseInt(); + parseChar(')'); + + return result; +} + +int Parser::parseInt(bool allowNoInt) throw(GsmException) +{ + // handle case of empty parameter + int result = NOT_SET; + if (checkEmptyParameter(allowNoInt)) return result; + + result = parseInt2(); + + return result; +} + +string Parser::parseString(bool allowNoString, + bool stringWithQuotationMarks) + throw(GsmException) +{ + // handle case of empty parameter + string result; + if (checkEmptyParameter(allowNoString)) return result; + + result = parseString2(stringWithQuotationMarks); + + return result; +} + +bool Parser::parseComma(bool allowNoComma) throw(GsmException) +{ + if (nextChar() != ',') + if(allowNoComma) + { + putBackChar(); + return false; + } + else + throwParseException(_("expected comma")); + return true; +} + +string Parser::parseEol() throw(GsmException) +{ + string result; + int c; + while ((c = nextChar()) != -1) result += c; + return result; +} + +void Parser::checkEol() throw(GsmException) +{ + if (nextChar() != -1) + { + putBackChar(); + throwParseException(_("expected end of line")); + } +} + +string Parser::getEol() +{ + string result; + int c; + unsigned int saveI = _i; + bool saveEos = _eos; + while ((c = nextChar()) != -1) result += c; + _i = saveI; + _eos = saveEos; + return result; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h new file mode 100644 index 0000000000..8404f9f1cb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_parser.h @@ -0,0 +1,125 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_parser.h +// * +// * Purpose: Parser to parse MA/TA result strings +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 13.5.1999 +// ************************************************************************* + +#ifndef GSM_PARSER_H +#define GSM_PARSER_H + +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + class Parser : public RefBase + { + private: + unsigned int _i; // index into _s, next character + string _s; // string to parse + bool _eos; // true if end-of-string reached in nextChar() + + // return next character or -1 if end of string + int nextChar(bool skipWhiteSpace = true); + + // "puts back" a character + void putBackChar() {if (! _eos) --_i;} + + // check for empty parameter (ie. "," or end of string) + // skips white space + // returns true if no parameter + // or throw an GsmException if allowNoParameter == false + bool checkEmptyParameter(bool allowNoParameter) throw(GsmException); + + // parse a string (like "string") + // throw an exception if not well-formed + string parseString2(bool stringWithQuotationMarks) throw(GsmException); + + // parse a int (like 1234) + // throw an exception if not well-formed + int parseInt2() throw(GsmException); + + // throw a parser exception + void throwParseException(string message = "") throw(GsmException); + + public: + Parser(string s); + + // the following functions skip white space + // parse a character, if absent throw a GsmException + // return false if allowNoChar == true and character not encountered + bool parseChar(char c, bool allowNoChar = false) throw(GsmException); + + // parse a list of the form "("ABC", DEF")" + // the list can be empty (ie. == "" ) if allowNoList == true + vector parseStringList(bool allowNoList = false) + throw(GsmException); + + // parse a list of the form "(12, 14)" or "(1-4, 10)" + // the result is returned as a bit vector where for each integer + // in the list and/or range(s) a bit is set + // the list can be empty (ie. == "") if allowNoList == true + vector parseIntList(bool allowNoList = false) + throw(GsmException); + + // parse a list of parameter ranges (see below) + // the list can be empty (ie. == "" ) if allowNoList == true + vector parseParameterRangeList(bool allowNoList = false) + throw(GsmException); + + // parse a string plus its valid integer range of the + // form "("string",(1-125))" + // the parameter range may be absent if allowNoParameterRange == true + ParameterRange parseParameterRange(bool allowNoParameterRange = false) + throw(GsmException); + + // parse an integer range of the form "(1-125)" + // the range may be absent if allowNoRange == true + // then IntRange::_high and _low are set to NOT_SET + // the range may be short if allowNonRange == true + // then IntRange::_high is set to NOT_SET + IntRange parseRange(bool allowNoRange = false, bool allowNonRange = false) + throw(GsmException); + + // parse an integer of the form "1234" + // allow absent int if allowNoInt == true + // then it returns NOT_SET + int parseInt(bool allowNoInt = false) throw(GsmException); + + // parse a string of the form ""string"" + // allow absent string if allowNoString == true + // then it returns "" + // if stringWithQuotationMarks == true the string may contain """ + // the string is then parsed till the end of the line + string parseString(bool allowNoString = false, + bool stringWithQuotationMarks = false) + throw(GsmException); + + // parse a single "," + // the comma may be absent if allowNoComma == true + // returns true if there was a comma + bool parseComma(bool allowNoComma = false) throw(GsmException); + + // parse till end of line, return result without whitespace + string parseEol() throw(GsmException); + + // check that end of line is reached + void checkEol() throw(GsmException); + + // return string till end of line without whitespace + // (does not change internal state) + string getEol(); + }; +}; + +#endif // GSM_PARSER_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc new file mode 100644 index 0000000000..24d89e805d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.cc @@ -0,0 +1,585 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_phonebook.cc +// * +// * Purpose: Phonebook management functions +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 6.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// PhonebookEntry members + +PhonebookEntry::PhonebookEntry(const PhonebookEntryBase &e) + throw(GsmException) : _cached(true), _myPhonebook(NULL) +{ + set(e.telephone(), e.text(), e.index(), e.useIndex()); +} + +void PhonebookEntry::set(string telephone, string text, int index, + bool useIndex) + throw(GsmException) +{ + checkTextAndTelephone(text, telephone); + + if (_myPhonebook != NULL) + { + if (text.length() > _myPhonebook->getMaxTextLen()) + throw GsmException( + stringPrintf(_("length of text '%s' exceeds maximum text " + "length (%d characters) of phonebook '%s'"), + text.c_str(), _myPhonebook->getMaxTextLen(), + _myPhonebook->name().c_str()), + ParameterError); + + if (telephone.length() > _myPhonebook->getMaxTelephoneLen()) + throw GsmException( + stringPrintf(_("length of telephone number '%s' " + "exceeds maximum telephone number " + "length (%d characters) of phonebook '%s'"), + telephone.c_str(), _myPhonebook->getMaxTelephoneLen(), + _myPhonebook->name().c_str()), + ParameterError); + + _myPhonebook->writeEntry(_index, telephone, text); + } + else + _index = index; + + _useIndex = useIndex; + _cached = true; + _telephone = telephone; + _text = text; + _changed = true; +} + +string PhonebookEntry::text() const throw(GsmException) +{ + if (! cached()) + { + assert(_myPhonebook != NULL); + // these operations are at least "logically const" + PhonebookEntry *thisEntry = const_cast(this); + _myPhonebook->readEntry(_index, thisEntry->_telephone, thisEntry->_text); + thisEntry->_cached = true; + } + return _text; +} + +string PhonebookEntry::telephone() const throw(GsmException) +{ + if (! cached()) + { + assert(_myPhonebook != NULL); + // these operations are at least "logically const" + PhonebookEntry *thisEntry = const_cast(this); + _myPhonebook->readEntry(_index, thisEntry->_telephone, thisEntry->_text); + thisEntry->_cached = true; + } + return _telephone; +} + +bool PhonebookEntry::cached() const +{ + if (_myPhonebook == NULL) + return _cached; + else + return _cached && _myPhonebook->_useCache; +} + +PhonebookEntry::PhonebookEntry(const PhonebookEntry &e) throw(GsmException) +{ + set(e._telephone, e._text, e._index, e._useIndex); +} + +PhonebookEntry &PhonebookEntry::operator=(const PhonebookEntry &e) + throw(GsmException) +{ + set(e._telephone, e._text, e._index, e._useIndex); + return *this; +} + +// Phonebook members + +int Phonebook::parsePhonebookEntry(string response, + string &telephone, string &text) +{ + // this is a workaround for a bug that occurs with my ME/TA combination + // some texts are truncated and don't have a trailing " + if (response.length() > 0 && response[response.length() - 1] != '"') + response += '"'; + Parser p(response); + + int index = p.parseInt(); + p.parseComma(); + + // handle case of empty entry + if (p.getEol().substr(0, 5) == "EMPTY") + { + telephone = ""; + text = ""; + return index; + } + + telephone = p.parseString(); + p.parseComma(); + unsigned int numberFormat = p.parseInt(); + if (numberFormat != UnknownNumberFormat && + numberFormat != InternationalNumberFormat) + cerr << "*** GSMLIB WARNING: Unexpected number format when reading from " + << "phonebook: " << numberFormat << " ***" << endl; + p.parseComma(); + text = p.parseString(false, true); + if (lowercase(_myMeTa.getCurrentCharSet()) == "gsm") + text = gsmToLatin1(text); + if (numberFormat == InternationalNumberFormat) + { + // skip leading "+" signs that may already exist + while (telephone.length() > 0 && telephone[0] == '+') + telephone = telephone.substr(1); + telephone = "+" + telephone; + } + + return index; +} + +void Phonebook::readEntry(int index, string &telephone, string &text) + throw(GsmException) +{ + // select phonebook + _myMeTa.setPhonebook(_phonebookName); + + // read entry + string response = _at->chat("+CPBR=" + intToStr(index), "+CPBR:", + false, // dont't ignore errors + true); // but accept empty responses + // (the latter is necessary for some mobile phones that return nothing + // if the entry is empty) + + if (response.length() == 0) // OK phone returned empty response + { + telephone = text = ""; // then the entry is empty as well + } + else + parsePhonebookEntry(response, telephone, text); + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Reading PB entry " << index << " number " << telephone + << " text " << text << endl; +#endif +} + +void Phonebook::findEntry(string text, int &index, string &telephone) + throw(GsmException) +{ + // select phonebook + _myMeTa.setPhonebook(_phonebookName); + + // read entry + string response = _at->chat("+CPBF=\"" + text + "\"", "+CPBF:", + false, // dont't ignore errors + true); // but accept empty responses + // (the latter is necessary for some mobile phones that return nothing + // if the entry is empty) + + if (response.length() == 0) // OK phone returned empty response + { + telephone = ""; // then the entry is empty as well + index = 0; + } + else + index=parsePhonebookEntry(response, telephone, text); + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Finding PB entry " << text << " number " << telephone + << " index " << index << endl; +#endif +} + +void Phonebook::writeEntry(int index, string telephone, string text) + throw(GsmException) +{ +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Writing PB entry #" << index << " number '" << telephone + << "' text '" << text << "'" << endl; +#endif + // select phonebook + _myMeTa.setPhonebook(_phonebookName); + + // write entry + string s; + if (telephone == "" && text == "") + { + ostrstream os; + os << "+CPBW=" << index; + os << ends; + char *ss = os.str(); + s = string(ss); + delete[] ss; + } + else + { + int type; + if (telephone.find('+') == string::npos) + type = UnknownNumberFormat; + else + type = InternationalNumberFormat; + string gsmText = text; + if (lowercase(_myMeTa.getCurrentCharSet()) == "gsm") + gsmText = latin1ToGsm(gsmText); + ostrstream os; + os << "+CPBW=" << index << ",\"" << telephone << "\"," << type + << ",\""; + os << ends; + char *ss = os.str(); + s = string(ss); + delete[] ss; + // this cannot be added with ostrstream because the gsmText can + // contain a zero (GSM default alphabet for '@') + s += gsmText + "\""; + } + _at->chat(s); +} + +Phonebook::iterator Phonebook::insertFirstEmpty(string telephone, string text) + throw(GsmException) +{ + for (int i = 0; i < _maxSize; i++) + if (_phonebook[i].empty()) + { + _phonebook[i].set(telephone, text); + adjustSize(1); + return begin() + i; + } + throw GsmException(_("phonebook full"), OtherError); +} + +Phonebook::iterator Phonebook::insert(const string telephone, + const string text, + const int index) +{ + for (int i = 0; i < _maxSize; i++) + if (_phonebook[i].index() == index) + if (_phonebook[i].empty()) + { + _phonebook[i].set(telephone, text); + adjustSize(1); + return begin() + i; + } + else + throw GsmException(_("attempt to overwrite phonebook entry"), + OtherError); + return end(); +} + +Phonebook::Phonebook(string phonebookName, Ref at, MeTa &myMeTa, + bool preload) throw(GsmException) : + _phonebookName(phonebookName), _at(at), _myMeTa(myMeTa), _useCache(true) +{ + // select phonebook + _myMeTa.setPhonebook(_phonebookName); + + // query size and maximum capacity of phonebook + _size = -1; // -1 means not known yet + _maxSize = -1; + Parser q(_at->chat("+CPBS?", "+CPBS:")); + string dummy = q.parseString(); + if (q.parseComma(true)) // this means that + { // used and total result is supported by ME + _size = q.parseInt(); + q.parseComma(); + _maxSize = q.parseInt(); + } + + // get basic phonebook info from ME + Parser p(_at->chat("+CPBR=?", "+CPBR:")); + + // get index of actually available entries in the phonebook + vector availablePositions = p.parseIntList(); + p.parseComma(); + _maxNumberLength = p.parseInt(); + p.parseComma(); + _maxTextLength = p.parseInt(); + + // find out capacity of phonebook in ME + // Note: The phonebook in the ME may be sparse, eg. the range of + // allowed index numbers may be something like (3-4, 20-100, 120). + // The standard allows this, even though it is unlikely to be + // implemented like that by anyone. + // In memory we store only phonebook entries that may actually be + // used, ie. the phonebook in memory is not sparse. + // Each entry has a member _index that corresponds to the index in the ME. + if (_maxSize == -1) + { + _maxSize = 0; + for (vector::iterator i = availablePositions.begin(); + i != availablePositions.end(); ++i) + if (*i) ++_maxSize; + } + + // for use with preload below + int *meToPhonebookIndexMap = + (int*)alloca(sizeof(int) * (availablePositions.size() + 1)); + + // initialize phone book entries + if (_maxSize == 0) + _phonebook = NULL; + else + _phonebook = new PhonebookEntry[_maxSize]; + int nextAvailableIndex = 0; + int i; + for (i = 0; i < _maxSize; i++) + { + while (! availablePositions[nextAvailableIndex]) + nextAvailableIndex++; + _phonebook[i]._index = nextAvailableIndex; + _phonebook[i]._cached = false; + _phonebook[i]._myPhonebook = this; + meToPhonebookIndexMap[nextAvailableIndex++] = i; + } + + // find out first index number of phonebook + int firstIndex = -1; + for (i = 0; i < _maxSize; i++) + if (availablePositions[i]) + { + firstIndex = i; + break; + } + + // preload phonebook + // Note: this contains a workaround for the bug that + // some MEs can not return the entire phonebook with one AT command + // To detect this condition, _size must be known + // also, this code only handles non-sparse phonebooks + if (preload && _size != -1 && + (int)availablePositions.size() == _maxSize + firstIndex) + { + int entriesRead = 0; + int startIndex = firstIndex; + + while (entriesRead < _size) + { + reportProgress(0, _maxSize); // chatv also calls reportProgress() + vector responses = + _at->chatv("+CPBR=" + intToStr(startIndex) + + "," + intToStr(_maxSize + firstIndex - 1), + "+CPBR:", true); + + // this means that we have read nothing even though not all + // entries have been retrieved (entriesRead < _size) + // this could be due to a malfunction of the ME... + // anyway, missing entries can be read later by readEntry() + if (responses.size() == 0) + { +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** error when preloading phonebook: " + "not all entries returned" << endl; +#endif + break; + } + + for (vector::iterator i = responses.begin(); + i != responses.end(); ++i) + { + string telephone, text; + int meIndex = parsePhonebookEntry(*i, telephone, text); + _phonebook[meToPhonebookIndexMap[meIndex]]._cached = true; + _phonebook[meToPhonebookIndexMap[meIndex]]._telephone = telephone; + _phonebook[meToPhonebookIndexMap[meIndex]]._text = text; + assert(_phonebook[meToPhonebookIndexMap[meIndex]]._index == meIndex); + + ++entriesRead; + startIndex = meIndex + 1; +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Preloading PB entry " << meIndex + << " number " << telephone + << " text " << text << endl; +#endif + } + } + } +} + +Phonebook::iterator Phonebook::begin() +{ + return &_phonebook[0]; +} + +Phonebook::const_iterator Phonebook::begin() const +{ + return &_phonebook[0]; +} + +Phonebook::iterator Phonebook::end() +{ + return &_phonebook[_maxSize]; +} + +Phonebook::const_iterator Phonebook::end() const +{ + return &_phonebook[_maxSize]; +} + +Phonebook::reference Phonebook::operator[](int n) +{ + return _phonebook[n]; +} + +Phonebook::const_reference Phonebook::operator[](int n) const +{ + return _phonebook[n]; +} + +Phonebook::reference Phonebook::front() +{ + return _phonebook[0]; +} + +Phonebook::const_reference Phonebook::front() const +{ + return _phonebook[0]; +} + +Phonebook::reference Phonebook::back() +{ + return _phonebook[_maxSize - 1]; +} + +Phonebook::const_reference Phonebook::back() const +{ + return _phonebook[_maxSize - 1]; +} + +int Phonebook::size() const throw(GsmException) +{ + if (_size != -1) + return _size; + else + { + int result = 0; + for (int i = 0; i < _maxSize; i++) + if (! _phonebook[i].empty()) + result++; + Phonebook *thisPhonebook = const_cast(this); + thisPhonebook->_size = result; + return result; + } +} + +Phonebook::iterator Phonebook::insert(iterator position, + const PhonebookEntry& x) + throw(GsmException) +{ + if (x.useIndex() && x.index() != -1) + return insert(x.telephone(), x.text(), x.index()); + else + return insertFirstEmpty(x.telephone(), x.text()); +} + +void Phonebook::insert (iterator pos, int n, const PhonebookEntry& x) + throw(GsmException) +{ + for (int i = 0; i < n; i++) + if (x.useIndex() && x.index() != -1) + insert(x.telephone(), x.text(), x.index()); + else + insertFirstEmpty(x.telephone(), x.text()); +} + +void Phonebook::insert (iterator pos, long n, const PhonebookEntry& x) + throw(GsmException) +{ + for (long i = 0; i < n; i++) + if (x.useIndex() && x.index() != -1) + insert(x.telephone(), x.text(), x.index()); + else + insertFirstEmpty(x.telephone(), x.text()); +} + +Phonebook::iterator Phonebook::erase(iterator position) + throw(GsmException) +{ + if (! position->empty()) + { + position->set("", ""); + adjustSize(-1); + } + return position + 1; +} + +Phonebook::iterator Phonebook::erase(iterator first, iterator last) + throw(GsmException) +{ + iterator i; + for (i = first; i != last; ++i) + erase(i); + return i; +} + +void Phonebook::clear() throw(GsmException) +{ + for (iterator i = begin(); i != end(); ++i) + erase(i); +} + +Phonebook::iterator Phonebook::find(string text) throw(GsmException) +{ + int index; + string telephone; + + int i; + for (i = 0; i < _maxSize; i++) + if (_phonebook[i].text() == text) + return begin() + i; + + findEntry(text, index, telephone); + + for (i = 0; i < _maxSize; i++) + if (_phonebook[i].index() == index) + if (_phonebook[i].cached()) + { + // if entry was already (= cached) and is now different + // the SIM card or it's contents were changed + if (_phonebook[i]._telephone != telephone || + _phonebook[i]._text != text) + throw GsmException(_("SIM card changed while accessing phonebook"), + OtherError); + } + else + { + _phonebook[i]._cached = true; + _phonebook[i]._telephone = telephone; + _phonebook[i]._text = text; + return begin() + i; + } + return end(); +} + +Phonebook::~Phonebook() +{ + delete []_phonebook; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h new file mode 100644 index 0000000000..4999da532e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_phonebook.h @@ -0,0 +1,195 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_phonebook.h +// * +// * Purpose: Phonebook management functions +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.5.1999 +// ************************************************************************* + +#ifndef GSM_PHONEBOOK_H +#define GSM_PHONEBOOK_H + +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // forward declarations + class Phonebook; + + // a single entry in the phonebook that corresponds to an ME entry + + class PhonebookEntry : public PhonebookEntryBase + { + private: + // this constructor is only used by Phonebook + PhonebookEntry() {} + bool _cached; // true, if this entry corresponds to info + // in the ME + Phonebook *_myPhonebook; + + public: + PhonebookEntry(string telephone, string text) : + PhonebookEntryBase(telephone, text), + _cached(true), _myPhonebook(NULL) {} + PhonebookEntry(const PhonebookEntryBase &e) throw(GsmException); + + // accessor functions, inherited from PhonebookEntryBase + // set() does not use the index argument + void set(string telephone, string text, int index = -1, + bool useIndex = false) + throw(GsmException); + string text() const throw(GsmException); + string telephone() const throw(GsmException); + + // return true if entry is cached (and caching is enabled) + bool cached() const; + + PhonebookEntry(const PhonebookEntry &e) throw(GsmException); + PhonebookEntry &operator=(const PhonebookEntry &e) throw(GsmException); + + virtual ~PhonebookEntry() {} + + friend class Phonebook; + }; + + // this class corresponds to a phonebook in the ME + // all functions directly update storage in the ME + // if the ME is exchanged, the storage may become corrupted because + // of internal buffering in the Phonebook class + + class Phonebook : public RefBase, public NoCopy + { + public: + // iterator defs + typedef PhonebookEntry *iterator; + typedef const PhonebookEntry *const_iterator; + typedef PhonebookEntry &reference; + typedef const PhonebookEntry &const_reference; + + private: + PhonebookEntry *_phonebook; // array of size _maxSize of entries + int _maxSize; // maximum size of pb (-1 == not known yet) + int _size; // current size of pb (-1 == not known yet) + string _phonebookName; // name of the phonebook, 2-byte like "ME" + unsigned int _maxNumberLength; // maximum length of telephone number + unsigned int _maxTextLength; // maximum length of descriptive text + Ref _at; // my GsmAt class + vector _positionMap; // maps in-memory index to ME index + MeTa &_myMeTa; // the MeTa object that created this Phonebook + bool _useCache; // true if entries should be cached + + // helper function, parse phonebook response returned by ME/TA + // returns index of entry + int parsePhonebookEntry(string response, string &telephone, string &text); + + // internal access functions + // read/write/find entry from/to ME + void readEntry(int index, string &telephone, string &text) + throw(GsmException); + void writeEntry(int index, string telephone, string text) + throw(GsmException); + void findEntry(string text, int &index, string &telephone) + throw(GsmException); + + // adjust size only if it was set once + void adjustSize(int sizeAdjust) + { + if (_size != -1) _size += sizeAdjust; + } + + // insert into first empty position and return position where inserted + iterator insertFirstEmpty(const string telephone, const string text) + throw(GsmException); + + // insert into specified index position + iterator insert(const string telephone, const string text, + const int index); + + // used my class MeTa + // load phonebook name phonebookName, use AT handler at + // preload entire phonebook if preload == true + Phonebook(string phonebookName, Ref at, + MeTa &myMeTa, bool preload = false) throw(GsmException); + + public: + // set cache mode on or off + void setCaching(bool useCache) {_useCache = useCache;} + + // return name of this phonebook (2-character string) + string name() const {return _phonebookName;} + + // return maximum telephone number length + unsigned int getMaxTelephoneLen() const {return _maxNumberLength;} + + // return maximum entry description length + unsigned int getMaxTextLen() const { return _maxTextLength;} + + // phonebook traversal commands + // these are suitable to use stdc++ lib algorithms and iterators + // ME have fixed storage space implemented as memory slots + // that may either be empty or used + + // traversal commands + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + reference front(); + const_reference front() const; + reference back(); + const_reference back() const; + reference operator[](int n); + const_reference operator[](int n) const; + + // the size macros return the number of used entries + int size() const throw(GsmException); + int max_size() const {return _maxSize;} + int capacity() const {return _maxSize;} + bool empty() const throw(GsmException) {return size() == 0;} + + // insert iterators insert into the first empty cell regardless of position + // - existing iterators are not invalidated after an insert operation + // - return position where it was actually inserted (may be != position) + // - insert only writes to available positions + // - throw an exception if size() == max_size() (ie. not empty slots) + iterator insert(iterator position, const PhonebookEntry& x) + throw(GsmException); + + // insert n times, same procedure as above + void insert(iterator pos, int n, const PhonebookEntry& x) + throw(GsmException); + void insert(iterator pos, long n, const PhonebookEntry& x) + throw(GsmException); + + // erase operators set used slots to "empty" + iterator erase(iterator position) throw(GsmException); + iterator erase(iterator first, iterator last) throw(GsmException); + void clear() throw(GsmException); + + // finds an entry given the text + iterator find(string text) throw(GsmException); + + // destructor + virtual ~Phonebook(); + + friend class PhonebookEntry; + friend class MeTa; + }; + + // useful phonebook types + typedef Ref PhonebookRef; + typedef vector PhonebookVector; +}; + +#endif // GSM_PHONEBOOK_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h new file mode 100644 index 0000000000..83c4edf60e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_port.h @@ -0,0 +1,58 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_port.h +// * +// * Purpose: Abstract port definition +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.5.1999 +// ************************************************************************* + +#ifndef GSM_PORT_H +#define GSM_PORT_H + +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // TA defaults + const int TIMEOUT_SECS = 60; + const char DEFAULT_INIT_STRING[] = "E0"; + const int DEFAULT_BAUD_RATE = 38400; + + class Port : public RefBase + { + public: + // read line from port(including eol characters) + virtual string getLine() throw(GsmException) =0; + + // write line to port + virtual void putLine(string line, + bool carriageReturn = true) throw(GsmException) =0; + + // wait for new data to become available, return after timeout + // if timeout == 0, wait forever + // return true if data available + virtual bool wait(GsmTime timeout) throw(GsmException) =0; + + // put back one byte that can be read by a subsequent call to readByte() + virtual void putBack(unsigned char c) =0; + + // read a single byte, return -1 if error or file closed + virtual int readByte() throw(GsmException) =0; + + // set timeout for the readByte(), getLine(), and putLine() functions + // (globally for ALL ports) + virtual void setTimeOut(unsigned int timeout) =0; + + virtual ~Port() {} + }; +}; + +#endif // GSM_PORT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc new file mode 100644 index 0000000000..e150423add --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.cc @@ -0,0 +1,863 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sms.cc +// * +// * Purpose: SMS functions +// * (ETSI GSM 07.05) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 16.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// local constants + +static const string dashes = +"---------------------------------------------------------------------------"; + +// SMSMessage members + +Ref SMSMessage::decode(string pdu, + bool SCtoMEdirection, + GsmAt *at) throw(GsmException) +{ + Ref result; + SMSDecoder d(pdu); + d.getAddress(true); + MessageType messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + if (SCtoMEdirection) + // TPDUs from SC to ME + switch (messageTypeIndicator) + { + case SMS_DELIVER: + result = new SMSDeliverMessage(pdu); + break; + + case SMS_STATUS_REPORT: + result = new SMSStatusReportMessage(pdu); + break; + + case SMS_SUBMIT_REPORT: + // observed with Motorola Timeport 260, the SCtoMEdirection can + // be wrong in this case + if (at != NULL && at->getMeTa().getCapabilities()._wrongSMSStatusCode) + result = new SMSSubmitMessage(pdu); + else + result = new SMSSubmitReportMessage(pdu); + break; + + default: + throw GsmException(_("unhandled SMS TPDU type"), OtherError); + } + else + // TPDUs from ME to SC + switch (messageTypeIndicator) + { + case SMS_SUBMIT: + result = new SMSSubmitMessage(pdu); + break; + + case SMS_DELIVER_REPORT: + result = new SMSDeliverReportMessage(pdu); + break; + + case SMS_COMMAND: + result = new SMSCommandMessage(pdu); + break; + + default: + throw GsmException(_("unhandled SMS TPDU type"), OtherError); + } + result->_at = at; + return result; +} + +Ref SMSMessage::decode(istream& s) throw(gsmlib::GsmException) +{ + string pdu; + unsigned char ScToMe; + + s >> ScToMe; + s >> pdu; + + return decode(pdu,ScToMe=='S'); +} + +unsigned char SMSMessage::send(Ref &ackPdu) + throw(GsmException) +{ + if (_messageTypeIndicator != SMS_SUBMIT && + _messageTypeIndicator != SMS_COMMAND) + throw GsmException(_("can only send SMS-SUBMIT and SMS-COMMAND TPDUs"), + ParameterError); + + if (_at.isnull()) + throw GsmException(_("no device given for sending SMS"), ParameterError); + + string pdu = encode(); + Parser p(_at->sendPdu("+CMGS=" + + intToStr(pdu.length() / 2 - getSCAddressLen()), + "+CMGS:", pdu)); + unsigned char messageReference = p.parseInt(); + + if (p.parseComma(true)) + { + string pdu = p.parseEol(); + + // add missing service centre address if required by ME + if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix) + pdu = "00" + pdu; + + ackPdu = SMSMessage::decode(pdu); + } + else + ackPdu = SMSMessageRef(); + + return messageReference; +} + +unsigned char SMSMessage::send() throw(GsmException) +{ + SMSMessageRef mref; + return send(mref); +} + +unsigned int SMSMessage::getSCAddressLen() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + return e.getLength(); +} + +unsigned char SMSMessage::userDataLength() const +{ + unsigned int udhl = _userDataHeader.length(); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + return _userData.length() + (udhl ? ((1 + udhl) * 8 + 6) / 7 : 0); + else + return _userData.length() + (udhl ? (1 + udhl) : 0); +} + +ostream& SMSMessage::operator<<(ostream& s) +{ + unsigned char ScToMe; + + if (dynamic_cast(this) || + dynamic_cast(this) || + dynamic_cast(this)) + { + ScToMe = 'S'; + } + else if (dynamic_cast(this) || + dynamic_cast(this) || + dynamic_cast(this)) + { + ScToMe = 'M'; + } + else + { + throw GsmException(_("unhandled SMS TPDU type"), OtherError); + } + + s << ScToMe; + return s << encode(); +} + +// SMSMessage::SMSMessage(SMSMessage &m) +// { +// _at = m._at; + +// } + +// SMSMessage &SMSMessage::operator=(SMSMessage &m) +// { +// } + +SMSMessage::~SMSMessage() {} + +// SMSDeliverMessage members + +void SMSDeliverMessage::init() +{ + _messageTypeIndicator = SMS_DELIVER; + _moreMessagesToSend = false; + _replyPath = false; + _statusReportIndication = false; + _protocolIdentifier = 0; +} + +SMSDeliverMessage::SMSDeliverMessage() +{ + init(); +} + +SMSDeliverMessage::SMSDeliverMessage(string pdu) throw(GsmException) +{ + SMSDecoder d(pdu); + _serviceCentreAddress = d.getAddress(true); + _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + assert(_messageTypeIndicator == SMS_DELIVER); + _moreMessagesToSend = d.getBit(); // bit 2 + d.getBit(); // bit 3 + d.getBit(); // bit 4 + _statusReportIndication = d.getBit(); // bit 5 + bool userDataHeaderIndicator = d.getBit(); // bit 6 + _replyPath = d.getBit(); // bit 7 + _originatingAddress = d.getAddress(); + _protocolIdentifier = d.getOctet(); + _dataCodingScheme = d.getOctet(); + _serviceCentreTimestamp = d.getTimestamp(); + unsigned char userDataLength = d.getOctet(); + d.markSeptet(); + + if (userDataHeaderIndicator) + { + _userDataHeader.decode(d); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + userDataLength -= ((_userDataHeader.length() + 1) * 8 + 6) / 7; + else + userDataLength -= ((string)_userDataHeader).length() + 1; + } + else + _userDataHeader = UserDataHeader(); + + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + { // userDataLength is length in septets + _userData = d.getString(userDataLength); + _userData = gsmToLatin1(_userData); + } + else + { // userDataLength is length in octets + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); + d.getOctets(s, userDataLength); + _userData.assign((char*)s, (unsigned int)userDataLength); + } +} + +string SMSDeliverMessage::encode() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + e.set2Bits(_messageTypeIndicator); // bits 0..1 + e.setBit(_moreMessagesToSend); // bit 2 + e.setBit(); // bit 3 + e.setBit(); // bit 4 + e.setBit(_statusReportIndication); // bit 5 + e.setBit(_userDataHeader.length() != 0); // bit 6 + e.setBit(_replyPath); // bit 7 + e.setAddress(_originatingAddress); + e.setOctet(_protocolIdentifier); + e.setOctet(_dataCodingScheme); + e.setTimestamp(_serviceCentreTimestamp); + e.setOctet(userDataLength()); + e.markSeptet(); + if (_userDataHeader.length()) _userDataHeader.encode(e); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + e.setString(latin1ToGsm(_userData)); + else + e.setOctets((unsigned char*)_userData.data(), _userData.length()); + return e.getHexString(); +} + +string SMSDeliverMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: SMS-DELIVER") << endl + << _("SC address: '") << _serviceCentreAddress._number << "'" << endl + << _("More messages to send: ") << _moreMessagesToSend << endl + << _("Reply path: ") << _replyPath << endl + << _("User data header indicator: ") + << (_userDataHeader.length()!=0) << endl + << _("Status report indication: ") << _statusReportIndication << endl + << _("Originating address: '") << _originatingAddress._number + << "'" << endl + << _("Protocol identifier: 0x") << hex + << (unsigned int)_protocolIdentifier << dec << endl + << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl + << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl + << _("User data length: ") << (int)userDataLength() << endl + << _("User data header: 0x") + << bufToHex((unsigned char*) + ((string)_userDataHeader).data(), + ((string)_userDataHeader).length()) + << endl + << _("User data: '") << _userData << "'" << endl + << dashes << endl << endl + << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +Address SMSDeliverMessage::address() const +{ + return _originatingAddress; +} + +Ref SMSDeliverMessage::clone() +{ + Ref result = new SMSDeliverMessage(*this); + return result; +} + +// SMSSubmitMessage members + +void SMSSubmitMessage::init() +{ + // set everything to sensible default values + _messageTypeIndicator = SMS_SUBMIT; + _validityPeriodFormat = TimePeriod::Relative; + _validityPeriod._format = TimePeriod::Relative; + _validityPeriod._relativeTime = 168; // 2 days + _statusReportRequest = false; + _replyPath = false; + _rejectDuplicates = true; + _messageReference = 0; + _protocolIdentifier = 0; +} + +SMSSubmitMessage::SMSSubmitMessage() +{ + init(); +} + +SMSSubmitMessage::SMSSubmitMessage(string pdu) throw(GsmException) +{ + SMSDecoder d(pdu); + _serviceCentreAddress = d.getAddress(true); + _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + assert(_messageTypeIndicator == SMS_SUBMIT); + _rejectDuplicates = d.getBit(); // bit 2 + _validityPeriodFormat = (TimePeriod::Format)d.get2Bits(); // bits 3..4 + _statusReportRequest = d.getBit(); // bit 5 + bool userDataHeaderIndicator = d.getBit(); // bit 6 + _replyPath = d.getBit(); // bit 7 + _messageReference = d.getOctet(); + _destinationAddress = d.getAddress(); + _protocolIdentifier = d.getOctet(); + _dataCodingScheme = d.getOctet(); + if (_validityPeriodFormat != TimePeriod::NotPresent) + _validityPeriod = d.getTimePeriod(_validityPeriodFormat); + unsigned char userDataLength = d.getOctet(); + d.markSeptet(); + + if (userDataHeaderIndicator) + { + _userDataHeader.decode(d); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + userDataLength -= ((_userDataHeader.length() + 1) * 8 + 6) / 7; + else + userDataLength -= ((string)_userDataHeader).length() + 1; + } + else + _userDataHeader = UserDataHeader(); + + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + { // userDataLength is length in septets + _userData = d.getString(userDataLength); + _userData = gsmToLatin1(_userData); + } + else + { // _userDataLength is length in octets + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); + d.getOctets(s, userDataLength); + _userData.assign((char*)s, userDataLength); + } +} + +SMSSubmitMessage::SMSSubmitMessage(string text, string number) +{ + init(); + _destinationAddress = Address(number); + _userData = text; +} + +string SMSSubmitMessage::encode() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + e.set2Bits(_messageTypeIndicator); // bits 0..1 + e.setBit(_rejectDuplicates); // bit 2 + e.set2Bits(_validityPeriodFormat); // bits 3..4 + e.setBit(_statusReportRequest); // bit 5 + bool userDataHeaderIndicator = _userDataHeader.length() != 0; + e.setBit(userDataHeaderIndicator); // bit 6 + e.setBit(_replyPath); // bit 7 + e.setOctet(_messageReference); + e.setAddress(_destinationAddress); + e.setOctet(_protocolIdentifier); + e.setOctet(_dataCodingScheme); + e.setTimePeriod(_validityPeriod); + e.setOctet(userDataLength()); + e.markSeptet(); + if (userDataHeaderIndicator) _userDataHeader.encode(e); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + e.setString(latin1ToGsm(_userData)); + else + e.setOctets((unsigned char*)_userData.data(), _userData.length()); + return e.getHexString(); +} + +string SMSSubmitMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: SMS-SUBMIT") << endl + << _("SC address: '") << _serviceCentreAddress._number << "'" << endl + << _("Reject duplicates: ") << _rejectDuplicates << endl + << _("Validity period format: "); + switch (_validityPeriodFormat) + { + case TimePeriod::NotPresent: + os << _("not present"); + break; + case TimePeriod::Relative: + os << _("relative"); + break; + case TimePeriod::Absolute: + os << _("absolute"); + break; + default: + os << _("unknown"); + break; + } + os << endl + << _("Reply path: ") << _replyPath << endl + << _("User data header indicator: ") + << (_userDataHeader.length()!=0) << endl + << _("Status report request: ") << _statusReportRequest << endl + << _("Message reference: ") << (unsigned int)_messageReference << endl + << _("Destination address: '") << _destinationAddress._number + << "'" << endl + << _("Protocol identifier: 0x") << hex + << (unsigned int)_protocolIdentifier << dec << endl + << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl + << _("Validity period: ") << _validityPeriod.toString() << endl + << _("User data length: ") << (int)userDataLength() << endl + << _("User data header: 0x") << bufToHex((unsigned char*) + ((string)_userDataHeader).data(), + _userDataHeader.length()) + << endl + << _("User data: '") << _userData << "'" << endl + << dashes << endl << endl + << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +Address SMSSubmitMessage::address() const +{ + return _destinationAddress; +} + +Ref SMSSubmitMessage::clone() +{ + Ref result = new SMSSubmitMessage(*this); + return result; +} + +// SMSStatusReportMessage members + +void SMSStatusReportMessage::init() +{ + _messageTypeIndicator = SMS_STATUS_REPORT; + _moreMessagesToSend = false; + _statusReportQualifier = false; + _messageReference = 0; + _status = SMS_STATUS_RECEIVED; +} + +SMSStatusReportMessage::SMSStatusReportMessage(string pdu) throw(GsmException) +{ + SMSDecoder d(pdu); + _serviceCentreAddress = d.getAddress(true); + _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + assert(_messageTypeIndicator == SMS_STATUS_REPORT); + _moreMessagesToSend = d.getBit(); // bit 2 + d.getBit(); // bit 3 + d.getBit(); // bit 4 + _statusReportQualifier = d.getBit(); // bit 5 + _messageReference = d.getOctet(); + _recipientAddress = d.getAddress(); + _serviceCentreTimestamp = d.getTimestamp(); + _dischargeTime = d.getTimestamp(); + _status = d.getOctet(); +} + +string SMSStatusReportMessage::encode() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + e.set2Bits(_messageTypeIndicator); // bits 0..1 + e.setBit(_moreMessagesToSend); // bit 2 + e.setBit(); // bit 3 + e.setBit(); // bit 4 + e.setBit(_statusReportQualifier); // bit 5 + e.setOctet(_messageReference); + e.setAddress(_recipientAddress); + e.setTimestamp(_serviceCentreTimestamp); + e.setTimestamp(_dischargeTime); + e.setOctet(_status); + return e.getHexString(); +} + +string SMSStatusReportMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: SMS-STATUS-REPORT") << endl + << _("SC address: '") << _serviceCentreAddress._number << "'" << endl + << _("More messages to send: ") << _moreMessagesToSend << endl + << _("Status report qualifier: ") << _statusReportQualifier << endl + << _("Message reference: ") << (unsigned int)_messageReference << endl + << _("Recipient address: '") << _recipientAddress._number << "'" << endl + << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl + << _("Discharge time: ") << _dischargeTime.toString() << endl + << _("Status: 0x") << hex << (unsigned int)_status << dec + << " '" << getSMSStatusString(_status) << "'" << endl + << dashes << endl << endl + << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +Address SMSStatusReportMessage::address() const +{ + return _recipientAddress; +} + +Ref SMSStatusReportMessage::clone() +{ + Ref result = new SMSStatusReportMessage(*this); + return result; +} + +// SMSCommandMessage members + +void SMSCommandMessage::init() +{ + _messageTypeIndicator = SMS_COMMAND; + _messageReference = 0; + _statusReportRequest = true; + _protocolIdentifier = 0; + _commandType = EnquireSM; + _messageNumber = 0; + _commandDataLength = 0; +} + +SMSCommandMessage::SMSCommandMessage(string pdu) throw(GsmException) +{ + SMSDecoder d(pdu); + _serviceCentreAddress = d.getAddress(true); + _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + assert(_messageTypeIndicator == SMS_COMMAND); + d.getBit(); // bit 2 + d.getBit(); // bit 3 + d.getBit(); // bit 4 + _statusReportRequest = d.getBit(); // bit 5 + _messageReference = d.getOctet(); + _protocolIdentifier = d.getOctet(); + _commandType = d.getOctet(); + _messageNumber = d.getOctet(); + _destinationAddress = d.getAddress(); + _commandDataLength = d.getOctet(); + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * _commandDataLength); + d.getOctets(s, _commandDataLength); +} + +string SMSCommandMessage::encode() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + e.set2Bits(_messageTypeIndicator); // bits 0..1 + e.setBit(); // bit 2 + e.setBit(); // bit 3 + e.setBit(); // bit 4 + e.setBit(_statusReportRequest); // bit 5 + e.setOctet(_messageReference); + e.setOctet(_protocolIdentifier); + e.setOctet(_commandType); + e.setOctet(_messageNumber); + e.setAddress(_destinationAddress); + e.setOctet(_commandData.length()); + e.setOctets((const unsigned char*)_commandData.data(), + (short unsigned int)_commandData.length()); + return e.getHexString(); +} + +string SMSCommandMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: SMS-COMMAND") << endl + << _("SC address: '") << _serviceCentreAddress._number << "'" << endl + << _("Message reference: ") << (unsigned int)_messageReference << endl + << _("Status report request: ") << _statusReportRequest << endl + << _("Protocol identifier: 0x") << hex + << (unsigned int)_protocolIdentifier << dec << endl + << _("Command type: 0x") << hex << (unsigned int)_commandType + << dec << endl + << _("Message number: ") << (unsigned int)_messageNumber << endl + << _("Destination address: '") << _destinationAddress._number + << "'" << endl + << _("Command data length: ") << (unsigned int)_commandDataLength << endl + << _("Command data: '") << _commandData << "'" << endl + << dashes << endl << endl + << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +Address SMSCommandMessage::address() const +{ + return _destinationAddress; +} + +Ref SMSCommandMessage::clone() +{ + Ref result = new SMSCommandMessage(*this); + return result; +} + +// SMSDeliverReportMessage members + +void SMSDeliverReportMessage::init() +{ + _messageTypeIndicator = SMS_DELIVER_REPORT; + _protocolIdentifierPresent = false; + _dataCodingSchemePresent = false; + _userDataLengthPresent = false; +} + +SMSDeliverReportMessage::SMSDeliverReportMessage(string pdu) + throw(GsmException) +{ + SMSDecoder d(pdu); + _serviceCentreAddress = d.getAddress(true); + _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + assert(_messageTypeIndicator == SMS_DELIVER_REPORT); + d.alignOctet(); // skip to parameter indicator + _protocolIdentifierPresent = d.getBit(); // bit 0 + _dataCodingSchemePresent = d.getBit(); // bit 1 + _userDataLengthPresent = d.getBit(); // bit 2 + if (_protocolIdentifierPresent) + _protocolIdentifier = d.getOctet(); + if (_dataCodingSchemePresent) + _dataCodingScheme = d.getOctet(); + if (_userDataLengthPresent) + { + unsigned char userDataLength = d.getOctet(); + d.markSeptet(); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + { + _userData = d.getString(userDataLength); + _userData = gsmToLatin1(_userData); + } + else + { // userDataLength is length in octets + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); + d.getOctets(s, userDataLength); + _userData.assign((char*)s, userDataLength); + } + } +} + +string SMSDeliverReportMessage::encode() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + e.set2Bits(_messageTypeIndicator); // bits 0..1 + e.alignOctet(); // skip to parameter indicator + e.setBit(_protocolIdentifierPresent); // bit 0 + e.setBit(_dataCodingSchemePresent); // bit 1 + e.setBit(_userDataLengthPresent); // bit 2 + if (_protocolIdentifierPresent) + e.setOctet(_protocolIdentifier); + if (_dataCodingSchemePresent) + e.setOctet(_dataCodingScheme); + if (_userDataLengthPresent) + { + unsigned char userDataLength = _userData.length(); + e.setOctet(userDataLength); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + e.setString(latin1ToGsm(_userData)); + else + e.setOctets((unsigned char*)_userData.data(), userDataLength); + } + return e.getHexString(); +} + +string SMSDeliverReportMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: SMS-DELIVER-REPORT") << endl + << _("SC address: '") << _serviceCentreAddress._number << "'" << endl + << _("Protocol identifier present: ") << _protocolIdentifierPresent + << endl + << _("Data coding scheme present: ") << _dataCodingSchemePresent << endl + << _("User data length present: ") << _userDataLengthPresent << endl; + if (_protocolIdentifierPresent) + os << _("Protocol identifier: 0x") << hex + << (unsigned int)_protocolIdentifier + << dec << endl; + if (_dataCodingSchemePresent) + os << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl; + if (_userDataLengthPresent) + os << _("User data length: ") << (int)userDataLength() << endl + << _("User data: '") << _userData << "'" << endl; + os << dashes << endl << endl + << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +Address SMSDeliverReportMessage::address() const +{ + assert(0); // not address, should not be in SMS store + return Address(); +} + +Ref SMSDeliverReportMessage::clone() +{ + Ref result = new SMSDeliverReportMessage(*this); + return result; +} + +// SMSSubmitReportMessage members + +void SMSSubmitReportMessage::init() +{ + _messageTypeIndicator = SMS_SUBMIT_REPORT; + _protocolIdentifierPresent = false; + _dataCodingSchemePresent = false; + _userDataLengthPresent = false; +} + +SMSSubmitReportMessage::SMSSubmitReportMessage(string pdu) throw(GsmException) +{ + SMSDecoder d(pdu); + _serviceCentreAddress = d.getAddress(true); + _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1 + assert(_messageTypeIndicator == SMS_SUBMIT_REPORT); + _serviceCentreTimestamp = d.getTimestamp(); + _protocolIdentifierPresent = d.getBit(); // bit 0 + _dataCodingSchemePresent = d.getBit(); // bit 1 + _userDataLengthPresent = d.getBit(); // bit 2 + if (_protocolIdentifierPresent) + _protocolIdentifier = d.getOctet(); + if (_dataCodingSchemePresent) + _dataCodingScheme = d.getOctet(); + if (_userDataLengthPresent) + { + unsigned char userDataLength = d.getOctet(); + d.markSeptet(); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + { + _userData = d.getString(userDataLength); + _userData = gsmToLatin1(_userData); + } + else + { // _userDataLength is length in octets + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * userDataLength); + d.getOctets(s, userDataLength); + _userData.assign((char*)s, userDataLength); + } + } +} + +string SMSSubmitReportMessage::encode() +{ + SMSEncoder e; + e.setAddress(_serviceCentreAddress, true); + e.set2Bits(_messageTypeIndicator); // bits 0..1 + e.setTimestamp(_serviceCentreTimestamp); + e.setBit(_protocolIdentifierPresent); // bit 0 + e.setBit(_dataCodingSchemePresent); // bit 1 + e.setBit(_userDataLengthPresent); // bit 2 + if (_protocolIdentifierPresent) + e.setOctet(_protocolIdentifier); + if (_dataCodingSchemePresent) + e.setOctet(_dataCodingScheme); + if (_userDataLengthPresent) + { + e.setOctet(userDataLength()); + if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET) + e.setString(latin1ToGsm(_userData)); + else + e.setOctets((unsigned char*)_userData.data(), _userData.length()); + } + return e.getHexString(); +} + +string SMSSubmitReportMessage::toString() const +{ + ostrstream os; + os << dashes << endl + << _("Message type: SMS-SUBMIT-REPORT") << endl + << _("SC address: '") << _serviceCentreAddress._number << "'" << endl + << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl + << _("Protocol identifier present: ") << _protocolIdentifierPresent + << endl + << _("Data coding scheme present: ") << _dataCodingSchemePresent << endl + << _("User data length present: ") << _userDataLengthPresent << endl; + if (_protocolIdentifierPresent) + os << _("Protocol identifier: 0x") << hex + << (unsigned int)_protocolIdentifier + << dec << endl; + if (_dataCodingSchemePresent) + os << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl; + if (_userDataLengthPresent) + os << _("User data length: ") << (int)userDataLength() << endl + << _("User data: '") << _userData << "'" << endl; + os << dashes << endl << endl + << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +Address SMSSubmitReportMessage::address() const +{ + assert(0); // not address, should not be in SMS store + return Address(); +} + +Ref SMSSubmitReportMessage::clone() +{ + Ref result = new SMSSubmitReportMessage(*this); + return result; +} + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h new file mode 100644 index 0000000000..bd871391bb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms.h @@ -0,0 +1,480 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sms.h +// * +// * Purpose: SMS functions +// * (ETSI GSM 07.05) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 16.5.1999 +// ************************************************************************* + +#ifndef GSM_SMS_H +#define GSM_SMS_H + +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // forward declarations + class SMSStore; + class SMSMessage; + + // this class represents a single SMS message + class SMSMessage : public RefBase + { + private: + Ref _at; // connection to the device + + public: + // possible values for message type indicator + enum MessageType {SMS_DELIVER = 0, SMS_DELIVER_REPORT = 0, + SMS_STATUS_REPORT = 2, SMS_COMMAND = 2, + SMS_SUBMIT = 1, SMS_SUBMIT_REPORT = 1}; + + protected: + // fields of the different TPDUs + // all PDUs + string _userData; + UserDataHeader _userDataHeader; + Address _serviceCentreAddress; + MessageType _messageTypeIndicator;// 2 bits + DataCodingScheme _dataCodingScheme; + + public: + // decode hexadecimal pdu string + // return SMSMessage of the appropriate type + // differentiate between SMS transfer directions SC to ME, ME to SC + // also give GsmAt object for send() + static Ref decode(string pdu, + bool SCtoMEdirection = true, + GsmAt *at = NULL) + throw(GsmException); + + static Ref decode(istream& s) throw(GsmException); + + // encode pdu, return hexadecimal pdu string + virtual string encode() = 0; + + // send this PDU + // returns message reference and ACK-PDU (if requested) + // only applicate to SMS-SUBMIT and SMS-COMMAND + unsigned char send(Ref &ackPdu) throw(GsmException); + + // same as above, but ACK-PDU is discarded + unsigned char send() throw(GsmException); + + // create textual representation of SMS + virtual string toString() const = 0; + + // return deep copy of this message + virtual Ref clone() = 0; + + // return length of SC address when encoded + unsigned int getSCAddressLen(); + + // accessor functions + MessageType messageType() const {return _messageTypeIndicator;} + Address serviceCentreAddress() const {return _serviceCentreAddress;} + + // provided for sorting messages by timestamp + virtual Timestamp serviceCentreTimestamp() const {return Timestamp();} + + // return recipient, destination etc. address (for sorting by address) + virtual Address address() const = 0; + + virtual void setUserData(string x) {_userData = x;} + virtual string userData() const {return _userData;} + + // return the size of user data (including user data header) + unsigned char userDataLength() const; + + // accessor functions + virtual void setUserDataHeader(UserDataHeader x) {_userDataHeader = x;} + virtual UserDataHeader userDataHeader() const {return _userDataHeader;} + + virtual DataCodingScheme dataCodingScheme() const + {return _dataCodingScheme;} + virtual void setDataCodingScheme(DataCodingScheme x) + {_dataCodingScheme = x;} + + void setServiceCentreAddress(Address &x) {_serviceCentreAddress = x;} + void setAt(Ref at) {_at = at;} + + virtual ~SMSMessage(); + + // print ASCII hex representation of message + ostream& operator<<(ostream& s); + + // copy constructor and assignment +// SMSMessage(SMSMessage &m); +// SMSMessage &operator=(SMSMessage &m); + + friend class SMSStore; + }; + + // SMS-DELIVER TPDU + class SMSDeliverMessage : public SMSMessage + { + private: + // SMS-DELIVER PDU members (see GSM 03.40 section 9.2.2.1) + bool _moreMessagesToSend; + bool _replyPath; + bool _statusReportIndication; + Address _originatingAddress; + unsigned char _protocolIdentifier; // octet + Timestamp _serviceCentreTimestamp; + + // initialize members to sensible values + void init(); + + public: + // constructor, sets sensible default values + SMSDeliverMessage(); + + // constructor with given pdu + SMSDeliverMessage(string pdu) throw(GsmException); + + // encode pdu, return hexadecimal pdu string + virtual string encode(); + + // create textual representation of SMS + virtual string toString() const; + + // inherited from SMSMessage + Address address() const; + Ref clone(); + + // accessor functions + bool moreMessagesToSend() const {return _moreMessagesToSend;} + bool replyPath() const {return _replyPath;} + bool statusReportIndication() const {return _statusReportIndication;} + Address originatingAddress() const {return _originatingAddress;} + unsigned char protocolIdentifier() const {return _protocolIdentifier;} + Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;} + + void setMoreMessagesToSend(bool x) {_moreMessagesToSend = x;} + void setReplyPath(bool x) {_replyPath = x;} + void setStatusReportIndication(bool x) {_statusReportIndication = x;} + void setOriginatingAddress(Address &x) {_originatingAddress = x;} + void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;} + void setServiceCentreTimestamp(Timestamp &x) {_serviceCentreTimestamp = x;} + + virtual ~SMSDeliverMessage() {} + }; + + // SMS-SUBMIT TPDU + class SMSSubmitMessage : public SMSMessage + { + private: + // SMS-SUBMIT PDU (see GSM 03.40 section 9.2.2.2) + bool _rejectDuplicates; + TimePeriod::Format _validityPeriodFormat; // 2 bits + bool _replyPath; + bool _statusReportRequest; + unsigned char _messageReference; // integer + Address _destinationAddress; + unsigned char _protocolIdentifier; + TimePeriod _validityPeriod; + + // initialize members to sensible values + void init(); + + public: + // constructor, sets sensible default values + SMSSubmitMessage(); + + // constructor with given pdu + SMSSubmitMessage(string pdu) throw(GsmException); + + // convenience constructor + // given the text and recipient telephone number + SMSSubmitMessage(string text, string number); + + // encode pdu, return hexadecimal pdu string + virtual string encode(); + + // create textual representation of SMS + virtual string toString() const; + + // inherited from SMSMessage + Address address() const; + Ref clone(); + + // accessor functions + bool rejectDuplicates() const {return _rejectDuplicates;} + TimePeriod::Format validityPeriodFormat() const + {return _validityPeriodFormat;} + bool replyPath() const {return _replyPath;} + bool statusReportRequest() const {return _statusReportRequest;} + unsigned char messageReference() const {return _messageReference;} + Address destinationAddress() const {return _destinationAddress;} + unsigned char protocolIdentifier() const {return _protocolIdentifier;} + TimePeriod validityPeriod() const {return _validityPeriod;} + + void setRejectDuplicates(bool x) {_rejectDuplicates = x;} + void setValidityPeriodFormat(TimePeriod::Format &x) + {_validityPeriodFormat = x;} + void setReplyPath(bool x) {_replyPath = x;} + void setStatusReportRequest(bool x) {_statusReportRequest = x;} + void setMessageReference(unsigned char x) {_messageReference = x;} + void setDestinationAddress(Address &x) {_destinationAddress = x;} + void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;} + void setValidityPeriod(TimePeriod &x) {_validityPeriod = x;} + + virtual ~SMSSubmitMessage() {} + }; + + // SMS-STATUS-REPORT TPDU + class SMSStatusReportMessage : public SMSMessage + { + private: + // SMS-STATUS-REPORT PDU (see GSM 03.40 section 9.2.2.3) + bool _moreMessagesToSend; + bool _statusReportQualifier; + unsigned char _messageReference; + Address _recipientAddress; + Timestamp _serviceCentreTimestamp; + Timestamp _dischargeTime; + unsigned char _status; // octet + + // initialize members to sensible values + void init(); + + public: + // constructor, sets sensible default values + SMSStatusReportMessage() {init();} + + // constructor with given pdu + SMSStatusReportMessage(string pdu) throw(GsmException); + + // encode pdu, return hexadecimal pdu string + virtual string encode(); + + // create textual representation of SMS + virtual string toString() const; + + // inherited from SMSMessage + Address address() const; + Ref clone(); + + // accessor functions + bool moreMessagesToSend() const {return _moreMessagesToSend;} + bool statusReportQualifier() const {return _statusReportQualifier;} + unsigned char messageReference() const {return _messageReference;} + Address recipientAddress() const {return _recipientAddress;} + Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;} + Timestamp dischargeTime() const {return _dischargeTime;} + unsigned char status() const {return _status;} + + void setMoreMessagesToSend(bool x) {_moreMessagesToSend = x;} + void setStatusReportQualifier(bool x) {_statusReportQualifier = x;} + void setMessageReference(unsigned char x) {_messageReference = x;} + void setRecipientAddress(Address x) {_recipientAddress = x;} + void setServiceCentreTimestamp(Timestamp x) {_serviceCentreTimestamp = x;} + void setDischargeTime(Timestamp x) {_serviceCentreTimestamp = x;} + void setStatus(unsigned char x) {_status = x;} + + virtual ~SMSStatusReportMessage() {} + }; + + // SMS-COMMAND TPDU + class SMSCommandMessage : public SMSMessage + { + public: + // command types, other values are reserved or SC-specific + enum CommandType {EnquireSM = 0, CancelStatusReportRequest = 1, + DeleteSubmittedSM = 2, EnalbeStatusReportRequest = 3}; + + private: + // SMS-COMMAND PDU (see GSM 03.40 section 9.2.2.4) + unsigned char _messageReference; + bool _statusReportRequest; + unsigned char _protocolIdentifier; + unsigned char _commandType; + unsigned char _messageNumber; + Address _destinationAddress; + unsigned char _commandDataLength; + string _commandData; + + // initialize members to sensible values + void init(); + + public: + // constructor, sets sensible default values + SMSCommandMessage() {init();} + + // constructor with given pdu + SMSCommandMessage(string pdu) throw(GsmException); + + // encode pdu, return hexadecimal pdu string + virtual string encode(); + + // create textual representation of SMS + virtual string toString() const; + + // inherited from SMSMessage + Address address() const; + Ref clone(); + + // accessor functions + unsigned char messageReference() const {return _messageReference;} + bool statusReportRequest() const {return _statusReportRequest;} + unsigned char protocolIdentifier() const {return _protocolIdentifier;} + unsigned char commandType() const {return _commandType;} + unsigned char messageNumber() const {return _messageNumber;} + Address destinationAddress() const {return _destinationAddress;} + unsigned char commandDataLength() const {return _commandDataLength;} + string commandData() const {return _commandData;} + + void setMessageReference(unsigned char x) {_messageReference = x;} + void setStatusReportRequest(bool x) {_statusReportRequest = x;} + void setProtocolIdentifier(unsigned char x) {_protocolIdentifier = x;} + void setCommandType(unsigned char x) {_commandType = x;} + void setMessageNumber(unsigned char x) {_messageNumber = x;} + void setDestinationAddress(Address &x) {_destinationAddress = x;} + void setCommandDataLength(unsigned char x) {_commandDataLength = x;} + void setCommandData(string x) {_commandData = x;} + + virtual ~SMSCommandMessage() {} + }; + + // SMS-DELIVER-REPORT TPDU for RP-ACK + class SMSDeliverReportMessage : public SMSMessage + { + private: + // SMS-DELIVER-REPORT PDU (see GSM 03.40 section 9.2.2.1a (II)) + bool _protocolIdentifierPresent; // parameter indicator + bool _dataCodingSchemePresent; + bool _userDataLengthPresent; + unsigned char _protocolIdentifier; + + // initialize members to sensible values + void init(); + + public: + // constructor, sets sensible default values + SMSDeliverReportMessage() {init();} + + // constructor with given pdu + SMSDeliverReportMessage(string pdu) throw(GsmException); + + // encode pdu, return hexadecimal pdu string + virtual string encode(); + + // create textual representation of SMS + virtual string toString() const; + + // inherited from SMSMessage + Address address() const; + Ref clone(); + + // accessor functions + bool protocolIdentifierPresent() const {return _protocolIdentifierPresent;} + bool dataCodingSchemePresent() const {return _dataCodingSchemePresent;} + bool userDataLengthPresent() const {return _userDataLengthPresent;} + unsigned char protocolIdentifier() const + {assert(_protocolIdentifierPresent); return _protocolIdentifier;} + DataCodingScheme dataCodingScheme() const + {assert(_dataCodingSchemePresent); return _dataCodingScheme;} + UserDataHeader userDataHeader() const + {assert(_userDataLengthPresent); return _userDataHeader;} + string userData() const + {assert(_userDataLengthPresent); return _userData;} + + void setProtocolIdentifier(unsigned char x) + {_protocolIdentifierPresent = true; _protocolIdentifier = x;} + void setDataCodingScheme(DataCodingScheme x) + {_dataCodingSchemePresent = true; _dataCodingScheme = x;} + void setUserDataHeader(UserDataHeader x) + { + _userDataLengthPresent = true; + _userDataHeader = x; + } + void setUserData(string x) + { + _userDataLengthPresent = true; + _userData = x; + } + + virtual ~SMSDeliverReportMessage() {} + }; + + // SMS-SUBMIT-REPORT TPDU for RP-ACK + class SMSSubmitReportMessage : public SMSMessage + { + private: + // SMS-SUBMIT-REPORT PDU (see GSM 03.40 section 9.2.2.2a (II)) + Timestamp _serviceCentreTimestamp; + bool _protocolIdentifierPresent; // parameter indicator + bool _dataCodingSchemePresent; + bool _userDataLengthPresent; + unsigned char _protocolIdentifier; + DataCodingScheme _dataCodingScheme; + + // initialize members to sensible values + void init(); + + public: + // constructor, sets sensible default values + SMSSubmitReportMessage() {init();} + + // constructor with given pdu + SMSSubmitReportMessage(string pdu) throw(GsmException); + + // encode pdu, return hexadecimal pdu string + virtual string encode(); + + // create textual representation of SMS + virtual string toString() const; + + // inherited from SMSMessage + Address address() const; + Ref clone(); + + // accessor functions + Timestamp serviceCentreTimestamp() const {return _serviceCentreTimestamp;} + bool protocolIdentifierPresent() const {return _protocolIdentifierPresent;} + bool dataCodingSchemePresent() const {return _dataCodingSchemePresent;} + bool userDataLengthPresent() const {return _userDataLengthPresent;} + unsigned char protocolIdentifier() const + {assert(_protocolIdentifierPresent); return _protocolIdentifier;} + DataCodingScheme dataCodingScheme() const + {assert(_dataCodingSchemePresent); return _dataCodingScheme;} + UserDataHeader userDataHeader() const + {assert(_userDataLengthPresent); return _userDataHeader;} + string userData() const + {assert(_userDataLengthPresent); return _userData;} + + void setServiceCentreTimestamp(Timestamp &x) {_serviceCentreTimestamp = x;} + void setProtocolIdentifier(unsigned char x) + {_protocolIdentifierPresent = true; _protocolIdentifier = x;} + void setDataCodingScheme(DataCodingScheme x) + {_dataCodingSchemePresent = true; _dataCodingScheme = x;} + void setUserDataHeader(UserDataHeader x) + { + _userDataLengthPresent = true; + _userDataHeader = x; + } + void setUserData(string x) + { + _userDataLengthPresent = true; + _userData = x; + } + virtual ~SMSSubmitReportMessage() {} + }; + + // some useful typdefs + typedef Ref SMSMessageRef; +}; + +#endif // GSM_SMS_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc new file mode 100644 index 0000000000..cdcb0032bc --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.cc @@ -0,0 +1,702 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sms_codec.cc +// * +// * Purpose: Coder and Encoder for SMS TPDUs +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 17.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_STRING_H +#include +#endif +#include +#include +using namespace std; +using namespace gsmlib; + +// Address members + +Address::Address(string number) : _plan(ISDN_Telephone) +{ + number = removeWhiteSpace(number); + if (number.length() > 0 && number[0] == '+') + { + _type = International; + _number = number.substr(1, number.length() - 1); + } + else + { + _type = Unknown; + _number = number; + } +} + +string Address::toString() const +{ + if (_type == International) + return "+" + _number; + else + return _number; +} + +bool gsmlib::operator<(const Address &x, const Address &y) +{ + // normalize numbers according to the following two rules: + // - prepend "+" if international number + // - append 0s to the shorter number so that both numbers have equal length + string xnumber = x._number; + string ynumber = y._number; + static string twenty0s = "00000000000000000000"; + + if (x._type == Address::International) xnumber = "+" + xnumber; + if (y._type == Address::International) ynumber = "+" + ynumber; + + while (xnumber.length() != ynumber.length()) + if (xnumber.length() < ynumber.length()) + { + int diff = ynumber.length() - xnumber.length(); + xnumber += twenty0s.substr(0, (diff > 20 ? 20 : diff)); + } + else + { + int diff = xnumber.length() - ynumber.length(); + ynumber += twenty0s.substr(0, (diff > 20 ? 20 : diff)); + } + + return xnumber < ynumber; +} + +bool gsmlib::operator==(const Address &x, const Address &y) +{ + return x._number == y._number && x._plan == y._plan; +} + +// Timestamp members + +bool Timestamp::empty() const +{ + return _year == 0 && _month == 0 && _day == 0 && _hour == 0 && + _minute == 0 && _seconds == 0 && _timeZoneMinutes == 0; +} + +string Timestamp::toString(bool appendTimeZone) const +{ + short timeZoneMinutes = _timeZoneMinutes; + short timeZoneHours = timeZoneMinutes / 60; + timeZoneMinutes %= 60; + + // format date and time in a locale-specific way + struct tm t; + t.tm_sec = _seconds; + t.tm_min = _minute; + t.tm_hour = _hour; + t.tm_mon = _month - 1; + // year 2000 heuristics, SMSs cannot be older than start of GSM network + t.tm_year = _year < 80 ? _year + 100 : _year; + t.tm_mday = _day; + t.tm_isdst = -1; + t.tm_yday = 0; + t.tm_wday = 0; + +#ifdef BROKEN_STRFTIME + char formattedTime[1024]; + strftime(formattedTime, 1024, "%x %X", &t); +#else + int formattedTimeSize = strftime(NULL, INT_MAX, "%x %X", &t) + 1; + char *formattedTime = (char*)alloca(sizeof(char) * formattedTimeSize); + strftime(formattedTime, formattedTimeSize, "%x %X", &t); +#endif + + if (! appendTimeZone) + return formattedTime; + + ostrstream os; + os << formattedTime << " (" << (_negativeTimeZone ? '-' : '+') + << setfill('0') << setw(2) << timeZoneHours + << setw(2) << timeZoneMinutes << ')' << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; +} + +bool gsmlib::operator<(const Timestamp &x, const Timestamp &y) +{ + // we don't take time zone info into account because + // - it's more complicated to compute + // - it might confuse the user for whom it's also too complicated + if (x._year < y._year) + return true; + else if (x._year > y._year) + return false; + + if (x._month < y._month) + return true; + else if (x._month > y._month) + return false; + + if (x._day < y._day) + return true; + else if (x._day > y._day) + return false; + + if (x._hour < y._hour) + return true; + else if (x._hour > y._hour) + return false; + + if (x._minute < y._minute) + return true; + else if (x._minute > y._minute) + return false; + + return x._seconds < y._seconds; +} + +bool gsmlib::operator==(const Timestamp &x, const Timestamp &y) +{ + // we don't take time zone info in order to be consistent with operator< + return x._year == y._year && x._month == y._month && x._day == y._day && + x._hour == y._hour && x._minute == y._minute && x._seconds == y._seconds; +} + +// TimePeriod members + +string TimePeriod::toString() const +{ + switch (_format) + { + case NotPresent: + return _("not present"); + case Relative: + { + ostrstream os; + if (_relativeTime <= 143) + os << ((int)_relativeTime + 1) * 5 << _(" minutes"); + else if (_relativeTime <= 167) + os << 12 * 60 + ((int)_relativeTime - 143) * 30 << _(" minutes"); + else if (_relativeTime <= 196) + os << (int)_relativeTime - 166 << _(" days"); + else if (_relativeTime <= 143) + os << (int)_relativeTime - 192 << _(" weeks"); + os << ends; + char *ss = os.str(); + string result(ss); + delete[] ss; + return result; + } + case Absolute: + return _absoluteTime.toString(); + default: + return _("unknown"); + } +} + +// DataCodingScheme members + +string DataCodingScheme::toString() const +{ + string result; + if (compressed()) result += _("compressed "); + if (messageWaitingIndication()) + switch (getMessageWaitingType()) + { + case DCS_VOICEMAIL_MESSAGE_WAITING: + result += _("voicemail message waiting"); + break; + case DCS_FAX_MESSAGE_WAITING: + result += _("fax message waiting"); + break; + case DCS_ELECTRONIC_MAIL_MESSAGE_WAITING: + result += _("electronic mail message waiting"); + break; + case DCS_OTHER_MESSAGE_WAITING: + result += _("other message waiting"); + break; + } + else + switch (getAlphabet()) + { + case DCS_DEFAULT_ALPHABET: + result += _("default alphabet"); + break; + case DCS_EIGHT_BIT_ALPHABET: + result += _("8-bit alphabet"); + break; + case DCS_SIXTEEN_BIT_ALPHABET: + result += _("16-bit alphabet"); + break; + case DCS_RESERVED_ALPHABET: + result += _("reserved alphabet"); + break; + } + return result; +} + +// SMSDecoder members + +SMSDecoder::SMSDecoder(string pdu) : _bi(0), _septetStart(NULL) +{ + _p = new unsigned char[pdu.length() / 2]; + _op = _p; + if (! hexToBuf(pdu, _p)) + throw GsmException(_("bad hexadecimal PDU format"), SMSFormatError); + _maxop = _op + pdu.length() / 2; +} + +void SMSDecoder::alignOctet() +{ + if (_bi != 0) + { + _bi = 0; + ++_op; + } +} + +void SMSDecoder::alignSeptet() +{ + assert(_septetStart != NULL); + while (((_op - _septetStart) * 8 + _bi) % 7 != 0) getBit(); +} + +unsigned char SMSDecoder::get2Bits() +{ + unsigned char result = getBit(); + return result | (getBit() << 1); +} + +unsigned char SMSDecoder::getOctet() +{ + alignOctet(); + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + return *_op++; +} + +void SMSDecoder::getOctets(unsigned char* octets, unsigned short length) +{ + alignOctet(); + for (unsigned short i = 0; i < length; ++i) + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + *octets++ = *_op++; + } +} + +string SMSDecoder::getSemiOctets(unsigned short length) +{ + string result; + result.reserve(length); + alignOctet(); + for (unsigned short i = 0; i < length; ++i) + { + if (_bi == 0) + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + // bits 0..3 are most significant + result += '0' + (*_op & 0xf); + _bi = 4; + } + else + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + // bits 4..7 are least significant, skip 0xf digit + if ((*_op & 0xf0) != 0xf0) + result += '0' + (*_op >> 4); + _bi = 0; + ++_op; + } + } + alignOctet(); + return result; +} + +unsigned long SMSDecoder::getSemiOctetsInteger(unsigned short length) +{ + unsigned long result = 0; + alignOctet(); + for (unsigned short i = 0; i < length; ++i) + { + if (_bi == 0) + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + // bits 0..3 are most significant + result = result * 10 + (*_op & 0xf); + _bi = 4; + } + else + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + // bits 4..7 are least significant, skip 0xf digit + if ((*_op & 0xf0) != 0xf0) + result = result * 10 + (*_op >> 4); + _bi = 0; + ++_op; + } + } + alignOctet(); + return result; +} + +unsigned long SMSDecoder::getTimeZone(bool &negativeTimeZone) +{ + unsigned long result = 0; + alignOctet(); + for (unsigned short i = 0; i < 2; ++i) + { + if (_bi == 0) + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + // bits 0..3 are most significant + if (i == 0) + { // get sign + result = result * 10 + (*_op & 0x7); + negativeTimeZone = (*_op & 0x8 == 0); + } + else + result = result * 10 + (*_op & 0xf); + _bi = 4; + } + else + { + if (_op >= _maxop) + throw GsmException(_("premature end of PDU"), SMSFormatError); + // bits 4..7 are least significant + result = result * 10 + (*_op >> 4); + _bi = 0; + ++_op; + } + } + alignOctet(); + return result * 15; // compute minutes +} + +unsigned long SMSDecoder::getInteger(unsigned short length) +{ + unsigned long result = 0; + for (unsigned short i = 0; i < length; ++i) + result |= (getBit() << i); + return result; +} + +string SMSDecoder::getString(unsigned short length) +{ + string result; + alignSeptet(); + for (unsigned short i = 0; i < length; ++i) + { + unsigned char c = 0; + for (unsigned short j = 0; j < 7; ++j) + c |= getBit() << j; + result += c; + } + return result; +} + +Address SMSDecoder::getAddress(bool scAddressFormat) +{ + Address result; + alignOctet(); + + unsigned char addressLength = getOctet(); + if (addressLength == 0 && scAddressFormat) + return result; // special case for SUBMIT-PDUs + + // parse Type-of-Address + result._plan = (Address::NumberingPlan)getInteger(4); + result._type = (Address::Type)getInteger(3); + + // get address + if (result._type == Address::Alphanumeric) + { + markSeptet(); + // addressLength is number of semi-octets + // (addressLength / 2) * 8 is number of available bits + // divided by 7 is number of 7-bit characters + result._number = gsmToLatin1(getString(addressLength * 4 / 7)); + alignOctet(); + } + else + result._number = getSemiOctets(scAddressFormat ? + (addressLength - 1) * 2 : addressLength); + return result; +} + +Timestamp SMSDecoder::getTimestamp() +{ + Timestamp result; + + result._year = getSemiOctetsInteger(2); + result._month = getSemiOctetsInteger(2); + result._day = getSemiOctetsInteger(2); + result._hour = getSemiOctetsInteger(2); + result._minute = getSemiOctetsInteger(2); + result._seconds = getSemiOctetsInteger(2); + result._timeZoneMinutes = getTimeZone(result._negativeTimeZone); + return result; +} + +TimePeriod SMSDecoder::getTimePeriod(TimePeriod::Format format) +{ + TimePeriod result; + result._format = format; + switch (format) + { + case TimePeriod::NotPresent: + break; + case TimePeriod::Relative: + result._relativeTime = getOctet(); + break; + case TimePeriod::Absolute: + result._absoluteTime = getTimestamp(); + break; + default: + throw GsmException(_("unknown time period format"), SMSFormatError); + break; + } + return result; +} + +SMSDecoder::~SMSDecoder() +{ + delete _p; +} + +// SMSEncoder members + +SMSEncoder::SMSEncoder() : _bi(0), _op(_p) +{ + memset((void*)_p, 0, sizeof(_p)); +} + +void SMSEncoder::alignOctet() +{ + if (_bi != 0) + { + _bi = 0; + ++_op; + } +} + +void SMSEncoder::alignSeptet() +{ + while (((_op - _septetStart) * 8 + _bi) % 7 != 0) setBit(); +} + +void SMSEncoder::set2Bits(unsigned char twoBits) +{ + setBit(twoBits & 1); + setBit((twoBits & 2) == 2); +} + +void SMSEncoder::setOctet(unsigned char octet) +{ + alignOctet(); + *_op++ = octet; +} + +void SMSEncoder::setOctets(const unsigned char* octets, unsigned short length) +{ + alignOctet(); + for (unsigned short i = 0; i < length; ++i) + *_op++ = octets[i]; +} + +void SMSEncoder::setSemiOctets(string semiOctets) +{ + alignOctet(); + for (unsigned int i = 0; i < semiOctets.length(); ++i) + { + if (_bi == 0) + { + *_op = semiOctets[i] - '0'; + _bi = 4; + } + else + { + *_op++ |= (semiOctets[i] - '0') << 4; + _bi = 0; + } + } + if (_bi == 4) + *_op++ |= 0xf0; + _bi = 0; +} + +void SMSEncoder::setSemiOctetsInteger(unsigned long intValue, + unsigned short length) +{ + ostrstream os; + os << intValue << ends; + char *ss = os.str(); + string s(ss); + delete[] ss; + assert(s.length() <= length); + while (s.length() < length) s = '0' + s; + setSemiOctets(s); +} + +void SMSEncoder::setTimeZone(bool negativeTimeZone, unsigned long timeZone) +{ + setSemiOctetsInteger(timeZone / 15, 2); + if (!negativeTimeZone) + *(_op - 1) |= 8; +} + +void SMSEncoder::setInteger(unsigned long intvalue, unsigned short length) +{ + for (unsigned short i = 0; i < length; ++i) + setBit((intvalue & (1 << i)) != 0); +} + +void SMSEncoder::setString(string stringValue) +{ + alignSeptet(); + for (unsigned int i = 0; i < stringValue.length(); ++i) + { + unsigned char c = stringValue[i]; + for (unsigned short j = 0; j < 7; ++j) + setBit(((1 << j) & c) != 0); + } +} + +void SMSEncoder::setAddress(Address &address, bool scAddressFormat) +{ + alignOctet(); + if (scAddressFormat) + { + unsigned int numberLen = address._number.length(); + if (numberLen == 0) + { + setOctet(0); // special case: use default SC address + return; // (set by +CSCA=) + } + setOctet(numberLen / 2 + numberLen % 2 + 1); + // not supported for SCA format + assert(address._type != Address::Alphanumeric); + } + else + if (address._type == Address::Alphanumeric) + // address in GSM default encoding, see also comment in getAddress() + setOctet((address._number.length() * 7 + 6) / 8 * 2); + else + setOctet(address._number.length()); + + setInteger(address._plan, 4); + setInteger(address._type, 3); + setBit(1); + + if (address._number.length() > 0) + if (address._type == Address::Alphanumeric) + { + markSeptet(); + setString(latin1ToGsm(address._number)); + } + else + setSemiOctets(address._number); + alignOctet(); +} + +void SMSEncoder::setTimestamp(Timestamp timestamp) +{ + setSemiOctetsInteger(timestamp._year, 2); + setSemiOctetsInteger(timestamp._month, 2); + setSemiOctetsInteger(timestamp._day, 2); + setSemiOctetsInteger(timestamp._hour, 2); + setSemiOctetsInteger(timestamp._minute, 2); + setSemiOctetsInteger(timestamp._seconds, 2); + setTimeZone(timestamp._negativeTimeZone, timestamp._timeZoneMinutes); +} + +void SMSEncoder::setTimePeriod(TimePeriod period) +{ + switch (period._format) + { + case TimePeriod::NotPresent: + break; + case TimePeriod::Relative: + setOctet(period._relativeTime); + break; + case TimePeriod::Absolute: + setTimestamp(period._absoluteTime); + break; + default: + assert(0); + break; + } +} + +string SMSEncoder::getHexString() +{ + short bi = _bi; + unsigned char *op = _op; + alignOctet(); + string result = bufToHex(_p, _op - _p); + _bi = bi; + _op = op; + return result; +} + +unsigned int SMSEncoder::getLength() +{ + short bi = _bi; + unsigned char *op = _op; + alignOctet(); + unsigned int result = _op - _p; + _bi = bi; + _op = op; + return result; +} + +// UserDataHeader members + +void UserDataHeader::encode(SMSEncoder &e) +{ + e.setOctet(_udh.length()); + e.setOctets((unsigned char*)_udh.data(), _udh.length()); +} + +void UserDataHeader::decode(SMSDecoder &d) +{ + unsigned char udhLen = d.getOctet(); + unsigned char *s = + (unsigned char*)alloca(sizeof(unsigned char) * udhLen); + d.getOctets(s, udhLen); + string ss((char*)s, (unsigned int)udhLen); + _udh = ss; +} + +string UserDataHeader::getIE(unsigned char id) +{ + int udhl, pos = 0; + + udhl = _udh.length(); + while (pos < udhl) + { + unsigned char iei = _udh[pos++]; + unsigned char ieidl = _udh[pos++]; + if (iei == id) return _udh.substr(pos, ieidl); + pos += ieidl; + } + return ""; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h new file mode 100644 index 0000000000..692b424561 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_codec.h @@ -0,0 +1,329 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sms_codec.h +// * +// * Purpose: Coder and Encoder for SMS TPDUs +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 16.5.1999 +// ************************************************************************* + +#ifndef GSM_SMS_CODEC_H +#define GSM_SMS_CODEC_H + +#include +#include + +using namespace std; + +namespace gsmlib +{ + // this struct represents a telephone number + // usually _type == Unknown or International + // and _number == ISDN_Telephone + struct Address + { + enum Type {Unknown = 0, International = 1, National = 2, + NetworkSpecific = 3, Subscriber = 4, + Alphanumeric = 5, Abbreviated = 6, Reserved = 7}; + enum NumberingPlan {UnknownPlan = 0, ISDN_Telephone = 1, + Data = 3, Telex = 4, NationalPlan = 8, + PrivatePlan = 9, Ermes = 10, ReservedPlan = 15}; + Type _type; + NumberingPlan _plan; + string _number; + + Address() : _type(Unknown), _plan(UnknownPlan) {} + // the constructor sets _type and _plan to defaults + // _plan == ISDN_Telephone + // _type == International if number starts with "+" + // _type == unknown otherwise + // number must be of the form "+123456" or "123456" + Address(string number); + + // return string representation + string toString() const; + + friend bool operator<(const Address &x, const Address &y); + friend bool operator==(const Address &x, const Address &y); + }; + + // compare two addresses + extern bool operator<(const Address &x, const Address &y); + extern bool operator==(const Address &x, const Address &y); + + // representation of a SMS timestamp + struct Timestamp + { + short _year, _month, _day, _hour, _minute, _seconds, _timeZoneMinutes; + bool _negativeTimeZone; + + Timestamp() : _year(0), _month(0), _day(0), _hour(0), + _minute(0), _seconds(0), _timeZoneMinutes(0), _negativeTimeZone(false) {} + + // return true if the time stamp is empty (ie. contains only zeroes) + bool empty() const; + + // return string representation + string toString(bool appendTimeZone = true) const; + + friend bool operator<(const Timestamp &x, const Timestamp &y); + friend bool operator==(const Timestamp &x, const Timestamp &y); + }; + + // compare two timestamps + extern bool operator<(const Timestamp &x, const Timestamp &y); + extern bool operator==(const Timestamp &x, const Timestamp &y); + + // representation of time period + struct TimePeriod + { + // possible values for validity period format + enum Format {NotPresent = 0, Relative = 2, Absolute = 3}; + Format _format; + Timestamp _absoluteTime; + unsigned char _relativeTime; + + TimePeriod() : _format(NotPresent), _relativeTime(0) {} + + // return string representation (already translated) + string toString() const; + }; + + // representation of DataCodingScheme + // the data coding scheme is described in detail in ETSI GSM 03.38, section 4 + const unsigned char DCS_COMPRESSED = 0x20; // bit 5 + + const unsigned char DCS_DEFAULT_ALPHABET = 0 << 2; // bit 2..3 == 0 + const unsigned char DCS_EIGHT_BIT_ALPHABET = 1 << 2; // bit 2..3 == 01 + const unsigned char DCS_SIXTEEN_BIT_ALPHABET = 2 << 2; // bit 2..3 == 10 + const unsigned char DCS_RESERVED_ALPHABET = 3 << 2; // bit 2..3 == 11 + + const unsigned char DCS_MESSAGE_WAITING_INDICATION = 0xc0; // bit 7..6 == 11 + const unsigned char DCS_VOICEMAIL_MESSAGE_WAITING = 0; + const unsigned char DCS_FAX_MESSAGE_WAITING = 1; + const unsigned char DCS_ELECTRONIC_MAIL_MESSAGE_WAITING = 2; + const unsigned char DCS_OTHER_MESSAGE_WAITING = 3; + + class DataCodingScheme + { + private: + unsigned char _dcs; + + public: + // initialize with data coding scheme octet + DataCodingScheme(unsigned char dcs) : _dcs(dcs) {} + + // set to default values (no message waiting, no message class indication, + // default 7-bit alphabet) + DataCodingScheme() : _dcs(DCS_DEFAULT_ALPHABET) {} + + // return type of alphabet used (if messageWaitingIndication == false) + unsigned char getAlphabet() const {return _dcs & (3 << 2);} + + // return true if message compressed + // (if messageWaitingIndication == false) + bool compressed() const {return _dcs & DCS_COMPRESSED == DCS_COMPRESSED;} + + // return true if message waiting indication + bool messageWaitingIndication() const + {return _dcs & DCS_MESSAGE_WAITING_INDICATION == + DCS_MESSAGE_WAITING_INDICATION;} + + // return type of waiting message (if messageWaitingIndication == true) + unsigned char getMessageWaitingType() const {return _dcs & 3;} + + // return string representation (already translated) + string toString() const; + + operator unsigned char() const {return _dcs;} + }; + + // utility class facilitate SMS TPDU decoding + class SMSDecoder + { + private: + unsigned char *_p; // buffer to hold pdu + short _bi; // bit index (0..7) + unsigned char *_op; // current octet pointer + unsigned char *_septetStart; // start of septet string + + unsigned char *_maxop; // pointer to last byte after _p + + public: + // initialize with a hexadecimal octet string containing SMS TPDU + SMSDecoder(string pdu); + + // align to octet border + void alignOctet(); + + // remember starting point of septets (important for alignSeptet()) + void markSeptet() {alignOctet(); _septetStart = _op;} + + // align to septet border + void alignSeptet(); + + // get single bit + bool getBit() + { + assert(_op < _maxop); + bool result = ((*_op >> _bi) & 1); + if (_bi == 7) + { + _bi = 0; + ++_op; + } + else + ++_bi; + return result; + } + + // get two bits + unsigned char get2Bits(); + + // get one octet + unsigned char getOctet(); + + // get string of octets of specified length + void getOctets(unsigned char* octets, unsigned short length); + + // get length semi-octets (bcd-coded number) as ASCII string of numbers + string getSemiOctets(unsigned short length); + + // get length semi-octets (bcd-coded number) as integer + unsigned long getSemiOctetsInteger(unsigned short length); + + // get time zone (in minutes) and time zone sign + unsigned long getTimeZone(bool &negativeTimeZone); + + // get integer with length number of bits + unsigned long getInteger(unsigned short length); + + // get length number of alphanumeric 7-bit characters + // markSeptet() must be called before this function + string getString(unsigned short length); + + // get address/telephone number + // service centre address has special format + Address getAddress(bool scAddressFormat = false); + + // get Timestamp + Timestamp getTimestamp(); + + // get TimePeriod of given format + TimePeriod getTimePeriod(TimePeriod::Format format); + + // destructor + ~SMSDecoder(); + }; + + // utility class for SMS TPDU encoding + class SMSEncoder + { + private: + unsigned char _p[2000]; // buffer to hold pdu (2000 should be enough) + short _bi; // bit index (0..7) + unsigned char *_op; // current octet pointer + unsigned char *_septetStart; // start of septet string + + public: + // constructor + SMSEncoder(); + + // align to octet border + void alignOctet(); + + // remember starting point of septets (important for alignSeptet()) + void markSeptet() {alignOctet(); _septetStart = _op;} + + // align to septet border + void alignSeptet(); + + // set single bit + void setBit(bool bit = false) + { + if (bit) + *_op |= (1 << _bi); + if (_bi == 7) + { + _bi = 0; + ++_op; + } + else + ++_bi; + } + + // set two bits + void set2Bits(unsigned char twoBits); + + // set one octet + void setOctet(unsigned char octet); + + // set string of octets of specified length + void setOctets(const unsigned char* octets, unsigned short length); + + // set semi-octets semiOctets (given as ASCII string of numbers) + void setSemiOctets(string semiOctets); + + // set semi-octets (given as integer) + void setSemiOctetsInteger(unsigned long intValue, unsigned short length); + + // set time zone (in minutes) and time zone sign + void setTimeZone(bool negativeTimeZone, unsigned long timeZone); + + // set integer with length number of bits + void setInteger(unsigned long intvalue, unsigned short length); + + // set alphanumeric 7-bit characters + void setString(string stringValue); + + // set address/telephone number + // service centre address has special format + void setAddress(Address &address, bool scAddressFormat = false); + + // set Timestamp + void setTimestamp(Timestamp timestamp); + + // set TimePeriod + void setTimePeriod(TimePeriod period); + + // return constructed TPDU as hex-encoded string + string getHexString(); + + // return current length of TPDU + unsigned int getLength(); + }; + + // class to handle user data header + class UserDataHeader + { + private: + string _udh; + + public: + // empty user data header + UserDataHeader() {} + + // initialize with user data header + UserDataHeader (string udh) : _udh(udh) {} + + // encode header + void encode(SMSEncoder &e); + + // decode header + void decode(SMSDecoder &d); + + // return a given information element, if present, or an empty string + string getIE(unsigned char id); + + // return the size of the header + unsigned int length() const {return _udh.length();} + + // return user data header as octet string + operator string() const {return _udh;} + }; +}; + +#endif // GSM_SMS_CODEC_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc new file mode 100644 index 0000000000..91e15ce3a8 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.cc @@ -0,0 +1,489 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sms_store.cc +// * +// * Purpose: SMS functions, SMS store +// * (ETSI GSM 07.05) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 20.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// SMSStoreEntry members + +SMSStoreEntry::SMSStoreEntry() : + _status(Unknown), _cached(false), _mySMSStore(NULL), _index(0) +{ +} + + +SMSMessageRef SMSStoreEntry::message() const throw(GsmException) +{ + if (! cached()) + { + assert(_mySMSStore != NULL); + // these operations are at least "logically const" + SMSStoreEntry *thisEntry = const_cast(this); + _mySMSStore->readEntry(_index, thisEntry->_message, thisEntry->_status); + thisEntry->_cached = true; + } + return _message; +} + +CBMessageRef SMSStoreEntry::cbMessage() const throw(GsmException) +{ + assert(_mySMSStore != NULL); + + // these operations are at least "logically const" + SMSStoreEntry *thisEntry = const_cast(this); + // don't cache CB message for now + thisEntry->_cached = false; + + CBMessageRef result; + _mySMSStore->readEntry(_index, result); + return result; +} + +SMSStoreEntry::SMSMemoryStatus SMSStoreEntry::status() const + throw(GsmException) +{ + if (! cached()) + { + assert(_mySMSStore != NULL); + // these operations are at least "logically const" + SMSStoreEntry *thisEntry = const_cast(this); + _mySMSStore->readEntry(_index, thisEntry->_message, thisEntry->_status); + thisEntry->_cached = true; + } + return _status; +} + +bool SMSStoreEntry::empty() const throw(GsmException) +{ + return message().isnull(); +} + +unsigned char SMSStoreEntry::send(Ref &ackPdu) + throw(GsmException) +{ + return _mySMSStore->send(_index, ackPdu); +} + +unsigned char SMSStoreEntry::send() throw(GsmException) +{ + SMSMessageRef mref; + return send(mref); +} + +bool SMSStoreEntry::cached() const +{ + if (_mySMSStore == NULL) + return _cached; + else + return _cached && _mySMSStore->_useCache; +} + +Ref SMSStoreEntry::clone() +{ + Ref result = new SMSStoreEntry(_message->clone()); + result->_status = _status; + result->_index = _index; + return result; +} + +bool SMSStoreEntry::operator==(const SMSStoreEntry &e) const +{ + if (_message.isnull() || e._message.isnull()) + return _message.isnull() && e._message.isnull(); + else + return _message->encode() == e._message->encode(); +} + +SMSStoreEntry::SMSStoreEntry(const SMSStoreEntry &e) +{ + _message = e._message; + _status = e._status; + _cached = e._cached; + _mySMSStore = e._mySMSStore; + _index = e._index; +} + +SMSStoreEntry &SMSStoreEntry::operator=(const SMSStoreEntry &e) +{ + _message = e._message; + _status = e._status; + _cached = e._cached; + _mySMSStore = e._mySMSStore; + _index = e._index; + return *this; +} + +// iterator members + +SMSStoreEntry &SMSStoreIterator::operator*() +{ + return (*_store)[_index]; +} + +SMSStoreEntry *SMSStoreIterator::operator->() +{ + return &(*_store)[_index]; +} + +SMSStoreIterator::operator SMSStoreEntry*() +{ + return &(*_store)[_index]; +} + +SMSStoreIterator &SMSStoreIterator::operator=(const SMSStoreIterator &i) +{ + _index = i._index; + _store = i._store; + return *this; +} + +const SMSStoreEntry &SMSStoreConstIterator::operator*() +{ + return (*_store)[_index]; +} + +const SMSStoreEntry *SMSStoreConstIterator::operator->() +{ + return &(*_store)[_index]; +} + +// SMSStore members + +void SMSStore::readEntry(int index, SMSMessageRef &message, + SMSStoreEntry::SMSMemoryStatus &status) + throw(GsmException) +{ + // select SMS store + _meTa.setSMSStore(_storeName, 1); + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Reading SMS entry " << index << endl; +#endif // NDEBUG + + string pdu; + Ref p; + try + { + p = new Parser(_at->chat("+CMGR=" + intToStr(index + 1), "+CMGR:", + pdu, false, true, true)); + } + catch (GsmException &ge) + { + if (ge.getErrorCode() != SMS_INVALID_MEMORY_INDEX) + throw ge; + else + { + message = SMSMessageRef(); + status = SMSStoreEntry::Unknown; + return; + } + } + + if (pdu.length() == 0) + { + message = SMSMessageRef(); + status = SMSStoreEntry::Unknown; + } + else + { + // add missing service centre address if required by ME + if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix) + pdu = "00" + pdu; + + status = (SMSStoreEntry::SMSMemoryStatus)p->parseInt(); + + // ignore the rest of the line + message = SMSMessageRef( + SMSMessage::decode(pdu, + !(status == SMSStoreEntry::StoredUnsent || + status == SMSStoreEntry::StoredSent), + _at.getptr())); + } +} + +void SMSStore::readEntry(int index, CBMessageRef &message) + throw(GsmException) +{ + // select SMS store + _meTa.setSMSStore(_storeName, 1); + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Reading CB entry " << index << endl; +#endif // NDEBUG + + string pdu; + Ref p; + try + { + // this is just one row splitted in two part + // (msvc6 fail with internal compiler error) + string s = _at->chat("+CMGR=" + intToStr(index + 1), "+CMGR:", + pdu, false, true, true); + p = new Parser(s); + } + catch (GsmException &ge) + { + if (ge.getErrorCode() != SMS_INVALID_MEMORY_INDEX) + throw ge; + else + { + message = CBMessageRef(); + return; + } + } + + if (pdu.length() == 0) + message = CBMessageRef(); + else + message = CBMessageRef(new CBMessage(pdu)); +} + +void SMSStore::writeEntry(int &index, SMSMessageRef message) + throw(GsmException) +{ + // select SMS store + _meTa.setSMSStore(_storeName, 2); + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Writing SMS entry " << index << endl; +#endif + + // compute length of pdu + string pdu = message->encode(); + + // set message status to "RECEIVED READ" for SMS_DELIVER, SMS_STATUS_REPORT + string statusString; + + // Normally the ",1" sets the message status to "REC READ" (received read) + // which is appropriate for all non-submit messages + // Motorola Timeport 260 does not like this code, though + // DELIVER messages are magically recognized anyway + if (message->messageType() != SMSMessage::SMS_SUBMIT && + ! _at->getMeTa().getCapabilities()._wrongSMSStatusCode) + statusString = ",1"; + + Parser p(_at->sendPdu("+CMGW=" + + intToStr(pdu.length() / 2 - + message->getSCAddressLen()) + statusString, + "+CMGW:", pdu)); + index = p.parseInt() - 1; +} + +void SMSStore::eraseEntry(int index) throw(GsmException) +{ + // Select SMS store + _meTa.setSMSStore(_storeName, 1); + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "*** Erasing SMS entry " << index << endl; +#endif + + _at->chat("+CMGD=" + intToStr(index + 1)); +} + +unsigned char SMSStore::send(int index, Ref &ackPdu) + throw(GsmException) +{ + Parser p(_at->chat("+CMSS=" + intToStr(index + 1), "+CMSS:")); + unsigned char messageReference = p.parseInt(); + + if (p.parseComma(true)) + { + string pdu = p.parseEol(); + + // add missing service centre address if required by ME + if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix) + pdu = "00" + pdu; + + ackPdu = SMSMessage::decode(pdu); + } + else + ackPdu = SMSMessageRef(); + + return messageReference; +} + +int SMSStore::doInsert(SMSMessageRef message) + throw(GsmException) +{ + int index; + writeEntry(index, message); + // it is safer to force reading back the SMS from the ME + resizeStore(index + 1); + _store[index]->_cached = false; + return index; +} + +SMSStore::SMSStore(string storeName, Ref at, MeTa &meTa) + throw(GsmException) : + _storeName(storeName), _at(at), _meTa(meTa), _useCache(true) +{ + // select SMS store + Parser p(_meTa.setSMSStore(_storeName, true, true)); + + p.parseInt(); // skip number of used mems + p.parseComma(); + + resizeStore(p.parseInt()); // ignore rest of line +} + +void SMSStore::resizeStore(int newSize) +{ + int oldSize = _store.size(); + if (newSize > oldSize) + { + // cout << "*** Resizing from " << oldSize << " to " << newSize << endl; + _store.resize(newSize); + + // initialize store entries + for (int i = oldSize; i < newSize; i++) + { + _store[i] = new SMSStoreEntry(); + _store[i]->_index = i; + _store[i]->_cached = false; + _store[i]->_mySMSStore = this; + } + } +} + +SMSStore::iterator SMSStore::begin() +{ + return SMSStoreIterator(0, this); +} + +SMSStore::const_iterator SMSStore::begin() const +{ + return SMSStoreConstIterator(0, this); +} + +SMSStore::iterator SMSStore::end() +{ + return SMSStoreIterator(_store.size(), this); +} + +SMSStore::const_iterator SMSStore::end() const +{ + return SMSStoreConstIterator(_store.size(), this); +} + +SMSStore::reference SMSStore::operator[](int n) +{ + resizeStore(n + 1); + return *_store[n]; +} + +SMSStore::const_reference SMSStore::operator[](int n) const +{ + const_cast(this)->resizeStore(n + 1); + return *_store[n]; +} + +SMSStore::reference SMSStore::front() +{ + return *_store[0]; +} + +SMSStore::const_reference SMSStore::front() const +{ + return *_store[0]; +} + +SMSStore::reference SMSStore::back() +{ + return *_store.back(); +} + +SMSStore::const_reference SMSStore::back() const +{ + return *_store.back(); +} + +int SMSStore::size() const throw(GsmException) +{ + // select SMS store + Parser p(_meTa.setSMSStore(_storeName, 1, true)); + + return p.parseInt(); +} + +SMSStore::iterator SMSStore::insert(iterator position, + const SMSStoreEntry& x) + throw(GsmException) +{ + int index = doInsert(x.message()); + return SMSStoreIterator(index, this); +} + +SMSStore::iterator SMSStore::insert(const SMSStoreEntry& x) + throw(GsmException) +{ + int index = doInsert(x.message()); + return SMSStoreIterator(index, this); +} + +void SMSStore::insert (iterator pos, int n, const SMSStoreEntry& x) + throw(GsmException) +{ + for (int i = 0; i < n; i++) + doInsert(x.message()); +} + +void SMSStore::insert (iterator pos, long n, const SMSStoreEntry& x) + throw(GsmException) +{ + for (long i = 0; i < n; i++) + doInsert(x.message()); +} + +SMSStore::iterator SMSStore::erase(iterator position) + throw(GsmException) +{ + eraseEntry(position->_index); + position->_cached = false; + return position + 1; +} + +SMSStore::iterator SMSStore::erase(iterator first, iterator last) + throw(GsmException) +{ + iterator i(0, this); + for (i = first; i != last; ++i) + erase(i); + return i; +} + +void SMSStore::clear() throw(GsmException) +{ + for (iterator i = begin(); i != end(); ++i) + erase(i); +} + +SMSStore::~SMSStore() +{ + for (vector::iterator i = _store.begin(); + i != _store.end(); ++i) + delete *i; +} + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h new file mode 100644 index 0000000000..59d0ec8eac --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sms_store.h @@ -0,0 +1,295 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sms_store.h +// * +// * Purpose: SMS functions, SMS store +// * (ETSI GSM 07.05) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 20.5.1999 +// ************************************************************************* + +#ifndef GSM_SMS_STORE_H +#define GSM_SMS_STORE_H + +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // forward declarations + class SMSStore; + class MeTa; + + // a single entry in the SMS store + + class SMSStoreEntry : public RefBase + { + public: + // status in ME memory + enum SMSMemoryStatus {ReceivedUnread = 0, ReceivedRead = 1, + StoredUnsent = 2, StoredSent = 3, + All = 4, Unknown = 5}; + + private: + SMSMessageRef _message; + SMSMemoryStatus _status; + bool _cached; + SMSStore *_mySMSStore; + int _index; + + public: + // this constructor is only used by SMSStore + SMSStoreEntry(); + + // create new entry given a SMS message + SMSStoreEntry(SMSMessageRef message) : + _message(message), _status(Unknown), _cached(true), _mySMSStore(NULL), + _index(0) {} + + // create new entry given a SMS message and an index + // only to be used for file-based stores (see gsm_sorted_sms_store) + SMSStoreEntry(SMSMessageRef message, int index) : + _message(message), _status(Unknown), _cached(true), _mySMSStore(NULL), + _index(index) {} + + // clear cached flag + void clearCached() { _cached = false; } + + // return SMS message stored in the entry + SMSMessageRef message() const throw(GsmException); + + // return CB message stored in the entry + CBMessageRef cbMessage() const throw(GsmException); + + // return message status in store + SMSMemoryStatus status() const throw(GsmException); + + // return true if empty, ie. no SMS in this entry + bool empty() const throw(GsmException); + + // send this PDU from store + // returns message reference and ACK-PDU (if requested) + // only applicate to SMS-SUBMIT and SMS-COMMAND + unsigned char send(Ref &ackPdu) throw(GsmException); + + // same as above, but ACK-PDU is discarded + unsigned char send() throw(GsmException); + + // return index (guaranteed to be unique, + // can be used for identification in store) + int index() const {return _index;} + + // return true if entry is cached (and caching is enabled) + bool cached() const; + + // return deep copy of this entry + Ref clone(); + + // equality operator + bool operator==(const SMSStoreEntry &e) const; + + // return store reference + SMSStore *getStore() {return _mySMSStore;} + + // copy constructor and assignment + SMSStoreEntry(const SMSStoreEntry &e); + SMSStoreEntry &operator=(const SMSStoreEntry &e); + + friend class SMSStore; + }; + + // iterator for the SMSStore class + +#if __GNUC__ == 2 && __GNUC_MINOR__ == 95 + class SMSStoreIterator : public random_access_iterator +#else + class SMSStoreIterator : public iterator +#endif + { + int _index; + SMSStore *_store; + + SMSStoreIterator(int index, SMSStore *store) : + _index(index), _store(store) {} + + public: + SMSStoreIterator(SMSStoreEntry *entry) : + _index(entry->index()), _store(entry->getStore()) {} + + SMSStoreEntry &operator*(); + SMSStoreEntry *operator->(); + SMSStoreIterator &operator+(int i) + {_index += i; return *this;} + operator SMSStoreEntry*(); + SMSStoreIterator &operator=(const SMSStoreIterator &i); + SMSStoreIterator &operator++() + {++_index; return *this;} + SMSStoreIterator &operator--() + {--_index; return *this;} + SMSStoreIterator &operator++(int i) + {_index += i; return *this;} + SMSStoreIterator &operator--(int i) + {_index -= i; return *this;} + bool operator<(SMSStoreIterator &i) + {return _index < i._index;} + bool operator==(const SMSStoreIterator &i) const + {return _index == i._index;} + bool operator!=(const SMSStoreIterator &i) const + {return _index != i._index;} + + friend class SMSStore; + }; + +#if __GNUC__ == 2 && __GNUC_MINOR__ == 95 + class SMSStoreConstIterator : public random_access_iterator +#else + class SMSStoreConstIterator : public iterator +#endif + { + int _index; + const SMSStore *_store; + + SMSStoreConstIterator(int index, const SMSStore *store) : + _index(index), _store(store) {} + + public: + const SMSStoreEntry &operator*(); + const SMSStoreEntry *operator->(); + SMSStoreConstIterator &operator++() + {++_index; return *this;} + SMSStoreConstIterator &operator--() + {--_index; return *this;} + SMSStoreConstIterator &operator++(int i) + {_index += i; return *this;} + SMSStoreConstIterator &operator--(int i) + {_index -= i; return *this;} + bool operator<(SMSStoreConstIterator &i) + {return _index < i._index;} + bool operator==(const SMSStoreConstIterator &i) const + {return _index == i._index;} + + friend class SMSStore; + }; + + // this class corresponds to a SMS store in the ME + // all functions directly update storage in the ME + // if the ME is exchanged, the storage may become corrupted because + // of internal buffering in the SMSStore class + + class SMSStore : public RefBase, public NoCopy + { + private: + vector _store; // vector of store entries + string _storeName; // name of the store, 2-byte like "SM" + Ref _at; // my GsmAt class + MeTa &_meTa; // my MeTa class + bool _useCache; // true if entries should be cached + + // internal access functions + // read/write entry from/to ME + void readEntry(int index, SMSMessageRef &message, + SMSStoreEntry::SMSMemoryStatus &status) throw(GsmException); + void readEntry(int index, CBMessageRef &message) throw(GsmException); + void writeEntry(int &index, SMSMessageRef message) + throw(GsmException); + // erase entry + void eraseEntry(int index) throw(GsmException); + // send PDU index from store + // returns message reference and ACK-PDU (if requested) + // only applicate to SMS-SUBMIT and SMS-COMMAND + unsigned char send(int index, Ref &ackPdu) throw(GsmException); + + + // do the actual insertion, return index of new element + int doInsert(SMSMessageRef message) throw(GsmException); + + // used by class MeTa + SMSStore(string storeName, Ref at, MeTa &meTa) throw(GsmException); + + // resize store entry vector if necessary + void resizeStore(int newSize); + + public: + // iterator defs + typedef SMSStoreIterator iterator; + typedef SMSStoreConstIterator const_iterator; + typedef SMSStoreEntry &reference; + typedef const SMSStoreEntry &const_reference; + + // set cache mode on or off + void setCaching(bool useCache) {_useCache = useCache;} + + // return name of this store (2-character string) + string name() const {return _storeName;} + + // SMS store traversal commands + // these are suitable to use stdc++ lib algorithms and iterators + // ME have fixed storage space implemented as memory slots + // that may either be empty or used + + // traversal commands + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + reference front(); + const_reference front() const; + reference back(); + const_reference back() const; + reference operator[](int n); + const_reference operator[](int n) const; + + // The size macros return the number of used entries + // Warning: indices may be _larger_ than size() because of this + // (perhaps this should be changed, because it is unexpected behavior) + + int size() const throw(GsmException); + int max_size() const {return _store.size();} + int capacity() const {return _store.size();} + bool empty() const throw(GsmException) {return size() == 0;} + + // insert iterators insert into the first empty cell regardless of position + // existing iterators may be invalidated after an insert operation + // return position + // insert only writes to available positions + // warning: insert fails silently if size() == max_size() + iterator insert(iterator position, const SMSStoreEntry& x) + throw(GsmException); + iterator insert(const SMSStoreEntry& x) throw(GsmException); + + // insert n times, same procedure as above + void insert (iterator pos, int n, const SMSStoreEntry& x) + throw(GsmException); + void insert (iterator pos, long n, const SMSStoreEntry& x) + throw(GsmException); + + // erase operators set used slots to "empty" + iterator erase(iterator position) throw(GsmException); + iterator erase(iterator first, iterator last) throw(GsmException); + void clear() throw(GsmException); + + // destructor + ~SMSStore(); + + friend class SMSStoreEntry; + friend class MeTa; + }; + + typedef Ref SMSStoreRef; + +}; + +#endif // GSM_SMS_STORE_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc new file mode 100644 index 0000000000..e1b265c3f7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.cc @@ -0,0 +1,503 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sorted_phonebook.cc +// * +// * Purpose: Alphabetically sorted phonebook +// * (residing in files or in the ME) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 25.6.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +const int MAX_LINE_SIZE = 1000; + +using namespace std; +using namespace gsmlib; + +string SortedPhonebook::escapeString(string s) +{ + string result; + + for (const char *pp = s.c_str(); *pp != 0; ++pp) + { + if (*pp == CR) + result += "\\r"; + else if (*pp == LF) + result += "\\n"; + else if (*pp == '\\') + result += "\\\\"; + else if (*pp == '|') + result += "\\|"; + else + result += *pp; + } + return result; +} + +string SortedPhonebook::unescapeString(char *line, unsigned int &pos) +{ + string result; + bool escaped = false; + + while (! (line[pos] == '|' && ! escaped) && line[pos] != 0 && + line[pos] != CR && line[pos] != LF) + { + if (escaped) + { + escaped = false; + if (line[pos] == 'r') + result += CR; + else if (line[pos] == 'n') + result += LF; + else if (line[pos] == '\\') + result += '\\'; + else if (line[pos] == '|') + result += '|'; + else + result += line[pos]; + } + else + if (line[pos] == '\\') + escaped = true; + else + result += line[pos]; + + ++pos; + } + return result; +} + +void SortedPhonebook::readPhonebookFile(istream &pbs, string filename) + throw(GsmException) +{ + // read entries + while (! pbs.eof()) + { + char line[MAX_LINE_SIZE]; + pbs.getline(line, MAX_LINE_SIZE); + + if (strlen(line) == 0) + continue; // skip empty lines + + if (pbs.bad()) + throw GsmException(stringPrintf(_("error reading from file '%s"), + filename.c_str()), + OSError); + + // convert line to newEntry (line format : [index] '|' text '|' number + string text, telephone; + unsigned int pos = 0; + + // parse index + string indexS = unescapeString(line, pos); + int index = -1; + if (indexS.length() == 0) + { + if (_useIndices) + throw GsmException(stringPrintf(_("entry '%s' lacks index"), line), + ParserError); + } + else + { + index = checkNumber(indexS); + _useIndices = true; + } + if (line[pos++] != '|') + throw GsmException(stringPrintf(_("line '%s' has invalid format"), line), + ParserError); + + // parse text + text = unescapeString(line, pos); + if (line[pos++] != '|') + throw GsmException(stringPrintf(_("line '%s' has invalid format"), line), + ParserError); + + // parse telephone number + telephone = unescapeString(line, pos); + + insert(PhonebookEntryBase(telephone, text, index)); + } +} + +void SortedPhonebook::sync(bool fromDestructor) throw(GsmException) +{ + // if not in file it already is stored in ME/TA + if (! _fromFile) return; + + // if writing to stdout and not called from destructor ignore + // (avoids writing to stdout multiple times) + if (_filename == "" && ! fromDestructor) return; + + // find out if any of the entries have been updated + if (! _changed) // only look if we're not writing the file anyway + for (iterator i = begin(); i != end(); i++) + if (i->changed()) + { + _changed = true; + break; + } + + if (_changed) + { + checkReadonly(); + // create backup file - but only once + if (! _madeBackupFile && _filename != "") // don't make backup of stdout + { + renameToBackupFile(_filename); + _madeBackupFile = true; + } + + // open stream + ostream *pbs = NULL; + try + { + if (_filename == "") + pbs = &cout; + else + pbs = new ofstream(_filename.c_str()); + + if (pbs->bad()) + throw GsmException( + stringPrintf(_("error opening file '%s' for writing"), + (_filename == "" ? _("") : + _filename.c_str())), + OSError); + + // and write the entries + for (PhonebookMap::iterator i = _sortedPhonebook.begin(); + i != _sortedPhonebook.end(); ++i) + { + // convert entry to output line + string line = + (_useIndices ? intToStr(i->second->index()) : "") + "|" + + escapeString(i->second->text()) + "|" + + escapeString(i->second->telephone()); + + // write out the line + *pbs << line << endl; + if (pbs->bad()) + throw GsmException( + stringPrintf(_("error writing to file '%s'"), + (_filename == "" ? _("") : + _filename.c_str())), + OSError); + } + } + catch(GsmException &e) + { + if (pbs != &cout) delete pbs; + throw; + } + // close file + if (pbs != &cout) delete pbs; + + // reset all changed states + _changed = false; + for (iterator j = begin(); j != end(); j++) + j->resetChanged(); + } +} + +void SortedPhonebook::checkReadonly() throw(GsmException) +{ + if (_readonly) throw GsmException( + _("attempt to change phonebook read from "), + ParameterError); +} + +SortedPhonebook::SortedPhonebook(string filename, bool useIndices) + throw(GsmException) : + _changed(false), _fromFile(true), _madeBackupFile(false), + _sortOrder(ByIndex), _useIndices(useIndices), _readonly(false), + _filename(filename) +{ + // open the file + ifstream pbs(filename.c_str()); + if (pbs.bad()) + throw GsmException(stringPrintf(_("cannot open file '%s'"), + filename.c_str()), + OSError); + // and read the file + readPhonebookFile(pbs, filename); +} + +SortedPhonebook::SortedPhonebook(bool fromStdin, bool useIndices) + throw(GsmException) : + _changed(false), _fromFile(true), _madeBackupFile(false), + _sortOrder(ByIndex), _useIndices(useIndices), _readonly(fromStdin) + // _filename is "" - this means stdout +{ + // read from stdin + if (fromStdin) + readPhonebookFile(cin, (string)_("")); +} + +SortedPhonebook::SortedPhonebook(PhonebookRef mePhonebook) + throw(GsmException) : + _changed(false), _fromFile(false), _madeBackupFile(false), + _sortOrder(ByIndex), _readonly(false), _mePhonebook(mePhonebook) +{ + int entriesRead = 0; + reportProgress(0, _mePhonebook->end() - _mePhonebook->begin()); + + for (Phonebook::iterator i = _mePhonebook->begin(); + i != _mePhonebook->end(); ++i) + { + if (! i->empty()) + { + _sortedPhonebook.insert( + PhonebookMap::value_type(PhoneMapKey(*this, lowercase(i->text())), i)); + ++entriesRead; + if (entriesRead == _mePhonebook->size()) + return; // ready + } + reportProgress(i - _mePhonebook->begin()); + } +} + +void SortedPhonebook::setSortOrder(SortOrder newOrder) +{ + if (newOrder == _sortOrder) return; // nothing to do + + PhonebookMap savedPhonebook = _sortedPhonebook; // save phonebook + _sortedPhonebook = PhonebookMap(); // empty old phonebook + _sortOrder = newOrder; + + // re-insert entries + switch (newOrder) + { + case ByTelephone: + { + for (PhonebookMap::iterator i = savedPhonebook.begin(); + i != savedPhonebook.end(); ++i) + _sortedPhonebook. + insert(PhonebookMap::value_type( + PhoneMapKey(*this, lowercase(i->second->telephone())), i->second)); + break; + } + case ByText: + { + for (PhonebookMap::iterator i = savedPhonebook.begin(); + i != savedPhonebook.end(); ++i) + _sortedPhonebook. + insert(PhonebookMap::value_type( + PhoneMapKey(*this, lowercase(i->second->text())), i->second)); + break; + } + case ByIndex: + { + for (PhonebookMap::iterator i = savedPhonebook.begin(); + i != savedPhonebook.end(); ++i) + _sortedPhonebook. + insert(PhonebookMap::value_type( + PhoneMapKey(*this, i->second->index()), i->second)); + break; + } + default: + assert(0); + break; + } +} + +unsigned int SortedPhonebook::getMaxTelephoneLen() const +{ + if (_fromFile) + return UINT_MAX; + else + return _mePhonebook->getMaxTelephoneLen(); +} + +unsigned int SortedPhonebook::getMaxTextLen() const +{ + if (_fromFile) + return UINT_MAX; + else + return _mePhonebook->getMaxTextLen(); +} + +int SortedPhonebook::max_size() const +{ + if (_fromFile) + return _sortedPhonebook.max_size(); + else + return _mePhonebook->max_size(); +} + +int SortedPhonebook::capacity() const +{ + if (_fromFile) + return _sortedPhonebook.max_size(); + else + return _mePhonebook->capacity(); +} + +SortedPhonebook::iterator +SortedPhonebook::insert(const PhonebookEntryBase& x) throw(GsmException) +{ + checkReadonly(); + _changed = true; + PhonebookEntryBase *newEntry; + + if (_fromFile) + if (_useIndices) + { + if (x.index() != -1) // check that index is unique + { + for (PhonebookMap::iterator i = _sortedPhonebook.begin(); + i != _sortedPhonebook.end(); ++i) + if (i->second->index() == x.index()) + throw GsmException(_("indices must be unique in phonebook"), + ParameterError); + newEntry = new PhonebookEntryBase(x); + } + else // set index + { + SortOrder saveSortOrder = _sortOrder; + setSortOrder(ByIndex); + int index = 0; + for (PhonebookMap::iterator i = _sortedPhonebook.begin(); + i != _sortedPhonebook.end(); ++i, ++index) + if (i->second->index() != index) + break; + setSortOrder(saveSortOrder); + newEntry = new PhonebookEntryBase(); + newEntry->set(x.telephone(), x.text(), index, true); + } + } + else // index info in x is ignored + newEntry = new PhonebookEntryBase(x); + else + { + PhonebookEntry newMEEntry(x); + newEntry = _mePhonebook->insert((PhonebookEntry*)NULL, newMEEntry); + } + switch (_sortOrder) + { + case ByTelephone: + return + _sortedPhonebook. + insert(PhonebookMap::value_type( + PhoneMapKey(*this, lowercase(newEntry->telephone())), newEntry)); + case ByText: + return + _sortedPhonebook. + insert(PhonebookMap::value_type( + PhoneMapKey(*this, lowercase(newEntry->text())), newEntry)); + case ByIndex: + return + _sortedPhonebook. + insert(PhonebookMap::value_type( + PhoneMapKey(*this, newEntry->index()), newEntry)); + default: + assert(0); + break; + } + return SortedPhonebook::iterator(); +} + +SortedPhonebook::iterator +SortedPhonebook::insert(iterator position, const PhonebookEntryBase& x) + throw(GsmException) +{ + return insert(x); +} + +SortedPhonebook::size_type SortedPhonebook::erase(string &key) + throw(GsmException) +{ + // deallocate memory or remove from underlying ME phonebook + for (PhonebookMap::iterator i = + _sortedPhonebook.find(PhoneMapKey(*this, lowercase(key))); + i != _sortedPhonebook.end() && + i->first == PhoneMapKey(*this, lowercase(key)); + ++i) + { + checkReadonly(); + _changed = true; + if (_fromFile) + delete i->second; + else + _mePhonebook->erase((Phonebook::iterator)i->second); + } + + return _sortedPhonebook.erase(PhoneMapKey(*this, lowercase(key))); +} + +SortedPhonebook::size_type SortedPhonebook::erase(int key) + throw(GsmException) +{ + // deallocate memory or remove from underlying ME phonebook + for (PhonebookMap::iterator i = + _sortedPhonebook.find(PhoneMapKey(*this, key)); + i != _sortedPhonebook.end() && i->first == PhoneMapKey(*this, key); + ++i) + { + checkReadonly(); + _changed = true; + if (_fromFile) + delete i->second; + else + _mePhonebook->erase((Phonebook::iterator)i->second); + } + + return _sortedPhonebook.erase(PhoneMapKey(*this, key)); +} + +void SortedPhonebook::erase(iterator position) + throw(GsmException) +{ + checkReadonly(); + _changed = true; + // deallocate memory or remove from underlying ME phonebook + if (_fromFile) + delete ((PhonebookMap::iterator)position)->second; + else + _mePhonebook->erase((Phonebook::iterator) + ((PhonebookMap::iterator)position)->second); + _sortedPhonebook.erase(position); +} + +void SortedPhonebook::erase(iterator first, iterator last) + throw(GsmException) +{ + checkReadonly(); + _changed = true; + for (PhonebookMap::iterator i = first; i != last; ++i) + if (_fromFile) + delete i->second; + else + _mePhonebook->erase((Phonebook::iterator)i->second); + _sortedPhonebook.erase(first, last); +} + +void SortedPhonebook::clear() throw(GsmException) +{ + checkReadonly(); + _changed = true; + for (iterator i = begin(); i != end(); i++) + erase(i); +} + +SortedPhonebook::~SortedPhonebook() +{ + if (_fromFile) + { + sync(true); + for (PhonebookMap::iterator i = _sortedPhonebook.begin(); + i != _sortedPhonebook.end(); ++i) + delete i->second; + } +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h new file mode 100644 index 0000000000..c0d3b787fe --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook.h @@ -0,0 +1,159 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sorted_phonebook.h +// * +// * Purpose: Alphabetically sorted phonebook +// * (residing in files or in the ME) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 25.6.1999 +// ************************************************************************* + +#ifndef GSM_SORTED_PHONEBOOK_H +#define GSM_SORTED_PHONEBOOK_H + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + + // The class SortedPhonebook makes the phonebook more manageable: + // - empty slots in the ME phonebook are hidden by the API + // - the class transparently handles phonebooks that reside in files + + class SortedPhonebook : public SortedPhonebookBase + { + private: + bool _changed; // true if file has changed after last save + bool _fromFile; // true if phonebook read from file + bool _madeBackupFile; // true if backup file was created + SortOrder _sortOrder; // sort order for the phonebook + bool _useIndices; // if phonebook from file: input file had + // indices; will write indices, too + bool _readonly; // =true if read from stdin + string _filename; // name of the file if phonebook from file + PhonebookMap _sortedPhonebook; // phonebook from file + PhonebookRef _mePhonebook; // phonebook if from ME + + // convert CR and LF in string to "\r" and "\n" respectively + string escapeString(string s); + + // convert "\r" and "\n" to CR and LF respectively + // start parsing with pos, stop when CR, LF, 0, or '|' is encountered + string unescapeString(char *line, unsigned int &pos); + + // initial read of phonebook file + void readPhonebookFile(istream &pbs, string filename) throw(GsmException); + + // synchronize SortedPhonebook with file (no action if in ME) + void sync(bool fromDestructor) throw(GsmException); + + // throw an exception if _readonly is set + void checkReadonly() throw(GsmException); + + public: + // iterator defs + typedef SortedPhonebookIterator iterator; + typedef PhonebookMap::size_type size_type; + + // constructor for file-based phonebook + // expect indices in file if useIndices == true + // read from file + SortedPhonebook(string filename, bool useIndices) + throw(GsmException); + // read from stdin or start empty and write to stdout + SortedPhonebook(bool fromStdin, bool useIndices) + throw(GsmException); + + // constructor for ME-based phonebook + SortedPhonebook(PhonebookRef mePhonebook) throw(GsmException); + + // return maximum telephone number length + unsigned int getMaxTelephoneLen() const; + + // return maximum entry description length + unsigned int getMaxTextLen() const; + + // handle sorting + void setSortOrder(SortOrder newOrder); + SortOrder sortOrder() const {return _sortOrder;} + + // phonebook traversal commands + // these are suitable to use stdc++ lib algorithms and iterators + // ME have fixed storage space implemented as memory slots + // that may either be empty or used + + // traversal commands + iterator begin() {return _sortedPhonebook.begin();} + iterator end() {return _sortedPhonebook.end();} + + // the size macros return the number of used entries + int size() const {return _sortedPhonebook.size();} + int max_size() const; + int capacity() const; + bool empty() const throw(GsmException) {return size() == 0;} + + // existing iterators remain valid after an insert or erase operation + // note: inserting many entries in indexed mode is inefficient + // if the sort order is not set to indexed before + + // return position + // insert only writes to available positions + // warning: insert fails silently if size() == max_size() + iterator insert(const PhonebookEntryBase& x) throw(GsmException); + iterator insert(iterator position, const PhonebookEntryBase& x) + throw(GsmException); + + PhonebookMap::size_type count(string &key) + {return _sortedPhonebook.count(PhoneMapKey(*this, lowercase(key)));} + iterator find(string &key) + {return _sortedPhonebook.find(PhoneMapKey(*this, lowercase(key)));} + iterator lower_bound(string &key) + {return _sortedPhonebook.lower_bound(PhoneMapKey(*this, + lowercase(key)));} + iterator upper_bound(string &key) + {return _sortedPhonebook.upper_bound(PhoneMapKey(*this, + lowercase(key)));} + pair equal_range(string &key) + {return _sortedPhonebook.equal_range(PhoneMapKey(*this, + lowercase(key)));} + + PhonebookMap::size_type count(int key) + {return _sortedPhonebook.count(PhoneMapKey(*this, key));} + iterator find(int key) + {return _sortedPhonebook.find(PhoneMapKey(*this, key));} + iterator lower_bound(int key) + {return _sortedPhonebook.lower_bound(PhoneMapKey(*this, key));} + iterator upper_bound(int key) + {return _sortedPhonebook.upper_bound(PhoneMapKey(*this, key));} + pair equal_range(int key) + {return _sortedPhonebook.equal_range(PhoneMapKey(*this, key));} + + size_type erase(string &key) throw(GsmException); + size_type erase(int key) throw(GsmException); + void erase(iterator position) throw(GsmException); + void erase(iterator first, iterator last) throw(GsmException); + void clear() throw(GsmException); + + // synchronize SortedPhonebook with file (no action if in ME) + void sync() throw(GsmException) {sync(false);} + + // destructor + // writes back change to file if phonebook is in file + virtual ~SortedPhonebook(); + }; + + // typedef Ref SortedPhonebookRef; +}; + +#endif // GSM_SORTED_PHONEBOOK_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc new file mode 100644 index 0000000000..1061dc60b9 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.cc @@ -0,0 +1,115 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sorted_phonebook_base.cc +// * +// * Purpose: Virtual base class for alphabetically sorted phonebook +// * The infrastructure in this module allows custom backends for +// * storing phonebook entries to be integrated into gsmlib +// * (eg. LDAP- or RDBMS-based phonebook stores). +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 5.6.2000 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +#include + +using namespace std; +using namespace gsmlib; + +// PhonebookEntryBase members + +void PhonebookEntryBase::set(string telephone, string text, int index, + bool useIndex) + throw(GsmException) +{ + checkTextAndTelephone(text, telephone); + + _changed = true; + _telephone = telephone; + _text = text; + _useIndex = useIndex; + if (index != -1) + _index = index; +} + +bool PhonebookEntryBase::operator==(const PhonebookEntryBase &e) const +{ + assert(! ((_useIndex || e._useIndex) && + (_index == -1 || e._index == -1))); + return _telephone == e._telephone && _text == e._text && + (! (_useIndex || e._useIndex) || _index == e._index); +} + +string PhonebookEntryBase::text() const throw(GsmException) +{ + return _text; +} + +string PhonebookEntryBase::telephone() const throw(GsmException) +{ + return _telephone; +} + +bool PhonebookEntryBase::empty() const throw(GsmException) +{ + return (text() == "") && (telephone() == ""); +} + +Ref PhonebookEntryBase::clone() +{ + Ref result = new PhonebookEntryBase(*this); + return result; +} + +PhonebookEntryBase::PhonebookEntryBase(const PhonebookEntryBase &e) + throw(GsmException) +{ + set(e._telephone, e._text, e._index, e._useIndex); +} + +PhonebookEntryBase &PhonebookEntryBase::operator=(const PhonebookEntryBase &e) + throw(GsmException) +{ + set(e._telephone, e._text, e._index, e._useIndex); + return *this; +} + +// CustomPhonebookRegistry members + +map +*CustomPhonebookRegistry::_factoryList = NULL; + +void CustomPhonebookRegistry:: +registerCustomPhonebookFactory(string backendName, + CustomPhonebookFactory *factory) + throw(GsmException) +{ + if (_factoryList == NULL) + _factoryList = new map; + backendName = lowercase(backendName); + if (_factoryList->find(backendName) != _factoryList->end()) + throw GsmException(stringPrintf(_("backend '%s' already registered"), + backendName.c_str()), ParameterError); +} + +SortedPhonebookRef CustomPhonebookRegistry:: +createPhonebook(string backendName, string source) throw(GsmException) +{ + if (_factoryList == NULL) + _factoryList = new map; + backendName = lowercase(backendName); + if (_factoryList->find(backendName) == _factoryList->end()) + throw GsmException(stringPrintf(_("backend '%s' not registered"), + backendName.c_str()), ParameterError); + return (*_factoryList)[backendName]->createPhonebook(source); +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h new file mode 100644 index 0000000000..166f81f45a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_phonebook_base.h @@ -0,0 +1,220 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sorted_phonebook_base.h +// * +// * Purpose: Virtual base class for alphabetically sorted phonebook +// * The infrastructure in this module allows custom backends for +// * storing phonebook entries to be integrated into gsmlib +// * (eg. LDAP- or RDBMS-based phonebook stores). +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 5.6.2000 +// ************************************************************************* + +#ifndef GSM_SORTED_PHONEBOOK_BASE_H +#define GSM_SORTED_PHONEBOOK_BASE_H + +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // a single entry in a phonebook + + class PhonebookEntryBase : public RefBase + { + protected: + bool _changed; // set to true if _telephone or _text changed + string _telephone; + string _text; + int _index; // my position in the phonebook + // == -1 if not used (can only happen if + // phonebook is read from file) + bool _useIndex; // compare indices in operator==, + // use _index for inserting into + // Phonebook + + public: + PhonebookEntryBase() : + _changed(false), _index(-1), _useIndex(false) {} + + // convenience constructor + PhonebookEntryBase(string telephone, string text, int index = -1) : + _changed(false), _telephone(telephone), _text(text), + _index(index), _useIndex(false) {} + + // accessor functions + virtual void set(string telephone, string text, int index = -1, + bool useIndex = false) + throw(GsmException); + virtual string text() const throw(GsmException); + virtual string telephone() const throw(GsmException); + + // return true if both telephone and text are empty + bool empty() const throw(GsmException); + + // set to true if operator== should compare the _index as well + void setUseIndex(bool useIndex) + {_useIndex = useIndex;} + bool useIndex() const {return _useIndex;} + + // equality operator + // if one of the operands has _useIndex == true + // takes _index and e._index into account + bool operator==(const PhonebookEntryBase &e) const; + + // return index + int index() const {return _index;} + + // return true if entry changed + bool changed() const {return _changed;} + + // reset the changed status (ie. if synced to file) + void resetChanged() {_changed = false;} + + // return deep copy of this entry + virtual Ref clone(); + + PhonebookEntryBase(const PhonebookEntryBase &e) throw(GsmException); + PhonebookEntryBase &operator=(const PhonebookEntryBase &e) + throw(GsmException); + + virtual ~PhonebookEntryBase() {} + }; + + // MapKey for sortedPhonebook + + class SortedPhonebookBase; + typedef MapKey PhoneMapKey; + + // maps text or telephone to entry + + typedef multimap PhonebookMap; + + // iterator for SortedPhonebook that hides the "second" member of the map + + typedef PhonebookMap::iterator PhonebookMapIterator; + class SortedPhonebookIterator : public PhonebookMapIterator + { + public: + SortedPhonebookIterator() {} + SortedPhonebookIterator(PhonebookMap::iterator i) : + PhonebookMapIterator(i) {} + + PhonebookEntryBase &operator*() + {return *((PhonebookMap::iterator)*this)->second;} + + PhonebookEntryBase *operator->() + {return ((PhonebookMap::iterator)*this)->second;} + }; + + // virtual base class for sorted phonebooks + + class SortedPhonebookBase : public RefBase, public NoCopy + { + public: + // iterator defs + typedef SortedPhonebookIterator iterator; + typedef PhonebookMap::size_type size_type; + + // return maximum telephone number length + virtual unsigned int getMaxTelephoneLen() const = 0; + + // return maximum entry description length + virtual unsigned int getMaxTextLen() const = 0; + + // handle sorting + virtual void setSortOrder(SortOrder newOrder) = 0; + virtual SortOrder sortOrder() const = 0; + + // phonebook traversal commands + // these are suitable to use stdc++ lib algorithms and iterators + + // traversal commands + virtual iterator begin() = 0; + virtual iterator end() = 0; + + // the size macros return the number of used entries + virtual int size() const = 0; + virtual int max_size() const = 0; + virtual int capacity() const = 0; + virtual bool empty() const throw(GsmException) = 0; + + // existing iterators remain valid after an insert or erase operation + + // return position + // insert only writes to available positions + // warning: insert fails silently if size() == max_size() + virtual iterator insert(const PhonebookEntryBase& x) throw(GsmException) + = 0; + virtual iterator insert(iterator position, const PhonebookEntryBase& x) + throw(GsmException) = 0; + + virtual PhonebookMap::size_type count(string &key) = 0; + virtual iterator find(string &key) = 0; + virtual iterator lower_bound(string &key) = 0; + virtual iterator upper_bound(string &key) = 0; + virtual pair equal_range(string &key) = 0; + + virtual PhonebookMap::size_type count(int key) = 0; + virtual iterator find(int key) = 0; + virtual iterator lower_bound(int key) = 0; + virtual iterator upper_bound(int key) = 0; + virtual pair equal_range(int key) = 0; + + virtual size_type erase(string &key) throw(GsmException) = 0; + virtual size_type erase(int key) throw(GsmException) = 0; + virtual void erase(iterator position) throw(GsmException) = 0; + virtual void erase(iterator first, iterator last) throw(GsmException) = 0; + virtual void clear() throw(GsmException) = 0; + + // synchronize SortedPhonebookBase with storage + virtual void sync() throw(GsmException) = 0; + + virtual ~SortedPhonebookBase() {} + }; + + typedef Ref SortedPhonebookRef; + + + // base factory class for custom backends + class CustomPhonebookFactory + { + public: + // return sorted phonebook object given the source specification + // (eg. database name, URL, etc.) + virtual SortedPhonebookRef createPhonebook(string source) + throw(GsmException) = 0; + }; + + // registry for custom backends + + class CustomPhonebookRegistry + { + // registered factories + static map *_factoryList; + + public: + // register a factory class for a specific backend + // (case does not matter for backend name) + static void registerCustomPhonebookFactory(string backendName, + CustomPhonebookFactory *factory) + throw(GsmException); + + + // return a phonebook object given the backend name and the source + // specification + static SortedPhonebookRef + createPhonebook(string backendName, string source) throw(GsmException); + }; + +}; + +#endif // GSM_SORTED_PHONEBOOK_BASE_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc new file mode 100644 index 0000000000..7ca9f9f160 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.cc @@ -0,0 +1,499 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sorted_sms_store.cc +// * +// * Purpose: Sorted SMS store (residing in files or in the ME) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 14.8.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#ifdef HAVE_NETINET_IN_H +#include +#endif + +using namespace std; +using namespace gsmlib; + +// SMS message file format: +// version number of file format, unsigned short int, 2 bytes in network byte +// order +// then comes the message: +// 1. length of PDU (see 4. below): unsigned short int, +// 2 bytes in network byte order +// 2. index of message, unique for this file: unsigned long, +// 4 bytes in network byte order +// 3. MessageType (1 byte), any of: +// 0 SMS_DELIVER +// 1 SMS_SUBMIT +// 2 SMS_STATUS_REPORT +// 4. PDU in hexadecimal format + +static const unsigned short int SMS_STORE_FILE_FORMAT_VERSION = 1; + +// SortedSMSStore members + +// aux function read bytes with error handling +// return false if EOF +static bool readnbytes(string &filename, + istream &is, int len, char *buf, + bool eofIsError = true) throw(GsmException) +{ + is.read(buf, len); + if (is.bad() || (is.eof() && eofIsError)) + throw GsmException(stringPrintf(_("error reading from file '%s'"), + (filename == "" ? _("") : + filename.c_str())), OSError); + return ! is.eof(); +} + +// aux function write bytes with error handling +static void writenbytes(string &filename, ostream &os, + int len, const char *buf) throw(GsmException) +{ + os.write(buf, len); + if (os.bad()) + throw GsmException(stringPrintf(_("error writing to file '%s'"), + (filename == "" ? _("") : + filename.c_str())), OSError); +} + +void SortedSMSStore::readSMSFile(istream &pbs, string filename) + throw(GsmException) +{ + char numberBuf[4]; + + // check the version + try + { + readnbytes(filename, pbs, 2, numberBuf); + } + catch (GsmException &ge) + { + // ignore error, file might be empty initially + } + unsigned_int_2 version = ntohs(*((unsigned_int_2*)numberBuf)); + if (! pbs.eof() && version != SMS_STORE_FILE_FORMAT_VERSION) + throw GsmException(stringPrintf(_("file '%s' has wrong version"), + filename.c_str()), ParameterError); + + // read entries + while (1) + { + // read PDU length and exit loop if EOF + if (! readnbytes(filename, pbs, 2, numberBuf, false)) + break; + + unsigned_int_2 pduLen = ntohs(*((unsigned_int_2*)numberBuf)); + if (pduLen > 500) + throw GsmException(stringPrintf(_("corrupt SMS store file '%s'"), + filename.c_str()), ParameterError); + + // read reserved integer field of message (was formerly index) + readnbytes(filename, pbs, 4, numberBuf); + //unsigned_int_4 reserved = ntohl(*((unsigned_int_4*)numberBuf)); + + // read message type + readnbytes(filename, pbs, 1, numberBuf); + SMSMessage::MessageType messageType = + (SMSMessage::MessageType)numberBuf[0]; + if (messageType > 2) + throw GsmException(stringPrintf(_("corrupt SMS store file '%s'"), + filename.c_str()), ParameterError); + + char *pduBuf = (char*)alloca(sizeof(char) * pduLen); + + // read pdu + readnbytes(filename, pbs, pduLen, pduBuf); + SMSMessageRef message = + SMSMessage::decode(string(pduBuf, pduLen), + (messageType != SMSMessage::SMS_SUBMIT)); + + SMSStoreEntry *newEntry = new SMSStoreEntry(message, _nextIndex++); + _sortedSMSStore.insert( + SMSStoreMap::value_type( + SMSMapKey(*this, message->serviceCentreTimestamp()), + newEntry) + ); + } +} + +void SortedSMSStore::sync(bool fromDestructor) throw(GsmException) +{ + if (_fromFile && _changed) + { + checkReadonly(); + + // if writing to stdout and not called from destructor ignore + // (avoids writing to stdout multiple times) + if (_filename == "" && ! fromDestructor) return; + + // create backup file - but only once + if (! _madeBackupFile && _filename != "") // don't make backup of stdout + { + renameToBackupFile(_filename); + _madeBackupFile = true; + } + + // open stream + ostream *pbs = NULL; + try + { + if (_filename == "") + pbs = &cout; + else + pbs = new ofstream(_filename.c_str(), ios::out | ios::binary); + + if (pbs->bad()) + throw GsmException( + stringPrintf(_("error opening file '%s' for writing"), + (_filename == "" ? _("") : + _filename.c_str())), + OSError); + + // write version number + unsigned_int_2 version = htons(SMS_STORE_FILE_FORMAT_VERSION); + writenbytes(_filename, *pbs, 2, (char*)&version); + + // and write the entries + for (SMSStoreMap::iterator i = _sortedSMSStore.begin(); + i != _sortedSMSStore.end(); ++i) + { + // create PDU and write length + string pdu = i->second->message()->encode(); + unsigned_int_2 pduLen = htons(pdu.length()); + writenbytes(_filename, *pbs, 2, (char*)&pduLen); + + // write reserved field (was formerly index) + unsigned_int_4 reserved = htonl(0); + writenbytes(_filename, *pbs, 4, (char*)&reserved); + + // write message type + char messageType = i->second->message()->messageType(); + writenbytes(_filename, *pbs, 1, (char*)&messageType); + + // write PDU + writenbytes(_filename, *pbs, pdu.length(), pdu.data()); + } + } + catch(GsmException &e) + { + if (pbs != &cout) delete pbs; + throw; + } + // close file + if (pbs != &cout) delete pbs; + + _changed = false; + } +} + +void SortedSMSStore::checkReadonly() throw(GsmException) +{ + if (_readonly) throw GsmException( + _("attempt to change SMS store read from "), + ParameterError); +} + +SortedSMSStore::SortedSMSStore(string filename) throw(GsmException) : + _changed(false), _fromFile(true), _madeBackupFile(false), + _sortOrder(ByDate), _readonly(false), _filename(filename), _nextIndex(0) +{ + // open the file + ifstream pbs(filename.c_str(), ios::in | ios::binary); + if (pbs.bad()) + throw GsmException(stringPrintf(_("cannot open file '%s'"), + filename.c_str()), OSError); + // and read the file + readSMSFile(pbs, filename); +} + +SortedSMSStore::SortedSMSStore(bool fromStdin) throw(GsmException) : + _changed(false), _fromFile(true), _madeBackupFile(false), + _sortOrder(ByDate), _readonly(fromStdin), _nextIndex(0) + // _filename is "" - this means stdout +{ + // read from stdin + if (fromStdin) + readSMSFile(cin, (string)_("")); +} + +SortedSMSStore::SortedSMSStore(SMSStoreRef meSMSStore) + throw(GsmException) : + _changed(false), _fromFile(false), _madeBackupFile(false), + _sortOrder(ByDate), _readonly(false), _meSMSStore(meSMSStore) +{ + // It is necessary to count the entries read because + // the maximum index into the SMS store may be larger than smsStore.size() + int entriesRead = 0; + reportProgress(0, _meSMSStore->size()); + + for (int i = 0;; ++i) + { + if (entriesRead == _meSMSStore->size()) + break; // ready + if (! _meSMSStore()[i].empty()) + { + _sortedSMSStore.insert( + SMSStoreMap::value_type( + SMSMapKey(*this, + _meSMSStore()[i].message()->serviceCentreTimestamp()), + &_meSMSStore()[i]) + ); + ++entriesRead; + reportProgress(entriesRead); + } + } +} + +void SortedSMSStore::setSortOrder(SortOrder newOrder) +{ + if (_sortOrder == newOrder) return; // nothing to be done + + SMSStoreMap savedSMSStore = _sortedSMSStore; + _sortedSMSStore = SMSStoreMap(); + _sortOrder = newOrder; + + switch (newOrder) + { + case ByIndex: + { + for (SMSStoreMap::iterator i = savedSMSStore.begin(); + i != savedSMSStore.end(); ++i) + _sortedSMSStore.insert( + SMSStoreMap::value_type(SMSMapKey(*this, (i->second->index())), + i->second)); + break; + } + case ByDate: + { + for (SMSStoreMap::iterator i = savedSMSStore.begin(); + i != savedSMSStore.end(); ++i) + _sortedSMSStore.insert( + SMSStoreMap::value_type( + SMSMapKey(*this, (i->second->message()->serviceCentreTimestamp())), + i->second)); + break; + } + case ByAddress: + { + for (SMSStoreMap::iterator i = savedSMSStore.begin(); + i != savedSMSStore.end(); ++i) + _sortedSMSStore.insert( + SMSStoreMap::value_type( + SMSMapKey(*this, (i->second->message()->address())), + i->second)); + break; + } + case ByType: + { + for (SMSStoreMap::iterator i = savedSMSStore.begin(); + i != savedSMSStore.end(); ++i) + _sortedSMSStore.insert( + SMSStoreMap::value_type( + SMSMapKey(*this, (i->second->message()->messageType())), + i->second)); + break; + } + default: + assert(0); + break; + } +} + +int SortedSMSStore::max_size() const +{ + if (_fromFile) + return _sortedSMSStore.max_size(); + else + return _meSMSStore->max_size(); +} + +int SortedSMSStore::capacity() const +{ + if (_fromFile) + return _sortedSMSStore.max_size(); + else + return _meSMSStore->capacity(); +} + +SortedSMSStore::iterator +SortedSMSStore::insert(const SMSStoreEntry& x) throw(GsmException) +{ + checkReadonly(); + _changed = true; + SMSStoreEntry *newEntry; + + if (_fromFile) + newEntry = new SMSStoreEntry(x.message(), _nextIndex++); + else + { + SMSStoreEntry newMEEntry(x.message()); + newEntry = _meSMSStore->insert(newMEEntry); + } + + switch (_sortOrder) + { + case ByIndex: + return + _sortedSMSStore. + insert(SMSStoreMap::value_type(SMSMapKey(*this, newEntry->index()), + newEntry)); + break; + case ByDate: + return + _sortedSMSStore. + insert(SMSStoreMap::value_type( + SMSMapKey(*this, newEntry->message()->serviceCentreTimestamp()), + newEntry)); + break; + case ByAddress: + return + _sortedSMSStore. + insert(SMSStoreMap::value_type( + SMSMapKey(*this, newEntry->message()->address()), + newEntry)); + break; + case ByType: + return + _sortedSMSStore. + insert(SMSStoreMap::value_type( + SMSMapKey(*this, newEntry->message()->messageType()), + newEntry)); + break; + default: + assert(0); + break; + } + return SortedSMSStore::iterator(); +} + +SortedSMSStore::iterator +SortedSMSStore::insert(iterator position, const SMSStoreEntry& x) + throw(GsmException) +{ + return insert(x); +} + +SortedSMSStore::size_type SortedSMSStore::erase(Address &key) + throw(GsmException) +{ + assert(_sortOrder == ByAddress); + + SMSMapKey mapKey(*this, key); + + // deallocate memory or remove from underlying ME SMS store + for (SMSStoreMap::iterator i = _sortedSMSStore.find(mapKey); + i != _sortedSMSStore.end() && i->first == mapKey; ++i) + { + checkReadonly(); + _changed = true; + if (_fromFile) + delete i->second; + else + _meSMSStore->erase((SMSStore::iterator)i->second); + } + + return _sortedSMSStore.erase(mapKey); +} + +SortedSMSStore::size_type SortedSMSStore::erase(int key) + throw(GsmException) +{ + assert(_sortOrder == ByIndex || _sortOrder == ByType); + + SMSMapKey mapKey(*this, key); + + // deallocate memory or remove from underlying ME SMS store + for (SMSStoreMap::iterator i = _sortedSMSStore.find(mapKey); + i != _sortedSMSStore.end() && i->first == mapKey; ++i) + { + checkReadonly(); + _changed = true; + if (_fromFile) + delete i->second; + else + _meSMSStore->erase((SMSStore::iterator)i->second); + } + + return _sortedSMSStore.erase(mapKey); +} + +SortedSMSStore::size_type SortedSMSStore::erase(Timestamp &key) + throw(GsmException) +{ + assert(_sortOrder == ByDate); + + SMSMapKey mapKey(*this, key); + + // deallocate memory or remove from underlying ME SMS store + for (SMSStoreMap::iterator i = _sortedSMSStore.find(mapKey); + i != _sortedSMSStore.end() && i->first == mapKey; ++i) + { + checkReadonly(); + _changed = true; + if (_fromFile) + delete i->second; + else + _meSMSStore->erase((SMSStore::iterator)i->second); + } + + return _sortedSMSStore.erase(mapKey); +} + +void SortedSMSStore::erase(iterator position) + throw(GsmException) +{ + checkReadonly(); + _changed = true; + // deallocate memory or remove from underlying ME SMS store + if (_fromFile) + delete ((SMSStoreMap::iterator)position)->second; + else + _meSMSStore->erase((SMSStore::iterator) + ((SMSStoreMap::iterator)position)->second); + _sortedSMSStore.erase(position); +} + +void SortedSMSStore::erase(iterator first, iterator last) + throw(GsmException) +{ + checkReadonly(); + _changed = true; + for (SMSStoreMap::iterator i = first; i != last; ++i) + if (_fromFile) + delete i->second; + else + _meSMSStore->erase((SMSStore::iterator)i->second); + _sortedSMSStore.erase(first, last); +} + +void SortedSMSStore::clear() throw(GsmException) +{ + checkReadonly(); + _changed = true; + for (iterator i = begin(); i != end(); i++) + erase(i); +} + +SortedSMSStore::~SortedSMSStore() +{ + if (_fromFile) + { + sync(true); + for (SMSStoreMap::iterator i = _sortedSMSStore.begin(); + i != _sortedSMSStore.end(); ++i) + delete i->second; + } +} + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h new file mode 100644 index 0000000000..126c5856bd --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sorted_sms_store.h @@ -0,0 +1,217 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sorted_sms_store.h +// * +// * Purpose: Sorted SMS store (residing in files or in the ME) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 14.8.1999 +// ************************************************************************* + +#ifndef GSM_SORTED_SMS_STORE_H +#define GSM_SORTED_SMS_STORE_H + +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + // MapKey for SortedSMSStore + + class SortedSMSStore; + typedef MapKey SMSMapKey; + + // maps key (see SortedSMSStore::SortOrder) to entry + + typedef multimap SMSStoreMap; + + // iterator for SortedSMSStore that hides the "second" member of the map + + typedef SMSStoreMap::iterator SMSStoreMapIterator; + class SortedSMSStoreIterator : public SMSStoreMapIterator + { + public: + SortedSMSStoreIterator() {} + SortedSMSStoreIterator(SMSStoreMap::iterator i) : + SMSStoreMapIterator(i) {} + + SMSStoreEntry &operator*() + {return *((SMSStoreMap::iterator)*this)->second;} + + SMSStoreEntry *operator->() + {return ((SMSStoreMap::iterator)*this)->second;} + }; + + // The class SortedSMSStore makes the SMS store more manageable: + // - empty slots in the ME phonebook are hidden by the API + // - the class transparently handles stores that reside in files + + class SortedSMSStore : public RefBase, public NoCopy + { + private: + + bool _changed; // true if file has changed after last save + bool _fromFile; // true if store read from file + bool _madeBackupFile; // true if backup file was created + SortOrder _sortOrder; // sort order of the _sortedSMSStore + // (default is ByDate) + bool _readonly; // =true if read from stdin + string _filename; // name of the file if store from file + SMSStoreMap _sortedSMSStore; // store from file + SMSStoreRef _meSMSStore; // store if from ME + + unsigned int _nextIndex; // next index to use for file-based store + + // initial read of SMS file + void readSMSFile(istream &pbs, string filename) throw(GsmException); + + // synchronize SortedSMSStore with file (no action if in ME) + void sync(bool fromDestructor) throw(GsmException); + + // throw an exception if _readonly is set + void checkReadonly() throw(GsmException); + + public: + // iterator defs + typedef SortedSMSStoreIterator iterator; + typedef SMSStoreMap::size_type size_type; + + // constructor for file-based store + // read from file + SortedSMSStore(string filename) throw(GsmException); + // read from stdin or start empty and write to stdout + SortedSMSStore(bool fromStdin) throw(GsmException); + + // constructor for ME-based store + SortedSMSStore(SMSStoreRef meSMSStore) throw(GsmException); + + // handle sorting + void setSortOrder(SortOrder newOrder); + SortOrder sortOrder() const {return _sortOrder;} + + // store traversal commands + // these are suitable to use stdc++ lib algorithms and iterators + + // traversal commands + iterator begin() {return _sortedSMSStore.begin();} + iterator end() {return _sortedSMSStore.end();} + + // the size macros return the number of used entries + int size() const {return _sortedSMSStore.size();} + int max_size() const; + int capacity() const; + bool empty() const throw(GsmException) {return size() == 0;} + + // existing iterators may be invalidated after an insert operation + // return position + // insert only writes to available positions + // warning: insert fails silently if size() == max_size() + iterator insert(const SMSStoreEntry& x) throw(GsmException); + iterator insert(iterator position, const SMSStoreEntry& x) + throw(GsmException); + + SMSStoreMap::size_type count(Address &key) + { + assert(_sortOrder == ByAddress); + return _sortedSMSStore.count(SMSMapKey(*this, key)); + } + iterator find(Address &key) + { + assert(_sortOrder == ByAddress); + return _sortedSMSStore.find(SMSMapKey(*this, key)); + } + iterator lower_bound(Address &key) + { + assert(_sortOrder == ByAddress); + return _sortedSMSStore.lower_bound(SMSMapKey(*this, key)); + } + iterator upper_bound(Address &key) + { + assert(_sortOrder == ByAddress); + return _sortedSMSStore.upper_bound(SMSMapKey(*this, key)); + } + pair equal_range(Address &key) + { + assert(_sortOrder == ByAddress); + return _sortedSMSStore.equal_range(SMSMapKey(*this, key)); + } + + SMSStoreMap::size_type count(Timestamp &key) + { + assert(_sortOrder == ByDate); + return _sortedSMSStore.count(SMSMapKey(*this, key)); + } + iterator find(Timestamp &key) + { + assert(_sortOrder == ByDate); + return _sortedSMSStore.find(SMSMapKey(*this, key)); + } + iterator lower_bound(Timestamp &key) + { + assert(_sortOrder == ByDate); + return _sortedSMSStore.lower_bound(SMSMapKey(*this, key)); + } + iterator upper_bound(Timestamp &key) + { + assert(_sortOrder == ByDate); + return _sortedSMSStore.upper_bound(SMSMapKey(*this, key)); + } + pair equal_range(Timestamp &key) + { + assert(_sortOrder == ByDate); + return _sortedSMSStore.equal_range(SMSMapKey(*this, key)); + } + + SMSStoreMap::size_type count(int key) + { + assert(_sortOrder == ByIndex || _sortOrder == ByType); + return _sortedSMSStore.count(SMSMapKey(*this, key)); + } + iterator find(int key) + { + assert(_sortOrder == ByIndex || _sortOrder == ByType); + return _sortedSMSStore.find(SMSMapKey(*this, key)); + } + iterator lower_bound(int key) + { + assert(_sortOrder == ByIndex || _sortOrder == ByType); + return _sortedSMSStore.lower_bound(SMSMapKey(*this, key)); + } + iterator upper_bound(int key) + { + assert(_sortOrder == ByIndex || _sortOrder == ByType); + return _sortedSMSStore.upper_bound(SMSMapKey(*this, key)); + } + pair equal_range(int key) + { + assert(_sortOrder == ByIndex || _sortOrder == ByType); + return _sortedSMSStore.equal_range(SMSMapKey(*this, key)); + } + + size_type erase(Address &key) throw(GsmException); + size_type erase(int key) throw(GsmException); + size_type erase(Timestamp &key) throw(GsmException); + void erase(iterator position) throw(GsmException); + void erase(iterator first, iterator last) throw(GsmException); + void clear() throw(GsmException); + + // synchronize SortedPhonebook with file (no action if in ME) + void sync() throw(GsmException) {sync(false);} + + // destructor + // writes back change to file if store is in file + ~SortedSMSStore(); + }; + + typedef Ref SortedSMSStoreRef; +}; + +#endif // GSM_SORTED_SMS_STORE_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h new file mode 100644 index 0000000000..864fcf99ff --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_sysdep.h @@ -0,0 +1,83 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_sysdep.h +// * +// * Purpose: Some magic to make alloca work on different platforms plus +// * other system-dependent stuff +// * +// * Warning: Only include this header from gsmlib .cc-files +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 28.10.1999 +// ************************************************************************* + +#ifndef GSM_SYSDEP_H +#define GSM_SYSDEP_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +extern "C" { + + // this is mostly taken from the autoconf documentation (WIN32 added) + +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifdef WIN32 +# include +# define alloca _alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +} + +// Windows-specific stuff +#if defined(WIN32) && ! defined(__GNUC__) +#define NOMINMAX +#include +#include + +#ifdef _MSC_VER +#define min __min +#endif + +#define S_ISREG(mode) (((mode) & _S_IFREG) == _S_IFREG) +#define S_ISCHR(mode) (((mode) & _S_IFCHR) == _S_IFCHR) + +#define read _read +#endif + +// define common data types with fixed sizes + +#if SIZEOF_UNSIGNED_SHORT_INT == 2 + typedef unsigned short int unsigned_int_2; +#else +#error "no suitable 2 byte unsigned int available" +#endif +#if SIZEOF_UNSIGNED_LONG_INT == 4 + typedef unsigned long int unsigned_int_4; +#else +#if SIZEOF_UNSIGNED_INT == 4 + typedef unsigned int unsigned_int_4; +#else +#error "no suitable 4 byte unsigned int available" +#endif +#endif + +#endif // GSM_SYSDEP_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc new file mode 100644 index 0000000000..feea2a24d9 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.cc @@ -0,0 +1,456 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_unix_port.cc +// * +// * Purpose: UNIX serial port implementation +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 10.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +static const int holdoff[] = {2000000, 1000000, 400000}; +static const int holdoffArraySize = sizeof(holdoff)/sizeof(int); + +// alarm handling for socket read/write +// the timerMtx is necessary since several threads cannot use the +// timer indepently of each other + +static pthread_mutex_t timerMtx = PTHREAD_MUTEX_INITIALIZER; + +// for non-GNU systems, define alarm() +#ifndef HAVE_ALARM +unsigned int alarm(unsigned int seconds) +{ + struct itimerval old, newt; + newt.it_interval.tv_usec = 0; + newt.it_interval.tv_sec = 0; + newt.it_value.tv_usec = 0; + newt.it_value.tv_sec = (long int)seconds; + if (setitimer(ITIMER_REAL, &newt, &old) < 0) + return 0; + else + return old.it_value.tv_sec; +} +#endif + +// this routine is called in case of a timeout +static void catchAlarm(int) +{ + // do nothing +} + +// start timer +static void startTimer() +{ + pthread_mutex_lock(&timerMtx); + struct sigaction newAction; + newAction.sa_handler = catchAlarm; + newAction.sa_flags = 0; + sigaction(SIGALRM, &newAction, NULL); + alarm(1); +} + +// reset timer +static void stopTimer() +{ + alarm(0); + sigaction(SIGALRM, NULL, NULL); + pthread_mutex_unlock(&timerMtx); +} + +// UnixSerialPort members + +void UnixSerialPort::throwModemException(string message) throw(GsmException) +{ + ostrstream os; + os << message << " (errno: " << errno << "/" << strerror(errno) << ")" + << ends; + char *ss = os.str(); + string s(ss); + delete[] ss; + throw GsmException(s, OSError, errno); +} + +void UnixSerialPort::putBack(unsigned char c) +{ + assert(_oldChar == -1); + _oldChar = c; +} + +int UnixSerialPort::readByte() throw(GsmException) +{ + if (_oldChar != -1) + { + int result = _oldChar; + _oldChar = -1; + return result; + } + + unsigned char c; + int timeElapsed = 0; + struct timeval oneSecond; + bool readDone = false; + + while (! readDone && timeElapsed < _timeoutVal) + { + if (interrupted()) + throwModemException(_("interrupted when reading from TA")); + + // setup fd_set data structure for select() + fd_set fdSet; + oneSecond.tv_sec = 1; + oneSecond.tv_usec = 0; + FD_ZERO(&fdSet); + FD_SET(_fd, &fdSet); + + switch (select(FD_SETSIZE, &fdSet, NULL, NULL, &oneSecond)) + { + case 1: + { + int res = read(_fd, &c, 1); + if (res != 1) + throwModemException(_("end of file when reading from TA")); + else + readDone = true; + break; + } + case 0: + ++timeElapsed; + break; + default: + if (errno != EINTR) + throwModemException(_("reading from TA")); + break; + } + } + if (! readDone) + throwModemException(_("timeout when reading from TA")); + +#ifndef NDEBUG + if (debugLevel() >= 2) + { + // some useful debugging code + if (c == LF) + cerr << ""; + else if (c == CR) + cerr << ""; + else cerr << "<'" << (char) c << "'>"; + cerr.flush(); + } +#endif + return c; +} + +UnixSerialPort::UnixSerialPort(string device, speed_t lineSpeed, + string initString, bool swHandshake) + throw(GsmException) : + _oldChar(-1), _timeoutVal(TIMEOUT_SECS) +{ + struct termios t; + + // open device + _fd = open(device.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK); + if (_fd == -1) + throwModemException(stringPrintf(_("opening device '%s'"), + device.c_str())); + + // switch off non-blocking mode + int fdFlags; + if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) { + close(_fd); + throwModemException(_("getting file status flags failed")); + } + fdFlags &= ~O_NONBLOCK; + if (fcntl(_fd, F_SETFL, fdFlags) == -1) { + close(_fd); + throwModemException(_("switching of non-blocking mode failed")); + } + + long int saveTimeoutVal = _timeoutVal; + _timeoutVal = 3; + int initTries = holdoffArraySize; + while (initTries-- > 0) + { + // flush all pending output + tcflush(_fd, TCOFLUSH); + + // toggle DTR to reset modem + int mctl = TIOCM_DTR; + if (ioctl(_fd, TIOCMBIC, &mctl) < 0) { + close(_fd); + throwModemException(_("clearing DTR failed")); + } + // the waiting time for DTR toggling is increased with each loop + usleep(holdoff[initTries]); + if (ioctl(_fd, TIOCMBIS, &mctl) < 0) { + close(_fd); + throwModemException(_("setting DTR failed")); + } + // get line modes + if (tcgetattr(_fd, &t) < 0) { + close(_fd); + throwModemException(stringPrintf(_("tcgetattr device '%s'"), + device.c_str())); + } + + // set line speed + cfsetispeed(&t, lineSpeed); + cfsetospeed(&t, lineSpeed); + + // set the device to a sane state + t.c_iflag |= IGNPAR | (swHandshake ? IXON | IXOFF : 0); + t.c_iflag &= ~(INPCK | ISTRIP | IMAXBEL | + (swHandshake ? 0 : IXON | IXOFF) + | IXANY | IGNCR | ICRNL | IMAXBEL | INLCR | IGNBRK); + t.c_oflag &= ~(OPOST); + // be careful, only touch "known" flags + t.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | + (swHandshake ? CRTSCTS : 0 )); + t.c_cflag |= CS8 | CREAD | HUPCL | (swHandshake ? 0 : CRTSCTS) | CLOCAL; + t.c_lflag &= ~(ECHO | ECHOE | ECHOPRT | ECHOK | ECHOKE | ECHONL | + ECHOCTL | ISIG | IEXTEN | TOSTOP | FLUSHO | ICANON); + t.c_lflag |= NOFLSH; + t.c_cc[VMIN] = 1; + t.c_cc[VTIME] = 0; + + t.c_cc[VSUSP] = 0; + + // write back + if(tcsetattr (_fd, TCSANOW, &t) < 0) { + close(_fd); + throwModemException(stringPrintf(_("tcsetattr device '%s'"), + device.c_str())); + } + // the waiting time for writing to the ME/TA is increased with each loop + usleep(holdoff[initTries]); + + // flush all pending input + tcflush(_fd, TCIFLUSH); + + try + { + // reset modem + putLine("ATZ"); + bool foundOK = false; + int readTries = 5; + while (readTries-- > 0) + { + // for the first call getLine() waits only 3 seconds + // because of _timeoutVal = 3 + string s = getLine(); + if (s.find("OK") != string::npos || + s.find("CABLE: GSM") != string::npos) + { + foundOK = true; + readTries = 0; // found OK, exit loop + } + else if (s.find("ERROR") != string::npos) + readTries = 0; // error, exit loop + } + + // set getLine/putLine timeout back to old value + _timeoutVal = saveTimeoutVal; + + if (foundOK) + { + // init modem + readTries = 5; + putLine("AT" + initString); + while (readTries-- > 0) + { + string s = getLine(); + if (s.find("OK") != string::npos || + s.find("CABLE: GSM") != string::npos) + return; // found OK, return + } + } + } + catch (GsmException &e) + { + _timeoutVal = saveTimeoutVal; + if (initTries == 0) { + close(_fd); + throw e; + } + } + } + // no response after 3 tries + close(_fd); + throw GsmException(stringPrintf(_("reset modem failed '%s'"), + device.c_str()), OtherError); +} + +string UnixSerialPort::getLine() throw(GsmException) +{ + string result; + int c; + while ((c = readByte()) >= 0) + { + while (c == CR) + { + c = readByte(); + } + if (c == LF) + break; + result += c; + } + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "<-- " << result << endl; +#endif + + return result; +} + +void UnixSerialPort::putLine(string line, + bool carriageReturn) throw(GsmException) +{ +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "--> " << line << endl; +#endif + + if (carriageReturn) line += CR; + const char *l = line.c_str(); + + int timeElapsed = 0; + struct timeval oneSecond; + + ssize_t bytesWritten = 0; + while (bytesWritten < (ssize_t)line.length() && timeElapsed < _timeoutVal) + { + if (interrupted()) + throwModemException(_("interrupted when writing to TA")); + + // setup fd_set data structure for select() + fd_set fdSet; + oneSecond.tv_sec = 1; + oneSecond.tv_usec = 0; + FD_ZERO(&fdSet); + FD_SET(_fd, &fdSet); + + switch (select(FD_SETSIZE, NULL, &fdSet, NULL, &oneSecond)) + { + case 1: + { + ssize_t bw = write(_fd, l + bytesWritten, line.length() - bytesWritten); + if (bw < 0) + throwModemException(_("writing to TA")); + bytesWritten += bw; + break; + } + case 0: + ++timeElapsed; + break; + default: + if (errno != EINTR) + throwModemException(_("writing to TA")); + break; + } + } + + while (timeElapsed < _timeoutVal) + { + if (interrupted()) + throwModemException(_("interrupted when writing to TA")); + startTimer(); + int res = tcdrain(_fd); // wait for output to be read by TA + stopTimer(); + if (res == 0) + break; + else + { + assert(errno == EINTR); + ++timeElapsed; + } + } + if (timeElapsed >= _timeoutVal) + throwModemException(_("timeout when writing to TA")); + + // echo CR LF must be removed by higher layer functions in gsm_at because + // in order to properly handle unsolicited result codes from the ME/TA +} + +bool UnixSerialPort::wait(GsmTime timeout) throw(GsmException) +{ + fd_set fds; + FD_ZERO(&fds); + FD_SET(_fd, &fds); + return select(FD_SETSIZE, &fds, NULL, NULL, timeout) != 0; +} + +// set timeout for read or write in seconds. +void UnixSerialPort::setTimeOut(unsigned int timeout) +{ + _timeoutVal = timeout; +} + +UnixSerialPort::~UnixSerialPort() +{ + if (_fd != -1) + close(_fd); +} + +speed_t gsmlib::baudRateStrToSpeed(string baudrate) throw(GsmException) +{ + if (baudrate == "300") + return B300; + else if (baudrate == "600") + return B600; + else if (baudrate == "1200") + return B1200; + else if (baudrate == "2400") + return B2400; + else if (baudrate == "4800") + return B4800; + else if (baudrate == "9600") + return B9600; + else if (baudrate == "19200") + return B19200; + else if (baudrate == "38400") + return B38400; +#ifdef B57600 + else if (baudrate == "57600") + return B57600; +#endif +#ifdef B115200 + else if (baudrate == "115200") + return B115200; +#endif +#ifdef B230400 + else if (baudrate == "230400") + return B230400; +#endif +#ifdef B460800 + else if (baudrate == "460800") + return B460800; +#endif + else + throw GsmException(stringPrintf(_("unknown baudrate '%s'"), + baudrate.c_str()), ParameterError); +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h new file mode 100644 index 0000000000..29b1800b6c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_unix_serial.h @@ -0,0 +1,62 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_unix_port.h +// * +// * Purpose: UNIX serial port implementation +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.5.1999 +// ************************************************************************* + +#ifndef GSM_UNIX_SERIAL_H +#define GSM_UNIX_SERIAL_H + +#include +#include +#include +#include +#include +#include + +using namespace std; + +namespace gsmlib +{ + class UnixSerialPort : public Port + { + private: + int _fd; // file descriptor for device + int _debug; // debug level (set by environment variable + // GSM_DEBUG + int _oldChar; // character set by putBack() (-1 == none) + long int _timeoutVal; // timeout for getLine/readByte + + // throw GsmException include UNIX errno + void throwModemException(string message) throw(GsmException); + + public: + // create Port given the UNIX device name + UnixSerialPort(string device, speed_t lineSpeed = DEFAULT_BAUD_RATE, + string initString = DEFAULT_INIT_STRING, + bool swHandshake = false) + throw(GsmException); + + // inherited from Port + void putBack(unsigned char c); + int readByte() throw(GsmException); + string getLine() throw(GsmException); + void putLine(string line, + bool carriageReturn = true) throw(GsmException); + bool wait(GsmTime timeout) throw(GsmException); + void setTimeOut(unsigned int timeout); + + virtual ~UnixSerialPort(); + }; + + // convert baudrate string ("300" .. "460800") to speed_t + extern speed_t baudRateStrToSpeed(string baudrate) throw(GsmException); +}; + +#endif // GSM_UNIX_SERIAL_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc new file mode 100644 index 0000000000..3958908df7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc @@ -0,0 +1,379 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_util.h +// * +// * Purpose: Various utilities +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if !defined(HAVE_CONFIG_H) || defined(HAVE_UNISTD_H) +#include +#endif +#if !defined(HAVE_CONFIG_H) || defined(HAVE_MALLOC_H) +#include +#endif +#include +#ifdef HAVE_VSNPRINTF +// switch on vsnprintf() prototype in stdio.h +#define __USE_GNU +#define _GNU_SOURCE +#endif +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +// Latin-1 undefined character (code 172 (Latin-1 boolean not, "¬")) +const int NOP = 172; + +// GSM undefined character (code 16 (GSM Delta)) +const int GSM_NOP = 16; + +// conversion tables, Latin1 to GSM and GSM to Latin1 + +static unsigned char gsmToLatin1Table[] = +{ + // 0 '@', '£', '$', '¥', 'è', 'é', 'ù', 'ì', + '@', 163, '$', 165, 232, 233, 249, 236, + // 8 'ò', 'Ç', LF, 'Ø', 'ø', CR, 'Å', 'å', + 242, 199, 10, 216, 248, 13, 197, 229, + // 16 '¬', '_', '¬', '¬', '¬', '¬', '¬', '¬', + NOP, '_', NOP, NOP, NOP, NOP, NOP, NOP, + // 24 '¬', '¬', '¬', '¬', 'Æ', 'æ', 'ß', 'É', + NOP, NOP, NOP, NOP, 198, 230, 223, 201, + // 32 ' ', '!', '"', '#', '¤', '%', '&', ''', + ' ', '!', '"', '#', 164, '%', '&', '\'', + // 40 '(', ')', '*', '+', ',', '-', '.', '/', + '(', ')', '*', '+', ',', '-', '.', '/', + // 48 '0', '1', '2', '3', '4', '5', '6', '7', + '0', '1', '2', '3', '4', '5', '6', '7', + // 56 '8', '9', ':', ';', '<', '=', '>', '?', + '8', '9', ':', ';', '<', '=', '>', '?', + // 64 '¡', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 161, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + // 72 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + // 80 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + // 88 'X', 'Y', 'Z', 'Ä', 'Ö', 'Ñ', 'Ü', '§', + 'X', 'Y', 'Z', 196, 214, 209, 220, 167, + // 96 '¿', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 191, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + // 104 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + // 112 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + // 120 'x', 'y', 'z', 'ä', 'ö', 'ñ', 'ü', 'à', + 'x', 'y', 'z', 228, 246, 241, 252, 224 +}; + +static unsigned char latin1ToGsmTable[256]; + +static class Latin1ToGsmTableInit +{ +public: + Latin1ToGsmTableInit() + { + memset((void*)latin1ToGsmTable, GSM_NOP, 256); + for (int i = 0; i < 128; i++) + if (gsmToLatin1Table[i] != NOP) + latin1ToGsmTable[gsmToLatin1Table[i]] = i; + } +} latin1ToGsmTableInit; + +string gsmlib::gsmToLatin1(string s) +{ + string result(s.length(), 0); + for (string::size_type i = 0; i < s.length(); i++) + result[i] = (unsigned char)s[i] > 127 ? NOP : gsmToLatin1Table[s[i]]; + return result; +} + +string gsmlib::latin1ToGsm(string s) +{ + string result(s.length(), 0); + for (string::size_type i = 0; i < s.length(); i++) + result[i] = latin1ToGsmTable[(unsigned char)s[i]]; + return result; +} + +static unsigned char byteToHex[] = +{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F'}; + +string gsmlib::bufToHex(const unsigned char *buf, unsigned long length) +{ + const unsigned char *bb = buf; + string result; + result.reserve(length * 2); + + for (unsigned long i = 0; i < length; ++i) + { + result += byteToHex[*bb >> 4]; + result += byteToHex[*bb++ & 0xf]; + } + return result; +} + +bool gsmlib::hexToBuf(const string &hexString, unsigned char *buf) +{ + if (hexString.length() % 2 != 0) + return false; + + unsigned char *bb = buf; + for (unsigned int i = 0; i < hexString.length(); i += 2) + { + unsigned char c = hexString[i]; + if (! isdigit(c) && ! ('a' <= c && c <= 'f') && ! ('A' <= c && c <= 'F')) + return false; + *bb = (isdigit(c) ? c - '0' : + ((('a' <= c && c <= 'f') ? c - 'a' : c - 'A')) + 10) << 4; + c = hexString[i + 1]; + if (! isdigit(c) && ! ('a' <= c && c <= 'f') && ! ('A' <= c && c <= 'F')) + return false; + *bb++ |= isdigit(c) ? c - '0' : + ((('a' <= c && c <= 'f') ? c - 'a' : c - 'A') + 10); + } + return true; +} + +string gsmlib::intToStr(int i) +{ + ostrstream os; + os << i << ends; + char *ss = os.str(); + string s(ss); + delete[] ss; + return s; +} + +string gsmlib::removeWhiteSpace(string s) +{ + string result; + for (unsigned int i = 0; i < s.length(); ++i) + if (! isspace(s[i])) + result += s[i]; + return result; +} + +#ifdef WIN32 + +// helper routine, find out whether filename starts with "COM" +static bool isCom(string filename) +{ + filename = removeWhiteSpace(lowercase(filename)); + // remove UNC begin + if ( filename.compare(0, 4, "\\\\.\\") == 0 ) + filename.erase(0, 4); + return filename.length() < 3 || filename.substr(0, 3) == "com"; +} +#endif + +bool gsmlib::isFile(string filename) +{ +#ifdef WIN32 + // stat does not work reliably under Win32 to indicate devices + if (isCom(filename)) + return false; +#endif + + struct stat statBuf; + int retries = 0; + + while (retries < 10) + { + if (stat(filename.c_str(), &statBuf) != 0) + throw GsmException( + stringPrintf(_("error when calling stat('%s') (errno: %d/%s)"), + filename.c_str(), errno, strerror(errno)), + OSError); + +#ifndef WIN32 + if (S_ISLNK(statBuf.st_mode)) + { + int size = 100; + while (1) + { + char *buffer = (char*)malloc(size); + int nchars = readlink(filename.c_str(), buffer, size); + if (nchars < size) + { + filename.assign(buffer, nchars); + free(buffer); + break; + } + free(buffer); + size *= 2; + } + ++retries; + } + else if (S_ISCHR(statBuf.st_mode)) + return false; + else +#endif + if (S_ISREG(statBuf.st_mode)) + return true; + else + throw GsmException( + stringPrintf(_("file '%s' is neither file nor character device"), + filename.c_str()), + ParameterError); + } + throw GsmException(_("maxmimum number of symbolic links exceeded"), + ParameterError); +} + +void gsmlib::renameToBackupFile(string filename) throw(GsmException) +{ + string backupFilename = filename + "~"; + unlink(backupFilename.c_str()); + if (rename(filename.c_str(), backupFilename.c_str()) < 0) + throw GsmException( + stringPrintf(_("error renaming '%s' to '%s'"), + filename.c_str(), backupFilename.c_str()), + OSError, errno); +} + +// NoCopy members + +#ifndef NDEBUG + +NoCopy::NoCopy(NoCopy &n) +{ + cerr << "ABORT: NoCopy copy constructor used" << endl; + abort(); +} + +NoCopy &NoCopy::operator=(NoCopy &n) +{ + cerr << "ABORT: NoCopy::operator= used" << endl; + abort(); +} + +#endif // NDEBUG + +string gsmlib::lowercase(string s) +{ + string result; + for (unsigned int i = 0; i < s.length(); ++i) + result += tolower(s[i]); + return result; +} + +int gsmlib::checkNumber(string s) throw(GsmException) +{ + for (unsigned int i = 0; i < s.length(); ++i) + if (! isdigit(s[i])) + throw GsmException(stringPrintf(_("expected number, got '%s'"), + s.c_str()), ParameterError); + int result; + istrstream is(s.c_str()); + is >> result; + return result; +} + +#ifdef HAVE_VSNPRINTF +string gsmlib::stringPrintf(const char *format, ...) +{ + va_list args; + va_start(args, format); + int size = 1024; + while (1) + { + char *buf = (char*)alloca(sizeof(char) * size); + int nchars = vsnprintf(buf, size, format, args); + if (nchars < size) + { + va_end(args); + return string(buf, nchars); + } + size *= 2; + } + return ""; +} + +#else +char gsmlib::__s[20000]; // buffer for the replacement macro +#endif // HAVE_VSNPRINTF + +#ifndef NDEBUG +int gsmlib::debugLevel() +{ + char *s = getenv("GSMLIB_DEBUG"); + if (s == NULL) return 0; + return checkNumber(s); +} +#endif + +// interrupt interface + +namespace gsmlib +{ + static InterruptBase *interruptObject = NULL; +} + +void gsmlib::setInterruptObject(InterruptBase *intObject) +{ + interruptObject = intObject; +} + +bool gsmlib::interrupted() +{ + return interruptObject != NULL && interruptObject->interrupted(); +} + +void gsmlib::checkTextAndTelephone(string text, string telephone) + throw(GsmException) +{ + if (text.find('"') != string::npos) + throw GsmException( + stringPrintf(_("text '%s' contains illegal character '\"'"), + text.c_str()), + ParameterError); + + for (unsigned int i = 0; i < telephone.length(); ++i) + if (! isdigit(telephone[i]) && ! (telephone[i] == '+') && + ! (telephone[i] == '*') && ! (telephone[i] == '#') && + ! (telephone[i] == 'p') && ! (telephone[i] == 'w') && + ! (telephone[i] == 'P') && ! (telephone[i] == 'W')) + throw GsmException( + stringPrintf(_("illegal character in telephone number '%s'"), + telephone.c_str()), ParameterError); +} + +// progress interface + +namespace gsmlib +{ + static ProgressBase *progressObject = NULL; +} + +void gsmlib::setProgressObject(ProgressBase *progObject) +{ + progressObject = progObject; +} + +void gsmlib::reportProgress(int part, int total) +{ + if (progressObject != NULL) + progressObject->reportProgress(part, total); +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h new file mode 100644 index 0000000000..127ef05ce6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.h @@ -0,0 +1,232 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_util.h +// * +// * Purpose: Various utilities +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 4.5.1999 +// ************************************************************************* + +#ifndef GSM_UTIL_H +#define GSM_UTIL_H + +#include +#include +#include +#ifndef WIN32 +#include +#endif +#include + +using namespace std; + +namespace gsmlib +{ + // time type + typedef struct timeval *GsmTime; + + // some constants + const char CR = 13; // ASCII carriage return + const char LF = 10; // ASCII line feed + + // common number formats + const unsigned int UnknownNumberFormat = 129; + const unsigned int InternationalNumberFormat = 145; + + // convert gsm to Latin-1 + // characters that have no counterpart in Latin-1 are converted to + // code 172 (Latin-1 boolean not, "¬") + string gsmToLatin1(string s); + + // convert Latin-1 to gsm + // characters that have no counterpart in GSM are converted to + // code 16 (GSM Delta) + string latin1ToGsm(string s); + + // convert byte buffer of length to hexadecimal string + string bufToHex(const unsigned char *buf, unsigned long length); + + // convert hexString to byte buffer, return false if no hexString + bool hexToBuf(const string &hexString, unsigned char *buf); + + // indicate that a value is not set + const int NOT_SET = -1; + + // An integer range + struct IntRange + { + int _high, _low; + + IntRange() : _high(NOT_SET), _low(NOT_SET) {} + }; + + // A valid integer range for a given parameter + struct ParameterRange + { + string _parameter; + IntRange _range; + }; + + // *** general-purpose pointer wrapper with reference counting + + class RefBase + { + private: + int _refCount; + + public: + RefBase() : _refCount(0) {} + int ref() {return _refCount++;} + int unref() {return --_refCount;} + int refCount() const {return _refCount;} + }; + + template + class Ref + { + private: + T *_rep; + public: + T *operator->() const {return _rep;} + T &operator()() {return *_rep;} + T *getptr() {return _rep;} + bool isnull() const {return _rep == (T*)NULL;} + Ref() : _rep((T*)NULL) {} + Ref(T *pp) : _rep(pp) {if (pp != (T*)NULL) pp->ref();} + Ref(const Ref &r); + Ref &operator=(const Ref &r); + ~Ref(); + bool operator==(const Ref &r) const + { + return _rep == r._rep; + } + }; + + template + Ref::Ref(const Ref &r) : _rep(r._rep) + { + if (_rep != (T*)NULL) _rep->ref(); + } + + template + Ref &Ref::operator=(const Ref &r) + { + if (r._rep != (T*)NULL) r._rep->ref(); + if (_rep != (T*)NULL && _rep->unref() == 0) delete _rep; + _rep = r._rep; + return *this; + } + + template + Ref::~Ref() + { + if (_rep != (T*)NULL && _rep->unref() == 0) delete _rep; + } + + // utility function return string given an int + string intToStr(int i); + + // remove white space from the string + string removeWhiteSpace(string s); + + // return true if bit is set in vector + inline bool isSet(vector &b, unsigned int bit) + { + return b.size() > bit && b[bit]; + } + + // return true if filename refers to a file + // throws exception if filename is neither file nor device + bool isFile(string filename); + + // make backup file adequate for this operating system + void renameToBackupFile(string filename) throw(GsmException); + + // Base class for class for which copying is not allow + // only used for debugging + + class NoCopy + { + public: + NoCopy() {} + +#ifndef NDEBUG + NoCopy(NoCopy &n); + + NoCopy &operator=(NoCopy &n); +#endif + }; + + // convert string to lower case + string lowercase(string s); + + // convert string to number and check for all digits + int checkNumber(string s) throw(GsmException); + + // like printf, but return C++ string +#ifdef HAVE_VSNPRINTF + string stringPrintf(const char *format, ...) +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) + __attribute__((format (printf, 1, 2))) +#endif + ; +#else + // WARNING: This replacement code is + // - not threadsafe + // - subject to buffer overruns +#define stringPrintf(format, args...) \ + (sprintf(__s, format, ## args), string(__s)) + + extern char __s[]; +#endif // HAVE_VSNPRINTF + + // return debug level +#ifndef NDEBUG + extern int debugLevel(); +#endif + + // interface for interrupting gsmlib activity + + class InterruptBase + { + public: + // this member should return true if gsmlib is to be interrupted + virtual bool interrupted() = 0; + }; + + // set global interrupt object + extern void setInterruptObject(InterruptBase *intObject); + + // return true if interrupted + extern bool interrupted(); + + // interface for reporting progress + + class ProgressBase + { + public: + // override this to receive progress reports + virtual void reportProgress(int part, int total) = 0; + }; + + // set global progress object + extern void setProgressObject(ProgressBase *progObject); + + // report progress (part/total * 100 is meant to be the percentage) + // this function is called by + // - GsmAt::chatv() without arguments, used by Phonebook::Phonebook() + // - Phonebook::Phonebook() + // - SortedPhonebook::SortedPhonebook() + // - SortedSMSStore::SortedSMSStore() + extern void reportProgress(int part = -1, int total = -1); + + // check for valid text and telephone number + // throw exception if error + extern void checkTextAndTelephone(string text, string telephone) + throw(GsmException); +}; + +#endif // GSM_UTIL_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc new file mode 100644 index 0000000000..dda1d74587 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.cc @@ -0,0 +1,507 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_win32_port.cc +// * +// * Purpose: WIN32 serial port implementation +// * +// * Author: Frediano Ziglio (freddy77@angelfire.com) +// * +// * Created: 25.10.2000 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +static long int timeoutVal = TIMEOUT_SECS; + +struct ExceptionSafeOverlapped: public OVERLAPPED +{ + ExceptionSafeOverlapped() + { + memset((OVERLAPPED*)this,0,sizeof(OVERLAPPED)); + hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); + if (hEvent == INVALID_HANDLE_VALUE) + throw GsmException(_("error creating event"),OSError,GetLastError()); + } + ~ExceptionSafeOverlapped() + { CloseHandle(hEvent); } +}; + +typedef BOOL (WINAPI *TCancelIoProc)(HANDLE file); +TCancelIoProc CancelIoProc = NULL; +BOOL CancelIoHook(HANDLE file) +{ + if (CancelIoProc) + return CancelIoProc(file); + + HMODULE hmodule = GetModuleHandle("KERNEL32"); + if (hmodule) + { + CancelIoProc = (TCancelIoProc)GetProcAddress(hmodule,"CancelIo"); + if (CancelIoProc) + return CancelIoProc(file); + } + + return TRUE; +} +#define CancelIo CancelIoHook + +// Win32SerialPort members + +void Win32SerialPort::throwModemException(string message) throw(GsmException) +{ + ostrstream os; + os << message << " (errno: " << errno << "/" << strerror(errno) << ")" + << ends; + char *ss = os.str(); + string s(ss); + delete[] ss; + throw GsmException(s, OSError, errno); +} + +void Win32SerialPort::putBack(unsigned char c) +{ + assert(_oldChar == -1); + _oldChar = c; +} + +int Win32SerialPort::readByte() throw(GsmException) +{ + if (_oldChar != -1) + { + int result = _oldChar; + _oldChar = -1; + return result; + } + + unsigned char c; + int timeElapsed = 0; + bool readDone = true; + ExceptionSafeOverlapped over; + + DWORD initTime = GetTickCount(); + DWORD dwReaded; + if (!ReadFile(_file,&c,1,&dwReaded,&over)) + { + readDone = false; + if (GetLastError() != ERROR_IO_PENDING) + { + throwModemException(_("reading from TA")); + } + + while(!readDone) + { + if (interrupted()) + throwModemException(_("interrupted when reading from TA")); + + // wait another second + switch(WaitForSingleObject(over.hEvent,1000)) + { + case WAIT_TIMEOUT: + break; + case WAIT_OBJECT_0: + case WAIT_ABANDONED: + // !!! do a infinite loop if (bytesWritten < lenght) ? + GetOverlappedResult(_file,&over,&dwReaded,TRUE); + readDone = true; + break; + case WAIT_FAILED: + throwModemException(_("reading from TA")); + } + + timeElapsed = (GetTickCount() - initTime)/1000U; + + // timeout elapsed ? + if (timeElapsed >= timeoutVal) + { + CancelIo(_file); + break; + } + + } + } + + if (! readDone) + throwModemException(_("timeout when reading from TA")); + +#ifndef NDEBUG + if (debugLevel() >= 2) + { + // some useful debugging code + if (c == LF) + cerr << ""; + else if (c == CR) + cerr << ""; + else cerr << "<'" << (char) c << "'>"; + cerr.flush(); + } +#endif + return c; +} + +Win32SerialPort::Win32SerialPort(string device, int lineSpeed, + string initString, bool swHandshake) + throw(GsmException) : + _oldChar(-1) +{ + try + { + int holdoff[] = {2000, 1000, 400}; + + // open device + _file = CreateFile(device.c_str(),GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL ); + if (_file == INVALID_HANDLE_VALUE) + throwModemException(stringPrintf(_("opening device '%s'"), + device.c_str())); + + int initTries = 3; + while (initTries-- > 0) + { + // flush all pending output + FlushFileBuffers(_file); + + // toggle DTR to reset modem + if (!EscapeCommFunction(_file,CLRDTR)) + throwModemException(_("clearing DTR failed")); + Sleep(holdoff[initTries]); + if (!EscapeCommFunction(_file,SETDTR)) + throwModemException(_("setting DTR failed")); + + DCB dcb; + // get line modes + if (!GetCommState(_file,&dcb)) + throwModemException(stringPrintf(_("GetCommState device '%s'"), + device.c_str())); + +// if (tcgetattr(_fd, &t) < 0) +// throwModemException(stringPrintf(_("tcgetattr device '%s'"), +// device.c_str())); + + // set the device to a sane state + dcb.fBinary = TRUE; + dcb.BaudRate = lineSpeed; + + // n,8,1 + dcb.fParity = FALSE; + dcb.Parity = 0; + dcb.ByteSize = 8; + dcb.StopBits = 0; + + if (!swHandshake) + { + dcb.fInX = FALSE; + dcb.fOutX = FALSE; + dcb.fOutxDsrFlow = FALSE; + dcb.fOutxCtsFlow = FALSE; + } + else + { + dcb.fInX = TRUE; + dcb.fOutX = TRUE; + dcb.fOutxDsrFlow = FALSE; + dcb.fOutxCtsFlow = FALSE; + } + dcb.fDtrControl = DTR_CONTROL_ENABLE; + dcb.fRtsControl = RTS_CONTROL_ENABLE; + +// t.c_iflag |= IGNPAR; +// t.c_iflag &= ~(INPCK | ISTRIP | IMAXBEL | +// (swHandshake ? CRTSCTS : IXON | IXOFF) +// | IXANY | IGNCR | ICRNL | IMAXBEL | INLCR | IGNBRK); +// t.c_oflag &= ~(OPOST); +// // be careful, only touch "known" flags +// t.c_cflag&= ~(CSIZE | CSTOPB | PARENB | PARODD); +// t.c_cflag|= CS8 | CREAD | HUPCL | +// (swHandshake ? IXON | IXOFF : CRTSCTS) | +// CLOCAL; +// t.c_lflag &= ~(ECHO | ECHOE | ECHOPRT | ECHOK | ECHOKE | ECHONL | +// ECHOCTL | ISIG | IEXTEN | TOSTOP | FLUSHO | ICANON); +// t.c_lflag |= NOFLSH; +// +// t.c_cc[VMIN] = 1; +// t.c_cc[VTIME] = 0; +// +// t.c_cc[VSUSP] = 0; + + // write back + if (!SetCommState(_file,&dcb)) + throwModemException(stringPrintf(_("SetCommState device '%s'"), + device.c_str())); + + Sleep(holdoff[initTries]); + + if (!SetupComm(_file,1024,1024)) + throwModemException(stringPrintf(_("SetupComm device '%s'"), + device.c_str())); + + + // flush all pending input + PurgeComm(_file,PURGE_RXABORT|PURGE_RXCLEAR); + + try + { + // reset modem + putLine("ATZ"); + bool foundOK = false; + int readTries = 5; + while (readTries-- > 0) + { + string s = getLine(); + if (s.find("OK") != string::npos || + s.find("CABLE: GSM") != string::npos) + { + foundOK = true; + readTries = 0; // found OK, exit loop + } + } + + if (foundOK) + { + // init modem + readTries = 5; + // !!! no not declare this in loop, compiler error on Visual C++ + // (without SP and with SP4) + string s; + putLine("AT" + initString); + do + { + s = getLine(); + if (s.find("OK") != string::npos || + s.find("CABLE: GSM") != string::npos) + return; // found OK, return + } while(--readTries); + } + } + catch (GsmException &e) + { + if (initTries == 0) + throw e; + } + } + // no response after 3 tries + throw GsmException(stringPrintf(_("reset modem failed '%s'"), + device.c_str()), OtherError); + } + catch (GsmException &e) + { + if ( _file != INVALID_HANDLE_VALUE) + CloseHandle(_file); + throw e; + } +} + +string Win32SerialPort::getLine() throw(GsmException) +{ + string result; + int c; + while ((c = readByte()) > 0) + { + while (c == CR) + { + c = readByte(); + } + if (c == LF) + break; + result += c; + } + +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "<-- " << result << endl; +#endif + + return result; +} + +void Win32SerialPort::putLine(string line, + bool carriageReturn) throw(GsmException) +{ +#ifndef NDEBUG + if (debugLevel() >= 1) + cerr << "--> " << line << endl; +#endif + + if (carriageReturn) line += CR; + // !!! BUG, mantain this pointer isn't corrent, use iterator !!! + const char *l = line.c_str(); + + FlushFileBuffers(_file); // flush all pending input and output + + int timeElapsed = 0; + + DWORD bytesWritten = 0; + + ExceptionSafeOverlapped over; + + DWORD initTime = GetTickCount(); + if (!WriteFile(_file,l,line.length(),&bytesWritten,&over)) + { + if (GetLastError() != ERROR_IO_PENDING) + { + throwModemException(_("writing to TA")); + } + + while(bytesWritten < (DWORD)line.length()) + { + if (interrupted()) + throwModemException(_("interrupted when writing to TA")); + + // wait another second + switch(WaitForSingleObject(over.hEvent,1000)) + { + case WAIT_TIMEOUT: + break; + case WAIT_OBJECT_0: + case WAIT_ABANDONED: + // !!! do a infinite loop if (bytesWritten < lenght) ? + GetOverlappedResult(_file,&over,&bytesWritten,TRUE); + break; + case WAIT_FAILED: + throwModemException(_("writing to TA")); + } + + timeElapsed = (GetTickCount() - initTime)/1000U; + + // timeout elapsed ? + if (timeElapsed >= timeoutVal) + { + CancelIo(_file); + throwModemException(_("timeout when writing to TA")); + } + + } + } + + return; +/* + // empty buffer + SetCommMask(_file,EV_TXEMPTY); + DWORD dwEvent; + ResetEvent(over.hEvent); + if( WaitCommEvent(_file,&dwEvent,&over) ) + return; // already empty + + // check true errors + if (GetLastError() != ERROR_IO_PENDING) + throwModemException(_("error comm waiting")); + + while(timeElapsed < timeoutVal) + { + if (interrupted()) + throwModemException(_("interrupted when flushing to TA")); + + switch( WaitForSingleObject( over.hEvent, 1000 ) ) + { + case WAIT_TIMEOUT: + break; + + // successfully flushed + case WAIT_ABANDONED: + case WAIT_OBJECT_0: + return; + + default: + throwModemException(_("error waiting")); + } + timeElapsed = (GetTickCount() - initTime)/1000U; + } + + CancelIo(_file); + throwModemException(_("timeout when writing to TA")); +*/ + + // echo CR LF must be removed by higher layer functions in gsm_at because + // in order to properly handle unsolicited result codes from the ME/TA +} + +bool Win32SerialPort::wait(GsmTime timeout) throw(GsmException) +{ + // See differences from UNIX + // Why do I use Windows ? + DWORD dwEvent; + SetCommMask(_file,EV_RXCHAR); + if (!timeout) + { + if( !WaitCommEvent(_file,&dwEvent,NULL) ) + throwModemException(_("error comm waiting")); + return true; + } + + ExceptionSafeOverlapped over; + if( !WaitCommEvent(_file,&dwEvent,&over) ) + { + // check true errors + if (GetLastError() != ERROR_IO_PENDING) + throwModemException(_("error comm waiting")); + + switch( WaitForSingleObject( over.hEvent, timeout->tv_sec*1000U+(timeout->tv_usec/1000U) ) ) + { + case WAIT_TIMEOUT: + CancelIo(_file); + return false; + + case WAIT_ABANDONED: + case WAIT_OBJECT_0: + return true; + + default: + throwModemException(_("error waiting")); + } + } + + return true; +} + +void Win32SerialPort::setTimeOut(unsigned int timeout) +{ + timeoutVal = timeout; +} + +Win32SerialPort::~Win32SerialPort() +{ + if ( _file != INVALID_HANDLE_VALUE) + CloseHandle(_file); +} + +int gsmlib::baudRateStrToSpeed(string baudrate) throw(GsmException) +{ + if (baudrate == "300") + return 300; + else if (baudrate == "600") + return 600; + else if (baudrate == "1200") + return 1200; + else if (baudrate == "2400") + return 2400; + else if (baudrate == "4800") + return 4800; + else if (baudrate == "9600") + return 9600; + else if (baudrate == "19200") + return 19200; + else if (baudrate == "38400") + return 38400; + else if (baudrate == "57600") + return 57600; + else if (baudrate == "115200") + return 115200; + else + throw GsmException(stringPrintf(_("unknown baudrate '%s'"), + baudrate.c_str()), ParameterError); +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h new file mode 100644 index 0000000000..627bd09354 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_win32_serial.h @@ -0,0 +1,60 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: gsm_win32_port.h +// * +// * Purpose: WIN32 serial port implementation +// * +// * Author: Frediano Ziglio (freddy77@angelfire.com) +// * +// * Created: 25.10.2000 +// ************************************************************************* + +#ifndef GSM_WIN32_SERIAL_H +#define GSM_WIN32_SERIAL_H + +#include +#include +#include +#include +#define WIN32_MEAN_AND_LEAN +#include + +using namespace std; + +namespace gsmlib +{ + class Win32SerialPort : public Port + { + private: + HANDLE _file; // file handle for device + int _oldChar; // character set by putBack() (-1 == none) +// OVERLAPPED _overIn; // overlapped structure for wait + + // throw GsmException include UNIX errno + void throwModemException(string message) throw(GsmException); + + public: + // create Port given the UNIX device name + Win32SerialPort(string device, int lineSpeed = DEFAULT_BAUD_RATE, + string initString = DEFAULT_INIT_STRING, + bool swHandshake = false) + throw(GsmException); + + // inherited from Port + void putBack(unsigned char c); + int readByte() throw(GsmException); + string getLine() throw(GsmException); + void putLine(string line, + bool carriageReturn = true) throw(GsmException); + bool wait(GsmTime timeout) throw(GsmException); + void setTimeOut(unsigned int timeout); + + virtual ~Win32SerialPort(); + }; + + // convert baudrate string ("300" .. "460800") to speed_t + extern int baudRateStrToSpeed(string baudrate) throw(GsmException); +}; + +#endif // GSM_UNIX_SERIAL_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog new file mode 100644 index 0000000000..198950159d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/ChangeLog @@ -0,0 +1,1086 @@ +1998-04-29 Ulrich Drepper + + * intl/localealias.c (read_alias_file): Use unsigned char for + local variables. Remove unused variable tp. + * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * + for type of codeset. For loosing Solaris systems. + * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. + * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable + len if not needed. + Patches by Jim Meyering. + +1998-04-28 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if + mmap is not supported. + + * hash-string.h: Don't include . + +1998-04-27 Ulrich Drepper + + * textdomain.c: Use strdup is available. + + * localealias.c: Define HAVE_MEMPCPY so that we can use this + function. Define and use semapahores to protect modfication of + global objects when compiling for glibc. Add code to allow + freeing alias table. + + * l10nflist.c: Don't assume stpcpy not being a macro. + + * gettextP.h: Define internal_function macri if not already done. + Use glibc byte-swap macros instead of defining SWAP when compiled + for glibc. + (struct loaded_domain): Add elements to allow unloading. + + * Makefile.in (distclean): Don't remove libintl.h here. + + * bindtextdomain.c: Carry over changes from glibc. Use strdup if + available. + + * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal + functions. Add memory freeing code for glibc. + + * dgettext.c: Update copyright. + + * explodename.c: Include stdlib.h and string.h only if they exist. + Use strings.h eventually. + + * finddomain.c: Mark internal functions. Use strdup if available. + Add memory freeing code for glibc. + +1997-10-10 20:00 Ulrich Drepper + + * libgettext.h: Fix dummy textdomain and bindtextdomain macros. + They should return reasonable values. + Reported by Tom Tromey . + +1997-09-16 03:33 Ulrich Drepper + + * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. + * intlh.inst.in: Likewise. + Reported by Jean-Marc Lasgouttes . + + * libintl.glibc: Update from current glibc version. + +1997-09-06 02:10 Ulrich Drepper + + * intlh.inst.in: Reformat copyright. + +1997-08-19 15:22 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Remove wrong comment. + +1997-08-16 00:13 Ulrich Drepper + + * Makefile.in (install-data): Don't change directory to install. + +1997-08-01 14:30 Ulrich Drepper + + * cat-compat.c: Fix copyright. + + * localealias.c: Don't define strchr unless !HAVE_STRCHR. + + * loadmsgcat.c: Update copyright. Fix typos. + + * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. + (_nl_make_l10nflist): Handle sponsor and revision correctly. + + * gettext.c: Update copyright. + * gettext.h: Likewise. + * hash-string.h: Likewise. + + * finddomain.c: Remoave dead code. Define strchr only if + !HAVE_STRCHR. + + * explodename.c: Include . + + * explodename.c: Reformat copyright text. + (_nl_explode_name): Fix typo. + + * dcgettext.c: Define and use __set_errno. + (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is + not defined. + + * bindtextdom.c: Pretty printing. + +1997-05-01 02:25 Ulrich Drepper + + * dcgettext.c (guess_category_value): Don't depend on + HAVE_LC_MESSAGES. We don't need the macro here. + Patch by Bruno Haible . + + * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL + macro. Instead use HAVE_LOCALE_NULL and define it when using + glibc, as in dcgettext.c. + Patch by Bruno Haible . + + * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois + Pinard. + +Mon Mar 10 06:51:17 1997 Ulrich Drepper + + * Makefile.in: Implement handling of libtool. + + * gettextP.h: Change data structures for use of generic lowlevel + i18n file handling. + +Wed Dec 4 20:21:18 1996 Ulrich Drepper + + * textdomain.c: Put parentheses around arguments of memcpy macro + definition. + * localealias.c: Likewise. + * l10nflist.c: Likewise. + * finddomain.c: Likewise. + * bindtextdom.c: Likewise. + Reported by Thomas Esken. + +Mon Nov 25 22:57:51 1996 Ulrich Drepper + + * textdomain.c: Move definition of `memcpy` macro to right + position. + +Fri Nov 22 04:01:58 1996 Ulrich Drepper + + * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using + bcopy if not already defined. Reported by Thomas Esken. + * bindtextdom.c: Likewise. + * l10nflist.c: Likewise. + * localealias.c: Likewise. + * textdomain.c: Likewise. + +Tue Oct 29 11:10:27 1996 Ulrich Drepper + + * Makefile.in (libdir): Change to use exec_prefix instead of + prefix. Reported by Knut-HåvardAksnes . + +Sat Aug 31 03:07:09 1996 Ulrich Drepper + + * l10nflist.c (_nl_normalize_codeset): We convert to lower case, + so don't prepend uppercase `ISO' for only numeric arg. + +Fri Jul 19 00:15:46 1996 Ulrich Drepper + + * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after + definition of _GNU_SOURCE. Patch by Roland McGrath. + + * Makefile.in (uninstall): Fix another bug with `for' loop and + empty arguments. Patch by Jim Meyering. Correct name os + uninstalled files: no intl- prefix anymore. + + * Makefile.in (install-data): Again work around shells which + cannot handle mpty for list. Reported by Jim Meyering. + +Sat Jul 13 18:11:35 1996 Ulrich Drepper + + * Makefile.in (install): Split goal. Now depend on install-exec + and install-data. + (install-exec, install-data): New goals. Created from former + install goal. + Reported by Karl Berry. + +Sat Jun 22 04:58:14 1996 Ulrich Drepper + + * Makefile.in (MKINSTALLDIRS): New variable. Path to + mkinstalldirs script. + (install): use MKINSTALLDIRS variable or if the script is not present + try to find it in the $top_scrdir). + +Wed Jun 19 02:56:56 1996 Ulrich Drepper + + * l10nflist.c: Linux libc *partly* includes the argz_* functions. + Grr. Work around by renaming the static version and use macros + for renaming. + +Tue Jun 18 20:11:17 1996 Ulrich Drepper + + * l10nflist.c: Correct presence test macros of __argz_* functions. + + * l10nflist.c: Include based on test of it instead when + __argz_* functions are available. + Reported by Andreas Schwab. + +Thu Jun 13 15:17:44 1996 Ulrich Drepper + + * explodename.c, l10nflist.c: Define NULL for dumb systems. + +Tue Jun 11 17:05:13 1996 Ulrich Drepper + + * intlh.inst.in, libgettext.h (dcgettext): Rename local variable + result to __result to prevent name clash. + + * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to + get prototype for stpcpy and strcasecmp. + + * intlh.inst.in, libgettext.h: Move declaration of + `_nl_msg_cat_cntr' outside __extension__ block to prevent warning + from gcc's -Wnested-extern option. + +Fri Jun 7 01:58:00 1996 Ulrich Drepper + + * Makefile.in (install): Remove comment. + +Thu Jun 6 17:28:17 1996 Ulrich Drepper + + * Makefile.in (install): Work around for another Buglix stupidity. + Always use an `else' close for `if's. Reported by Nelson Beebe. + + * Makefile.in (intlh.inst): Correct typo in phony rule. + Reported by Nelson Beebe. + +Thu Jun 6 01:49:52 1996 Ulrich Drepper + + * dcgettext.c (read_alias_file): Rename variable alloca_list to + block_list as the macro calls assume. + Patch by Eric Backus. + + * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using + malloc. + (read_alias_file): Rename varriabe alloca_list to block_list as the + macro calls assume. + Patch by Eric Backus. + + * l10nflist.c: Correct conditional for inclusion. + Reported by Roland McGrath. + + * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not + all-@USE_NLS@. + + * Makefile.in (install): intlh.inst comes from local dir, not + $(srcdir). + + * Makefile.in (intlh.inst): Special handling of this goal. If + used in gettext, this is really a rul to construct this file. If + used in any other package it is defined as a .PHONY rule with + empty body. + + * finddomain.c: Extract locale file information handling into + l10nfile.c. Rename local stpcpy__ function to stpcpy. + + * dcgettext.c (stpcpy): Add local definition. + + * l10nflist.c: Solve some portability problems. Patches partly by + Thomas Esken. Add local definition of stpcpy. + +Tue Jun 4 02:47:49 1996 Ulrich Drepper + + * intlh.inst.in: Don't depend including on + HAVE_LOCALE_H. Instead configure must rewrite this fiile + depending on the result of the configure run. + + * Makefile.in (install): libintl.inst is now called intlh.inst. + Add rules for updating intlh.inst from intlh.inst.in. + + * libintl.inst: Renamed to intlh.inst.in. + + * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 + because gcc has __buitlin_alloca. + Reported by Roland McGrath. + +Mon Jun 3 00:32:16 1996 Ulrich Drepper + + * Makefile.in (installcheck): New goal to fulfill needs of + automake's distcheck. + + * Makefile.in (install): Reorder commands so that VERSION is + found. + + * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in + @datadir@/gettext. + (COMSRCS): Add l10nfile.c. + (OBJECTS): Add l10nfile.o. + (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). + (DISTFILE.gettext): Remove $(DISTFILES.common). + (all-gettext): Remove goal. + (install): If $(PACKAGE) = gettext install, otherwose do nothing. No + package but gettext itself should install libintl.h + headers. + (dist): Extend goal to work for gettext, too. + (dist-gettext): Remove goal. + + * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. + +Sun Jun 2 17:33:06 1996 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Parameter is now comes from + find_l10nfile. + +Sat Jun 1 02:23:03 1996 Ulrich Drepper + + * l10nflist.c (__argz_next): Add definition. + + * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca + code. Use new l10nfile handling. + + * localealias.c [!HAVE_ALLOCA]: Add code for handling missing + alloca code. + + * l10nflist.c: Initial revision. + +Tue Apr 2 18:51:18 1996 Ulrich Drepper + + * Makefile.in (all-gettext): New goal. Same as all-yes. + +Thu Mar 28 23:01:22 1996 Karl Eichwalder + + * Makefile.in (gettextsrcdir): Define using @datadir@. + +Tue Mar 26 12:39:14 1996 Ulrich Drepper + + * finddomain.c: Include . Reported by Roland McGrath. + +Sat Mar 23 02:00:35 1996 Ulrich Drepper + + * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing + with external declaration. + +Sat Mar 2 00:47:09 1996 Ulrich Drepper + + * Makefile.in (all-no): Rename from all_no. + +Sat Feb 17 00:25:59 1996 Ulrich Drepper + + * gettextP.h [loaded_domain]: Array `successor' must now contain up + to 63 elements (because of codeset name normalization). + + * finddomain.c: Implement codeset name normalization. + +Thu Feb 15 04:39:09 1996 Ulrich Drepper + + * Makefile.in (all): Define to `all-@USE_NLS@'. + (all-yes, all_no): New goals. `all-no' is noop, `all-yes' + is former all. + +Mon Jan 15 21:46:01 1996 Howard Gayle + + * localealias.c (alias_compare): Increment string pointers in loop + of strcasecmp replacement. + +Fri Dec 29 21:16:34 1995 Ulrich Drepper + + * Makefile.in (install-src): Who commented this goal out ? :-) + +Fri Dec 29 15:08:16 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls + should not effect it because a missing catalog is no error. + Reported by Harald Knig . + +Tue Dec 19 22:09:13 1995 Ulrich Drepper + + * Makefile.in (Makefile): Explicitly use $(SHELL) for running + shell scripts. + +Fri Dec 15 17:34:59 1995 Andreas Schwab + + * Makefile.in (install-src): Only install library and header when + we use the own implementation. Don't do it when using the + system's gettext or catgets functions. + + * dcgettext.c (find_msg): Must not swap domain->hash_size here. + +Sat Dec 9 16:24:37 1995 Ulrich Drepper + + * localealias.c, libintl.inst, libgettext.h, hash-string.h, + gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: + Use PARAMS instead of __P. Suggested by Roland McGrath. + +Tue Dec 5 11:39:14 1995 Larry Schwimmer + + * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if + !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. + +Mon Dec 4 15:42:07 1995 Ulrich Drepper + + * Makefile.in (install-src): + Install libintl.inst instead of libintl.h.install. + +Sat Dec 2 22:51:38 1995 Marcus Daniels + + * cat-compat.c (textdomain): + Reverse order in which files are tried you load. First + try local file, when this failed absolute path. + +Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe + + * cat-compat.c (bindtextdomain): Add missing { }. + +Sun Nov 26 18:21:41 1995 Ulrich Drepper + + * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. + + * Makefile.in: + Add dummy `all' and `dvi' goals. Reported by Tom Tromey. + +Sat Nov 25 16:12:01 1995 Franc,ois Pinard + + * hash-string.h: Capitalize arguments of macros. + +Sat Nov 25 12:01:36 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Prevent files names longer than 13 + characters. libintl.h.glibc->libintl.glibc, + libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. + +Sat Nov 25 11:31:12 1995 Eric Backus + + * dcgettext.c: Fix bug in preprocessor conditionals. + +Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe + + * libgettext.h: Solaris cc does not understand + #if !SYMBOL1 && !SYMBOL2. Sad but true. + +Thu Nov 23 16:22:14 1995 Ulrich Drepper + + * hash-string.h (hash_string): + Fix for machine with >32 bit `unsigned long's. + + * dcgettext.c (DCGETTEXT): + Fix horrible bug in loop for alternative translation. + +Thu Nov 23 01:45:29 1995 Ulrich Drepper + + * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: + Some further simplifications in message number generation. + +Mon Nov 20 21:08:43 1995 Ulrich Drepper + + * libintl.h.glibc: Use __const instead of const in prototypes. + + * Makefile.in (install-src): + Install libintl.h.install instead of libintl.h. This + is a stripped-down version. Suggested by Peter Miller. + + * libintl.h.install, libintl.h.glibc: Initial revision. + + * localealias.c (_nl_expand_alias, read_alias_file): + Protect prototypes in type casts by __P. + +Tue Nov 14 16:43:58 1995 Ulrich Drepper + + * hash-string.h: Correct prototype for hash_string. + +Sun Nov 12 12:42:30 1995 Ulrich Drepper + + * hash-string.h (hash_string): Add prototype. + + * gettextP.h: Fix copyright. + (SWAP): Add prototype. + +Wed Nov 8 22:56:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): Forgot sizeof. + Avoid calling *printf function. This introduces a big overhead. + Patch by Roland McGrath. + +Tue Nov 7 14:21:08 1995 Ulrich Drepper + + * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. + + * finddomain.c (stpcpy): + Define substitution function local. The macro was to flaky. + + * cat-compat.c: Fix typo. + + * xopen-msg.sed, linux-msg.sed: + While bringing message number to right place only accept digits. + + * linux-msg.sed, xopen-msg.sed: Now that the counter does not have + leading 0s we don't need to remove them. Reported by Marcus + Daniels. + + * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in + dependency. Reported by Marcus Daniels. + + * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. + Generally cleanup using #if instead of #ifndef. + + * Makefile.in: Correct typos in comment. By Franc,ois Pinard. + +Mon Nov 6 00:27:02 1995 Ulrich Drepper + + * Makefile.in (install-src): Don't install libintl.h and libintl.a + if we use an available gettext implementation. + +Sun Nov 5 22:02:08 1995 Ulrich Drepper + + * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported + by Franc,ois Pinard. + + * libgettext.h: Use #if instead of #ifdef/#ifndef. + + * finddomain.c: + Comments describing what has to be done should start with FIXME. + +Sun Nov 5 19:38:01 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. + DISTFILES.common names the files common to both dist goals. + DISTFILES.gettext are the files only distributed in GNU gettext. + +Sun Nov 5 17:32:54 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Correct searching in derived locales. + This was necessary since a change in _nl_find_msg several weeks + ago. I really don't know this is still not fixed. + +Sun Nov 5 12:43:12 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This + might mark a special condition. + + * finddomain.c (make_entry_rec): Don't make illegal entry as decided. + + * Makefile.in (dist): Suppress error message when ln failed. + Get files from $(srcdir) explicitly. + + * libgettext.h (gettext_const): Rename to gettext_noop. + +Fri Nov 3 07:36:50 1995 Ulrich Drepper + + * finddomain.c (make_entry_rec): + Protect against wrong locale names by testing mask. + + * libgettext.h (gettext_const): Add macro definition. + Capitalize macro arguments. + +Thu Nov 2 23:15:51 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Test for pointer != NULL before accessing value. + Reported by Tom Tromey. + + * gettext.c (NULL): + Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. + +Mon Oct 30 21:28:52 1995 Ulrich Drepper + + * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. + +Sat Oct 28 23:20:47 1995 Ulrich Drepper + + * libgettext.h: Disable dcgettext optimization for Solaris 2.3. + + * localealias.c (alias_compare): + Peter Miller reported that tolower in some systems is + even dumber than I thought. Protect call by `isupper'. + +Fri Oct 27 22:22:51 1995 Ulrich Drepper + + * Makefile.in (libdir, includedir): New variables. + (install-src): Install libintl.a and libintl.h in correct dirs. + +Fri Oct 27 22:07:29 1995 Ulrich Drepper + + * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. + + * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. + + * localealias.c: + Fix typo and superflous test. Reported by Christian von Roques. + +Fri Oct 6 11:52:05 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Correct some remainder from the pre-CEN syntax. Now + we don't have a constant number of successors anymore. + +Wed Sep 27 21:41:13 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Add libintl.h.glibc. + + * Makefile.in (dist-libc): Add goal for packing sources for glibc. + (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. + + * loadmsgcat.c: Forget to continue #if line. + + * localealias.c: + [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name + space clean. + + * dcgettext.c, finddomain.c: Better comment to last change. + + * loadmsgcat.c: + [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to + __fstat, __open, __close, __read, __mmap, and __munmap resp + to keep ANSI C name space clean. + + * finddomain.c: + [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. + + * dcgettext.c: + [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to + keep ANSI C name space clean. + + * libgettext.h: + Include sys/types.h for those old SysV systems out there. + Reported by Francesco Potorti`. + + * loadmsgcat.c (use_mmap): Define if compiled for glibc. + + * bindtextdom.c: Include all those standard headers + unconditionally if _LIBC is defined. + + * finddomain.c: Fix 2 times defiend -> defined. + + * textdomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. + + * gettext.c: + Include libintl.h instead of libgettext.h when compiling for glibc. + Get NULL from stddef.h if we compile for glibc. + + * finddomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * dcgettext.c: Include all those standard headers unconditionally + if _LIBC is defined. + + * dgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. + + * dcgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. + + * bindtextdom.c: + If compiled in glibc include libintl.h instead of libgettext.h. + +Mon Sep 25 22:23:06 1995 Ulrich Drepper + + * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. + Reported by Marcus Daniels. + + * cat-compat.c (bindtextdomain): + String used in putenv must not be recycled. + Reported by Marcus Daniels. + + * libgettext.h (__USE_GNU_GETTEXT): + Additional symbol to signal that we use GNU gettext + library. + + * cat-compat.c (bindtextdomain): + Fix bug with the strange stpcpy replacement. + Reported by Nelson Beebe. + +Sat Sep 23 08:23:51 1995 Ulrich Drepper + + * cat-compat.c: Include for stpcpy prototype. + + * localealias.c (read_alias_file): + While expand strdup code temporary variable `cp' hided + higher level variable with same name. Rename to `tp'. + + * textdomain.c (textdomain): + Avoid warning by using temporary variable in strdup code. + + * finddomain.c (_nl_find_domain): Remove unused variable `application'. + +Thu Sep 21 15:51:44 1995 Ulrich Drepper + + * localealias.c (alias_compare): + Use strcasecmp() only if available. Else use + implementation in place. + + * intl-compat.c: + Wrapper functions now call *__ functions instead of __*. + + * libgettext.h: Declare prototypes for *__ functions instead for __*. + + * cat-compat.c, loadmsgcat.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + + * bindtextdom.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Rename to bindtextdomain__ if not used in GNU C Library. + + * dgettext.c: + Rename function to dgettext__ if not used in GNU C Library. + + * gettext.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Functions now called gettext__ if not used in GNU C Library. + + * dcgettext.c, localealias.c, textdomain.c, finddomain.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + +Sun Sep 17 23:14:49 1995 Ulrich Drepper + + * finddomain.c: Correct some bugs in handling of CEN standard + locale definitions. + +Thu Sep 7 01:49:28 1995 Ulrich Drepper + + * finddomain.c: Implement CEN syntax. + + * gettextP.h (loaded_domain): Extend number of successors to 31. + +Sat Aug 19 19:25:29 1995 Ulrich Drepper + + * Makefile.in (aliaspath): Remove path to X11 locale dir. + + * Makefile.in: Make install-src depend on install. This helps + gettext to install the sources and other packages can use the + install goal. + +Sat Aug 19 15:19:33 1995 Ulrich Drepper + + * Makefile.in (uninstall): Remove stuff installed by install-src. + +Tue Aug 15 13:13:53 1995 Ulrich Drepper + + * VERSION.in: Initial revision. + + * Makefile.in (DISTFILES): + Add VERSION file. This is not necessary for gettext, but + for other packages using this library. + +Tue Aug 15 06:16:44 1995 Ulrich Drepper + + * gettextP.h (_nl_find_domain): + New prototype after changing search strategy. + + * finddomain.c (_nl_find_domain): + We now try only to find a specified catalog. Fall back to other + catalogs listed in the locale list is now done in __dcgettext. + + * dcgettext.c (__dcgettext): + Now we provide message fall back even to different languages. + I.e. if a message is not available in one language all the other + in the locale list a tried. Formerly fall back was only possible + within one language. Implemented by moving one loop from + _nl_find_domain to here. + +Mon Aug 14 23:45:50 1995 Ulrich Drepper + + * Makefile.in (gettextsrcdir): + Directory where source of GNU gettext library are made + available. + (INSTALL, INSTALL_DATA): Programs used for installing sources. + (gettext-src): New. Rule to install GNU gettext sources for use in + gettextize shell script. + +Sun Aug 13 14:40:48 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): + Use mmap for loading only when munmap function is + also available. + + * Makefile.in (install): Depend on `all' goal. + +Wed Aug 9 11:04:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): + Do not overwrite '\n' when terminating alias value string. + + * localealias.c (read_alias_file): + Handle long lines. Ignore the rest not fitting in + the buffer after the initial `fgets' call. + +Wed Aug 9 00:54:29 1995 Ulrich Drepper + + * gettextP.h (_nl_load_domain): + Add prototype, replacing prototype for _nl_load_msg_cat. + + * finddomain.c (_nl_find_domain): + Remove unneeded variable filename and filename_len. + (expand_alias): Remove prototype because functions does not + exist anymore. + + * localealias.c (read_alias_file): + Change type of fname_len parameter to int. + (xmalloc): Add prototype. + + * loadmsgcat.c: Better prototypes for xmalloc. + +Tue Aug 8 22:30:39 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Allow alias name to be constructed from the four components. + + * Makefile.in (aliaspath): New variable. Set to preliminary value. + (SOURCES): Add localealias.c. + (OBJECTS): Add localealias.o. + + * gettextP.h: Add prototype for _nl_expand_alias. + + * finddomain.c: Aliasing handled in intl/localealias.c. + + * localealias.c: Aliasing for locale names. + + * bindtextdom.c: Better prototypes for xmalloc and xstrdup. + +Mon Aug 7 23:47:42 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): gettext.perl is now found in misc/. + + * cat-compat.c (bindtextdomain): + Correct implementation. dirname parameter was not used. + Reported by Marcus Daniels. + + * gettextP.h (loaded_domain): + New fields `successor' and `decided' for oo, lazy + message handling implementation. + + * dcgettext.c: + Adopt for oo, lazy message handliing. + Now we can inherit translations from less specific locales. + (find_msg): New function. + + * loadmsgcat.c, finddomain.c: + Complete rewrite. Implement oo, lazy message handling :-). + We now have an additional environment variable `LANGUAGE' with + a higher priority than LC_ALL for the LC_MESSAGE locale. + Here we can set a colon separated list of specifications each + of the form `language[_territory[.codeset]][@modifier]'. + +Sat Aug 5 09:55:42 1995 Ulrich Drepper + + * finddomain.c (unistd.h): + Include to get _PC_PATH_MAX defined on system having it. + +Fri Aug 4 22:42:00 1995 Ulrich Drepper + + * finddomain.c (stpcpy): Include prototype. + + * Makefile.in (dist): Remove `copying instead' message. + +Wed Aug 2 18:52:03 1995 Ulrich Drepper + + * Makefile.in (ID, TAGS): Do not use $^. + +Tue Aug 1 20:07:11 1995 Ulrich Drepper + + * Makefile.in (TAGS, ID): Use $^ as command argument. + (TAGS): Give etags -o option t write to current directory, + not $(srcdir). + (ID): Use $(srcdir) instead os $(top_srcdir)/src. + (distclean): Remove ID. + +Sun Jul 30 11:51:46 1995 Ulrich Drepper + + * Makefile.in (gnulocaledir): + New variable, always using share/ for data directory. + (DEFS): Add GNULOCALEDIR, used in finddomain.c. + + * finddomain.c (_nl_default_dirname): + Set to GNULOCALEDIR, because it always has to point + to the directory where GNU gettext Library writes it to. + + * intl-compat.c (textdomain, bindtextdomain): + Undefine macros before function definition. + +Sat Jul 22 01:10:02 1995 Ulrich Drepper + + * libgettext.h (_LIBINTL_H): + Protect definition in case where this file is included as + libgettext.h on Solaris machines. Add comment about this. + +Wed Jul 19 02:36:42 1995 Ulrich Drepper + + * intl-compat.c (textdomain): Correct typo. + +Wed Jul 19 01:51:35 1995 Ulrich Drepper + + * dcgettext.c (dcgettext): Function now called __dcgettext. + + * dgettext.c (dgettext): Now called __dgettext and calls + __dcgettext. + + * gettext.c (gettext): + Function now called __gettext and calls __dgettext. + + * textdomain.c (textdomain): Function now called __textdomain. + + * bindtextdom.c (bindtextdomain): Function now called + __bindtextdomain. + + * intl-compat.c: Initial revision. + + * Makefile.in (SOURCES): Add intl-compat.c. + (OBJECTS): We always compile the GNU gettext library functions. + OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, + and intl-compat.o. + (GETTOBJS): Contains now only intl-compat.o. + + * libgettext.h: + Re-include protection matches dualistic character of libgettext.h. + For all functions in GNU gettext library define __ counter part. + + * finddomain.c (strchr): Define as index if not found in C library. + (_nl_find_domain): For relative paths paste / in between. + +Tue Jul 18 16:37:45 1995 Ulrich Drepper + + * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. + + * xopen-msg.sed: Fix bug with `msgstr ""' lines. + A little bit better comments. + +Tue Jul 18 01:18:27 1995 Ulrich Drepper + + * Makefile.in: + po-mode.el, makelinks, combine-sh are now found in ../misc. + + * po-mode.el, makelinks, combine-sh, elisp-comp: + Moved to ../misc/. + + * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. + +Sun Jul 16 22:33:02 1995 Ulrich Drepper + + * Makefile.in (INSTALL, INSTALL_DATA): New variables. + (install-data, uninstall): Install/uninstall .elc file. + + * po-mode.el (Installation comment): + Add .pox as possible extension of .po files. + +Sun Jul 16 13:23:27 1995 Ulrich Drepper + + * elisp-comp: Complete new version by Franc,ois: This does not + fail when not compiling in the source directory. + +Sun Jul 16 00:12:17 1995 Ulrich Drepper + + * Makefile.in (../po/cat-id-tbl.o): + Use $(MAKE) instead of make for recursive make. + + * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. + (install-exec): Add missing dummy goal. + (install-data, uninstall): @ in multi-line shell command at + beginning, not in front of echo. Reported by Eric Backus. + +Sat Jul 15 00:21:28 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): + Rename libgettext.perl to gettext.perl to fit in 14 chars + file systems. + + * gettext.perl: + Rename to gettext.perl to fit in 14 chars file systems. + +Thu Jul 13 23:17:20 1995 Ulrich Drepper + + * cat-compat.c: If !STDC_HEADERS try to include malloc.h. + +Thu Jul 13 20:55:02 1995 Ulrich Drepper + + * po2tbl.sed.in: Pretty printing. + + * linux-msg.sed, xopen-msg.sed: + Correct bugs with handling substitute flags in branches. + + * hash-string.h (hash_string): + Old K&R compilers don't under stand `unsigned char'. + + * gettext.h (nls_uint32): + Some old K&R compilers (eg HP) don't understand `unsigned int'. + + * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. + +Thu Jul 13 01:34:33 1995 Ulrich Drepper + + * Makefile.in (ELCFILES): New variable. + (DISTFILES): Add elisp-comp. + Add implicit rule for .el -> .elc compilation. + (install-data): install $ELCFILES + (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. + + * elisp-comp: Initial revision + +Wed Jul 12 16:14:52 1995 Ulrich Drepper + + * Makefile.in: + cat-id-tbl.c is now found in po/. This enables us to use an identical + intl/ directory in all packages. + + * dcgettext.c (dcgettext): hashing does not work for table size <= 2. + + * textdomain.c: fix typo (#if def -> #if defined) + +Tue Jul 11 18:44:43 1995 Ulrich Drepper + + * Makefile.in (stamp-cat-id): use top_srcdir to address source files + (DISTFILES,distclean): move tupdate.perl to src/ + + * po-to-tbl.sed.in: + add additional jump to clear change flag to recognize multiline strings + +Tue Jul 11 01:32:50 1995 Ulrich Drepper + + * textdomain.c: Protect inclusion of stdlib.h and string.h. + + * loadmsgcat.c: Protect inclusion of stdlib.h. + + * libgettext.h: Protect inclusion of locale.h. + Allow use in C++ programs. + Define NULL is not happened already. + + * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of + po-to-tbl.sed. + (distclean): remove po-to-tbl.sed and tupdate.perl. + + * tupdate.perl.in: Substitute Perl path even in exec line. + Don't include entries without translation from old .po file. + +Tue Jul 4 00:41:51 1995 Ulrich Drepper + + * tupdate.perl.in: use "Updated: " in msgid "". + + * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). + Define getenv if !__STDC__. + + * bindtextdom.c: Protect stdlib.h and string.h inclusion. + Define free if !__STDC__. + + * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + Define free if !__STDC__. + + * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + +Mon Jul 3 23:56:30 1995 Ulrich Drepper + + * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. + Remove unneeded $(srcdir) from Makefile.in dependency. + + * makelinks: Add copyright and short description. + + * po-mode.el: Last version for 0.7. + + * tupdate.perl.in: Fix die message. + + * dcgettext.c: Protect include of string.h. + + * gettext.c: Protect include of stdlib.h and further tries to get NULL. + + * finddomain.c: Some corrections in includes. + + * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. + + * po-to-tbl.sed: Adopt for new .po file format. + + * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. + +Sun Jul 2 23:55:03 1995 Ulrich Drepper + + * tupdate.perl.in: Complete rewrite for new .po file format. + +Sun Jul 2 02:06:50 1995 Ulrich Drepper + + * First official release. This directory contains all the code + needed to internationalize own packages. It provides functions + which allow to use the X/Open catgets function with an interface + like the Uniforum gettext function. For system which does not + have neither of those a complete implementation is provided. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile new file mode 100644 index 0000000000..37585e769e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile @@ -0,0 +1,214 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PACKAGE = gsmlib +VERSION = 1.10 + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +top_builddir = .. + + +prefix = /usr +exec_prefix = ${prefix} +transform = s,x,x, +libdir = $(exec_prefix)/lib +includedir = $(prefix)/include +datadir = $(prefix)/share +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = ${prefix}/share/gettext/intl +aliaspath = $(localedir):. +subdir = intl + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +MKINSTALLDIRS = $(top_builddir)/scripts/mkinstalldirs + +l = @l@ + +AR = ar +CC = i486-linux-gnu-gcc +LIBTOOL = $(SHELL) $(top_builddir)/libtool +RANLIB = ranlib + +DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ +-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" -DHAVE_CONFIG_H +CPPFLAGS = +CFLAGS = -D_REENTRANT -g -O2 +LDFLAGS = + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgettext.h loadinfo.h +COMHDRS = gettext.h gettextP.h hash-string.h +SOURCES = $(COMSRCS) intl-compat.c cat-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ +explodename.c +OBJECTS = bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ +finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ +explodename.$lo +CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo +GETTOBJS = intl-compat.$lo +DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ +xopen-msg.sed $(HEADERS) $(SOURCES) +DISTFILES.normal = VERSION +DISTFILES.gettext = libintl.glibc intlh.inst.in + +.SUFFIXES: +.SUFFIXES: .c .o .lo +.c.o: + $(COMPILE) $< +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) $< + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib + +all: all-no + +all-yes: libintl.$la intlh.inst +all-no: + +libintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ + -version-info 1:0 -rpath $(libdir) + +../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot + cd ../po && $(MAKE) cat-id-tbl.$lo + +check: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the gettext() function in its C library or in a +# separate library or use the catgets interface. A special case is +# where configure found a previously installed GNU gettext library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if test "$(PACKAGE)" = "gettext" \ + && test '' = '$(GETTOBJS)'; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(libdir) $(includedir); \ + else \ + $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ + fi; \ + $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ + $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext"; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + rm -f $(gettextsrcdir)/$$file; \ + done + +info dvi: + +$(OBJECTS): ../gsm_config.h libgettext.h +bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h +dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.o *.lo core core.* + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS po2msg.sed po2tbl.sed + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile $(DISTFILES) + if test "$(PACKAGE)" = gettext; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + for file in $(DISTFILES.common) $$additional; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +dist-libc: + tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc + +Makefile: Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# The dependency for intlh.inst is different in gettext and all other +# packages. Because we cannot you GNU make features we have to solve +# the problem while rewriting Makefile.in. +@GT_YES@intlh.inst: intlh.inst.in ../config.status +@GT_YES@ cd .. \ +@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ +@GT_YES@ $(SHELL) ./config.status +@GT_NO@.PHONY: intlh.inst +@GT_NO@intlh.inst: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in new file mode 100644 index 0000000000..fc1e9e3ff1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/Makefile.in @@ -0,0 +1,214 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = $(exec_prefix)/lib +includedir = $(prefix)/include +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = @datadir@/gettext/intl +aliaspath = $(localedir):. +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ + +l = @l@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ + +DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ +-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgettext.h loadinfo.h +COMHDRS = gettext.h gettextP.h hash-string.h +SOURCES = $(COMSRCS) intl-compat.c cat-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ +explodename.c +OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ +finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ +explodename.$lo +CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo +GETTOBJS = intl-compat.$lo +DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ +xopen-msg.sed $(HEADERS) $(SOURCES) +DISTFILES.normal = VERSION +DISTFILES.gettext = libintl.glibc intlh.inst.in + +.SUFFIXES: +.SUFFIXES: .c .o .lo +.c.o: + $(COMPILE) $< +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) $< + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib + +all: all-@USE_INCLUDED_LIBINTL@ + +all-yes: libintl.$la intlh.inst +all-no: + +libintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ + -version-info 1:0 -rpath $(libdir) + +../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot + cd ../po && $(MAKE) cat-id-tbl.$lo + +check: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the gettext() function in its C library or in a +# separate library or use the catgets interface. A special case is +# where configure found a previously installed GNU gettext library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(libdir) $(includedir); \ + else \ + $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ + fi; \ + $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ + $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext"; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + rm -f $(gettextsrcdir)/$$file; \ + done + +info dvi: + +$(OBJECTS): ../gsm_config.h libgettext.h +bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h +dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.o *.lo core core.* + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS po2msg.sed po2tbl.sed + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile $(DISTFILES) + if test "$(PACKAGE)" = gettext; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + for file in $(DISTFILES.common) $$additional; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +dist-libc: + tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc + +Makefile: Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# The dependency for intlh.inst is different in gettext and all other +# packages. Because we cannot you GNU make features we have to solve +# the problem while rewriting Makefile.in. +@GT_YES@intlh.inst: intlh.inst.in ../config.status +@GT_YES@ cd .. \ +@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ +@GT_YES@ $(SHELL) ./config.status +@GT_NO@.PHONY: intlh.inst +@GT_NO@intlh.inst: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION new file mode 100644 index 0000000000..ee66b0612b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.10.35 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c new file mode 100644 index 0000000000..42b11aaddb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/bindtextdom.c @@ -0,0 +1,203 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN bindtextdomain__ +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + struct binding *binding; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + return NULL; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (dirname == NULL) + /* The current binding has be to returned. */ + return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; + + if (binding != NULL) + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + if (strcmp (dirname, binding->dirname) != 0) + { + char *new_dirname; + + if (strcmp (dirname, _nl_default_dirname) == 0) + new_dirname = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + new_dirname = strdup (dirname); + if (new_dirname == NULL) + return NULL; +#else + size_t len = strlen (dirname) + 1; + new_dirname = (char *) malloc (len); + if (new_dirname == NULL) + return NULL; + + memcpy (new_dirname, dirname, len); +#endif + } + + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = new_dirname; + } + } + else + { + /* We have to create a new binding. */ +#if !defined _LIBC && !defined HAVE_STRDUP + size_t len; +#endif + struct binding *new_binding = + (struct binding *) malloc (sizeof (*new_binding)); + + if (new_binding == NULL) + return NULL; + +#if defined _LIBC || defined HAVE_STRDUP + new_binding->domainname = strdup (domainname); + if (new_binding->domainname == NULL) + return NULL; +#else + len = strlen (domainname) + 1; + new_binding->domainname = (char *) malloc (len); + if (new_binding->domainname == NULL) + return NULL; + memcpy (new_binding->domainname, domainname, len); +#endif + + if (strcmp (dirname, _nl_default_dirname) == 0) + new_binding->dirname = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + new_binding->dirname = strdup (dirname); + if (new_binding->dirname == NULL) + return NULL; +#else + len = strlen (dirname) + 1; + new_binding->dirname = (char *) malloc (len); + if (new_binding->dirname == NULL) + return NULL; + memcpy (new_binding->dirname, dirname, len); +#endif + } + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + binding = new_binding; + } + + return binding->dirname; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c new file mode 100644 index 0000000000..4eb0e068f1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/cat-compat.c @@ -0,0 +1,262 @@ +/* Compatibility code for gettext-using-catgets interface. + Copyright (C) 1995, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef STDC_HEADERS +# include +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# endif +#endif + +#ifdef HAVE_NL_TYPES_H +# include +#endif + +#include "libgettext.h" + +/* @@ end of prolog @@ */ + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. And even worse: POSIX + defines this not at all. So we can use this feature only on selected + system (e.g. those using GNU C Library). */ +#ifdef _LIBC +# define HAVE_LOCALE_NULL +#endif + +/* The catalog descriptor. */ +static nl_catd catalog = (nl_catd) -1; + +/* Name of the default catalog. */ +static const char default_catalog_name[] = "messages"; + +/* Name of currently used catalog. */ +static const char *catalog_name = default_catalog_name; + +/* Get ID for given string. If not found return -1. */ +static int msg_to_cat_id PARAMS ((const char *msg)); + +/* Substitution for systems lacking this function in their C library. */ +#if !_LIBC && !HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +#endif + + +/* Set currently used domain/catalog. */ +char * +textdomain (domainname) + const char *domainname; +{ + nl_catd new_catalog; + char *new_name; + size_t new_name_len; + char *lang; + +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \ + && defined HAVE_LOCALE_NULL + lang = setlocale (LC_MESSAGES, NULL); +#else + lang = getenv ("LC_ALL"); + if (lang == NULL || lang[0] == '\0') + { + lang = getenv ("LC_MESSAGES"); + if (lang == NULL || lang[0] == '\0') + lang = getenv ("LANG"); + } +#endif + if (lang == NULL || lang[0] == '\0') + lang = "C"; + + /* See whether name of currently used domain is asked. */ + if (domainname == NULL) + return (char *) catalog_name; + + if (domainname[0] == '\0') + domainname = default_catalog_name; + + /* Compute length of added path element. */ + new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) + + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 + + sizeof (".cat"); + + new_name = (char *) malloc (new_name_len); + if (new_name == NULL) + return NULL; + + strcpy (new_name, PACKAGE); + new_catalog = catopen (new_name, 0); + + if (new_catalog == (nl_catd) -1) + { + /* NLSPATH search didn't work, try absolute path */ + sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, + PACKAGE); + new_catalog = catopen (new_name, 0); + + if (new_catalog == (nl_catd) -1) + { + free (new_name); + return (char *) catalog_name; + } + } + + /* Close old catalog. */ + if (catalog != (nl_catd) -1) + catclose (catalog); + if (catalog_name != default_catalog_name) + free ((char *) catalog_name); + + catalog = new_catalog; + catalog_name = new_name; + + return (char *) catalog_name; +} + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ +#if HAVE_SETENV || HAVE_PUTENV + char *old_val, *new_val, *cp; + size_t new_val_len; + + /* This does not make much sense here but to be compatible do it. */ + if (domainname == NULL) + return NULL; + + /* Compute length of added path element. If we use setenv we don't need + the first byts for NLSPATH=, but why complicate the code for this + peanuts. */ + new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) + + sizeof ("/%L/LC_MESSAGES/%N.cat"); + + old_val = getenv ("NLSPATH"); + if (old_val == NULL || old_val[0] == '\0') + { + old_val = NULL; + new_val_len += 1 + sizeof (LOCALEDIR) - 1 + + sizeof ("/%L/LC_MESSAGES/%N.cat"); + } + else + new_val_len += strlen (old_val); + + new_val = (char *) malloc (new_val_len); + if (new_val == NULL) + return NULL; + +# if HAVE_SETENV + cp = new_val; +# else + cp = stpcpy (new_val, "NLSPATH="); +# endif + + cp = stpcpy (cp, dirname); + cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); + + if (old_val == NULL) + { +# if __STDC__ + stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); +# else + + cp = stpcpy (cp, LOCALEDIR); + stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); +# endif + } + else + stpcpy (cp, old_val); + +# if HAVE_SETENV + setenv ("NLSPATH", new_val, 1); + free (new_val); +# else + putenv (new_val); + /* Do *not* free the environment entry we just entered. It is used + from now on. */ +# endif + +#endif + + return (char *) domainname; +} + +#undef gettext +char * +gettext (msg) + const char *msg; +{ + int msgid; + + if (msg == NULL || catalog == (nl_catd) -1) + return (char *) msg; + + /* Get the message from the catalog. We always use set number 1. + The message ID is computed by the function `msg_to_cat_id' + which works on the table generated by `po-to-tbl'. */ + msgid = msg_to_cat_id (msg); + if (msgid == -1) + return (char *) msg; + + return catgets (catalog, 1, msgid, (char *) msg); +} + +/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries + for the one equal to msg. If it is found return the ID. In case when + the string is not found return -1. */ +static int +msg_to_cat_id (msg) + const char *msg; +{ + int cnt; + + for (cnt = 0; cnt < _msg_tbl_length; ++cnt) + if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) + return _msg_tbl[cnt]._msg_number; + + return -1; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c new file mode 100644 index 0000000000..ed697f371b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dcgettext.c @@ -0,0 +1,624 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +# endif +# include +#else +# include +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif +#include "hash-string.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +char *getcwd (); +# endif +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined(PATH_MAX) && defined(_PC_PATH_MAX) +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) +# include +#endif + +#if !defined(PATH_MAX) && defined(MAXPATHLEN) +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. And even worse: POSIX + defines this not at all. So we can use this feature only on selected + system (e.g. those using GNU C Library). */ +#ifdef _LIBC +# define HAVE_LOCALE_NULL +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +const char _nl_default_dirname[] = GNULOCALEDIR; + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file, + const char *msgid)) internal_function; +static const char *category_to_name PARAMS ((int category)) internal_function; +static const char *guess_category_value PARAMS ((int category, + const char *categoryname)) + internal_function; + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +#else +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + int saved_errno = errno; + + /* If no real MSGID is given return NULL. */ + if (msgid == NULL) + return NULL; + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + defintion left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) _nl_default_dirname; + else if (binding->dirname[0] == '/') + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + + __set_errno (0); + while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) + { + path_max += PATH_INCR; + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + __set_errno (0); + } + + if (ret == NULL) + { + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return (char *) msgid; + } + + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + xdomainname = (char *) alloca (strlen (categoryname) + + strlen (domainname) + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for th translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + { + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return (char *) msgid; + } + + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname); + + if (domain != NULL) + { + retval = find_msg (domain, msgid); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = find_msg (domain->successor[cnt], msgid); + + if (retval != NULL) + break; + } + } + + if (retval != NULL) + { + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return retval; + } + } + } + /* NOTREACHED */ +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcgettext, dcgettext); +#endif + + +static char * +internal_function +find_msg (domain_file, msgid) + struct loaded_l10nfile *domain_file; + const char *msgid; +{ + size_t top, act, bottom; + struct loaded_domain *domain; + + if (domain_file->decided == 0) + _nl_load_domain (domain_file); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + /* Locate the MSGID and its translation. */ + if (domain->hash_size > 2 && domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len + && strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) == 0) + return (char *) domain->data + W (domain->must_swap, + domain->trans_tab[nstr - 1].offset); + + while (1) + { + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + + nstr = W (domain->must_swap, domain->hash_tab[idx]); + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len + && strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0) + return (char *) domain->data + + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); + } + /* NOTREACHED */ + } + + /* Now we try the default method: binary search in the sorted + array of messages. */ + bottom = 0; + top = domain->nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset)); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + break; + } + + /* If an translation is found return this. */ + return bottom >= top ? NULL : (char *) domain->data + + W (domain->must_swap, + domain->trans_tab[act].offset); +} + + +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +/* Guess value of current locale from value of the environment variables. */ +static const char * +internal_function +guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. This is a GNU extension. */ + retval = getenv ("LANGUAGE"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* `LANGUAGE' is not set. So we have to proceed with the POSIX + methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some + systems this can be done by the `setlocale' function itself. */ +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* We use C as the default domain. POSIX says this is implementation + defined. */ + return "C"; +#endif +} + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + struct binding *runp; + + for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next) + { + free (runp->domainname); + if (runp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (runp->dirname); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c new file mode 100644 index 0000000000..6525d83293 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/dgettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dgettext(3) function + Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined HAVE_LOCALE_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT __dcgettext +#else +# define DGETTEXT dgettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c new file mode 100644 index 0000000000..b80aa79ae2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/explodename.c @@ -0,0 +1,188 @@ +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +int +_nl_explode_name (name, language, modifier, territory, codeset, + normalized_codeset, special, sponsor, revision) + char *name; + const char **language; + const char **modifier; + const char **territory; + const char **codeset; + const char **normalized_codeset; + const char **special; + const char **sponsor; + const char **revision; +{ + enum { undecided, xpg, cen } syntax; + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + *special = NULL; + *sponsor = NULL; + *revision = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + *language = cp = name; + while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',') + ++cp; + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + *modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + *special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + *sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + *revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN syntax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + if (*modifier != NULL && (*modifier)[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + return mask; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c new file mode 100644 index 0000000000..9588532f3d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/finddomain.c @@ -0,0 +1,216 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (dirname, locale, domainname) + const char *dirname; + char *locale; + const char *domainname; +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *special; + const char *sponsor; + const char *revision; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,[sponsor][_revision]] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) normalized codeset + (6) territory + (7) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt]); + + if (retval->successor[cnt]->data != NULL) + break; + } + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset, &special, + &sponsor, &revision); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, special, + sponsor, revision, domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt]); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + return retval; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free (here); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c new file mode 100644 index 0000000000..c3c64bf8c5 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.c @@ -0,0 +1,70 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# ifdef STDC_HEADERS +# include /* Just for NULL. */ +# else +# ifdef HAVE_STRING_H +# include +# else +# define NULL ((void *) 0) +# endif +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DGETTEXT __dgettext +#else +# define GETTEXT gettext__ +# define DGETTEXT dgettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DGETTEXT (NULL, msgid); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h new file mode 100644 index 0000000000..3cd23d7d6a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettext.h @@ -0,0 +1,105 @@ +/* Internal header for GNU gettext internationalization functions. + Copyright (C) 1995, 1997 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 Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +#if HAVE_LIMITS_H || _LIBC +# include +#endif + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + doing that would require that the configure script compile and *run* + the resulting executable. Locally running cross-compiled executables + is usually not possible. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translation strings. */ + nls_uint32 trans_tab_offset; + /* Size of hashing table. */ + nls_uint32 hash_tab_size; + /* Offset of first hashing entry. */ + nls_uint32 hash_tab_offset; +}; + +struct string_desc +{ + /* Length of addressed string. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h new file mode 100644 index 0000000000..00c5203197 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/gettextP.h @@ -0,0 +1,89 @@ +/* Header describing internals of gettext library + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include "loadinfo.h" + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static nls_uint32 SWAP PARAMS ((nls_uint32 i)); + +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +struct loaded_domain +{ + const char *data; + int use_mmap; + size_t mmap_size; + int must_swap; + nls_uint32 nstrings; + struct string_desc *orig_tab; + struct string_desc *trans_tab; + nls_uint32 hash_size; + nls_uint32 *hash_tab; +}; + +struct binding +{ + struct binding *next; + char *domainname; + char *dirname; +}; + +struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, + char *__locale, + const char *__domainname)) + internal_function; +void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)) + internal_function; +void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) + internal_function; + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h new file mode 100644 index 0000000000..cacb38e479 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/hash-string.h @@ -0,0 +1,59 @@ +/* Implements a string hashing function. + Copyright (C) 1995, 1997 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 Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long hash_string PARAMS ((const char *__str_param)); + +static inline unsigned long +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long) *str++; + g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c new file mode 100644 index 0000000000..21ffc60c19 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/intl-compat.c @@ -0,0 +1,76 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgettext.h" + +/* @@ end of prolog @@ */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef textdomain +#undef bindtextdomain + + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return bindtextdomain__ (domainname, dirname); +} + + +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return dcgettext__ (domainname, msgid, category); +} + + +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return dgettext__ (domainname, msgid); +} + + +char * +gettext (msgid) + const char *msgid; +{ + return gettext__ (msgid); +} + + +char * +textdomain (domainname) + const char *domainname; +{ + return textdomain__ (domainname); +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c new file mode 100644 index 0000000000..174794201c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/l10nflist.c @@ -0,0 +1,411 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + + +#if defined HAVE_STRING_H || defined _LIBC +# ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +# endif +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Define function which are usually not available. */ + +#if !defined _LIBC && !defined HAVE___ARGZ_COUNT +/* Returns the number of strings in ARGZ. */ +static size_t argz_count__ PARAMS ((const char *argz, size_t len)); + +static size_t +argz_count__ (argz, len) + const char *argz; + size_t len; +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ + +#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); + +static void +argz_stringify__ (argz, len, sep) + char *argz; + size_t len; + int sep; +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char *argz_next__ PARAMS ((char *argz, size_t argz_len, + const char *entry)); + +static char * +argz_next__ (argz, argz_len, entry) + char *argz; + size_t argz_len; + const char *entry; +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static int pop PARAMS ((int x)); + +static inline int +pop (x) + int x; +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + territory, codeset, normalized_codeset, modifier, special, + sponsor, revision, filename, do_allocate) + struct loaded_l10nfile **l10nfile_list; + const char *dirlist; + size_t dirlist_len; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *filename; + int do_allocate; +{ + char *abs_filename; + struct loaded_l10nfile *last = NULL; + struct loaded_l10nfile *retval; + char *cp; + size_t entries; + int cnt; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + (((mask & XPG_MODIFIER) != 0 + || (mask & CEN_AUDIENCE) != 0) + ? strlen (modifier) + 1 : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) + 1 : 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) + ? (1 + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) + 1 : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + retval = NULL; + last = NULL; + + /* Construct file name. */ + memcpy (abs_filename, dirlist, dirlist_len); + __argz_stringify (abs_filename, dirlist_len, ':'); + cp = abs_filename + (dirlist_len - 1); + *cp++ = '/'; + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaces but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) + { + *cp++ = ','; + if ((mask & CEN_SPONSOR) != 0) + cp = stpcpy (cp, sponsor); + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + last = NULL; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + last = retval; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) + * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; + + retval->filename = abs_filename; + retval->decided = (__argz_count (dirlist, dirlist_len) != 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + if (last == NULL) + { + retval->next = *l10nfile_list; + *l10nfile_list = retval; + } + else + { + retval->next = last->next; + last->next = retval; + } + + entries = 0; + /* If the DIRLIST is a real list the RETVAL entry corresponds not to + a real file. So we have to use the DIRLIST separation mechanism + of the inner loop. */ + cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; + for (; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, + language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. */ +const char * +_nl_normalize_codeset (codeset, name_len) + const unsigned char *codeset; + size_t name_len; +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum (codeset[cnt])) + { + ++len; + + if (isalpha (codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha (codeset[cnt])) + *wp++ = tolower (codeset[cnt]); + else if (isdigit (codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h new file mode 100644 index 0000000000..3a92960ae3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/libgettext.h @@ -0,0 +1,182 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Because on some systems (e.g. Solaris) we sometimes have to include + the systems libintl.h as well as this file we have more complex + include protection above. But the systems header might perhaps also + define _LIBINTL_H and therefore we have to protect the definition here. */ + +#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H +#ifndef _LIBINTL_H +# define _LIBINTL_H 1 +#endif +#define _LIBGETTEXT_H 1 + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +#include + +#if HAVE_LOCALE_H +# include +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ || defined __cplusplus +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef NULL +# if !defined __cplusplus || defined __GNUC__ +# define NULL ((void *) 0) +# else +# define NULL (0) +# endif +#endif + +#if !HAVE_LC_MESSAGES +/* This value determines the behaviour of the gettext() and dgettext() + function. But some system does not have this defined. Define it + to a default value. */ +# define LC_MESSAGES (-1) +#endif + + +/* Declarations for gettext-using-catgets interface. Derived from + Jim Meyering's libintl.h. */ +struct _msg_ent +{ + const char *_msg; + int _msg_number; +}; + + +#if HAVE_CATGETS +/* These two variables are defined in the automatically by po-to-tbl.sed + generated file `cat-id-tbl.c'. */ +extern const struct _msg_ent _msg_tbl[]; +extern int _msg_tbl_length; +#endif + + +/* For automatical extraction of messages sometimes no real + translation is needed. Instead the string itself is the result. */ +#define gettext_noop(Str) (Str) + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext PARAMS ((const char *__msgid)); +extern char *gettext__ PARAMS ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); +extern char *dgettext__ PARAMS ((const char *__domainname, + const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, + int __category)); +extern char *dcgettext__ PARAMS ((const char *__domainname, + const char *__msgid, int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain PARAMS ((const char *__domainname)); +extern char *textdomain__ PARAMS ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *bindtextdomain__ PARAMS ((const char *__domainname, + const char *__dirname)); + +#if ENABLE_NLS + +/* Solaris 2.3 has the gettext function but dcgettext is missing. + So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 + has dcgettext. */ +# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) + +# define gettext(Msgid) \ + dgettext (NULL, Msgid) + +# define dgettext(Domainname, Msgid) \ + dcgettext (Domainname, Msgid, LC_MESSAGES) + +# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 +/* This global variable is defined in loadmsgcat.c. We need a sign, + whether a new catalog was loaded, which can be associated with all + translations. */ +extern int _nl_msg_cat_cntr; + +# define dcgettext(Domainname, Msgid, Category) \ + (__extension__ \ + ({ \ + char *__result; \ + if (__builtin_constant_p (Msgid)) \ + { \ + static char *__translation__; \ + static int __catalog_counter__; \ + if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ + { \ + __translation__ = \ + dcgettext__ (Domainname, Msgid, Category); \ + __catalog_counter__ = _nl_msg_cat_cntr; \ + } \ + __result = __translation__; \ + } \ + else \ + __result = dcgettext__ (Domainname, Msgid, Category); \ + __result; \ + })) +# endif +# endif + +#else + +# define gettext(Msgid) (Msgid) +# define dgettext(Domainname, Msgid) (Msgid) +# define dcgettext(Domainname, Msgid, Category) (Msgid) +# define textdomain(Domainname) ((char *) Domainname) +# define bindtextdomain(Domainname, Dirname) ((char *) Dirname) + +#endif + +/* @@ begin of epilog @@ */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed new file mode 100755 index 0000000000..5918e720a9 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/linux-msg.sed @@ -0,0 +1,100 @@ +# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +1 { + i\ +$set 1 # Automatically created by po2msg.sed + h + s/.*/0/ + x +} +# +# Mitch's old catalog format does not allow comments. +# +# We copy the original message as a comment into the .msg file. +# +/^msgid/ { + s/msgid[ ]*"// +# +# This does not work now with the new format. +# /"$/! { +# s/\\$// +# s/$/ ... (more lines following)"/ +# } + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p +} +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the cat-id-tbl.c file +# (with po-to-tbl) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +/^msgstr/ { + s/msgstr[ ]*"\(.*\)"/# \1/ +# Clear substitution flag. + tb +# Append the next line. + :b + N +# Look whether second part is continuation line. + s/\(.*\n\)"\(.*\)"/\1\2/ +# Yes, then branch. + ta + P + D +# Note that D includes a jump to the start!! +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ + tb +} +d diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h new file mode 100644 index 0000000000..f4ebf6d811 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadinfo.h @@ -0,0 +1,76 @@ +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_NORM_CODESET 8 +#define XPG_CODESET 16 +#define TERRITORY 32 +#define CEN_AUDIENCE 64 +#define XPG_MODIFIER 128 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset, + size_t name_len)); + +extern struct loaded_l10nfile * +_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, + const char *normalized_codeset, + const char *modifier, const char *special, + const char *sponsor, const char *revision, + const char *filename, int do_allocate)); + + +extern const char *_nl_expand_alias PARAMS ((const char *name)); + +extern int _nl_explode_name PARAMS ((char *name, const char **language, + const char **modifier, + const char **territory, + const char **codeset, + const char **normalized_codeset, + const char **special, + const char **sponsor, + const char **revision)); diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c new file mode 100644 index 0000000000..e74a2f77f5 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/loadmsgcat.c @@ -0,0 +1,222 @@ +/* Load needed message catalogs. + Copyright (C) 1995, 1996, 1997, 1998 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr = 0; + + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (domain_file) + struct loaded_l10nfile *domain_file; +{ + int fd; + size_t size; + struct stat st; + struct mo_file_header *data = (struct mo_file_header *) -1; +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + int use_mmap = 0; +#endif + struct loaded_domain *domain; + + domain_file->decided = 1; + domain_file->data = NULL; + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if (fstat (fd, &st) != 0 + || (size = (size_t) st.st_size) != st.st_size + || size < sizeof (struct mo_file_header)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (data != (struct mo_file_header *) -1) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + return; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb == -1) + { + close (fd); + return; + } + + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) + { + /* The magic number is wrong: not a message catalog file. */ +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + + domain_file->data + = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain_file->data == NULL) + return; + + domain = (struct loaded_domain *) domain_file->data; + domain->data = (char *) data; +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + domain->use_mmap = use_mmap; +#endif + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + + /* Fill in the information about the available tables. */ + switch (W (domain->must_swap, data->revision)) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = (nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)); + break; + default: + /* This is an illegal revision. */ +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + return; + } + + /* Show that one domain is changed. This might make some cached + translations invalid. */ + ++_nl_msg_cat_cntr; +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (domain) + struct loaded_domain *domain; +{ + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c new file mode 100644 index 0000000000..18cc68886b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/localealias.c @@ -0,0 +1,424 @@ +/* Handle aliases for locale names. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +# endif +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# define mempcpy __mempcpy +# define HAVE_MEMPCPY 1 + +/* We need locking here since we can be called from different places. */ +# include + +__libc_lock_define_initialized (static, lock); +#endif + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +static char *string_space = NULL; +static size_t string_space_act = 0; +static size_t string_space_max = 0; +static struct alias_map *map; +static size_t nmap = 0; +static size_t maxmap = 0; + + +/* Prototypes for local functions. */ +static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) + internal_function; +static void extend_alias_table PARAMS ((void)); +static int alias_compare PARAMS ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path = LOCALE_ALIAS_PATH; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) PARAMS ((const void *, + const void *)) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == ':') + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + +#ifdef _LIBC + __libc_lock_unlock (lock); +#endif + + return result; +} + + +static size_t +internal_function +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); + ADD_BLOCK (block_list, full_fname); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + + fp = fopen (full_fname, "r"); + if (fp == NULL) + { + FREE_BLOCKS (block_list); + return 0; + } + + added = 0; + while (!feof (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + */ + unsigned char buf[BUFSIZ]; + unsigned char *alias; + unsigned char *value; + unsigned char *cp; + + if (fgets (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (strchr (buf, '\n') == NULL) + { + char altbuf[BUFSIZ]; + do + if (fgets (altbuf, sizeof altbuf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (altbuf, '\n') == NULL); + } + + cp = buf; + /* Ignore leading white space. */ + while (isspace (cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace (cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + extend_alias_table (); + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + { + FREE_BLOCKS (block_list); + return added; + } + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) PARAMS ((const void *, const void *))) alias_compare); + + FREE_BLOCKS (block_list); + return added; +} + + +static void +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return; + + map = new_map; + maxmap = new_size; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + if (string_space != NULL) + free (string_space); + if (map != NULL) + free (map); +} +text_set_element (__libc_subfreeres, free_mem); +#endif + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in new file mode 100755 index 0000000000..b3bcca4d73 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/po2tbl.sed.in @@ -0,0 +1,102 @@ +# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +1 { + i\ +/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ +\ +#if HAVE_CONFIG_H\ +# include \ +#endif\ +\ +#include "libgettext.h"\ +\ +const struct _msg_ent _msg_tbl[] = { + h + s/.*/0/ + x +} +# +# Write msgid entries in C array form. +# +/^msgid/ { + s/msgid[ ]*\(".*"\)/ {\1/ + tb +# Append the next line + :b + N +# Look whether second part is continuation line. + s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ +# Yes, then branch. + ta +# Because we assume that the input file correctly formed the line +# just read cannot be again be a msgid line. So it's safe to ignore +# it. + s/\(.*\)\n.*/\1/ + bc +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ +# Some buggy seds do not clear the `successful substitution since last ``t''' +# flag on `N', so we do a `t' here to clear it. + tb +# Not reached + :c + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)\n\([0-9]*\)/\1, \2},/ + s/\(.*\)"$/\1/ + p +} +# +# Last line. +# +$ { + i\ +};\ + + g + s/0*\(.*\)/int _msg_tbl_length = \1;/p +} +d diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c new file mode 100644 index 0000000000..2e8facb1f8 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/textdomain.c @@ -0,0 +1,108 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[]; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN textdomain__ +#endif + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *old; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + old = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + _nl_current_default_domain = _nl_default_default_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + _nl_current_default_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + char *cp = (char *) malloc (len); + if (cp != NULL) + memcpy (cp, domainname, len); + _nl_current_default_domain = cp; +#endif + } + + if (old != _nl_default_default_domain) + free (old); + + return (char *) _nl_current_default_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed new file mode 100755 index 0000000000..b19c0bbd0e --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/intl/xopen-msg.sed @@ -0,0 +1,104 @@ +# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +1 { + i\ +$set 1 # Automatically created by po2msg.sed + h + s/.*/0/ + x +} +# +# We copy all comments into the .msg file. Perhaps they can help. +# +/^#/ s/^#[ ]*/$ /p +# +# We copy the original message as a comment into the .msg file. +# +/^msgid/ { +# Does not work now +# /"$/! { +# s/\\$// +# s/$/ ... (more lines following)"/ +# } + s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ + p +} +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the cat-id-tbl.c file +# (with po-to-tbl) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +/^msgstr/ { + s/msgstr[ ]*"\(.*\)"/\1/ + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x +# Bring the line in the format ` ' + G + s/^[^\n]*$/& / + s/\(.*\)\n\([0-9]*\)/\2 \1/ +# Clear flag from last substitution. + tb +# Append the next line. + :b + N +# Look whether second part is a continuation line. + s/\(.*\n\)"\(.*\)"/\1\2/ +# Yes, then branch. + ta + P + D +# Note that `D' includes a jump to the start!! +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use the sed command `D' here + s/.*\n\(.*\)/\1/ + tb +} +d diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in new file mode 100644 index 0000000000..629f3d4b46 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/Makefile.in.in @@ -0,0 +1,250 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +DESTDIR = + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = $(DESTDIR)@prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = ../scripts/mkinstalldirs + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = Makefile.in.in POTFILES.in $(PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: cat-id-tbl.c $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in \ + && test ! -f $(PACKAGE).po \ + || ( rm -f $(srcdir)/$(PACKAGE).pot \ + && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(SHELL) ../scripts/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) ../scripts/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(SHELL) ../scripts/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir) || echo ignore; \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in new file mode 100644 index 0000000000..8b9106da56 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/POTFILES.in @@ -0,0 +1,19 @@ +apps/gsmsmsd.cc +apps/gsmsendsms.cc +apps/gsmpb.cc +apps/gsmctl.cc +apps/gsmsmsstore.cc +gsmlib/gsm_at.cc +gsmlib/gsm_error.cc +gsmlib/gsm_event.cc +gsmlib/gsm_me_ta.cc +gsmlib/gsm_nls.cc +gsmlib/gsm_parser.cc +gsmlib/gsm_phonebook.cc +gsmlib/gsm_sms.cc +gsmlib/gsm_sms_codec.cc +gsmlib/gsm_sms_store.cc +gsmlib/gsm_unix_serial.cc +gsmlib/gsm_util.cc +gsmlib/gsm_sorted_phonebook.cc +gsmlib/gsm_sorted_sms_store.cc diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/cat-id-tbl.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/cat-id-tbl.c new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.gmo b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7ac755ac73d7810320dafa6fbb64875a20636f6e GIT binary patch literal 34591 zcmb`P34moqb@wkI0t3n>t0I?yVR~fVY`_4++B4Gw4bwBjbPpoqC~vvl@6oT{Yu++T zi*bvID;kx!izdXl;gUp+iTh_34M+?oYBbRg=hMWvB+-aOO!E7ms=D{Sr2#+lpyq#X z-C9qbI_K1>s{Y3l9(PB?uYE`qJq7%uqoe4@Ja0Wku~BsDnNc(fo(5h3?glRgUk$DT zKkwgv2Cn6OZ5&1Cfn`wNUj-`PC&4w~kHHpr&RJ1Z1z!(d2}Vm@x~sqqymrC$;0M74 z@VnqGVCig^?_Th7-q)Yw>g|9dyuTA%4&DbU|AXKGaMiLXS^>TbY=VCSt^_xp8$|`M z2^PV(f@<%7gS){CC`{>I4bFg{0B6BvRHpdf0xtwV3Em0*1bjUBIx0IHd^7k&@Ezch z;0M9uz>k5)f?oiS0RJ959ee=%8u$xP<$vXA&Ro=Hjwf7ejZf%Z-FZB=b+kg3`9N#JQX}1Tn18QbP;$ySOrf7-{Rjt44%gO zKZ9z|VI&frPXW&W*Mn-`6!--2*&ss@&4Fsqo4_Z79|AQG?*-MK$HTNIf~SB=e;%lM zZuHm!W8Pl@o(bL!s$KW`_wRsK4$Q2ne+nr2tp=Y2UJ0H6PJuBv1FHO&`0u|1s=Xft zHI9D*)f-(4fQ1!k8ycYZjsQw)SbDj*I1d8q} zL8eG_35bY@D&Se*Z~FIlgKF13pv^N-fet+r91u-$45&+m3KL)er)malc4f7K-GIY zDE|0eQ29R#s-O3RyTG4<>hIPKj&2Q5`CkQ!Uq1kz27UoN1w06fza9oPK1W>Yp_)M21WN5fy)1SQ29Opo(g^z)V%q+fBzY%bjM%j;#Yv`#}@E(a5t#@dqMU4 zrJ&0BZBX@p02CcR1ByO>1!~;B3?f>hZ+KjS@RwY?7*zT_9%n$+b1NwM^a@bvJ_2f9 zd>uq2MMqxYbnhm3it;9{$Wu4 z`4TAlNLj0&t3cJe8#H==qW3F6&4)LF>d)_kqW_(^A$}jRC_-N*1&tf>%sM7j-D?8r3Zfx z)VRG5RQo>xiZ1^IYQ8@RsvU=Iar9XVs@`>=+CK%J3C@BVrcK}(|h2C@x>T;B)H4tvp~(?8Bp~f z0M*~$0>xiQBYv0yx6^tHJBQkAdp{;k>Aw zBcR%SIVgU=3A_mGf~xOsQ00CORDZt*ivCA#b@iMBYTj%BHJ&q|`tefm2=E=C+VgHu z^!pU3^6mxC27m0|PnmG-x*Sx!H-oBgA1M0X0jhm>fhzw~;L+e$K(+td;5lHl&CRQ2 zp!j79d;-`2pLz�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\n" +"Language-Team: Peter Hofmann\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +# , c-format +#: apps/gsmsmsd.cc:164 +#, c-format +msgid "could not execute '%s'" +msgstr "konnte '%s' nicht ausführen" + +# , c-format +#: apps/gsmsmsd.cc:168 +#, c-format +msgid "error writing to '%s'" +msgstr "Fehler beim Schreiben zu '%s'" + +# , c-format +#: apps/gsmsmsd.cc:196 +#, c-format +msgid "error when calling opendir('%s')(errno: %d/%s)" +msgstr "Fehler beim Aufruf von opendir('%s') (errno: %d/%s)" + +# , c-format +#: apps/gsmsmsd.cc:225 +#, c-format +msgid "count not open SMS spool file %s" +msgstr "kann SMS Spool-Datei '%s' nicht öffnen" + +# , c-format +#: apps/gsmsmsd.cc:341 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 +#: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 +#, c-format +msgid ": version %s [compiled %s]" +msgstr ": Version %s [kompiliert am %s]" + +#: apps/gsmsmsd.cc:346 +msgid "" +": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" +" [-s spool dir][-t][-v]{sms_type}" +msgstr "" +": [-a Aktion][-b Baud-Rate][-C sca][-d Gerät][-f][-h][-I Init String]\n" +" [-s Spoolverzeichnis][-t][-v]{SMS-Typ}" + +#: apps/gsmsmsd.cc:350 +msgid "" +" -a, --action the action to execute when an SMS arrives\n" +" (SMS is send to stdin of action)" +msgstr "" +" -a, --action die auszuführende Aktion, wenn eine SMS eintrifft\n" +" (Kurznachricht wird zur Standardeingabe der Aktion\n" +" geschrieben)" + +#: apps/gsmsmsd.cc:354 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 +#: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 +msgid " -b, --baudrate baudrate to use for device (default: 38400)" +msgstr "" +" -b, --baudrate für das Gerät zu verwendende Baud-Rate\n" +" (Voreinstellung: 38400)" + +#: apps/gsmsmsd.cc:357 +msgid " -c, --concatenate start ID for concatenated SMS messages" +msgstr " -c, --concatenate Start-ID für verbundene SMS-Nachrichten" + +#: apps/gsmsmsd.cc:359 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 +msgid " -C, --sca SMS service centre address" +msgstr " -C, --sca SMS service centre address" + +#: apps/gsmsmsd.cc:360 +msgid " -d, --device sets the device to connect to" +msgstr " -d, --device stellt das Ziel-Gerät ein" + +#: apps/gsmsmsd.cc:361 +msgid " -D, --direct enable direct routing of SMSs" +msgstr "" +" -D, --direct direkte Weiterleitung von SMSs ohne Zwischenspeicherung" + +#: apps/gsmsmsd.cc:362 +msgid " -f, --flush flush SMS from store" +msgstr " -f, --flush lösche und bearbeite SMS im Speicher" + +#: apps/gsmsmsd.cc:363 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 +#: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 +msgid " -h, --help prints this message" +msgstr " -h, --help gibt diesen Hilfetext aus" + +#: apps/gsmsmsd.cc:364 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 +#: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 +msgid " -I, --init device AT init sequence" +msgstr " -I, --init AT-Initialisierungssequenz" + +#: apps/gsmsmsd.cc:365 apps/gsmsendsms.cc:163 +msgid " -r, --requeststat request SMS status report" +msgstr " -r, --requeststat fordert SMS-Statusreport an" + +#: apps/gsmsmsd.cc:366 +msgid " -s, --spool spool directory for outgoing SMS" +msgstr " -s, --spool Spool-Verzeichnis für zu sendende SMS" + +#: apps/gsmsmsd.cc:368 +msgid "" +" -t, --store name of SMS store to use for flush\n" +" and/or temporary SMS storage" +msgstr "" +" -t, --store gibt den zu verwendenden SMS-Speicher an (für flush-\n" +" Option und/oder temporären SMS-Speicher)" + +#: apps/gsmsmsd.cc:371 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 +#: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 +msgid " -v, --version prints version and exits" +msgstr " -v, --version gibt Versionsnummer aus und terminiert" + +#: apps/gsmsmsd.cc:372 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 +#: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 +msgid " -X, --xonxoff switch on software handshake" +msgstr " -X, --xonxoff Software Handshake anschalten" + +#: apps/gsmsmsd.cc:374 +msgid " sms_type may be any combination of" +msgstr " SMS-Typ kann aus den folgenden Parametern kombiniert werden:" + +#: apps/gsmsmsd.cc:375 +msgid " sms, no_sms controls reception of normal SMS" +msgstr " sms, no_sms schaltet Empfang von normalen SMS an bzw. aus" + +#: apps/gsmsmsd.cc:377 +msgid " cb, no_cb controls reception of cell broadcast messages" +msgstr "" +" cb, no_cb schaltet Empfang von Zellen-weiten Nachrichten an bzw. " +"aus" + +#: apps/gsmsmsd.cc:379 +msgid " stat, no_stat controls reception of status reports" +msgstr " stat, no_stat schaltet Empfang von Status-Reports an bzw. aus" + +#: apps/gsmsmsd.cc:381 +msgid " default is \"sms cb stat\"" +msgstr " Die Voreinstellung ist \"sms cb stat\"." + +#: apps/gsmsmsd.cc:382 +msgid "If no action is given, the SMS is printed to stdout" +msgstr "" +"Wenn keine Aktion angegeben ist, wird die SMS auf der Standardausgabe\n" +"angezeigt." + +#: apps/gsmsmsd.cc:387 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 +#: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 +msgid "unknown option" +msgstr "unbekannte Option" + +# , c-format +#: apps/gsmsmsd.cc:426 +#, c-format +msgid "error when calling sigaction() (errno: %d/%s)" +msgstr "Fehler beim Aufruf von sigaction() (errno: %d/%s)" + +#: apps/gsmsmsd.cc:446 +msgid "store name must be given for flush option" +msgstr "Speichername muß angegeben werden für flush-Option" + +#. process the new message +#: apps/gsmsmsd.cc:454 apps/gsmsmsd.cc:522 +msgid "Type of message: " +msgstr "Typ der Nachricht: " + +#: apps/gsmsmsd.cc:458 apps/gsmsmsd.cc:526 +msgid "SMS message\n" +msgstr "SMS Nachricht\n" + +#: apps/gsmsmsd.cc:461 +msgid "submit report message\n" +msgstr "Submit-Report-Nachricht\n" + +#: apps/gsmsmsd.cc:464 apps/gsmsmsd.cc:532 +msgid "status report message\n" +msgstr "Status-Report-Nachricht\n" + +#: apps/gsmsmsd.cc:529 +msgid "cell broadcast message\n" +msgstr "Zellen-weite Nachricht\n" + +#: apps/gsmsmsd.cc:585 apps/gsmsmsd.cc:587 apps/gsmsendsms.cc:253 +#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:435 +msgid "[ERROR]: " +msgstr "[FEHLER]: " + +#: apps/gsmsmsd.cc:588 +msgid "(try setting sms_type, please refer to gsmsmsd manpage)" +msgstr "" +"(versuchen Sie, den sms_type zu setzen; siehe auch gsmsmsd Manual-Seite)" + +#: apps/gsmsendsms.cc:149 +msgid "" +": [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n" +" [-t][-v][-X] phonenumber [text]" +msgstr "" +": [-b Baud-Rate][-c concatenatedID][-C sca][-d Gerät][-h][-I Init String]\n" +" [-t][-v][-X] Telefonnummer [Text]" + +#: apps/gsmsendsms.cc:156 +msgid " -c, --concatenate ID for concatenated SMS messages" +msgstr " -c, --concatenate ID für verbundene SMS-Nachrichten" + +#: apps/gsmsendsms.cc:159 apps/gsmctl.cc:392 +msgid " -d, --device sets the destination device to connect to" +msgstr " -d, --device stellt das Ziel-Gerät ein" + +#: apps/gsmsendsms.cc:164 +msgid "" +" -t, --test convert text to GSM alphabet and vice\n" +" versa, no SMS message is sent" +msgstr "" +" -t, --test konvertiert den Text in das GSM-Alphabet und\n" +" wieder zurück. Es wird keine SMS-Nachricht versendet." + +#: apps/gsmsendsms.cc:171 +msgid " phonenumber recipient's phone number" +msgstr " Telefonummer die Telefonnummer des Empfängers" + +#: apps/gsmsendsms.cc:172 +msgid "" +" text optional text of the SMS message\n" +" if omitted: read from stdin" +msgstr "" +" text Text der SMS-Nachricht (optional),\n" +" wenn nicht angegeben: lese von der Standardeingabe" + +#: apps/gsmsendsms.cc:205 +msgid "phone number and text missing" +msgstr "weder Telefonnummer noch Text angegeben" + +#: apps/gsmsendsms.cc:208 apps/gsmsmsstore.cc:261 +msgid "more than two parameters given" +msgstr "mehr als zwei Parameter angegeben" + +#: apps/gsmsendsms.cc:224 +msgid "text is larger than 160 characters" +msgstr "der Text ist länger als 160 Zeichen" + +# , c-format +#: apps/gsmpb.cc:102 apps/gsmpb.cc:491 +#, c-format +msgid "inserting '%s' tel# %s" +msgstr "füge ein '%s' Tel# %s" + +# , c-format +#: apps/gsmpb.cc:105 apps/gsmpb.cc:230 apps/gsmpb.cc:494 +#, c-format +msgid " (index #%d)" +msgstr " (Index #%d)" + +# , c-format +#: apps/gsmpb.cc:144 +#, c-format +msgid "updating '%s' tel# %s to new tel# %s" +msgstr "überschreibe '%s' Tel# %s mit neuer Tel# %s" + +# , c-format +#: apps/gsmpb.cc:177 +#, c-format +msgid "updating '%s' tel# %s to new tel# %s(index %d)" +msgstr "überschreibe '%s' Tel# %s mit neuer Tel# %s (Index %d)" + +# , c-format +#: apps/gsmpb.cc:227 +#, c-format +msgid "deleting '%s' tel# %s" +msgstr "lösche '%s' Tel# %s" + +#: apps/gsmpb.cc:316 +msgid "" +": [-b baudrate][-c][-d device or file][-h][-I init string]\n" +" [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]" +msgstr "" +": [-b Baud-Rate][-c][-d Gerät oder Datei][-h][-I Init String]\n" +" [-p Telefonbuchname][-s Gerät oder Datei][-t Zeichensatz][-v][-V][-y][-X]" + +#: apps/gsmpb.cc:325 +msgid " -c, --copy copy source entries to destination" +msgstr " -c, --copy kopiere Quell-Einträge zum Zielgerät/-datei" + +#: apps/gsmpb.cc:327 +msgid "" +" -d, --destination sets the destination device to connect \n" +" to, or the file to write" +msgstr " -d, --destination setzt das Zielgerät bzw. die Zieldatei" + +#: apps/gsmpb.cc:330 +msgid " -D, --destination-backend sets the destination backend" +msgstr " -D, --destination-backend stellt den Typ des Ziel-Backends ein" + +#: apps/gsmpb.cc:333 +msgid " -i, --index takes index positions into account" +msgstr " -i, --index berücksichtige die Indexpositionen der Einträge" + +#: apps/gsmpb.cc:336 +msgid " -p, --phonebook name of phonebook to use" +msgstr " -p, --phonebook Name des zu verwendenden Telefonbuchs" + +#: apps/gsmpb.cc:337 apps/gsmsmsstore.cc:210 +msgid "" +" -s, --source sets the source device to connect to,\n" +" or the file to read" +msgstr " -s, --source setzt das Quellgerät bzw. die Quelldatei" + +#: apps/gsmpb.cc:339 +msgid "" +" -t, --charset sets the character set to use for\n" +" phonebook entries" +msgstr " -t, --charset setzt den Zeichensatz für Telefonbucheinträge" + +#: apps/gsmpb.cc:341 +msgid " -S, --source-backend sets the source backend" +msgstr " -S, --source-backend stellt den Typ des Ziel-Backends ein" + +#: apps/gsmpb.cc:344 apps/gsmsmsstore.cc:214 +msgid " -V, --verbose print detailed progress messages" +msgstr " -V, --verbose gibt detaillierte Fortschrittsmeldungen aus" + +#: apps/gsmpb.cc:347 +msgid "" +" -y, --synchronize synchronize destination with source\n" +" entries (destination is overwritten)\n" +" (see gsmpb(1) for details)" +msgstr "" +" -y, --synchronize synchronisiere das Zielgerät/-datei mit der Quelle\n" +" (Zieleinträge werden eventuell überschrieben)\n" +" (siehe gsmpb(1) für weitere Details)" + +#: apps/gsmpb.cc:360 +msgid "both source and destination must be given" +msgstr "sowohl Quellgerät/-datei als auch Zielgerät/-datei erforderlich" + +#: apps/gsmpb.cc:374 apps/gsmpb.cc:416 +msgid "phonebook name must be given" +msgstr "ein Telefonbuchname muß angegeben werden" + +# , c-format +#: apps/gsmpb.cc:441 +#, c-format +msgid "" +"text '%s' is too large to fit into destination (maximum size %d characters)" +msgstr "" +"Text '%s' ist zu groß für das Zielgerät (maximale Textlänge %d Zeichen)" + +# , c-format +#: apps/gsmpb.cc:447 +#, c-format +msgid "" +"phone number '%s' is too large to fit into destination (maximum size %d " +"characters)" +msgstr "" +"Telefonnummer '%s' ist zu groß für das Zielgerät (maximale Länge %d Zeichen)" + +#: apps/gsmctl.cc:90 +msgid "active " +msgstr "aktiv" + +#: apps/gsmctl.cc:90 +msgid "inactive " +msgstr "inaktiv" + +#: apps/gsmctl.cc:91 +msgid "number: " +msgstr "Telefonnummer: " + +#: apps/gsmctl.cc:92 +msgid " subaddr: " +msgstr " Unteradresse: " + +#: apps/gsmctl.cc:93 +msgid " time: " +msgstr " Zeit: " + +#: apps/gsmctl.cc:105 +msgid " Manufacturer: " +msgstr " Hersteller: " + +#: apps/gsmctl.cc:106 +msgid " Model: " +msgstr " Modell: " + +#: apps/gsmctl.cc:107 +msgid " Revision: " +msgstr " Revision: " + +#: apps/gsmctl.cc:108 +msgid " Serial Number: " +msgstr " Seriennummer: " + +#: apps/gsmctl.cc:116 apps/gsmctl.cc:118 +msgid " Functionality Level: " +msgstr " Funktionalitäts-Level: " + +#: apps/gsmctl.cc:118 +msgid "unsupported" +msgstr "Kommando nicht unterstützt" + +#: apps/gsmctl.cc:128 +msgid "> Status: " +msgstr "> Status: " + +#: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 +#: gsmlib/gsm_sms_codec.cc:204 +msgid "unknown" +msgstr "unbekannt" + +#: apps/gsmctl.cc:132 +msgid "current" +msgstr "aktuell" + +#: apps/gsmctl.cc:133 +msgid "available" +msgstr "verfügbar" + +#: apps/gsmctl.cc:134 +msgid "forbidden" +msgstr "nicht wählbar" + +#: apps/gsmctl.cc:136 apps/gsmctl.cc:147 +msgid " Long name: '" +msgstr " Langname: '" + +#: apps/gsmctl.cc:137 apps/gsmctl.cc:148 +msgid " Short name: '" +msgstr " Kurzname: '" + +#: apps/gsmctl.cc:138 apps/gsmctl.cc:149 +msgid " Numeric name: " +msgstr " Numerischer Name: " + +#: apps/gsmctl.cc:150 +msgid " Mode: " +msgstr " Modus: " + +#: apps/gsmctl.cc:153 +msgid "automatic" +msgstr "automatisch" + +#: apps/gsmctl.cc:154 +msgid "manual" +msgstr "manuell" + +#: apps/gsmctl.cc:155 +msgid "deregister" +msgstr "abmelden" + +#: apps/gsmctl.cc:156 +msgid "manual/automatic" +msgstr "manuell/automatisch" + +#: apps/gsmctl.cc:172 apps/gsmctl.cc:247 +msgid " Voice" +msgstr " Sprache" + +#: apps/gsmctl.cc:176 apps/gsmctl.cc:185 apps/gsmctl.cc:194 +msgid " unknown" +msgstr " unbekannt" + +#: apps/gsmctl.cc:181 apps/gsmctl.cc:249 +msgid " Data" +msgstr " Daten" + +#: apps/gsmctl.cc:190 apps/gsmctl.cc:251 +msgid " Fax" +msgstr " Fax" + +#: apps/gsmctl.cc:229 +msgid "on" +msgstr "an" + +#: apps/gsmctl.cc:229 +msgid "off" +msgstr "aus" + +#: apps/gsmctl.cc:239 +msgid "UnconditionalReason" +msgstr "\"Alle Anrufe\"" + +#: apps/gsmctl.cc:240 +msgid "MobileBusyReason" +msgstr "\"Mobiltelefon besetzt\"" + +#: apps/gsmctl.cc:241 +msgid "NoReplyReason" +msgstr "\"Keine Antwort\"" + +#: apps/gsmctl.cc:242 +msgid "NotReachableReason" +msgstr "\"Nicht erreichbar\"" + +#: apps/gsmctl.cc:261 +msgid "0 ME is powered by the battery" +msgstr "0 ME wird von der Batterie gespeist" + +#: apps/gsmctl.cc:262 +msgid "1 ME has a battery connected, but is not powered by it" +msgstr "1 ME-Batterie ist vorhanden, liefert aber keinen Strom" + +#: apps/gsmctl.cc:264 +msgid "2 ME does not have a battery connected" +msgstr "2 ME-Batterie nicht angeschlossen" + +#: apps/gsmctl.cc:266 +msgid "3 Recognized power fault, calls inhibited" +msgstr "3 Problem mit der Energieversorgung, keine Anrufe möglich" + +# , c-format +#: apps/gsmctl.cc:323 +#, c-format +msgid "unknown facility class parameter '%c'" +msgstr "unbekannter Dienstmerkmal-Parameter '%c'" + +# , c-format +#: apps/gsmctl.cc:336 +#, c-format +msgid "not enough parameters, minimum number of parameters is %d" +msgstr "nicht genügend Parameter, die Mindestanzahl der Parameter ist %d" + +# , c-format +#: apps/gsmctl.cc:340 +#, c-format +msgid "too many parameters, maximum number of parameters is %d" +msgstr "zu viele Parameter, die Maximalanzahl der Parameter ist %d" + +#: apps/gsmctl.cc:385 +msgid "" +": [-b baudrate][-d device][-h][-I init string][-o operation]\n" +" [-v][-X]{parameters}" +msgstr "" +": [-b Baud-Rate][-d Gerät][-h][-I Init String][-o Operation]\n" +" [-v][-X]{Parameter}" + +#: apps/gsmctl.cc:396 +msgid "" +" -o, --operation operation to perform on the mobile \n" +" phone with the specified parameters" +msgstr "" +" -o, --operation gibt die Operation an, die auf dem Mobiltelefon\n" +" mit den angegebenen Parametern ausgeführt werden soll" + +#: apps/gsmctl.cc:402 +msgid "" +" parameters parameters to use for the operation\n" +" (if an operation is given) or\n" +" a specification which kind of\n" +" information to read from the mobile phone" +msgstr "" +" Parameter die für die Operation zu verwendenden Parameter\n" +" (wenn eine Operation ausgeführt werden soll) oder\n" +" die Spezifikation der vom Mobiltelefon zu lesenden\n" +" Informationen" + +#: apps/gsmctl.cc:408 +msgid "" +"Refer to gsmctl(1) for details on the available parameters and operations." +msgstr "" +"Bitte beziehen Sie sich auf die Manual-Seite gsmctl(1) für weitere Details\n" +"über die unterstützten Parameter und Operationen." + +# , c-format +#: apps/gsmctl.cc:471 +#, c-format +msgid "unknown information parameter '%s'" +msgstr "unbekannter Informations-Parameter '%s'" + +# , c-format +#: apps/gsmctl.cc:520 +#, c-format +msgid "unknown opmode parameter '%s'" +msgstr "Unbekannter (Operations-)Modus-Parameter '%s'" + +# , c-format +#: apps/gsmctl.cc:588 +#, c-format +msgid "unknown forward reason parameter '%s'" +msgstr "unbekannter Weiterleitungsgrund-Parameter '%s'" + +# , c-format +#: apps/gsmctl.cc:604 +#, c-format +msgid "unknown forward mode parameter '%s'" +msgstr "unbekannter Weiterleitungs-Modus-Parameter '%s'" + +# , c-format +#: apps/gsmctl.cc:625 +#, c-format +msgid "unknown operation '%s'" +msgstr "unbekannte Operation '%s'" + +# , c-format +#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:363 apps/gsmsmsstore.cc:380 +#, c-format +msgid "inserting entry #%d from source into destination" +msgstr "füge Eintrag #%d von Quellgerät/-datei in Zielgerät/-datei ein" + +# , c-format +#: apps/gsmsmsstore.cc:102 +#, c-format +msgid "incompatible options '%c' and '%c'" +msgstr "inkompatible Optionen '%c' und '%c'" + +#: apps/gsmsmsstore.cc:184 +msgid "" +": [-a][-b baudrate][-c][-C sca][-d device or file]\n" +" [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n" +" [-v][-V][-x][-X]{indices}|[phonenumber text]" +msgstr "" +": [-a][-b Baud-Rate][-c][-C sca][-d Gerät oder Datei]\n" +" [-h][-I Init String][-k][-l][-s Gerät oder Datei][-t SMS Speichername]\n" +" [-v][-V][-x][-X]{Indices}|[Telefonnummer Text]" + +#: apps/gsmsmsstore.cc:191 +msgid "" +" -a, --add add new SMS submit message\n" +" (phonenumber and text) to destination" +msgstr "" +" -a, --add füge neue SMS-Submit-Nachricht (Telefonnummer und\n" +" Text) in das Zielgerät/-datei ein" + +#: apps/gsmsmsstore.cc:197 +msgid "" +" -c, --copy copy source entries to destination\n" +" (if indices are given, copy only these entries)" +msgstr "" +" -c, --copy kopiere Quell-Einträge in das Zielgerät/-datei\n" +" (wenn Indices angegeben sind, kopiere nur diese Einträge)" + +#: apps/gsmsmsstore.cc:201 +msgid "" +" -d, --destination sets the destination device to\n" +" connect to, or the file to write to" +msgstr " -d, --destination setzt das Zielgerät bzw. die Zieldatei" + +#: apps/gsmsmsstore.cc:206 +msgid "" +" -k, --backup backup new entries to destination\n" +" (if indices are given, copy only these entries)" +msgstr "" +" -k, --backup sichert alle neuen Einträge in die Zieldatei/-gerät\n" +" (wenn Indices angegeben sind, sichere nur diese Einträge)" + +#: apps/gsmsmsstore.cc:209 +msgid " -l, --list list source to stdout" +msgstr "" +" -l, --list schreibe Liste der Quelleinträge auf die Standardausgabe" + +#: apps/gsmsmsstore.cc:212 +msgid " -t, --store name of SMS store to use" +msgstr " -t, --store gibt den zu verwendenden SMS-Speicher an" + +#: apps/gsmsmsstore.cc:216 +msgid " -x, --delete delete entries denoted by indices" +msgstr "" +" -x, --delete lösche die durch die Indices spezifizierten Einträge" + +#: apps/gsmsmsstore.cc:229 +msgid "no operation option given" +msgstr "keine Operations-Option angegeben" + +#: apps/gsmsmsstore.cc:232 +msgid "both source and destination required" +msgstr "sowohl Quellgerät/-datei als auch Zielgerät/-datei erforderlich" + +#: apps/gsmsmsstore.cc:237 +msgid "destination must not be given" +msgstr "Zielgerät/-datei darf nicht angegeben werden" + +#: apps/gsmsmsstore.cc:239 +msgid "source required" +msgstr "Quellgerät/-datei erforderlich" + +#: apps/gsmsmsstore.cc:244 +msgid "source must not be given" +msgstr "Quellgerät/-datei darf nicht angegeben werden" + +#: apps/gsmsmsstore.cc:246 +msgid "destination required" +msgstr "Zielgerät/-datei erforderlich" + +# , c-format +#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:285 +#, c-format +msgid "expected number, got '%s'" +msgstr "Zahl erwartet, nicht '%s'" + +#: apps/gsmsmsstore.cc:264 +msgid "not enough parameters given" +msgstr "nicht genügend Parameter angegeben" + +#: apps/gsmsmsstore.cc:269 +msgid "unexpected parameters" +msgstr "unerwartete Parameter" + +#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:317 +msgid "store name must be given" +msgstr "Speichername muß angegeben werden" + +# , c-format +#: apps/gsmsmsstore.cc:344 apps/gsmsmsstore.cc:377 +#, c-format +msgid "no index '%s' in source" +msgstr "kein Index '%s' in der Quelldatei/-gerät" + +# , c-format +#: apps/gsmsmsstore.cc:392 +#, c-format +msgid "index #%d" +msgstr "Index #%d" + +#: apps/gsmsmsstore.cc:406 +msgid "inserting new entry into destination" +msgstr "füge neuen Eintrag in das Zielgerät/-datei ein" + +# , c-format +#: apps/gsmsmsstore.cc:421 +#, c-format +msgid "deleting entry #%d from destination" +msgstr "lösche Eintrag #%d von Zielgerät/-datei" + +# , c-format +#: apps/gsmsmsstore.cc:426 +#, c-format +msgid "no index '%s' in destination" +msgstr "kein Index '%s' in Zielgerät/-datei" + +#: gsmlib/gsm_at.cc:66 +msgid "unspecified ME/TA error" +msgstr "unspezifizierter ME/TA-Fehler" + +#: gsmlib/gsm_at.cc:76 +msgid "ME/TA error '" +msgstr "ME/TA-Fehler '" + +# , c-format +#: gsmlib/gsm_at.cc:80 +#, c-format +msgid "(code %s)" +msgstr "(Code %s)" + +#: gsmlib/gsm_at.cc:125 gsmlib/gsm_at.cc:215 gsmlib/gsm_at.cc:344 +msgid "ME/TA error '' (code not known)" +msgstr "ME/TA-Fehler '' (Code nicht bekannt)" + +# , c-format +#: gsmlib/gsm_at.cc:184 gsmlib/gsm_at.cc:365 +#, c-format +msgid "unexpected response '%s' when sending 'AT%s'" +msgstr "unerwartete Antwort '%s' beim Senden von 'AT%s'" + +#: gsmlib/gsm_at.cc:318 +msgid "unexpected character in PDU handshake" +msgstr "unerwartetes Zeichen im PDU-Handshake" + +#: gsmlib/gsm_error.cc:29 +msgid "phone failure" +msgstr "Telefon-Fehler" + +#: gsmlib/gsm_error.cc:32 +msgid "no connection to phone" +msgstr "keine Verbindung zum Telefon" + +#: gsmlib/gsm_error.cc:35 +msgid "phone adaptor link reserved" +msgstr "Telefonadapter-Verbindung reserviert" + +#: gsmlib/gsm_error.cc:38 gsmlib/gsm_error.cc:259 +msgid "operation not allowed" +msgstr "Operation nicht erlaubt" + +#: gsmlib/gsm_error.cc:41 gsmlib/gsm_error.cc:262 +msgid "operation not supported" +msgstr "Operation nicht unterstützt" + +#: gsmlib/gsm_error.cc:44 +msgid "ph SIM PIN required" +msgstr "ph SIM PIN erforderlich" + +#: gsmlib/gsm_error.cc:47 gsmlib/gsm_error.cc:271 +msgid "SIM not inserted" +msgstr "SIM nicht eingesteckt" + +#: gsmlib/gsm_error.cc:50 gsmlib/gsm_error.cc:274 +msgid "SIM PIN required" +msgstr "SIM PIN erforderlich" + +#: gsmlib/gsm_error.cc:53 gsmlib/gsm_error.cc:289 +msgid "SIM PUK required" +msgstr "SIM PUK erforderlich" + +#: gsmlib/gsm_error.cc:56 gsmlib/gsm_error.cc:280 +msgid "SIM failure" +msgstr "SIM-Fehler" + +#: gsmlib/gsm_error.cc:59 gsmlib/gsm_error.cc:283 +msgid "SIM busy" +msgstr "SIM beschäftigt" + +#: gsmlib/gsm_error.cc:62 gsmlib/gsm_error.cc:286 +msgid "SIM wrong" +msgstr "falsche SIM" + +#: gsmlib/gsm_error.cc:65 +msgid "incorrect password" +msgstr "falsches Paßwort" + +#: gsmlib/gsm_error.cc:68 gsmlib/gsm_error.cc:292 +msgid "SIM PIN2 required" +msgstr "SIM PIN2 erforderlich" + +#: gsmlib/gsm_error.cc:71 gsmlib/gsm_error.cc:295 +msgid "SIM PUK2 required" +msgstr "SIM PUK2 erforderlich" + +#: gsmlib/gsm_error.cc:74 gsmlib/gsm_error.cc:304 +msgid "memory full" +msgstr "Speicher voll" + +#: gsmlib/gsm_error.cc:77 +msgid "invalid index" +msgstr "ungültiger Index" + +#: gsmlib/gsm_error.cc:80 +msgid "not found" +msgstr "nicht gefunden" + +#: gsmlib/gsm_error.cc:83 gsmlib/gsm_error.cc:298 +msgid "memory failure" +msgstr "Speicher-Fehler" + +#: gsmlib/gsm_error.cc:86 +msgid "text string too long" +msgstr "Zeichenkette zu lang" + +#: gsmlib/gsm_error.cc:89 +msgid "invalid characters in text string" +msgstr "ungültige Zeichen in der Zeichenkette" + +#: gsmlib/gsm_error.cc:92 +msgid "dial string too long" +msgstr "zu wählende Telefonnummer zu lang" + +#: gsmlib/gsm_error.cc:95 +msgid "invalid characters in dial string" +msgstr "ungültige Zeichen in zu wählender Telefonnummer" + +#: gsmlib/gsm_error.cc:98 gsmlib/gsm_error.cc:310 +msgid "no network service" +msgstr "kein Netz" + +#: gsmlib/gsm_error.cc:101 gsmlib/gsm_error.cc:313 +msgid "network timeout" +msgstr "Netz-Zeitüberschreitung" + +# , c-format +#: gsmlib/gsm_error.cc:107 +#, c-format +msgid "invalid ME error %d" +msgstr "ungültiger ME-Fehler %d" + +#: gsmlib/gsm_error.cc:117 +msgid "Unassigned (unallocated) number" +msgstr "nicht zugewiesene Nummer" + +#: gsmlib/gsm_error.cc:120 +msgid "Operator determined barring" +msgstr "vom Operator geschaltete Sperre" + +#: gsmlib/gsm_error.cc:123 +msgid "Call barred" +msgstr "Rufsperre" + +#: gsmlib/gsm_error.cc:126 +msgid "Network failure" +msgstr "Netz-Fehler" + +#: gsmlib/gsm_error.cc:129 +msgid "Short message transfer rejected" +msgstr "Kurznachrichten-Übertragung zurückgewiesen" + +#: gsmlib/gsm_error.cc:133 gsmlib/gsm_error.cc:355 +msgid "Congestion" +msgstr "Netzüberlastung" + +#: gsmlib/gsm_error.cc:136 +msgid "Destination out of service" +msgstr "Ziel außer Betrieb" + +#: gsmlib/gsm_error.cc:139 +msgid "Unidentified subscriber" +msgstr "unidentifizierter Teilnehmer" + +#: gsmlib/gsm_error.cc:142 +msgid "Facility rejected" +msgstr "Dienstmerkmal zurückgewiesen" + +#: gsmlib/gsm_error.cc:145 +msgid "Unknown subscriber" +msgstr "unbekannter Teilnehmer" + +#: gsmlib/gsm_error.cc:148 +msgid "Network out of order" +msgstr "Netz außer Betrieb" + +#: gsmlib/gsm_error.cc:151 +msgid "Temporary failure" +msgstr "temporärer Fehler" + +#: gsmlib/gsm_error.cc:154 +msgid "Resources unavailable, unspecified" +msgstr "Ressourcen nicht verfügbar, nicht spezifiziert" + +#: gsmlib/gsm_error.cc:157 +msgid "Requested facility not subscribed" +msgstr "angefordertes Dienstmerkmal nicht freigeschaltet" + +#: gsmlib/gsm_error.cc:160 +msgid "Requested facility not implemented" +msgstr "angefordertes Dienstmerkmal nicht implementiert" + +#: gsmlib/gsm_error.cc:163 +msgid "Invalid Transaction Identifier" +msgstr "ungültiger Transaktionsbezeichner" + +#: gsmlib/gsm_error.cc:166 +msgid "Semantically incorrect message" +msgstr "semantisch fehlerhafte Nachricht" + +#: gsmlib/gsm_error.cc:169 +msgid "Invalid mandatory information" +msgstr "ungültige, obligatorische Information" + +#: gsmlib/gsm_error.cc:172 +msgid "Message type non-existent or not implemented" +msgstr "Nachrichtentyp nicht existent bzw. nicht implementiert" + +#: gsmlib/gsm_error.cc:175 +msgid "Message not compatible with short message protocol state" +msgstr "Nachricht nicht vereinbar mit Kurznachrichten-Protokollstatus" + +#: gsmlib/gsm_error.cc:178 +msgid "Information element non-existent or not implemented" +msgstr "Informationselement nicht existent oder nicht implementiert" + +#: gsmlib/gsm_error.cc:181 +msgid "Protocol error, unspecified" +msgstr "Protokollfehler, nicht spezifiziert" + +#: gsmlib/gsm_error.cc:184 +msgid "Interworking, unspecified" +msgstr "Interworking, nicht spezifiziert" + +#: gsmlib/gsm_error.cc:187 +msgid "Telematic interworking not supported" +msgstr "Telematisches Interworking nicht unterstützt" + +#: gsmlib/gsm_error.cc:190 +msgid "Short message Type 0 not supported" +msgstr "Kurznachrichtentyp 0 nicht unterstützt" + +#: gsmlib/gsm_error.cc:193 +msgid "Cannot replace short message" +msgstr "kann Kurznachricht nicht ersetzen" + +#: gsmlib/gsm_error.cc:196 +msgid "Unspecified TP-PID error" +msgstr "unspezifizierter TP-PID-Fehler" + +#: gsmlib/gsm_error.cc:199 +msgid "Data coding scheme (alphabet) not supported" +msgstr "Datenkodierungsschema (Alphabet) nicht unterstützt" + +#: gsmlib/gsm_error.cc:202 +msgid "Message class not supported" +msgstr "Nachrichtenklasse nicht unterstützt" + +#: gsmlib/gsm_error.cc:205 +msgid "Unspecifiec TP-DCS error" +msgstr "unspezifizierter TP-DCS-Fehler" + +#: gsmlib/gsm_error.cc:208 +msgid "Command cannot be actioned" +msgstr "Kommando kann nicht ausgeführt werden" + +#: gsmlib/gsm_error.cc:211 +msgid "Command unsupported" +msgstr "Kommando nicht unterstützt" + +#: gsmlib/gsm_error.cc:214 +msgid "Unspecified TP-Command error" +msgstr "unspezifizierter TP-Kommando-Fehler" + +#: gsmlib/gsm_error.cc:217 +msgid "TPDU not supported" +msgstr "TPDU nicht unterstützt" + +#: gsmlib/gsm_error.cc:220 +msgid "SC busy" +msgstr "SC besetzt" + +#: gsmlib/gsm_error.cc:223 +msgid "No SC subscription" +msgstr "SC nicht freigeschaltet" + +#: gsmlib/gsm_error.cc:226 +msgid "SC system failure" +msgstr "SC-Systemfehler" + +#: gsmlib/gsm_error.cc:229 +msgid "Invalid SME address" +msgstr "ungültige SME-Adresse" + +#: gsmlib/gsm_error.cc:232 +msgid "Destination SME barred" +msgstr "Ziel-SME gesperrt" + +#: gsmlib/gsm_error.cc:235 +msgid "SM Rejected-Duplicated SM" +msgstr "Kurznachricht zurückgewiesen - doppelte Kurznachricht" + +#: gsmlib/gsm_error.cc:238 +msgid "SIM SMS storage full" +msgstr "SIM-SMS-Speicher voll" + +#: gsmlib/gsm_error.cc:241 +msgid "No SMS storage capability in SIM" +msgstr "Keine SMS-Speicherfähigkeit in SIM" + +#: gsmlib/gsm_error.cc:244 +msgid "Error in MS" +msgstr "Fehler im MS" + +#: gsmlib/gsm_error.cc:247 +msgid "Memory Capacity Exceed" +msgstr "Speicherkapazität überschritten" + +#: gsmlib/gsm_error.cc:250 +msgid "Unspecified error cause" +msgstr "unspezifizierter Fehlergrund" + +#: gsmlib/gsm_error.cc:253 +msgid "ME failure" +msgstr "ME-Fehler" + +#: gsmlib/gsm_error.cc:256 +msgid "SMS service of ME reserved" +msgstr "SMS-Dienst im ME reserviert" + +#: gsmlib/gsm_error.cc:265 +msgid "invalid PDU mode parameter" +msgstr "ungültiger PDU-Modus-Parameter" + +#: gsmlib/gsm_error.cc:268 +msgid "invalid text mode parameter" +msgstr "ungültiger Text-Modus-Parameter" + +#: gsmlib/gsm_error.cc:277 +msgid "PH-SIM PIN required" +msgstr "PH-SIM PIN erforderlich" + +#: gsmlib/gsm_error.cc:301 +msgid "invalid memory index" +msgstr "ungültiger Speicherindex" + +#: gsmlib/gsm_error.cc:307 +msgid "SMSC address unknown" +msgstr "SMSC-Adresse nicht bekannt" + +#: gsmlib/gsm_error.cc:316 +msgid "no +CNMA acknowledgement expected" +msgstr "keine +CNMA-Bestätigung erwartet" + +#: gsmlib/gsm_error.cc:319 +msgid "unknown error" +msgstr "unbekannter Fehler" + +# , c-format +#: gsmlib/gsm_error.cc:322 +#, c-format +msgid "invalid SMS error %d" +msgstr "ungültiger SMS-Fehler %d" + +#: gsmlib/gsm_error.cc:335 +msgid "Short message received by the SME" +msgstr "Kurznachricht von der SME empfangen" + +#: gsmlib/gsm_error.cc:338 +msgid "" +"Short message forwarded by the SC to the SME but the SC is unable to confirm " +"delivery" +msgstr "" +"die Kurznachricht wurde vom SC zur SME weitergeleitet, aber das SC ist nicht " +"in der Lage, den Empfang zu bestätigen" + +#: gsmlib/gsm_error.cc:342 +msgid "Short message replaced by the SC" +msgstr "Kurznachricht wurde vom SC ersetzt" + +#: gsmlib/gsm_error.cc:345 gsmlib/gsm_error.cc:373 gsmlib/gsm_error.cc:418 +msgid "reserved" +msgstr "reserviert" + +#: gsmlib/gsm_error.cc:358 +msgid "SME busy" +msgstr "SME besetzt" + +#: gsmlib/gsm_error.cc:361 +msgid "No response from SME" +msgstr "keine Antwort vom SME" + +#: gsmlib/gsm_error.cc:364 +msgid "Service rejected" +msgstr "Dienst zurückgewiesen" + +#: gsmlib/gsm_error.cc:367 gsmlib/gsm_error.cc:400 +msgid "Quality of service not available" +msgstr "Dienstqualität nicht verfügbar" + +#: gsmlib/gsm_error.cc:370 +msgid "Error in SME" +msgstr "Fehler im SME" + +#: gsmlib/gsm_error.cc:377 +msgid " (Temporary error, SC is not making any more transfer attempts)" +msgstr " (temporärer Fehler, SC macht keine weiteren Übertragungsversuche)" + +#: gsmlib/gsm_error.cc:380 +msgid " (Temporary error, SC still trying to transfer SM)" +msgstr " (temporärer Fehler, SC versucht weiterhin die SM zu übertragen)" + +#: gsmlib/gsm_error.cc:388 +msgid "Remote Procedure Error" +msgstr "Fern-Prozedur-Aufrufs-Fehler" + +#: gsmlib/gsm_error.cc:391 +msgid "Incompatible destination" +msgstr "inkompatibles Ziel" + +#: gsmlib/gsm_error.cc:394 +msgid "Connection rejected by SME" +msgstr "Verbindung vom SME zurückgewiesen" + +#: gsmlib/gsm_error.cc:397 +msgid "Not obtainable" +msgstr "nicht verfügbar" + +#: gsmlib/gsm_error.cc:403 +msgid "No interworking available" +msgstr "kein Interworking verfügbar" + +#: gsmlib/gsm_error.cc:406 +msgid "SM validity period expired" +msgstr "SM-Gültigkeitszeitraum überschritten" + +#: gsmlib/gsm_error.cc:409 +msgid "SM deleted by originating SME" +msgstr "SM von der sendenden SME gelöscht" + +#: gsmlib/gsm_error.cc:412 +msgid "SM deleted by SC administration" +msgstr "SM von der SC-Administration gelöscht" + +#: gsmlib/gsm_error.cc:415 +msgid "SM does not exit" +msgstr "SM macht keinen Exit" + +#: gsmlib/gsm_error.cc:421 +msgid " (Permanent Error, SC is not making any more transfer attempts)" +msgstr " (permanenter Fehler, SC macht keine weiteren Übertragungsversuche)" + +# , c-format +#: gsmlib/gsm_event.cc:80 +#, c-format +msgid "unexpected number format %d" +msgstr "unerwartetes Telefonnummernformat %d" + +# , c-format +#: gsmlib/gsm_event.cc:100 +#, c-format +msgid "unexpected unsolicited event '%s'" +msgstr "unerwartetes asynchrones Ereignis '%s'" + +#: gsmlib/gsm_me_ta.cc:536 +msgid "unable to set operator" +msgstr "kann den Netzbetreiber nicht setzen" + +#: gsmlib/gsm_me_ta.cc:663 +msgid "call forward time must be in the range 0..30" +msgstr "Rufumleitungszeit muss im Bereich 0..30 sein" + +#: gsmlib/gsm_me_ta.cc:811 +msgid "Functionality Level commands not supported by ME" +msgstr "" +"Funktionalitäts-Level-Kommandos werden vom Gerät (ME) nicht unterstützt" + +#. If the number was just out of range, we get here. +#: gsmlib/gsm_me_ta.cc:830 +msgid "Requested Functionality Level out of range" +msgstr "Angeforderter Funktionalitäts-Level außerhalb des erlaubten Bereichs" + +#: gsmlib/gsm_me_ta.cc:941 +msgid "unsupported alphabet for SMS" +msgstr "nicht unterstütztes Alphabet für SMS" + +#: gsmlib/gsm_me_ta.cc:950 +msgid "SMS text is larger than allowed" +msgstr "SMS-Text ist länger als erlaubt" + +#: gsmlib/gsm_me_ta.cc:962 +msgid "not more than 255 concatenated SMSs allowed" +msgstr "nicht mehr als 255 verbundene SMSs erlaubt" + +#: gsmlib/gsm_me_ta.cc:995 +msgid "only serviceLevel 0 or 1 supported" +msgstr "nur Dienst-Level 0 oder 1 unterstützt" + +#: gsmlib/gsm_me_ta.cc:1108 gsmlib/gsm_me_ta.cc:1150 +msgid "cannot route SMS messages to TE" +msgstr "kann keine Kurznachrichten zum TE weiterleiten" + +#: gsmlib/gsm_me_ta.cc:1122 gsmlib/gsm_me_ta.cc:1164 +msgid "cannot route cell broadcast messages to TE" +msgstr "kann keine Zellen-weiten Nachrichten zum TE weiterleiten" + +#: gsmlib/gsm_me_ta.cc:1134 +msgid "cannot route status reports messages to TE" +msgstr "kann keine Status-Report-Nachrichten zum TE weiterleiten" + +#: gsmlib/gsm_me_ta.cc:1178 +msgid "cannot route status report messages to TE" +msgstr "kann keine Status-Report-Nachrichten zum TE weiterleiten" + +#: gsmlib/gsm_parser.cc:51 +msgid "expected parameter" +msgstr "Parameter erwartet" + +#: gsmlib/gsm_parser.cc:71 +msgid "expected '\"'" +msgstr "'\"' erwartet" + +#: gsmlib/gsm_parser.cc:109 +msgid "expected number" +msgstr "Zahl erwartet" + +# , c-format +#: gsmlib/gsm_parser.cc:120 +#, c-format +msgid "unexpected end of string '%s'" +msgstr "unerwartetes Ende der Zeichenkette '%s'" + +# , c-format +#: gsmlib/gsm_parser.cc:124 +#, c-format +msgid " (at position %d of string '%s')" +msgstr " (an Position %d der Zeichenkette '%s')" + +# , c-format +#: gsmlib/gsm_parser.cc:141 +#, c-format +msgid "expected '%c'" +msgstr "'%c' erwartet" + +#: gsmlib/gsm_parser.cc:165 +msgid "expected ')' or ','" +msgstr "')' oder ',' erwartet" + +#: gsmlib/gsm_parser.cc:251 +msgid "expected ')', ',' or '-'" +msgstr "')', ',' oder '-' erwartet" + +#: gsmlib/gsm_parser.cc:257 +msgid "range of the form a-b-c not allowed" +msgstr "Bereich der Form a-b-c nicht erlaubt" + +#: gsmlib/gsm_parser.cc:264 +msgid "range of the form a- no allowed" +msgstr "Bereich der Form a- nicht erlaubt" + +#: gsmlib/gsm_parser.cc:350 +msgid "expected comma" +msgstr "Komma erwartet" + +#: gsmlib/gsm_parser.cc:367 +msgid "expected end of line" +msgstr "Zeilenende erwartet" + +# , c-format +#: gsmlib/gsm_phonebook.cc:47 +#, c-format +msgid "" +"length of text '%s' exceeds maximum text length (%d characters) of phonebook " +"'%s'" +msgstr "" +"die Länge des Texts '%s' überschreitet die maximale Textlänge (%d Zeichen) " +"des Telefonbuchs '%s'" + +# , c-format +#: gsmlib/gsm_phonebook.cc:55 +#, c-format +msgid "" +"length of telephone number '%s' exceeds maximum telephone number length (%d " +"characters) of phonebook '%s'" +msgstr "" +"die Länge der Telefonnummer '%s' überschreitet die maximale " +"Telefonnummernlänge (%d Zeichen) des Telefonbuchs '%s'" + +#: gsmlib/gsm_phonebook.cc:275 +msgid "phonebook full" +msgstr "Telefonbuch voll" + +#: gsmlib/gsm_phonebook.cc:291 +msgid "attempt to overwrite phonebook entry" +msgstr "Versuch, einen Telefonbucheintrag zu überschreiben" + +#: gsmlib/gsm_phonebook.cc:569 +msgid "SIM card changed while accessing phonebook" +msgstr "SIM-Karte wurde gewechselt beim Zugriff auf Telefonbuch" + +#: gsmlib/gsm_sms.cc:66 gsmlib/gsm_sms.cc:85 gsmlib/gsm_sms.cc:175 +msgid "unhandled SMS TPDU type" +msgstr "unerwarteter SMS TPDU-Typ" + +#: gsmlib/gsm_sms.cc:107 +msgid "can only send SMS-SUBMIT and SMS-COMMAND TPDUs" +msgstr "kann nur SMS-SUBMIT und SMS-COMMAND TPDUs senden" + +#: gsmlib/gsm_sms.cc:111 +msgid "no device given for sending SMS" +msgstr "kein Gerät zum Versenden von SMS angegeben" + +#: gsmlib/gsm_sms.cc:283 +msgid "Message type: SMS-DELIVER" +msgstr "Nachrichtentyp: SMS-DELIVER" + +#: gsmlib/gsm_sms.cc:284 gsmlib/gsm_sms.cc:426 gsmlib/gsm_sms.cc:531 +#: gsmlib/gsm_sms.cc:618 gsmlib/gsm_sms.cc:723 gsmlib/gsm_sms.cc:829 +msgid "SC address: '" +msgstr "SC-Adresse: '" + +#: gsmlib/gsm_sms.cc:285 gsmlib/gsm_sms.cc:532 +msgid "More messages to send: " +msgstr "Mehr Nachrichten zu versenden: " + +#: gsmlib/gsm_sms.cc:286 gsmlib/gsm_sms.cc:445 +msgid "Reply path: " +msgstr "Antwortpfad: " + +#: gsmlib/gsm_sms.cc:287 gsmlib/gsm_sms.cc:446 +msgid "User data header indicator: " +msgstr "Benutzerdatenvorspann (Indikation): " + +#: gsmlib/gsm_sms.cc:289 +msgid "Status report indication: " +msgstr "Status-Report-Indikation: " + +#: gsmlib/gsm_sms.cc:290 +msgid "Originating address: '" +msgstr "Senderadresse: '" + +#: gsmlib/gsm_sms.cc:292 gsmlib/gsm_sms.cc:452 gsmlib/gsm_sms.cc:621 +#: gsmlib/gsm_sms.cc:729 gsmlib/gsm_sms.cc:836 +msgid "Protocol identifier: 0x" +msgstr "Protokollbezeichner: 0x" + +#: gsmlib/gsm_sms.cc:294 gsmlib/gsm_sms.cc:454 gsmlib/gsm_sms.cc:733 +#: gsmlib/gsm_sms.cc:840 +msgid "Data coding scheme: " +msgstr "Datenkodierungsschema: " + +#: gsmlib/gsm_sms.cc:295 gsmlib/gsm_sms.cc:536 gsmlib/gsm_sms.cc:830 +msgid "SC timestamp: " +msgstr "SC-Zeitstempel: " + +#: gsmlib/gsm_sms.cc:296 gsmlib/gsm_sms.cc:456 gsmlib/gsm_sms.cc:735 +#: gsmlib/gsm_sms.cc:842 +msgid "User data length: " +msgstr "Benutzerdatenlänge: " + +#: gsmlib/gsm_sms.cc:297 gsmlib/gsm_sms.cc:457 +msgid "User data header: 0x" +msgstr "Benutzerdatenvorspann: 0x" + +#: gsmlib/gsm_sms.cc:302 gsmlib/gsm_sms.cc:461 gsmlib/gsm_sms.cc:736 +#: gsmlib/gsm_sms.cc:843 +msgid "User data: '" +msgstr "Benutzerdaten: '" + +#: gsmlib/gsm_sms.cc:425 +msgid "Message type: SMS-SUBMIT" +msgstr "Nachrichtentyp: SMS-SUBMIT" + +#: gsmlib/gsm_sms.cc:427 +msgid "Reject duplicates: " +msgstr "Duplikate zurückweisen: " + +#: gsmlib/gsm_sms.cc:428 +msgid "Validity period format: " +msgstr "Gültigkeitszeitraum-Format: " + +#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:183 +msgid "not present" +msgstr "nicht vorhanden" + +#: gsmlib/gsm_sms.cc:435 +msgid "relative" +msgstr "relativ" + +#: gsmlib/gsm_sms.cc:438 +msgid "absolute" +msgstr "absolut" + +#: gsmlib/gsm_sms.cc:448 gsmlib/gsm_sms.cc:620 +msgid "Status report request: " +msgstr "Status-Report-Anforderung: " + +#: gsmlib/gsm_sms.cc:449 gsmlib/gsm_sms.cc:534 gsmlib/gsm_sms.cc:619 +msgid "Message reference: " +msgstr "Nachrichtenreferenz: " + +#: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 +msgid "Destination address: '" +msgstr "Zieladresse: '" + +#: gsmlib/gsm_sms.cc:455 +msgid "Validity period: " +msgstr "Gültigkeitszeitraum: " + +#: gsmlib/gsm_sms.cc:530 +msgid "Message type: SMS-STATUS-REPORT" +msgstr "Nachrichtentyp: SMS-STATUS-REPORT" + +#: gsmlib/gsm_sms.cc:533 +msgid "Status report qualifier: " +msgstr "Status-Report-Attribut: " + +#: gsmlib/gsm_sms.cc:535 +msgid "Recipient address: '" +msgstr "Empfängeradresse: '" + +#: gsmlib/gsm_sms.cc:537 +msgid "Discharge time: " +msgstr "Aussendezeit: " + +#: gsmlib/gsm_sms.cc:538 +msgid "Status: 0x" +msgstr "Status: 0x" + +#: gsmlib/gsm_sms.cc:617 +msgid "Message type: SMS-COMMAND" +msgstr "Nachrichtentyp: SMS-COMMAND" + +#: gsmlib/gsm_sms.cc:623 +msgid "Command type: 0x" +msgstr "Kommandotyp: 0x" + +#: gsmlib/gsm_sms.cc:625 +msgid "Message number: " +msgstr "Nachrichtennummer: " + +#: gsmlib/gsm_sms.cc:628 +msgid "Command data length: " +msgstr "Kommandodatenlänge: " + +#: gsmlib/gsm_sms.cc:629 +msgid "Command data: '" +msgstr "Kommandodaten: '" + +#: gsmlib/gsm_sms.cc:722 +msgid "Message type: SMS-DELIVER-REPORT" +msgstr "Nachrichtentyp: SMS-DELIVER-REPORT" + +#: gsmlib/gsm_sms.cc:724 gsmlib/gsm_sms.cc:831 +msgid "Protocol identifier present: " +msgstr "Protokollbezeichner präsent: " + +#: gsmlib/gsm_sms.cc:726 gsmlib/gsm_sms.cc:833 +msgid "Data coding scheme present: " +msgstr "Datenkodierungsschema präsent: " + +#: gsmlib/gsm_sms.cc:727 gsmlib/gsm_sms.cc:834 +msgid "User data length present: " +msgstr "Benutzerdatenlänge präsent: " + +#: gsmlib/gsm_sms.cc:828 +msgid "Message type: SMS-SUBMIT-REPORT" +msgstr "Nachrichtentyp: SMS-SUBMIT-REPORT" + +#: gsmlib/gsm_sms_codec.cc:188 gsmlib/gsm_sms_codec.cc:190 +msgid " minutes" +msgstr " Minuten" + +#: gsmlib/gsm_sms_codec.cc:192 +msgid " days" +msgstr " Tage" + +#: gsmlib/gsm_sms_codec.cc:194 +msgid " weeks" +msgstr " Wochen" + +#: gsmlib/gsm_sms_codec.cc:213 +msgid "compressed " +msgstr "komprimiert " + +#: gsmlib/gsm_sms_codec.cc:218 +msgid "voicemail message waiting" +msgstr "Sprachnachricht abrufbar" + +#: gsmlib/gsm_sms_codec.cc:221 +msgid "fax message waiting" +msgstr "Faxnachricht abrufbar" + +#: gsmlib/gsm_sms_codec.cc:224 +msgid "electronic mail message waiting" +msgstr "E-Mail-Nachricht abrufbar" + +#: gsmlib/gsm_sms_codec.cc:227 +msgid "other message waiting" +msgstr "andere Nachricht abrufbar" + +#: gsmlib/gsm_sms_codec.cc:234 +msgid "default alphabet" +msgstr "Standardalphabet" + +#: gsmlib/gsm_sms_codec.cc:237 +msgid "8-bit alphabet" +msgstr "8-Bit Alphabet" + +#: gsmlib/gsm_sms_codec.cc:240 +msgid "16-bit alphabet" +msgstr "16-bit Alphabet" + +#: gsmlib/gsm_sms_codec.cc:243 +msgid "reserved alphabet" +msgstr "reserviertes Alphabet" + +#: gsmlib/gsm_sms_codec.cc:256 +msgid "bad hexadecimal PDU format" +msgstr "fehlerhaftes hexadezimales PDU-Format" + +#: gsmlib/gsm_sms_codec.cc:285 gsmlib/gsm_sms_codec.cc:295 +#: gsmlib/gsm_sms_codec.cc:310 gsmlib/gsm_sms_codec.cc:318 +#: gsmlib/gsm_sms_codec.cc:339 gsmlib/gsm_sms_codec.cc:347 +#: gsmlib/gsm_sms_codec.cc:368 gsmlib/gsm_sms_codec.cc:382 +msgid "premature end of PDU" +msgstr "Vorzeitiges Ende der PDU" + +#: gsmlib/gsm_sms_codec.cc:473 +msgid "unknown time period format" +msgstr "Unbekanntes Zeitperiodenformat" + +#: gsmlib/gsm_unix_serial.cc:119 +msgid "interrupted when reading from TA" +msgstr "Unterbrechung beim Lesen vom TA" + +#: gsmlib/gsm_unix_serial.cc:144 +msgid "reading from TA" +msgstr "beim Lesen vom TA" + +#: gsmlib/gsm_unix_serial.cc:149 +msgid "timeout when reading from TA" +msgstr "Zeitüberschreitung beim Lesen vom TA" + +# , c-format +#: gsmlib/gsm_unix_serial.cc:176 +#, c-format +msgid "opening device '%s'" +msgstr "beim Öffnen von Gerät '%s'" + +#: gsmlib/gsm_unix_serial.cc:182 +msgid "getting file status flags failed" +msgstr "Lesen der Dateistatus-Flags fehlgeschlagen" + +#: gsmlib/gsm_unix_serial.cc:185 +msgid "switching of non-blocking mode failed" +msgstr "Abschalten des Non-Blocking Mode fehlgeschlagen" + +#: gsmlib/gsm_unix_serial.cc:198 +msgid "clearing DTR failed" +msgstr "Zurücksetzen von DTR fehlgeschlagen" + +#: gsmlib/gsm_unix_serial.cc:202 +msgid "setting DTR failed" +msgstr "Setzen von DTR fehlgeschlagen" + +# , c-format +#: gsmlib/gsm_unix_serial.cc:206 +#, c-format +msgid "tcgetattr device '%s'" +msgstr "tcgetattr Gerät '%s'" + +# , c-format +#: gsmlib/gsm_unix_serial.cc:233 +#, c-format +msgid "tcsetattr device '%s'" +msgstr "tcsetattr Gerät '%s'" + +# , c-format +#. no response after 3 tries +#: gsmlib/gsm_unix_serial.cc:287 +#, c-format +msgid "reset modem failed '%s'" +msgstr "Zurücksetzen des Modems '%s' fehlgeschlagen" + +#: gsmlib/gsm_unix_serial.cc:332 gsmlib/gsm_unix_serial.cc:364 +msgid "interrupted when writing to TA" +msgstr "Unterbrechnung beim Schreiben auf den TA" + +#: gsmlib/gsm_unix_serial.cc:347 gsmlib/gsm_unix_serial.cc:356 +msgid "writing to TA" +msgstr "beim Schreiben auf den TA" + +#: gsmlib/gsm_unix_serial.cc:377 +msgid "timeout when writing to TA" +msgstr "Zeitüberschreitung beim Schreiben auf den TA" + +# , c-format +#: gsmlib/gsm_unix_serial.cc:438 +#, c-format +msgid "unknown baudrate '%s'" +msgstr "unbekannte Baud-Rate '%s'" + +# , c-format +#: gsmlib/gsm_util.cc:205 +#, c-format +msgid "error when calling stat('%s') (errno: %d/%s)" +msgstr "Fehler beim Aufruf von stat('%s') (errno: %d/%s)" + +# , c-format +#: gsmlib/gsm_util.cc:236 +#, c-format +msgid "file '%s' is neither file nor character device" +msgstr "Datei '%s' ist weder eine reguläre Datei noch einen Zeichengerät" + +#: gsmlib/gsm_util.cc:240 +msgid "maxmimum number of symbolic links exceeded" +msgstr "maximale Anzahl der symbolischen Links überschritten" + +# , c-format +#: gsmlib/gsm_util.cc:250 +#, c-format +msgid "error renaming '%s' to '%s'" +msgstr "Fehler beim Umbenennen von '%s' zu '%s'" + +# , c-format +#: gsmlib/gsm_util.cc:348 +#, c-format +msgid "text '%s' contains illegal character '\"'" +msgstr "der Text '%s' enthält das illegale Zeichen '\"'" + +# , c-format +#: gsmlib/gsm_util.cc:358 +#, c-format +msgid "illegal character in telephone number '%s'" +msgstr "ungültiges Zeichen in der Telefonnummer '%s'" + +# , c-format +#: gsmlib/gsm_sorted_phonebook.cc:95 +#, c-format +msgid "error reading from file '%s" +msgstr "Fehler beim Lesen von Datei '%s'" + +# , c-format +#: gsmlib/gsm_sorted_phonebook.cc:109 +#, c-format +msgid "entry '%s' lacks index" +msgstr "Eintrag '%s' hat keinen Index" + +# , c-format +#: gsmlib/gsm_sorted_phonebook.cc:118 gsmlib/gsm_sorted_phonebook.cc:124 +#, c-format +msgid "line '%s' has invalid format" +msgstr "Zeile '%s' hat ungültiges Format" + +# , c-format +#: gsmlib/gsm_sorted_phonebook.cc:173 gsmlib/gsm_sorted_sms_store.cc:159 +#, c-format +msgid "error opening file '%s' for writing" +msgstr "Fehler beim Öffnen der Datei '%s' zum Schreiben" + +#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_phonebook.cc:193 +#: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 +msgid "" +msgstr "" + +# , c-format +#: gsmlib/gsm_sorted_phonebook.cc:192 gsmlib/gsm_sorted_sms_store.cc:66 +#, c-format +msgid "error writing to file '%s'" +msgstr "Fehler beim Schreiben in die Datei '%s'" + +#: gsmlib/gsm_sorted_phonebook.cc:216 +msgid "attempt to change phonebook read from " +msgstr "Versuch, von der Standardeingabe gelesenes Telefonbuch zu verändern" + +# , c-format +#: gsmlib/gsm_sorted_phonebook.cc:229 gsmlib/gsm_sorted_sms_store.cc:215 +#, c-format +msgid "cannot open file '%s'" +msgstr "kann Datei '%s' nicht öffnen" + +#: gsmlib/gsm_sorted_phonebook.cc:244 gsmlib/gsm_sorted_sms_store.cc:55 +#: gsmlib/gsm_sorted_sms_store.cc:228 +msgid "" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:361 +msgid "indices must be unique in phonebook" +msgstr "Indices im Telefonbuch müssen eindeutig sein" + +# , c-format +#: gsmlib/gsm_sorted_sms_store.cc:54 +#, c-format +msgid "error reading from file '%s'" +msgstr "Fehler beim Lesen aus der Datei '%s'" + +# , c-format +#: gsmlib/gsm_sorted_sms_store.cc:87 +#, c-format +msgid "file '%s' has wrong version" +msgstr "Datei '%s' hat die falsche Version" + +# , c-format +#: gsmlib/gsm_sorted_sms_store.cc:99 gsmlib/gsm_sorted_sms_store.cc:111 +#, c-format +msgid "corrupt SMS store file '%s'" +msgstr "beschädigte SMS-Speicherdatei '%s'" + +#: gsmlib/gsm_sorted_sms_store.cc:204 +msgid "attempt to change SMS store read from " +msgstr "" +"Versuch, SMS-Speicher zu verändern, der von der Standardeingabe gelesen wurde" + +#~ msgid "cannot read current network operator" +#~ msgstr "kann den aktuellen Netzbetreiber nicht lesen" + +#~ msgid "Message type: SMS" +#~ msgstr "Nachrichtentyp: SMS" + +#~ msgid "(no further information available)" +#~ msgstr "(keine weitere Information verfügbar)" diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot new file mode 100644 index 0000000000..1d0385cf4f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/gsmlib.pot @@ -0,0 +1,1689 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-10-06 14:36+1100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: apps/gsmsmsd.cc:172 +#, c-format +msgid "could not execute '%s'" +msgstr "" + +#: apps/gsmsmsd.cc:176 +#, c-format +msgid "error writing to '%s'" +msgstr "" + +#: apps/gsmsmsd.cc:197 apps/gsmsmsd.cc:198 apps/gsmsmsd.cc:199 +#, c-format +msgid "%d" +msgstr "" + +#: apps/gsmsmsd.cc:216 +#, c-format +msgid "error when calling opendir('%s')(errno: %d/%s)" +msgstr "" + +#: apps/gsmsmsd.cc:260 +#, c-format +msgid "count not open SMS spool file %s" +msgstr "" + +#: apps/gsmsmsd.cc:439 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 +#: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 +#, c-format +msgid ": version %s [compiled %s]" +msgstr "" + +#: apps/gsmsmsd.cc:444 +msgid "" +": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" +" [-s spool dir][-t][-v]{sms_type}" +msgstr "" + +#: apps/gsmsmsd.cc:448 +msgid "" +" -a, --action the action to execute when an SMS arrives\n" +" (SMS is send to stdin of action)" +msgstr "" + +#: apps/gsmsmsd.cc:452 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 +#: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 +msgid " -b, --baudrate baudrate to use for device (default: 38400)" +msgstr "" + +#: apps/gsmsmsd.cc:455 +msgid " -c, --concatenate start ID for concatenated SMS messages" +msgstr "" + +#: apps/gsmsmsd.cc:457 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 +msgid " -C, --sca SMS service centre address" +msgstr "" + +#: apps/gsmsmsd.cc:458 +msgid " -d, --device sets the device to connect to" +msgstr "" + +#: apps/gsmsmsd.cc:459 +msgid " -D, --direct enable direct routing of SMSs" +msgstr "" + +#: apps/gsmsmsd.cc:460 +msgid " -f, --flush flush SMS from store" +msgstr "" + +#: apps/gsmsmsd.cc:461 +msgid " -F, --failed directory to move failed SMS to," +msgstr "" + +#: apps/gsmsmsd.cc:462 apps/gsmsmsd.cc:475 +msgid " if unset, the SMS will be deleted" +msgstr "" + +#: apps/gsmsmsd.cc:463 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 +#: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 +msgid " -h, --help prints this message" +msgstr "" + +#: apps/gsmsmsd.cc:464 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 +#: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 +msgid " -I, --init device AT init sequence" +msgstr "" + +#: apps/gsmsmsd.cc:466 +msgid " -L, --syslog log errors and information to syslog" +msgstr "" + +#: apps/gsmsmsd.cc:469 +msgid " -P, --priorities number of priority levels to use," +msgstr "" + +#: apps/gsmsmsd.cc:470 +msgid " (default: none)" +msgstr "" + +#: apps/gsmsmsd.cc:471 apps/gsmsendsms.cc:163 +msgid " -r, --requeststat request SMS status report" +msgstr "" + +#: apps/gsmsmsd.cc:472 +msgid " -s, --spool spool directory for outgoing SMS" +msgstr "" + +#: apps/gsmsmsd.cc:474 +msgid " -S, --sent directory to move sent SMS to," +msgstr "" + +#: apps/gsmsmsd.cc:476 +msgid "" +" -t, --store name of SMS store to use for flush\n" +" and/or temporary SMS storage" +msgstr "" + +#: apps/gsmsmsd.cc:479 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 +#: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 +msgid " -v, --version prints version and exits" +msgstr "" + +#: apps/gsmsmsd.cc:480 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 +#: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 +msgid " -X, --xonxoff switch on software handshake" +msgstr "" + +#: apps/gsmsmsd.cc:482 +msgid " sms_type may be any combination of" +msgstr "" + +#: apps/gsmsmsd.cc:483 +msgid " sms, no_sms controls reception of normal SMS" +msgstr "" + +#: apps/gsmsmsd.cc:485 +msgid " cb, no_cb controls reception of cell broadcast messages" +msgstr "" + +#: apps/gsmsmsd.cc:487 +msgid " stat, no_stat controls reception of status reports" +msgstr "" + +#: apps/gsmsmsd.cc:489 +msgid " default is \"sms cb stat\"" +msgstr "" + +#: apps/gsmsmsd.cc:490 +msgid "If no action is given, the SMS is printed to stdout" +msgstr "" + +#: apps/gsmsmsd.cc:492 +msgid "If -P is given, it activates the priority system and sets the" +msgstr "" + +#: apps/gsmsmsd.cc:493 +msgid "number or levels to use. For every level, there must be directories" +msgstr "" + +#: apps/gsmsmsd.cc:494 +msgid "named +." +msgstr "" + +#: apps/gsmsmsd.cc:495 +msgid "For example \"-P 2 -s queue -S send -F failed\" needs the following" +msgstr "" + +#: apps/gsmsmsd.cc:496 +msgid "directories: queue1/ queue2/ send1/ send2/ failed1/ failed2/" +msgstr "" + +#: apps/gsmsmsd.cc:497 +msgid "Before sending one SMS from queue2, all pending SMS from queue1" +msgstr "" + +#: apps/gsmsmsd.cc:498 +msgid "will be sent." +msgstr "" + +#: apps/gsmsmsd.cc:503 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 +#: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 +msgid "unknown option" +msgstr "" + +#: apps/gsmsmsd.cc:542 +#, c-format +msgid "error when calling sigaction() (errno: %d/%s)" +msgstr "" + +#: apps/gsmsmsd.cc:562 +msgid "store name must be given for flush option" +msgstr "" + +#. process the new message +#: apps/gsmsmsd.cc:570 apps/gsmsmsd.cc:638 +msgid "Type of message: " +msgstr "" + +#: apps/gsmsmsd.cc:574 apps/gsmsmsd.cc:642 +msgid "SMS message\n" +msgstr "" + +#: apps/gsmsmsd.cc:577 +msgid "submit report message\n" +msgstr "" + +#: apps/gsmsmsd.cc:580 apps/gsmsmsd.cc:648 +msgid "status report message\n" +msgstr "" + +#: apps/gsmsmsd.cc:645 +msgid "cell broadcast message\n" +msgstr "" + +#: apps/gsmsmsd.cc:701 apps/gsmsmsd.cc:703 apps/gsmsendsms.cc:253 +#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:430 +msgid "[ERROR]: " +msgstr "" + +#: apps/gsmsmsd.cc:704 +msgid "(try setting sms_type, please refer to gsmsmsd manpage)" +msgstr "" + +#: apps/gsmsendsms.cc:149 +msgid "" +": [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n" +" [-t][-v][-X] phonenumber [text]" +msgstr "" + +#: apps/gsmsendsms.cc:156 +msgid " -c, --concatenate ID for concatenated SMS messages" +msgstr "" + +#: apps/gsmsendsms.cc:159 apps/gsmctl.cc:392 +msgid " -d, --device sets the destination device to connect to" +msgstr "" + +#: apps/gsmsendsms.cc:164 +msgid "" +" -t, --test convert text to GSM alphabet and vice\n" +" versa, no SMS message is sent" +msgstr "" + +#: apps/gsmsendsms.cc:171 +msgid " phonenumber recipient's phone number" +msgstr "" + +#: apps/gsmsendsms.cc:172 +msgid "" +" text optional text of the SMS message\n" +" if omitted: read from stdin" +msgstr "" + +#: apps/gsmsendsms.cc:205 +msgid "phone number and text missing" +msgstr "" + +#: apps/gsmsendsms.cc:208 apps/gsmsmsstore.cc:261 +msgid "more than two parameters given" +msgstr "" + +#: apps/gsmsendsms.cc:224 +msgid "text is larger than 160 characters" +msgstr "" + +#: apps/gsmpb.cc:102 apps/gsmpb.cc:491 +#, c-format +msgid "inserting '%s' tel# %s" +msgstr "" + +#: apps/gsmpb.cc:105 apps/gsmpb.cc:230 apps/gsmpb.cc:494 +#, c-format +msgid " (index #%d)" +msgstr "" + +#: apps/gsmpb.cc:144 +#, c-format +msgid "updating '%s' tel# %s to new tel# %s" +msgstr "" + +#: apps/gsmpb.cc:177 +#, c-format +msgid "updating '%s' tel# %s to new tel# %s(index %d)" +msgstr "" + +#: apps/gsmpb.cc:227 +#, c-format +msgid "deleting '%s' tel# %s" +msgstr "" + +#: apps/gsmpb.cc:316 +msgid "" +": [-b baudrate][-c][-d device or file][-h][-I init string]\n" +" [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]" +msgstr "" + +#: apps/gsmpb.cc:325 +msgid " -c, --copy copy source entries to destination" +msgstr "" + +#: apps/gsmpb.cc:327 +msgid "" +" -d, --destination sets the destination device to connect \n" +" to, or the file to write" +msgstr "" + +#: apps/gsmpb.cc:330 +msgid " -D, --destination-backend sets the destination backend" +msgstr "" + +#: apps/gsmpb.cc:333 +msgid " -i, --index takes index positions into account" +msgstr "" + +#: apps/gsmpb.cc:336 +msgid " -p, --phonebook name of phonebook to use" +msgstr "" + +#: apps/gsmpb.cc:337 apps/gsmsmsstore.cc:210 +msgid "" +" -s, --source sets the source device to connect to,\n" +" or the file to read" +msgstr "" + +#: apps/gsmpb.cc:339 +msgid "" +" -t, --charset sets the character set to use for\n" +" phonebook entries" +msgstr "" + +#: apps/gsmpb.cc:341 +msgid " -S, --source-backend sets the source backend" +msgstr "" + +#: apps/gsmpb.cc:344 apps/gsmsmsstore.cc:214 +msgid " -V, --verbose print detailed progress messages" +msgstr "" + +#: apps/gsmpb.cc:347 +msgid "" +" -y, --synchronize synchronize destination with source\n" +" entries (destination is overwritten)\n" +" (see gsmpb(1) for details)" +msgstr "" + +#: apps/gsmpb.cc:360 +msgid "both source and destination must be given" +msgstr "" + +#: apps/gsmpb.cc:374 apps/gsmpb.cc:416 +msgid "phonebook name must be given" +msgstr "" + +#: apps/gsmpb.cc:441 +#, c-format +msgid "" +"text '%s' is too large to fit into destination (maximum size %d characters)" +msgstr "" + +#: apps/gsmpb.cc:447 +#, c-format +msgid "" +"phone number '%s' is too large to fit into destination (maximum size %d " +"characters)" +msgstr "" + +#: apps/gsmctl.cc:90 +msgid "active " +msgstr "" + +#: apps/gsmctl.cc:90 +msgid "inactive " +msgstr "" + +#: apps/gsmctl.cc:91 +msgid "number: " +msgstr "" + +#: apps/gsmctl.cc:92 +msgid " subaddr: " +msgstr "" + +#: apps/gsmctl.cc:93 +msgid " time: " +msgstr "" + +#: apps/gsmctl.cc:105 +msgid " Manufacturer: " +msgstr "" + +#: apps/gsmctl.cc:106 +msgid " Model: " +msgstr "" + +#: apps/gsmctl.cc:107 +msgid " Revision: " +msgstr "" + +#: apps/gsmctl.cc:108 +msgid " Serial Number: " +msgstr "" + +#: apps/gsmctl.cc:116 apps/gsmctl.cc:118 +msgid " Functionality Level: " +msgstr "" + +#: apps/gsmctl.cc:118 +msgid "unsupported" +msgstr "" + +#: apps/gsmctl.cc:128 +msgid "> Status: " +msgstr "" + +#: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 +#: gsmlib/gsm_sms_codec.cc:205 +msgid "unknown" +msgstr "" + +#: apps/gsmctl.cc:132 +msgid "current" +msgstr "" + +#: apps/gsmctl.cc:133 +msgid "available" +msgstr "" + +#: apps/gsmctl.cc:134 +msgid "forbidden" +msgstr "" + +#: apps/gsmctl.cc:136 apps/gsmctl.cc:147 +msgid " Long name: '" +msgstr "" + +#: apps/gsmctl.cc:137 apps/gsmctl.cc:148 +msgid " Short name: '" +msgstr "" + +#: apps/gsmctl.cc:138 apps/gsmctl.cc:149 +msgid " Numeric name: " +msgstr "" + +#: apps/gsmctl.cc:150 +msgid " Mode: " +msgstr "" + +#: apps/gsmctl.cc:153 +msgid "automatic" +msgstr "" + +#: apps/gsmctl.cc:154 +msgid "manual" +msgstr "" + +#: apps/gsmctl.cc:155 +msgid "deregister" +msgstr "" + +#: apps/gsmctl.cc:156 +msgid "manual/automatic" +msgstr "" + +#: apps/gsmctl.cc:172 apps/gsmctl.cc:247 +msgid " Voice" +msgstr "" + +#: apps/gsmctl.cc:176 apps/gsmctl.cc:185 apps/gsmctl.cc:194 +msgid " unknown" +msgstr "" + +#: apps/gsmctl.cc:181 apps/gsmctl.cc:249 +msgid " Data" +msgstr "" + +#: apps/gsmctl.cc:190 apps/gsmctl.cc:251 +msgid " Fax" +msgstr "" + +#: apps/gsmctl.cc:229 +msgid "on" +msgstr "" + +#: apps/gsmctl.cc:229 +msgid "off" +msgstr "" + +#: apps/gsmctl.cc:239 +msgid "UnconditionalReason" +msgstr "" + +#: apps/gsmctl.cc:240 +msgid "MobileBusyReason" +msgstr "" + +#: apps/gsmctl.cc:241 +msgid "NoReplyReason" +msgstr "" + +#: apps/gsmctl.cc:242 +msgid "NotReachableReason" +msgstr "" + +#: apps/gsmctl.cc:261 +msgid "0 ME is powered by the battery" +msgstr "" + +#: apps/gsmctl.cc:262 +msgid "1 ME has a battery connected, but is not powered by it" +msgstr "" + +#: apps/gsmctl.cc:264 +msgid "2 ME does not have a battery connected" +msgstr "" + +#: apps/gsmctl.cc:266 +msgid "3 Recognized power fault, calls inhibited" +msgstr "" + +#: apps/gsmctl.cc:323 +#, c-format +msgid "unknown facility class parameter '%c'" +msgstr "" + +#: apps/gsmctl.cc:336 +#, c-format +msgid "not enough parameters, minimum number of parameters is %d" +msgstr "" + +#: apps/gsmctl.cc:340 +#, c-format +msgid "too many parameters, maximum number of parameters is %d" +msgstr "" + +#: apps/gsmctl.cc:385 +msgid "" +": [-b baudrate][-d device][-h][-I init string][-o operation]\n" +" [-v][-X]{parameters}" +msgstr "" + +#: apps/gsmctl.cc:396 +msgid "" +" -o, --operation operation to perform on the mobile \n" +" phone with the specified parameters" +msgstr "" + +#: apps/gsmctl.cc:402 +msgid "" +" parameters parameters to use for the operation\n" +" (if an operation is given) or\n" +" a specification which kind of\n" +" information to read from the mobile phone" +msgstr "" + +#: apps/gsmctl.cc:408 +msgid "" +"Refer to gsmctl(1) for details on the available parameters and operations." +msgstr "" + +#: apps/gsmctl.cc:471 +#, c-format +msgid "unknown information parameter '%s'" +msgstr "" + +#: apps/gsmctl.cc:520 +#, c-format +msgid "unknown opmode parameter '%s'" +msgstr "" + +#: apps/gsmctl.cc:588 +#, c-format +msgid "unknown forward reason parameter '%s'" +msgstr "" + +#: apps/gsmctl.cc:604 +#, c-format +msgid "unknown forward mode parameter '%s'" +msgstr "" + +#: apps/gsmctl.cc:625 +#, c-format +msgid "unknown operation '%s'" +msgstr "" + +#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:358 apps/gsmsmsstore.cc:375 +#, c-format +msgid "inserting entry #%d from source into destination" +msgstr "" + +#: apps/gsmsmsstore.cc:102 +#, c-format +msgid "incompatible options '%c' and '%c'" +msgstr "" + +#: apps/gsmsmsstore.cc:184 +msgid "" +": [-a][-b baudrate][-c][-C sca][-d device or file]\n" +" [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n" +" [-v][-V][-x][-X]{indices}|[phonenumber text]" +msgstr "" + +#: apps/gsmsmsstore.cc:191 +msgid "" +" -a, --add add new SMS submit message\n" +" (phonenumber and text) to destination" +msgstr "" + +#: apps/gsmsmsstore.cc:197 +msgid "" +" -c, --copy copy source entries to destination\n" +" (if indices are given, copy only these entries)" +msgstr "" + +#: apps/gsmsmsstore.cc:201 +msgid "" +" -d, --destination sets the destination device to\n" +" connect to, or the file to write to" +msgstr "" + +#: apps/gsmsmsstore.cc:206 +msgid "" +" -k, --backup backup new entries to destination\n" +" (if indices are given, copy only these entries)" +msgstr "" + +#: apps/gsmsmsstore.cc:209 +msgid " -l, --list list source to stdout" +msgstr "" + +#: apps/gsmsmsstore.cc:212 +msgid " -t, --store name of SMS store to use" +msgstr "" + +#: apps/gsmsmsstore.cc:216 +msgid " -x, --delete delete entries denoted by indices" +msgstr "" + +#: apps/gsmsmsstore.cc:229 +msgid "no operation option given" +msgstr "" + +#: apps/gsmsmsstore.cc:232 +msgid "both source and destination required" +msgstr "" + +#: apps/gsmsmsstore.cc:237 +msgid "destination must not be given" +msgstr "" + +#: apps/gsmsmsstore.cc:239 +msgid "source required" +msgstr "" + +#: apps/gsmsmsstore.cc:244 +msgid "source must not be given" +msgstr "" + +#: apps/gsmsmsstore.cc:246 +msgid "destination required" +msgstr "" + +#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:286 +#, c-format +msgid "expected number, got '%s'" +msgstr "" + +#: apps/gsmsmsstore.cc:264 +msgid "not enough parameters given" +msgstr "" + +#: apps/gsmsmsstore.cc:269 +msgid "unexpected parameters" +msgstr "" + +#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:312 +msgid "store name must be given" +msgstr "" + +#: apps/gsmsmsstore.cc:339 apps/gsmsmsstore.cc:372 +#, c-format +msgid "no index '%s' in source" +msgstr "" + +#: apps/gsmsmsstore.cc:387 +#, c-format +msgid "index #%d" +msgstr "" + +#: apps/gsmsmsstore.cc:401 +msgid "inserting new entry into destination" +msgstr "" + +#: apps/gsmsmsstore.cc:416 +#, c-format +msgid "deleting entry #%d from destination" +msgstr "" + +#: apps/gsmsmsstore.cc:421 +#, c-format +msgid "no index '%s' in destination" +msgstr "" + +#: gsmlib/gsm_at.cc:66 +msgid "unspecified ME/TA error" +msgstr "" + +#: gsmlib/gsm_at.cc:76 +msgid "ME/TA error '" +msgstr "" + +#: gsmlib/gsm_at.cc:80 +#, c-format +msgid "(code %s)" +msgstr "" + +#: gsmlib/gsm_at.cc:125 gsmlib/gsm_at.cc:215 gsmlib/gsm_at.cc:344 +msgid "ME/TA error '' (code not known)" +msgstr "" + +#: gsmlib/gsm_at.cc:184 gsmlib/gsm_at.cc:365 +#, c-format +msgid "unexpected response '%s' when sending 'AT%s'" +msgstr "" + +#: gsmlib/gsm_at.cc:318 +msgid "unexpected character in PDU handshake" +msgstr "" + +#: gsmlib/gsm_error.cc:29 +msgid "phone failure" +msgstr "" + +#: gsmlib/gsm_error.cc:32 +msgid "no connection to phone" +msgstr "" + +#: gsmlib/gsm_error.cc:35 +msgid "phone adaptor link reserved" +msgstr "" + +#: gsmlib/gsm_error.cc:38 gsmlib/gsm_error.cc:259 +msgid "operation not allowed" +msgstr "" + +#: gsmlib/gsm_error.cc:41 gsmlib/gsm_error.cc:262 +msgid "operation not supported" +msgstr "" + +#: gsmlib/gsm_error.cc:44 +msgid "ph SIM PIN required" +msgstr "" + +#: gsmlib/gsm_error.cc:47 gsmlib/gsm_error.cc:271 +msgid "SIM not inserted" +msgstr "" + +#: gsmlib/gsm_error.cc:50 gsmlib/gsm_error.cc:274 +msgid "SIM PIN required" +msgstr "" + +#: gsmlib/gsm_error.cc:53 gsmlib/gsm_error.cc:289 +msgid "SIM PUK required" +msgstr "" + +#: gsmlib/gsm_error.cc:56 gsmlib/gsm_error.cc:280 +msgid "SIM failure" +msgstr "" + +#: gsmlib/gsm_error.cc:59 gsmlib/gsm_error.cc:283 +msgid "SIM busy" +msgstr "" + +#: gsmlib/gsm_error.cc:62 gsmlib/gsm_error.cc:286 +msgid "SIM wrong" +msgstr "" + +#: gsmlib/gsm_error.cc:65 +msgid "incorrect password" +msgstr "" + +#: gsmlib/gsm_error.cc:68 gsmlib/gsm_error.cc:292 +msgid "SIM PIN2 required" +msgstr "" + +#: gsmlib/gsm_error.cc:71 gsmlib/gsm_error.cc:295 +msgid "SIM PUK2 required" +msgstr "" + +#: gsmlib/gsm_error.cc:74 gsmlib/gsm_error.cc:304 +msgid "memory full" +msgstr "" + +#: gsmlib/gsm_error.cc:77 +msgid "invalid index" +msgstr "" + +#: gsmlib/gsm_error.cc:80 +msgid "not found" +msgstr "" + +#: gsmlib/gsm_error.cc:83 gsmlib/gsm_error.cc:298 +msgid "memory failure" +msgstr "" + +#: gsmlib/gsm_error.cc:86 +msgid "text string too long" +msgstr "" + +#: gsmlib/gsm_error.cc:89 +msgid "invalid characters in text string" +msgstr "" + +#: gsmlib/gsm_error.cc:92 +msgid "dial string too long" +msgstr "" + +#: gsmlib/gsm_error.cc:95 +msgid "invalid characters in dial string" +msgstr "" + +#: gsmlib/gsm_error.cc:98 gsmlib/gsm_error.cc:310 +msgid "no network service" +msgstr "" + +#: gsmlib/gsm_error.cc:101 gsmlib/gsm_error.cc:313 +msgid "network timeout" +msgstr "" + +#: gsmlib/gsm_error.cc:107 +#, c-format +msgid "invalid ME error %d" +msgstr "" + +#: gsmlib/gsm_error.cc:117 +msgid "Unassigned (unallocated) number" +msgstr "" + +#: gsmlib/gsm_error.cc:120 +msgid "Operator determined barring" +msgstr "" + +#: gsmlib/gsm_error.cc:123 +msgid "Call barred" +msgstr "" + +#: gsmlib/gsm_error.cc:126 +msgid "Network failure" +msgstr "" + +#: gsmlib/gsm_error.cc:129 +msgid "Short message transfer rejected" +msgstr "" + +#: gsmlib/gsm_error.cc:133 gsmlib/gsm_error.cc:355 +msgid "Congestion" +msgstr "" + +#: gsmlib/gsm_error.cc:136 +msgid "Destination out of service" +msgstr "" + +#: gsmlib/gsm_error.cc:139 +msgid "Unidentified subscriber" +msgstr "" + +#: gsmlib/gsm_error.cc:142 +msgid "Facility rejected" +msgstr "" + +#: gsmlib/gsm_error.cc:145 +msgid "Unknown subscriber" +msgstr "" + +#: gsmlib/gsm_error.cc:148 +msgid "Network out of order" +msgstr "" + +#: gsmlib/gsm_error.cc:151 +msgid "Temporary failure" +msgstr "" + +#: gsmlib/gsm_error.cc:154 +msgid "Resources unavailable, unspecified" +msgstr "" + +#: gsmlib/gsm_error.cc:157 +msgid "Requested facility not subscribed" +msgstr "" + +#: gsmlib/gsm_error.cc:160 +msgid "Requested facility not implemented" +msgstr "" + +#: gsmlib/gsm_error.cc:163 +msgid "Invalid Transaction Identifier" +msgstr "" + +#: gsmlib/gsm_error.cc:166 +msgid "Semantically incorrect message" +msgstr "" + +#: gsmlib/gsm_error.cc:169 +msgid "Invalid mandatory information" +msgstr "" + +#: gsmlib/gsm_error.cc:172 +msgid "Message type non-existent or not implemented" +msgstr "" + +#: gsmlib/gsm_error.cc:175 +msgid "Message not compatible with short message protocol state" +msgstr "" + +#: gsmlib/gsm_error.cc:178 +msgid "Information element non-existent or not implemented" +msgstr "" + +#: gsmlib/gsm_error.cc:181 +msgid "Protocol error, unspecified" +msgstr "" + +#: gsmlib/gsm_error.cc:184 +msgid "Interworking, unspecified" +msgstr "" + +#: gsmlib/gsm_error.cc:187 +msgid "Telematic interworking not supported" +msgstr "" + +#: gsmlib/gsm_error.cc:190 +msgid "Short message Type 0 not supported" +msgstr "" + +#: gsmlib/gsm_error.cc:193 +msgid "Cannot replace short message" +msgstr "" + +#: gsmlib/gsm_error.cc:196 +msgid "Unspecified TP-PID error" +msgstr "" + +#: gsmlib/gsm_error.cc:199 +msgid "Data coding scheme (alphabet) not supported" +msgstr "" + +#: gsmlib/gsm_error.cc:202 +msgid "Message class not supported" +msgstr "" + +#: gsmlib/gsm_error.cc:205 +msgid "Unspecifiec TP-DCS error" +msgstr "" + +#: gsmlib/gsm_error.cc:208 +msgid "Command cannot be actioned" +msgstr "" + +#: gsmlib/gsm_error.cc:211 +msgid "Command unsupported" +msgstr "" + +#: gsmlib/gsm_error.cc:214 +msgid "Unspecified TP-Command error" +msgstr "" + +#: gsmlib/gsm_error.cc:217 +msgid "TPDU not supported" +msgstr "" + +#: gsmlib/gsm_error.cc:220 +msgid "SC busy" +msgstr "" + +#: gsmlib/gsm_error.cc:223 +msgid "No SC subscription" +msgstr "" + +#: gsmlib/gsm_error.cc:226 +msgid "SC system failure" +msgstr "" + +#: gsmlib/gsm_error.cc:229 +msgid "Invalid SME address" +msgstr "" + +#: gsmlib/gsm_error.cc:232 +msgid "Destination SME barred" +msgstr "" + +#: gsmlib/gsm_error.cc:235 +msgid "SM Rejected-Duplicated SM" +msgstr "" + +#: gsmlib/gsm_error.cc:238 +msgid "SIM SMS storage full" +msgstr "" + +#: gsmlib/gsm_error.cc:241 +msgid "No SMS storage capability in SIM" +msgstr "" + +#: gsmlib/gsm_error.cc:244 +msgid "Error in MS" +msgstr "" + +#: gsmlib/gsm_error.cc:247 +msgid "Memory Capacity Exceed" +msgstr "" + +#: gsmlib/gsm_error.cc:250 +msgid "Unspecified error cause" +msgstr "" + +#: gsmlib/gsm_error.cc:253 +msgid "ME failure" +msgstr "" + +#: gsmlib/gsm_error.cc:256 +msgid "SMS service of ME reserved" +msgstr "" + +#: gsmlib/gsm_error.cc:265 +msgid "invalid PDU mode parameter" +msgstr "" + +#: gsmlib/gsm_error.cc:268 +msgid "invalid text mode parameter" +msgstr "" + +#: gsmlib/gsm_error.cc:277 +msgid "PH-SIM PIN required" +msgstr "" + +#: gsmlib/gsm_error.cc:301 +msgid "invalid memory index" +msgstr "" + +#: gsmlib/gsm_error.cc:307 +msgid "SMSC address unknown" +msgstr "" + +#: gsmlib/gsm_error.cc:316 +msgid "no +CNMA acknowledgement expected" +msgstr "" + +#: gsmlib/gsm_error.cc:319 +msgid "unknown error" +msgstr "" + +#: gsmlib/gsm_error.cc:322 +#, c-format +msgid "invalid SMS error %d" +msgstr "" + +#: gsmlib/gsm_error.cc:335 +msgid "Short message received by the SME" +msgstr "" + +#: gsmlib/gsm_error.cc:338 +msgid "" +"Short message forwarded by the SC to the SME but the SC is unable to confirm " +"delivery" +msgstr "" + +#: gsmlib/gsm_error.cc:342 +msgid "Short message replaced by the SC" +msgstr "" + +#: gsmlib/gsm_error.cc:345 gsmlib/gsm_error.cc:373 gsmlib/gsm_error.cc:418 +msgid "reserved" +msgstr "" + +#: gsmlib/gsm_error.cc:358 +msgid "SME busy" +msgstr "" + +#: gsmlib/gsm_error.cc:361 +msgid "No response from SME" +msgstr "" + +#: gsmlib/gsm_error.cc:364 +msgid "Service rejected" +msgstr "" + +#: gsmlib/gsm_error.cc:367 gsmlib/gsm_error.cc:400 +msgid "Quality of service not available" +msgstr "" + +#: gsmlib/gsm_error.cc:370 +msgid "Error in SME" +msgstr "" + +#: gsmlib/gsm_error.cc:377 +msgid " (Temporary error, SC is not making any more transfer attempts)" +msgstr "" + +#: gsmlib/gsm_error.cc:380 +msgid " (Temporary error, SC still trying to transfer SM)" +msgstr "" + +#: gsmlib/gsm_error.cc:388 +msgid "Remote Procedure Error" +msgstr "" + +#: gsmlib/gsm_error.cc:391 +msgid "Incompatible destination" +msgstr "" + +#: gsmlib/gsm_error.cc:394 +msgid "Connection rejected by SME" +msgstr "" + +#: gsmlib/gsm_error.cc:397 +msgid "Not obtainable" +msgstr "" + +#: gsmlib/gsm_error.cc:403 +msgid "No interworking available" +msgstr "" + +#: gsmlib/gsm_error.cc:406 +msgid "SM validity period expired" +msgstr "" + +#: gsmlib/gsm_error.cc:409 +msgid "SM deleted by originating SME" +msgstr "" + +#: gsmlib/gsm_error.cc:412 +msgid "SM deleted by SC administration" +msgstr "" + +#: gsmlib/gsm_error.cc:415 +msgid "SM does not exit" +msgstr "" + +#: gsmlib/gsm_error.cc:421 +msgid " (Permanent Error, SC is not making any more transfer attempts)" +msgstr "" + +#: gsmlib/gsm_event.cc:80 +#, c-format +msgid "unexpected number format %d" +msgstr "" + +#: gsmlib/gsm_event.cc:100 +#, c-format +msgid "unexpected unsolicited event '%s'" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:538 +msgid "unable to set operator" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:665 +msgid "call forward time must be in the range 0..30" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:813 +msgid "Functionality Level commands not supported by ME" +msgstr "" + +#. If the number was just out of range, we get here. +#: gsmlib/gsm_me_ta.cc:832 +msgid "Requested Functionality Level out of range" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:943 +msgid "unsupported alphabet for SMS" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:952 +msgid "SMS text is larger than allowed" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:964 +msgid "not more than 255 concatenated SMSs allowed" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:997 +msgid "only serviceLevel 0 or 1 supported" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:1110 gsmlib/gsm_me_ta.cc:1152 +msgid "cannot route SMS messages to TE" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:1124 gsmlib/gsm_me_ta.cc:1166 +msgid "cannot route cell broadcast messages to TE" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:1136 +msgid "cannot route status reports messages to TE" +msgstr "" + +#: gsmlib/gsm_me_ta.cc:1180 +msgid "cannot route status report messages to TE" +msgstr "" + +#: gsmlib/gsm_parser.cc:51 +msgid "expected parameter" +msgstr "" + +#: gsmlib/gsm_parser.cc:71 +msgid "expected '\"'" +msgstr "" + +#: gsmlib/gsm_parser.cc:109 +msgid "expected number" +msgstr "" + +#: gsmlib/gsm_parser.cc:120 +#, c-format +msgid "unexpected end of string '%s'" +msgstr "" + +#: gsmlib/gsm_parser.cc:124 +#, c-format +msgid " (at position %d of string '%s')" +msgstr "" + +#: gsmlib/gsm_parser.cc:141 +#, c-format +msgid "expected '%c'" +msgstr "" + +#: gsmlib/gsm_parser.cc:165 +msgid "expected ')' or ','" +msgstr "" + +#: gsmlib/gsm_parser.cc:251 +msgid "expected ')', ',' or '-'" +msgstr "" + +#: gsmlib/gsm_parser.cc:257 +msgid "range of the form a-b-c not allowed" +msgstr "" + +#: gsmlib/gsm_parser.cc:264 +msgid "range of the form a- no allowed" +msgstr "" + +#: gsmlib/gsm_parser.cc:350 +msgid "expected comma" +msgstr "" + +#: gsmlib/gsm_parser.cc:367 +msgid "expected end of line" +msgstr "" + +#: gsmlib/gsm_phonebook.cc:47 +#, c-format +msgid "" +"length of text '%s' exceeds maximum text length (%d characters) of phonebook " +"'%s'" +msgstr "" + +#: gsmlib/gsm_phonebook.cc:55 +#, c-format +msgid "" +"length of telephone number '%s' exceeds maximum telephone number length (%d " +"characters) of phonebook '%s'" +msgstr "" + +#: gsmlib/gsm_phonebook.cc:275 +msgid "phonebook full" +msgstr "" + +#: gsmlib/gsm_phonebook.cc:291 +msgid "attempt to overwrite phonebook entry" +msgstr "" + +#: gsmlib/gsm_phonebook.cc:569 +msgid "SIM card changed while accessing phonebook" +msgstr "" + +#: gsmlib/gsm_sms.cc:66 gsmlib/gsm_sms.cc:85 gsmlib/gsm_sms.cc:175 +msgid "unhandled SMS TPDU type" +msgstr "" + +#: gsmlib/gsm_sms.cc:107 +msgid "can only send SMS-SUBMIT and SMS-COMMAND TPDUs" +msgstr "" + +#: gsmlib/gsm_sms.cc:111 +msgid "no device given for sending SMS" +msgstr "" + +#: gsmlib/gsm_sms.cc:283 +msgid "Message type: SMS-DELIVER" +msgstr "" + +#: gsmlib/gsm_sms.cc:284 gsmlib/gsm_sms.cc:426 gsmlib/gsm_sms.cc:531 +#: gsmlib/gsm_sms.cc:618 gsmlib/gsm_sms.cc:723 gsmlib/gsm_sms.cc:829 +msgid "SC address: '" +msgstr "" + +#: gsmlib/gsm_sms.cc:285 gsmlib/gsm_sms.cc:532 +msgid "More messages to send: " +msgstr "" + +#: gsmlib/gsm_sms.cc:286 gsmlib/gsm_sms.cc:445 +msgid "Reply path: " +msgstr "" + +#: gsmlib/gsm_sms.cc:287 gsmlib/gsm_sms.cc:446 +msgid "User data header indicator: " +msgstr "" + +#: gsmlib/gsm_sms.cc:289 +msgid "Status report indication: " +msgstr "" + +#: gsmlib/gsm_sms.cc:290 +msgid "Originating address: '" +msgstr "" + +#: gsmlib/gsm_sms.cc:292 gsmlib/gsm_sms.cc:452 gsmlib/gsm_sms.cc:621 +#: gsmlib/gsm_sms.cc:729 gsmlib/gsm_sms.cc:836 +msgid "Protocol identifier: 0x" +msgstr "" + +#: gsmlib/gsm_sms.cc:294 gsmlib/gsm_sms.cc:454 gsmlib/gsm_sms.cc:733 +#: gsmlib/gsm_sms.cc:840 +msgid "Data coding scheme: " +msgstr "" + +#: gsmlib/gsm_sms.cc:295 gsmlib/gsm_sms.cc:536 gsmlib/gsm_sms.cc:830 +msgid "SC timestamp: " +msgstr "" + +#: gsmlib/gsm_sms.cc:296 gsmlib/gsm_sms.cc:456 gsmlib/gsm_sms.cc:735 +#: gsmlib/gsm_sms.cc:842 +msgid "User data length: " +msgstr "" + +#: gsmlib/gsm_sms.cc:297 gsmlib/gsm_sms.cc:457 +msgid "User data header: 0x" +msgstr "" + +#: gsmlib/gsm_sms.cc:302 gsmlib/gsm_sms.cc:461 gsmlib/gsm_sms.cc:736 +#: gsmlib/gsm_sms.cc:843 +msgid "User data: '" +msgstr "" + +#: gsmlib/gsm_sms.cc:425 +msgid "Message type: SMS-SUBMIT" +msgstr "" + +#: gsmlib/gsm_sms.cc:427 +msgid "Reject duplicates: " +msgstr "" + +#: gsmlib/gsm_sms.cc:428 +msgid "Validity period format: " +msgstr "" + +#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:184 +msgid "not present" +msgstr "" + +#: gsmlib/gsm_sms.cc:435 +msgid "relative" +msgstr "" + +#: gsmlib/gsm_sms.cc:438 +msgid "absolute" +msgstr "" + +#: gsmlib/gsm_sms.cc:448 gsmlib/gsm_sms.cc:620 +msgid "Status report request: " +msgstr "" + +#: gsmlib/gsm_sms.cc:449 gsmlib/gsm_sms.cc:534 gsmlib/gsm_sms.cc:619 +msgid "Message reference: " +msgstr "" + +#: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 +msgid "Destination address: '" +msgstr "" + +#: gsmlib/gsm_sms.cc:455 +msgid "Validity period: " +msgstr "" + +#: gsmlib/gsm_sms.cc:530 +msgid "Message type: SMS-STATUS-REPORT" +msgstr "" + +#: gsmlib/gsm_sms.cc:533 +msgid "Status report qualifier: " +msgstr "" + +#: gsmlib/gsm_sms.cc:535 +msgid "Recipient address: '" +msgstr "" + +#: gsmlib/gsm_sms.cc:537 +msgid "Discharge time: " +msgstr "" + +#: gsmlib/gsm_sms.cc:538 +msgid "Status: 0x" +msgstr "" + +#: gsmlib/gsm_sms.cc:617 +msgid "Message type: SMS-COMMAND" +msgstr "" + +#: gsmlib/gsm_sms.cc:623 +msgid "Command type: 0x" +msgstr "" + +#: gsmlib/gsm_sms.cc:625 +msgid "Message number: " +msgstr "" + +#: gsmlib/gsm_sms.cc:628 +msgid "Command data length: " +msgstr "" + +#: gsmlib/gsm_sms.cc:629 +msgid "Command data: '" +msgstr "" + +#: gsmlib/gsm_sms.cc:722 +msgid "Message type: SMS-DELIVER-REPORT" +msgstr "" + +#: gsmlib/gsm_sms.cc:724 gsmlib/gsm_sms.cc:831 +msgid "Protocol identifier present: " +msgstr "" + +#: gsmlib/gsm_sms.cc:726 gsmlib/gsm_sms.cc:833 +msgid "Data coding scheme present: " +msgstr "" + +#: gsmlib/gsm_sms.cc:727 gsmlib/gsm_sms.cc:834 +msgid "User data length present: " +msgstr "" + +#: gsmlib/gsm_sms.cc:828 +msgid "Message type: SMS-SUBMIT-REPORT" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:189 gsmlib/gsm_sms_codec.cc:191 +msgid " minutes" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:193 +msgid " days" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:195 +msgid " weeks" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:214 +msgid "compressed " +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:219 +msgid "voicemail message waiting" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:222 +msgid "fax message waiting" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:225 +msgid "electronic mail message waiting" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:228 +msgid "other message waiting" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:235 +msgid "default alphabet" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:238 +msgid "8-bit alphabet" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:241 +msgid "16-bit alphabet" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:244 +msgid "reserved alphabet" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:257 +msgid "bad hexadecimal PDU format" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:286 gsmlib/gsm_sms_codec.cc:296 +#: gsmlib/gsm_sms_codec.cc:311 gsmlib/gsm_sms_codec.cc:319 +#: gsmlib/gsm_sms_codec.cc:340 gsmlib/gsm_sms_codec.cc:348 +#: gsmlib/gsm_sms_codec.cc:369 gsmlib/gsm_sms_codec.cc:383 +msgid "premature end of PDU" +msgstr "" + +#: gsmlib/gsm_sms_codec.cc:474 +msgid "unknown time period format" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:121 +msgid "interrupted when reading from TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:136 +msgid "end of file when reading from TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:146 +msgid "reading from TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:151 +msgid "timeout when reading from TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:178 +#, c-format +msgid "opening device '%s'" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:185 +msgid "getting file status flags failed" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:190 +msgid "switching of non-blocking mode failed" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:205 +msgid "clearing DTR failed" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:211 +msgid "setting DTR failed" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:216 +#, c-format +msgid "tcgetattr device '%s'" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:245 +#, c-format +msgid "tcsetattr device '%s'" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:303 +#, c-format +msgid "reset modem failed '%s'" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:348 gsmlib/gsm_unix_serial.cc:380 +msgid "interrupted when writing to TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:363 gsmlib/gsm_unix_serial.cc:372 +msgid "writing to TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:393 +msgid "timeout when writing to TA" +msgstr "" + +#: gsmlib/gsm_unix_serial.cc:454 +#, c-format +msgid "unknown baudrate '%s'" +msgstr "" + +#: gsmlib/gsm_util.cc:206 +#, c-format +msgid "error when calling stat('%s') (errno: %d/%s)" +msgstr "" + +#: gsmlib/gsm_util.cc:237 +#, c-format +msgid "file '%s' is neither file nor character device" +msgstr "" + +#: gsmlib/gsm_util.cc:241 +msgid "maxmimum number of symbolic links exceeded" +msgstr "" + +#: gsmlib/gsm_util.cc:251 +#, c-format +msgid "error renaming '%s' to '%s'" +msgstr "" + +#: gsmlib/gsm_util.cc:349 +#, c-format +msgid "text '%s' contains illegal character '\"'" +msgstr "" + +#: gsmlib/gsm_util.cc:359 +#, c-format +msgid "illegal character in telephone number '%s'" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:96 +#, c-format +msgid "error reading from file '%s" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:110 +#, c-format +msgid "entry '%s' lacks index" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:119 gsmlib/gsm_sorted_phonebook.cc:125 +#, c-format +msgid "line '%s' has invalid format" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_sms_store.cc:159 +#, c-format +msgid "error opening file '%s' for writing" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:175 gsmlib/gsm_sorted_phonebook.cc:194 +#: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 +msgid "" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:193 gsmlib/gsm_sorted_sms_store.cc:66 +#, c-format +msgid "error writing to file '%s'" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:217 +msgid "attempt to change phonebook read from " +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:230 gsmlib/gsm_sorted_sms_store.cc:215 +#, c-format +msgid "cannot open file '%s'" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:245 gsmlib/gsm_sorted_sms_store.cc:55 +#: gsmlib/gsm_sorted_sms_store.cc:228 +msgid "" +msgstr "" + +#: gsmlib/gsm_sorted_phonebook.cc:362 +msgid "indices must be unique in phonebook" +msgstr "" + +#: gsmlib/gsm_sorted_sms_store.cc:54 +#, c-format +msgid "error reading from file '%s'" +msgstr "" + +#: gsmlib/gsm_sorted_sms_store.cc:87 +#, c-format +msgid "file '%s' has wrong version" +msgstr "" + +#: gsmlib/gsm_sorted_sms_store.cc:99 gsmlib/gsm_sorted_sms_store.cc:111 +#, c-format +msgid "corrupt SMS store file '%s'" +msgstr "" + +#: gsmlib/gsm_sorted_sms_store.cc:204 +msgid "attempt to change SMS store read from " +msgstr "" diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id new file mode 100644 index 0000000000..9788f70238 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/po/stamp-cat-id @@ -0,0 +1 @@ +timestamp diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am new file mode 100644 index 0000000000..53f51ac19a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.am @@ -0,0 +1,15 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: scripts Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 5.6.1999 +# ************************************************************************* + +EXTRA_DIST = config.sub ltconfig missing \ + config.guess install-sh ltmain.sh mkinstalldirs debugconfig.sh diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in new file mode 100644 index 0000000000..6129036172 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/Makefile.in @@ -0,0 +1,259 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: scripts Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 5.6.1999 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = config.sub ltconfig missing \ + config.guess install-sh ltmain.sh mkinstalldirs debugconfig.sh + +subdir = scripts +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in config.guess config.rpath \ + config.sub depcomp install-sh ltconfig ltmain.sh missing \ + mkinstalldirs +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu scripts/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-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 + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-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-generic \ + mostlyclean-libtool 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess new file mode 100755 index 0000000000..f32079abda --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.guess @@ -0,0 +1,1526 @@ +#! /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-01-23' + +# 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 + +# 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) + 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-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + 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-gnu"; 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-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + 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="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + 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-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + 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-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # 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 ;; + 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath new file mode 100755 index 0000000000..5ead7586a7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/config.rpath @@ -0,0 +1,513 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2002 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shlibext= + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix3* | aix4* | aix5*) + wl='-Wl,' + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6*) + wl='-Wl,' + ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + : + else + # Intel icc + wl='-Qoption,ld,' + fi + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + if test "x$host_vendor" = xsni; then + wl='-LD' + else + wl='-Wl,' + fi + ;; + esac +fi + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +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 + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + ;; + amigaos*) + 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 use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; 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 + 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 + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + 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 + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + fi + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + 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=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=yes + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9* | hpux10* | hpux11*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + ;; + irix5* | irix6*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + sco3.2v5*) + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + if test "x$host_vendor" = xsno; then + hardcode_direct=yes # is this really true??? + else + hardcode_direct=no # Motorola manual says yes, but my tests say they lie + fi + ;; + sysv4.3*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5uw7* | unixware7*) + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +libname_spec='lib$name' +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +case "$host_os" in + aix3*) + shlibext=so + ;; + aix4* | aix5*) + shlibext=so + ;; + amigaos*) + shlibext=ixlibrary + ;; + beos*) + shlibext=so + ;; + bsdi4*) + shlibext=so + 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" + ;; + cygwin* | mingw* | pw32*) + case $GCC,$host_os in + yes,cygwin*) + shlibext=dll.a + ;; + yes,mingw*) + shlibext=dll + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + shlibext=dll + ;; + *) + shlibext=dll + ;; + esac + ;; + darwin* | rhapsody*) + shlibext=dylib + ;; + freebsd1*) + ;; + freebsd*) + shlibext=so + ;; + gnu*) + shlibext=so + ;; + hpux9* | hpux10* | hpux11*) + shlibext=sl + ;; + irix5* | irix6*) + shlibext=so + case "$host_os" in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 ") libsuff= shlibsuff= ;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + ;; + linux-gnu*) + shlibext=so + ;; + netbsd*) + shlibext=so + ;; + newsos6) + shlibext=so + ;; + openbsd*) + shlibext=so + ;; + os2*) + libname_spec='$name' + shlibext=dll + ;; + osf3* | osf4* | osf5*) + shlibext=so + 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" + ;; + sco3.2v5*) + shlibext=so + ;; + solaris*) + shlibext=so + ;; + sunos4*) + shlibext=so + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + shlibext=so + case "$host_vendor" in + motorola) + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + uts4*) + shlibext=so + ;; + dgux*) + shlibext=so + ;; + sysv4*MP*) + if test -d /usr/nec; then + shlibext=so + fi + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. 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 \ + | 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 \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | 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[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) + 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-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | 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[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-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-*) + ;; + # 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 + ;; + 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 + ;; + 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 + ;; + 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 + ;; + 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* \ + | -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*) + # 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 + ;; + -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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh new file mode 100755 index 0000000000..c9f597fed4 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/debugconfig.sh @@ -0,0 +1,3 @@ +#! /bin/sh + +CXXFLAGS="-g -Wall" ./configure --disable-shared diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp new file mode 100755 index 0000000000..807b991f4a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/depcomp @@ -0,0 +1,423 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, 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 . + +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 +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +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. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + 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. 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. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + 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,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$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" + ;; + +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 + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab 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 proprocessed 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'. We will use -o /dev/null later, + # however we can't do the remplacement now because + # `-o $object' might simply not be used + 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 + "$@" -o /dev/null $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 $? + # 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 ;; + -*) + ;; + *) + 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 proprocessed 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 '/^# [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 proprocessed 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 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh new file mode 100755 index 0000000000..e8436696c1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/install-sh @@ -0,0 +1,250 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# 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. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# 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 $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig new file mode 100755 index 0000000000..e3afc39777 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltconfig @@ -0,0 +1,3115 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 lot of this script is taken from autoconf-2.10. + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +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`} + case X$UNAME in + *-DOS) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +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' || + test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then + # 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. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$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' && + test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 ltconfig 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' && + test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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 test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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}" "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^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' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.3.5 +TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +default_ofile=libtool +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +enable_static=yes +enable_fast_install=yes +enable_dlopen=unknown +enable_win32_dll=no +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +ofile="$default_ofile" +verify_host=yes +with_gcc=no +with_gnu_ld=no +need_locks=yes +ac_ext=c +objext=o +libext=a +exeext= +cache_file= + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LDFLAGS="$LDFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_LIBS="$LIBS" +old_NM="$NM" +old_RANLIB="$RANLIB" +old_DLLTOOL="$DLLTOOL" +old_OBJDUMP="$OBJDUMP" +old_AS="$AS" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test ! -f "$ltmain"; then + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi +if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi + +if test -n "$cache_file" && test -r "$cache_file"; then + echo "loading cache $cache_file within ltconfig" + . $cache_file +fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. + srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$SHELL $ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$SHELL $ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +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 + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# Set a sane default for `OBJDUMP'. +test -z "$OBJDUMP" && OBJDUMP=objdump + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$AS" && AS=as + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for object suffix... $ac_c" 1>&6 +$rm conftest* +echo 'int i = 1;' > conftest.c +echo "$progname:603: checking for object suffix" >& 5 +if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* +echo "$ac_t$objext" 1>&6 + +echo $ac_n "checking for executable suffix... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_exeext="no" + $rm conftest* + echo 'main () { return 0; }' > conftest.c + echo "$progname:629: checking for executable suffix" >& 5 + if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c | *.err | *.$objext ) ;; + *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; + esac + done + else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* +fi +if test "X$ac_cv_exeext" = Xno; then + exeext="" +else + exeext="$ac_cv_exeext" +fi +echo "$ac_t$ac_cv_exeext" 1>&6 + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + + case "$host_os" in + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + link_static_flag="$link_static_flag ${wl}-lC" + ;; + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + 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'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + sysv4*MP*) + if test -d /usr/nec; then + pic_flag=-Kconform_pic + fi + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + sysv4*MP*) + if test -d /usr/nec ;then + pic_flag='-Kconform_pic' + link_static_flag='-Bstatic' + fi + ;; + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + case "$host_os" in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + ;; + *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + ;; + esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check to see if options -o and -c are simultaneously supported by compiler +echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +$rm conftest* +echo "int some_variable = 0;" > conftest.c +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.o" +echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 +if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else + echo "$ac_t"yes 1>&6 + compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 +if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else + echo "$ac_t"yes 1>&6 + compiler_o_lo=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_o_lo=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&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 "$ac_t$hard_links" 1>&6 + $rm conftest* + if test "$hard_links" = no; then + echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 + need_locks=warn + fi +else + need_locks=no +fi + +if test "$with_gcc" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" + echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_rtti_exceptions=no + else + echo "$ac_t"yes 1>&6 + compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_rtti_exceptions=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi + +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftest.dat + if ln -s X conftest.dat 2>/dev/null; then + $rm conftest.dat + LN_S="ln -s" + else + LN_S=ln + fi + if test "$LN_S" = "ln -s"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path 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 are not 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 $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +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 egrep regular expression 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. + +case "$host_os" in +cygwin* | mingw*) + # 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 "$with_gcc" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in + aix3* | aix4*) + # On AIX, the GNU linker is very broken + 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 + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': 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 $linkopts ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw*) + # 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=yes + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left by newer dlltools. + export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' + + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done~ + test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' + # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep '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 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + 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 $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_separator=':' + if test "$with_gcc" = yes; then + 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 + shared_flag='-shared' + else + shared_flag='${wl}-bM:SRE' + hardcode_direct=yes + fi + allow_undefined_flag=' ${wl}-berok' + archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' + archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' + case "$host_os" in aix4.[01]|aix4.[01].*) + # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on + always_export_symbols=yes ;; + esac + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 + ;; + + cygwin* | mingw*) + # 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 + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $linkopts `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' + fix_srcfile_path='`cygpath -w $srcfile`' + ;; + + 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 $linkopts /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 $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case "$host_os" in + hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF + fi + hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${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 the -msym flag + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + rhapsody*) + archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flags_spec='-L$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + 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 $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case "$host_os" in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + 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 $linkopts' + else + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + 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 $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + unixware7*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 +test "$ld_shlibs" = no && can_build_shared=no + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/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 + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + break + else + NM=${NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# 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 the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + $rm conftest* + cat > conftest.c <&5 + if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + + cat <> conftest.c +#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/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$objext conftstm.$objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + 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 $global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + global_symbol_pipe= + fi +done +if test "$pipe_works" = yes; then + echo "${ac_t}ok" 1>&6 +else + echo "${ac_t}failed" 1>&6 +fi + +if test -z "$global_symbol_pipe"; then + global_symbol_to_cdecl= +fi + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; 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 "$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 "$ac_t$hardcode_action" 1>&6 + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linkers may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" 1>&6 +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +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" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +file_magic_cmd= +file_magic_test_file= +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 egrep 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. +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4*) + version_type=linux + # AIX 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. + # We preserve .a as extension for shared libraries though AIX4.2 + # and later linker supports .so + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + ;; + +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}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + deplibs_check_method=pass_all + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + 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" + export_dynamic_flag_spec=-rdynamic + # 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*) + version_type=windows + need_version=no + need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' + deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + file_magic_cmd='${OBJDUMP} -f' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case "$version_type" in + freebsd-elf*) + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + deplibs_check_method=unknown + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case "$host_os" in + freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method=pass_all + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + case "$host_os" in + hpux10.20*) + # TODO: Does this work for hpux-11 too? + deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' + case "$host_os" in + irix5*) + libsuff= shlibsuff= + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case "$LD" in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") 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}" + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib${libsuff}/libc.so*` + deplibs_check_method='pass_all' + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + deplibs_check_method=pass_all + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd*) + version_type=sunos + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method='file_magic COFF format alpha shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + deplibs_check_method='pass_all' + 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" + ;; + +rhapsody*) + version_type=sunos + library_names_spec='${libname}.so' + soname_spec='${libname}.so' + shlibpath_var=DYLD_LIBRARY_PATH + deplibs_check_method=pass_all + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" + file_magic_cmd=/usr/bin/file + file_magic_test_file=/lib/libc.so + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case "$host_vendor" in + sequent) + file_magic_cmd='/bin/file' + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + ncr) + deplibs_check_method='pass_all' + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + 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]' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" 1>&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in +# configure.in, otherwise build static only libraries. +case "$host_os" in +cygwin* | mingw* | os2*) + if test x$can_build_shared = xyes; then + test x$enable_win32_dll = xno && can_build_shared=no + echo "checking if package supports dlls... $can_build_shared" 1>&6 + fi +;; +esac + +if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then + case "$deplibs_check_method" in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + 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 + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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*) + test "$enable_shared" = yes && enable_static=no + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&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 + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else +if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then + lt_cv_dlopen=no lt_cv_dlopen_libs= +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "$progname:2248: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "$progname:2288: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen(); + +int main() { + +/* 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 +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 +echo "$progname:2335: checking for dld_link in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +echo "$progname:2375: checking for shl_load" >&5 +if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load(); + +int main() { + +/* 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 +shl_load(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_shl_load=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "$progname:2423: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + +fi + +fi + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + fi + + case "$lt_cv_dlopen" in + dlopen) +for ac_hdr in dlfcn.h; do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "$progname:2488: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int fnord = 0; +EOF +ac_try="$ac_compile >/dev/null 2>conftest.out" +{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +done + + if test "x$ac_cv_header_dlfcn_h" = xyes; then + CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + fi + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2526: checking whether a program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self" 1>&6 + + if test "$lt_cv_dlopen_self" = yes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self_static=cross + else + cat > conftest.c < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self_static=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self_static=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 +fi + ;; + 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 + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" +if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ltecho="$CONFIG_SHELL \$0 --fallback-echo" +fi +LTSHELL="$SHELL" + +LTCONFIG_VERSION="$VERSION" + +# Only quote variables if we're using ltmain.sh. +case "$ltmain" in +*.sh) + # Now quote all the things that may contain metacharacters. + for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ + AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ + file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case "$ltecho" in + *'\$0 --fallback-echo"') + ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + + trap "$rm \"$ofile\"; exit 1" 1 2 15 + echo "creating $ofile" + $rm "$ofile" + cat < "$ofile" +#! $SHELL + +# `$echo "$ofile" | 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 ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1999 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +### BEGIN LIBTOOL CONFIG +EOF + cfgfile="$ofile" + ;; + +*) + # Double-quote the variables that need it (for aesthetics). + for var in old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + + # Just create a config file. + cfgfile="$ofile.cfg" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + echo "creating $cfgfile" + $rm "$cfgfile" + cat < "$cfgfile" +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +EOF + ;; +esac + +cat <> "$cfgfile" +# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ +# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# The version of $progname that generated this script. +LTCONFIG_VERSION=$LTCONFIG_VERSION + +# Shell to use when invoking shell scripts. +SHELL=$LTSHELL + +# 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 optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$ltecho + +# The archiver. +AR=$AR + +# The default C compiler. +CC=$CC + +# The linker used to build libraries. +LD=$LD + +# Whether we need hard or soft links. +LN_S=$LN_S + +# A BSD-compatible nm program. +NM=$NM + +# 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=$reload_flag +reload_cmds=$reload_cmds + +# How to pass a linker flag through the compiler. +wl=$wl + +# Object file suffix (normally "o"). +objext="$objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$pic_flag + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$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=$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=$link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$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=$library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$RANLIB +old_archive_cmds=$old_archive_cmds +old_postinstall_cmds=$old_postinstall_cmds +old_postuninstall_cmds=$old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$old_archive_from_new_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$archive_cmds +archive_expsym_cmds=$archive_expsym_cmds +postinstall_cmds=$postinstall_cmds +postuninstall_cmds=$postuninstall_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$global_symbol_to_cdecl + +# 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 + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so 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 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$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=$export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$include_expsyms + +EOF + +case "$ltmain" in +*.sh) + echo '### END LIBTOOL CONFIG' >> "$ofile" + echo >> "$ofile" + case "$host_os" in + aix3*) + cat <<\EOF >> "$ofile" + +# 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 + + # Append the ltmain.sh script. + sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) + # 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? + + chmod +x "$ofile" + ;; + +*) + # Compile the libtool program. + echo "FIXME: would compile $ltmain" + ;; +esac + +test -n "$cache_file" || exit 0 + +# AC_CACHE_SAVE +trap '' 1 2 15 +cat > confcache <<\EOF +# 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. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# 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 \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh new file mode 100644 index 0000000000..db4982d8a9 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/ltmain.sh @@ -0,0 +1,6538 @@ +# 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.20 Debian 1.5.20-2" +TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" + +# 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 + +# 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= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# 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 /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + 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_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$my_xdir"; then + 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\" + +# 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 ;; + --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 + +# 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 ;; + 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 + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_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 + 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) + 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) + prev=darwin_framework + compiler_flags="$compiler_flags $arg" + 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 + exit $EXIT_FAILURE + 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*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-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 + 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 + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + + # 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" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + 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) + # 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 + 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 + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + 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 + notinst_path= # paths that contain 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%" + test "X$link_all_deplibs" != Xno && libs="$libs $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'" 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 -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 + if test -n "$library_names" && + { test "$prefer_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* ) 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) + 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" + ;; + *) + $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 + ;; + 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. + test "X$arg" = "X-lc" && continue + ;; + *) + # 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 + + # 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" + 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 + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + 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 + + 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*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + 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"' + 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"' + 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 -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -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. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $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" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + 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 $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" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + 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" | $Xsed -e "$sed_quote_subst"` + 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* ) + cwrappersource=`$echo ${objdir}/lt-${outputname}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#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 '/' +#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 +#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 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(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 ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* 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; +EOF + + cat >> $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 +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +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 -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' + +# 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 \${1+\"\$@\"}\" + 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" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + 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" | $Xsed -e "$sed_quote_subst"` + 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" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + 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="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $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 "----------------------------------------------------------------------" + $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 "----------------------------------------------------------------------" + 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 + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # 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" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + 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. + fi + 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 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 +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing new file mode 100755 index 0000000000..6a37006e8f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, 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=: + +# 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 + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -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' + 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]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + 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' is missing on your system. 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # 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 you do not seem to have it handy on your + system. 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 prerequirements 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 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs new file mode 100755 index 0000000000..4324e052bb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/scripts/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1 1999/06/27 07:45:05 cvs Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in new file mode 100644 index 0000000000..9788f70238 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/stamp-h.in @@ -0,0 +1 @@ +timestamp diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am new file mode 100644 index 0000000000..5213164a76 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.am @@ -0,0 +1,65 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: tests Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 21.5.1999 +# ************************************************************************* + +INCLUDES = -I.. + +noinst_PROGRAMS = testsms testsms2 testparser testgsmlib testpb testpb2 \ + testspb testssms testcb + +TESTS = runspb.sh runspb2.sh runssms.sh runsms.sh \ + runparser.sh runspbi.sh + +# test files used for file-based phonebook and SMS testing +EXTRA_DIST = spb.pb runspb.sh runspb2.sh runssms.sh runsms.sh \ + runparser.sh \ + spb.pb spb2.pb \ + testparser-output.txt testspb-output.txt \ + testssms-output.txt testsms-output.txt \ + testspb2-output.txt \ + runspbi.sh spbi2-orig.pb spbi1.pb testspbi-output.txt + +# build testsms from testsms.cc and libgsmme.la +testsms_SOURCES = testsms.cc +testsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testsms2 from testsms2.cc and libgsmme.la +testsms2_SOURCES = testsms2.cc +testsms2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testparser from testparser.cc and libgsmme.la +testparser_SOURCES = testparser.cc +testparser_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testgsmlib from testgsmlib.cc and libgsmme.la +testgsmlib_SOURCES = testgsmlib.cc +testgsmlib_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testpb from testpb.cc and libgsmme.la +testpb_SOURCES = testpb.cc +testpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testpb2 from testpb2.cc and libgsmme.la +testpb2_SOURCES = testpb2.cc +testpb2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testspb from testspb.cc and libgsmme.la +testspb_SOURCES = testspb.cc +testspb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testssms from testssms.cc and libgsmme.la +testssms_SOURCES = testssms.cc +testssms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testcb from testcb.cc and libgsmme.la +testcb_SOURCES = testcb.cc +testcb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in new file mode 100644 index 0000000000..e949e268ff --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/Makefile.in @@ -0,0 +1,544 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: tests Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 21.5.1999 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +INCLUDES = -I.. + +noinst_PROGRAMS = testsms testsms2 testparser testgsmlib testpb testpb2 \ + testspb testssms testcb + + +TESTS = runspb.sh runspb2.sh runssms.sh runsms.sh \ + runparser.sh runspbi.sh + + +# test files used for file-based phonebook and SMS testing +EXTRA_DIST = spb.pb runspb.sh runspb2.sh runssms.sh runsms.sh \ + runparser.sh \ + spb.pb spb2.pb \ + testparser-output.txt testspb-output.txt \ + testssms-output.txt testsms-output.txt \ + testspb2-output.txt \ + runspbi.sh spbi2-orig.pb spbi1.pb testspbi-output.txt + + +# build testsms from testsms.cc and libgsmme.la +testsms_SOURCES = testsms.cc +testsms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testsms2 from testsms2.cc and libgsmme.la +testsms2_SOURCES = testsms2.cc +testsms2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testparser from testparser.cc and libgsmme.la +testparser_SOURCES = testparser.cc +testparser_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testgsmlib from testgsmlib.cc and libgsmme.la +testgsmlib_SOURCES = testgsmlib.cc +testgsmlib_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testpb from testpb.cc and libgsmme.la +testpb_SOURCES = testpb.cc +testpb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testpb2 from testpb2.cc and libgsmme.la +testpb2_SOURCES = testpb2.cc +testpb2_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testspb from testspb.cc and libgsmme.la +testspb_SOURCES = testspb.cc +testspb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testssms from testssms.cc and libgsmme.la +testssms_SOURCES = testssms.cc +testssms_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) + +# build testcb from testcb.cc and libgsmme.la +testcb_SOURCES = testcb.cc +testcb_LDADD = ../gsmlib/libgsmme.la $(INTLLIBS) +subdir = tests +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +noinst_PROGRAMS = testsms$(EXEEXT) testsms2$(EXEEXT) testparser$(EXEEXT) \ + testgsmlib$(EXEEXT) testpb$(EXEEXT) testpb2$(EXEEXT) \ + testspb$(EXEEXT) testssms$(EXEEXT) testcb$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) + +am_testcb_OBJECTS = testcb.$(OBJEXT) +testcb_OBJECTS = $(am_testcb_OBJECTS) +testcb_DEPENDENCIES = ../gsmlib/libgsmme.la +testcb_LDFLAGS = +am_testgsmlib_OBJECTS = testgsmlib.$(OBJEXT) +testgsmlib_OBJECTS = $(am_testgsmlib_OBJECTS) +testgsmlib_DEPENDENCIES = ../gsmlib/libgsmme.la +testgsmlib_LDFLAGS = +am_testparser_OBJECTS = testparser.$(OBJEXT) +testparser_OBJECTS = $(am_testparser_OBJECTS) +testparser_DEPENDENCIES = ../gsmlib/libgsmme.la +testparser_LDFLAGS = +am_testpb_OBJECTS = testpb.$(OBJEXT) +testpb_OBJECTS = $(am_testpb_OBJECTS) +testpb_DEPENDENCIES = ../gsmlib/libgsmme.la +testpb_LDFLAGS = +am_testpb2_OBJECTS = testpb2.$(OBJEXT) +testpb2_OBJECTS = $(am_testpb2_OBJECTS) +testpb2_DEPENDENCIES = ../gsmlib/libgsmme.la +testpb2_LDFLAGS = +am_testsms_OBJECTS = testsms.$(OBJEXT) +testsms_OBJECTS = $(am_testsms_OBJECTS) +testsms_DEPENDENCIES = ../gsmlib/libgsmme.la +testsms_LDFLAGS = +am_testsms2_OBJECTS = testsms2.$(OBJEXT) +testsms2_OBJECTS = $(am_testsms2_OBJECTS) +testsms2_DEPENDENCIES = ../gsmlib/libgsmme.la +testsms2_LDFLAGS = +am_testspb_OBJECTS = testspb.$(OBJEXT) +testspb_OBJECTS = $(am_testspb_OBJECTS) +testspb_DEPENDENCIES = ../gsmlib/libgsmme.la +testspb_LDFLAGS = +am_testssms_OBJECTS = testssms.$(OBJEXT) +testssms_OBJECTS = $(am_testssms_OBJECTS) +testssms_DEPENDENCIES = ../gsmlib/libgsmme.la +testssms_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/testcb.Po ./$(DEPDIR)/testgsmlib.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/testparser.Po ./$(DEPDIR)/testpb.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/testpb2.Po ./$(DEPDIR)/testsms.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/testsms2.Po ./$(DEPDIR)/testspb.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/testssms.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(testcb_SOURCES) $(testgsmlib_SOURCES) \ + $(testparser_SOURCES) $(testpb_SOURCES) $(testpb2_SOURCES) \ + $(testsms_SOURCES) $(testsms2_SOURCES) $(testspb_SOURCES) \ + $(testssms_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(testcb_SOURCES) $(testgsmlib_SOURCES) $(testparser_SOURCES) $(testpb_SOURCES) $(testpb2_SOURCES) $(testsms_SOURCES) $(testsms2_SOURCES) $(testspb_SOURCES) $(testssms_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +testcb$(EXEEXT): $(testcb_OBJECTS) $(testcb_DEPENDENCIES) + @rm -f testcb$(EXEEXT) + $(CXXLINK) $(testcb_LDFLAGS) $(testcb_OBJECTS) $(testcb_LDADD) $(LIBS) +testgsmlib$(EXEEXT): $(testgsmlib_OBJECTS) $(testgsmlib_DEPENDENCIES) + @rm -f testgsmlib$(EXEEXT) + $(CXXLINK) $(testgsmlib_LDFLAGS) $(testgsmlib_OBJECTS) $(testgsmlib_LDADD) $(LIBS) +testparser$(EXEEXT): $(testparser_OBJECTS) $(testparser_DEPENDENCIES) + @rm -f testparser$(EXEEXT) + $(CXXLINK) $(testparser_LDFLAGS) $(testparser_OBJECTS) $(testparser_LDADD) $(LIBS) +testpb$(EXEEXT): $(testpb_OBJECTS) $(testpb_DEPENDENCIES) + @rm -f testpb$(EXEEXT) + $(CXXLINK) $(testpb_LDFLAGS) $(testpb_OBJECTS) $(testpb_LDADD) $(LIBS) +testpb2$(EXEEXT): $(testpb2_OBJECTS) $(testpb2_DEPENDENCIES) + @rm -f testpb2$(EXEEXT) + $(CXXLINK) $(testpb2_LDFLAGS) $(testpb2_OBJECTS) $(testpb2_LDADD) $(LIBS) +testsms$(EXEEXT): $(testsms_OBJECTS) $(testsms_DEPENDENCIES) + @rm -f testsms$(EXEEXT) + $(CXXLINK) $(testsms_LDFLAGS) $(testsms_OBJECTS) $(testsms_LDADD) $(LIBS) +testsms2$(EXEEXT): $(testsms2_OBJECTS) $(testsms2_DEPENDENCIES) + @rm -f testsms2$(EXEEXT) + $(CXXLINK) $(testsms2_LDFLAGS) $(testsms2_OBJECTS) $(testsms2_LDADD) $(LIBS) +testspb$(EXEEXT): $(testspb_OBJECTS) $(testspb_DEPENDENCIES) + @rm -f testspb$(EXEEXT) + $(CXXLINK) $(testspb_LDFLAGS) $(testspb_OBJECTS) $(testspb_LDADD) $(LIBS) +testssms$(EXEEXT): $(testssms_OBJECTS) $(testssms_DEPENDENCIES) + @rm -f testssms$(EXEEXT) + $(CXXLINK) $(testssms_LDFLAGS) $(testssms_OBJECTS) $(testssms_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgsmlib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testparser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testpb2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testsms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testsms2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testspb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testssms.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cc.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cc.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cc.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +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: $(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 "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_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 + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-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 + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: GTAGS all all-am check check-TESTS check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-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 \ + 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh new file mode 100755 index 0000000000..9ee9d312f5 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runparser.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +errorexit() { + echo $1 + exit 1 +} + +# run the test +./testparser > testparser.log + +# check if output differs from what it should be +diff testparser.log testparser-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh new file mode 100755 index 0000000000..f027544ee7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runsms.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +errorexit() { + echo $1 + exit 1 +} + +# prepare locales to make date format reproducible +LC_ALL=en_US +LANG=en +LINGUAS=en +export LC_ALL LANG LINGUAS + +# run the test +./testsms > testsms.log + +# check if output differs from what it should be +diff testsms.log testsms-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh new file mode 100755 index 0000000000..fb8c6200f8 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +errorexit() { + echo $1 + exit 1 +} + +cp spb.pb spb-copy.pb || errorexit "could not copy spb.pb to spb-copy.pb" + +# run the test +./testspb > testspb.log + +# add new contents of phonebook file to the test log +cat spb-copy.pb >> testspb.log + +# check if output differs from what it should be +diff testspb.log testspb-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh new file mode 100755 index 0000000000..df8f123cae --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspb2.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +errorexit() { + echo $1 + exit 1 +} + +cp spb2.pb spb-copy.pb || errorexit "could not copy spb2.pb to spb2-copy.pb" + +# run the test +./testspb > testspb2.log + +# add new contents of phonebook file to the test log +cat spb-copy.pb >> testspb2.log + +# check if output differs from what it should be +diff testspb2.log testspb2-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh new file mode 100755 index 0000000000..94b5b459a4 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runspbi.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +errorexit() { + echo $1 + exit 1 +} + +cp spbi2-orig.pb spbi2.pb || + errorexit "could not copy spbi2-orig.pb to spbi2.pb" + +# run the test +../apps/gsmpb -V -i -s spbi1.pb -d spbi2.pb > testspbi.log + +# add new contents of phonebook file to the test log +cat spbi2.pb >> testspbi.log + +# check if output differs from what it should be +diff testspbi.log testspbi-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh new file mode 100755 index 0000000000..5b11442189 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/runssms.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +errorexit() { + echo $1 + exit 1 +} + +rm -f sms.sms || errorexit "could not delete sms.sms" +touch sms.sms || errorexit "could not create sms.sms" + +# prepare locales to make date format reproducible +LC_ALL=en_US +LANG=en +LINGUAS=en +export LC_ALL LANG LINGUAS + +# run the test +./testssms > testssms.log + +# check if output differs from what it should be +diff testssms.log testssms-output.txt diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb new file mode 100644 index 0000000000..debd672369 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb.pb @@ -0,0 +1,11 @@ +|Dieter Meier|793045 +|Edgar Hofmann|42345 +|Goethe|847159 +|Hans Hofmann|12345 +|Hans-Dieter Schmidt|82345 +|Hans-Dieter Schmidt|13333345 +|Heiner Müller|7890 +|line with \||0815 +|line with\\|0815 +|One line\rback to start|0815 +|two\nline|0815 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb new file mode 100644 index 0000000000..ed0c16cc73 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spb2.pb @@ -0,0 +1,11 @@ +|Dieter Meier|017793045 +|Edgar Hofmann|+4942345 +|Goethe|847159 +|Hans Hofmann|0171 +|Hans-Dieter Schmidt|82345 +|Hans-Dieter Schmidt|13333345 +|Heiner Müller|7890 +|line with \||0815 +|line with\\|0815 +|One line\rback to start|0815 +|two\nline|0815 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb new file mode 100644 index 0000000000..11b913f254 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi1.pb @@ -0,0 +1,3 @@ +1|Nummer 4|4444444 +3|Nummer 3|3333333 +5|same name|12345 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb new file mode 100644 index 0000000000..90f2337bbd --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/spbi2-orig.pb @@ -0,0 +1,4 @@ +2|Nummer 3|3333333 +4|Nummer 4|4444444 +5|same name|23456 + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc new file mode 100644 index 0000000000..59617d864f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testcb.cc @@ -0,0 +1,40 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: testcb.cc +// * +// * Purpose: Test cell broadcast SMS +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 3.8.2001 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +int main(int argc, char *argv[]) +{ + try + { + CBMessageRef cbm = new CBMessage("001000320111C3343D0F82C51A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D100"); + + cout << cbm->toString(); + + cbm = new CBMessage("001000320111C4EAB3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D168341A8D46A3D100"); + + cout << cbm->toString(); + } + catch (GsmException &ge) + { + cerr << argv[0] << _("[ERROR]: ") << ge.what() << endl; + } +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc new file mode 100644 index 0000000000..d3fac84f5c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc @@ -0,0 +1,178 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: testgsmlib.cc +// * +// * Purpose: Test general gsm functions (without SMS/phonebook) +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 17.5.1999 +// ************************************************************************* +#ifdef HAVE_CONFIG_H +#include +#endif +#ifdef WIN32 +#include +#else +#include +#endif +#include +#include + +using namespace std; +using namespace gsmlib; + +// some time-consuming tests can be switched off by commenting out the +// following macros +#define TEST_OPERATOR_INFO + +void printForwardReason(string s, ForwardInfo &info) +{ + cout << " " << s << ": " + << (info._active ? "active " : "inactive ") + << "number: " << info._number + << " subaddr: " << info._subAddr + << " time: " << info._time << endl; +} + +int main(int argc, char *argv[]) +{ + try + { + cout << (string)"Opening device " + argv[1] << endl; +#ifdef WIN32 + Ref port = new Win32SerialPort((string)argv[1], 38400); +#else + Ref port = new UnixSerialPort((string)argv[1], B38400); +#endif + + cout << "Creating MeTa object" << endl; + MeTa m(port); + + cout << "Getting ME info" << endl; + MEInfo mei = m.getMEInfo(); + + cout << " Manufacturer: " << mei._manufacturer << endl + << " Model: " << mei._model << endl + << " Revision: " << mei._revision << endl + << " Serial Number: " << mei._serialNumber << endl << endl; + +#ifdef TEST_OPERATOR_INFO + try + { + cout << "Getting operator info" << endl; + vector opis = m.getAvailableOPInfo(); + for (vector::iterator i = opis.begin(); i != opis.end(); ++i) + { + cout << " Status: "; + switch (i->_status) + { + case 0: cout << "unknown"; break; + case 1: cout << "current"; break; + case 2: cout << "available"; break; + case 3: cout << "forbidden"; break; + } + cout << endl + << " Long name: '" << i->_longName << "' " + << " Short name: '" << i->_shortName << "' " + << " Numeric name: " << i->_numericName << endl; + } + } + catch (GsmException &ge) + { + if (ge.getErrorCode() == 0) + cout << "phone failure ignored" << endl; + else + throw; + } + cout << endl; +#endif // TEST_OPERATOR_INFO + + cout << "Current operator info" << endl; + OPInfo opi = m.getCurrentOPInfo(); + cout << " Long name: '" << opi._longName << "' " + << " Short name: '" << opi._shortName << "' " + << " Numeric name: " << opi._numericName << endl + << " Mode: "; + switch (opi._mode) + { + case 0: cout << "automatic"; break; + case 1: cout << "manual"; break; + case 2: cout << "deregister"; break; + case 4: cout << "manual/automatic"; break; + } + cout << endl; + + cout << "Facility lock capabilities" << endl << " "; + vector fclc = m.getFacilityLockCapabilities(); + for (vector::iterator i = fclc.begin(); i != fclc.end(); ++i) + cout << *i << " "; + cout << endl << endl; + + cout << "Facility lock states" << endl; + for (vector::iterator k = fclc.begin(); k != fclc.end(); ++k) + if (*k != "AB" && *k != "AG" && *k != "AC") + { + cout << " " << *k; + if (m.getFacilityLockStatus(*k, VoiceFacility)) + cout << " Voice"; + if (m.getFacilityLockStatus(*k, DataFacility)) + cout << " Data"; + if (m.getFacilityLockStatus(*k, FaxFacility)) + cout << " Fax"; + } + cout << endl; + + cout << "Facilities with password" << endl; + vector pwi = m.getPasswords(); + for (vector::iterator j = pwi.begin(); j != pwi.end(); ++j) + cout << " " << j->_facility << " len " << j->_maxPasswdLen << endl; + cout << endl; + + cout << "Network caller line identification identification: " + << (m.getNetworkCLIP() ? "on" : "off") << endl << endl; + + cout << "Call forwarding information" << endl; + for (int r = 0; r < 4; ++r) + { + switch (r) + { + case 0: cout << "UnconditionalReason" << endl; break; + case 1: cout << "MobileBusyReason" << endl; break; + case 2: cout << "NoReplyReason" << endl; break; + case 3: cout << "NotReachableReason" << endl; break; + } + ForwardInfo voice, fax, data; + m.getCallForwardInfo((ForwardReason)r, voice, fax, data); + printForwardReason("Voice", voice); + printForwardReason("Data", data); + printForwardReason("Fax", fax); + } + cout << endl; + + cout << "Battery charge status" << endl; + int bcs = m.getBatteryChargeStatus(); + switch (bcs) + { + case 0: cout << "ME is powered by the battery" << endl; break; + case 1: cout << "ME has a battery connected, but is not powered by it" + << endl; break; + case 2: cout << "ME does not have a battery connected" << endl; break; + case 3: cout << "Recognized power fault, calls inhibited" << endl; break; + } + cout << endl; + + cout << "Battery charge: " << m.getBatteryCharge() << endl << endl; + + cout << "Signal strength: " << m.getSignalStrength() << endl << endl; + + cout << "Bit error rate: " << m.getBitErrorRate() << endl << endl; + } + catch (GsmException &ge) + { + cerr << "GsmException '" << ge.what() << "'" << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt new file mode 100644 index 0000000000..a5b16e7fb3 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser-output.txt @@ -0,0 +1,22 @@ +Test 1 +(),("ME","SM","Which of the three items does not belong here?") + +Test 2 +(1-5),425,"+abcd"efgh" + +Test 3 +(1,2,3,4,5,7,11,12,25),425,Thisisatest."+a"ef"andsoforth + +Test 4 +(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125),(20),16 + +Test 5 +SM,7 + +Test 6 +(2,"S TELIA MOBITEL","S TELIA",24001) + +Error 1: expected ')' (at position 4 of string '(4-5') + +Error 3: expected end of line (at position 5 of string '"bla"bla"') + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc new file mode 100644 index 0000000000..99b178d197 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testparser.cc @@ -0,0 +1,200 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: testparser.cc +// * +// * Purpose: Test AT result code parser +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 17.5.1999 +// ************************************************************************* + +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +void printIntList(vector &vb) +{ + cout << "("; + int j = 0; + bool first = true; + for (vector::iterator i = vb.begin(); + i != vb.end(); ++i) + { + if (*i) + { + if (! first) cout << ","; + cout << j; + first = false; + } + ++j; + } + cout << ")"; +} + +void printIntRange(IntRange ir) +{ + cout << "(" << ir._low << "-" << ir._high << ")"; +} + +void printStringList(vector vs) +{ + bool first = true; + cout << "("; + for (vector::iterator i = vs.begin(); + i != vs.end(); ++i) + { + if (! first) cout << ","; + cout << "\"" << *i << "\""; + first = false; + } + cout << ")"; +} + +int main(int argc, char *argv[]) +{ + try + { + { + cout << "Test 1" << endl; + Parser p((string)",(\"ME\", \"SM\"," + + "\"Which of the three items does not belong here?\")"); + + vector vs1 = p.parseStringList(true); + p.parseComma(); + vector vs2 = p.parseStringList(); + bool comma = p.parseComma(true); + + printStringList(vs1); + cout << ","; + printStringList(vs2); + if (comma) cout << ","; + cout << endl << endl; + } + { + cout << "Test 2" << endl; + Parser p("(1-5),425,\"+abcd\"efgh\""); + + IntRange ir = p.parseRange(); + p.parseComma(); + int i = p.parseInt(); + p.parseComma(); + string s = p.parseString(false, true); + + printIntRange(ir); + cout << "," << i << ",\"" << s << "\"" << endl << endl; + } + { + cout << "Test 3" << endl; + Parser p("(7,1-5,12-11,25),425,This is a test.\"+a\"ef\" and so forth"); + + vector vb = p.parseIntList(); + p.parseComma(); + int i = p.parseInt(); + p.parseComma(); + string s = p.parseEol(); + + printIntList(vb); + cout << "," << i << "," << s << endl << endl; + } + { + cout << "Test 4" << endl; + Parser p("(1-125),20,16"); + + vector vb = p.parseIntList(); + p.parseComma(); + vector vb2 = p.parseIntList(); + p.parseComma(); + int j = p.parseInt(); + + printIntList(vb); + cout << ","; + printIntList(vb2); + cout << "," << j << endl << endl; + } + { + cout << "Test 5" << endl; + Parser p("SM,7"); + + string s = p.parseString(); + p.parseComma(); + int i = p.parseInt(); + + cout << s << "," << i << endl << endl; + } + { + cout << "Test 6" << endl; + Parser p("(2,\"S TELIA MOBITEL\",\"S TELIA\",\"24001\")"); + + p.parseChar('('); + int status = p.parseInt(); + p.parseComma(); + string longName = p.parseString(true); + p.parseComma(); + string shortName = p.parseString(true); + p.parseComma(); + int numericName; + try + { + numericName = p.parseInt(true); + } + catch (GsmException &e) + { + if (e.getErrorClass() == ParserError) + { + // the Ericsson GM12 GSM modem returns the numeric ID as string + string s = p.parseString(); + numericName = checkNumber(s); + } + else + throw e; + } + p.parseChar(')'); + + cout << "(" << status << ",\"" << longName << "\",\"" + << shortName << "\"," + << numericName << ")" << endl << endl; + } + } + catch (GsmException &p) + { + // these tests shouldn't throw exceptions + assert(0); + } + + // Now some tests that should provoke an error + try + { + Parser p("(4-5"); + p.parseRange(); + } + catch (GsmException &p) + { + cout << "Error 1: " << p.what() << endl << endl; + } + try + { + Parser p("(4-5,3-4-5)"); + p.parseIntList(); + } + catch (GsmException &p) + { + cout << "Error 2: " << p.what() << endl << endl; + } + try + { + Parser p("\"bla\"bla\""); + p.parseString(); + p.checkEol(); + } + catch (GsmException &p) + { + cout << "Error 3: " << p.what() << endl << endl; + } + +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc new file mode 100644 index 0000000000..6f161349ef --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb.cc @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +void printPb(PhonebookEntry &e) +{ + cout << "number: " << e.telephone() + << " text: " << e.text() << endl; +} + +int main(int argc, char *argv[]) +{ + try + { + cout << (string)"Opening device " + argv[1] << endl; + Ref port = new UnixSerialPort((string)argv[1], B38400); + + cout << "Creating MeTa object" << endl; + MeTa m(port); + + cout << "Getting phonebook entries" << endl; + vector pbs = m.getPhoneBookStrings(); + for (vector::iterator i = pbs.begin(); i != pbs.end(); ++i) + { + PhonebookRef pb = m.getPhonebook(*i); + + cout << "Phonebook \"" << *i << "\" " << endl + << " Max number length: " << pb->getMaxTelephoneLen() << endl + << " Max text length: " << pb->getMaxTextLen() << endl + << " Capacity: " << pb->capacity() << endl + << " Size: " << pb->size() << endl; + + for (Phonebook::iterator j = pb->begin(); j != pb->end(); ++j) + if (! j->empty()) + cout << " Entry #" << j - pb->begin() + << "Number: \"" << j->telephone() << "\"" + << "Text: \"" << j->text() << "\"" << endl; + } + } + catch (GsmException &ge) + { + cerr << "GsmException '" << ge.what() << "'" << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc new file mode 100644 index 0000000000..f9769f9bfc --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testpb2.cc @@ -0,0 +1,75 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +bool isbla(PhonebookEntry &e) +{ + // cerr << "****'" << e.text() << "'" << endl; + return e.text() == "blabla"; +} + +int main(int argc, char *argv[]) +{ + try + { + cout << (string)"Opening device " + argv[1] << endl; + Ref port = new UnixSerialPort((string)argv[1], B38400); + + cout << "Creating MeTa object" << endl; + MeTa m(port); + + cout << "Getting phonebook entries" << endl; + vector pbs = m.getPhoneBookStrings(); + if (pbs.begin() == pbs.end()) + { + cerr << "no phonebooks available" << endl; + exit(1); + } + + PhonebookRef pb = m.getPhonebook(*pbs.begin()); + + cout << "Phonebook \"" << pb->name() << "\" " << endl + << " Max number length: " << pb->getMaxTelephoneLen() << endl + << " Max text length: " << pb->getMaxTextLen() << endl + << " Capacity: " << pb->capacity() << endl; + + cout << "Inserting entry 'blabla'" << endl; + PhonebookEntry e("123456", "blabla"); + pb->insert(pb->end(), e); + + int j = -1; + for (int i = 50; i < 60; ++i) + if (pb()[i].empty()) + { + pb()[i].set("23456", "blabla"); + j = i; + break; + } + + pb->erase(pb->begin() + j); + + Phonebook::iterator k; + do + { + k = find_if(pb->begin(), pb->end(), isbla); + if (k != pb->end()) + { + cerr << "Erasing #" << k - pb->begin() << endl; + pb->erase(k, k + 1); + } + } + while (k != pb->end()); + } + catch (GsmException &ge) + { + cerr << "GsmException '" << ge.what() << "'" << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt new file mode 100644 index 0000000000..bee3c53bac --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms-output.txt @@ -0,0 +1,167 @@ +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '171' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 04/16/1999 08:09:44 AM (+0200) +User data length: 160 +User data header: 0x +User data: 'T-D1 News bis 31.05.99 kostenlos testen! Über 90 Programme aus Politik, Wirtschaft, Börse, Sport direkt per SMS aufs Handy. Mehr darüber unter der Kurzwahl 2323' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '01805000102' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 12/17/1998 02:10:55 PM (+0100) +User data length: 159 +User data header: 0x +User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung läuft noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen Sie Ihren Teiln.-Gutschein an 0180/5000 056' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '41794991200' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: 'dialing.de ' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 04/21/2001 12:15:28 PM (+0000) +User data length: 0 +User data header: 0x +User data: '' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '41794991200' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: 'dialing.de ' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 04/21/2001 12:15:28 PM (+0000) +User data length: 0 +User data header: 0x +User data: '' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '' +More messages to send: 0 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +SC timestamp: 00/00/2000 12:00:00 AM (+0000) +User data length: 0 +User data header: 0x +User data: '' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '' +More messages to send: 0 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +SC timestamp: 00/00/2000 12:00:00 AM (+0000) +User data length: 0 +User data header: 0x +User data: '' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-DELIVER-REPORT +SC address: '' +Protocol identifier present: 0 +Data coding scheme present: 0 +User data length present: 0 +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-STATUS-REPORT +SC address: '' +More messages to send: 0 +Status report qualifier: 0 +Message reference: 0 +Recipient address: '' +SC timestamp: 00/00/2000 12:00:00 AM (+0000) +Discharge time: 00/00/2000 12:00:00 AM (+0000) +Status: 0x0 'Short message received by the SME' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-COMMAND +SC address: '' +Message reference: 0 +Status report request: 1 +Protocol identifier: 0x0 +Command type: 0x0 +Message number: 0 +Destination address: '' +Command data length: 0 +Command data: '' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-SUBMIT +SC address: '' +Reject duplicates: 1 +Validity period format: relative +Reply path: 0 +User data header indicator: 0 +Status report request: 0 +Message reference: 0 +Destination address: '' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +Validity period: 2 days +User data length: 35 +User data header: 0x +User data: 'This is a submit message, isn't it?' +--------------------------------------------------------------------------- + + +--------------------------------------------------------------------------- +Message type: SMS-SUBMIT-REPORT +SC address: '' +SC timestamp: 00/00/2000 12:00:00 AM (+0000) +Protocol identifier present: 0 +Data coding scheme present: 0 +User data length present: 0 +--------------------------------------------------------------------------- + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc new file mode 100644 index 0000000000..bf5423b057 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms.cc @@ -0,0 +1,80 @@ +// ************************************************************************* +// * GSM TA/ME library +// * +// * File: testsms.cc +// * +// * Purpose: Test coder and encoder for SMS TPDUs +// * +// * Author: Peter Hofmann (software@pxh.de) +// * +// * Created: 17.5.1999 +// ************************************************************************* + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include + +using namespace std; +using namespace gsmlib; + +int main(int argc, char *argv[]) +{ + string pdu; + SMSMessageRef sms; + // test two SMS message I have received + sms = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); + cout << sms->toString() << endl; + + sms = SMSMessage::decode("0791947101671200040B851008050001F23900892171410155409FCEF4184D07D9CBF273793E2FBB432062BA0CC2D2E5E16B398D7687C768FADC5E96B3DFF3BAFB0C62EFEB663AC8FD1EA341E2F41CA4AFB741329A2B2673819C75BABEEC064DD36590BA4CD7D34149B4BC0C3A96EF69B77B8C0EBBC76550DD4D0699C3F8B21B344D974149B4BCEC0651CB69B6DBD53AD6E9F331BA9C7683C26E102C8683BD6A30180C04ABD900"); + cout << sms->toString() << endl; + + // test SMS decoding and encoding for messages with alphanumeric + // destination address + sms = SMSMessage::decode("07911497941902F00414D0E474989D769F5DE4320839001040122151820000"); + cout << sms->toString() << endl; + pdu = sms->encode(); + sms = SMSMessage::decode(pdu); + cout << sms->toString() << endl; + + // test all message types + sms = new SMSDeliverMessage(); + cout << sms->toString() << endl; + pdu = sms->encode(); + sms = SMSMessage::decode(pdu); + cout << sms->toString() << endl; + + // test all message types + sms = new SMSDeliverReportMessage(); + pdu = sms->encode(); + sms = SMSMessage::decode(pdu, false); + cout << sms->toString() << endl; + + // test all message types + sms = new SMSStatusReportMessage(); + pdu = sms->encode(); + sms = SMSMessage::decode(pdu); + cout << sms->toString() << endl; + + // test all message types + sms = new SMSCommandMessage(); + pdu = sms->encode(); + sms = SMSMessage::decode(pdu, false); + cout << sms->toString() << endl; + + // test all message types + SMSSubmitMessage *subsms = new SMSSubmitMessage(); + subsms->setUserData("This is a submit message, isn't it?"); + sms = subsms; + pdu = sms->encode(); + sms = SMSMessage::decode(pdu, false); + cout << sms->toString() << endl; + + // test all message types + sms = new SMSSubmitReportMessage(); + pdu = sms->encode(); + sms = SMSMessage::decode(pdu); + cout << sms->toString() << endl; + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc new file mode 100644 index 0000000000..cb9b395a86 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testsms2.cc @@ -0,0 +1,89 @@ +#ifdef HAVE_CONFIG_H +#include +#endif +#ifdef WIN32 +#include +#else +#include +#endif +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +int main(int argc, char *argv[]) +{ + try + { + cout << (string)"Opening device " + argv[1] << endl; +#ifdef WIN32 + Ref port = new Win32SerialPort((string)argv[1], 38400); +#else + Ref port = new UnixSerialPort((string)argv[1], B38400); +#endif + + cout << "Creating MeTa object" << endl; + MeTa m(port); + + cout << "Setting message service level to 1" << endl; + m.setMessageService(1); + + vector storeList = m.getSMSStoreNames(); + + for (vector::iterator stn = storeList.begin(); + stn != storeList.end(); ++stn) + { + cout << "Getting store \"" << *stn << "\"" << endl; + SMSStoreRef st = m.getSMSStore(*stn); + + SMSMessageRef sms; + cout << "Creating SMS Submit Message and putting it into store" << endl; + SMSSubmitMessage *subsms = new SMSSubmitMessage(); +// Address scAddr("+491710760000"); +// subsms->setServiceCentreAddress(scAddr); + Address destAddr("0177123456"); + subsms->setDestinationAddress(destAddr); + subsms->setUserData("This message was sent from the store."); + TimePeriod tp; + tp._format = TimePeriod::Relative; + tp._relativeTime = 100; + /*subsms->setValidityPeriod(tp); + subsms->setValidityPeriodFormat(tp._format); + subsms->setStatusReportRequest(true);*/ + sms = subsms; + SMSStore::iterator smsIter = st->insert(st->end(), SMSStoreEntry(sms)); + cout << "Message entered at index #" + << smsIter - st->begin() << endl; + + //m.sendSMS(sms); + SMSMessageRef ackPdu; + int messageRef = smsIter->send(ackPdu); + cout << "Message reference: " << messageRef << endl + << "ACK PDU:" << endl + << (ackPdu.isnull() ? "no ack pdu" : ackPdu->toString()) + << endl; + + /* cout << "Erasing all unsent messages" << endl; + for (SMSStore::iterator s = st->begin(); s != st->end(); ++s) + if (! s->empty() && s->status() == SMSStoreEntry::StoredUnsent) + st->erase(s);*/ + + cout << "Printing store \"" << *stn << "\"" << endl; + for (SMSStore::iterator s = st->begin(); s != st->end(); ++s) + if (! s->empty()) + cout << s->message()->toString(); + + break; // only do one store + } + } + catch (GsmException &ge) + { + cerr << "GsmException '" << ge.what() << "'" << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt new file mode 100644 index 0000000000..83a56fa9f9 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb-output.txt @@ -0,0 +1,47 @@ +Entries in pbs-copy.pb: + Text: Dieter Meier Telephone: 793045 + Text: Edgar Hofmann Telephone: 42345 + Text: Goethe Telephone: 847159 + Text: Hans Hofmann Telephone: 12345 + Text: Hans-Dieter Schmidt Telephone: 82345 + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Heiner Müller Telephone: 7890 + Text: line with | Telephone: 0815 + Text: line with\ Telephone: 0815 + Text: One line back to start Telephone: 0815 + Text: two +line Telephone: 0815 +Removing entries with telephone == 0815 +Entries in pbs-copy.pb<2>: + Text: Hans Hofmann Telephone: 12345 + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Edgar Hofmann Telephone: 42345 + Text: Heiner Müller Telephone: 7890 + Text: Dieter Meier Telephone: 793045 + Text: Hans-Dieter Schmidt Telephone: 82345 + Text: Goethe Telephone: 847159 +Inserting some entries +Entries in pbs-copy.pb<3>: + Text: Dieter Meier Telephone: 793045 + Text: Edgar Hofmann Telephone: 42345 + Text: Goethe Telephone: 847159 + Text: Hans Hofmann Telephone: 12345 + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Hans-Dieter Schmidt Telephone: 41598254 + Text: Hans-Dieter Schmidt Telephone: 82345 + Text: Hans-Dieter|Hofmann Telephone: 34058 + Text: Heiner Müller Telephone: 7890 + Text: new line with continued Telephone: 08152 +Erasing all Hans-Dieter Schmidt entries +About to erase: + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Hans-Dieter Schmidt Telephone: 41598254 + Text: Hans-Dieter Schmidt Telephone: 82345 +Writing back to file +|Dieter Meier|793045 +|Edgar Hofmann|42345 +|Goethe|847159 +|Hans Hofmann|12345 +|Hans-Dieter\|Hofmann|34058 +|Heiner Müller|7890 +|new line with \r continued|08152 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc new file mode 100644 index 0000000000..43b9f512db --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb.cc @@ -0,0 +1,81 @@ +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +void printPb(PhonebookEntry &e) +{ + cout << "number: " << e.telephone() + << " text: " << e.text() << endl; +} + +int main(int argc, char *argv[]) +{ + try + { + // open phonebook file + SortedPhonebook pb((string)"spb-copy.pb", false); + + // print all entries + cout << "Entries in pbs-copy.pb:" << endl; + for (SortedPhonebook::iterator i = pb.begin(); i != pb.end(); ++i) + cout << " Text: " << i->text() + << " Telephone: " << i->telephone() << endl; + + // remove all entries with telephone == "0815" + cout << "Removing entries with telephone == 0815" << endl; + pb.setSortOrder(ByTelephone); + + string s = "0815"; + pb.erase(s); + + cout << "Entries in pbs-copy.pb<2>:" << endl; + for (SortedPhonebook::iterator i = pb.begin(); i != pb.end(); ++i) + cout << " Text: " << i->text() + << " Telephone: " << i->telephone() << endl; + + // insert some entries + cout << "Inserting some entries" << endl; + pb.insert(PhonebookEntryBase("08152", "new line with \r continued")); + pb.insert(PhonebookEntryBase("41598254", "Hans-Dieter Schmidt")); + pb.insert(PhonebookEntryBase("34058", "Hans-Dieter|Hofmann")); + + pb.setSortOrder(ByText); + cout << "Entries in pbs-copy.pb<3>:" << endl; + for (SortedPhonebook::iterator i = pb.begin(); i != pb.end(); ++i) + cout << " Text: " << i->text() + << " Telephone: " << i->telephone() << endl; + + // test erasing all "Hans-Dieter Schmidt" entries + cout << "Erasing all Hans-Dieter Schmidt entries" << endl; + s = "Hans-Dieter Schmidt"; + pair range = + pb.equal_range(s); + cout << "About to erase:" << endl; + for (SortedPhonebook::iterator i = range.first; i != range.second; ++i) + cout << " Text: " << i->text() + << " Telephone: " << i->telephone() << endl; + + pb.erase(range.first, range.second); + + // write back to file + cout << "Writing back to file" << endl; + pb.sync(); + + // tests the NoCopy class + //SortedPhonebook pb2("spb.pb"); + //pb2 = pb; + } + catch (GsmException &ge) + { + cerr << "GsmException '" << ge.what() << "'" << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt new file mode 100644 index 0000000000..60e54ba669 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspb2-output.txt @@ -0,0 +1,47 @@ +Entries in pbs-copy.pb: + Text: Dieter Meier Telephone: 017793045 + Text: Edgar Hofmann Telephone: +4942345 + Text: Goethe Telephone: 847159 + Text: Hans Hofmann Telephone: 0171 + Text: Hans-Dieter Schmidt Telephone: 82345 + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Heiner Müller Telephone: 7890 + Text: line with | Telephone: 0815 + Text: line with\ Telephone: 0815 + Text: One line back to start Telephone: 0815 + Text: two +line Telephone: 0815 +Removing entries with telephone == 0815 +Entries in pbs-copy.pb<2>: + Text: Edgar Hofmann Telephone: +4942345 + Text: Hans Hofmann Telephone: 0171 + Text: Dieter Meier Telephone: 017793045 + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Heiner Müller Telephone: 7890 + Text: Hans-Dieter Schmidt Telephone: 82345 + Text: Goethe Telephone: 847159 +Inserting some entries +Entries in pbs-copy.pb<3>: + Text: Dieter Meier Telephone: 017793045 + Text: Edgar Hofmann Telephone: +4942345 + Text: Goethe Telephone: 847159 + Text: Hans Hofmann Telephone: 0171 + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Hans-Dieter Schmidt Telephone: 41598254 + Text: Hans-Dieter Schmidt Telephone: 82345 + Text: Hans-Dieter|Hofmann Telephone: 34058 + Text: Heiner Müller Telephone: 7890 + Text: new line with continued Telephone: 08152 +Erasing all Hans-Dieter Schmidt entries +About to erase: + Text: Hans-Dieter Schmidt Telephone: 13333345 + Text: Hans-Dieter Schmidt Telephone: 41598254 + Text: Hans-Dieter Schmidt Telephone: 82345 +Writing back to file +|Dieter Meier|017793045 +|Edgar Hofmann|+4942345 +|Goethe|847159 +|Hans Hofmann|0171 +|Hans-Dieter\|Hofmann|34058 +|Heiner Müller|7890 +|new line with \r continued|08152 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt new file mode 100644 index 0000000000..e4a33e2fa6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testspbi-output.txt @@ -0,0 +1,8 @@ +updating 'same name' tel# 23456 to new tel# 12345(index 5) +deleting 'Nummer 3' tel# 3333333 (index #2) +deleting 'Nummer 4' tel# 4444444 (index #4) +inserting 'Nummer 4' tel# 4444444 (index #1) +inserting 'Nummer 3' tel# 3333333 (index #3) +1|Nummer 4|4444444 +3|Nummer 3|3333333 +5|same name|12345 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt new file mode 100644 index 0000000000..a0e7905939 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms-output.txt @@ -0,0 +1,157 @@ +Entries in sms.sms<0>: +Inserting some entries +Entries in sms.sms<1>: +Entry#2: +--------------------------------------------------------------------------- +Message type: SMS-SUBMIT +SC address: '' +Reject duplicates: 1 +Validity period format: relative +Reply path: 0 +User data header indicator: 0 +Status report request: 0 +Message reference: 0 +Destination address: '0177123456' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +Validity period: 2 days +User data length: 9 +User data header: 0x +User data: 'submit me' +--------------------------------------------------------------------------- + + +Entry#3: +--------------------------------------------------------------------------- +Message type: SMS-SUBMIT +SC address: '' +Reject duplicates: 1 +Validity period format: relative +Reply path: 0 +User data header indicator: 0 +Status report request: 0 +Message reference: 0 +Destination address: '' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +Validity period: 2 days +User data length: 35 +User data header: 0x +User data: 'This is a submit message, isn't it?' +--------------------------------------------------------------------------- + + +Entry#1: +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '01805000102' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 12/17/1998 02:10:55 PM (+0100) +User data length: 159 +User data header: 0x +User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung läuft noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen Sie Ihren Teiln.-Gutschein an 0180/5000 056' +--------------------------------------------------------------------------- + + +Entry#0: +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '171' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 04/16/1999 08:09:44 AM (+0200) +User data length: 160 +User data header: 0x +User data: 'T-D1 News bis 31.05.99 kostenlos testen! Über 90 Programme aus Politik, Wirtschaft, Börse, Sport direkt per SMS aufs Handy. Mehr darüber unter der Kurzwahl 2323' +--------------------------------------------------------------------------- + + +Entries in sms.sms<2>: +Entry#3: +--------------------------------------------------------------------------- +Message type: SMS-SUBMIT +SC address: '' +Reject duplicates: 1 +Validity period format: relative +Reply path: 0 +User data header indicator: 0 +Status report request: 0 +Message reference: 0 +Destination address: '' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +Validity period: 2 days +User data length: 35 +User data header: 0x +User data: 'This is a submit message, isn't it?' +--------------------------------------------------------------------------- + + +Entry#2: +--------------------------------------------------------------------------- +Message type: SMS-SUBMIT +SC address: '' +Reject duplicates: 1 +Validity period format: relative +Reply path: 0 +User data header indicator: 0 +Status report request: 0 +Message reference: 0 +Destination address: '0177123456' +Protocol identifier: 0x0 +Data coding scheme: default alphabet +Validity period: 2 days +User data length: 9 +User data header: 0x +User data: 'submit me' +--------------------------------------------------------------------------- + + +Entry#1: +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '01805000102' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 12/17/1998 02:10:55 PM (+0100) +User data length: 159 +User data header: 0x +User data: 'Nicht vergessen! Die XtraWeihnachtsverlosung läuft noch bis zum 24.12. Nutzen Sie jetzt Ihre Gewinnchance und faxen Sie Ihren Teiln.-Gutschein an 0180/5000 056' +--------------------------------------------------------------------------- + + +Entry#0: +--------------------------------------------------------------------------- +Message type: SMS-DELIVER +SC address: '491710762100' +More messages to send: 1 +Reply path: 0 +User data header indicator: 0 +Status report indication: 0 +Originating address: '171' +Protocol identifier: 0x39 +Data coding scheme: default alphabet +SC timestamp: 04/16/1999 08:09:44 AM (+0200) +User data length: 160 +User data header: 0x +User data: 'T-D1 News bis 31.05.99 kostenlos testen! Über 90 Programme aus Politik, Wirtschaft, Börse, Sport direkt per SMS aufs Handy. Mehr darüber unter der Kurzwahl 2323' +--------------------------------------------------------------------------- + + +Writing back to file diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc new file mode 100644 index 0000000000..4c30bd544f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testssms.cc @@ -0,0 +1,68 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gsmlib; + +int main(int argc, char *argv[]) +{ + try + { + // open SMS store file + SortedSMSStore sms((string)"sms.sms"); + + // print all entries + cout << "Entries in sms.sms<0>:" << endl; + for (SortedSMSStore::iterator i = sms.begin(); i != sms.end(); ++i) + cout << "Entry#" << i->index() << ":" << endl + << i->message()->toString() << endl; + + // insert some entries + cout << "Inserting some entries" << endl; + SMSMessageRef smsMessage; + // test two SMS message I have received + smsMessage = SMSMessage::decode("079194710167120004038571F1390099406180904480A0D41631067296EF7390383D07CD622E58CD95CB81D6EF39BDEC66BFE7207A794E2FBB4320AFB82C07E56020A8FC7D9687DBED32285C9F83A06F769A9E5EB340D7B49C3E1FA3C3663A0B24E4CBE76516680A7FCBE920725A5E5ED341F0B21C346D4E41E1BA790E4286DDE4BC0BD42CA3E5207258EE1797E5A0BA9B5E9683C86539685997EBEF61341B249BC966"); + sms.insert(SMSStoreEntry(smsMessage)); + + smsMessage = SMSMessage::decode("0791947101671200040B851008050001F23900892171410155409FCEF4184D07D9CBF273793E2FBB432062BA0CC2D2E5E16B398D7687C768FADC5E96B3DFF3BAFB0C62EFEB663AC8FD1EA341E2F41CA4AFB741329A2B2673819C75BABEEC064DD36590BA4CD7D34149B4BC0C3A96EF69B77B8C0EBBC76550DD4D0699C3F8B21B344D974149B4BCEC0651CB69B6DBD53AD6E9F331BA9C7683C26E102C8683BD6A30180C04ABD900"); + sms.insert(SMSStoreEntry(smsMessage)); + + smsMessage = new SMSSubmitMessage("submit me", "0177123456"); + sms.insert(SMSStoreEntry(smsMessage)); + + SMSSubmitMessage *subsms = new SMSSubmitMessage(); + subsms->setUserData("This is a submit message, isn't it?"); + smsMessage = subsms; + sms.insert(SMSStoreEntry(smsMessage)); + + // print all entries + cout << "Entries in sms.sms<1>:" << endl; + for (SortedSMSStore::iterator i = sms.begin(); i != sms.end(); ++i) + cout << "Entry#" << i->index() << ":" << endl + << i->message()->toString() << endl; + + // sort by telephone number + sms.setSortOrder(ByAddress); + + // print all entries + cout << "Entries in sms.sms<2>:" << endl; + for (SortedSMSStore::iterator i = sms.begin(); i != sms.end(); ++i) + cout << "Entry#" << i->index() << ":" << endl + << i->message()->toString() << endl; + + // write back to file + cout << "Writing back to file" << endl; + sms.sync(); + + } + catch (GsmException &ge) + { + cerr << "GsmException '" << ge.what() << "'" << endl; + return 1; + } + return 0; +} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING new file mode 100644 index 0000000000..78e994dd75 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/COPYING @@ -0,0 +1,5 @@ +WARNING + + The files getopt.c and getopt.h in this subdirectory (win32) are + not covered by the GNU LIBRARY GENERAL PUBLIC LICENSE as + reproduced in ../COPYING. They carry their own license instead. diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am new file mode 100644 index 0000000000..a666fabf31 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.am @@ -0,0 +1,17 @@ +## Process this file with automake to produce Makefile.in +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: win32 Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 19.1.2001 +# ************************************************************************* + +EXTRA_DIST = getopt.c gsmctl.dsp gsmpb.dsp testgsmlib.dsp \ + getopt.h gsmlib.dsp gsmsendsms.dsp testsms.dsp \ + README.win gsm_config.h gsmlib.dsw gsmsmsstore.dsp \ + gsmsmsd.dsp testsms2.dsp diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in new file mode 100644 index 0000000000..4117eea211 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/Makefile.in @@ -0,0 +1,259 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +# ************************************************************************* +# * GSM TA/ME library +# * +# * File: Makefile.am +# * +# * Purpose: win32 Makefile +# * +# * Author: Peter Hofmann (software@pxh.de) +# * +# * Created: 19.1.2001 +# ************************************************************************* +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GSM_VERSION = @GSM_VERSION@ +HAVE_LIB = @HAVE_LIB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = getopt.c gsmctl.dsp gsmpb.dsp testgsmlib.dsp \ + getopt.h gsmlib.dsp gsmsendsms.dsp testsms.dsp \ + README.win gsm_config.h gsmlib.dsw gsmsmsstore.dsp \ + gsmsmsd.dsp testsms2.dsp + +subdir = win32 +mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/gsm_config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = COPYING Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu win32/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + 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"; \ + $(mkinstalldirs) "$(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 + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-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 + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-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-generic \ + mostlyclean-libtool 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 --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win new file mode 100644 index 0000000000..17aa648dd1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/README.win @@ -0,0 +1,41 @@ +INTRODUCTION + + This is a Win32 port of gsmlib contributed by Frediano Ziglio + (Frediano.Ziglio@omnitel.it) and adapted by me. You can use the + library for inclusion in your own programs or the command line tools + which have been ported (with the exception of gsmsmsd). + +COMPILATION + + You need Microsoft VC++ 6.0 to compile the library and command + line tools. Because I prefer to use the ending .cc for C++ files you + need to make some changes to your development environment. These are + documented by Microsoft under this URL (one line): + + http://support.microsoft.com/support/kb/articles/Q181/5/ + 06.ASP?LN=EN-US&SD=gn&FR=0&qry=.cc&rnk=1&src=DHCS_MSPSS_gn_SRCH&SPR=VCC + + The title of the document is "HOWTO: Make VC++ Recognize File + Extensions as C/C++ Files". + + Then open the workspace gsmlib.dsw with Developer + Studio. Compilation should be straightforward after that, just make a + batch build of everything. + + If you encounter problems you can use the debug versions and set + the environment variable GSMLIB_DEBUG to 1 or 2 to get debugging + output. + +HINTS + - Use COMx: (x is the number of the COM device) instead of the UNIX + device name. If this doesn't work use "\\.\COMx:". + + - The files under Release are without debugging code. If you see + errors please use the Debug versions and execute + + set GSMLIB_DEBUG=2 + + for executing the programs. Please send me the debugging + output: + + gsmsmsstore ..... 2> \temp\debug.log diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c new file mode 100644 index 0000000000..45fcedc063 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.c @@ -0,0 +1,185 @@ +/***************************************************************************** + * + * MODULE NAME : GETOPT.C + * + * COPYRIGHTS: + * This module contains code made available by IBM + * Corporation on an AS IS basis. Any one receiving the + * module is considered to be licensed under IBM copyrights + * to use the IBM-provided source code in any way he or she + * deems fit, including copying it, compiling it, modifying + * it, and redistributing it, with or without + * modifications. No license under any IBM patents or + * patent applications is to be implied from this copyright + * license. + * + * A user of the module should understand that IBM cannot + * provide technical support for the module and will not be + * responsible for any consequences of use of the program. + * + * Any notices, including this one, are not to be removed + * from the module without the prior written consent of + * IBM. + * + * AUTHOR: Original author: + * G. R. Blair (BOBBLAIR at AUSVM1) + * Internet: bobblair@bobblair.austin.ibm.com + * + * Extensively revised by: + * John Q. Walker II, Ph.D. (JOHHQ at RALVM6) + * Internet: johnq@ralvm6.vnet.ibm.com + * + *****************************************************************************/ + +/****************************************************************************** + * getopt() + * + * The getopt() function is a command line parser. It returns the next + * option character in argv that matches an option character in opstring. + * + * The argv argument points to an array of argc+1 elements containing argc + * pointers to character strings followed by a null pointer. + * + * The opstring argument points to a string of option characters; if an + * option character is followed by a colon, the option is expected to have + * an argument that may or may not be separated from it by white space. + * The external variable optarg is set to point to the start of the option + * argument on return from getopt(). + * + * The getopt() function places in optind the argv index of the next argument + * to be processed. The system initializes the external variable optind to + * 1 before the first call to getopt(). + * + * When all options have been processed (that is, up to the first nonoption + * argument), getopt() returns EOF. The special option "--" may be used to + * delimit the end of the options; EOF will be returned, and "--" will be + * skipped. + * + * The getopt() function returns a question mark (?) when it encounters an + * option character not included in opstring. This error message can be + * disabled by setting opterr to zero. Otherwise, it returns the option + * character that was detected. + * + * If the special option "--" is detected, or all options have been + * processed, EOF is returned. + * + * Options are marked by either a minus sign (-) or a slash (/). + * + * No errors are defined. + *****************************************************************************/ + +#include /* for EOF */ +#include /* for strchr() */ + + +#ifdef __cplusplus +extern "C" { +#endif + +/* static (global) variables that are specified as exported by getopt() */ +char *optarg = NULL; /* pointer to the start of the option argument */ +int optind = 1; /* number of the next argv[] to be evaluated */ +int opterr = 1; /* non-zero if a question mark should be returned + when a non-valid option character is detected */ + +/* handle possible future character set concerns by putting this in a macro */ +#define _next_char(string) (char)(*(string+1)) + +int getopt(int argc, char *argv[], char *opstring) +{ + static char *pIndexPosition = NULL; /* place inside current argv string */ + char *pArgString = NULL; /* where to start from next */ + char *pOptString; /* the string in our program */ + + + if (pIndexPosition != NULL) { + /* we last left off inside an argv string */ + if (*(++pIndexPosition)) { + /* there is more to come in the most recent argv */ + pArgString = pIndexPosition; + } + } + + if (pArgString == NULL) { + /* we didn't leave off in the middle of an argv string */ + if (optind >= argc) { + /* more command-line arguments than the argument count */ + pIndexPosition = NULL; /* not in the middle of anything */ + return EOF; /* used up all command-line arguments */ + } + + /*--------------------------------------------------------------------- + * If the next argv[] is not an option, there can be no more options. + *-------------------------------------------------------------------*/ + pArgString = argv[optind++]; /* set this to the next argument ptr */ + + if (('/' != *pArgString) && /* doesn't start with a slash or a dash? */ + ('-' != *pArgString)) { + --optind; /* point to current arg once we're done */ + optarg = NULL; /* no argument follows the option */ + pIndexPosition = NULL; /* not in the middle of anything */ + return EOF; /* used up all the command-line flags */ + } + + /* check for special end-of-flags markers */ + if ((strcmp(pArgString, "-") == 0) || + (strcmp(pArgString, "--") == 0)) { + optarg = NULL; /* no argument follows the option */ + pIndexPosition = NULL; /* not in the middle of anything */ + return EOF; /* encountered the special flag */ + } + + pArgString++; /* look past the / or - */ + } + + if (':' == *pArgString) { /* is it a colon? */ + /*--------------------------------------------------------------------- + * Rare case: if opterr is non-zero, return a question mark; + * otherwise, just return the colon we're on. + *-------------------------------------------------------------------*/ + return (opterr ? (int)'?' : (int)':'); + } + else if ((pOptString = strchr(opstring, *pArgString)) == 0) { + /*--------------------------------------------------------------------- + * The letter on the command-line wasn't any good. + *-------------------------------------------------------------------*/ + optarg = NULL; /* no argument follows the option */ + pIndexPosition = NULL; /* not in the middle of anything */ + return (opterr ? (int)'?' : (int)*pArgString); + } + else { + /*--------------------------------------------------------------------- + * The letter on the command-line matches one we expect to see + *-------------------------------------------------------------------*/ + if (':' == _next_char(pOptString)) { /* is the next letter a colon? */ + /* It is a colon. Look for an argument string. */ + if ('\0' != _next_char(pArgString)) { /* argument in this argv? */ + optarg = &pArgString[1]; /* Yes, it is */ + } + else { + /*------------------------------------------------------------- + * The argument string must be in the next argv. + * But, what if there is none (bad input from the user)? + * In that case, return the letter, and optarg as NULL. + *-----------------------------------------------------------*/ + if (optind < argc) + optarg = argv[optind++]; + else { + optarg = NULL; + return (opterr ? (int)'?' : (int)*pArgString); + } + } + pIndexPosition = NULL; /* not in the middle of anything */ + } + else { + /* it's not a colon, so just return the letter */ + optarg = NULL; /* no argument follows the option */ + pIndexPosition = pArgString; /* point to the letter we're on */ + } + return (int)*pArgString; /* return the letter that matched */ + } +} + +#ifdef __cplusplus +} +#endif diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h new file mode 100644 index 0000000000..f7446f1c50 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/getopt.h @@ -0,0 +1,49 @@ +/***************************************************************************** + * + * MODULE NAME : GETOPT.H + * + * COPYRIGHTS: + * This module contains code made available by IBM + * Corporation on an AS IS basis. Any one receiving the + * module is considered to be licensed under IBM copyrights + * to use the IBM-provided source code in any way he or she + * deems fit, including copying it, compiling it, modifying + * it, and redistributing it, with or without + * modifications. No license under any IBM patents or + * patent applications is to be implied from this copyright + * license. + * + * A user of the module should understand that IBM cannot + * provide technical support for the module and will not be + * responsible for any consequences of use of the program. + * + * Any notices, including this one, are not to be removed + * from the module without the prior written consent of + * IBM. + * + * AUTHOR: Original author: + * G. R. Blair (BOBBLAIR at AUSVM1) + * Internet: bobblair@bobblair.austin.ibm.com + * + * Extensively revised by: + * John Q. Walker II, Ph.D. (JOHHQ at RALVM6) + * Internet: johnq@ralvm6.vnet.ibm.com + * + *****************************************************************************/ +#ifndef WIN32_GETOPT_H +#define WIN32_GETOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern char * optarg; +extern int optind; + +int getopt ( int argc, char **argv, char *optstring); + +#ifdef __cplusplus +} +#endif + +#endif // WIN32_GETOPT_H diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h new file mode 100644 index 0000000000..176ccc58d2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h @@ -0,0 +1,169 @@ +/* gsm_config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if using alloca.c. */ +#undef C_ALLOCA + +/* Define to empty if the keyword does not work. */ +#undef const + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +#undef CRAY_STACKSEG_END + +/* Define if you have alloca, as a function or macro. */ +#define HAVE_ALLOCA 1 +#define alloca _alloca // Microsoft + +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define as __inline if that's what the C compiler calls it. */ +#undef inline + +/* Define to `long' if doesn't define. */ +#undef off_t + +/* Define if you need to in order for stat and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +#undef STACK_DIRECTION + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* used by libtool*/ +#define PACKAGE 0 + +/* used by libtool*/ +#define VERSION 0 + +/* Define if getopt_long() available */ +#undef HAVE_GETOPT_LONG + +/* Define if alarm() available */ +#undef HAVE_ALARM + +/* Define for NLS */ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY + +/* Define LOCALEDIR */ +#define LOCALEDIR "/usr/share/locale" + +/* Define if vsnprintf() function available */ +#define HAVE_VSNPRINTF 1 +#define vsnprintf _vsnprintf + +/* The number of bytes in a unsigned int. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* The number of bytes in a unsigned long int. */ +#define SIZEOF_UNSIGNED_LONG_INT 4 + +/* The number of bytes in a unsigned short int. */ +#define SIZEOF_UNSIGNED_SHORT_INT 2 + +/* Define if you have the __argz_count function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the __argz_next function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the __argz_stringify function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define if you have the dcgettext function. */ +#undef HAVE_DCGETTEXT + +/* Define if you have the getcwd function. */ +#undef HAVE_GETCWD + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the munmap function. */ +#undef HAVE_MUNMAP + +/* Define if you have the putenv function. */ +#undef HAVE_PUTENV + +/* Define if you have the setenv function. */ +#undef HAVE_SETENV + +/* Define if you have the setlocale function. */ +#define HAVE_SETLOCALE 1 + +/* Define if you have the stpcpy function. */ +#undef HAVE_STPCPY + +/* Define if you have the strcasecmp function. */ +#undef HAVE_STRCASECMP +#define strcasecmp _strcmpi + +/* Define if you have the strchr function. */ +#define HAVE_STRCHR 1 + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the i library (-li). */ +#undef HAVE_LIBI + +/* Define if you have the intl library (-lintl). */ +#undef HAVE_LIBINTL + +// WIN32 specific defines +#pragma warning( disable : 4786 ) // Disable warning messages + // 4786 (id too long) + +// Win32 strftime() does not return length of output when passing +// NULL pointer +#define BROKEN_STRFTIME +// Win32 STL erase() for maps makes iterators invalid +#define BUGGY_MAP_ERASE diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp new file mode 100644 index 0000000000..b48a1c54db --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.dsp @@ -0,0 +1,118 @@ +# Microsoft Developer Studio Project File - Name="gsmctl" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=gsmctl - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "gsmctl.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "gsmctl.mak" CFG="gsmctl - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "gsmctl - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "gsmctl - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "gsmctl - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "gsmctl - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "gsmctl - Win32 Release" +# Name "gsmctl - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\getopt.c + +!IF "$(CFG)" == "gsmctl - Win32 Release" + +!ELSEIF "$(CFG)" == "gsmctl - Win32 Debug" + +# ADD CPP /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\apps\gsmctl.cc +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\getopt.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp new file mode 100644 index 0000000000..ace489a252 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsp @@ -0,0 +1,232 @@ +# Microsoft Developer Studio Project File - Name="gsmlib" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=gsmlib - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "gsmlib.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "gsmlib.mak" CFG="gsmlib - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "gsmlib - Win32 Release" (basierend auf "Win32 (x86) Static Library") +!MESSAGE "gsmlib - Win32 Debug" (basierend auf "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "gsmlib - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /W3 /GR /GX /O2 /I "../vcproject" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /FR /YX /FD /TP /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "gsmlib - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "gsmlib - Win32 Release" +# Name "gsmlib - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;cc;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\gsmlib\gsm_at.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_error.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_cb.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_event.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_me_ta.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_nls.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_parser.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_phonebook.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sms.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sms_codec.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sms_store.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sorted_phonebook.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sorted_phonebook_base.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sorted_sms_store.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_util.cc +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_win32_serial.cc +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\gsmlib\gsm_at.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_cb.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_error.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_event.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_map_key.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_me_ta.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_nls.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_parser.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_phonebook.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_port.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sms.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sms_codec.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sms_store.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sorted_phonebook.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sorted_phonebook_base.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sorted_sms_store.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_sysdep.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_util.h +# End Source File +# Begin Source File + +SOURCE=..\gsmlib\gsm_win32_serial.h +# End Source File +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw new file mode 100644 index 0000000000..21ab8168ac --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.dsw @@ -0,0 +1,149 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! + +############################################################################### + +Project: "gsmctl"=".\gsmctl.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "gsmlib"=".\gsmlib.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "gsmpb"=".\gsmpb.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "gsmsendsms"=".\gsmsendsms.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "gsmsmsd"=".\gsmsmsd.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "gsmsmsstore"=".\gsmsmsstore.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "testgsmlib"=".\testgsmlib.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "testsms"=".\testsms.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Project: "testsms2"=".\testsms2.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name gsmlib + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp new file mode 100644 index 0000000000..befc0f6d51 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.dsp @@ -0,0 +1,118 @@ +# Microsoft Developer Studio Project File - Name="gsmpb" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=gsmpb - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "gsmpb.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "gsmpb.mak" CFG="gsmpb - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "gsmpb - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "gsmpb - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "gsmpb - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "gsmpb - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "gsmpb - Win32 Release" +# Name "gsmpb - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\getopt.c + +!IF "$(CFG)" == "gsmpb - Win32 Release" + +!ELSEIF "$(CFG)" == "gsmpb - Win32 Debug" + +# ADD CPP /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\apps\gsmpb.cc +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\getopt.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp new file mode 100644 index 0000000000..7e660fbdbb --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.dsp @@ -0,0 +1,118 @@ +# Microsoft Developer Studio Project File - Name="gsmsendsms" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=gsmsendsms - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "gsmsendsms.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "gsmsendsms.mak" CFG="gsmsendsms - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "gsmsendsms - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "gsmsendsms - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "gsmsendsms - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "gsmsendsms - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "gsmsendsms - Win32 Release" +# Name "gsmsendsms - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\getopt.c + +!IF "$(CFG)" == "gsmsendsms - Win32 Release" + +!ELSEIF "$(CFG)" == "gsmsendsms - Win32 Debug" + +# ADD CPP /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\apps\gsmsendsms.cc +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\getopt.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp new file mode 100644 index 0000000000..2facfaa47c --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.dsp @@ -0,0 +1,118 @@ +# Microsoft Developer Studio Project File - Name="gsmsmsd" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=gsmsmsd - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "gsmsmsd.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "gsmsmsd.mak" CFG="gsmsmsd - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "gsmsmsd - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "gsmsmsd - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "gsmsmsd - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "gsmsmsd - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "gsmsmsd - Win32 Release" +# Name "gsmsmsd - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\getopt.c + +!IF "$(CFG)" == "gsmsmsd - Win32 Release" + +!ELSEIF "$(CFG)" == "gsmsmsd - Win32 Debug" + +# ADD CPP /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\apps\gsmsmsd.cc +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\getopt.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp new file mode 100644 index 0000000000..5e7a9c150a --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.dsp @@ -0,0 +1,119 @@ +# Microsoft Developer Studio Project File - Name="gsmsmsstore" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=gsmsmsstore - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "gsmsmsstore.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "gsmsmsstore.mak" CFG="gsmsmsstore - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "gsmsmsstore - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "gsmsmsstore - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "gsmsmsstore - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "gsmsmsstore - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "gsmsmsstore - Win32 Release" +# Name "gsmsmsstore - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\getopt.c + +!IF "$(CFG)" == "gsmsmsstore - Win32 Release" + +!ELSEIF "$(CFG)" == "gsmsmsstore - Win32 Debug" + +# ADD CPP /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\apps\gsmsmsstore.cc +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\getopt.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp new file mode 100644 index 0000000000..26de21002d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.dsp @@ -0,0 +1,101 @@ +# Microsoft Developer Studio Project File - Name="testgsmlib" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=testgsmlib - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "testgsmlib.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "testgsmlib.mak" CFG="testgsmlib - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "testgsmlib - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "testgsmlib - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "testgsmlib - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /TP /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "testgsmlib - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "testgsmlib - Win32 Release" +# Name "testgsmlib - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\tests\testgsmlib.cc +# ADD CPP /I "../gsmlib" /I ".." /I "." /D "HAVE_CONFIG_H" +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp new file mode 100644 index 0000000000..09bf409bd2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="testsms" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=testsms - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "testsms.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "testsms.mak" CFG="testsms - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "testsms - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "testsms - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "testsms - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "testsms - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "testsms - Win32 Release" +# Name "testsms - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\tests\testsms.cc +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp new file mode 100644 index 0000000000..0ab2880c41 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="testsms2" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=testsms2 - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "testsms2.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "testsms2.mak" CFG="testsms2 - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "testsms2 - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "testsms2 - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "testsms2 - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /TP /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "testsms2 - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../gsmlib" /I ".." /I "." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "HAVE_CONFIG_H" /YX /FD /GZ /TP /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "testsms2 - Win32 Release" +# Name "testsms2 - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\tests\testsms2.cc +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff new file mode 100644 index 0000000000..ddea9c6d8f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff @@ -0,0 +1,64915 @@ +--- gsmlib-1.10.orig/g41.patch ++++ gsmlib-1.10/g41.patch +@@ -0,0 +1,29 @@ ++--- ./gsmlib/gsm_me_ta.h~ 2006-03-09 19:15:59.000000000 +0000 +++++ ./gsmlib/gsm_me_ta.h 2006-03-09 19:16:31.000000000 +0000 ++@@ -291,8 +291,8 @@ ++ // 3 disable phone receive RF circuits only ++ // 4 disable phone both transmit and receive RF circuits ++ // 5...127 implementation-defined ++- int MeTa::getFunctionalityLevel() throw(GsmException); ++- void MeTa::setFunctionalityLevel(int level) throw(GsmException); +++ int getFunctionalityLevel() throw(GsmException); +++ void setFunctionalityLevel(int level) throw(GsmException); ++ ++ // return battery charge status (+CBC): ++ // 0 ME is powered by the battery ++@@ -386,13 +386,13 @@ ++ void setCallWaitingLockStatus(FacilityClass cl, ++ bool lock)throw(GsmException); ++ ++- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); +++ void setCLIRPresentation(bool enable) throw(GsmException); ++ //(+CLIR) ++ ++ // 0:according to the subscription of the CLIR service ++ // 1:CLIR invocation ++ // 2:CLIR suppression ++- int MeTa::getCLIRPresentation() throw(GsmException); +++ int getCLIRPresentation() throw(GsmException); ++ ++ friend class Phonebook; ++ friend class SMSStore; +--- gsmlib-1.10.orig/Makefile.in ++++ gsmlib-1.10/Makefile.in +@@ -1,8 +1,6 @@ +-# Makefile.in generated by automake 1.6.3 from Makefile.am. +-# @configure_input@ ++# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995-8, 1999, 2001 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. +@@ -12,8 +10,6 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-@SET_MAKE@ +- + # ************************************************************************* + # * GSM TA/ME library + # * +@@ -25,6 +21,8 @@ + # * + # * Created: 21.5.1999 + # ************************************************************************* ++ ++ + SHELL = @SHELL@ + + srcdir = @srcdir@ +@@ -45,9 +43,13 @@ + mandir = @mandir@ + includedir = @includedir@ + oldincludedir = /usr/include ++ ++DESTDIR = ++ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ ++ + top_builddir = . + + ACLOCAL = @ACLOCAL@ +@@ -55,16 +57,12 @@ + AUTOMAKE = @AUTOMAKE@ + AUTOHEADER = @AUTOHEADER@ + +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) + INSTALL_DATA = @INSTALL_DATA@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_HEADER = $(INSTALL_DATA) + transform = @program_transform_name@ ++ + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : +@@ -73,33 +71,38 @@ + POST_UNINSTALL = : + host_alias = @host_alias@ + host_triplet = @host@ +- +-EXEEXT = @EXEEXT@ +-OBJEXT = @OBJEXT@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-AMTAR = @AMTAR@ ++AR = @AR@ + AS = @AS@ +-AWK = @AWK@ + BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ + CATOBJEXT = @CATOBJEXT@ + CC = @CC@ + CPP = @CPP@ + CXX = @CXX@ ++CXXCPP = @CXXCPP@ + DATADIRNAME = @DATADIRNAME@ +-DEPDIR = @DEPDIR@ + DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ ++F77 = @F77@ ++GCJ = @GCJ@ ++GCJFLAGS = @GCJFLAGS@ + GENCAT = @GENCAT@ ++GLIBC2 = @GLIBC2@ + GLIBC21 = @GLIBC21@ + GMSGFMT = @GMSGFMT@ + GSM_VERSION = @GSM_VERSION@ ++HAVE_ASPRINTF = @HAVE_ASPRINTF@ + HAVE_LIB = @HAVE_LIB@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ ++HAVE_SNPRINTF = @HAVE_SNPRINTF@ ++HAVE_WPRINTF = @HAVE_WPRINTF@ + INSTOBJEXT = @INSTOBJEXT@ + INTLBISON = @INTLBISON@ + INTLLIBS = @INTLLIBS@ + INTLOBJS = @INTLOBJS@ + INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ ++INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ + LIB = @LIB@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ +@@ -108,89 +111,83 @@ + LTLIB = @LTLIB@ + LTLIBICONV = @LTLIBICONV@ + LTLIBINTL = @LTLIBINTL@ ++MAKEINFO = @MAKEINFO@ + MKINSTALLDIRS = @MKINSTALLDIRS@ + OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++RC = @RC@ + STRIP = @STRIP@ + USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ +-am__include = @am__include@ +-am__quote = @am__quote@ +-install_sh = @install_sh@ + + SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext + + EXTRA_DIST = gsmlib.spec +- + @COMPILE_INTL_TRUE@SUBDIRS = intl $(SUBDIRS_) # po - make automake happy + @COMPILE_INTL_FALSE@SUBDIRS = $(SUBDIRS_) # po intl - make automake happy +-subdir = . + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs + CONFIG_HEADER = gsm_config.h +-CONFIG_CLEAN_FILES = intl/Makefile +-DIST_SOURCES = ++CONFIG_CLEAN_FILES = ++DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ ++INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ ++aclocal.m4 configure configure.in gsm_config.h.in + +-RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ +- uninstall-info-recursive all-recursive install-data-recursive \ +- install-exec-recursive installdirs-recursive install-recursive \ +- uninstall-recursive check-recursive installcheck-recursive +-DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ +- Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ +- aclocal.m4 configure configure.in gsm_config.h.in +-DIST_SUBDIRS = po gsmlib apps tests doc scripts win32 ext intl +-all: gsm_config.h +- $(MAKE) $(AM_MAKEFLAGS) all-recursive + ++DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ++ ++TAR = tar ++GZIP_ENV = --best ++DIST_SUBDIRS = intl po gsmlib apps tests doc scripts win32 ext po \ ++gsmlib apps tests doc scripts win32 ext ++all: all-redirect + .SUFFIXES: ++$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++ cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile + +-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --gnu Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) ++ cd $(top_builddir) \ ++ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++$(ACLOCAL_M4): configure.in acinclude.m4 ++ cd $(srcdir) && $(ACLOCAL) ++ ++config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +-$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) ++$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +-$(ACLOCAL_M4): configure.in acinclude.m4 +- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +- +-gsm_config.h: stamp-h1 ++gsm_config.h: stamp-h + @if test ! -f $@; then \ +- rm -f stamp-h1; \ +- $(MAKE) stamp-h1; \ ++ rm -f stamp-h; \ ++ $(MAKE) stamp-h; \ + else :; fi +- +-stamp-h1: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status +- @rm -f stamp-h1 +- cd $(top_builddir) && $(SHELL) ./config.status gsm_config.h +- +-$(srcdir)/gsm_config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h ++stamp-h: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status ++ cd $(top_builddir) \ ++ && CONFIG_FILES= CONFIG_HEADERS=gsm_config.h \ ++ $(SHELL) ./config.status ++ @echo timestamp > stamp-h 2> /dev/null ++$(srcdir)/gsm_config.h.in: $(srcdir)/stamp-h.in ++ @if test ! -f $@; then \ ++ rm -f $(srcdir)/stamp-h.in; \ ++ $(MAKE) $(srcdir)/stamp-h.in; \ ++ else :; fi ++$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) +- touch $(srcdir)/gsm_config.h.in ++ @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null + +-distclean-hdr: +- -rm -f gsm_config.h stamp-h1 +-intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in +- cd $(top_builddir) && $(SHELL) ./config.status $@ ++mostlyclean-hdr: + +-mostlyclean-libtool: +- -rm -f *.lo ++clean-hdr: + +-clean-libtool: +- -rm -rf .libs _libs ++distclean-hdr: ++ -rm -f gsm_config.h + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: ++maintainer-clean-hdr: + + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. +@@ -198,8 +195,13 @@ + # (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): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ ++@SET_MAKE@ ++ ++all-recursive install-data-recursive install-exec-recursive \ ++installdirs-recursive install-recursive uninstall-recursive \ ++check-recursive installcheck-recursive info-recursive dvi-recursive: ++ @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -219,18 +221,13 @@ + + mostlyclean-recursive clean-recursive distclean-recursive \ + maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @set fnord $(MAKEFLAGS); amf=$$2; \ + 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; \ ++ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ ++ rev="$$subdir $$rev"; \ ++ test "$$subdir" != "." || dot_seen=yes; \ + done; \ +- rev="$$rev ."; \ ++ test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ +@@ -247,237 +244,180 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- + tags: TAGS + +-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; } \ ++ID: $(HEADERS) $(SOURCES) $(LISP) ++ list='$(SOURCES) $(HEADERS)'; \ ++ unique=`for i in $$list; do echo $$i; done | \ ++ awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique ++ here=`pwd` && cd $(srcdir) \ ++ && mkid -f$$here/ID $$unique $(LISP) + +-TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) ++TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ ++ if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ +- fi; \ ++ fi; \ + done; \ +- list='$(SOURCES) $(HEADERS) gsm_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; } \ ++ list='$(SOURCES) $(HEADERS)'; \ ++ unique=`for i in $$list; do echo $$i; done | \ ++ awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here ++ test -z "$(ETAGS_ARGS)gsm_config.h.in$$unique$(LISP)$$tags" \ ++ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags gsm_config.h.in $$unique $(LISP)) + +-distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++mostlyclean-tags: + +-top_distdir = . +-distdir = $(PACKAGE)-$(VERSION) ++clean-tags: + +-am__remove_distdir = \ +- { test ! -d $(distdir) \ +- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ +- && rm -fr $(distdir); }; } ++distclean-tags: ++ -rm -f TAGS ID + +-GZIP_ENV = --best +-distcleancheck_listfiles = find . -type f -print ++maintainer-clean-tags: + ++distdir = $(PACKAGE)-$(VERSION) ++top_distdir = $(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 ++ -rm -rf $(distdir) ++ GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz ++ mkdir $(distdir)/=build ++ mkdir $(distdir)/=inst ++ dc_install_base=`cd $(distdir)/=inst && pwd`; \ ++ cd $(distdir)/=build \ ++ && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ ++ && $(MAKE) $(AM_MAKEFLAGS) \ ++ && $(MAKE) $(AM_MAKEFLAGS) dvi \ ++ && $(MAKE) $(AM_MAKEFLAGS) check \ ++ && $(MAKE) $(AM_MAKEFLAGS) install \ ++ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist ++ -rm -rf $(distdir) ++ @banner="$(distdir).tar.gz is ready for distribution"; \ ++ dashes=`echo "$$banner" | sed s/./=/g`; \ ++ echo "$$dashes"; \ ++ echo "$$banner"; \ ++ echo "$$dashes" ++dist: distdir ++ -chmod -R a+r $(distdir) ++ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) ++ -rm -rf $(distdir) ++dist-all: distdir ++ -chmod -R a+r $(distdir) ++ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) ++ -rm -rf $(distdir) + distdir: $(DISTFILES) +- $(am__remove_distdir) ++ -rm -rf $(distdir) + mkdir $(distdir) +- $(mkinstalldirs) $(distdir)/intl $(distdir)/po +- @list='$(DISTFILES)'; for file in $$list; do \ +- 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"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ ++ -chmod 777 $(distdir) ++ here=`cd $(top_builddir) && pwd`; \ ++ top_distdir=`cd $(distdir) && pwd`; \ ++ distdir=`cd $(distdir) && pwd`; \ ++ cd $(top_srcdir) \ ++ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile ++ @for file in $(DISTFILES); do \ ++ d=$(srcdir); \ + 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; \ ++ cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ +- || cp -p $$d/$$file $(distdir)/$$file \ +- || exit 1; \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++ || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ ++ for subdir in $(DIST_SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ +- (cd $$subdir && \ +- $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" \ +- distdir=../$(distdir)/$$subdir \ +- distdir) \ ++ chmod 777 $(distdir)/$$subdir; \ ++ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(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 +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- $(am__remove_distdir) +- +-dist dist-all: distdir +- $(AMTAR) chof - $(distdir) | 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 +- $(am__remove_distdir) +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - +- 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` \ +- && cd $(distdir)/=build \ +- && ../configure --srcdir=.. --prefix=$$dc_install_base \ +- --with-included-gettext \ +- $(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 \ +- && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ +- || { echo "ERROR: files left after uninstall:" ; \ +- find $$dc_install_base -type f -print ; \ +- exit 1; } >&2 ) \ +- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ +- && rm -f $(distdir).tar.gz \ +- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck +- $(am__remove_distdir) +- @echo "$(distdir).tar.gz is ready for distribution" | \ +- sed 'h;s/./=/g;p;x;p;x' +-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 after distclean:" ; \ +- $(distcleancheck_listfiles) ; \ +- exit 1; } >&2 ++info-am: ++info: info-recursive ++dvi-am: ++dvi: dvi-recursive + check-am: all-am + check: check-recursive +-all-am: Makefile gsm_config.h +-installdirs: installdirs-recursive +-installdirs-am: ++installcheck-am: ++installcheck: installcheck-recursive ++all-recursive-am: gsm_config.h ++ $(MAKE) $(AM_MAKEFLAGS) all-recursive + +-install: install-recursive ++install-exec-am: + install-exec: install-exec-recursive ++ ++install-data-am: + 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: install-recursive ++uninstall-am: ++uninstall: uninstall-recursive ++all-am: Makefile gsm_config.h ++all-redirect: all-recursive-am + install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++installdirs: installdirs-recursive ++installdirs-am: ++ ++ + mostlyclean-generic: + + clean-generic: + + distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) ++ -rm -f config.cache config.log stamp-h stamp-h[0-9]* + + 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) +-distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ +- distclean-tags ++mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +-dvi: dvi-recursive +- +-dvi-am: +- +-info: info-recursive +- +-info-am: ++mostlyclean: mostlyclean-recursive + +-install-data-am: ++clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +-install-exec-am: ++clean: clean-recursive + +-install-info: install-info-recursive ++distclean-am: distclean-hdr distclean-tags distclean-generic clean-am ++ -rm -f libtool + +-install-man: ++distclean: distclean-recursive ++ -rm -f config.status + +-installcheck-am: ++maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ ++ maintainer-clean-generic distclean-am ++ @echo "This command is intended for maintainers to use;" ++ @echo "it deletes files that may require special tools to rebuild." + + maintainer-clean: maintainer-clean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -rf autom4te.cache +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-recursive +- +-mostlyclean-am: mostlyclean-generic mostlyclean-libtool ++ -rm -f config.status + +-uninstall-am: uninstall-info-am +- +-uninstall-info: uninstall-info-recursive +- +-.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ +- clean-generic clean-libtool clean-recursive dist dist-all \ +- dist-gzip distcheck distclean distclean-generic distclean-hdr \ +- distclean-libtool distclean-recursive distclean-tags \ +- distcleancheck distdir dvi dvi-am dvi-recursive info info-am \ +- info-recursive install install-am install-data install-data-am \ +- install-data-recursive install-exec install-exec-am \ +- install-exec-recursive install-info install-info-am \ +- install-info-recursive install-man install-recursive \ +- install-strip installcheck installcheck-am installdirs \ +- installdirs-am installdirs-recursive maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive mostlyclean \ +- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ +- tags tags-recursive uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ ++install-data-recursive uninstall-data-recursive install-exec-recursive \ ++uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ ++all-recursive check-recursive installcheck-recursive info-recursive \ ++dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ ++maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ ++distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ ++dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ ++install-exec-am install-exec install-data-am install-data install-am \ ++install uninstall-am uninstall all-redirect all-am all installdirs-am \ ++installdirs mostlyclean-generic distclean-generic clean-generic \ ++maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + + all: ++ + # 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: +--- gsmlib-1.10.orig/gsm_config.h.in ++++ gsmlib-1.10/gsm_config.h.in +@@ -55,25 +55,50 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_ARGZ_H + ++/* Define to 1 if you have the `asprintf' function. */ ++#undef HAVE_ASPRINTF ++ ++/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the ++ CoreFoundation framework. */ ++#undef HAVE_CFLOCALECOPYCURRENT ++ ++/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in ++ the CoreFoundation framework. */ ++#undef HAVE_CFPREFERENCESCOPYAPPVALUE ++ + /* Define if the GNU dcgettext() function is already present or preinstalled. + */ + #undef HAVE_DCGETTEXT + ++/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you ++ don't. */ ++#undef HAVE_DECL_FEOF_UNLOCKED ++ ++/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if ++ you don't. */ ++#undef HAVE_DECL_FGETS_UNLOCKED ++ ++/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you ++ don't. */ ++#undef HAVE_DECL_GETC_UNLOCKED ++ ++/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you ++ don't. */ ++#undef HAVE_DECL__SNPRINTF ++ ++/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you ++ don't. */ ++#undef HAVE_DECL__SNWPRINTF ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_DLFCN_H + +-/* Define to 1 if you have the `feof_unlocked' function. */ +-#undef HAVE_FEOF_UNLOCKED +- +-/* Define to 1 if you have the `fgets_unlocked' function. */ +-#undef HAVE_FGETS_UNLOCKED ++/* Define to 1 if you have the `fwprintf' function. */ ++#undef HAVE_FWPRINTF + + /* Define to 1 if you have the `getcwd' function. */ + #undef HAVE_GETCWD + +-/* Define to 1 if you have the `getc_unlocked' function. */ +-#undef HAVE_GETC_UNLOCKED +- + /* Define to 1 if you have the `getegid' function. */ + #undef HAVE_GETEGID + +@@ -95,6 +120,9 @@ + /* Define if you have the iconv() function. */ + #undef HAVE_ICONV + ++/* Define if you have the 'intmax_t' type in or . */ ++#undef HAVE_INTMAX_T ++ + /* Define if exists and doesn't clash with . */ + #undef HAVE_INTTYPES_H + +@@ -120,6 +148,12 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_LOCALE_H + ++/* Define if you have the 'long double' type. */ ++#undef HAVE_LONG_DOUBLE ++ ++/* Define if you have the 'long long' type. */ ++#undef HAVE_LONG_LONG ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_MALLOC_H + +@@ -141,6 +175,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_NL_TYPES_H + ++/* Define if your printf() function supports format strings with positions. */ ++#undef HAVE_POSIX_PRINTF ++ + /* Define to 1 if you have the `putenv' function. */ + #undef HAVE_PUTENV + +@@ -150,6 +187,9 @@ + /* Define to 1 if you have the `setlocale' function. */ + #undef HAVE_SETLOCALE + ++/* Define to 1 if you have the `snprintf' function. */ ++#undef HAVE_SNPRINTF ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_STDDEF_H + +@@ -193,12 +233,24 @@ + /* Define to 1 if you have the `tsearch' function. */ + #undef HAVE_TSEARCH + ++/* Define if you have the 'uintmax_t' type in or . */ ++#undef HAVE_UINTMAX_T ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_UNISTD_H + +-/* Define if you have the unsigned long long type. */ ++/* Define if you have the 'unsigned long long' type. */ + #undef HAVE_UNSIGNED_LONG_LONG + ++/* Define if you have the 'wchar_t' type. */ ++#undef HAVE_WCHAR_T ++ ++/* Define to 1 if you have the `wcslen' function. */ ++#undef HAVE_WCSLEN ++ ++/* Define if you have the 'wint_t' type. */ ++#undef HAVE_WINT_T ++ + /* Define to 1 if you have the `__argz_count' function. */ + #undef HAVE___ARGZ_COUNT + +@@ -208,6 +260,9 @@ + /* Define to 1 if you have the `__argz_stringify' function. */ + #undef HAVE___ARGZ_STRINGIFY + ++/* Define to 1 if you have the `__fsetlocking' function. */ ++#undef HAVE___FSETLOCKING ++ + /* Define as const if the declaration of iconv() needs const. */ + #undef ICONV_CONST + +@@ -244,12 +299,16 @@ + /* The size of a `unsigned short int', as computed by sizeof. */ + #undef SIZEOF_UNSIGNED_SHORT_INT + ++/* Define as the maximum value of type 'size_t', if the system doesn't define ++ it. */ ++#undef SIZE_MAX ++ + /* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. +- STACK_DIRECTION > 0 => grows toward higher addresses +- STACK_DIRECTION < 0 => grows toward lower addresses +- STACK_DIRECTION = 0 => direction of growth unknown */ ++ STACK_DIRECTION > 0 => grows toward higher addresses ++ STACK_DIRECTION < 0 => grows toward lower addresses ++ STACK_DIRECTION = 0 => direction of growth unknown */ + #undef STACK_DIRECTION + + /* Define to 1 if you have the ANSI C header files. */ +@@ -261,16 +320,25 @@ + /* Define to empty if `const' does not conform to ANSI C. */ + #undef const + +-/* Define as `__inline' if that's what the C compiler calls it, or to nothing +- if it is not supported. */ ++/* 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 as the type of the result of subtracting two pointers, if the system ++ doesn't define it. */ ++#undef ptrdiff_t ++ ++/* Define to empty if the C compiler doesn't support this keyword. */ ++#undef signed ++ + /* Define to `unsigned' if does not define. */ + #undef size_t + +-/* Define to unsigned long or unsigned long long if and +- don't define. */ ++/* Define to unsigned long or unsigned long long if and ++ don't define. */ + #undef uintmax_t +--- gsmlib-1.10.orig/aclocal.m4 ++++ gsmlib-1.10/aclocal.m4 +@@ -1,7 +1,7 @@ +-# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- ++# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +-# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# 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. +@@ -11,5211 +11,1221 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + ++# codeset.m4 serial AM1 (gettext-0.10.40) ++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- +- +-# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ++dnl From Bruno Haible. + +-# 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. ++AC_DEFUN([AM_LANGINFO_CODESET], ++[ ++ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, ++ [AC_TRY_LINK([#include ], ++ [char* cs = nl_langinfo(CODESET);], ++ am_cv_langinfo_codeset=yes, ++ am_cv_langinfo_codeset=no) ++ ]) ++ if test $am_cv_langinfo_codeset = yes; then ++ AC_DEFINE(HAVE_LANGINFO_CODESET, 1, ++ [Define if you have and nl_langinfo(CODESET).]) ++ fi ++]) + +-# 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. ++# gettext.m4 serial 37 (gettext-0.14.4) ++dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2003. + +-AC_PREREQ([2.52]) ++dnl Macro to add for using GNU gettext. + +-# serial 6 ++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). ++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The ++dnl default (if it is not specified or empty) is 'no-libtool'. ++dnl INTLSYMBOL should be 'external' for packages with no intl directory, ++dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. ++dnl If INTLSYMBOL is 'use-libtool', then a libtool library ++dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, ++dnl depending on --{enable,disable}-{shared,static} and on the presence of ++dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library ++dnl $(top_builddir)/intl/libintl.a will be created. ++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext ++dnl implementations (in libc or libintl) without the ngettext() function ++dnl will be ignored. If NEEDSYMBOL is specified and is ++dnl 'need-formatstring-macros', then GNU gettext implementations that don't ++dnl support the ISO C 99 formatstring macros will be ignored. ++dnl INTLDIR is used to find the intl libraries. If empty, ++dnl the value `$(top_builddir)/intl/' is used. ++dnl ++dnl The result of the configuration is one of three cases: ++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled ++dnl and used. ++dnl Catalog format: GNU --> install in $(datadir) ++dnl Catalog extension: .mo after installation, .gmo in source tree ++dnl 2) GNU gettext has been found in the system's C library. ++dnl Catalog format: GNU --> install in $(datadir) ++dnl Catalog extension: .mo after installation, .gmo in source tree ++dnl 3) No internationalization, always use English msgid. ++dnl Catalog format: none ++dnl Catalog extension: none ++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. ++dnl The use of .gmo is historical (it was needed to avoid overwriting the ++dnl GNU format catalogs when building on a platform with an X/Open gettext), ++dnl but we keep it in order not to force irrelevant filename changes on the ++dnl maintainers. ++dnl ++AC_DEFUN([AM_GNU_GETTEXT], ++[ ++ dnl Argument checking. ++ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , ++ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ++])])])])]) ++ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , ++ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ++])])])]) ++ define([gt_included_intl], ifelse([$1], [external], [no], [yes])) ++ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + +-# 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. We must strip everything past the first ":", +-# and everything past the last "/". ++ AC_REQUIRE([AM_PO_SUBDIRS])dnl ++ ifelse(gt_included_intl, yes, [ ++ AC_REQUIRE([AM_INTL_SUBDIR])dnl ++ ]) + +-# _AM_DIRNAME(PATH) +-# ----------------- +-# Like AS_DIRNAME, only do it during macro expansion +-AC_DEFUN([_AM_DIRNAME], +- [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, +- m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, +- m4_if(regexp([$1], [^/.*]), -1, +- [.], +- patsubst([$1], [^\(/\).*], [\1])), +- patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), +- patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +-])# _AM_DIRNAME +- +- +-# The stamp files are numbered to have different names. +-# We could number them on a directory basis, but that's additional +-# complications, let's have a unique counter. +-m4_define([_AM_STAMP_Count], [0]) ++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) + ++ dnl Sometimes libintl requires libiconv, so first search for libiconv. ++ dnl Ideally we would do this search only after the ++ dnl if test "$USE_NLS" = "yes"; then ++ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then ++ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT ++ dnl the configure script would need to contain the same shell code ++ dnl again, outside any 'if'. There are two solutions: ++ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. ++ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. ++ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not ++ dnl documented, we avoid it. ++ ifelse(gt_included_intl, yes, , [ ++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ++ ]) + +-# _AM_STAMP(HEADER) +-# ----------------- +-# The name of the stamp file for HEADER. +-AC_DEFUN([_AM_STAMP], +-[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl +-AS_ESCAPE(_AM_DIRNAME(patsubst([$1], +- [:.*])))/stamp-h[]_AM_STAMP_Count]) ++ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. ++ gt_INTL_MACOSX + ++ dnl Set USE_NLS. ++ AM_NLS + +-# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) +-# ------------------------------------------------------------ +-# We used to try to get a real timestamp in stamp-h. But the fear is that +-# that will cause unnecessary cvs conflicts. +-AC_DEFUN([_AM_CONFIG_HEADER], +-[# Add the stamp file to the list of files AC keeps track of, +-# along with our hook. +-AC_CONFIG_HEADERS([$1], +- [# update the timestamp +-echo 'timestamp for $1' >"_AM_STAMP([$1])" +-$2], +- [$3]) +-])# _AM_CONFIG_HEADER +- +- +-# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) +-# -------------------------------------------------------------- +-AC_DEFUN([AM_CONFIG_HEADER], +-[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) +-])# AM_CONFIG_HEADER ++ ifelse(gt_included_intl, yes, [ ++ BUILD_INCLUDED_LIBINTL=no ++ USE_INCLUDED_LIBINTL=no ++ ]) ++ LIBINTL= ++ LTLIBINTL= ++ POSUB= + +-# Do all the work for Automake. -*- Autoconf -*- ++ dnl If we use NLS figure out what method ++ if test "$USE_NLS" = "yes"; then ++ gt_use_preinstalled_gnugettext=no ++ ifelse(gt_included_intl, yes, [ ++ AC_MSG_CHECKING([whether included gettext is requested]) ++ AC_ARG_WITH(included-gettext, ++ [ --with-included-gettext use the GNU gettext library included here], ++ nls_cv_force_use_gnu_gettext=$withval, ++ nls_cv_force_use_gnu_gettext=no) ++ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + +-# 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. ++ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" ++ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ++ ]) ++ dnl User does not insist on using GNU NLS library. Figure out what ++ dnl to use. If GNU gettext is available we use this. Else we have ++ dnl to fall back to GNU NLS library. + +-# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++ dnl Add a version number to the cache macros. ++ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) ++ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) ++ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + +-# 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. ++ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, ++ [AC_TRY_LINK([#include ++]ifelse([$2], [need-formatstring-macros], ++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) ++#endif ++changequote(,)dnl ++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ++changequote([,])dnl ++], [])[extern int _nl_msg_cat_cntr; ++extern int *_nl_domain_bindings;], ++ [bindtextdomain ("", ""); ++return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], ++ gt_cv_func_gnugettext_libc=yes, ++ gt_cv_func_gnugettext_libc=no)]) + +-# 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. ++ if test "$gt_cv_func_gnugettext_libc" != "yes"; then ++ dnl Sometimes libintl requires libiconv, so first search for libiconv. ++ ifelse(gt_included_intl, yes, , [ ++ AM_ICONV_LINK ++ ]) ++ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL ++ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) ++ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL ++ dnl even if libiconv doesn't exist. ++ AC_LIB_LINKFLAGS_BODY([intl]) ++ AC_CACHE_CHECK([for GNU gettext in libintl], ++ gt_cv_func_gnugettext_libintl, ++ [gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $INCINTL" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBINTL" ++ dnl Now see whether libintl exists and does not depend on libiconv. ++ AC_TRY_LINK([#include ++]ifelse([$2], [need-formatstring-macros], ++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) ++#endif ++changequote(,)dnl ++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ++changequote([,])dnl ++], [])[extern int _nl_msg_cat_cntr; ++extern ++#ifdef __cplusplus ++"C" ++#endif ++const char *_nl_expand_alias (const char *);], ++ [bindtextdomain ("", ""); ++return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], ++ gt_cv_func_gnugettext_libintl=yes, ++ gt_cv_func_gnugettext_libintl=no) ++ dnl Now see whether libintl exists and depends on libiconv. ++ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then ++ LIBS="$LIBS $LIBICONV" ++ AC_TRY_LINK([#include ++]ifelse([$2], [need-formatstring-macros], ++[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) ++#endif ++changequote(,)dnl ++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ++changequote([,])dnl ++], [])[extern int _nl_msg_cat_cntr; ++extern ++#ifdef __cplusplus ++"C" ++#endif ++const char *_nl_expand_alias (const char *);], ++ [bindtextdomain ("", ""); ++return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], ++ [LIBINTL="$LIBINTL $LIBICONV" ++ LTLIBINTL="$LTLIBINTL $LTLIBICONV" ++ gt_cv_func_gnugettext_libintl=yes ++ ]) ++ fi ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS"]) ++ fi + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++ dnl If an already present or preinstalled GNU gettext() is found, ++ dnl use it. But if this macro is used in GNU gettext, and GNU ++ dnl gettext is already preinstalled in libintl, we update this ++ dnl libintl. (Cf. the install rule in intl/Makefile.in.) ++ if test "$gt_cv_func_gnugettext_libc" = "yes" \ ++ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ ++ && test "$PACKAGE" != gettext-runtime \ ++ && test "$PACKAGE" != gettext-tools; }; then ++ gt_use_preinstalled_gnugettext=yes ++ else ++ dnl Reset the values set by searching for libintl. ++ LIBINTL= ++ LTLIBINTL= ++ INCINTL= ++ fi + +-# serial 8 ++ ifelse(gt_included_intl, yes, [ ++ if test "$gt_use_preinstalled_gnugettext" != "yes"; then ++ dnl GNU gettext is not found in the C library. ++ dnl Fall back on included GNU gettext library. ++ nls_cv_use_gnu_gettext=yes ++ fi ++ fi + +-# 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... ++ if test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Mark actions used to generate GNU NLS library. ++ BUILD_INCLUDED_LIBINTL=yes ++ USE_INCLUDED_LIBINTL=yes ++ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" ++ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" ++ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` ++ fi + ++ CATOBJEXT= ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Mark actions to use GNU gettext tools. ++ CATOBJEXT=.gmo ++ fi ++ ]) + +-AC_PREREQ([2.52]) ++ if test -n "$INTL_MACOSX_LIBS"; then ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Some extra flags are needed during linking. ++ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" ++ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" ++ fi ++ fi + +-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +-# the ones we care about. +-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ AC_DEFINE(ENABLE_NLS, 1, ++ [Define to 1 if translation of program messages to the user's native language ++ is requested.]) ++ else ++ USE_NLS=no ++ fi ++ fi + +-# 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_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 ++ AC_MSG_CHECKING([whether to use NLS]) ++ AC_MSG_RESULT([$USE_NLS]) ++ if test "$USE_NLS" = "yes"; then ++ AC_MSG_CHECKING([where the gettext function comes from]) ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then ++ gt_source="external libintl" ++ else ++ gt_source="libc" ++ fi ++ else ++ gt_source="included intl directory" ++ fi ++ AC_MSG_RESULT([$gt_source]) ++ fi + +-# 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 ++ if test "$USE_NLS" = "yes"; then + +-_AM_IF_OPTION([no-define],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then ++ AC_MSG_CHECKING([how to link with libintl]) ++ AC_MSG_RESULT([$LIBINTL]) ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) ++ fi + +-# 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_MISSING_PROG(AMTAR, tar) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-# 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 ++ dnl For backward compatibility. Some packages may be using this. ++ AC_DEFINE(HAVE_GETTEXT, 1, ++ [Define if the GNU gettext() function is already present or preinstalled.]) ++ AC_DEFINE(HAVE_DCGETTEXT, 1, ++ [Define if the GNU dcgettext() function is already present or preinstalled.]) ++ fi + +-_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 +-]) +-]) ++ dnl We need to process the po/ directory. ++ POSUB=po ++ fi + +-# Copyright 2002 Free Software Foundation, Inc. ++ ifelse(gt_included_intl, yes, [ ++ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL ++ dnl to 'yes' because some of the testsuite requires it. ++ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then ++ BUILD_INCLUDED_LIBINTL=yes ++ fi + +-# 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. ++ dnl Make all variables we use known to autoconf. ++ AC_SUBST(BUILD_INCLUDED_LIBINTL) ++ AC_SUBST(USE_INCLUDED_LIBINTL) ++ AC_SUBST(CATOBJEXT) + +-# 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. ++ dnl For backward compatibility. Some configure.ins may be using this. ++ nls_cv_header_intl= ++ nls_cv_header_libgt= + +-# 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., 59 Temple Place - Suite 330, Boston, MA ++ dnl For backward compatibility. Some Makefiles may be using this. ++ DATADIRNAME=share ++ AC_SUBST(DATADIRNAME) + +-# 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.6"]) ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INSTOBJEXT=.mo ++ AC_SUBST(INSTOBJEXT) + +-# 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.6.3])]) ++ dnl For backward compatibility. Some Makefiles may be using this. ++ GENCAT=gencat ++ AC_SUBST(GENCAT) + +-# Helper functions for option handling. -*- Autoconf -*- ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INTLOBJS= ++ if test "$USE_INCLUDED_LIBINTL" = yes; then ++ INTLOBJS="\$(GETTOBJS)" ++ fi ++ AC_SUBST(INTLOBJS) + +-# Copyright 2001, 2002 Free Software Foundation, Inc. ++ dnl Enable libtool support if the surrounding package wishes it. ++ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix ++ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ++ ]) + +-# 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. ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INTLLIBS="$LIBINTL" ++ AC_SUBST(INTLLIBS) + +-# 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. ++ dnl Make all documented variables known to autoconf. ++ AC_SUBST(LIBINTL) ++ AC_SUBST(LTLIBINTL) ++ AC_SUBST(POSUB) ++]) + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. + +-# serial 2 ++dnl Checks for all prerequisites of the intl subdirectory, ++dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, ++dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. ++AC_DEFUN([AM_INTL_SUBDIR], ++[ ++ AC_REQUIRE([AC_PROG_INSTALL])dnl ++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl ++ AC_REQUIRE([AC_PROG_CC])dnl ++ AC_REQUIRE([AC_CANONICAL_HOST])dnl ++ AC_REQUIRE([gt_GLIBC2])dnl ++ AC_REQUIRE([AC_PROG_RANLIB])dnl ++ AC_REQUIRE([AC_ISC_POSIX])dnl ++ AC_REQUIRE([AC_HEADER_STDC])dnl ++ AC_REQUIRE([AC_C_CONST])dnl ++ AC_REQUIRE([bh_C_SIGNED])dnl ++ AC_REQUIRE([AC_C_INLINE])dnl ++ AC_REQUIRE([AC_TYPE_OFF_T])dnl ++ AC_REQUIRE([AC_TYPE_SIZE_T])dnl ++ AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl ++ AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl ++ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl ++ AC_REQUIRE([gt_TYPE_WINT_T])dnl ++ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) ++ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) ++ AC_REQUIRE([gt_TYPE_INTMAX_T]) ++ AC_REQUIRE([gt_PRINTF_POSIX]) ++ AC_REQUIRE([AC_FUNC_ALLOCA])dnl ++ AC_REQUIRE([AC_FUNC_MMAP])dnl ++ AC_REQUIRE([gl_GLIBC21])dnl ++ AC_REQUIRE([gt_INTDIV0])dnl ++ AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl ++ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl ++ AC_REQUIRE([gt_INTTYPES_PRI])dnl ++ AC_REQUIRE([gl_XSIZE])dnl ++ AC_REQUIRE([gt_INTL_MACOSX])dnl + +-# _AM_MANGLE_OPTION(NAME) +-# ----------------------- +-AC_DEFUN([_AM_MANGLE_OPTION], +-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++ AC_CHECK_TYPE([ptrdiff_t], , ++ [AC_DEFINE([ptrdiff_t], [long], ++ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ++ ]) ++ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ ++stdlib.h string.h unistd.h sys/param.h]) ++ AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ ++mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ ++strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ ++__fsetlocking]) ++ ++ dnl Use the _snprintf function only if it is declared (because on NetBSD it ++ dnl is defined as a weak alias of snprintf; we prefer to use the latter). ++ gt_CHECK_DECL(_snprintf, [#include ]) ++ gt_CHECK_DECL(_snwprintf, [#include ]) ++ ++ dnl Use the *_unlocked functions only if they are declared. ++ dnl (because some of them were defined without being declared in Solaris ++ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built ++ dnl on Solaris 2.5.1 to run on Solaris 2.6). ++ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. ++ gt_CHECK_DECL(feof_unlocked, [#include ]) ++ gt_CHECK_DECL(fgets_unlocked, [#include ]) ++ gt_CHECK_DECL(getc_unlocked, [#include ]) ++ ++ case $gt_cv_func_printf_posix in ++ *yes) HAVE_POSIX_PRINTF=1 ;; ++ *) HAVE_POSIX_PRINTF=0 ;; ++ esac ++ AC_SUBST([HAVE_POSIX_PRINTF]) ++ if test "$ac_cv_func_asprintf" = yes; then ++ HAVE_ASPRINTF=1 ++ else ++ HAVE_ASPRINTF=0 ++ fi ++ AC_SUBST([HAVE_ASPRINTF]) ++ if test "$ac_cv_func_snprintf" = yes; then ++ HAVE_SNPRINTF=1 ++ else ++ HAVE_SNPRINTF=0 ++ fi ++ AC_SUBST([HAVE_SNPRINTF]) ++ if test "$ac_cv_func_wprintf" = yes; then ++ HAVE_WPRINTF=1 ++ else ++ HAVE_WPRINTF=0 ++ fi ++ AC_SUBST([HAVE_WPRINTF]) + +-# _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_ICONV ++ AM_LANGINFO_CODESET ++ if test $ac_cv_header_locale_h = yes; then ++ gt_LC_MESSAGES ++ fi + +-# _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)])]) ++ if test -n "$INTL_MACOSX_LIBS"; then ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ fi + +-# _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])]) ++ dnl intl/plural.c is generated from intl/plural.y. It requires bison, ++ dnl because plural.y uses bison specific features. It requires at least ++ dnl bison-1.26 because earlier versions generate a plural.c that doesn't ++ dnl compile. ++ dnl bison is only needed for the maintainer (who touches plural.y). But in ++ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put ++ dnl the rule in general Makefile. Now, some people carelessly touch the ++ dnl files or have a broken "make" program, hence the plural.c rule will ++ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not ++ dnl present or too old. ++ AC_CHECK_PROGS([INTLBISON], [bison]) ++ if test -z "$INTLBISON"; then ++ ac_verc_fail=yes ++ else ++ dnl Found it, now check the version. ++ AC_MSG_CHECKING([version of bison]) ++changequote(<<,>>)dnl ++ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` ++ case $ac_prog_version in ++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; ++ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) ++changequote([,])dnl ++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; ++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; ++ esac ++ AC_MSG_RESULT([$ac_prog_version]) ++ fi ++ if test $ac_verc_fail = yes; then ++ INTLBISON=: ++ fi ++]) + +-# +-# Check to make sure that the build environment is sane. +-# + +-# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ++dnl Checks for special options needed on MacOS X. ++dnl Defines INTL_MACOSX_LIBS. ++AC_DEFUN([gt_INTL_MACOSX], ++[ ++ dnl Check for API introduced in MacOS X 10.2. ++ AC_CACHE_CHECK([for CFPreferencesCopyAppValue], ++ gt_cv_func_CFPreferencesCopyAppValue, ++ [gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -framework CoreFoundation" ++ AC_TRY_LINK([#include ], ++ [CFPreferencesCopyAppValue(NULL, NULL)], ++ [gt_cv_func_CFPreferencesCopyAppValue=yes], ++ [gt_cv_func_CFPreferencesCopyAppValue=no]) ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS"]) ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then ++ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, ++ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) ++ fi ++ dnl Check for API introduced in MacOS X 10.3. ++ AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, ++ [gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -framework CoreFoundation" ++ AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], ++ [gt_cv_func_CFLocaleCopyCurrent=yes], ++ [gt_cv_func_CFLocaleCopyCurrent=no]) ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS"]) ++ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then ++ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, ++ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) ++ fi ++ INTL_MACOSX_LIBS= ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" ++ fi ++ AC_SUBST([INTL_MACOSX_LIBS]) ++]) + +-# 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. ++dnl gt_CHECK_DECL(FUNC, INCLUDES) ++dnl Check whether a function is declared. ++AC_DEFUN([gt_CHECK_DECL], ++[ ++ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, ++ [AC_TRY_COMPILE([$2], [ ++#ifndef $1 ++ char *p = (char *) $1; ++#endif ++], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) ++ if test $ac_cv_have_decl_$1 = yes; then ++ gt_value=1 ++ else ++ gt_value=0 ++ fi ++ AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], ++ [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) ++]) + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. + +-# serial 3 ++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) ++AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + +-# 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)]) +- +-# -*- Autoconf -*- ++# glibc2.m4 serial 1 ++dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + ++# Test for the GNU C Library, version 2.0 or newer. ++# From Bruno Haible. + +-# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. ++AC_DEFUN([gt_GLIBC2], ++ [ ++ AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, ++ ac_cv_gnu_library_2, ++ [AC_EGREP_CPP([Lucky GNU user], ++ [ ++#include ++#ifdef __GNU_LIBRARY__ ++ #if (__GLIBC__ >= 2) ++ Lucky GNU user ++ #endif ++#endif ++ ], ++ ac_cv_gnu_library_2=yes, ++ ac_cv_gnu_library_2=no) ++ ] ++ ) ++ AC_SUBST(GLIBC2) ++ GLIBC2="$ac_cv_gnu_library_2" ++ ] ++) + +-# 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. ++# glibc21.m4 serial 3 ++dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl 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; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. ++# Test for the GNU C Library, version 2.1 or newer. ++# From Bruno Haible. + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++AC_DEFUN([gl_GLIBC21], ++ [ ++ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ++ ac_cv_gnu_library_2_1, ++ [AC_EGREP_CPP([Lucky GNU user], ++ [ ++#include ++#ifdef __GNU_LIBRARY__ ++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) ++ Lucky GNU user ++ #endif ++#endif ++ ], ++ ac_cv_gnu_library_2_1=yes, ++ ac_cv_gnu_library_2_1=no) ++ ] ++ ) ++ AC_SUBST(GLIBC21) ++ GLIBC21="$ac_cv_gnu_library_2_1" ++ ] ++) + +-# serial 3 ++# iconv.m4 serial AM4 (gettext-0.11.3) ++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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)]) ++dnl From Bruno Haible. + ++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], ++[ ++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) + +-# 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 ++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV ++ dnl accordingly. ++ AC_LIB_LINKFLAGS_BODY([iconv]) + ]) + +-# AM_AUX_DIR_EXPAND +- +-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++AC_DEFUN([AM_ICONV_LINK], ++[ ++ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and ++ dnl those with the standalone portable GNU libiconv installed). + +-# 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. ++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV ++ dnl accordingly. ++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + +-# Rely on autoconf to set up CDPATH properly. +-AC_PREREQ([2.50]) ++ dnl Add $INCICONV to CPPFLAGS before performing the following checks, ++ dnl because if the user has installed libiconv and not disabled its use ++ dnl via --without-libiconv-prefix, he wants to use it. The first ++ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. ++ am_save_CPPFLAGS="$CPPFLAGS" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + +-AC_DEFUN([AM_AUX_DIR_EXPAND], [ +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` ++ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ ++ am_cv_func_iconv="no, consider installing GNU libiconv" ++ am_cv_lib_iconv=no ++ AC_TRY_LINK([#include ++#include ], ++ [iconv_t cd = iconv_open("",""); ++ iconv(cd,NULL,NULL,NULL,NULL); ++ iconv_close(cd);], ++ am_cv_func_iconv=yes) ++ if test "$am_cv_func_iconv" != yes; then ++ am_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBICONV" ++ AC_TRY_LINK([#include ++#include ], ++ [iconv_t cd = iconv_open("",""); ++ iconv(cd,NULL,NULL,NULL,NULL); ++ iconv_close(cd);], ++ am_cv_lib_iconv=yes ++ am_cv_func_iconv=yes) ++ LIBS="$am_save_LIBS" ++ fi ++ ]) ++ if test "$am_cv_func_iconv" = yes; then ++ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) ++ fi ++ if test "$am_cv_lib_iconv" = yes; then ++ AC_MSG_CHECKING([how to link with libiconv]) ++ AC_MSG_RESULT([$LIBICONV]) ++ else ++ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV ++ dnl either. ++ CPPFLAGS="$am_save_CPPFLAGS" ++ LIBICONV= ++ LTLIBICONV= ++ fi ++ AC_SUBST(LIBICONV) ++ AC_SUBST(LTLIBICONV) + ]) + +-# AM_PROG_INSTALL_SH +-# ------------------ +-# Define $install_sh. ++AC_DEFUN([AM_ICONV], ++[ ++ AM_ICONV_LINK ++ if test "$am_cv_func_iconv" = yes; then ++ AC_MSG_CHECKING([for iconv declaration]) ++ AC_CACHE_VAL(am_cv_proto_iconv, [ ++ AC_TRY_COMPILE([ ++#include ++#include ++extern ++#ifdef __cplusplus ++"C" ++#endif ++#if defined(__STDC__) || defined(__cplusplus) ++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); ++#else ++size_t iconv(); ++#endif ++], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") ++ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) ++ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` ++ AC_MSG_RESULT([$]{ac_t:- ++ }[$]am_cv_proto_iconv) ++ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, ++ [Define as const if the declaration of iconv() needs const.]) ++ fi ++]) + +-# Copyright 2001 Free Software Foundation, Inc. ++# intdiv0.m4 serial 1 (gettext-0.11.3) ++dnl Copyright (C) 2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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. ++dnl From Bruno Haible. + +-# 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. ++AC_DEFUN([gt_INTDIV0], ++[ ++ AC_REQUIRE([AC_PROG_CC])dnl ++ AC_REQUIRE([AC_CANONICAL_HOST])dnl + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], ++ gt_cv_int_divbyzero_sigfpe, ++ [ ++ AC_TRY_RUN([ ++#include ++#include + +-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)]) ++static void ++#ifdef __cplusplus ++sigfpe_handler (int sig) ++#else ++sigfpe_handler (sig) int sig; ++#endif ++{ ++ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ ++ exit (sig != SIGFPE); ++} + +-# AM_PROG_INSTALL_STRIP +- +-# Copyright 2001 Free Software Foundation, Inc. ++int x = 1; ++int y = 0; ++int z; ++int nan; + +-# 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. ++int main () ++{ ++ signal (SIGFPE, sigfpe_handler); ++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ ++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) ++ signal (SIGTRAP, sigfpe_handler); ++#endif ++/* Linux/SPARC yields signal SIGILL. */ ++#if defined (__sparc__) && defined (__linux__) ++ signal (SIGILL, sigfpe_handler); ++#endif + +-# 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. ++ z = x / y; ++ nan = y / y; ++ exit (1); ++} ++], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, ++ [ ++ # Guess based on the CPU. ++ case "$host_cpu" in ++ alpha* | i[34567]86 | m68k | s390*) ++ gt_cv_int_divbyzero_sigfpe="guessing yes";; ++ *) ++ gt_cv_int_divbyzero_sigfpe="guessing no";; ++ esac ++ ]) ++ ]) ++ case "$gt_cv_int_divbyzero_sigfpe" in ++ *yes) value=1;; ++ *) value=0;; ++ esac ++ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, ++ [Define if integer division by zero raises signal SIGFPE.]) ++]) + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++# intmax.m4 serial 2 (gettext-0.14.2) ++dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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])]) ++dnl From Bruno Haible. ++dnl Test whether the system has the 'intmax_t' type, but don't attempt to ++dnl find a replacement if it is lacking. + +-# serial 4 -*- Autoconf -*- ++AC_DEFUN([gt_TYPE_INTMAX_T], ++[ ++ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) ++ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) ++ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, ++ [AC_TRY_COMPILE([ ++#include ++#include ++#if HAVE_STDINT_H_WITH_UINTMAX ++#include ++#endif ++#if HAVE_INTTYPES_H_WITH_UINTMAX ++#include ++#endif ++], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) ++ if test $gt_cv_c_intmax_t = yes; then ++ AC_DEFINE(HAVE_INTMAX_T, 1, ++ [Define if you have the 'intmax_t' type in or .]) ++ fi ++]) + +-# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. ++# inttypes-pri.m4 serial 1 (gettext-0.11.4) ++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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. ++dnl From Bruno Haible. + +-# 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. ++# Define PRI_MACROS_BROKEN if exists and defines the PRI* ++# macros to non-string values. This is the case on AIX 4.3.3. + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++AC_DEFUN([gt_INTTYPES_PRI], ++[ ++ AC_REQUIRE([gt_HEADER_INTTYPES_H]) ++ if test $gt_cv_header_inttypes_h = yes; then ++ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], ++ gt_cv_inttypes_pri_broken, ++ [ ++ AC_TRY_COMPILE([#include ++#ifdef PRId32 ++char *p = PRId32; ++#endif ++], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) ++ ]) ++ fi ++ if test "$gt_cv_inttypes_pri_broken" = yes; then ++ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, ++ [Define if exists and defines unusable PRI* macros.]) ++ fi ++]) + ++# inttypes.m4 serial 1 (gettext-0.11.4) ++dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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... ++dnl From Paul Eggert. + ++# Define HAVE_INTTYPES_H if exists and doesn't clash with ++# . + ++AC_DEFUN([gt_HEADER_INTTYPES_H], ++[ ++ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, ++ [ ++ AC_TRY_COMPILE( ++ [#include ++#include ], ++ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) ++ ]) ++ if test $gt_cv_header_inttypes_h = yes; then ++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, ++ [Define if exists and doesn't clash with .]) ++ fi ++]) + +-# _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 ++# inttypes_h.m4 serial 6 ++dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-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=]) ++dnl From Paul Eggert. + +-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 ++# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, ++# doesn't clash with , and declares uintmax_t. + +- 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` ++AC_DEFUN([gl_AC_HEADER_INTTYPES_H], ++[ ++ AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, ++ [AC_TRY_COMPILE( ++ [#include ++#include ], ++ [uintmax_t i = (uintmax_t) -1;], ++ gl_cv_header_inttypes_h=yes, ++ gl_cv_header_inttypes_h=no)]) ++ if test $gl_cv_header_inttypes_h = yes; then ++ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, ++ [Define if exists, doesn't clash with , ++ and declares uintmax_t. ]) + fi +- for depmode in $am_compiler_list; do +- # 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. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}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=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_$1_dependencies_compiler_type=$depmode +- break +- 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]) + ]) + ++# lcmessage.m4 serial 4 (gettext-0.14.2) ++dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. + +-# AM_SET_DEPDIR +-# ------------- +-# Choose a directory name for dependency files. +-# This macro is AC_REQUIREd in _AM_DEPENDENCIES +-AC_DEFUN([AM_SET_DEPDIR], +-[rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps +-else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps +-fi +-rmdir .deps 2>/dev/null +-AC_SUBST([DEPDIR]) +-]) ++dnl Authors: ++dnl Ulrich Drepper , 1995. + ++# Check whether LC_MESSAGES is available in . + +-# AM_DEP_TRACK +-# ------------ +-AC_DEFUN([AM_DEP_TRACK], +-[AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking Speeds up one-time builds +- --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]) ++AC_DEFUN([gt_LC_MESSAGES], ++[ ++ AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, ++ [AC_TRY_LINK([#include ], [return LC_MESSAGES], ++ gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) ++ if test $gt_cv_val_LC_MESSAGES = yes; then ++ AC_DEFINE(HAVE_LC_MESSAGES, 1, ++ [Define if your file defines LC_MESSAGES.]) ++ fi + ]) + +-# Generate code to set up dependency tracking. -*- Autoconf -*- +- +-# Copyright 1999, 2000, 2001, 2002 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. ++# lib-ld.m4 serial 3 (gettext-0.13) ++dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++dnl Subroutines of libtool.m4, ++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision ++dnl with libtool.m4. + +-#serial 2 ++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. ++AC_DEFUN([AC_LIB_PROG_LD_GNU], ++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, ++[# I'd rather use --version here, but apparently some GNU ld's only accept -v. ++case `$LD -v 2>&1 /dev/null 2>&1; then +- dirpart=`AS_DIRNAME("$mf")` ++dnl From libtool-1.4. Sets the variable LD. ++AC_DEFUN([AC_LIB_PROG_LD], ++[AC_ARG_WITH(gnu-ld, ++[ --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([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++# Prepare PATH_SEPARATOR. ++# 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 +- continue ++ PATH_SEPARATOR=: + fi +- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` +- test -z "$DEPDIR" && continue +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # 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 -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //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"]) +-]) +- +-# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- +- +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 2 +- +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-doit: +- @echo done +-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 | fgrep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU ++ rm -f conf$$.sh + 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 ++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 GCC]) ++ 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. ++ [[\\/]* | [A-Za-z]:[\\/]*)] ++ [re_direlt='/[^/][^/]*/\.\./'] ++ # Canonicalize the path 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_SUBST(am__include) +-AC_SUBST(am__quote) +-AC_MSG_RESULT($_am_result) +-rm -f confinc confmf ++AC_CACHE_VAL(acl_cv_path_LD, ++[if test -z "$LD"; then ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" ++ for ac_dir in $PATH; do ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ acl_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some GNU ld's only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in ++ *GNU* | *'with BFD'*) ++ test "$with_gnu_ld" != no && break ;; ++ *) ++ test "$with_gnu_ld" != yes && break ;; ++ esac ++ fi ++ done ++ IFS="$ac_save_ifs" ++else ++ acl_cv_path_LD="$LD" # Let the user override the test with a path. ++fi]) ++LD="$acl_cv_path_LD" ++if test -n "$LD"; then ++ AC_MSG_RESULT($LD) ++else ++ AC_MSG_RESULT(no) ++fi ++test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) ++AC_LIB_PROG_LD_GNU + ]) + +-# AM_CONDITIONAL -*- Autoconf -*- +- +-# Copyright 1997, 2000, 2001 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. ++# lib-link.m4 serial 6 (gettext-0.14.3) ++dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl 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; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. ++dnl From Bruno Haible. + +-# 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., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. ++AC_PREREQ(2.50) + +-# serial 5 ++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and ++dnl the libraries corresponding to explicit and implicit dependencies. ++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and ++dnl augments the CPPFLAGS variable. ++AC_DEFUN([AC_LIB_LINKFLAGS], ++[ ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) ++ define([Name],[translit([$1],[./-], [___])]) ++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) ++ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ ++ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ++ ac_cv_lib[]Name[]_libs="$LIB[]NAME" ++ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ++ ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ++ ]) ++ LIB[]NAME="$ac_cv_lib[]Name[]_libs" ++ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" ++ INC[]NAME="$ac_cv_lib[]Name[]_cppflags" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) ++ AC_SUBST([LIB]NAME) ++ AC_SUBST([LTLIB]NAME) ++ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the ++ dnl results of this search when this library appears as a dependency. ++ HAVE_LIB[]NAME=yes ++ undefine([Name]) ++ undefine([NAME]) ++]) + +-AC_PREREQ(2.52) ++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) ++dnl searches for libname and the libraries corresponding to explicit and ++dnl implicit dependencies, together with the specified include files and ++dnl the ability to compile and link the specified testcode. If found, it ++dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and ++dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and ++dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs ++dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. ++AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], ++[ ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) ++ define([Name],[translit([$1],[./-], [___])]) ++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-AC_DEFUN([AM_CONDITIONAL], +-[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])]) ++ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME ++ dnl accordingly. ++ AC_LIB_LINKFLAGS_BODY([$1], [$2]) + +-# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- ++ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, ++ dnl because if the user has installed lib[]Name and not disabled its use ++ dnl via --without-lib[]Name-prefix, he wants to use it. ++ ac_save_CPPFLAGS="$CPPFLAGS" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + +-# serial 46 AC_PROG_LIBTOOL ++ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ++ ac_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIB[]NAME" ++ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) ++ LIBS="$ac_save_LIBS" ++ ]) ++ if test "$ac_cv_lib[]Name" = yes; then ++ HAVE_LIB[]NAME=yes ++ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) ++ AC_MSG_CHECKING([how to link with lib[]$1]) ++ AC_MSG_RESULT([$LIB[]NAME]) ++ else ++ HAVE_LIB[]NAME=no ++ dnl If $LIB[]NAME didn't lead to a usable library, we don't need ++ dnl $INC[]NAME either. ++ CPPFLAGS="$ac_save_CPPFLAGS" ++ LIB[]NAME= ++ LTLIB[]NAME= ++ fi ++ AC_SUBST([HAVE_LIB]NAME) ++ AC_SUBST([LIB]NAME) ++ AC_SUBST([LTLIB]NAME) ++ undefine([Name]) ++ undefine([NAME]) ++]) + +-AC_DEFUN([AC_PROG_LIBTOOL], +-[AC_REQUIRE([AC_LIBTOOL_SETUP])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_DEFUN([AC_LIBTOOL_SETUP], +-[AC_PREREQ(2.13)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 +-AC_REQUIRE([AC_OBJEXT])dnl +-AC_REQUIRE([AC_EXEEXT])dnl +-dnl +- +-_LT_AC_PROG_ECHO_BACKSLASH +-# 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_CHECK_TOOL(RANLIB, ranlib, :) +-AC_CHECK_TOOL(STRIP, strip, :) +- +-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +-enable_win32_dll=yes, enable_win32_dll=no) +- +-AC_ARG_ENABLE(libtool-lock, +- [ --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 +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- 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 +- 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_SAVE +- AC_LANG_C +- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_RESTORE]) +- 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 +- ;; +- +-ifdef([AC_PROVIDE_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) +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one +- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, +- [AC_TRY_LINK([], +- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); +- DllMain (0, 0, 0);], +- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) +- +- case $host/$CC in +- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) +- # old mingw systems require "-dll" to link a DLL, while more recent ones +- # require "-mdll" +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -mdll" +- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, +- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) +- CFLAGS="$SAVE_CFLAGS" ;; +- *-*-cygwin* | *-*-pw32*) +- # cygwin systems need to pass --dll to the linker, and not link +- # crt.o which will require a WinMain@16 definition. +- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; +- esac +- ;; ++dnl Determine the platform dependent parameters needed to use rpath: ++dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, ++dnl hardcode_direct, hardcode_minus_L. ++AC_DEFUN([AC_LIB_RPATH], ++[ ++ dnl Tell automake >= 1.10 to complain if config.rpath is missing. ++ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) ++ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS ++ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld ++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host ++ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir ++ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ ++ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ++ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh ++ . ./conftest.sh ++ rm -f ./conftest.sh ++ acl_cv_rpath=done + ]) +-esac +- +-_LT_AC_LTCONFIG_HACK +- ++ wl="$acl_cv_wl" ++ libext="$acl_cv_libext" ++ shlibext="$acl_cv_shlibext" ++ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" ++ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" ++ hardcode_direct="$acl_cv_hardcode_direct" ++ hardcode_minus_L="$acl_cv_hardcode_minus_L" ++ dnl Determine whether the user wants rpath handling at all. ++ AC_ARG_ENABLE(rpath, ++ [ --disable-rpath do not hardcode runtime library paths], ++ :, enable_rpath=yes) + ]) + +-# AC_LIBTOOL_HEADER_ASSERT +-# ------------------------ +-AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +-[AC_CACHE_CHECK([whether $CC supports assert without backlinking], +- [lt_cv_func_assert_works], +- [case $host in +- *-*-solaris*) +- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then +- case `$CC --version 2>/dev/null` in +- [[12]].*) lt_cv_func_assert_works=no ;; +- *) lt_cv_func_assert_works=yes ;; +- esac +- fi +- ;; +- esac]) +- +-if test "x$lt_cv_func_assert_works" = xyes; then +- AC_CHECK_HEADERS(assert.h) +-fi +-])# AC_LIBTOOL_HEADER_ASSERT +- +-# _LT_AC_CHECK_DLFCN +-# -------------------- +-AC_DEFUN([_LT_AC_CHECK_DLFCN], +-[AC_CHECK_HEADERS(dlfcn.h) +-])# _LT_AC_CHECK_DLFCN +- +-# 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]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl +- +-# 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 the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' +- +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_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 +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[[BCDEGRST]]' +- ;; +-solaris* | sysv5*) +- symcode='[[BDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_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. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[[ABCDGISTW]]' +-fi +- +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # 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" ++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and ++dnl the libraries corresponding to explicit and implicit dependencies. ++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. ++AC_DEFUN([AC_LIB_LINKFLAGS_BODY], ++[ ++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) ++ dnl By default, look in $includedir and $libdir. ++ use_additional=yes ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ AC_LIB_ARG_WITH([lib$1-prefix], ++[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib ++ --without-lib$1-prefix don't search for lib$1 in includedir and libdir], ++[ ++ if test "X$withval" = "Xno"; then ++ use_additional=no ++ else ++ if test "X$withval" = "X"; then ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) + else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' 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_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' +- +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif +- +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[[]] = +-{ +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; +- +-#ifdef __cplusplus +-} +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if AC_TRY_EVAL(ac_link) && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- else +- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC +- fi +- else +- echo "$progname: failed program was:" >&AC_FD_CC +- 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 +-]) +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +- +-# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +-# --------------------------------- +-AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +-[# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator +-fi +-])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +- +-# _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], +-[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], +- [AC_DIVERT_PUSH(NOTICE)]) +-_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +- +-# 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 && +- 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. +- +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- 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="$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) +-AC_DIVERT_POP +-])# _LT_AC_PROG_ECHO_BACKSLASH +- +-# _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], +-[if test "$cross_compiling" = yes; then : +- [$4] +-else +- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +- 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); */ +- } +- +- exit (status); +-}] +-EOF +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_unknown|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], +-[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 +- ;; +- +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- *) +- 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" +- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- 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 +- LDFLAGS="$LDFLAGS $link_static_flag" +- 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_DEFUN([_LT_AC_LTCONFIG_HACK], +-[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^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' +- +-# Constants: +-rm="rm -f" +- +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" +- +-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 "$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 "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o +- +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi +- +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +-esac +- +-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 +- +-# 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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi +- +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="[$]2" +- +-AC_MSG_CHECKING([for objdir]) +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs +-fi +-rmdir .libs 2>/dev/null +-AC_MSG_RESULT($objdir) +- +- +-AC_ARG_WITH(pic, +-[ --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 +- +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-AC_MSG_CHECKING([for $compiler option to produce PIC]) +-AC_CACHE_VAL(lt_cv_prog_cc_pic, +-[ lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared +- +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' +- +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' +- ;; +- esac +- else +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; +- +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; +- +- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; +- +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; +- +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; +- +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; +- +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; +- +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; +- +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac +- fi +-]) +-if test -z "$lt_cv_prog_cc_pic"; then +- AC_MSG_RESULT([none]) +-else +- AC_MSG_RESULT([$lt_cv_prog_cc_pic]) +- +- # Check to make sure the pic_flag actually works. +- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) +- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- AC_TRY_COMPILE([], [], [dnl +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- ], [dnl +- lt_cv_prog_cc_pic_works=no +- ]) +- CFLAGS="$save_CFLAGS" +- ]) +- +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi +- +- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +-fi +- +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) +- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : +- else +- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi +- +-AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +-AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" +- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) +- LDFLAGS="$save_LDFLAGS" +-]) +- +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) +- +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" +- +- +-# Check to see if options -o and -c are simultaneously supported by compiler +-AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +-AC_CACHE_VAL([lt_cv_compiler_c_o], [ +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes +- fi +-else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&AC_FD_CC +- lt_cv_compiler_c_o=no +-fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null +-]) +-compiler_c_o=$lt_cv_compiler_c_o +-AC_MSG_RESULT([$compiler_c_o]) +- +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) +- AC_CACHE_VAL([lt_cv_compiler_o_lo], [ +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo +- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi +- ]) +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" +- ]) +- compiler_o_lo=$lt_cv_compiler_o_lo +- AC_MSG_RESULT([$compiler_o_lo]) +-else +- compiler_o_lo=no +-fi +- +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$compiler_c_o" = 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 +- +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- ]) +- CFLAGS="$save_CFLAGS" +- AC_MSG_RESULT([$compiler_rtti_exceptions]) +- +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' +- else +- no_builtin_flag=' -fno-builtin' +- fi +-fi +- +-# See if the linker supports building shared libraries. +-AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) +- +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-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_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-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 egrep regular expression 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= +- +-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 +- ;; +-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}' +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- 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 +- ;; +- +- 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 use +- # them. +- ld_shlibs=no +- ;; +- +- beos*) +- if $LD --help 2>&1 | egrep ': 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*) +- # 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=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac +- +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' +- else +- ltdll_obj= +- ltdll_cmds= +- fi +- +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \[$]# in +- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' +- ;; +- +- 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 -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep '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 | egrep ': 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 +- ;; +- +- 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 | egrep ': 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" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- 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 "$link_static_flag"; 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 +- 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. +- +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- 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' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-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 can do strange things, 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' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $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 +- ;; +- +- 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 +- # 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"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- 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*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) 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' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; +- +- irix5* | irix6*) +- 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' +- 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 $linker_flags' +- 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 $linker_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 "-exported_symbol " >> $lib.exp; echo "\$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 ${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=: +- ;; +- +- sco3.2v5*) +- 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 +- export_dynamic_flag_spec='${wl}-Bexport' +- ;; +- +- solaris*) +- # gcc --version < 3.0 without binutils cannot create self contained +- # shared libraries reliably, requiring libgcc.a to resolve some of +- # the object symbols generated in some cases. Libraries that use +- # assert need libgcc.a to resolve __eprintf, for example. Linking +- # a copy of libgcc.a into every shared library to guarantee resolving +- # such symbols causes other problems: According to Tim Van Holder +- # , C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [[12]].*) +- cat <&2 +- +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. +- +-EOF +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- 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' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- 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) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? +- else +- 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 +- fi +- 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' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- 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' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; +- +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- 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.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; +- +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; +- +- *) +- ld_shlibs=no +- ;; +- esac +-fi +-AC_MSG_RESULT([$ld_shlibs]) +-test "$ld_shlibs" = no && can_build_shared=no +- +-# Check hardcoding attributes. +-AC_MSG_CHECKING([how to hardcode library paths into programs]) +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var"; 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 "$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 +-AC_MSG_RESULT([$hardcode_action]) +- +-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 +- AC_MSG_RESULT([no]) +-fi +- +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +- +-# PORTME Fill in your ld.so characteristics +-AC_MSG_CHECKING([dynamic linker characteristics]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-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" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +- +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; +- +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- 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}.so$versuffix ${libname}${release}.so$major $libname.so' +- 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}.so$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}.so' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi4*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$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" +- export_dynamic_flag_spec=-rdynamic +- # 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 +- need_version=no +- need_lib_prefix=no +- case $GCC,$host_os in +- yes,cygwin*) +- library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` +- ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- ;; +- *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $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 +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- ;; +- +-freebsd1*) +- dynamic_linker=no +- ;; +- +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- *) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$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. +- dynamic_linker="$host_os dld.sl" +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-irix5* | irix6*) +- version_type=irix +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' +- case $host_os in +- irix5*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") 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}" +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$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 +- +- # 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' +- ;; +- +-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}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- 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 +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-os2*) +- libname_spec='$name' +- need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- 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" +- ;; +- +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=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 +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no +- +-# Report the final consequences. +-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*) +- 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]) +- +-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 +- +-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_DLOPEN_SELF +- +-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. +- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) +- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], +- [$rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile); then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) +- then +- lt_cv_archive_cmds_need_lc=no +- else +- lt_cv_archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi]) +- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) +- ;; +- esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} +- +-# The second 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 +- : +-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. +- test -f Makefile && make "$ltmain" +-fi +- +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" +- +- echo creating $ofile +- +- # 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 CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do +- +- case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- finish_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 +- +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL +- +-# `$echo "$ofile" | 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-2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +- +-# ### 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=$need_lc +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# The default C compiler. +-CC=$lt_CC +- +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC +- +-# 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=$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_wl +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag +-pic_mode=$pic_mode +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o +- +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo +- +-# 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_link_static_flag +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_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 to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# 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_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_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 +- +-# 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.so 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 +- +-# 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=$lt_sys_lib_search_path_spec +- +-# 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 >> "${ofile}T" +- +-# 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 +- +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* 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 */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) +- +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" +-fi +- +-])# _LT_AC_LTCONFIG_HACK +- +-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +-AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) +- +-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +-AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) +- +-# AC_ENABLE_SHARED - implement the --enable-shared flag +-# Usage: AC_ENABLE_SHARED[(DEFAULT)] +-# Where 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, +-changequote(<<, >>)dnl +-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +-changequote([, ])dnl +-[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. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +-]) +- +-# 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_ENABLE_STATIC - implement the --enable-static flag +-# Usage: AC_ENABLE_STATIC[(DEFAULT)] +-# Where 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, +-changequote(<<, >>)dnl +-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +-changequote([, ])dnl +-[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. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +-]) +- +-# 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_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +-# Where 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, +-changequote(<<, >>)dnl +-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +-changequote([, ])dnl +-[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. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +-]) +- +-# 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_LIBTOOL_PICMODE - implement the --with-pic flag +-# Usage: AC_LIBTOOL_PICMODE[(MODE)] +-# Where 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_PATH_TOOL_PREFIX - find a file program which can recognise shared library +-AC_DEFUN([AC_PATH_TOOL_PREFIX], +-[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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +-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 +- 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="$ac_save_ifs" +- MAGIC_CMD="$ac_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_MAGIC - find a file program which can recognise a shared library +-AC_DEFUN([AC_PATH_MAGIC], +-[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +-AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$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) +- else +- MAGIC_CMD=: +- fi +-fi +-]) +- +- +-# AC_PROG_LD - find the path to the GNU or non-GNU linker +-AC_DEFUN([AC_PROG_LD], +-[AC_ARG_WITH(gnu-ld, +-[ --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([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])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 GCC]) +- 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. +- [[\\/]]* | [[A-Za-z]]:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the path 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 +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- 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 GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break +- else +- test "$with_gnu_ld" != yes && break +- fi +- fi +- done +- IFS="$ac_save_ifs" +-else +- lt_cv_path_LD="$LD" # Let the user override the test with a path. +-fi]) +-LD="$lt_cv_path_LD" +-if test -n "$LD"; then +- AC_MSG_RESULT($LD) +-else +- AC_MSG_RESULT(no) +-fi +-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +-AC_PROG_LD_GNU +-]) +- +-# AC_PROG_LD_GNU - +-AC_DEFUN([AC_PROG_LD_GNU], +-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +-[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- lt_cv_prog_gnu_ld=yes +-else +- lt_cv_prog_gnu_ld=no +-fi]) +-with_gnu_ld=$lt_cv_prog_gnu_ld +-]) +- +-# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +-# -- PORTME Some linkers may need a different reload flag. +-AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +-[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +-[lt_cv_ld_reload_flag='-r']) +-reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" +-]) +- +-# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +-# -- PORTME fill in with the dynamic library characteristics +-AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +-[AC_CACHE_CHECK([how to recognise dependant libraries], +-lt_cv_deplibs_check_method, +-[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 egrep 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 +- ;; +- +-bsdi4*) +- 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* | mingw* | pw32*) +- 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='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac +- ;; +- +-freebsd*) +- 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)/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_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" +- ;; +- *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" +- ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` +- ;; +- +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' +- 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 +- ;; +- +-openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' +- else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sco3.2v5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- +-sysv5uw[[78]]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- 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 +- ;; +- esac +- ;; +-esac +-]) +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-]) +- +- +-# AC_PROG_NM - find the path to a BSD-compatible name lister +-AC_DEFUN([AC_PROG_NM], +-[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +-AC_MSG_CHECKING([for BSD-compatible nm]) +-AC_CACHE_VAL(lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}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 +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- 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 +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi]) +-NM="$lt_cv_path_NM" +-AC_MSG_RESULT([$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*) +- # These system don't have libm +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, main, LIBM="-lm") +- ;; +-esac +-]) +- +-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +-# the libltdl convenience library and INCLTDL to the include flags for +-# the libltdl header and adds --enable-ltdl-convenience to the +-# configure arguments. Note that LIBLTDL and INCLTDL are not +-# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +-# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +-# with '${top_builddir}/' and INCLTDL 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 +- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +-]) +- +-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +-# the libltdl installable library and INCLTDL to the include flags for +-# the libltdl header and adds --enable-ltdl-install to the configure +-# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is +-# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +-# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +-# be prefixed with '${top_builddir}/' and INCLTDL 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. +-# 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, main, +- [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 +- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- else +- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" +- LIBLTDL="-lltdl" +- INCLTDL= +- fi +-]) +- +-# 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]) +- +-# gettext.m4 serial 16 (gettext-0.11.4) +-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. +- +-dnl Authors: +-dnl Ulrich Drepper , 1995-2000. +-dnl Bruno Haible , 2000-2002. +- +-dnl Macro to add for using GNU gettext. +- +-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +-dnl default (if it is not specified or empty) is 'no-libtool'. +-dnl INTLSYMBOL should be 'external' for packages with no intl directory, +-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +-dnl If INTLSYMBOL is 'use-libtool', then a libtool library +-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +-dnl depending on --{enable,disable}-{shared,static} and on the presence of +-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +-dnl $(top_builddir)/intl/libintl.a will be created. +-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +-dnl implementations (in libc or libintl) without the ngettext() function +-dnl will be ignored. If NEEDSYMBOL is specified and is +-dnl 'need-formatstring-macros', then GNU gettext implementations that don't +-dnl support the ISO C 99 formatstring macros will be ignored. +-dnl INTLDIR is used to find the intl libraries. If empty, +-dnl the value `$(top_builddir)/intl/' is used. +-dnl +-dnl The result of the configuration is one of three cases: +-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +-dnl and used. +-dnl Catalog format: GNU --> install in $(datadir) +-dnl Catalog extension: .mo after installation, .gmo in source tree +-dnl 2) GNU gettext has been found in the system's C library. +-dnl Catalog format: GNU --> install in $(datadir) +-dnl Catalog extension: .mo after installation, .gmo in source tree +-dnl 3) No internationalization, always use English msgid. +-dnl Catalog format: none +-dnl Catalog extension: none +-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +-dnl The use of .gmo is historical (it was needed to avoid overwriting the +-dnl GNU format catalogs when building on a platform with an X/Open gettext), +-dnl but we keep it in order not to force irrelevant filename changes on the +-dnl maintainers. +-dnl +-AC_DEFUN([AM_GNU_GETTEXT], +-[ +- dnl Argument checking. +- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , +- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +-])])])])]) +- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , +- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +-])])])]) +- define(gt_included_intl, ifelse([$1], [external], [no], [yes])) +- define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) +- +- AC_REQUIRE([AM_PO_SUBDIRS])dnl +- ifelse(gt_included_intl, yes, [ +- AC_REQUIRE([AM_INTL_SUBDIR])dnl +- ]) +- +- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) +- +- dnl Sometimes libintl requires libiconv, so first search for libiconv. +- dnl Ideally we would do this search only after the +- dnl if test "$USE_NLS" = "yes"; then +- dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then +- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT +- dnl the configure script would need to contain the same shell code +- dnl again, outside any 'if'. There are two solutions: +- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. +- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. +- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not +- dnl documented, we avoid it. +- ifelse(gt_included_intl, yes, , [ +- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) +- ]) +- +- AC_MSG_CHECKING([whether NLS is requested]) +- dnl Default is enabled NLS +- AC_ARG_ENABLE(nls, +- [ --disable-nls do not use Native Language Support], +- USE_NLS=$enableval, USE_NLS=yes) +- AC_MSG_RESULT($USE_NLS) +- AC_SUBST(USE_NLS) +- +- ifelse(gt_included_intl, yes, [ +- BUILD_INCLUDED_LIBINTL=no +- USE_INCLUDED_LIBINTL=no +- ]) +- LIBINTL= +- LTLIBINTL= +- POSUB= +- +- dnl If we use NLS figure out what method +- if test "$USE_NLS" = "yes"; then +- gt_use_preinstalled_gnugettext=no +- ifelse(gt_included_intl, yes, [ +- AC_MSG_CHECKING([whether included gettext is requested]) +- AC_ARG_WITH(included-gettext, +- [ --with-included-gettext use the GNU gettext library included here], +- nls_cv_force_use_gnu_gettext=$withval, +- nls_cv_force_use_gnu_gettext=no) +- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) +- +- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" +- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then +- ]) +- dnl User does not insist on using GNU NLS library. Figure out what +- dnl to use. If GNU gettext is available we use this. Else we have +- dnl to fall back to GNU NLS library. +- +- dnl Add a version number to the cache macros. +- define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) +- define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) +- define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) +- +- AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, +- [AC_TRY_LINK([#include +-]ifelse([$2], [need-formatstring-macros], +-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +-#endif +-changequote(,)dnl +-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +-changequote([,])dnl +-], [])[extern int _nl_msg_cat_cntr; +-extern int *_nl_domain_bindings;], +- [bindtextdomain ("", ""); +-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], +- gt_cv_func_gnugettext_libc=yes, +- gt_cv_func_gnugettext_libc=no)]) +- +- if test "$gt_cv_func_gnugettext_libc" != "yes"; then +- dnl Sometimes libintl requires libiconv, so first search for libiconv. +- ifelse(gt_included_intl, yes, , [ +- AM_ICONV_LINK +- ]) +- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL +- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) +- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL +- dnl even if libiconv doesn't exist. +- AC_LIB_LINKFLAGS_BODY([intl]) +- AC_CACHE_CHECK([for GNU gettext in libintl], +- gt_cv_func_gnugettext_libintl, +- [gt_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS $INCINTL" +- gt_save_LIBS="$LIBS" +- LIBS="$LIBS $LIBINTL" +- dnl Now see whether libintl exists and does not depend on libiconv. +- AC_TRY_LINK([#include +-]ifelse([$2], [need-formatstring-macros], +-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +-#endif +-changequote(,)dnl +-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +-changequote([,])dnl +-], [])[extern int _nl_msg_cat_cntr; +-extern +-#ifdef __cplusplus +-"C" +-#endif +-const char *_nl_expand_alias ();], +- [bindtextdomain ("", ""); +-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], +- gt_cv_func_gnugettext_libintl=yes, +- gt_cv_func_gnugettext_libintl=no) +- dnl Now see whether libintl exists and depends on libiconv. +- if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then +- LIBS="$LIBS $LIBICONV" +- AC_TRY_LINK([#include +-]ifelse([$2], [need-formatstring-macros], +-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +-#endif +-changequote(,)dnl +-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +-changequote([,])dnl +-], [])[extern int _nl_msg_cat_cntr; +-extern +-#ifdef __cplusplus +-"C" +-#endif +-const char *_nl_expand_alias ();], +- [bindtextdomain ("", ""); +-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], +- [LIBINTL="$LIBINTL $LIBICONV" +- LTLIBINTL="$LTLIBINTL $LTLIBICONV" +- gt_cv_func_gnugettext_libintl=yes +- ]) +- fi +- CPPFLAGS="$gt_save_CPPFLAGS" +- LIBS="$gt_save_LIBS"]) +- fi +- +- dnl If an already present or preinstalled GNU gettext() is found, +- dnl use it. But if this macro is used in GNU gettext, and GNU +- dnl gettext is already preinstalled in libintl, we update this +- dnl libintl. (Cf. the install rule in intl/Makefile.in.) +- if test "$gt_cv_func_gnugettext_libc" = "yes" \ +- || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ +- && test "$PACKAGE" != gettext; }; then +- gt_use_preinstalled_gnugettext=yes +- else +- dnl Reset the values set by searching for libintl. +- LIBINTL= +- LTLIBINTL= +- INCINTL= +- fi +- +- ifelse(gt_included_intl, yes, [ +- if test "$gt_use_preinstalled_gnugettext" != "yes"; then +- dnl GNU gettext is not found in the C library. +- dnl Fall back on included GNU gettext library. +- nls_cv_use_gnu_gettext=yes +- fi +- fi +- +- if test "$nls_cv_use_gnu_gettext" = "yes"; then +- dnl Mark actions used to generate GNU NLS library. +- INTLOBJS="\$(GETTOBJS)" +- BUILD_INCLUDED_LIBINTL=yes +- USE_INCLUDED_LIBINTL=yes +- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" +- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" +- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` +- fi +- +- if test "$gt_use_preinstalled_gnugettext" = "yes" \ +- || test "$nls_cv_use_gnu_gettext" = "yes"; then +- dnl Mark actions to use GNU gettext tools. +- CATOBJEXT=.gmo +- fi +- ]) +- +- if test "$gt_use_preinstalled_gnugettext" = "yes" \ +- || test "$nls_cv_use_gnu_gettext" = "yes"; then +- AC_DEFINE(ENABLE_NLS, 1, +- [Define to 1 if translation of program messages to the user's native language +- is requested.]) +- else +- USE_NLS=no +- fi +- fi +- +- if test "$USE_NLS" = "yes"; then +- +- if test "$gt_use_preinstalled_gnugettext" = "yes"; then +- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then +- AC_MSG_CHECKING([how to link with libintl]) +- AC_MSG_RESULT([$LIBINTL]) +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) +- fi +- +- dnl For backward compatibility. Some packages may be using this. +- AC_DEFINE(HAVE_GETTEXT, 1, +- [Define if the GNU gettext() function is already present or preinstalled.]) +- AC_DEFINE(HAVE_DCGETTEXT, 1, +- [Define if the GNU dcgettext() function is already present or preinstalled.]) +- fi +- +- dnl We need to process the po/ directory. +- POSUB=po +- fi +- +- ifelse(gt_included_intl, yes, [ +- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL +- dnl to 'yes' because some of the testsuite requires it. +- if test "$PACKAGE" = gettext; then +- BUILD_INCLUDED_LIBINTL=yes +- fi +- +- dnl Make all variables we use known to autoconf. +- AC_SUBST(BUILD_INCLUDED_LIBINTL) +- AC_SUBST(USE_INCLUDED_LIBINTL) +- AC_SUBST(CATOBJEXT) +- AC_SUBST(INTLOBJS) +- +- dnl For backward compatibility. Some configure.ins may be using this. +- nls_cv_header_intl= +- nls_cv_header_libgt= +- +- dnl For backward compatibility. Some Makefiles may be using this. +- DATADIRNAME=share +- AC_SUBST(DATADIRNAME) +- +- dnl For backward compatibility. Some Makefiles may be using this. +- INSTOBJEXT=.mo +- AC_SUBST(INSTOBJEXT) +- +- dnl For backward compatibility. Some Makefiles may be using this. +- GENCAT=gencat +- AC_SUBST(GENCAT) +- +- dnl Enable libtool support if the surrounding package wishes it. +- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix +- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) +- ]) +- +- dnl For backward compatibility. Some Makefiles may be using this. +- INTLLIBS="$LIBINTL" +- AC_SUBST(INTLLIBS) +- +- dnl Make all documented variables known to autoconf. +- AC_SUBST(LIBINTL) +- AC_SUBST(LTLIBINTL) +- AC_SUBST(POSUB) +-]) +- +- +-dnl Checks for all prerequisites of the po subdirectory, +-dnl except for USE_NLS. +-AC_DEFUN([AM_PO_SUBDIRS], +-[ +- AC_REQUIRE([AC_PROG_MAKE_SET])dnl +- AC_REQUIRE([AC_PROG_INSTALL])dnl +- AC_REQUIRE([AM_MKINSTALLDIRS])dnl +- +- dnl Perform the following tests also if --disable-nls has been given, +- dnl because they are needed for "make dist" to work. +- +- dnl Search for GNU msgfmt in the PATH. +- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. +- dnl The second test excludes FreeBSD msgfmt. +- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, +- [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && +- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], +- :) +- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) +- +- dnl Search for GNU xgettext 0.11 or newer in the PATH. +- dnl The first test excludes Solaris xgettext and early GNU xgettext versions. +- dnl The second test excludes FreeBSD xgettext. +- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +- [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && +- (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], +- :) +- dnl Remove leftover from FreeBSD xgettext call. +- rm -f messages.po +- +- dnl Search for GNU msgmerge 0.11 or newer in the PATH. +- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, +- [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) +- +- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. +- dnl Test whether we really found GNU msgfmt. +- if test "$GMSGFMT" != ":"; then +- dnl If it is no GNU msgfmt we define it as : so that the +- dnl Makefiles still can work. +- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && +- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` +- AC_MSG_RESULT( +- [found $GMSGFMT program is not GNU msgfmt; ignore it]) +- GMSGFMT=":" +- fi +- fi +- +- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. +- dnl Test whether we really found GNU xgettext. +- if test "$XGETTEXT" != ":"; then +- dnl If it is no GNU xgettext we define it as : so that the +- dnl Makefiles still can work. +- if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && +- (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- AC_MSG_RESULT( +- [found xgettext program is not GNU xgettext; ignore it]) +- XGETTEXT=":" +- fi +- dnl Remove leftover from FreeBSD xgettext call. +- rm -f messages.po +- fi +- +- AC_OUTPUT_COMMANDS([ +- for ac_file in $CONFIG_FILES; do +- # Support "outfile[:infile[:infile...]]" +- case "$ac_file" in +- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; +- esac +- # PO directories have a Makefile.in generated from Makefile.in.in. +- case "$ac_file" in */Makefile.in) +- # Adjust a relative srcdir. +- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` +- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" +- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` +- # In autoconf-2.13 it is called $ac_given_srcdir. +- # In autoconf-2.50 it is called $srcdir. +- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" +- case "$ac_given_srcdir" in +- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; +- /*) top_srcdir="$ac_given_srcdir" ;; +- *) top_srcdir="$ac_dots$ac_given_srcdir" ;; +- esac +- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then +- rm -f "$ac_dir/POTFILES" +- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" +- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" +- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend +- # on $ac_dir but don't depend on user-specified configuration +- # parameters. +- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then +- # The LINGUAS file contains the set of available languages. +- if test -n "$ALL_LINGUAS"; then +- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" +- fi +- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` +- # Hide the ALL_LINGUAS assigment from automake. +- eval 'ALL_LINGUAS''=$ALL_LINGUAS_' +- fi +- case "$ac_given_srcdir" in +- .) srcdirpre= ;; +- *) srcdirpre='$(srcdir)/' ;; +- esac +- POFILES= +- GMOFILES= +- UPDATEPOFILES= +- DUMMYPOFILES= +- for lang in $ALL_LINGUAS; do +- POFILES="$POFILES $srcdirpre$lang.po" +- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" +- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" +- DUMMYPOFILES="$DUMMYPOFILES $lang.nop" +- done +- # CATALOGS depends on both $ac_dir and the user's LINGUAS +- # environment variable. +- INST_LINGUAS= +- if test -n "$ALL_LINGUAS"; then +- for presentlang in $ALL_LINGUAS; do +- useit=no +- if test "%UNSET%" != "$LINGUAS"; then +- desiredlanguages="$LINGUAS" +- else +- desiredlanguages="$ALL_LINGUAS" +- fi +- for desiredlang in $desiredlanguages; do +- # Use the presentlang catalog if desiredlang is +- # a. equal to presentlang, or +- # b. a variant of presentlang (because in this case, +- # presentlang can be used as a fallback for messages +- # which are not translated in the desiredlang catalog). +- case "$desiredlang" in +- "$presentlang"*) useit=yes;; +- esac +- done +- if test $useit = yes; then +- INST_LINGUAS="$INST_LINGUAS $presentlang" +- fi +- done +- fi +- CATALOGS= +- if test -n "$INST_LINGUAS"; then +- for lang in $INST_LINGUAS; do +- CATALOGS="$CATALOGS $lang.gmo" +- done +- fi +- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" +- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" +- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do +- if test -f "$f"; then +- case "$f" in +- *.orig | *.bak | *~) ;; +- *) cat "$f" >> "$ac_dir/Makefile" ;; +- esac +- fi +- done +- fi +- ;; +- esac +- done], +- [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute +- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it +- # from automake. +- eval 'ALL_LINGUAS''="$ALL_LINGUAS"' +- # Capture the value of LINGUAS because we need it to compute CATALOGS. +- LINGUAS="${LINGUAS-%UNSET%}" +- ]) +-]) +- +- +-dnl Checks for all prerequisites of the intl subdirectory, +-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +-dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +-AC_DEFUN([AM_INTL_SUBDIR], +-[ +- AC_REQUIRE([AC_PROG_INSTALL])dnl +- AC_REQUIRE([AM_MKINSTALLDIRS])dnl +- AC_REQUIRE([AC_PROG_CC])dnl +- AC_REQUIRE([AC_CANONICAL_HOST])dnl +- AC_REQUIRE([AC_PROG_RANLIB])dnl +- AC_REQUIRE([AC_ISC_POSIX])dnl +- AC_REQUIRE([AC_HEADER_STDC])dnl +- AC_REQUIRE([AC_C_CONST])dnl +- AC_REQUIRE([AC_C_INLINE])dnl +- AC_REQUIRE([AC_TYPE_OFF_T])dnl +- AC_REQUIRE([AC_TYPE_SIZE_T])dnl +- AC_REQUIRE([AC_FUNC_ALLOCA])dnl +- AC_REQUIRE([AC_FUNC_MMAP])dnl +- AC_REQUIRE([jm_GLIBC21])dnl +- AC_REQUIRE([gt_INTDIV0])dnl +- AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl +- AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl +- AC_REQUIRE([gt_INTTYPES_PRI])dnl +- +- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +-stdlib.h string.h unistd.h sys/param.h]) +- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +-geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +-strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) +- +- AM_ICONV +- AM_LANGINFO_CODESET +- if test $ac_cv_header_locale_h = yes; then +- AM_LC_MESSAGES +- fi +- +- dnl intl/plural.c is generated from intl/plural.y. It requires bison, +- dnl because plural.y uses bison specific features. It requires at least +- dnl bison-1.26 because earlier versions generate a plural.c that doesn't +- dnl compile. +- dnl bison is only needed for the maintainer (who touches plural.y). But in +- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put +- dnl the rule in general Makefile. Now, some people carelessly touch the +- dnl files or have a broken "make" program, hence the plural.c rule will +- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not +- dnl present or too old. +- AC_CHECK_PROGS([INTLBISON], [bison]) +- if test -z "$INTLBISON"; then +- ac_verc_fail=yes +- else +- dnl Found it, now check the version. +- AC_MSG_CHECKING([version of bison]) +-changequote(<<,>>)dnl +- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` +- case $ac_prog_version in +- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +-changequote([,])dnl +- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; +- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; +- esac +- AC_MSG_RESULT([$ac_prog_version]) +- fi +- if test $ac_verc_fail = yes; then +- INTLBISON=: +- fi +-]) +- +- +-AC_DEFUN([AM_MKINSTALLDIRS], +-[ +- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly +- dnl find the mkinstalldirs script in another subdir but $(top_srcdir). +- dnl Try to locate is. +- MKINSTALLDIRS= +- if test -n "$ac_aux_dir"; then +- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" +- fi +- if test -z "$MKINSTALLDIRS"; then +- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" +- fi +- AC_SUBST(MKINSTALLDIRS) +-]) +- +- +-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +-AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) +- +-# lib-prefix.m4 serial 1 (gettext-0.11) +-dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. +- +-dnl From Bruno Haible. +- +-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +-dnl to access previously installed libraries. The basic assumption is that +-dnl a user will want packages to use other packages he previously installed +-dnl with the same --prefix option. +-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +-dnl libraries, but is otherwise very convenient. +-AC_DEFUN([AC_LIB_PREFIX], +-[ +- AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) +- AC_REQUIRE([AC_PROG_CC]) +- AC_REQUIRE([AC_CANONICAL_HOST]) +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- dnl By default, look in $includedir and $libdir. +- use_additional=yes +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- AC_ARG_WITH([lib-prefix], +-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib +- --without-lib-prefix don't search for libraries in includedir and libdir], +-[ +- if test "X$withval" = "Xno"; then +- use_additional=no +- else +- if test "X$withval" = "X"; then +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- else +- additional_includedir="$withval/include" +- additional_libdir="$withval/lib" +- fi +- fi +-]) +- if test $use_additional = yes; then +- dnl Potentially add $additional_includedir to $CPPFLAGS. +- dnl But don't add it +- dnl 1. if it's the standard /usr/include, +- dnl 2. if it's already present in $CPPFLAGS, +- dnl 3. if it's /usr/local/include and we are using GCC on Linux, +- dnl 4. if it doesn't exist as a directory. +- if test "X$additional_includedir" != "X/usr/include"; then +- haveit= +- for x in $CPPFLAGS; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-I$additional_includedir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test "X$additional_includedir" = "X/usr/local/include"; then +- if test -n "$GCC"; then +- case $host_os in +- linux*) haveit=yes;; +- esac +- fi +- fi +- if test -z "$haveit"; then +- if test -d "$additional_includedir"; then +- dnl Really add $additional_includedir to $CPPFLAGS. +- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" +- fi +- fi +- fi +- fi +- dnl Potentially add $additional_libdir to $LDFLAGS. +- dnl But don't add it +- dnl 1. if it's the standard /usr/lib, +- dnl 2. if it's already present in $LDFLAGS, +- dnl 3. if it's /usr/local/lib and we are using GCC on Linux, +- dnl 4. if it doesn't exist as a directory. +- if test "X$additional_libdir" != "X/usr/lib"; then +- haveit= +- for x in $LDFLAGS; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-L$additional_libdir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test "X$additional_libdir" = "X/usr/local/lib"; then +- if test -n "$GCC"; then +- case $host_os in +- linux*) haveit=yes;; +- esac +- fi +- fi +- if test -z "$haveit"; then +- if test -d "$additional_libdir"; then +- dnl Really add $additional_libdir to $LDFLAGS. +- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" +- fi +- fi +- fi +- fi +- fi +-]) +- +-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +-dnl acl_final_exec_prefix, containing the values to which $prefix and +-dnl $exec_prefix will expand at the end of the configure script. +-AC_DEFUN([AC_LIB_PREPARE_PREFIX], +-[ +- dnl Unfortunately, prefix and exec_prefix get only finally determined +- dnl at the end of configure. +- if test "X$prefix" = "XNONE"; then +- acl_final_prefix="$ac_default_prefix" +- else +- acl_final_prefix="$prefix" +- fi +- if test "X$exec_prefix" = "XNONE"; then +- acl_final_exec_prefix='${prefix}' +- else +- acl_final_exec_prefix="$exec_prefix" +- fi +- acl_save_prefix="$prefix" +- prefix="$acl_final_prefix" +- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" +- prefix="$acl_save_prefix" +-]) +- +-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +-dnl variables prefix and exec_prefix bound to the values they will have +-dnl at the end of the configure script. +-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +-[ +- acl_save_prefix="$prefix" +- prefix="$acl_final_prefix" +- acl_save_exec_prefix="$exec_prefix" +- exec_prefix="$acl_final_exec_prefix" +- $1 +- exec_prefix="$acl_save_exec_prefix" +- prefix="$acl_save_prefix" +-]) +- +-# lib-link.m4 serial 3 (gettext-0.11.3) +-dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. +- +-dnl From Bruno Haible. +- +-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +-dnl the libraries corresponding to explicit and implicit dependencies. +-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +-dnl augments the CPPFLAGS variable. +-AC_DEFUN([AC_LIB_LINKFLAGS], +-[ +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) +- define([Name],[translit([$1],[./-], [___])]) +- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], +- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) +- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ +- AC_LIB_LINKFLAGS_BODY([$1], [$2]) +- ac_cv_lib[]Name[]_libs="$LIB[]NAME" +- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" +- ac_cv_lib[]Name[]_cppflags="$INC[]NAME" +- ]) +- LIB[]NAME="$ac_cv_lib[]Name[]_libs" +- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" +- INC[]NAME="$ac_cv_lib[]Name[]_cppflags" +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) +- AC_SUBST([LIB]NAME) +- AC_SUBST([LTLIB]NAME) +- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the +- dnl results of this search when this library appears as a dependency. +- HAVE_LIB[]NAME=yes +- undefine([Name]) +- undefine([NAME]) +-]) +- +-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +-dnl searches for libname and the libraries corresponding to explicit and +-dnl implicit dependencies, together with the specified include files and +-dnl the ability to compile and link the specified testcode. If found, it +-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +-[ +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) +- define([Name],[translit([$1],[./-], [___])]) +- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], +- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) +- +- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME +- dnl accordingly. +- AC_LIB_LINKFLAGS_BODY([$1], [$2]) +- +- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, +- dnl because if the user has installed lib[]Name and not disabled its use +- dnl via --without-lib[]Name-prefix, he wants to use it. +- ac_save_CPPFLAGS="$CPPFLAGS" +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) +- +- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ +- ac_save_LIBS="$LIBS" +- LIBS="$LIBS $LIB[]NAME" +- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) +- LIBS="$ac_save_LIBS" +- ]) +- if test "$ac_cv_lib[]Name" = yes; then +- HAVE_LIB[]NAME=yes +- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) +- AC_MSG_CHECKING([how to link with lib[]$1]) +- AC_MSG_RESULT([$LIB[]NAME]) +- else +- HAVE_LIB[]NAME=no +- dnl If $LIB[]NAME didn't lead to a usable library, we don't need +- dnl $INC[]NAME either. +- CPPFLAGS="$ac_save_CPPFLAGS" +- LIB[]NAME= +- LTLIB[]NAME= +- fi +- AC_SUBST([HAVE_LIB]NAME) +- AC_SUBST([LIB]NAME) +- AC_SUBST([LTLIB]NAME) +- undefine([Name]) +- undefine([NAME]) +-]) +- +-dnl Determine the platform dependent parameters needed to use rpath: +-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +-dnl hardcode_direct, hardcode_minus_L, +-dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. +-AC_DEFUN([AC_LIB_RPATH], +-[ +- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS +- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld +- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host +- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir +- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ +- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ +- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh +- . ./conftest.sh +- rm -f ./conftest.sh +- acl_cv_rpath=done +- ]) +- wl="$acl_cv_wl" +- libext="$acl_cv_libext" +- shlibext="$acl_cv_shlibext" +- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" +- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" +- hardcode_direct="$acl_cv_hardcode_direct" +- hardcode_minus_L="$acl_cv_hardcode_minus_L" +- sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" +- sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" +- dnl Determine whether the user wants rpath handling at all. +- AC_ARG_ENABLE(rpath, +- [ --disable-rpath do not hardcode runtime library paths], +- :, enable_rpath=yes) +-]) +- +-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +-dnl the libraries corresponding to explicit and implicit dependencies. +-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +-AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +-[ +- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], +- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) +- dnl By default, look in $includedir and $libdir. +- use_additional=yes +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- AC_ARG_WITH([lib$1-prefix], +-[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib +- --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +-[ +- if test "X$withval" = "Xno"; then +- use_additional=no +- else +- if test "X$withval" = "X"; then +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- else +- additional_includedir="$withval/include" +- additional_libdir="$withval/lib" ++ additional_includedir="$withval/include" ++ additional_libdir="$withval/lib" + fi + fi + ]) +@@ -5419,7 +1429,7 @@ + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in +- linux*) haveit=yes;; ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi +@@ -5468,7 +1478,7 @@ + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in +- linux*) haveit=yes;; ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi +@@ -5552,695 +1562,8143 @@ + done + fi + else +- dnl Didn't find the library; assume it is in the system directories +- dnl known to the linker and runtime loader. (All the system +- dnl directories known to the linker should also be known to the +- dnl runtime loader, otherwise the system is severely misconfigured.) +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" +- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" ++ dnl Didn't find the library; assume it is in the system directories ++ dnl known to the linker and runtime loader. (All the system ++ dnl directories known to the linker should also be known to the ++ dnl runtime loader, otherwise the system is severely misconfigured.) ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" ++ fi ++ fi ++ fi ++ done ++ done ++ if test "X$rpathdirs" != "X"; then ++ if test -n "$hardcode_libdir_separator"; then ++ dnl Weird platform: only the last -rpath option counts, the user must ++ dnl pass all path elements in one option. We can arrange that for a ++ dnl single library, but not when more than one $LIBNAMEs are used. ++ alldirs= ++ for found_dir in $rpathdirs; do ++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" ++ done ++ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. ++ acl_save_libdir="$libdir" ++ libdir="$alldirs" ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ libdir="$acl_save_libdir" ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" ++ else ++ dnl The -rpath options are cumulative. ++ for found_dir in $rpathdirs; do ++ acl_save_libdir="$libdir" ++ libdir="$found_dir" ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ libdir="$acl_save_libdir" ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" ++ done ++ fi ++ fi ++ if test "X$ltrpathdirs" != "X"; then ++ dnl When using libtool, the option that works for both libraries and ++ dnl executables is -R. The -R options are cumulative. ++ for found_dir in $ltrpathdirs; do ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" ++ done ++ fi ++]) ++ ++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, ++dnl unless already present in VAR. ++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes ++dnl contains two or three consecutive elements that belong together. ++AC_DEFUN([AC_LIB_APPENDTOVAR], ++[ ++ for element in [$2]; do ++ haveit= ++ for x in $[$1]; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X$element"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ [$1]="${[$1]}${[$1]:+ }$element" ++ fi ++ done ++]) ++ ++# lib-prefix.m4 serial 4 (gettext-0.14.2) ++dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++ ++dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and ++dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't ++dnl require excessive bracketing. ++ifdef([AC_HELP_STRING], ++[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], ++[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) ++ ++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed ++dnl to access previously installed libraries. The basic assumption is that ++dnl a user will want packages to use other packages he previously installed ++dnl with the same --prefix option. ++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate ++dnl libraries, but is otherwise very convenient. ++AC_DEFUN([AC_LIB_PREFIX], ++[ ++ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) ++ AC_REQUIRE([AC_PROG_CC]) ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ dnl By default, look in $includedir and $libdir. ++ use_additional=yes ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ AC_LIB_ARG_WITH([lib-prefix], ++[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib ++ --without-lib-prefix don't search for libraries in includedir and libdir], ++[ ++ if test "X$withval" = "Xno"; then ++ use_additional=no ++ else ++ if test "X$withval" = "X"; then ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ else ++ additional_includedir="$withval/include" ++ additional_libdir="$withval/lib" ++ fi ++ fi ++]) ++ if test $use_additional = yes; then ++ dnl Potentially add $additional_includedir to $CPPFLAGS. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/include, ++ dnl 2. if it's already present in $CPPFLAGS, ++ dnl 3. if it's /usr/local/include and we are using GCC on Linux, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_includedir" != "X/usr/include"; then ++ haveit= ++ for x in $CPPFLAGS; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-I$additional_includedir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test "X$additional_includedir" = "X/usr/local/include"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ if test -d "$additional_includedir"; then ++ dnl Really add $additional_includedir to $CPPFLAGS. ++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" ++ fi ++ fi ++ fi ++ fi ++ dnl Potentially add $additional_libdir to $LDFLAGS. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/lib, ++ dnl 2. if it's already present in $LDFLAGS, ++ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_libdir" != "X/usr/lib"; then ++ haveit= ++ for x in $LDFLAGS; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$additional_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test "X$additional_libdir" = "X/usr/local/lib"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux*) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ if test -d "$additional_libdir"; then ++ dnl Really add $additional_libdir to $LDFLAGS. ++ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" ++ fi ++ fi ++ fi ++ fi ++ fi ++]) ++ ++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, ++dnl acl_final_exec_prefix, containing the values to which $prefix and ++dnl $exec_prefix will expand at the end of the configure script. ++AC_DEFUN([AC_LIB_PREPARE_PREFIX], ++[ ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ acl_final_prefix="$ac_default_prefix" ++ else ++ acl_final_prefix="$prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ acl_final_exec_prefix='${prefix}' ++ else ++ acl_final_exec_prefix="$exec_prefix" ++ fi ++ acl_save_prefix="$prefix" ++ prefix="$acl_final_prefix" ++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" ++ prefix="$acl_save_prefix" ++]) ++ ++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the ++dnl variables prefix and exec_prefix bound to the values they will have ++dnl at the end of the configure script. ++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], ++[ ++ acl_save_prefix="$prefix" ++ prefix="$acl_final_prefix" ++ acl_save_exec_prefix="$exec_prefix" ++ exec_prefix="$acl_final_exec_prefix" ++ $1 ++ exec_prefix="$acl_save_exec_prefix" ++ prefix="$acl_save_prefix" ++]) ++ ++# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- ++ ++# serial 47 Debian 1.5.20-2 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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ++ ;; ++ *) ++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ++ ;; ++ 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"} ++ ++# 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' >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' >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 ++ ;; ++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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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 > conftest.exp ++ $SED '/^$/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` ++ ;; ++ 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 ++ ;; ++ *) ++ # 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); */ ++ } ++ ++ 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_unknown|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" ++ 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 ++ LDFLAGS="$LDFLAGS $link_static_flag" ++ 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 > out/conftest.exp ++ $SED '/^$/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.err || 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 ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ 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' ++ ;; ++ ++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 ++ ++ # 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)); 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 /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++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 ++ 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" ++ ;; ++ ++sco3.2v5*) ++ version_type=osf ++ 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 ++ ;; ++ ++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.2uw2* | sysv4.3* | sysv5*) ++ 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 ++ ;; ++ ++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 ++])# 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 ++ ++ # 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 ++ ;; ++ ++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* | netbsdelf*-gnu | knetbsd*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; ++ ++nto-qnx*) ++ lt_cv_deplibs_check_method=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 ++ ;; ++ ++sco3.2v5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ 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 ++ ;; ++ esac ++ ;; ++ ++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | 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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/${ac_tool_prefix}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" ++ 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 ++ ++# ++# Check for any special shared library compilation flags. ++# ++_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= ++if test "$GCC" = no; then ++ case $host_os in ++ sco3.2v5*) ++ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' ++ ;; ++ esac ++fi ++if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then ++ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) ++ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : ++ else ++ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) ++ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no ++ fi ++fi ++ ++ ++# ++# Check to make sure the static flag actually works. ++# ++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], ++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), ++ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), ++ [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ++ ++ ++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($1) ++ ++# Report which librarie types wil 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_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 ++ 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 ++ 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' ++ # -bexpall does not export symbols beginning with underscore (_) ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' ++ _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ ;; ++ *) ++ _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' ++ ;; ++ esac ++ fi ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ *) ++ _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*|ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ++ ;; ++ *) ++ _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 ++ ia64*|hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ++ ;; ++ *) ++ _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 ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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 ++ ;; ++ sco*) ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ case $cc_basename in ++ CC*) ++ # 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 ++ ;; ++ 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 ++ ;; ++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ;; ++ 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_SYS_LIB_STRIP ++AC_LIBTOOL_DLOPEN_SELF($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 ++ ++# 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) ++ ++# 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=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) ++ ++# 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=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) ++ ++# 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=$lt_sys_lib_search_path_spec ++ ++# 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* | sysv5*) ++ symcode='[[BDRT]]' ++ ;; ++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)= ++ ;; ++ 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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ ;; ++ 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*) ++ ;; ++ sco*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ 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 ++ ;; ++ unixware*) ++ ;; ++ 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' ++ ;; ++ ++ 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' ++ ;; ++ ++ sco3.2v5*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' ++ ;; ++ ++ 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* | sysv5*) ++ _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 ++ ;; ++ ++ 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 ++]) ++ ++ ++# 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' ++ ;; ++ linux*) ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ ;; ++ *) ++ _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 ++ ;; ++ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ 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 ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' ++ # -bexpall does not export symbols beginning with underscore (_) ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' ++ _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ++ # 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(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 ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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)=: ++ ;; ++ ++ sco3.2v5*) ++ _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)='${wl}-Bexport' ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ;; ++ ++ 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.2uw2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ hardcode_runpath_var=yes ++ runpath_var=LD_RUN_PATH ++ ;; ++ ++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ runpath_var='LD_RUN_PATH' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ sysv5*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' ++ # $CC -shared without GNU ld will not create a library from C++ ++ # object files and a static libstdc++, better avoid it by now ++ _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' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ;; ++ ++ 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 ++ ++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 ++ ++# ++# 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) ++ 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 ++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_MSG_RESULT([$SED]) ++]) ++ ++# longdouble.m4 serial 1 (gettext-0.12) ++dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++dnl Test whether the compiler supports the 'long double' type. ++dnl Prerequisite: AC_PROG_CC ++ ++AC_DEFUN([gt_TYPE_LONGDOUBLE], ++[ ++ AC_CACHE_CHECK([for long double], gt_cv_c_long_double, ++ [if test "$GCC" = yes; then ++ gt_cv_c_long_double=yes ++ else ++ AC_TRY_COMPILE([ ++ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ ++ long double foo = 0.0; ++ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ ++ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; ++ ], , ++ gt_cv_c_long_double=yes, gt_cv_c_long_double=no) ++ fi]) ++ if test $gt_cv_c_long_double = yes; then ++ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) ++ fi ++]) ++ ++# longlong.m4 serial 5 ++dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Paul Eggert. ++ ++# Define HAVE_LONG_LONG if 'long long' works. ++ ++AC_DEFUN([gl_AC_TYPE_LONG_LONG], ++[ ++ AC_CACHE_CHECK([for long long], ac_cv_type_long_long, ++ [AC_TRY_LINK([long long ll = 1LL; int i = 63;], ++ [long long llmax = (long long) -1; ++ return ll << i | ll >> i | llmax / ll | llmax % ll;], ++ ac_cv_type_long_long=yes, ++ ac_cv_type_long_long=no)]) ++ if test $ac_cv_type_long_long = yes; then ++ AC_DEFINE(HAVE_LONG_LONG, 1, ++ [Define if you have the 'long long' type.]) ++ fi ++]) ++ ++# nls.m4 serial 2 (gettext-0.14.3) ++dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2003. ++ ++AC_PREREQ(2.50) ++ ++AC_DEFUN([AM_NLS], ++[ ++ AC_MSG_CHECKING([whether NLS is requested]) ++ dnl Default is enabled NLS ++ AC_ARG_ENABLE(nls, ++ [ --disable-nls do not use Native Language Support], ++ USE_NLS=$enableval, USE_NLS=yes) ++ AC_MSG_RESULT($USE_NLS) ++ AC_SUBST(USE_NLS) ++]) ++ ++AC_DEFUN([AM_MKINSTALLDIRS], ++[ ++ dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. ++ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) ++ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly ++ dnl find the mkinstalldirs script in another subdir but $(top_srcdir). ++ dnl Try to locate it. ++ MKINSTALLDIRS= ++ if test -n "$ac_aux_dir"; then ++ case "$ac_aux_dir" in ++ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; ++ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; ++ esac ++ fi ++ if test -z "$MKINSTALLDIRS"; then ++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" ++ fi ++ AC_SUBST(MKINSTALLDIRS) ++]) ++ ++# po.m4 serial 7 (gettext-0.14.3) ++dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2003. ++ ++AC_PREREQ(2.50) ++ ++dnl Checks for all prerequisites of the po subdirectory. ++AC_DEFUN([AM_PO_SUBDIRS], ++[ ++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++ AC_REQUIRE([AC_PROG_INSTALL])dnl ++ AC_REQUIRE([AM_MKINSTALLDIRS])dnl ++ AC_REQUIRE([AM_NLS])dnl ++ ++ dnl Perform the following tests also if --disable-nls has been given, ++ dnl because they are needed for "make dist" to work. ++ ++ dnl Search for GNU msgfmt in the PATH. ++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. ++ dnl The second test excludes FreeBSD msgfmt. ++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, ++ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && ++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], ++ :) ++ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) ++ ++ dnl Search for GNU xgettext 0.12 or newer in the PATH. ++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. ++ dnl The second test excludes FreeBSD xgettext. ++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, ++ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && ++ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], ++ :) ++ dnl Remove leftover from FreeBSD xgettext call. ++ rm -f messages.po ++ ++ dnl Search for GNU msgmerge 0.11 or newer in the PATH. ++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, ++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) ++ ++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. ++ dnl Test whether we really found GNU msgfmt. ++ if test "$GMSGFMT" != ":"; then ++ dnl If it is no GNU msgfmt we define it as : so that the ++ dnl Makefiles still can work. ++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && ++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ++ : ; ++ else ++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` ++ AC_MSG_RESULT( ++ [found $GMSGFMT program is not GNU msgfmt; ignore it]) ++ GMSGFMT=":" ++ fi ++ fi ++ ++ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. ++ dnl Test whether we really found GNU xgettext. ++ if test "$XGETTEXT" != ":"; then ++ dnl If it is no GNU xgettext we define it as : so that the ++ dnl Makefiles still can work. ++ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && ++ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ++ : ; ++ else ++ AC_MSG_RESULT( ++ [found xgettext program is not GNU xgettext; ignore it]) ++ XGETTEXT=":" ++ fi ++ dnl Remove leftover from FreeBSD xgettext call. ++ rm -f messages.po ++ fi ++ ++ AC_OUTPUT_COMMANDS([ ++ for ac_file in $CONFIG_FILES; do ++ # Support "outfile[:infile[:infile...]]" ++ case "$ac_file" in ++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; ++ esac ++ # PO directories have a Makefile.in generated from Makefile.in.in. ++ case "$ac_file" in */Makefile.in) ++ # Adjust a relative srcdir. ++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` ++ # In autoconf-2.13 it is called $ac_given_srcdir. ++ # In autoconf-2.50 it is called $srcdir. ++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" ++ case "$ac_given_srcdir" in ++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; ++ /*) top_srcdir="$ac_given_srcdir" ;; ++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; ++ esac ++ # Treat a directory as a PO directory if and only if it has a ++ # POTFILES.in file. This allows packages to have multiple PO ++ # directories under different names or in different locations. ++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then ++ rm -f "$ac_dir/POTFILES" ++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" ++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" ++ POMAKEFILEDEPS="POTFILES.in" ++ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend ++ # on $ac_dir but don't depend on user-specified configuration ++ # parameters. ++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then ++ # The LINGUAS file contains the set of available languages. ++ if test -n "$OBSOLETE_ALL_LINGUAS"; then ++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" ++ fi ++ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` ++ # Hide the ALL_LINGUAS assigment from automake. ++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' ++ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" ++ else ++ # The set of available languages was given in configure.in. ++ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' ++ fi ++ # Compute POFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) ++ # Compute UPDATEPOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) ++ # Compute DUMMYPOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) ++ # Compute GMOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) ++ case "$ac_given_srcdir" in ++ .) srcdirpre= ;; ++ *) srcdirpre='$(srcdir)/' ;; ++ esac ++ POFILES= ++ UPDATEPOFILES= ++ DUMMYPOFILES= ++ GMOFILES= ++ for lang in $ALL_LINGUAS; do ++ POFILES="$POFILES $srcdirpre$lang.po" ++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" ++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop" ++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" ++ done ++ # CATALOGS depends on both $ac_dir and the user's LINGUAS ++ # environment variable. ++ INST_LINGUAS= ++ if test -n "$ALL_LINGUAS"; then ++ for presentlang in $ALL_LINGUAS; do ++ useit=no ++ if test "%UNSET%" != "$LINGUAS"; then ++ desiredlanguages="$LINGUAS" ++ else ++ desiredlanguages="$ALL_LINGUAS" ++ fi ++ for desiredlang in $desiredlanguages; do ++ # Use the presentlang catalog if desiredlang is ++ # a. equal to presentlang, or ++ # b. a variant of presentlang (because in this case, ++ # presentlang can be used as a fallback for messages ++ # which are not translated in the desiredlang catalog). ++ case "$desiredlang" in ++ "$presentlang"*) useit=yes;; ++ esac ++ done ++ if test $useit = yes; then ++ INST_LINGUAS="$INST_LINGUAS $presentlang" ++ fi ++ done ++ fi ++ CATALOGS= ++ if test -n "$INST_LINGUAS"; then ++ for lang in $INST_LINGUAS; do ++ CATALOGS="$CATALOGS $lang.gmo" ++ done + fi ++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" ++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" ++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do ++ if test -f "$f"; then ++ case "$f" in ++ *.orig | *.bak | *~) ;; ++ *) cat "$f" >> "$ac_dir/Makefile" ;; ++ esac ++ fi ++ done + fi +- fi +- done ++ ;; ++ esac ++ done], ++ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute ++ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it ++ # from automake. ++ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' ++ # Capture the value of LINGUAS because we need it to compute CATALOGS. ++ LINGUAS="${LINGUAS-%UNSET%}" ++ ]) ++]) ++ ++dnl Postprocesses a Makefile in a directory containing PO files. ++AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], ++[ ++ # When this code is run, in config.status, two variables have already been ++ # set: ++ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, ++ # - LINGUAS is the value of the environment variable LINGUAS at configure ++ # time. ++ ++changequote(,)dnl ++ # Adjust a relative srcdir. ++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` ++ # In autoconf-2.13 it is called $ac_given_srcdir. ++ # In autoconf-2.50 it is called $srcdir. ++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" ++ case "$ac_given_srcdir" in ++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; ++ /*) top_srcdir="$ac_given_srcdir" ;; ++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; ++ esac ++ ++ # Find a way to echo strings without interpreting backslash. ++ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then ++ gt_echo='echo' ++ else ++ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then ++ gt_echo='printf %s\n' ++ else ++ echo_func () { ++ cat < "$ac_file.tmp" ++ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then ++ # Add dependencies that cannot be formulated as a simple suffix rule. ++ for lang in $ALL_LINGUAS; do ++ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` ++ cat >> "$ac_file.tmp" < /dev/null; then ++ # Add dependencies that cannot be formulated as a simple suffix rule. ++ for lang in $ALL_LINGUAS; do ++ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` ++ cat >> "$ac_file.tmp" <> "$ac_file.tmp" < ++#include ++/* The string "%2$d %1$d", with dollar characters protected from the shell's ++ dollar expansion (possibly an autoconf bug). */ ++static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; ++static char buf[100]; ++int main () ++{ ++ sprintf (buf, format, 33, 55); ++ return (strcmp (buf, "55 33") != 0); ++}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, ++ [ ++ AC_EGREP_CPP(notposix, [ ++#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ ++ notposix ++#endif ++ ], gt_cv_func_printf_posix="guessing no", ++ gt_cv_func_printf_posix="guessing yes") ++ ]) ++ ]) ++ case $gt_cv_func_printf_posix in ++ *yes) ++ AC_DEFINE(HAVE_POSIX_PRINTF, 1, ++ [Define if your printf() function supports format strings with positions.]) ++ ;; ++ esac ++]) ++ ++# progtest.m4 serial 4 (gettext-0.14.2) ++dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1996. ++ ++AC_PREREQ(2.50) ++ ++# Search path for a program which passes the given test. ++ ++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, ++dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) ++AC_DEFUN([AM_PATH_PROG_WITH_TEST], ++[ ++# Prepare PATH_SEPARATOR. ++# 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 ++ ++# Find out how to test for executable files. Don't use a zero-byte file, ++# as systems may use methods other than mode bits to determine executability. ++cat >conf$$.file <<_ASEOF ++#! /bin/sh ++exit 0 ++_ASEOF ++chmod +x conf$$.file ++if test -x conf$$.file >/dev/null 2>&1; then ++ ac_executable_p="test -x" ++else ++ ac_executable_p="test -f" ++fi ++rm -f conf$$.file ++ ++# Extract the first word of "$2", so it can be a program name with args. ++set dummy $2; ac_word=[$]2 ++AC_MSG_CHECKING([for $ac_word]) ++AC_CACHE_VAL(ac_cv_path_$1, ++[case "[$]$1" in ++ [[\\/]]* | ?:[[\\/]]*) ++ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ++ ;; ++ *) ++ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in ifelse([$5], , $PATH, [$5]); do ++ IFS="$ac_save_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then ++ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD ++ if [$3]; then ++ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" ++ break 2 ++ fi ++ fi + done +- fi +- fi +- if test "X$ltrpathdirs" != "X"; then +- dnl When using libtool, the option that works for both libraries and +- dnl executables is -R. The -R options are cumulative. +- for found_dir in $ltrpathdirs; do +- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done ++ IFS="$ac_save_IFS" ++dnl If no 4th arg is given, leave the cache variable unset, ++dnl so AC_PATH_PROGS will keep looking. ++ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ++])dnl ++ ;; ++esac])dnl ++$1="$ac_cv_path_$1" ++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then ++ AC_MSG_RESULT([$]$1) ++else ++ AC_MSG_RESULT(no) ++fi ++AC_SUBST($1)dnl ++]) ++ ++# signed.m4 serial 1 (gettext-0.10.40) ++dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++ ++AC_DEFUN([bh_C_SIGNED], ++[ ++ AC_CACHE_CHECK([for signed], bh_cv_c_signed, ++ [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) ++ if test $bh_cv_c_signed = no; then ++ AC_DEFINE(signed, , ++ [Define to empty if the C compiler doesn't support this keyword.]) + fi + ]) + +-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +-dnl unless already present in VAR. +-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +-dnl contains two or three consecutive elements that belong together. +-AC_DEFUN([AC_LIB_APPENDTOVAR], ++# size_max.m4 serial 2 ++dnl Copyright (C) 2003 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++ ++AC_DEFUN([gl_SIZE_MAX], + [ +- for element in [$2]; do +- haveit= +- for x in $[$1]; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X$element"; then +- haveit=yes +- break ++ AC_CHECK_HEADERS(stdint.h) ++ dnl First test whether the system already has SIZE_MAX. ++ AC_MSG_CHECKING([for SIZE_MAX]) ++ result= ++ AC_EGREP_CPP([Found it], [ ++#include ++#if HAVE_STDINT_H ++#include ++#endif ++#ifdef SIZE_MAX ++Found it ++#endif ++], result=yes) ++ if test -z "$result"; then ++ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider ++ dnl than the type 'unsigned long'. ++ dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', ++ dnl which is guaranteed to work from LONG_MIN to LONG_MAX. ++ _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, ++ [#include ], result=?) ++ _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, ++ [#include ], result=?) ++ _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, ++ [#include ], result=?) ++ if test "$fits_in_uint" = 1; then ++ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type ++ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. ++ AC_TRY_COMPILE([#include ++ extern size_t foo; ++ extern unsigned long foo; ++ ], [], fits_in_uint=0) ++ fi ++ if test -z "$result"; then ++ if test "$fits_in_uint" = 1; then ++ result="$res_hi$res_lo"U ++ else ++ result="$res_hi$res_lo"UL + fi +- done +- if test -z "$haveit"; then +- [$1]="${[$1]}${[$1]:+ }$element" ++ else ++ dnl Shouldn't happen, but who knows... ++ result='~(size_t)0' + fi +- done ++ fi ++ AC_MSG_RESULT([$result]) ++ if test "$result" != yes; then ++ AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], ++ [Define as the maximum value of type 'size_t', if the system doesn't define it.]) ++ fi + ]) + +-# lib-ld.m4 serial 1 (gettext-0.11) +-dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# stdint_h.m4 serial 5 ++dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-dnl Subroutines of libtool.m4, +-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +-dnl with libtool.m4. ++dnl From Paul Eggert. + +-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +-AC_DEFUN([AC_LIB_PROG_LD_GNU], +-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +-[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- acl_cv_prog_gnu_ld=yes +-else +- acl_cv_prog_gnu_ld=no +-fi]) +-with_gnu_ld=$acl_cv_prog_gnu_ld ++# Define HAVE_STDINT_H_WITH_UINTMAX if exists, ++# doesn't clash with , and declares uintmax_t. ++ ++AC_DEFUN([gl_AC_HEADER_STDINT_H], ++[ ++ AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, ++ [AC_TRY_COMPILE( ++ [#include ++#include ], ++ [uintmax_t i = (uintmax_t) -1;], ++ gl_cv_header_stdint_h=yes, ++ gl_cv_header_stdint_h=no)]) ++ if test $gl_cv_header_stdint_h = yes; then ++ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, ++ [Define if exists, doesn't clash with , ++ and declares uintmax_t. ]) ++ fi ++]) ++ ++# uintmax_t.m4 serial 9 ++dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Paul Eggert. ++ ++AC_PREREQ(2.13) ++ ++# Define uintmax_t to 'unsigned long' or 'unsigned long long' ++# if it is not already defined in or . ++ ++AC_DEFUN([gl_AC_TYPE_UINTMAX_T], ++[ ++ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) ++ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) ++ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then ++ AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) ++ test $ac_cv_type_unsigned_long_long = yes \ ++ && ac_type='unsigned long long' \ ++ || ac_type='unsigned long' ++ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, ++ [Define to unsigned long or unsigned long long ++ if and don't define.]) ++ else ++ AC_DEFINE(HAVE_UINTMAX_T, 1, ++ [Define if you have the 'uintmax_t' type in or .]) ++ fi ++]) ++ ++# ulonglong.m4 serial 4 ++dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Paul Eggert. ++ ++# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. ++ ++AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], ++[ ++ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, ++ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], ++ [unsigned long long ullmax = (unsigned long long) -1; ++ return ull << i | ull >> i | ullmax / ull | ullmax % ull;], ++ ac_cv_type_unsigned_long_long=yes, ++ ac_cv_type_unsigned_long_long=no)]) ++ if test $ac_cv_type_unsigned_long_long = yes; then ++ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, ++ [Define if you have the 'unsigned long long' type.]) ++ fi ++]) ++ ++# wchar_t.m4 serial 1 (gettext-0.12) ++dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++dnl Test whether has the 'wchar_t' type. ++dnl Prerequisite: AC_PROG_CC ++ ++AC_DEFUN([gt_TYPE_WCHAR_T], ++[ ++ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, ++ [AC_TRY_COMPILE([#include ++ wchar_t foo = (wchar_t)'\0';], , ++ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) ++ if test $gt_cv_c_wchar_t = yes; then ++ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) ++ fi ++]) ++ ++# wint_t.m4 serial 1 (gettext-0.12) ++dnl Copyright (C) 2003 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++dnl From Bruno Haible. ++dnl Test whether has the 'wint_t' type. ++dnl Prerequisite: AC_PROG_CC ++ ++AC_DEFUN([gt_TYPE_WINT_T], ++[ ++ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, ++ [AC_TRY_COMPILE([#include ++ wint_t foo = (wchar_t)'\0';], , ++ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) ++ if test $gt_cv_c_wint_t = yes; then ++ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) ++ fi ++]) ++ ++# xsize.m4 serial 3 ++dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++ ++AC_DEFUN([gl_XSIZE], ++[ ++ dnl Prerequisites of lib/xsize.h. ++ AC_REQUIRE([gl_SIZE_MAX]) ++ AC_REQUIRE([AC_C_INLINE]) ++ AC_CHECK_HEADERS(stdint.h) ++]) ++ ++# 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` + ]) + +-dnl From libtool-1.4. Sets the variable LD. +-AC_DEFUN([AC_LIB_PROG_LD], +-[AC_ARG_WITH(gnu-ld, +-[ --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([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])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 GCC]) +- 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. +- [[\\/]* | [A-Za-z]:[\\/]*)] +- [re_direlt='/[^/][^/]*/\.\./'] +- # Canonicalize the path 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(acl_cv_path_LD, +-[if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- acl_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break ++# 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 +- test "$with_gnu_ld" != yes && break ++ 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 +- IFS="$ac_save_ifs" +-else +- acl_cv_path_LD="$LD" # Let the user override the test with a path. +-fi]) +-LD="$acl_cv_path_LD" +-if test -n "$LD"; then +- AC_MSG_RESULT($LD) ++ ++ cd .. ++ rm -rf conftest.dir + else +- AC_MSG_RESULT(no) ++ am_cv_$1_dependencies_compiler_type=none + fi +-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +-AC_LIB_PROG_LD_GNU ++]) ++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]) + ]) + +-# iconv.m4 serial AM4 (gettext-0.11.3) +-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. + +-dnl From Bruno Haible. ++# 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 ++]) + +-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +-[ +- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) + +- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV +- dnl accordingly. +- AC_LIB_LINKFLAGS_BODY([iconv]) ++# 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]) + ]) + +-AC_DEFUN([AM_ICONV_LINK], +-[ +- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and +- dnl those with the standalone portable GNU libiconv installed). ++# Generate code to set up dependency tracking. -*- Autoconf -*- + +- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV +- dnl accordingly. +- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ++# 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. + +- dnl Add $INCICONV to CPPFLAGS before performing the following checks, +- dnl because if the user has installed libiconv and not disabled its use +- dnl via --without-libiconv-prefix, he wants to use it. The first +- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. +- am_save_CPPFLAGS="$CPPFLAGS" +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) ++#serial 3 + +- AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ +- am_cv_func_iconv="no, consider installing GNU libiconv" +- am_cv_lib_iconv=no +- AC_TRY_LINK([#include +-#include ], +- [iconv_t cd = iconv_open("",""); +- iconv(cd,NULL,NULL,NULL,NULL); +- iconv_close(cd);], +- am_cv_func_iconv=yes) +- if test "$am_cv_func_iconv" != yes; then +- am_save_LIBS="$LIBS" +- LIBS="$LIBS $LIBICONV" +- AC_TRY_LINK([#include +-#include ], +- [iconv_t cd = iconv_open("",""); +- iconv(cd,NULL,NULL,NULL,NULL); +- iconv_close(cd);], +- am_cv_lib_iconv=yes +- am_cv_func_iconv=yes) +- LIBS="$am_save_LIBS" +- fi +- ]) +- if test "$am_cv_func_iconv" = yes; then +- AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) +- fi +- if test "$am_cv_lib_iconv" = yes; then +- AC_MSG_CHECKING([how to link with libiconv]) +- AC_MSG_RESULT([$LIBICONV]) ++# _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 +- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV +- dnl either. +- CPPFLAGS="$am_save_CPPFLAGS" +- LIBICONV= +- LTLIBICONV= ++ continue + fi +- AC_SUBST(LIBICONV) +- AC_SUBST(LTLIBICONV) +-]) ++ # 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 + +-AC_DEFUN([AM_ICONV], +-[ +- AM_ICONV_LINK +- if test "$am_cv_func_iconv" = yes; then +- AC_MSG_CHECKING([for iconv declaration]) +- AC_CACHE_VAL(am_cv_proto_iconv, [ +- AC_TRY_COMPILE([ +-#include +-#include +-extern +-#ifdef __cplusplus +-"C" +-#endif +-#if defined(__STDC__) || defined(__cplusplus) +-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +-#else +-size_t iconv(); +-#endif +-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") +- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) +- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` +- AC_MSG_RESULT([$]{ac_t:- +- }[$]am_cv_proto_iconv) +- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, +- [Define as const if the declaration of iconv() needs const.]) +- fi ++ ++# 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"]) + ]) + +-# progtest.m4 serial 2 (gettext-0.10.40) +-dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. ++# 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 8 + +-dnl Authors: +-dnl Ulrich Drepper , 1996. ++# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. ++AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +-# Search path for a program which passes the given test. ++# Do all the work for Automake. -*- Autoconf -*- + +-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +-AC_DEFUN([AM_PATH_PROG_WITH_TEST], +-[# Extract the first word of "$2", so it can be a program name with args. +-set dummy $2; ac_word=[$]2 +-AC_MSG_CHECKING([for $ac_word]) +-AC_CACHE_VAL(ac_cv_path_$1, +-[case "[$]$1" in +- /*) +- ac_cv_path_$1="[$]$1" # Let the user override the test with a path. +- ;; +- *) +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +- for ac_dir in ifelse([$5], , $PATH, [$5]); do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$ac_word; then +- if [$3]; then +- ac_cv_path_$1="$ac_dir/$ac_word" +- break +- fi +- fi +- done +- IFS="$ac_save_ifs" +-dnl If no 4th arg is given, leave the cache variable unset, +-dnl so AC_PATH_PROGS will keep looking. +-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +-])dnl +- ;; +-esac])dnl +-$1="$ac_cv_path_$1" +-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then +- AC_MSG_RESULT([$]$1) +-else +- AC_MSG_RESULT(no) +-fi +-AC_SUBST($1)dnl +-]) ++# 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. + +-# isc-posix.m4 serial 2 (gettext-0.11.2) +-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. +- +-# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. +- +-# This test replaces the one in autoconf. +-# Currently this macro should have the same name as the autoconf macro +-# because gettext's gettext.m4 (distributed in the automake package) +-# still uses it. Otherwise, the use in gettext.m4 makes autoheader +-# give these diagnostics: +-# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +-# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX ++# serial 12 + +-undefine([AC_ISC_POSIX]) ++# 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. + +-AC_DEFUN([AC_ISC_POSIX], +- [ +- dnl This test replaces the obsolescent AC_ISC_POSIX kludge. +- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) +- ] +-) ++# 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 + +-# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) +-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# 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]) + +-# Test for the GNU C Library, version 2.1 or newer. +-# From Bruno Haible. ++# 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 + +-AC_DEFUN([jm_GLIBC21], +- [ +- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, +- ac_cv_gnu_library_2_1, +- [AC_EGREP_CPP([Lucky GNU user], +- [ +-#include +-#ifdef __GNU_LIBRARY__ +- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) +- Lucky GNU user +- #endif +-#endif +- ], +- ac_cv_gnu_library_2_1=yes, +- ac_cv_gnu_library_2_1=no) +- ] +- ) +- AC_SUBST(GLIBC21) +- GLIBC21="$ac_cv_gnu_library_2_1" +- ] +-) ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +-# intdiv0.m4 serial 1 (gettext-0.11.3) +-dnl Copyright (C) 2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# 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 ++]) ++]) + +-dnl From Bruno Haible. + +-AC_DEFUN([gt_INTDIV0], +-[ +- AC_REQUIRE([AC_PROG_CC])dnl +- AC_REQUIRE([AC_CANONICAL_HOST])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. + +- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], +- gt_cv_int_divbyzero_sigfpe, +- [ +- AC_TRY_RUN([ +-#include +-#include ++# 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]) + +-static void +-#ifdef __cplusplus +-sigfpe_handler (int sig) +-#else +-sigfpe_handler (sig) int sig; +-#endif +-{ +- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ +- exit (sig != SIGFPE); +-} ++# 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. + +-int x = 1; +-int y = 0; +-int z; +-int nan; ++# 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)]) + +-int main () +-{ +- signal (SIGFPE, sigfpe_handler); +-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) +- signal (SIGTRAP, sigfpe_handler); +-#endif +-/* Linux/SPARC yields signal SIGILL. */ +-#if defined (__sparc__) && defined (__linux__) +- signal (SIGILL, sigfpe_handler); +-#endif ++# 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. + +- z = x / y; +- nan = y / y; +- exit (1); +-} +-], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, +- [ +- # Guess based on the CPU. +- case "$host_cpu" in +- alpha* | i[34567]86 | m68k | s390*) +- gt_cv_int_divbyzero_sigfpe="guessing yes";; +- *) +- gt_cv_int_divbyzero_sigfpe="guessing no";; +- esac +- ]) +- ]) +- case "$gt_cv_int_divbyzero_sigfpe" in +- *yes) value=1;; +- *) value=0;; +- esac +- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, +- [Define if integer division by zero raises signal SIGFPE.]) +-]) ++# serial 2 + +-# uintmax_t.m4 serial 6 (gettext-0.11) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# 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])]) + +-dnl From Paul Eggert. ++# Check to see how 'make' treats includes. -*- Autoconf -*- + +-AC_PREREQ(2.13) ++# 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. + +-# Define uintmax_t to `unsigned long' or `unsigned long long' +-# if does not exist. ++# serial 3 + +-AC_DEFUN([jm_AC_TYPE_UINTMAX_T], +-[ +- AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) +- AC_REQUIRE([jm_AC_HEADER_STDINT_H]) +- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then +- AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) +- test $ac_cv_type_unsigned_long_long = yes \ +- && ac_type='unsigned long long' \ +- || ac_type='unsigned long' +- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, +- [Define to unsigned long or unsigned long long +- if and don't define.]) +- fi ++# 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 + ]) + +-# inttypes_h.m4 serial 4 (gettext-0.11.4) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# 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 + +-dnl From Paul Eggert. ++# 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)]) + +-# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +-# doesn't clash with , and declares uintmax_t. + +-AC_DEFUN([jm_AC_HEADER_INTTYPES_H], +-[ +- AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, +- [AC_TRY_COMPILE( +- [#include +-#include ], +- [uintmax_t i = (uintmax_t) -1;], +- jm_ac_cv_header_inttypes_h=yes, +- jm_ac_cv_header_inttypes_h=no)]) +- if test $jm_ac_cv_header_inttypes_h = yes; then +- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, +-[Define if exists, doesn't clash with , +- and declares uintmax_t. ]) +- fi ++# 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 + ]) + +-# stdint_h.m4 serial 2 (gettext-0.11.4) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# 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. + +-dnl From Paul Eggert. ++# 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])]) + +-# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +-# doesn't clash with , and declares uintmax_t. ++# Helper functions for option handling. -*- Autoconf -*- + +-AC_DEFUN([jm_AC_HEADER_STDINT_H], +-[ +- AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, +- [AC_TRY_COMPILE( +- [#include +-#include ], +- [uintmax_t i = (uintmax_t) -1;], +- jm_ac_cv_header_stdint_h=yes, +- jm_ac_cv_header_stdint_h=no)]) +- if test $jm_ac_cv_header_stdint_h = yes; then +- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, +-[Define if exists, doesn't clash with , +- and declares uintmax_t. ]) +- fi +-]) ++# 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. + +-# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) +-dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# serial 3 + +-dnl From Paul Eggert. ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +-AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], +-[ +- AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, +- [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], +- [unsigned long long ullmax = (unsigned long long) -1; +- return ull << i | ull >> i | ullmax / ull | ullmax % ull;], +- ac_cv_type_unsigned_long_long=yes, +- ac_cv_type_unsigned_long_long=no)]) +- if test $ac_cv_type_unsigned_long_long = yes; then +- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, +- [Define if you have the unsigned long long type.]) +- fi +-]) ++# _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)]) + +-# inttypes.m4 serial 1 (gettext-0.11.4) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# _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)])]) + +-dnl From Paul Eggert. ++# _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])]) + +-# Define HAVE_INTTYPES_H if exists and doesn't clash with +-# . ++# Check to make sure that the build environment is sane. -*- Autoconf -*- + +-AC_DEFUN([gt_HEADER_INTTYPES_H], +-[ +- AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, +- [ +- AC_TRY_COMPILE( +- [#include +-#include ], +- [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) +- ]) +- if test $gt_cv_header_inttypes_h = yes; then +- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, +- [Define if exists and doesn't clash with .]) +- fi +-]) ++# 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. + +-# inttypes-pri.m4 serial 1 (gettext-0.11.4) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# serial 4 + +-dnl From Bruno Haible. ++# 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 + +-# Define PRI_MACROS_BROKEN if exists and defines the PRI* +-# macros to non-string values. This is the case on AIX 4.3.3. ++ # 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 + +-AC_DEFUN([gt_INTTYPES_PRI], +-[ +- AC_REQUIRE([gt_HEADER_INTTYPES_H]) +- if test $gt_cv_header_inttypes_h = yes; then +- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], +- gt_cv_inttypes_pri_broken, +- [ +- AC_TRY_COMPILE([#include +-#ifdef PRId32 +-char *p = PRId32; +-#endif +-], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) +- ]) +- fi +- if test "$gt_cv_inttypes_pri_broken" = yes; then +- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, +- [Define if exists and defines unusable PRI* macros.]) +- 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)]) + +-# codeset.m4 serial AM1 (gettext-0.10.40) +-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. ++# 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. + +-dnl From Bruno Haible. ++# 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])]) + +-AC_DEFUN([AM_LANGINFO_CODESET], +-[ +- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, +- [AC_TRY_LINK([#include ], +- [char* cs = nl_langinfo(CODESET);], +- am_cv_langinfo_codeset=yes, +- am_cv_langinfo_codeset=no) +- ]) +- if test $am_cv_langinfo_codeset = yes; then +- AC_DEFINE(HAVE_LANGINFO_CODESET, 1, +- [Define if you have and nl_langinfo(CODESET).]) +- fi +-]) ++# Check how to create a tarball. -*- Autoconf -*- + +-# lcmessage.m4 serial 3 (gettext-0.11.3) +-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +-dnl This file is free software, distributed under the terms of the GNU +-dnl General Public License. As a special exception to the GNU General +-dnl Public License, this file may be distributed as part of a program +-dnl that contains a configuration script generated by Autoconf, under +-dnl the same distribution terms as the rest of that program. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. ++# 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. + +-dnl Authors: +-dnl Ulrich Drepper , 1995. ++# serial 2 + +-# Check whether LC_MESSAGES is available in . ++# _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 + +-AC_DEFUN([AM_LC_MESSAGES], +-[ +- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, +- [AC_TRY_LINK([#include ], [return LC_MESSAGES], +- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) +- if test $am_cv_val_LC_MESSAGES = yes; then +- AC_DEFINE(HAVE_LC_MESSAGES, 1, +- [Define if your file defines LC_MESSAGES.]) ++ # 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 + ++m4_include([acinclude.m4]) +--- gsmlib-1.10.orig/configure ++++ gsmlib-1.10/configure +@@ -1,178 +1,10 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.53. ++# Generated by GNU Autoconf 2.59. + # +-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# 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. +- +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator +-fi +- +- +-# 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 && +- 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. +- +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- 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="$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 +- +- +- +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +- + ## --------------------- ## + ## M4sh Initialization. ## + ## --------------------- ## +@@ -181,46 +13,57 @@ + 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 + +-# NLS nuisances. + # Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset + else + as_unset=false + fi + +-(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && +- { $as_unset LANG || test "${LANG+set}" != set; } || +- { LANG=C; export LANG; } +-(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && +- { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || +- { LC_ALL=C; export LC_ALL; } +-(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && +- { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || +- { LC_TIME=C; export LC_TIME; } +-(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && +- { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || +- { LC_CTYPE=C; export LC_CTYPE; } +-(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && +- { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || +- { LANGUAGE=C; export LANGUAGE; } +-(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && +- { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || +- { LC_COLLATE=C; export LC_COLLATE; } +-(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && +- { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || +- { LC_NUMERIC=C; export LC_NUMERIC; } +-(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && +- { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || +- { LC_MESSAGES=C; export LC_MESSAGES; } ++ ++# 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=`(basename "$0") 2>/dev/null || ++as_me=`$as_basename "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ +@@ -231,6 +74,7 @@ + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ++ + # PATH needs CR, and LINENO needs CR and PATH. + # Avoid depending upon Character Ranges. + as_cr_letters='abcdefghijklmnopqrstuvwxyz' +@@ -241,15 +85,15 @@ + + # The user is always right. + if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conftest.sh +- echo "exit 0" >>conftest.sh +- chmod +x conftest.sh +- if (PATH=".;."; conftest.sh) >/dev/null 2>&1; 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 conftest.sh ++ rm -f conf$$.sh + fi + + +@@ -297,6 +141,8 @@ + 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+"$@"} +@@ -369,13 +215,20 @@ + 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="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" ++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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + # IFS +@@ -385,76 +238,233 @@ + IFS=" $as_nl" + + # CDPATH. +-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } +- ++$as_unset CDPATH + +-# 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 +-cross_compiling=no +-subdirs= +-MFLAGS= +-MAKEFLAGS= ++# Check that we are running under the correct shell. + 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} ++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 + +-# Identity of this package. +-PACKAGE_NAME= +-PACKAGE_TARNAME= +-PACKAGE_VERSION= +-PACKAGE_STRING= +-PACKAGE_BUGREPORT= ++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 + +-ac_unique_file="gsmlib/gsm_error.h" +-# 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" ++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= ++PACKAGE_TARNAME= ++PACKAGE_VERSION= ++PACKAGE_STRING= ++PACKAGE_BUGREPORT= ++ ++ac_unique_file="gsmlib/gsm_error.h" ++# 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_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 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT 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 DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ALLOCA GSM_VERSION MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE GLIBC2 GLIBC21 INTL_MACOSX_LIBS HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB COMPILE_INTL_TRUE COMPILE_INTL_FALSE LIBOBJS LTLIBOBJS' ++ac_subst_files='' + + # Initialize some variables set by options. + ac_init_help= +@@ -812,7 +822,7 @@ + + # Be sure to have absolute paths. + for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++ localstatedir libdir includedir oldincludedir infodir mandir + do + eval ac_val=$`echo $ac_var` + case $ac_val in +@@ -852,10 +862,10 @@ + # 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 || ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -878,6 +888,9 @@ + { (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 +@@ -919,6 +932,18 @@ + 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. +@@ -952,9 +977,9 @@ + cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX +- [$ac_default_prefix] ++ [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX +- [PREFIX] ++ [PREFIX] + + By default, \`make install' will install all the files in + \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +@@ -998,24 +1023,31 @@ + 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 builds +- --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-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) +- --disable-rpath do not hardcode runtime library paths + --disable-nls do not use Native Language Support ++ --disable-rpath do not hardcode runtime library paths + + 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-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-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib ++ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here +- --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib ++ --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + + Some influential environment variables: +@@ -1028,6 +1060,9 @@ + 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. +@@ -1065,12 +1100,45 @@ + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; + esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ++ ++# 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. +@@ -1081,13 +1149,13 @@ + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then ++ 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 ++ cd "$ac_popdir" + done + fi + +@@ -1095,8 +1163,7 @@ + if $ac_init_version; then + cat <<\_ACEOF + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-Free Software Foundation, Inc. ++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 +@@ -1108,7 +1175,7 @@ + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +-generated by GNU Autoconf 2.53. Invocation command line was ++generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +@@ -1160,27 +1227,54 @@ + + # 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= +-for ac_arg ++ac_must_keep_next=false ++for ac_pass in 1 2 + do +- case $ac_arg in +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c | -n ) continue ;; +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) +- continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; +- esac +- case " $ac_configure_args " in +- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +- *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- ac_sep=" " ;; +- esac +- # Get rid of the leading space. ++ 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 +@@ -1191,6 +1285,7 @@ + # Save into config.log some information that might help in debugging. + { + echo ++ + cat <<\_ASBOX + ## ---------------- ## + ## Cache variables. ## +@@ -1203,16 +1298,45 @@ + 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" ++ "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" ++ "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 + ## ----------- ## +@@ -1220,14 +1344,14 @@ + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h ++ 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.* *.core && ++ rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +@@ -1307,7 +1431,7 @@ + # 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 ++ 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" +@@ -1324,13 +1448,13 @@ + ,);; + *) + 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:$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:$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:$LINENO: current value: $ac_new_val" >&5 + echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: ++ ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. +@@ -1378,6 +1502,7 @@ + + + ++ + ac_aux_dir= + for ac_dir in scripts $srcdir/scripts; do + if test -f $ac_dir/install-sh; then +@@ -1414,6 +1539,7 @@ + # 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 +@@ -1430,6 +1556,7 @@ + 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. +@@ -1437,20 +1564,20 @@ + # 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 ++ 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 + ;; +@@ -1685,9 +1812,7 @@ + # 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 +- set dummy "$as_dir/$ac_word" ${1+"$@"} +- shift +- ac_cv_prog_CC="$@" ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi + fi + fi +@@ -1792,8 +1917,10 @@ + fi + + +-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +-echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} ++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. +@@ -1817,15 +1944,12 @@ + (exit $ac_status); } + + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -1835,12 +1959,12 @@ + } + _ACEOF + ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files a.out a.exe" ++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" >&5 +-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ++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 +@@ -1854,26 +1978,39 @@ + # 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= +-for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; +- ls a.out conftest 2>/dev/null; +- ls a.* conftest.* 2>/dev/null`; do ++# 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 | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; +- a.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 --akim. +- export ac_cv_exeext +- break;; +- * ) break;; ++ *.$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 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 +-echo "$as_me: error: C compiler cannot create executables" >&2;} ++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 + +@@ -1900,9 +2037,11 @@ + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&5 ++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'." >&2;} ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +@@ -1910,7 +2049,7 @@ + echo "$as_me:$LINENO: result: yes" >&5 + echo "${ECHO_T}yes" >&6 + +-rm -f a.out a.exe conftest$ac_cv_exeext ++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. +@@ -1930,18 +2069,21 @@ + # 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 `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext +- break;; ++ export ac_cv_exeext ++ break;; + * ) break;; + esac + done + else +- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} ++ { { 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 + +@@ -1958,15 +2100,12 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -1983,16 +2122,19 @@ + (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 ) ;; ++ *.$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 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +-echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} ++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 + +@@ -2008,15 +2150,12 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -2030,11 +2169,20 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -2043,10 +2191,11 @@ + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +@@ -2062,15 +2211,12 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -2081,11 +2227,20 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -2094,10 +2249,11 @@ + ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ac_cv_prog_cc_g=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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 +@@ -2116,6 +2272,120 @@ + 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 +@@ -2127,19 +2397,27 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 \ +- ''\ +- '#include ' \ ++ '' \ + '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 ();' \ +@@ -2147,16 +2425,13 @@ + 'void exit (int);' + do + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + $ac_declaration +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++#include + int + main () + { +@@ -2167,11 +2442,20 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -2180,20 +2464,18 @@ + : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + continue + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + $ac_declaration +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -2204,11 +2486,20 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -2217,9 +2508,10 @@ + break + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done + rm -f conftest* + if test -n "$ac_declaration"; then +@@ -2230,9 +2522,10 @@ + + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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' +@@ -2249,8 +2542,11 @@ + ac_check_lib_save_LIBS=$LIBS + LIBS="-lintl $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 +@@ -2259,12 +2555,6 @@ + /* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ + char textdomain (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -2275,11 +2565,20 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -2288,10 +2587,12 @@ + ac_cv_lib_intl_textdomain=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ac_cv_lib_intl_textdomain=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++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_intl_textdomain" >&5 +@@ -2306,14 +2607,10 @@ + fi + + +-# Add the stamp file to the list of files AC keeps track of, +-# along with our hook. +-ac_config_headers="$ac_config_headers gsm_config.h" ++ ac_config_headers="$ac_config_headers gsm_config.h" + + +- +- +-am__api_version="1.6" ++am__api_version="1.9" + 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 +@@ -2372,7 +2669,6 @@ + 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` + +@@ -2386,6 +2682,39 @@ + 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. +@@ -2426,15 +2755,15 @@ + 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_,'` ++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}"' ++ @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=` +@@ -2455,24 +2784,25 @@ + SET_MAKE="MAKE=${MAKE-make}" + fi + +-rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. + else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps ++ am__leading_dot=_ + fi +-rmdir .deps 2>/dev/null ++rmdir .tst 2>/dev/null + ++DEPDIR="${am__leading_dot}deps" + +-ac_config_commands="$ac_config_commands depfiles" ++ ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} + cat > confinc << 'END' +-doit: ++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 +@@ -2487,7 +2817,7 @@ + # 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 | fgrep -v 'ing directory'`" = "done"; then ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +@@ -2528,7 +2858,7 @@ + + + +- # test to see if srcdir already configured ++# 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 +@@ -2536,6 +2866,16 @@ + { (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=gsmlib + VERSION=1.10 +@@ -2566,9 +2906,6 @@ + + MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +- +-AMTAR=${AMTAR-"${am_missing_run}tar"} +- + install_sh=${install_sh-"$am_aux_dir/install-sh"} + + # Installed binaries are usually stripped using `strip' when the user +@@ -2661,6 +2998,13 @@ + + # 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 -' ++ ++ + + + depcc="$CC" am_compiler_list= +@@ -2681,18 +3025,34 @@ + # 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. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf ++ : > 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) +@@ -2710,13 +3070,25 @@ + # 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=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && ++ 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 +- am_cv_CC_dependencies_compiler_type=$depmode +- break ++ # 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 + +@@ -2733,30 +3105,44 @@ + + + ++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 ++ ++ ++ + + # 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. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ 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; + ++ + if test "$CXXFLAGS" = ""; then + CXXFLAGS="-O2" + fi +@@ -2774,46 +3160,50 @@ + 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. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ 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. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ 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 +@@ -2868,16 +3258,77 @@ + host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator ++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 ++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 ++ ++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 ++ + + + # Check whether --with-gnu-ld or --without-gnu-ld was given. +@@ -2890,8 +3341,8 @@ + 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 GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 ++ 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 +@@ -2901,12 +3352,12 @@ + esac + case $ac_prog in + # Accept absolute paths. +- [\\/]* | [A-Za-z]:[\\/]*) ++ [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` ++ # 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%/%"` ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; +@@ -2930,22 +3381,26 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ 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 GNU ld's only accept -v. ++ # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then ++ case `"$lt_cv_path_LD" -v 2>&1 &6 + else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then ++ # 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 +@@ -2989,7 +3447,20 @@ + 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 +-test -n "$reload_flag" && reload_flag=" $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='$CC -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 +@@ -3000,35 +3471,42 @@ + # Let the user override the test. + lt_cv_path_NM="$NM" + else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then ++ tmp_nm="$ac_dir/${ac_tool_prefix}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 +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then ++ 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 +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- 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 +- fi ++ ;; ++ *) ++ 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="$ac_save_ifs" ++ IFS="$lt_save_ifs" + 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: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 + + echo "$as_me:$LINENO: checking whether ln -s works" >&5 + echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +@@ -3041,8 +3519,8 @@ + echo "${ECHO_T}no, using $LN_S" >&6 + fi + +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++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 +@@ -3056,7 +3534,7 @@ + # '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 egrep regex. ++# 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. + +@@ -3069,37 +3547,36 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-bsdi4*) ++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* | mingw* | pw32*) ++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='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd*) ++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)/i[3-9]86 (compact )?demand paged shared library' ++ 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.*` + ;; +@@ -3113,50 +3590,44 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ++ 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 + ;; + *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ++ 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 +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` ++ ;; ++ ++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-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ++linux*) ++ lt_cv_deplibs_check_method=pass_all + ;; + +-netbsd*) ++netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ++ 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$' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +@@ -3166,20 +3637,19 @@ + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + ++nto-qnx*) ++ lt_cv_deplibs_check_method=unknown ++ ;; ++ + openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + + osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +@@ -3189,11 +3659,6 @@ + + solaris*) + lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- +-sysv5uw[78]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +@@ -3214,8 +3679,15 @@ + 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 ++ ;; + esac + ;; ++ ++sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + esac + + fi +@@ -3223,207 +3695,208 @@ + 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"} + ++# 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" + +-# 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" >&5 +-echo $ECHO_N "checking command to parse $NM output... $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 the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' +- +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_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 +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[BCDEGRST]' +- ;; +-solaris* | sysv5*) +- symcode='[BDT]' +- ;; +-sysv4) +- symcode='[DFNSTU]' +- ;; +-esac +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_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. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[ABCDGISTW]' +-fi +- +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # 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 < 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 +- # 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 ++ 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 3740 "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); } && 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 ++ (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* ++ ;; + +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif ++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* ++ ;; + +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' ++*-*-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 +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[] = ++int ++main () + { +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; + +-#ifdef __cplusplus ++ ; ++ return 0; + } +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++_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); } && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$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 ++ (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 + +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-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: 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 ++ ;; ++ ++esac ++ ++need_locks="$enable_libtool_lock" ++ + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -3448,24 +3921,34 @@ + 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +@@ -3476,7 +3959,8 @@ + : + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Broken: fails on valid input. + continue + fi +@@ -3485,20 +3969,24 @@ + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +@@ -3510,7 +3998,8 @@ + continue + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Passes both tests. + ac_preproc_ok=: + break +@@ -3539,24 +4028,34 @@ + 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +@@ -3567,7 +4066,8 @@ + : + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Broken: fails on valid input. + continue + fi +@@ -3576,20 +4076,24 @@ + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +@@ -3601,7 +4105,8 @@ + continue + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Passes both tests. + ac_preproc_ok=: + break +@@ -3614,8 +4119,10 @@ + if $ac_preproc_ok; then + : + else +- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} ++ { { 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 + +@@ -3632,49 +4139,67 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (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 +- cat conftest.$ac_ext >&5 +- ac_cv_header_stdc=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_ext ++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 +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 ++ $EGREP "memchr" >/dev/null 2>&1; then + : + else + ac_cv_header_stdc=no +@@ -3686,13 +4211,16 @@ + 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 +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 ++ $EGREP "free" >/dev/null 2>&1; then + : + else + ac_cv_header_stdc=no +@@ -3707,16 +4235,20 @@ + : + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) + # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) + #endif + +@@ -3727,7 +4259,7 @@ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) ++ || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); + } +@@ -3747,11 +4279,12 @@ + else + echo "$as_me: program exited with status $ac_status" >&5 + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + fi + fi +@@ -3776,7 +4309,7 @@ + + + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.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 +@@ -3785,19 +4318,31 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -3806,10 +4351,11 @@ + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + eval "$as_ac_Header=no" + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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 +@@ -3840,18 +4386,30 @@ + echo "$as_me:$LINENO: checking $ac_header usability" >&5 + echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -3860,10 +4418,11 @@ + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ac_header_compiler=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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 + +@@ -3871,20 +4430,24 @@ + echo "$as_me:$LINENO: checking $ac_header presence" >&5 + echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +@@ -3895,7 +4458,8 @@ + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ac_header_preproc=no + fi + rm -f conftest.err conftest.$ac_ext +@@ -3903,26 +4467,43 @@ + echo "${ECHO_T}$ac_header_preproc" >&6 + + # So? What about this header? +-case $ac_header_compiler:$ac_header_preproc in +- yes:no ) ++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 preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- no:yes ) ++ { 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: 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: 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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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" ++ 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 +@@ -3937,159 +4518,65 @@ + + done + +- +- +- +- +-# 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 ++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 +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- 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 ++ 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 + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_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 ++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 + +-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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- 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 ++ test -n "$CXX" && break + done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_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 +- +-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 ++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_RANLIB+set}" = set; then ++if test "${ac_cv_prog_ac_ct_CXX+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. ++ 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 +@@ -4098,7 +4585,7 @@ + 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" ++ ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +@@ -4107,4958 +4594,18846 @@ + + fi + fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++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 + +-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 ++ test -n "$ac_ct_CXX" && break + done ++test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + +- 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 ++ CXX=$ac_ct_CXX + 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 ++# 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 +- 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 ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-fi +-fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++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:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ 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 +-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 "$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 +- 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 ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- 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 ++int ++main () ++{ + +- STRIP=$ac_ct_STRIP +-else +- STRIP="$ac_cv_prog_STRIP" +-fi +- +- +-enable_dlopen=no +-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 +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '#line 4259 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ ; ++ 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); }; then +- 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 +- 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 ++ (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_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 +-#line $LINENO "configure" +-#include "confdefs.h" +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++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 conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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 +- lt_cv_cc_needs_belf=yes ++ : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-lt_cv_cc_needs_belf=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++continue + fi +-rm -f 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 ++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 +-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 +- ;; ++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 + +-esac ++depcc="$CXX" am_compiler_list= + +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^X//' +-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' ++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 + +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' ++ 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 + +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ 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 + +-# Constants: +-rm="rm -f" ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CXX_dependencies_compiler_type=none ++fi + +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes ++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 + +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" + +-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 "$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 "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o +- +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi +- +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +-esac +- +-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 +- +-# 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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi + +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="$2" +- +-echo "$as_me:$LINENO: checking for objdir" >&5 +-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs ++if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then ++ am__fastdepCXX_TRUE= ++ am__fastdepCXX_FALSE='#' + else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs ++ am__fastdepCXX_TRUE='#' ++ am__fastdepCXX_FALSE= + fi +-rmdir .libs 2>/dev/null +-echo "$as_me:$LINENO: result: $objdir" >&5 +-echo "${ECHO_T}$objdir" >&6 + + + +-# 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 + +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-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 "${lt_cv_prog_cc_pic+set}" = set; then ++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 +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared +- +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' +- +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' +- ;; +- esac ++ # 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 +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; +- +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; +- +- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; +- +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; +- +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; +- +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; +- +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; +- +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; +- +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac ++ ac_cpp_err= + fi +- +-fi +- +-if test -z "$lt_cv_prog_cc_pic"; then +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 + else +- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 +- +- # Check to make sure the pic_flag actually works. +- echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 +- if test "${lt_cv_prog_cc_pic_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ ac_cpp_err=yes ++fi ++if test -z "$ac_cpp_err"; then ++ : + else +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ ++ # Broken: fails on valid input. ++continue ++fi ++rm -f conftest.err conftest.$ac_ext + +- ; +- return 0; +-} ++ # OK, works on sane cases. Now check whether non-existent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-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); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++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); }; }; then +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- ++ (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 +-cat conftest.$ac_ext >&5 +- lt_cv_prog_cc_pic_works=no ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ # Passes both tests. ++ac_preproc_ok=: ++break + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" ++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 + +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi +- +- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 + fi +- +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +-echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} +- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : +- else +- { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +-echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi +- +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_static_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ CXXCPP=$ac_cv_prog_CXXCPP + else +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" ++ 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 +-#line $LINENO "configure" +-#include "confdefs.h" +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include + #endif +-int +-main () +-{ +- +- ; +- return 0; +-} ++ Syntax error + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&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); }; }; then +- lt_cv_prog_cc_static_works=yes ++ (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 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ # Passes both tests. ++ac_preproc_ok=: ++break + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- LDFLAGS="$save_LDFLAGS" ++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 + +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 + +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" ++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 + +-# Check to see if options -o and -c are simultaneously supported by compiler +-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_compiler_c_o+set}" = set; then ++ 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 + +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:4795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes +- fi +-else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&5 +- lt_cv_compiler_c_o=no +-fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null ++ test -n "$ac_ct_F77" && break ++done + ++ F77=$ac_ct_F77 + fi + +-compiler_c_o=$lt_cv_compiler_c_o +-echo "$as_me:$LINENO: result: $compiler_c_o" >&5 +-echo "${ECHO_T}$compiler_c_o" >&6 +- +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 +- if test "${lt_cv_compiler_o_lo+set}" = set; then ++ ++# Provide some information about the compiler. ++echo "$as_me:5311:" \ ++ "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 +- +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++ program main ++#ifndef __GNUC__ ++ choke me + #endif +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} ++ ++ end + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi +- ++ ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" ++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 + +- compiler_o_lo=$lt_cv_compiler_o_lo +- echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 +-echo "${ECHO_T}$compiler_o_lo" >&6 +-else +- compiler_o_lo=no + fi +- +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$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 ++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 +- need_locks=no +-fi +- +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- 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 +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ FFLAGS=-g ++cat >conftest.$ac_ext <<_ACEOF ++ program main + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} ++ end + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- ++ ac_cv_prog_f77_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_prog_f77_g=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" +- echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$compiler_rtti_exceptions" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' ++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 +- no_builtin_flag=' -fno-builtin' ++ FFLAGS= + fi + fi + +-# See if the linker supports building shared libraries. +-echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 ++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 + +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-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_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-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 egrep regular expression 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= + +-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 +- ;; +-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}' + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- 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. ++# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +-EOF ++# 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 + ;; + +- 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 use +- # them. +- ld_shlibs=no ++ 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; + ;; + +- beos*) +- if $LD --help 2>&1 | egrep ': 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*) ++ # 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; + ;; + +- cygwin* | mingw* | pw32*) +- # 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=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac +- +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' +- else +- ltdll_obj= +- ltdll_cmds= +- fi +- +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \$# in +- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ++ 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*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= ++ 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 +- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ 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` + ;; +- +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep '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 | egrep ': 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 ++ 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 + ;; +- +- 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 | egrep ': 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 ++ # 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 "$ld_shlibs" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- 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 "$link_static_flag"; 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 +- 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 ++fi + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- 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 + +- # 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. + +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- 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' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-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 can do strange things, 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' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' +- fi +- 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 + +- 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 +- ;; ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +- 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 +- # 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"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- 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 +- ;; ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' + +- # 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 +- ;; ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# 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'" + +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) 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' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; ++# 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'" + +- irix5* | irix6*) +- 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' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; ++# 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* | sysv5*) ++ symcode='[BDRT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac + +- 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 +- ;; ++# 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 + +- 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 +- ;; ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac + +- 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 $linker_flags' +- 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 $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do + +- 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' +- ;; ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" + +- 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=: +- ;; ++ # 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'" + +- 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 "-exported_symbol " >> $lib.exp; echo "\$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 ${objdir}/so_locations -o $lib~$rm $lib.exp' ++ # Check to see that the pipe works correctly. ++ pipe_works=no + +- #Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec='-rpath $libdir' +- fi +- hardcode_libdir_separator=: +- ;; ++ rm -f conftest* ++ cat > conftest.$ac_ext <, C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [12].*) +- cat <&2 ++ 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 ++ # 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 + +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. ++ # 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 +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- 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' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- 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) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? +- else +- 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 +- fi +- 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' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- 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' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; +- +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + +- 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 +- ;; ++ cat <> conftest.$ac_ext ++#if defined (__STDC__) && __STDC__ ++# define lt_ptr_t void * ++#else ++# define lt_ptr_t char * ++# define const ++#endif + +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++/* 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} ++}; + +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++#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 +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi +- runpath_var='LD_RUN_PATH' +- 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 +- +-# Check hardcoding attributes. +-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"; then ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -f conftest* conftst* + +- # 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 "$hardcode_shlibpath_var" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break + else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate ++ 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 +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported ++ echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6 + fi +-echo "$as_me:$LINENO: result: $hardcode_action" >&5 +-echo "${ECHO_T}$hardcode_action" >&6 + +-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 ++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 +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ 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 + +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# PORTME Fill in your ld.so characteristics +-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= +-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" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH + +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; + +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- 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}.so$versuffix ${libname}${release}.so$major $libname.so' +- 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}.so$major' +- fi +- shlibpath_var=LIBPATH ++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 + +-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' +- ;; ++# 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' + +-beos*) +- library_names_spec='${libname}.so' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +-bsdi4*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$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" +- export_dynamic_flag_spec=-rdynamic +- # 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 +- ;; ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +-cygwin* | mingw* | pw32*) +- version_type=windows +- need_version=no +- need_lib_prefix=no +- case $GCC,$host_os in +- yes,cygwin*) +- library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ++ ;; ++ *) ++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ++ ;; ++ 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=no ++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"} ++ ++# 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' >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' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# ++# Check for any special shared library compilation flags. ++# ++lt_prog_cc_shlib= ++if test "$GCC" = no; then ++ case $host_os in ++ sco3.2v5*) ++ lt_prog_cc_shlib='-belf' ++ ;; ++ esac ++fi ++if test -n "$lt_prog_cc_shlib"; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 ++echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} ++ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : ++ else ++ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 ++echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} ++ lt_cv_prog_cc_can_build_shared=no ++ fi ++fi ++ ++ ++# ++# Check to make sure the static flag actually works. ++# ++echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static 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_prog_compiler_static" ++ 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 > conftest.exp ++ $SED '/^$/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 ++ ++ ++ ++ ++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:6407: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:6411: \$? = $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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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' ++ ;; ++ ++ 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' ++ ;; ++ ++ sco3.2v5*) ++ lt_prog_compiler_pic='-Kpic' ++ lt_prog_compiler_static='-dn' ++ ;; ++ ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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:6669: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:6673: \$? = $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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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 ++ ++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:6731: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:6735: \$? = $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 > out/conftest.exp ++ $SED '/^$/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.err || 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 ++ ;; ++ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ 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 ++ link_all_deplibs=no ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' ++ # -bexpall does not export symbols beginning with underscore (_) ++ always_export_symbols=yes ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec=' ' ++ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*|ia64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) ++ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ *) ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ ia64*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ *) ++ 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 ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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=: ++ ;; ++ ++ sco3.2v5*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ;; ++ ++ 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.2uw2*) ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=no ++ hardcode_runpath_var=yes ++ runpath_var=LD_RUN_PATH ++ ;; ++ ++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ++ no_undefined_flag='${wl}-z ${wl}text' ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv5*) ++ no_undefined_flag=' -z text' ++ # $CC -shared without GNU ld will not create a library from C++ ++ # object files and a static libstdc++, better avoid it by now ++ 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' ++ hardcode_libdir_flag_spec= ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ;; ++ ++ 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 ++ ++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 ++ ++# ++# 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 ++ 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 ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ 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' ++ ;; ++ ++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 ++ ++ # 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)); 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 /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++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 ++ 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" ++ ;; ++ ++sco3.2v5*) ++ version_type=osf ++ 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 ++ ;; ++ ++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.2uw2* | sysv4.3* | sysv5*) ++ 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 ++ ;; ++ ++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 ++ ++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" ++ 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); */ ++ } ++ ++ 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_unknown|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 ++ LDFLAGS="$LDFLAGS $link_static_flag" ++ 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); */ ++ } ++ ++ 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_unknown|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 librarie types wil 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 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 ++ ++# A language-specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC ++ ++# 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=$lt_predep_objects ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects ++ ++# 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=$lt_compiler_lib_search_path ++ ++# 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=$lt_sys_lib_search_path_spec ++ ++# 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 ++ ++ # 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_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"} ++ ++# 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' >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' >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 ++ 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 ++ 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' ++ # -bexpall does not export symbols beginning with underscore (_) ++ always_export_symbols_CXX=yes ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_CXX=' ' ++ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 ++ case $host_cpu in ++ hppa*64*) ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld_CXX='+b $libdir' ++ hardcode_libdir_separator_CXX=: ++ ;; ++ ia64*) ++ hardcode_libdir_flag_spec_CXX='-L$libdir' ++ ;; ++ *) ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ ;; ++ esac ++ fi ++ case $host_cpu in ++ hppa*64*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ ;; ++ ia64*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_minus_L_CXX=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ *) ++ 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*|ia64*) ++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ++ ;; ++ *) ++ 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 ++ ia64*|hppa*64*) ++ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ++ ;; ++ *) ++ 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 ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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 ++ ;; ++ sco*) ++ archive_cmds_need_lc_CXX=no ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ 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 ++ ;; ++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ++ archive_cmds_need_lc_CXX=no ++ ;; ++ 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 ++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= ++ ;; ++ 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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ ;; ++ 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*) ++ ;; ++ sco*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ 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 ++ ;; ++ unixware*) ++ ;; ++ 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:11334: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:11338: \$? = $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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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 ++ ++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:11396: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:11400: \$? = $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 > out/conftest.exp ++ $SED '/^$/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.err || 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' ++ ;; ++ linux*) ++ link_all_deplibs_CXX=no ++ ;; ++ *) ++ 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 ++ ++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 ++ ++# ++# 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 ++ 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 ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ 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' ++ ;; ++ ++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 ++ ++ # 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)); 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 /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++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 ++ 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" ++ ;; ++ ++sco3.2v5*) ++ version_type=osf ++ 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 ++ ;; ++ ++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.2uw2* | sysv4.3* | sysv5*) ++ 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 ++ ;; ++ ++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 ++ ++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 ++ ++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_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 ++ 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_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 ++ 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_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 ++ 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_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 ++ 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_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 ++ 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_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 ++ 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_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 ++ 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" ++ 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); */ ++ } ++ ++ 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_unknown|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 ++ LDFLAGS="$LDFLAGS $link_static_flag" ++ 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); */ ++ } ++ ++ 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_unknown|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 ++ ++ ++# 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 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 ++ ++# A language-specific compiler. ++CC=$lt_compiler_CXX ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_CXX ++ ++# 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=$lt_predep_objects_CXX ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_CXX ++ ++# 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=$lt_compiler_lib_search_path_CXX ++ ++# 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=$lt_sys_lib_search_path_spec ++ ++# 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"} ++ ++# 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' >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' >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 ++ ++test "$ld_shlibs_F77" = no && can_build_shared=no ++ ++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' ++ ;; ++ ++ 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' ++ ;; ++ ++ sco3.2v5*) ++ lt_prog_compiler_pic_F77='-Kpic' ++ lt_prog_compiler_static_F77='-dn' ++ ;; ++ ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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:13764: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:13768: \$? = $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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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 ++ ++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:13826: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:13830: \$? = $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 > out/conftest.exp ++ $SED '/^$/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.err || 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 ++ ;; ++ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ 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 ++ link_all_deplibs_F77=no ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' ++ # -bexpall does not export symbols beginning with underscore (_) ++ always_export_symbols_F77=yes ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_F77=' ' ++ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*|ia64*) ++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) ++ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ *) ++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld_F77='+b $libdir' ++ hardcode_libdir_separator_F77=: ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ia64*) ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ ;; ++ *) ++ 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 ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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=: ++ ;; ++ ++ sco3.2v5*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_F77=no ++ export_dynamic_flag_spec_F77='${wl}-Bexport' ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ;; ++ ++ 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.2uw2*) ++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes ++ hardcode_minus_L_F77=no ++ hardcode_shlibpath_var_F77=no ++ hardcode_runpath_var=yes ++ runpath_var=LD_RUN_PATH ++ ;; ++ ++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ++ no_undefined_flag_F77='${wl}-z ${wl}text' ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ sysv5*) ++ no_undefined_flag_F77=' -z text' ++ # $CC -shared without GNU ld will not create a library from C++ ++ # object files and a static libstdc++, better avoid it by now ++ 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' ++ hardcode_libdir_flag_spec_F77= ++ hardcode_shlibpath_var_F77=no ++ runpath_var='LD_RUN_PATH' ++ ;; ++ ++ 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 ++ ++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 ++ ++# ++# 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 ++ 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 ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ 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' ++ ;; ++ ++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 ++ ++ # 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)); 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 /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++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 ++ 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" ++ ;; ++ ++sco3.2v5*) ++ version_type=osf ++ 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 ++ ;; ++ ++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.2uw2* | sysv4.3* | sysv5*) ++ 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 ++ ;; ++ ++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 ++ ++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 ++ ++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 ++ ++ ++ ++# 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 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 ++ ++# A language-specific compiler. ++CC=$lt_compiler_F77 ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_F77 ++ ++# 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=$lt_predep_objects_F77 ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_F77 ++ ++# 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=$lt_compiler_lib_search_path_F77 ++ ++# 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=$lt_sys_lib_search_path_spec ++ ++# 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"} ++ ++# 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' >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' >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:15967: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:15971: \$? = $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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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' ++ ;; ++ ++ 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' ++ ;; ++ ++ sco3.2v5*) ++ lt_prog_compiler_pic_GCJ='-Kpic' ++ lt_prog_compiler_static_GCJ='-dn' ++ ;; ++ ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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:16229: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:16233: \$? = $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 >conftest.exp ++ $SED '/^$/d' conftest.err >conftest.er2 ++ if test ! -s conftest.err || 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 ++ ++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:16291: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:16295: \$? = $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 > out/conftest.exp ++ $SED '/^$/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.err || 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 ++ ;; ++ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ 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 ++ link_all_deplibs_GCJ=no ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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* | sysv5*) ++ 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 ++ ;; ++ ++ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' ++ # -bexpall does not export symbols beginning with underscore (_) ++ always_export_symbols_GCJ=yes ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_GCJ=' ' ++ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*|ia64*) ++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) ++ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ *) ++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' ++ hardcode_libdir_separator_GCJ=: ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ia64*) ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ ;; ++ *) ++ 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 ++ ;; ++ 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* | netbsdelf*-gnu | knetbsd*-gnu) ++ 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=: ++ ;; ++ ++ sco3.2v5*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_GCJ=no ++ export_dynamic_flag_spec_GCJ='${wl}-Bexport' ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ;; ++ ++ 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.2uw2*) ++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes ++ hardcode_minus_L_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ hardcode_runpath_var=yes ++ runpath_var=LD_RUN_PATH ++ ;; ++ ++ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ++ no_undefined_flag_GCJ='${wl}-z ${wl}text' ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ sysv5*) ++ no_undefined_flag_GCJ=' -z text' ++ # $CC -shared without GNU ld will not create a library from C++ ++ # object files and a static libstdc++, better avoid it by now ++ 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' ++ hardcode_libdir_flag_spec_GCJ= ++ hardcode_shlibpath_var_GCJ=no ++ runpath_var='LD_RUN_PATH' ++ ;; ++ ++ 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 ++ ++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 ++ ++# ++# 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 ++ 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 ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ 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' ++ ;; ++ ++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 ++ ++ # 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)); 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 /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++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 ++ 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" ++ ;; ++ ++sco3.2v5*) ++ version_type=osf ++ 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 ++ ;; ++ ++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.2uw2* | sysv4.3* | sysv5*) ++ 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 ++ ;; ++ ++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 ++ ++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 ++ ++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" ++ 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); */ ++ } ++ ++ 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_unknown|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 ++ LDFLAGS="$LDFLAGS $link_static_flag" ++ 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); */ ++ } ++ ++ 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_unknown|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" + ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ++ 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 ++ ++ ++# 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 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"/'` + ;; +- *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ++ 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 ++ ++# A language-specific compiler. ++CC=$lt_compiler_GCJ ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_GCJ ++ ++# 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=$lt_predep_objects_GCJ ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_GCJ ++ ++# 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=$lt_compiler_lib_search_path_GCJ ++ ++# 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=$lt_sys_lib_search_path_spec ++ ++# 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"} ++ ++# 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' >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' >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 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 +- 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 +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- ;; ++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 ++ ++# A language-specific compiler. ++CC=$lt_compiler_RC ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_RC ++ ++# 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=$lt_predep_objects_RC ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_RC ++ ++# 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=$lt_compiler_lib_search_path_RC ++ ++# 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 + +-freebsd1*) +- dynamic_linker=no +- ;; ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var + +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- *) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var + +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- dynamic_linker="$host_os dld.sl" +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_RC + +-irix5* | irix6*) +- version_type=irix +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' +- case $host_os in +- irix5*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") 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}" +- ;; ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +-# No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) +- dynamic_linker=no +- ;; ++# 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 + +-# This must be Linux ELF. +-linux-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$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 ++# 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 + +- # 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' +- ;; ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +-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}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- dynamic_linker='NetBSD ld.elf_so' ++# 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=$lt_sys_lib_search_path_spec ++ ++# 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 +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; ++fi + +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; + +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- 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 ++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 +- shlibpath_overrides_runpath=yes ++ 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 +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++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 + +-os2*) +- libname_spec='$name' +- need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; + +-osf3* | osf4* | osf5*) +- version_type=osf +- need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- 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" +- ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- ;; + +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=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 +- ;; + +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; + +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; + +-*) +- 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 + +-# Report the final consequences. +-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*) +- 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 + +-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 + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi + +-if test "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 +- ;; + +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; + +- *) +- 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 ++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 +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. */ +-#include +-/* 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 (); +-char (*f) (); +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-/* 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 ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include + #else +-f = shl_load; ++# include + #endif +- +- ; +- return 0; +-} ++ Syntax error + _ACEOF +-rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++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); }; }; then +- ac_cv_func_shl_load=yes ++ (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 +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ac_cpp_err=yes + 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 +-#line $LINENO "configure" +-#include "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 (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-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>&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 ++if test -z "$ac_cpp_err"; then ++ : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. */ +-#include +-/* 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 (); +-char (*f) (); ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-/* 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 +-f = dlopen; +-#endif ++ # Broken: fails on valid input. ++continue ++fi ++rm -f conftest.err conftest.$ac_ext + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ # 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); }; }; then +- ac_cv_func_dlopen=yes ++ (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 +-cat conftest.$ac_ext >&5 +-ac_cv_func_dlopen=no ++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 +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++ done ++ ac_cv_prog_CPP=$CPP ++ + 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 ++ CPP=$ac_cv_prog_CPP + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "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 (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++ 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 +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} ++ Syntax error + _ACEOF +-rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++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); }; }; then +- ac_cv_lib_dl_dlopen=yes ++ (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 +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++ ac_cpp_err=yes + 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 ++if test -z "$ac_cpp_err"; then ++ : + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-/* 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 (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} ++ # 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 +-rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++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); }; }; then +- ac_cv_lib_svld_dlopen=yes ++ (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 +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_svld_dlopen=no ++ ac_cpp_err=yes + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++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 +-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" ++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: 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 "$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 ++ ++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 +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "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 (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-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>&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 ++ if test -n "$CXX"; then ++ ac_cv_prog_CXX="$CXX" # Let the user override the test. + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f 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 +- ++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 +- +- ;; +- 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" +- 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 ++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 "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross ++ if test -n "$ac_ct_CXX"; then ++ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + 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 ++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 + +-/* 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 ++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 + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++ test -n "$ac_ct_CXX" && break ++done ++test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++ CXX=$ac_ct_CXX ++fi + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++# 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); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 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_unknown|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 ++ (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); } + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- 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 "$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 +- 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 ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-void fnord() { int i=42;} +-int main () ++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); */ +- } ++#ifndef __GNUC__ ++ choke me ++#endif + +- exit (status); ++ ; ++ return 0; + } +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++_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); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no +- fi +-fi +-rm -fr conftest* ++ (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: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- 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. */ + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++int ++main () ++{ + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac ++ ; ++ 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 + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac ++ac_cv_prog_cxx_g=no + fi +- +- +-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 +- if test "${lt_cv_archive_cmds_need_lc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++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 +- $rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext ++ 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 + +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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); }; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- 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 ++ (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); } +- then +- lt_cv_archive_cmds_need_lc=no ++ (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=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 ++ ++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 +- lt_cv_archive_cmds_need_lc=yes ++ 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 +- allow_undefined_flag=$save_allow_undefined_flag +- else +- cat conftest.err 1>&5 + fi +-fi +- +- echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 +-echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 +- ;; +- esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} ++ done + +-# The second 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 +- : ++ cd .. ++ rm -rf conftest.dir + 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. +- test -f Makefile && make "$ltmain" ++ am_cv_CXX_dependencies_compiler_type=none + fi + +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" +- +- echo creating $ofile +- +- # 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 CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do +- +- case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- finish_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 ++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 + +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL + +-# `$echo "$ofile" | 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-2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. + +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" ++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 + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +-# ### BEGIN LIBTOOL CONFIG + +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++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. */ + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL ++#include ++main() ++{ ++#if defined(__GNUC__) && \ ++ ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) ++ return 1; ++#endif ++ return 0; ++} + +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared ++_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 + +-# Whether or not to build static libraries. +-build_old_libs=$enable_static ++( exit $ac_status ) ++echo "need at least gcc 2.95 to compile correctly" ++exit 1 ++fi ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi + +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$need_lc ++# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works ++# for constant arguments. Useless! ++echo "$as_me:$LINENO: checking for working alloca.h" >&5 ++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 ++if test "${ac_cv_working_alloca_h+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 ++int ++main () ++{ ++char *p = (char *) alloca (2 * sizeof (int)); ++ ; ++ 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_working_alloca_h=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install ++ac_cv_working_alloca_h=no ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 ++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 ++if test $ac_cv_working_alloca_h = yes; then + +-# The host system. +-host_alias=$host_alias +-host=$host ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_ALLOCA_H 1 ++_ACEOF + +-# An echo program that does not interpret backslashes. +-echo=$lt_echo ++fi + +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS ++echo "$as_me:$LINENO: checking for alloca" >&5 ++echo $ECHO_N "checking for alloca... $ECHO_C" >&6 ++if test "${ac_cv_func_alloca_works+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. */ ++#ifdef __GNUC__ ++# define alloca __builtin_alloca ++#else ++# ifdef _MSC_VER ++# include ++# define alloca _alloca ++# else ++# if HAVE_ALLOCA_H ++# include ++# else ++# ifdef _AIX ++ #pragma alloca ++# else ++# ifndef alloca /* predefined by HP cc +Olibcalls */ ++char *alloca (); ++# endif ++# endif ++# endif ++# endif ++#endif + +-# The default C compiler. +-CC=$lt_CC ++int ++main () ++{ ++char *p = (char *) alloca (1); ++ ; ++ 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_alloca_works=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC ++ac_cv_func_alloca_works=no ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 ++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +-# The linker used to build libraries. +-LD=$lt_LD ++if test $ac_cv_func_alloca_works = yes; then + +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_ALLOCA 1 ++_ACEOF + +-# A BSD-compatible nm program. +-NM=$lt_NM ++else ++ # The SVR3 libPW and SVR4 libucb both contain incompatible functions ++# that cause trouble. Some versions do not even contain alloca or ++# contain a buggy version. If you still want to use their alloca, ++# use ar to extract alloca.o from them instead of compiling alloca.c. + +-# A symbol stripping program +-STRIP=$STRIP ++ALLOCA=alloca.$ac_objext + +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD ++cat >>confdefs.h <<\_ACEOF ++#define C_ALLOCA 1 ++_ACEOF + +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" + +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" ++echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 ++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 ++if test "${ac_cv_os_cray+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. */ ++#if defined(CRAY) && ! defined(CRAY2) ++webecray ++#else ++wenotbecray ++#endif + +-# Used on cygwin: assembler. +-AS="$AS" ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "webecray" >/dev/null 2>&1; then ++ ac_cv_os_cray=yes ++else ++ ac_cv_os_cray=no ++fi ++rm -f conftest* + +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir ++fi ++echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 ++echo "${ECHO_T}$ac_cv_os_cray" >&6 ++if test $ac_cv_os_cray = yes; then ++ for ac_func in _getb67 GETB67 getb67; do ++ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ++if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ + +-# How to pass a linker flag through the compiler. +-wl=$lt_wl ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif + +-# Object file suffix (normally "o"). +-objext="$ac_objext" ++#undef $ac_func + +-# Old archive suffix (normally "a"). +-libext="$libext" ++/* 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 $ac_func (); ++/* 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_$ac_func) || defined (__stub___$ac_func) ++choke me ++#else ++char (*f) () = $ac_func; ++#endif ++#ifdef __cplusplus ++} ++#endif + +-# Executable file suffix (normally ""). +-exeext="$exeext" ++int ++main () ++{ ++return f != $ac_func; ++ ; ++ 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 ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag +-pic_mode=$pic_mode ++eval "$as_ac_var=no" ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++if test `eval echo '${'$as_ac_var'}'` = yes; then + +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o ++cat >>confdefs.h <<_ACEOF ++#define CRAY_STACKSEG_END $ac_func ++_ACEOF + +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo ++ break ++fi + +-# Must we lock files when doing compilation ? +-need_locks=$lt_need_locks ++ done ++fi + +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix ++echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 ++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 ++if test "${ac_cv_c_stack_direction+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then ++ ac_cv_c_stack_direction=0 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++int ++find_stack_direction () ++{ ++ static char *addr = 0; ++ auto char dummy; ++ if (addr == 0) ++ { ++ addr = &dummy; ++ return find_stack_direction (); ++ } ++ else ++ return (&dummy > addr) ? 1 : -1; ++} + +-# Do we need a version for libraries? +-need_version=$need_version ++int ++main () ++{ ++ exit (find_stack_direction () < 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_c_stack_direction=1 ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen ++( exit $ac_status ) ++ac_cv_c_stack_direction=-1 ++fi ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 ++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self ++cat >>confdefs.h <<_ACEOF ++#define STACK_DIRECTION $ac_cv_c_stack_direction ++_ACEOF + +-# 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_link_static_flag ++fi + +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_no_builtin_flag + +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 ++echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 ++if test "${ac_cv_lib_c_getopt_long+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lc $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec ++/* 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 getopt_long (); ++int ++main () ++{ ++getopt_long (); ++ ; ++ 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_c_getopt_long=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec ++ac_cv_lib_c_getopt_long=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_c_getopt_long" >&5 ++echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 ++if test $ac_cv_lib_c_getopt_long = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_GETOPT_LONG 1 ++_ACEOF + +-# Library versioning type. +-version_type=$version_type ++fi + +-# 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 ++echo "$as_me:$LINENO: checking for alarm in -lc" >&5 ++echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 ++if test "${ac_cv_lib_c_alarm+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lc $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec ++/* 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 alarm (); ++int ++main () ++{ ++alarm (); ++ ; ++ 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_c_alarm=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# 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 ++ac_cv_lib_c_alarm=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_c_alarm" >&5 ++echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 ++if test $ac_cv_lib_c_alarm = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_ALARM 1 ++_ACEOF + +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++fi + +-# 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 to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib ++for ac_header in netinet/in.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 + +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method ++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 + +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd ++# 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 + +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag ++ 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 + +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag ++# 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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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 + +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval ++fi + +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_global_symbol_pipe ++done + +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var ++for ac_header in string.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 + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var ++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 shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++# 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 + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action ++ 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 + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs ++# 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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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 + +-# 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 ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator ++fi + +-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct ++done + +-# 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 + +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" ++for ac_header in libintl.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 + +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs ++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 + +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++# 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 + +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ 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 + +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" ++# 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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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 + +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds ++fi + +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds ++done + +-# 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 ++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. */ + +-# ### END LIBTOOL CONFIG ++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; + +-__EOF__ ++ *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 + +- case $host_os in +- aix3*) +- cat <<\EOF >> "${ofile}T" ++ ; ++ 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 + +-# 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 ++ac_cv_c_const=no + fi +-EOF +- ;; +- esac +- +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* 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 */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) +- +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" ++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 + + ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + +-# 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 ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "vsnprintf" >/dev/null 2>&1; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_VSNPRINTF 1 ++_ACEOF + ++fi ++rm -f conftest* + + +-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 "$as_me:$LINENO: checking for unsigned short int" >&5 ++echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 ++if test "${ac_cv_type_unsigned_short_int+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. +- # 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* confdefs.h. */ + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++if ((unsigned short int *) 0) ++ return 0; ++if (sizeof (unsigned short 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : ++ (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_unsigned_short_int=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- # Broken: fails on valid input. +-continue ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_type_unsigned_short_int=no + fi +-rm -f conftest.err conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 ++echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 + +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include ++echo "$as_me:$LINENO: checking size of unsigned short int" >&5 ++echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 ++if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$ac_cv_type_unsigned_short_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 +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++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 (unsigned short 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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue ++ (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 (unsigned short 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 +- cat conftest.$ac_ext >&5 +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext ++sed 's/^/| /' conftest.$ac_ext >&5 + +-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 ++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 + +- done +- ac_cv_prog_CPP=$CPP ++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 (unsigned short int))) < 0)]; ++test_array [0] = 0 + +-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. +- # 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +- Syntax error ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +- 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 +- cat conftest.$ac_ext >&5 +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext ++ (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 (unsigned short int))) >= $ac_mid)]; ++test_array [0] = 0 + +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue ++ (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 +- cat 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" >&5 +-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&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 +- +-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 ++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 +-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 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + 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 ++ 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 +-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 +- ++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 (unsigned short int))) <= $ac_mid)]; ++test_array [0] = 0 + +-# 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 ++ ; ++ 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); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&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); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&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); } ++ (exit $ac_status); }; }; then ++ ac_hi=$ac_mid ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-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 ++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_unsigned_short_int=$ac_lo;; ++'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77 ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute sizeof (unsigned short 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: internal error: not reached in cross-compile" >&5 ++echo "$as_me: error: internal error: not reached in cross-compile" >&2;} ++ { (exit 1); exit 1; }; } + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* 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 (unsigned short int)); } ++unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } ++#include ++#include + int + main () + { +-#ifndef __GNUC__ +- choke me +-#endif ++ ++ FILE *f = fopen ("conftest.val", "w"); ++ if (! f) ++ exit (1); ++ if (((long) (sizeof (unsigned short int))) < 0) ++ { ++ long i = longval (); ++ if (i != ((long) (sizeof (unsigned short int)))) ++ exit (1); ++ fprintf (f, "%ld\n", i); ++ } ++ else ++ { ++ unsigned long i = ulongval (); ++ if (i != ((long) (sizeof (unsigned short int)))) ++ exit (1); ++ fprintf (f, "%lu\n", i); ++ } ++ exit (ferror (f) || fclose (f) != 0); + + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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='test -s conftest.$ac_objext' ++ (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_compiler_gnu=yes ++ ac_cv_sizeof_unsigned_short_int=`cat conftest.val` + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_compiler_gnu=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu ++ 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 (unsigned short int), 77 ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute sizeof (unsigned short int), 77 ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } + 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 ++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_unsigned_short_int=0 ++fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int ++_ACEOF ++ ++ ++echo "$as_me:$LINENO: checking for unsigned long int" >&5 ++echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 ++if test "${ac_cv_type_unsigned_long_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + int + main () + { +- ++if ((unsigned long int *) 0) ++ return 0; ++if (sizeof (unsigned long int)) ++ return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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_cxx_g=yes ++ ac_cv_type_unsigned_long_int=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_prog_cxx_g=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_type_unsigned_long_int=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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 ++echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 ++echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 ++ ++echo "$as_me:$LINENO: checking size of unsigned long int" >&5 ++echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 ++if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$GXX" = yes; then +- CXXFLAGS="-O2" +- else +- CXXFLAGS= +- fi +-fi +-for ac_declaration in \ +- ''\ +- '#include ' \ +- '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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-$ac_declaration +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ if test "$ac_cv_type_unsigned_long_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 () + { +-exit (42); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&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 -s conftest.$ac_objext' ++ { 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 +-cat conftest.$ac_ext >&5 +-continue +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_declaration +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ 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 () + { +-exit (42); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&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 -s conftest.$ac_objext' ++ { 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 ++ ac_hi=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f 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=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 +- +-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 +- +- 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 +- # 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. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}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=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_CXX_dependencies_compiler_type=$depmode +- break +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CXX_dependencies_compiler_type=none +-fi ++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 +-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 "$cross_compiling" = yes; then +- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +-echo "$as_me: error: cannot run test program while cross compiling" >&2;} +- { (exit 1); exit 1; }; } ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#include +-main() +-{ +-#if defined(__GNUC__) && \ +- ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) +- return 1; +-#endif ++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 (unsigned long int))) < 0)]; ++test_array [0] = 0 ++ ++ ; + return 0; + } +- + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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='./conftest$ac_exeext' ++ (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: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-( exit $ac_status ) +-echo "need at least gcc 2.95 to compile correctly" +-exit 1 +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +- +-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +-# for constant arguments. Useless! +-echo "$as_me:$LINENO: checking for working alloca.h" >&5 +-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +-if test "${ac_cv_working_alloca_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ 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 () + { +-char *p = (char *) alloca (2 * sizeof (int)); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) >= $ac_mid)]; ++test_array [0] = 0 ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_working_alloca_h=yes ++ ac_lo=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_working_alloca_h=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +-if test $ac_cv_working_alloca_h = yes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_ALLOCA_H 1 +-_ACEOF ++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 +- +-echo "$as_me:$LINENO: checking for alloca" >&5 +-echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +-if test "${ac_cv_func_alloca_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#ifdef __GNUC__ +-# define alloca __builtin_alloca +-#else +-# ifdef _MSC_VER +-# include +-# define alloca _alloca +-# else +-# if HAVE_ALLOCA_H +-# include +-# else +-# ifdef _AIX +- #pragma alloca +-# else +-# ifndef alloca /* predefined by HP cc +Olibcalls */ +-char *alloca (); +-# endif +-# endif +-# endif +-# endif +-#endif ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++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 () + { +-char *p = (char *) alloca (1); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; ++test_array [0] = 0 ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_func_alloca_works=yes ++ ac_hi=$ac_mid + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_alloca_works=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 +- +-if test $ac_cv_func_alloca_works = yes; then +- +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_ALLOCA 1 +-_ACEOF ++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_unsigned_long_int=$ac_lo;; ++'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77 ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute sizeof (unsigned long int), 77 ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ;; ++esac + else +- # The SVR3 libPW and SVR4 libucb both contain incompatible functions +-# that cause trouble. Some versions do not even contain alloca or +-# contain a buggy version. If you still want to use their alloca, +-# use ar to extract alloca.o from them instead of compiling alloca.c. +- +-ALLOCA=alloca.$ac_objext +- +-cat >>confdefs.h <<\_ACEOF +-#define C_ALLOCA 1 +-_ACEOF +- +- +-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +-if test "${ac_cv_os_cray+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ if test "$cross_compiling" = yes; then ++ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 ++echo "$as_me: error: internal error: not reached in cross-compile" >&2;} ++ { (exit 1); exit 1; }; } + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#if defined(CRAY) && ! defined(CRAY2) +-webecray +-#else +-wenotbecray +-#endif ++/* 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 (unsigned long int)); } ++unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } ++#include ++#include ++int ++main () ++{ ++ ++ FILE *f = fopen ("conftest.val", "w"); ++ if (! f) ++ exit (1); ++ if (((long) (sizeof (unsigned long int))) < 0) ++ { ++ long i = longval (); ++ if (i != ((long) (sizeof (unsigned long int)))) ++ exit (1); ++ fprintf (f, "%ld\n", i); ++ } ++ else ++ { ++ unsigned long i = ulongval (); ++ if (i != ((long) (sizeof (unsigned long int)))) ++ exit (1); ++ fprintf (f, "%lu\n", i); ++ } ++ exit (ferror (f) || fclose (f) != 0); + ++ ; ++ return 0; ++} + _ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "webecray" >/dev/null 2>&1; then +- ac_cv_os_cray=yes ++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_unsigned_long_int=`cat conftest.val` + else +- ac_cv_os_cray=no +-fi +-rm -f conftest* ++ 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 (unsigned long int), 77 ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute sizeof (unsigned long int), 77 ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +-echo "${ECHO_T}$ac_cv_os_cray" >&6 +-if test $ac_cv_os_cray = yes; then +- for ac_func in _getb67 GETB67 getb67; do +- as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++fi ++rm -f conftest.val + else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. */ +-#include +-/* 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 $ac_func (); +-char (*f) (); ++ ac_cv_sizeof_unsigned_long_int=0 ++fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int ++_ACEOF + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ ++echo "$as_me:$LINENO: checking for unsigned int" >&5 ++echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 ++if test "${ac_cv_type_unsigned_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 () + { +-/* 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_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-f = $ac_func; +-#endif +- ++if ((unsigned int *) 0) ++ return 0; ++if (sizeof (unsigned int)) ++ return 0; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_var=yes" ++ ac_cv_type_unsigned_int=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_var=no" +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- +-cat >>confdefs.h <<_ACEOF +-#define CRAY_STACKSEG_END $ac_func +-_ACEOF ++sed 's/^/| /' conftest.$ac_ext >&5 + +- break ++ac_cv_type_unsigned_int=no + fi +- +- done ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi ++echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 ++echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 + +-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +-if test "${ac_cv_c_stack_direction+set}" = set; then ++echo "$as_me:$LINENO: checking size of unsigned int" >&5 ++echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 ++if test "${ac_cv_sizeof_unsigned_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else ++ if test "$ac_cv_type_unsigned_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 +- ac_cv_c_stack_direction=0 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ # 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 +-find_stack_direction () ++main () + { +- static char *addr = 0; +- auto char dummy; +- if (addr == 0) +- { +- addr = &dummy; +- return find_stack_direction (); +- } +- else +- return (&dummy > addr) ? 1 : -1; +-} ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned 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 () + { +- exit (find_stack_direction () < 0); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; ++test_array [0] = 0 ++ ++ ; ++ return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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='./conftest$ac_exeext' ++ (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_stack_direction=1 ++ ac_hi=$ac_mid; break + else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-( exit $ac_status ) +-ac_cv_c_stack_direction=-1 +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 +- +-cat >>confdefs.h <<_ACEOF +-#define STACK_DIRECTION $ac_cv_c_stack_direction +-_ACEOF +- ++ 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 +- +- +-echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 +-echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 +-if test "${ac_cv_lib_c_getopt_long+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lc $LIBS" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 (unsigned int))) < 0)]; ++test_array [0] = 0 + +-/* 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 getopt_long (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#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_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 () + { +-getopt_long (); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)]; ++test_array [0] = 0 ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_lib_c_getopt_long=yes ++ ac_lo=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_c_getopt_long=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_c_getopt_long" >&5 +-echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 +-if test $ac_cv_lib_c_getopt_long = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_GETOPT_LONG 1 +-_ACEOF ++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 +- +- +-echo "$as_me:$LINENO: checking for alarm in -lc" >&5 +-echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 +-if test "${ac_cv_lib_c_alarm+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lc $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-/* 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 alarm (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++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 () + { +-alarm (); ++static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; ++test_array [0] = 0 ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_lib_c_alarm=yes ++ ac_hi=$ac_mid + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_c_alarm=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_c_alarm" >&5 +-echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 +-if test $ac_cv_lib_c_alarm = yes; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_ALARM 1 +-_ACEOF +- +-fi ++sed 's/^/| /' conftest.$ac_ext >&5 + +- +- +-for ac_header in netinet/in.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 ++ac_lo=`expr '(' $ac_mid ')' + 1` + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++done ++case $ac_lo in ++?*) ac_cv_sizeof_unsigned_int=$ac_lo;; ++'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute sizeof (unsigned int), 77 ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } ;; ++esac + 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 +-#line $LINENO "configure" +-#include "confdefs.h" ++ if test "$cross_compiling" = yes; then ++ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 ++echo "$as_me: error: internal error: not reached in cross-compile" >&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 +-#include <$ac_header> ++long longval () { return (long) (sizeof (unsigned int)); } ++unsigned long ulongval () { return (long) (sizeof (unsigned int)); } ++#include ++#include ++int ++main () ++{ ++ ++ FILE *f = fopen ("conftest.val", "w"); ++ if (! f) ++ exit (1); ++ if (((long) (sizeof (unsigned int))) < 0) ++ { ++ long i = longval (); ++ if (i != ((long) (sizeof (unsigned int)))) ++ exit (1); ++ fprintf (f, "%ld\n", i); ++ } ++ else ++ { ++ unsigned long i = ulongval (); ++ if (i != ((long) (sizeof (unsigned int)))) ++ exit (1); ++ fprintf (f, "%lu\n", i); ++ } ++ exit (ferror (f) || fclose (f) != 0); ++ ++ ; ++ return 0; ++} + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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='test -s conftest.$ac_objext' ++ (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_header_compiler=yes ++ ac_cv_sizeof_unsigned_int=`cat conftest.val` + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_header_compiler=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include <$ac_header> ++( exit $ac_status ) ++{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute sizeof (unsigned 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_unsigned_int=0 ++fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 ++cat >>confdefs.h <<_ACEOF ++#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- egrep -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 +- else +- ac_cpp_err= ++ ++ ++ ++GSM_VERSION="1:4:0" ++ ++ ++LINGUAS="de" ++ALL_LINGUAS=$LINGUAS ++ ++ ++ MKINSTALLDIRS= ++ if test -n "$ac_aux_dir"; then ++ case "$ac_aux_dir" in ++ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; ++ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; ++ esac + fi ++ if test -z "$MKINSTALLDIRS"; then ++ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" ++ fi ++ ++ ++ ++ echo "$as_me:$LINENO: checking whether NLS is requested" >&5 ++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 ++ # Check whether --enable-nls or --disable-nls was given. ++if test "${enable_nls+set}" = set; then ++ enableval="$enable_nls" ++ USE_NLS=$enableval + else +- ac_cpp_err=yes ++ USE_NLS=yes ++fi; ++ echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6 ++ ++ ++ ++ ++ ++ ++# Prepare PATH_SEPARATOR. ++# 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 +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ ++# Find out how to test for executable files. Don't use a zero-byte file, ++# as systems may use methods other than mode bits to determine executability. ++cat >conf$$.file <<_ASEOF ++#! /bin/sh ++exit 0 ++_ASEOF ++chmod +x conf$$.file ++if test -x conf$$.file >/dev/null 2>&1; then ++ ac_executable_p="test -x" + else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_header_preproc=no ++ ac_executable_p="test -f" + fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++rm -f conf$$.file + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- 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: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 ++# Extract the first word of "msgfmt", so it can be a program name with args. ++set dummy msgfmt; 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_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- eval "$as_ac_Header=$ac_header_preproc" ++ case "$MSGFMT" in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ++ ;; ++ *) ++ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$ac_save_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then ++ echo "$as_me: trying $ac_dir/$ac_word..." >&5 ++ if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && ++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ++ ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" ++ break 2 ++ fi ++ fi ++ done ++ done ++ IFS="$ac_save_IFS" ++ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ++ ;; ++esac + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++MSGFMT="$ac_cv_path_MSGFMT" ++if test "$MSGFMT" != ":"; then ++ echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6 ++else ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 ++fi ++ ++ # Extract the first word of "gmsgfmt", so it can be a program name with args. ++set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $GMSGFMT in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 + ++ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ++ ;; ++esac + fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF ++GMSGFMT=$ac_cv_path_GMSGFMT + ++if test -n "$GMSGFMT"; then ++ echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6 ++else ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 + fi + +-done + + ++# Prepare PATH_SEPARATOR. ++# 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 + +-for ac_header in string.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 ++# Find out how to test for executable files. Don't use a zero-byte file, ++# as systems may use methods other than mode bits to determine executability. ++cat >conf$$.file <<_ASEOF ++#! /bin/sh ++exit 0 ++_ASEOF ++chmod +x conf$$.file ++if test -x conf$$.file >/dev/null 2>&1; then ++ ac_executable_p="test -x" ++else ++ ac_executable_p="test -f" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++rm -f conf$$.file ++ ++# Extract the first word of "xgettext", so it can be a program name with args. ++set dummy xgettext; 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_XGETTEXT+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&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 +-#line $LINENO "configure" +-#include "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>&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 ++ case "$XGETTEXT" in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ++ ;; ++ *) ++ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$ac_save_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then ++ echo "$as_me: trying $ac_dir/$ac_word..." >&5 ++ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && ++ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ++ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" ++ break 2 ++ fi ++ fi ++ done ++ done ++ IFS="$ac_save_IFS" ++ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ++ ;; ++esac ++fi ++XGETTEXT="$ac_cv_path_XGETTEXT" ++if test "$XGETTEXT" != ":"; then ++ echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6 + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_header_compiler=no ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 + fi +-rm -f 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 +-#line $LINENO "configure" +-#include "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=$? +- egrep -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 ++ rm -f messages.po ++ ++ ++# Prepare PATH_SEPARATOR. ++# 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 +- ac_cpp_err= ++ PATH_SEPARATOR=: + fi +-else +- ac_cpp_err=yes ++ rm -f conf$$.sh + fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ ++# Find out how to test for executable files. Don't use a zero-byte file, ++# as systems may use methods other than mode bits to determine executability. ++cat >conf$$.file <<_ASEOF ++#! /bin/sh ++exit 0 ++_ASEOF ++chmod +x conf$$.file ++if test -x conf$$.file >/dev/null 2>&1; then ++ ac_executable_p="test -x" + else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_header_preproc=no ++ ac_executable_p="test -f" + fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++rm -f conf$$.file + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- 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: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 ++# Extract the first word of "msgmerge", so it can be a program name with args. ++set dummy msgmerge; 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_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- eval "$as_ac_Header=$ac_header_preproc" ++ case "$MSGMERGE" in ++ [\\/]* | ?:[\\/]*) ++ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ++ ;; ++ *) ++ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$ac_save_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then ++ echo "$as_me: trying $ac_dir/$ac_word..." >&5 ++ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ++ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" ++ break 2 ++ fi ++ fi ++ done ++ done ++ IFS="$ac_save_IFS" ++ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ++ ;; ++esac + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +- ++MSGMERGE="$ac_cv_path_MSGMERGE" ++if test "$MSGMERGE" != ":"; then ++ echo "$as_me:$LINENO: result: $MSGMERGE" >&5 ++echo "${ECHO_T}$MSGMERGE" >&6 ++else ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&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 ++ if test "$GMSGFMT" != ":"; then ++ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && ++ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ++ : ; ++ else ++ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` ++ echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 ++echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 ++ GMSGFMT=":" ++ fi ++ fi ++ ++ if test "$XGETTEXT" != ":"; then ++ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && ++ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ++ : ; ++ else ++ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 ++echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 ++ XGETTEXT=":" ++ fi ++ rm -f messages.po ++ fi + ++ ac_config_commands="$ac_config_commands default-1" + + +-for ac_header in libintl.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 "$as_me:$LINENO: checking whether we are using the GNU C Library 2 or newer" >&5 ++echo $ECHO_N "checking whether we are using the GNU C Library 2 or newer... $ECHO_C" >&6 ++if test "${ac_cv_gnu_library_2+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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#include <$ac_header> ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-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); } && +- { 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 ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++#include ++#ifdef __GNU_LIBRARY__ ++ #if (__GLIBC__ >= 2) ++ Lucky GNU user ++ #endif ++#endif ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "Lucky GNU user" >/dev/null 2>&1; then ++ ac_cv_gnu_library_2=yes + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_header_compiler=no ++ ac_cv_gnu_library_2=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++rm -f conftest* + +-# 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 +-#line $LINENO "configure" +-#include "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=$? +- egrep -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 +- else +- ac_cpp_err= +- fi ++ ++ ++fi ++echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2" >&5 ++echo "${ECHO_T}$ac_cv_gnu_library_2" >&6 ++ ++ GLIBC2="$ac_cv_gnu_library_2" ++ ++ ++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 +- ac_cpp_err=yes ++ 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 +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++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: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_header_preproc=no ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 + 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 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 preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- 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: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 ++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 +- 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 ++ 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 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- ++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 + +-done +- ++ RANLIB=$ac_ct_RANLIB ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++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 "$as_me:$LINENO: checking for library containing strerror" >&5 ++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 ++if test "${ac_cv_search_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC ++ ac_func_search_save_LIBS=$LIBS ++ac_cv_search_strerror=no + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "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; +-} +-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; +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++/* 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 strerror (); + int + main () + { +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++strerror (); + ; + 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>&5 ++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 -s conftest.$ac_objext' ++ { 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_prog_cc_stdc=$ac_arg +-break ++ ac_cv_search_strerror="none required" + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC ++sed 's/^/| /' conftest.$ac_ext >&5 + + fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++if test "$ac_cv_search_strerror" = no; then ++ for ac_lib in cposix; do ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-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 +- +-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 +-#line $LINENO "configure" +-#include "confdefs.h" +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++/* 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 strerror (); + 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 ++strerror (); ++ ; ++ 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_search_strerror="-l$ac_lib" ++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_exeext conftest.$ac_ext ++ done ++fi ++LIBS=$ac_func_search_save_LIBS ++fi ++echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 ++echo "${ECHO_T}$ac_cv_search_strerror" >&6 ++if test "$ac_cv_search_strerror" != no; then ++ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" ++ ++fi ++ ++ ++ echo "$as_me:$LINENO: checking for signed" >&5 ++echo $ECHO_N "checking for signed... $ECHO_C" >&6 ++if test "${bh_cv_c_signed+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 () ++{ ++signed char x; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 ++ bh_cv_c_signed=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_c_const=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++bh_cv_c_signed=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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 ++echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5 ++echo "${ECHO_T}$bh_cv_c_signed" >&6 ++ if test $bh_cv_c_signed = no; then + + cat >>confdefs.h <<\_ACEOF +-#define const ++#define signed + _ACEOF + +-fi +- +- +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include ++ 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 +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "vsnprintf" >/dev/null 2>&1; then +- cat >>confdefs.h <<\_ACEOF +-#define HAVE_VSNPRINTF 1 ++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* ++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 + + +-echo "$as_me:$LINENO: checking for unsigned short int" >&5 +-echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 +-if test "${ac_cv_type_unsigned_short_int+set}" = set; then ++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 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 +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + $ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +-if ((unsigned short int *) 0) ++if ((off_t *) 0) + return 0; +-if (sizeof (unsigned short int)) ++if (sizeof (off_t)) + return 0; + ; + return 0; +@@ -9066,136 +23441,198 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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_unsigned_short_int=yes ++ ac_cv_type_off_t=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_type_unsigned_short_int=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_type_off_t=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 +-echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 ++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 + +-echo "$as_me:$LINENO: checking size of unsigned short int" >&5 +-echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then ++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 +- if test "$ac_cv_type_unsigned_short_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 +-#line $LINENO "configure" +-#include "confdefs.h" ++ 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 +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) >= 0)]; +-test_array [0] = 0 +- ++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>&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 -s conftest.$ac_objext' ++ { 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ 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 long long" >&5 ++echo $ECHO_N "checking for long long... $ECHO_C" >&6 ++if test "${ac_cv_type_long_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. */ ++long long ll = 1LL; int i = 63; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) <= $ac_mid)]; +-test_array [0] = 0 +- ++long long llmax = (long long) -1; ++ return ll << i | ll >> i | llmax / ll | llmax % ll; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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 -s conftest.$ac_objext' ++ { 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_hi=$ac_mid; break ++ ac_cv_type_long_long=yes + else + echo "$as_me: failed program was:" >&5 +-cat 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` ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_type_long_long=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- done ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 ++echo "${ECHO_T}$ac_cv_type_long_long" >&6 ++ if test $ac_cv_type_long_long = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_LONG_LONG 1 ++_ACEOF ++ ++ fi ++ ++ ++ echo "$as_me:$LINENO: checking for long double" >&5 ++echo $ECHO_N "checking for long double... $ECHO_C" >&6 ++if test "${gt_cv_c_long_double+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ if test "$GCC" = yes; then ++ gt_cv_c_long_double=yes ++ else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ ++ long double foo = 0.0; ++ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ ++ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; ++ + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) < 0)]; +-test_array [0] = 0 + + ; + return 0; +@@ -9203,33 +23640,62 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ gt_cv_c_long_double=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_c_long_double=no ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ fi ++fi ++echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5 ++echo "${ECHO_T}$gt_cv_c_long_double" >&6 ++ if test $gt_cv_c_long_double = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_LONG_DOUBLE 1 ++_ACEOF ++ ++ fi ++ ++ ++ echo "$as_me:$LINENO: checking for wchar_t" >&5 ++echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 ++if test "${gt_cv_c_wchar_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. */ ++#include ++ wchar_t foo = (wchar_t)'\0'; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) >= $ac_mid)]; +-test_array [0] = 0 + + ; + return 0; +@@ -9237,55 +23703,61 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +-cat 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.$ac_objext conftest.$ac_ext +- done ++ gt_cv_c_wchar_t=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_lo= ac_hi= ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_c_wchar_t=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f 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` ++echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5 ++echo "${ECHO_T}$gt_cv_c_wchar_t" >&6 ++ if test $gt_cv_c_wchar_t = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_WCHAR_T 1 ++_ACEOF ++ ++ fi ++ ++ ++ echo "$as_me:$LINENO: checking for wint_t" >&5 ++echo $ECHO_N "checking for wint_t... $ECHO_C" >&6 ++if test "${gt_cv_c_wint_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ wint_t foo = (wchar_t)'\0'; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) <= $ac_mid)]; +-test_array [0] = 0 + + ; + return 0; +@@ -9293,437 +23765,717 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 ++ gt_cv_c_wint_t=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_lo=`expr '(' $ac_mid ')' + 1` ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_c_wint_t=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-case $ac_lo in +-?*) ac_cv_sizeof_unsigned_short_int=$ac_lo;; +-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77" >&5 +-echo "$as_me: error: cannot compute sizeof (unsigned short int), 77" >&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" >&5 +-echo "$as_me: error: cannot run test program while cross compiling" >&2;} +- { (exit 1); exit 1; }; } ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5 ++echo "${ECHO_T}$gt_cv_c_wint_t" >&6 ++ if test $gt_cv_c_wint_t = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_WINT_T 1 ++_ACEOF ++ ++ fi ++ ++ ++ echo "$as_me:$LINENO: checking for inttypes.h" >&5 ++echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 ++if test "${gl_cv_header_inttypes_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-long longval () { return (long) (sizeof (unsigned short int)); } +-unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } +-#include +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include + int + main () + { +- +- FILE *f = fopen ("conftest.val", "w"); +- if (! f) +- exit (1); +- if (((long) (sizeof (unsigned short int))) < 0) +- { +- long i = longval (); +- if (i != ((long) (sizeof (unsigned short int)))) +- exit (1); +- fprintf (f, "%ld\n", i); +- } +- else +- { +- unsigned long i = ulongval (); +- if (i != ((long) (sizeof (unsigned short int)))) +- exit (1); +- fprintf (f, "%lu\n", i); +- } +- exit (ferror (f) || fclose (f) != 0); +- ++uintmax_t i = (uintmax_t) -1; + ; + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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='./conftest$ac_exeext' ++ (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_sizeof_unsigned_short_int=`cat conftest.val` +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-( exit $ac_status ) +-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77" >&5 +-echo "$as_me: error: cannot compute sizeof (unsigned short int), 77" >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-rm -f conftest.val ++ gl_cv_header_inttypes_h=yes + else +- ac_cv_sizeof_unsigned_short_int=0 ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gl_cv_header_inttypes_h=no + fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 ++echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5 ++echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6 ++ if test $gl_cv_header_inttypes_h = yes; then ++ + cat >>confdefs.h <<_ACEOF +-#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int ++#define HAVE_INTTYPES_H_WITH_UINTMAX 1 + _ACEOF + ++ fi + +-echo "$as_me:$LINENO: checking for unsigned long int" >&5 +-echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 +-if test "${ac_cv_type_unsigned_long_int+set}" = set; then ++ ++ echo "$as_me:$LINENO: checking for stdint.h" >&5 ++echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 ++if test "${gl_cv_header_stdint_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include + int + main () + { +-if ((unsigned long int *) 0) +- return 0; +-if (sizeof (unsigned long int)) +- return 0; ++uintmax_t i = (uintmax_t) -1; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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_unsigned_long_int=yes ++ gl_cv_header_stdint_h=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_type_unsigned_long_int=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gl_cv_header_stdint_h=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 +-echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 ++echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5 ++echo "${ECHO_T}$gl_cv_header_stdint_h" >&6 ++ if test $gl_cv_header_stdint_h = yes; then + +-echo "$as_me:$LINENO: checking size of unsigned long int" >&5 +-echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STDINT_H_WITH_UINTMAX 1 ++_ACEOF ++ ++ fi ++ ++ ++ ++ ++ echo "$as_me:$LINENO: checking for intmax_t" >&5 ++echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 ++if test "${gt_cv_c_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$ac_cv_type_unsigned_long_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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++#include ++#include ++#if HAVE_STDINT_H_WITH_UINTMAX ++#include ++#endif ++#if HAVE_INTTYPES_H_WITH_UINTMAX ++#include + #endif ++ + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) >= 0)]; +-test_array [0] = 0 +- ++intmax_t x = -1; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++ gt_cv_c_intmax_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_c_intmax_t=no ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5 ++echo "${ECHO_T}$gt_cv_c_intmax_t" >&6 ++ if test $gt_cv_c_intmax_t = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_INTMAX_T 1 ++_ACEOF ++ ++ fi ++ ++ ++ ++ echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5 ++echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6 ++if test "${gt_cv_func_printf_posix+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ if test "$cross_compiling" = yes; then ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ ++ notposix + #endif +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; +-test_array [0] = 0 + +- ; +- return 0; ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "notposix" >/dev/null 2>&1; then ++ gt_cv_func_printf_posix="guessing no" ++else ++ gt_cv_func_printf_posix="guessing yes" ++fi ++rm -f conftest* ++ ++ ++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 ++/* The string "%2$d %1$d", with dollar characters protected from the shell's ++ dollar expansion (possibly an autoconf bug). */ ++static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; ++static char buf[100]; ++int main () ++{ ++ sprintf (buf, format, 33, 55); ++ return (strcmp (buf, "55 33") != 0); + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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='test -s conftest.$ac_objext' ++ (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_hi=$ac_mid; break ++ gt_cv_func_printf_posix=yes + else +- echo "$as_me: failed program was:" >&5 +-cat 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` ++ 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 ) ++gt_cv_func_printf_posix=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- done ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++fi ++echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5 ++echo "${ECHO_T}$gt_cv_func_printf_posix" >&6 ++ case $gt_cv_func_printf_posix in ++ *yes) ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_POSIX_PRINTF 1 ++_ACEOF ++ ++ ;; ++ esac ++ ++ ++ ++for ac_header in stdlib.h unistd.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 +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++ # 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 +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + $ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) < 0)]; +-test_array [0] = 0 +- +- ; +- return 0; +-} ++#include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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); }; }; then +- ac_hi=-1 ac_mid=-1 +- while :; do +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ (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 ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 +-cat 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` ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_header_compiler=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- done ++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 +-cat conftest.$ac_ext >&5 +-ac_lo= ac_hi= ++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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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 +-rm -f conftest.$ac_objext conftest.$ac_ext ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ + fi +-rm -f 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` ++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 ++ ++ ++for ac_func in getpagesize ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ++if eval "test \"\${$as_ac_var+set}\" = set"; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* 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 $ac_func (); ++/* 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_$ac_func) || defined (__stub___$ac_func) ++choke me ++#else ++char (*f) () = $ac_func; ++#endif ++#ifdef __cplusplus ++} + #endif ++ + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; +-test_array [0] = 0 +- ++return f != $ac_func; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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 -s conftest.$ac_objext' ++ { 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_hi=$ac_mid ++ eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_lo=`expr '(' $ac_mid ')' + 1` ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++eval "$as_ac_var=no" ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext + done +-case $ac_lo in +-?*) ac_cv_sizeof_unsigned_long_int=$ac_lo;; +-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77" >&5 +-echo "$as_me: error: cannot compute sizeof (unsigned long int), 77" >&2;} +- { (exit 1); exit 1; }; } ;; +-esac ++ ++echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test "$cross_compiling" = yes; then +- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +-echo "$as_me: error: cannot run test program while cross compiling" >&2;} +- { (exit 1); exit 1; }; } ++ ac_cv_func_mmap_fixed_mapped=no + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* 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 (unsigned long int)); } +-unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } +-#include +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++/* malloc might have been renamed as rpl_malloc. */ ++#undef malloc ++ ++/* Thanks to Mike Haertel and Jim Avera for this test. ++ Here is a matrix of mmap possibilities: ++ mmap private not fixed ++ mmap private fixed at somewhere currently unmapped ++ mmap private fixed at somewhere already mapped ++ mmap shared not fixed ++ mmap shared fixed at somewhere currently unmapped ++ mmap shared fixed at somewhere already mapped ++ For private mappings, we should verify that changes cannot be read() ++ back from the file, nor mmap's back from the file at a different ++ address. (There have been systems where private was not correctly ++ implemented like the infamous i386 svr4.0, and systems where the ++ VM page cache was not coherent with the file system buffer cache ++ like early versions of FreeBSD and possibly contemporary NetBSD.) ++ For shared mappings, we should conversely verify that changes get ++ propagated back to all the places they're supposed to be. ++ ++ Grep wants private fixed already mapped. ++ The main things grep needs to know about mmap are: ++ * does it exist and is it safe to write into the mmap'd area ++ * how to use it (BSD variants) */ ++ ++#include ++#include ++ ++#if !STDC_HEADERS && !HAVE_STDLIB_H ++char *malloc (); + #endif ++ ++/* This mess was copied from the GNU getpagesize.h. */ ++#if !HAVE_GETPAGESIZE ++/* Assume that all systems that can run configure have sys/param.h. */ ++# if !HAVE_SYS_PARAM_H ++# define HAVE_SYS_PARAM_H 1 ++# endif ++ ++# ifdef _SC_PAGESIZE ++# define getpagesize() sysconf(_SC_PAGESIZE) ++# else /* no _SC_PAGESIZE */ ++# if HAVE_SYS_PARAM_H ++# include ++# ifdef EXEC_PAGESIZE ++# define getpagesize() EXEC_PAGESIZE ++# else /* no EXEC_PAGESIZE */ ++# ifdef NBPG ++# define getpagesize() NBPG * CLSIZE ++# ifndef CLSIZE ++# define CLSIZE 1 ++# endif /* no CLSIZE */ ++# else /* no NBPG */ ++# ifdef NBPC ++# define getpagesize() NBPC ++# else /* no NBPC */ ++# ifdef PAGESIZE ++# define getpagesize() PAGESIZE ++# endif /* PAGESIZE */ ++# endif /* no NBPC */ ++# endif /* no NBPG */ ++# endif /* no EXEC_PAGESIZE */ ++# else /* no HAVE_SYS_PARAM_H */ ++# define getpagesize() 8192 /* punt totally */ ++# endif /* no HAVE_SYS_PARAM_H */ ++# endif /* no _SC_PAGESIZE */ ++ ++#endif /* no HAVE_GETPAGESIZE */ ++ + int + main () + { ++ char *data, *data2, *data3; ++ int i, pagesize; ++ int fd; + +- FILE *f = fopen ("conftest.val", "w"); +- if (! f) ++ pagesize = getpagesize (); ++ ++ /* First, make a file with some known garbage in it. */ ++ data = (char *) malloc (pagesize); ++ if (!data) + exit (1); +- if (((long) (sizeof (unsigned long int))) < 0) +- { +- long i = longval (); +- if (i != ((long) (sizeof (unsigned long int)))) +- exit (1); +- fprintf (f, "%ld\n", i); +- } +- else +- { +- unsigned long i = ulongval (); +- if (i != ((long) (sizeof (unsigned long int)))) +- exit (1); +- fprintf (f, "%lu\n", i); +- } +- exit (ferror (f) || fclose (f) != 0); ++ for (i = 0; i < pagesize; ++i) ++ *(data + i) = rand (); ++ umask (0); ++ fd = creat ("conftest.mmap", 0600); ++ if (fd < 0) ++ exit (1); ++ if (write (fd, data, pagesize) != pagesize) ++ exit (1); ++ close (fd); + +- ; +- return 0; ++ /* Next, try to mmap the file at a fixed address which already has ++ something else allocated at it. If we can, also make sure that ++ we see the same garbage. */ ++ fd = open ("conftest.mmap", O_RDWR); ++ if (fd < 0) ++ exit (1); ++ data2 = (char *) malloc (2 * pagesize); ++ if (!data2) ++ exit (1); ++ data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_FIXED, fd, 0L)) ++ exit (1); ++ for (i = 0; i < pagesize; ++i) ++ if (*(data + i) != *(data2 + i)) ++ exit (1); ++ ++ /* Finally, make sure that changes to the mapped area do not ++ percolate back to the file as seen by read(). (This is a bug on ++ some variants of i386 svr4.0.) */ ++ for (i = 0; i < pagesize; ++i) ++ *(data2 + i) = *(data2 + i) + 1; ++ data3 = (char *) malloc (pagesize); ++ if (!data3) ++ exit (1); ++ if (read (fd, data3, pagesize) != pagesize) ++ exit (1); ++ for (i = 0; i < pagesize; ++i) ++ if (*(data + i) != *(data3 + i)) ++ exit (1); ++ close (fd); ++ exit (0); + } + _ACEOF + rm -f conftest$ac_exeext +@@ -9737,279 +24489,268 @@ + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- ac_cv_sizeof_unsigned_long_int=`cat conftest.val` ++ ac_cv_func_mmap_fixed_mapped=yes + else + echo "$as_me: program exited with status $ac_status" >&5 + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ( exit $ac_status ) +-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77" >&5 +-echo "$as_me: error: cannot compute sizeof (unsigned long int), 77" >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi ++ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f conftest.val +-else +- ac_cv_sizeof_unsigned_long_int=0 ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int ++echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++if test $ac_cv_func_mmap_fixed_mapped = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_MMAP 1 + _ACEOF + ++fi ++rm -f conftest.mmap + +-echo "$as_me:$LINENO: checking for unsigned int" >&5 +-echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 +-if test "${ac_cv_type_unsigned_int+set}" = set; then ++ ++ echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 ++echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 ++if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++#include ++#ifdef __GNU_LIBRARY__ ++ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) ++ Lucky GNU user ++ #endif + #endif +-int +-main () +-{ +-if ((unsigned int *) 0) +- return 0; +-if (sizeof (unsigned int)) +- return 0; +- ; +- return 0; +-} ++ + _ACEOF +-rm -f conftest.$ac_objext +-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); } && +- { 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_unsigned_int=yes ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "Lucky GNU user" >/dev/null 2>&1; then ++ ac_cv_gnu_library_2_1=yes + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_type_unsigned_int=no ++ ac_cv_gnu_library_2_1=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest* ++ ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 +-echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 ++echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 ++echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + +-echo "$as_me:$LINENO: checking size of unsigned int" >&5 +-echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 +-if test "${ac_cv_sizeof_unsigned_int+set}" = set; then ++ GLIBC21="$ac_cv_gnu_library_2_1" ++ ++ ++ ++ ++ echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 ++echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 ++if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$ac_cv_type_unsigned_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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)]; +-test_array [0] = 0 + +- ; +- return 0; +-} ++ if test "$cross_compiling" = yes; then ++ ++ # Guess based on the CPU. ++ case "$host_cpu" in ++ alpha* | i3456786 | m68k | s390*) ++ gt_cv_int_divbyzero_sigfpe="guessing yes";; ++ *) ++ gt_cv_int_divbyzero_sigfpe="guessing no";; ++ esac ++ ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-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); } && +- { 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++#include ++#include ++ ++static void ++#ifdef __cplusplus ++sigfpe_handler (int sig) ++#else ++sigfpe_handler (sig) int sig; + #endif +-int +-main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; +-test_array [0] = 0 ++ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ ++ exit (sig != SIGFPE); ++} + +- ; +- return 0; ++int x = 1; ++int y = 0; ++int z; ++int nan; ++ ++int main () ++{ ++ signal (SIGFPE, sigfpe_handler); ++/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ ++#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) ++ signal (SIGTRAP, sigfpe_handler); ++#endif ++/* Linux/SPARC yields signal SIGILL. */ ++#if defined (__sparc__) && defined (__linux__) ++ signal (SIGILL, sigfpe_handler); ++#endif ++ ++ z = x / y; ++ nan = y / y; ++ exit (1); + } ++ + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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='test -s conftest.$ac_objext' ++ (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_hi=$ac_mid; break ++ gt_cv_int_divbyzero_sigfpe=yes + else +- echo "$as_me: failed program was:" >&5 +-cat 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` ++ 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 ) ++gt_cv_int_divbyzero_sigfpe=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- done ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++ ++fi ++echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 ++echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 ++ case "$gt_cv_int_divbyzero_sigfpe" in ++ *yes) value=1;; ++ *) value=0;; ++ esac ++ ++cat >>confdefs.h <<_ACEOF ++#define INTDIV0_RAISES_SIGFPE $value ++_ACEOF ++ ++ ++ ++ echo "$as_me:$LINENO: checking for unsigned long long" >&5 ++echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 ++if test "${ac_cv_type_unsigned_long_long+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++unsigned long long ull = 1ULL; int i = 63; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)]; +-test_array [0] = 0 +- ++unsigned long long ullmax = (unsigned long long) -1; ++ return ull << i | ull >> i | ullmax / ull | ullmax % ull; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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 -s conftest.$ac_objext' ++ { 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); }; }; then +- ac_hi=-1 ac_mid=-1 +- while :; do +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned 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>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ (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_lo=$ac_mid; break +-else +- echo "$as_me: failed program was:" >&5 +-cat 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.$ac_objext conftest.$ac_ext +- done ++ ac_cv_type_unsigned_long_long=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_lo= ac_hi= ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_type_unsigned_long_long=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-rm -f 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 ++echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 ++ if test $ac_cv_type_unsigned_long_long = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_UNSIGNED_LONG_LONG 1 ++_ACEOF ++ ++ fi ++ ++ ++ ++ ++ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then ++ ++ test $ac_cv_type_unsigned_long_long = yes \ ++ && ac_type='unsigned long long' \ ++ || ac_type='unsigned long' ++ ++cat >>confdefs.h <<_ACEOF ++#define uintmax_t $ac_type ++_ACEOF ++ ++ else ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_UINTMAX_T 1 ++_ACEOF ++ ++ fi ++ ++ ++ echo "$as_me:$LINENO: checking for inttypes.h" >&5 ++echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 ++if test "${gt_cv_header_inttypes_h+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 + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; +-test_array [0] = 0 + + ; + return 0; +@@ -10017,1079 +24758,1229 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 ++ gt_cv_header_inttypes_h=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_lo=`expr '(' $ac_mid ')' + 1` ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_header_inttypes_h=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-case $ac_lo in +-?*) ac_cv_sizeof_unsigned_int=$ac_lo;; +-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 +-echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&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" >&5 +-echo "$as_me: error: cannot run test program while cross compiling" >&2;} +- { (exit 1); exit 1; }; } ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 ++echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 ++ if test $gt_cv_header_inttypes_h = yes; then ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_INTTYPES_H 1 ++_ACEOF ++ ++ fi ++ ++ ++ ++ if test $gt_cv_header_inttypes_h = yes; then ++ echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 ++echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 ++if test "${gt_cv_inttypes_pri_broken+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-long longval () { return (long) (sizeof (unsigned int)); } +-unsigned long ulongval () { return (long) (sizeof (unsigned int)); } +-#include +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ + +- FILE *f = fopen ("conftest.val", "w"); +- if (! f) +- exit (1); +- if (((long) (sizeof (unsigned int))) < 0) +- { +- long i = longval (); +- if (i != ((long) (sizeof (unsigned int)))) +- exit (1); +- fprintf (f, "%ld\n", i); +- } +- else +- { +- unsigned long i = ulongval (); +- if (i != ((long) (sizeof (unsigned int)))) +- exit (1); +- fprintf (f, "%lu\n", i); +- } +- exit (ferror (f) || fclose (f) != 0); ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#ifdef PRId32 ++char *p = PRId32; ++#endif ++ ++int ++main () ++{ + + ; + return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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='./conftest$ac_exeext' ++ (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_sizeof_unsigned_int=`cat conftest.val` +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-( exit $ac_status ) +-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 +-echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-rm -f conftest.val ++ gt_cv_inttypes_pri_broken=no + else +- ac_cv_sizeof_unsigned_int=0 ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_inttypes_pri_broken=yes + fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 ++echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 ++echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 ++ fi ++ if test "$gt_cv_inttypes_pri_broken" = yes; then ++ + cat >>confdefs.h <<_ACEOF +-#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int ++#define PRI_MACROS_BROKEN 1 + _ACEOF + +- +- +-GSM_VERSION="1:4:0" +- +- +-LINGUAS="de" +-ALL_LINGUAS=$LINGUAS +- +- MKINSTALLDIRS= +- if test -n "$ac_aux_dir"; then +- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" +- fi +- if test -z "$MKINSTALLDIRS"; then +- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + +- +- +- # Extract the first word of "msgfmt", so it can be a program name with args. +-set dummy msgfmt; 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_MSGFMT+set}" = set; then ++for ac_header in stdint.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 +-else +- case "$MSGFMT" in +- /*) +- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. +- ;; +- *) +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$ac_word; then +- if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && +- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- ac_cv_path_MSGFMT="$ac_dir/$ac_word" +- break +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" +- ;; +-esac + fi +-MSGFMT="$ac_cv_path_MSGFMT" +-if test "$MSGFMT" != ":"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- # Extract the first word of "gmsgfmt", so it can be a program name with args. +-set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ # 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 +- case $GMSGFMT in +- [\\/]* | ?:[\\/]*) +- ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" +- ;; +-esac ++ac_header_compiler=no + fi +-GMSGFMT=$ac_cv_path_GMSGFMT ++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 + +-if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&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 +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ 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 + +- # Extract the first word of "xgettext", so it can be a program name with args. +-set dummy xgettext; 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_XGETTEXT+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case "$XGETTEXT" in +- /*) +- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. +- ;; +- *) +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$ac_word; then +- if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && +- (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- ac_cv_path_XGETTEXT="$ac_dir/$ac_word" +- break +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" +- ;; ++# 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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_ASBOX ++ ) | ++ sed "s/^/$as_me: WARNING: /" >&2 ++ ;; + esac +-fi +-XGETTEXT="$ac_cv_path_XGETTEXT" +-if test "$XGETTEXT" != ":"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++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 +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ 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 + +- rm -f messages.po +- +- # Extract the first word of "msgmerge", so it can be a program name with args. +-set dummy msgmerge; 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_MSGMERGE+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case "$MSGMERGE" in +- /*) +- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. +- ;; +- *) +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$ac_word; then +- if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then +- ac_cv_path_MSGMERGE="$ac_dir/$ac_word" +- break +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" +- ;; +-esac + fi +-MSGMERGE="$ac_cv_path_MSGMERGE" +-if test "$MSGMERGE" != ":"; then +- echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +-echo "${ECHO_T}$MSGMERGE" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&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 + +- if test "$GMSGFMT" != ":"; then +- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && +- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` +- echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +-echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 +- GMSGFMT=":" +- fi +- fi ++ echo "$as_me:$LINENO: checking for SIZE_MAX" >&5 ++echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6 ++ result= ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +- if test "$XGETTEXT" != ":"; then +- if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && +- (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +-echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 +- XGETTEXT=":" +- fi +- rm -f messages.po +- fi ++#include ++#if HAVE_STDINT_H ++#include ++#endif ++#ifdef SIZE_MAX ++Found it ++#endif + +- ac_config_commands="$ac_config_commands default-1" ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "Found it" >/dev/null 2>&1; then ++ result=yes ++fi ++rm -f conftest* + ++ if test -z "$result"; then ++ 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 0)]; ++test_array [0] = 0 + +-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 ++ ; ++ 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; ++test_array [0] = 0 + +-fi +-fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ ; ++ 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:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi ++ 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 +-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 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++ 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 / 10) < 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $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 +-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 ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +-fi ++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 +-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 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- RANLIB=$ac_ct_RANLIB +-else +- RANLIB="$ac_cv_prog_RANLIB" ++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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; ++test_array [0] = 0 + +- +- echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +-echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +-if test "${ac_cv_lib_cposix_strerror+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++ ; ++ 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 +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lcposix $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-/* 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 strerror (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ac_lo=`expr '(' $ac_mid ')' + 1` ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++done ++case $ac_lo in ++?*) res_hi=$ac_lo;; ++'') result=? ;; ++esac ++else ++ if test "$cross_compiling" = yes; then ++ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 ++echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ ++#include ++long longval () { return ~(size_t)0 / 10; } ++unsigned long ulongval () { return ~(size_t)0 / 10; } ++#include ++#include + int + main () + { +-strerror (); ++ ++ FILE *f = fopen ("conftest.val", "w"); ++ if (! f) ++ exit (1); ++ if ((~(size_t)0 / 10) < 0) ++ { ++ long i = longval (); ++ if (i != (~(size_t)0 / 10)) ++ exit (1); ++ fprintf (f, "%ld\n", i); ++ } ++ else ++ { ++ unsigned long i = ulongval (); ++ if (i != (~(size_t)0 / 10)) ++ exit (1); ++ fprintf (f, "%lu\n", i); ++ } ++ exit (ferror (f) || fclose (f) != 0); ++ + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext ++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='test -s conftest$ac_exeext' ++ (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_lib_cposix_strerror=yes ++ res_hi=`cat conftest.val` + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_cposix_strerror=no ++ 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 ) ++result=? + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +-echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +-if test $ac_cv_lib_cposix_strerror = yes; then +- LIBS="$LIBS -lcposix" + fi ++rm -f conftest.val ++ 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 0)]; ++test_array [0] = 0 + +- +- +-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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#ifndef __cplusplus +-static $ac_kw int static_foo () {return 0; } +-$ac_kw int foo () {return 0; } +-#endif +- ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +-cat conftest.$ac_ext >&5 +-fi +-rm -f 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) ;; +- no) +-cat >>confdefs.h <<\_ACEOF +-#define inline +-_ACEOF +- ;; +- *) cat >>confdefs.h <<_ACEOF +-#define inline $ac_cv_c_inline ++ ac_lo=0 ac_mid=0 ++ while :; do ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +- ;; +-esac +- +-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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + int + main () + { +-if ((off_t *) 0) +- return 0; +-if (sizeof (off_t)) +- return 0; ++static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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>&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 -s conftest.$ac_objext' ++ { 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 ++ ac_hi=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_type_off_t=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++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 +-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 +- : ++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 >>confdefs.h <<_ACEOF +-#define off_t long ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + int + main () + { +-if ((size_t *) 0) +- return 0; +-if (sizeof (size_t)) +- return 0; ++static int test_array [1 - 2 * !((~(size_t)0 % 10) < 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>&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 -s conftest.$ac_objext' ++ { 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 +-cat conftest.$ac_ext >&5 +-ac_cv_type_size_t=no +-fi +-rm -f 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 ++ 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $ac_mid)]; ++test_array [0] = 0 + +-fi +- +- +- +-for ac_header in stdlib.h unistd.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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#include <$ac_header> ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_header_compiler=no +-fi +-rm -f 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 +-#line $LINENO "configure" +-#include "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 ++ (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=$? +- egrep -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 +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (exit $ac_status); }; }; then ++ ac_lo=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 +- cat 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 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- 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: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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" ++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 +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++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 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +- +-done +- +- +-for ac_func in getpagesize +-do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else ++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 +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. */ +-#include +-/* 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 $ac_func (); +-char (*f) (); +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + int + main () + { +-/* 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_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-f = $ac_func; +-#endif ++static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)]; ++test_array [0] = 0 + + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_var=yes" ++ ac_hi=$ac_mid + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_var=no" +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ac_lo=`expr '(' $ac_mid ')' + 1` + fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +- +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +-if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++case $ac_lo in ++?*) res_lo=$ac_lo;; ++'') result=? ;; ++esac + else + if test "$cross_compiling" = yes; then +- ac_cv_func_mmap_fixed_mapped=no ++ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 ++echo "$as_me: error: internal error: not reached in cross-compile" >&2;} ++ { (exit 1); exit 1; }; } + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-/* malloc might have been renamed as rpl_malloc. */ +-#undef malloc +- +-/* Thanks to Mike Haertel and Jim Avera for this test. +- Here is a matrix of mmap possibilities: +- mmap private not fixed +- mmap private fixed at somewhere currently unmapped +- mmap private fixed at somewhere already mapped +- mmap shared not fixed +- mmap shared fixed at somewhere currently unmapped +- mmap shared fixed at somewhere already mapped +- For private mappings, we should verify that changes cannot be read() +- back from the file, nor mmap's back from the file at a different +- address. (There have been systems where private was not correctly +- implemented like the infamous i386 svr4.0, and systems where the +- VM page cache was not coherent with the file system buffer cache +- like early versions of FreeBSD and possibly contemporary NetBSD.) +- For shared mappings, we should conversely verify that changes get +- propagated back to all the places they're supposed to be. ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++long longval () { return ~(size_t)0 % 10; } ++unsigned long ulongval () { return ~(size_t)0 % 10; } ++#include ++#include ++int ++main () ++{ + +- Grep wants private fixed already mapped. +- The main things grep needs to know about mmap are: +- * does it exist and is it safe to write into the mmap'd area +- * how to use it (BSD variants) */ ++ FILE *f = fopen ("conftest.val", "w"); ++ if (! f) ++ exit (1); ++ if ((~(size_t)0 % 10) < 0) ++ { ++ long i = longval (); ++ if (i != (~(size_t)0 % 10)) ++ exit (1); ++ fprintf (f, "%ld\n", i); ++ } ++ else ++ { ++ unsigned long i = ulongval (); ++ if (i != (~(size_t)0 % 10)) ++ exit (1); ++ fprintf (f, "%lu\n", i); ++ } ++ exit (ferror (f) || fclose (f) != 0); + +-#include +-#include ++ ; ++ 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 ++ res_lo=`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 + +-#if !STDC_HEADERS && !HAVE_STDLIB_H +-char *malloc (); +-#endif ++( exit $ac_status ) ++result=? ++fi ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++fi ++fi ++rm -f conftest.val ++ 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= 0)]; ++test_array [0] = 0 + +-/* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE +-/* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H +-# define HAVE_SYS_PARAM_H 1 +-# 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_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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; ++test_array [0] = 0 + +-# ifdef _SC_PAGESIZE +-# define getpagesize() sysconf(_SC_PAGESIZE) +-# else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H +-# include +-# ifdef EXEC_PAGESIZE +-# define getpagesize() EXEC_PAGESIZE +-# else /* no EXEC_PAGESIZE */ +-# ifdef NBPG +-# define getpagesize() NBPG * CLSIZE +-# ifndef CLSIZE +-# define CLSIZE 1 +-# endif /* no CLSIZE */ +-# else /* no NBPG */ +-# ifdef NBPC +-# define getpagesize() NBPC +-# else /* no NBPC */ +-# ifdef PAGESIZE +-# define getpagesize() PAGESIZE +-# endif /* PAGESIZE */ +-# endif /* no NBPC */ +-# endif /* no NBPG */ +-# endif /* no EXEC_PAGESIZE */ +-# else /* no HAVE_SYS_PARAM_H */ +-# define getpagesize() 8192 /* punt totally */ +-# endif /* no HAVE_SYS_PARAM_H */ +-# endif /* no _SC_PAGESIZE */ ++ ; ++ 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 + +-#endif /* no HAVE_GETPAGESIZE */ ++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. */ ++#include + int + main () + { +- char *data, *data2, *data3; +- int i, pagesize; +- int fd; +- +- pagesize = getpagesize (); +- +- /* First, make a file with some known garbage in it. */ +- data = (char *) malloc (pagesize); +- if (!data) +- exit (1); +- for (i = 0; i < pagesize; ++i) +- *(data + i) = rand (); +- umask (0); +- fd = creat ("conftest.mmap", 0600); +- if (fd < 0) +- exit (1); +- if (write (fd, data, pagesize) != pagesize) +- exit (1); +- close (fd); +- +- /* Next, try to mmap the file at a fixed address which already has +- something else allocated at it. If we can, also make sure that +- we see the same garbage. */ +- fd = open ("conftest.mmap", O_RDWR); +- if (fd < 0) +- exit (1); +- data2 = (char *) malloc (2 * pagesize); +- if (!data2) +- exit (1); +- data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); +- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, +- MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); +- for (i = 0; i < pagesize; ++i) +- if (*(data + i) != *(data2 + i)) +- exit (1); ++static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) < 0)]; ++test_array [0] = 0 + +- /* Finally, make sure that changes to the mapped area do not +- percolate back to the file as seen by read(). (This is a bug on +- some variants of i386 svr4.0.) */ +- for (i = 0; i < pagesize; ++i) +- *(data2 + i) = *(data2 + i) + 1; +- data3 = (char *) malloc (pagesize); +- if (!data3) +- exit (1); +- if (read (fd, data3, pagesize) != pagesize) +- exit (1); +- for (i = 0; i < pagesize; ++i) +- if (*(data + i) != *(data3 + i)) +- exit (1); +- close (fd); +- exit (0); ++ ; ++ return 0; + } + _ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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='./conftest$ac_exeext' ++ (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_func_mmap_fixed_mapped=yes +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-( exit $ac_status ) +-ac_cv_func_mmap_fixed_mapped=no +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 +-if test $ac_cv_func_mmap_fixed_mapped = yes; 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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= $ac_mid)]; ++test_array [0] = 0 + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_MMAP 1 ++ ; ++ 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.mmap +- +- +- echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +-echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +-if test "${ac_cv_gnu_library_2_1+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ done + else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-#include +-#ifdef __GNU_LIBRARY__ +- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) +- Lucky GNU user +- #endif +-#endif ++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. */ ++#include ++int ++main () ++{ ++static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; ++test_array [0] = 0 + ++ ; ++ return 0; ++} + _ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "Lucky GNU user" >/dev/null 2>&1; then +- ac_cv_gnu_library_2_1=yes ++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 +- ac_cv_gnu_library_2_1=no +-fi +-rm -f conftest* +- +- ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ac_lo=`expr '(' $ac_mid ')' + 1` + fi +-echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +-echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 +- +- GLIBC21="$ac_cv_gnu_library_2_1" +- +- +- +- +- echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +-echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 +-if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++done ++case $ac_lo in ++?*) fits_in_uint=$ac_lo;; ++'') result=? ;; ++esac + else +- +- if test "$cross_compiling" = yes; then +- +- # Guess based on the CPU. +- case "$host_cpu" in +- alpha* | i3456786 | m68k | s390*) +- gt_cv_int_divbyzero_sigfpe="guessing yes";; +- *) +- gt_cv_int_divbyzero_sigfpe="guessing no";; +- esac +- ++ if test "$cross_compiling" = yes; then ++ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 ++echo "$as_me: error: internal error: not reached in cross-compile" >&2;} ++ { (exit 1); exit 1; }; } + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++long longval () { return sizeof (size_t) <= sizeof (unsigned int); } ++unsigned long ulongval () { return sizeof (size_t) <= sizeof (unsigned int); } ++#include + #include +-#include +- +-static void +-#ifdef __cplusplus +-sigfpe_handler (int sig) +-#else +-sigfpe_handler (sig) int sig; +-#endif ++int ++main () + { +- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ +- exit (sig != SIGFPE); +-} +- +-int x = 1; +-int y = 0; +-int z; +-int nan; + +-int main () +-{ +- signal (SIGFPE, sigfpe_handler); +-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) +- signal (SIGTRAP, sigfpe_handler); +-#endif +-/* Linux/SPARC yields signal SIGILL. */ +-#if defined (__sparc__) && defined (__linux__) +- signal (SIGILL, sigfpe_handler); +-#endif ++ FILE *f = fopen ("conftest.val", "w"); ++ if (! f) ++ exit (1); ++ if ((sizeof (size_t) <= sizeof (unsigned int)) < 0) ++ { ++ long i = longval (); ++ if (i != (sizeof (size_t) <= sizeof (unsigned int))) ++ exit (1); ++ fprintf (f, "%ld\n", i); ++ } ++ else ++ { ++ unsigned long i = ulongval (); ++ if (i != (sizeof (size_t) <= sizeof (unsigned int))) ++ exit (1); ++ fprintf (f, "%lu\n", i); ++ } ++ exit (ferror (f) || fclose (f) != 0); + +- z = x / y; +- nan = y / y; +- exit (1); ++ ; ++ return 0; + } +- + _ACEOF + rm -f conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +@@ -11102,329 +25993,378 @@ + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +- gt_cv_int_divbyzero_sigfpe=yes ++ fits_in_uint=`cat conftest.val` + else + echo "$as_me: program exited with status $ac_status" >&5 + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + ( exit $ac_status ) +-gt_cv_int_divbyzero_sigfpe=no ++result=? + fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi +- + fi +-echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +-echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 +- case "$gt_cv_int_divbyzero_sigfpe" in +- *yes) value=1;; +- *) value=0;; +- esac +- +-cat >>confdefs.h <<_ACEOF +-#define INTDIV0_RAISES_SIGFPE $value +-_ACEOF +- +- ++rm -f conftest.val ++ if test "$fits_in_uint" = 1; then ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ extern size_t foo; ++ extern unsigned long foo; + +- echo "$as_me:$LINENO: checking for inttypes.h" >&5 +-echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +-if test "${jm_ac_cv_header_inttypes_h+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +-uintmax_t i = (uintmax_t) -1; ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 +- jm_ac_cv_header_inttypes_h=yes ++ fits_in_uint=0 + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-jm_ac_cv_header_inttypes_h=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + fi +-echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 +-echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 +- if test $jm_ac_cv_header_inttypes_h = yes; then ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ fi ++ if test -z "$result"; then ++ if test "$fits_in_uint" = 1; then ++ result="$res_hi$res_lo"U ++ else ++ result="$res_hi$res_lo"UL ++ fi ++ else ++ result='~(size_t)0' ++ fi ++ fi ++ echo "$as_me:$LINENO: result: $result" >&5 ++echo "${ECHO_T}$result" >&6 ++ if test "$result" != yes; then + + cat >>confdefs.h <<_ACEOF +-#define HAVE_INTTYPES_H_WITH_UINTMAX 1 ++#define SIZE_MAX $result + _ACEOF + + fi + + +- echo "$as_me:$LINENO: checking for stdint.h" >&5 +-echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 +-if test "${jm_ac_cv_header_stdint_h+set}" = set; then ++ ++ ++ ++for ac_header in stdint.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 +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-uintmax_t i = (uintmax_t) -1; +- ; +- return 0; +-} ++ # 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>&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 -s conftest.$ac_objext' ++ { 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 +- jm_ac_cv_header_stdint_h=yes ++ ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-jm_ac_cv_header_stdint_h=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_header_compiler=no + fi +-echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 +-echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 +- if test $jm_ac_cv_header_stdint_h = yes; then ++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 + +-cat >>confdefs.h <<_ACEOF +-#define HAVE_STDINT_H_WITH_UINTMAX 1 ++# 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 +- +- fi +- +- +- echo "$as_me:$LINENO: checking for unsigned long long" >&5 +-echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +-if test "${ac_cv_type_unsigned_long_long+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-unsigned long long ull = 1; int i = 63; +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif +-int +-main () +-{ +-unsigned long long ullmax = (unsigned long long) -1; +- return ull << i | ull >> i | ullmax / ull | ullmax % ull; +- ; +- return 0; +-} ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> + _ACEOF +-rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++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); }; }; then +- ac_cv_type_unsigned_long_long=yes ++ (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 +-cat conftest.$ac_ext >&5 +-ac_cv_type_unsigned_long_long=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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: $ac_cv_type_unsigned_long_long" >&5 +-echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 +- if test $ac_cv_type_unsigned_long_long = yes; then ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +-cat >>confdefs.h <<\_ACEOF +-#define HAVE_UNSIGNED_LONG_LONG 1 ++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 +- +- +- +- +- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then +- +- test $ac_cv_type_unsigned_long_long = yes \ +- && ac_type='unsigned long long' \ +- || ac_type='unsigned long' ++fi + +-cat >>confdefs.h <<_ACEOF +-#define uintmax_t $ac_type +-_ACEOF ++done + +- fi + + +- echo "$as_me:$LINENO: checking for inttypes.h" >&5 +-echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 +-if test "${gt_cv_header_inttypes_h+set}" = set; then ++ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 ++echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 ++if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++ gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -framework CoreFoundation" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + int + main () + { +- ++CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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 -s conftest.$ac_objext' ++ { 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 +- gt_cv_header_inttypes_h=yes ++ gt_cv_func_CFPreferencesCopyAppValue=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-gt_cv_header_inttypes_h=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++sed 's/^/| /' conftest.$ac_ext >&5 + ++gt_cv_func_CFPreferencesCopyAppValue=no + fi +-echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +-echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 +- if test $gt_cv_header_inttypes_h = yes; then +- +-cat >>confdefs.h <<_ACEOF +-#define HAVE_INTTYPES_H 1 +-_ACEOF +- +- fi +- +- +- +- if test $gt_cv_header_inttypes_h = yes; then +- echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +-echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 +-if test "${gt_cv_inttypes_pri_broken+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#ifdef PRId32 +-char *p = PRId32; +-#endif ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS" ++fi ++echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 ++echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 ++_ACEOF ++ ++ fi ++ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 ++echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 ++if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -framework CoreFoundation" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + int + main () + { +- ++CFLocaleCopyCurrent(); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++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 -s conftest.$ac_objext' ++ { 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 +- gt_cv_inttypes_pri_broken=no ++ gt_cv_func_CFLocaleCopyCurrent=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-gt_cv_inttypes_pri_broken=yes +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++sed 's/^/| /' conftest.$ac_ext >&5 + ++gt_cv_func_CFLocaleCopyCurrent=no + fi +-echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +-echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 +- fi +- if test "$gt_cv_inttypes_pri_broken" = yes; then ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS" ++fi ++echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 ++echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 ++ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +-cat >>confdefs.h <<_ACEOF +-#define PRI_MACROS_BROKEN 1 ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_CFLOCALECOPYCURRENT 1 + _ACEOF + + fi ++ INTL_MACOSX_LIBS= ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" ++ fi ++ + + + if test "X$prefix" = "XNONE"; then +@@ -11450,6 +26390,19 @@ + else + with_gnu_ld=no + fi; ++# Prepare PATH_SEPARATOR. ++# 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 + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +@@ -11501,11 +26454,12 @@ + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break +- else +- test "$with_gnu_ld" != yes && break +- fi ++ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in ++ *GNU* | *'with BFD'*) ++ test "$with_gnu_ld" != no && break ;; ++ *) ++ test "$with_gnu_ld" != yes && break ;; ++ esac + fi + done + IFS="$ac_save_ifs" +@@ -11531,11 +26485,12 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- acl_cv_prog_gnu_ld=yes +-else +- acl_cv_prog_gnu_ld=no +-fi ++case `$LD -v 2>&1 &5 + echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +@@ -11543,6 +26498,7 @@ + + + ++ + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 + echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 + if test "${acl_cv_rpath+set}" = set; then +@@ -11565,8 +26521,6 @@ + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" +- sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" +- sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" + # Check whether --enable-rpath or --disable-rpath was given. + if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" +@@ -11790,7 +26744,7 @@ + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in +- linux*) haveit=yes;; ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi +@@ -11834,7 +26788,7 @@ + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in +- linux*) haveit=yes;; ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi +@@ -11964,223 +26918,722 @@ + + + ++ echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 ++echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 ++if test "${ac_cv_type_ptrdiff_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 ((ptrdiff_t *) 0) ++ return 0; ++if (sizeof (ptrdiff_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_ptrdiff_t=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_type_ptrdiff_t=no ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 ++echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 ++if test $ac_cv_type_ptrdiff_t = yes; then ++ : ++else ++ ++cat >>confdefs.h <<\_ACEOF ++#define ptrdiff_t long ++_ACEOF ++ ++ ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ ++stdlib.h string.h unistd.h sys/param.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 the AC_PACKAGE_NAME lists. ## ++## ------------------------------------------ ## ++_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 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_func in asprintf fwprintf getcwd getegid geteuid getgid getuid \ ++mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ ++strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ ++__fsetlocking ++do ++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ++echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ++if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* 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 $ac_func (); ++/* 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_$ac_func) || defined (__stub___$ac_func) ++choke me ++#else ++char (*f) () = $ac_func; ++#endif ++#ifdef __cplusplus ++} ++#endif ++ ++int ++main () ++{ ++return f != $ac_func; ++ ; ++ 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 ++ eval "$as_ac_var=yes" ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++eval "$as_ac_var=no" ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++if test `eval echo '${'$as_ac_var'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++done ++ ++ ++ ++ echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5 ++echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6 ++if test "${ac_cv_have_decl__snprintf+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 ++int ++main () ++{ ++ ++#ifndef _snprintf ++ char *p = (char *) _snprintf; ++#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_have_decl__snprintf=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ac_cv_have_decl__snprintf=no ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6 ++ if test $ac_cv_have_decl__snprintf = yes; then ++ gt_value=1 ++ else ++ gt_value=0 ++ fi + ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL__SNPRINTF $gt_value ++_ACEOF + + + +-for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +-stdlib.h string.h unistd.h sys/param.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 "$as_me:$LINENO: checking whether _snwprintf is declared" >&5 ++echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6 ++if test "${ac_cv_have_decl__snwprintf+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 +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-#include <$ac_header> ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++ ++#ifndef _snwprintf ++ char *p = (char *) _snwprintf; ++#endif ++ ++ ; ++ return 0; ++} + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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 ++ ac_cv_have_decl__snwprintf=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_header_compiler=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_have_decl__snwprintf=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6 ++ if test $ac_cv_have_decl__snwprintf = yes; then ++ gt_value=1 ++ else ++ gt_value=0 ++ fi + +-# 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 +-#line $LINENO "configure" +-#include "confdefs.h" +-#include <$ac_header> ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL__SNWPRINTF $gt_value + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++ ++ ++ ++ ++ echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 ++echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6 ++if test "${ac_cv_have_decl_feof_unlocked+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 ++int ++main () ++{ ++ ++#ifndef feof_unlocked ++ char *p = (char *) feof_unlocked; ++#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=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ 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 +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes ++ (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_have_decl_feof_unlocked=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_header_preproc=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_have_decl_feof_unlocked=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 ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6 ++ if test $ac_cv_have_decl_feof_unlocked = yes; then ++ gt_value=1 ++ else ++ gt_value=0 ++ fi + +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- 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: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_FEOF_UNLOCKED $gt_value ++_ACEOF ++ ++ ++ ++ echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 ++echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6 ++if test "${ac_cv_have_decl_fgets_unlocked+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 ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++int ++main () ++{ + +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++#ifndef fgets_unlocked ++ char *p = (char *) fgets_unlocked; ++#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_have_decl_fgets_unlocked=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ac_cv_have_decl_fgets_unlocked=no + fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6 ++ if test $ac_cv_have_decl_fgets_unlocked = yes; then ++ gt_value=1 ++ else ++ gt_value=0 ++ fi + +-done +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_FGETS_UNLOCKED $gt_value ++_ACEOF + + + +-for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +-geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +-strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next +-do +-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++ echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 ++echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 ++if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. */ +-#include +-/* 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 $ac_func (); +-char (*f) (); +- +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + int + main () + { +-/* 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_$ac_func) || defined (__stub___$ac_func) +-choke me +-#else +-f = $ac_func; ++ ++#ifndef getc_unlocked ++ char *p = (char *) getc_unlocked; + #endif + + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++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 -s conftest$ac_exeext' ++ { 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_var=yes" ++ ac_cv_have_decl_getc_unlocked=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_var=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_have_decl_getc_unlocked=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +-if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 ++ if test $ac_cv_have_decl_getc_unlocked = yes; then ++ gt_value=1 ++ else ++ gt_value=0 ++ fi ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_DECL_GETC_UNLOCKED $gt_value + _ACEOF + +-fi +-done ++ ++ ++ case $gt_cv_func_printf_posix in ++ *yes) HAVE_POSIX_PRINTF=1 ;; ++ *) HAVE_POSIX_PRINTF=0 ;; ++ esac ++ ++ if test "$ac_cv_func_asprintf" = yes; then ++ HAVE_ASPRINTF=1 ++ else ++ HAVE_ASPRINTF=0 ++ fi ++ ++ if test "$ac_cv_func_snprintf" = yes; then ++ HAVE_SNPRINTF=1 ++ else ++ HAVE_SNPRINTF=0 ++ fi ++ ++ if test "$ac_cv_func_wprintf" = yes; then ++ HAVE_WPRINTF=1 ++ else ++ HAVE_WPRINTF=0 ++ fi + + + +@@ -12222,16 +27675,13 @@ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + #include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -12244,11 +27694,20 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -12257,23 +27716,22 @@ + am_cv_func_iconv=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + #include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -12286,11 +27744,20 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -12300,9 +27767,11 @@ + am_cv_func_iconv=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +@@ -12337,8 +27806,11 @@ + else + + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + #include + #include +@@ -12352,12 +27824,6 @@ + size_t iconv(); + #endif + +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -12368,11 +27834,20 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' ++ { 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=$? +@@ -12381,10 +27856,11 @@ + am_cv_proto_iconv_arg1="" + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + am_cv_proto_iconv_arg1="const" + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" + fi + +@@ -12407,15 +27883,12 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -12426,11 +27899,20 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -12439,10 +27921,12 @@ + am_cv_langinfo_codeset=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + am_cv_langinfo_codeset=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + + fi + echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +@@ -12459,19 +27943,16 @@ + + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 + echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +-if test "${am_cv_val_LC_MESSAGES+set}" = set; then ++if test "${gt_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { +@@ -12482,27 +27963,38 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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 +- am_cv_val_LC_MESSAGES=yes ++ gt_cv_val_LC_MESSAGES=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-am_cv_val_LC_MESSAGES=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_val_LC_MESSAGES=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 +- if test $am_cv_val_LC_MESSAGES = yes; then ++echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5 ++echo "${ECHO_T}$gt_cv_val_LC_MESSAGES" >&6 ++ if test $gt_cv_val_LC_MESSAGES = yes; then + + cat >>confdefs.h <<\_ACEOF + #define HAVE_LC_MESSAGES 1 +@@ -12512,6 +28004,10 @@ + + fi + ++ if test -n "$INTL_MACOSX_LIBS"; then ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ fi ++ + for ac_prog in bison + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +@@ -12545,46 +28041,187 @@ + echo "$as_me:$LINENO: result: $INTLBISON" >&5 + echo "${ECHO_T}$INTLBISON" >&6 + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 ++fi ++ ++ test -n "$INTLBISON" && break ++done ++ ++ if test -z "$INTLBISON"; then ++ ac_verc_fail=yes ++ else ++ echo "$as_me:$LINENO: checking version of bison" >&5 ++echo $ECHO_N "checking version of bison... $ECHO_C" >&6 ++ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` ++ case $ac_prog_version in ++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; ++ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) ++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; ++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; ++ esac ++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5 ++echo "${ECHO_T}$ac_prog_version" >&6 ++ fi ++ if test $ac_verc_fail = yes; then ++ INTLBISON=: ++ fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 ++echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 ++if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -framework CoreFoundation" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++CFPreferencesCopyAppValue(NULL, NULL) ++ ; ++ 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 ++ gt_cv_func_CFPreferencesCopyAppValue=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_func_CFPreferencesCopyAppValue=no ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS" ++fi ++echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 ++echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 ++_ACEOF ++ ++ fi ++ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 ++echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 ++if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -framework CoreFoundation" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++CFLocaleCopyCurrent(); ++ ; ++ 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 ++ gt_cv_func_CFLocaleCopyCurrent=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++gt_cv_func_CFLocaleCopyCurrent=no + fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS" ++fi ++echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 ++echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 ++ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +- test -n "$INTLBISON" && break +-done ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_CFLOCALECOPYCURRENT 1 ++_ACEOF + +- if test -z "$INTLBISON"; then +- ac_verc_fail=yes +- else +- echo "$as_me:$LINENO: checking version of bison" >&5 +-echo $ECHO_N "checking version of bison... $ECHO_C" >&6 +- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` +- case $ac_prog_version in +- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; +- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; +- esac +- echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +-echo "${ECHO_T}$ac_prog_version" >&6 + fi +- if test $ac_verc_fail = yes; then +- INTLBISON=: ++ INTL_MACOSX_LIBS= ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + +- +- +- +- +- +- +- +- +- +- +- + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 + echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +@@ -12599,6 +28236,7 @@ + + + ++ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + +@@ -12636,33 +28274,39 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + extern int _nl_msg_cat_cntr; + extern int *_nl_domain_bindings; +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif + int + main () + { + bindtextdomain ("", ""); +-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ++return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -12671,10 +28315,12 @@ + gt_cv_func_gnugettext1_libc=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + gt_cv_func_gnugettext1_libc=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 + echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 +@@ -12892,7 +28538,7 @@ + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in +- linux*) haveit=yes;; ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi +@@ -12936,7 +28582,7 @@ + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in +- linux*) haveit=yes;; ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi +@@ -13069,37 +28715,43 @@ + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + extern int _nl_msg_cat_cntr; + extern + #ifdef __cplusplus + "C" + #endif +-const char *_nl_expand_alias (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++const char *_nl_expand_alias (const char *); + int + main () + { + bindtextdomain ("", ""); +-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ++return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -13108,44 +28760,52 @@ + gt_cv_func_gnugettext1_libintl=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + gt_cv_func_gnugettext1_libintl=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + extern int _nl_msg_cat_cntr; + extern + #ifdef __cplusplus + "C" + #endif +-const char *_nl_expand_alias (); +-#ifdef F77_DUMMY_MAIN +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +-#endif ++const char *_nl_expand_alias (const char *); + int + main () + { + bindtextdomain ("", ""); +-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ++return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&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 -s conftest$ac_exeext' ++ { 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=$? +@@ -13157,9 +28817,11 @@ + + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +@@ -13170,7 +28832,8 @@ + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ +- && test "$PACKAGE" != gettext; }; then ++ && test "$PACKAGE" != gettext-runtime \ ++ && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= +@@ -13185,20 +28848,28 @@ + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then +- INTLOBJS="\$(GETTOBJS)" +- BUILD_INCLUDED_LIBINTL=yes ++ BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" + LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + ++ CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + ++ if test -n "$INTL_MACOSX_LIBS"; then ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" ++ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" ++ fi ++ fi ++ + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +@@ -13211,6 +28882,26 @@ + fi + fi + ++ echo "$as_me:$LINENO: checking whether to use NLS" >&5 ++echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 ++ echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6 ++ if test "$USE_NLS" = "yes"; then ++ echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 ++echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then ++ gt_source="external libintl" ++ else ++ gt_source="libc" ++ fi ++ else ++ gt_source="included intl directory" ++ fi ++ echo "$as_me:$LINENO: result: $gt_source" >&5 ++echo "${ECHO_T}$gt_source" >&6 ++ fi ++ + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then +@@ -13260,7 +28951,7 @@ + fi + + +- if test "$PACKAGE" = gettext; then ++ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + +@@ -13268,7 +28959,6 @@ + + + +- + nls_cv_header_intl= + nls_cv_header_libgt= + +@@ -13281,6 +28971,12 @@ + GENCAT=gencat + + ++ INTLOBJS= ++ if test "$USE_INCLUDED_LIBINTL" = yes; then ++ INTLOBJS="\$(GETTOBJS)" ++ fi ++ ++ + INTL_LIBTOOL_SUFFIX_PREFIX= + + +@@ -13318,8 +29014,8 @@ + fi + + +-ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" +-ac_config_commands="$ac_config_commands default" ++ ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" ++ ac_config_commands="$ac_config_commands default" + 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 +@@ -13330,7 +29026,7 @@ + # 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 overriden when ++# `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. + +@@ -13348,13 +29044,13 @@ + # `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" ++ "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" ++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; + } | +@@ -13365,7 +29061,7 @@ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +-if cmp -s $cache_file confcache; then :; else ++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 +@@ -13384,18 +29080,33 @@ + # 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[ ]*=/{ ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ + s/:*\$(srcdir):*/:/; + s/:*\${srcdir}:*/:/; + s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; ++s/^\([^=]*=[ ]*\):*/\1/; + s/:*$//; +-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 +@@ -13403,6 +29114,27 @@ + 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 "${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 "${COMPILE_INTL_TRUE}" && test -z "${COMPILE_INTL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"COMPILE_INTL\" was never defined. + Usually this means the macro was only invoked conditionally." >&5 +@@ -13424,11 +29156,12 @@ + # 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. ## + ## --------------------- ## +@@ -13437,46 +29170,57 @@ + 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 + +-# NLS nuisances. + # Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset + else + as_unset=false + fi + +-(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && +- { $as_unset LANG || test "${LANG+set}" != set; } || +- { LANG=C; export LANG; } +-(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && +- { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || +- { LC_ALL=C; export LC_ALL; } +-(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && +- { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || +- { LC_TIME=C; export LC_TIME; } +-(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && +- { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || +- { LC_CTYPE=C; export LC_CTYPE; } +-(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && +- { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || +- { LANGUAGE=C; export LANGUAGE; } +-(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && +- { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || +- { LC_COLLATE=C; export LC_COLLATE; } +-(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && +- { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || +- { LC_NUMERIC=C; export LC_NUMERIC; } +-(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && +- { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || +- { LC_MESSAGES=C; export LC_MESSAGES; } ++ ++# 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=`(basename "$0") 2>/dev/null || ++as_me=`$as_basename "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ +@@ -13487,6 +29231,7 @@ + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ++ + # PATH needs CR, and LINENO needs CR and PATH. + # Avoid depending upon Character Ranges. + as_cr_letters='abcdefghijklmnopqrstuvwxyz' +@@ -13497,15 +29242,15 @@ + + # The user is always right. + if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conftest.sh +- echo "exit 0" >>conftest.sh +- chmod +x conftest.sh +- if (PATH=".;."; conftest.sh) >/dev/null 2>&1; 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 conftest.sh ++ rm -f conf$$.sh + fi + + +@@ -13554,6 +29299,8 @@ + 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+"$@"} +@@ -13627,13 +29374,20 @@ + 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="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" ++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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + # IFS +@@ -13643,7 +29397,7 @@ + IFS=" $as_nl" + + # CDPATH. +-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } ++$as_unset CDPATH + + exec 6>&1 + +@@ -13660,7 +29414,7 @@ + cat >&5 <<_CSEOF + + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.53. Invocation command line was ++generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -13700,12 +29454,13 @@ + + -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 ++ instantiate the configuration file FILE + --header=FILE[:TEMPLATE] +- instantiate the configuration header FILE ++ instantiate the configuration header FILE + + Configuration files: + $config_files +@@ -13722,11 +29477,10 @@ + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.53, ++configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++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 +@@ -13743,25 +29497,25 @@ + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` +- shift +- set dummy "$ac_option" "$ac_optarg" ${1+"$@"} +- shift ++ 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 $1 in ++ case $ac_option in + # Handling of the options. + _ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" +- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +-_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) +@@ -13776,13 +29530,16 @@ + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) +- shift +- CONFIG_FILES="$CONFIG_FILES $1" ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) +- shift +- CONFIG_HEADERS="$CONFIG_HEADERS $1" ++ $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 +@@ -13797,6 +29554,20 @@ + 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 +@@ -13805,10 +29576,10 @@ + # + + AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +-# Capture the value of obsolete $ALL_LINGUAS because we need it to compute +- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it ++# Capture the value of obsolete ALL_LINGUAS because we need it to compute ++ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. +- eval 'ALL_LINGUAS''="$ALL_LINGUAS"' ++ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + +@@ -13852,6 +29623,9 @@ + 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 || + { +@@ -13860,17 +29634,17 @@ + } + + # Create a (secure) tmp directory for tmp files. +-: ${TMPDIR=/tmp} ++ + { +- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=$TMPDIR/cs$$-$RANDOM ++ tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) + } || + { +- echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ++ echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +@@ -13928,6 +29702,7 @@ + s,@ac_ct_CC@,$ac_ct_CC,;t t + s,@EXEEXT@,$EXEEXT,;t t + s,@OBJEXT@,$OBJEXT,;t t ++s,@CYGPATH_W@,$CYGPATH_W,;t t + s,@PACKAGE@,$PACKAGE,;t t + s,@VERSION@,$VERSION,;t t + s,@ACLOCAL@,$ACLOCAL,;t t +@@ -13935,13 +29710,17 @@ + s,@AUTOMAKE@,$AUTOMAKE,;t t + s,@AUTOHEADER@,$AUTOHEADER,;t t + s,@MAKEINFO@,$MAKEINFO,;t t +-s,@AMTAR@,$AMTAR,;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,@DEPDIR@,$DEPDIR,;t t + s,@am__include@,$am__include,;t t + s,@am__quote@,$am__quote,;t t +@@ -13949,6 +29728,8 @@ + 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,@build@,$build,;t t + s,@build_cpu@,$build_cpu,;t t + s,@build_vendor@,$build_vendor,;t t +@@ -13957,35 +29738,50 @@ + s,@host_cpu@,$host_cpu,;t t + s,@host_vendor@,$host_vendor,;t t + s,@host_os@,$host_os,;t t ++s,@EGREP@,$EGREP,;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,@RANLIB@,$RANLIB,;t t + s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t + s,@CPP@,$CPP,;t t +-s,@LIBTOOL@,$LIBTOOL,;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,@ALLOCA@,$ALLOCA,;t t + s,@GSM_VERSION@,$GSM_VERSION,;t t + s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t ++s,@USE_NLS@,$USE_NLS,;t t + s,@MSGFMT@,$MSGFMT,;t t + s,@GMSGFMT@,$GMSGFMT,;t t + s,@XGETTEXT@,$XGETTEXT,;t t + s,@MSGMERGE@,$MSGMERGE,;t t ++s,@GLIBC2@,$GLIBC2,;t t + s,@GLIBC21@,$GLIBC21,;t t ++s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t ++s,@HAVE_POSIX_PRINTF@,$HAVE_POSIX_PRINTF,;t t ++s,@HAVE_ASPRINTF@,$HAVE_ASPRINTF,;t t ++s,@HAVE_SNPRINTF@,$HAVE_SNPRINTF,;t t ++s,@HAVE_WPRINTF@,$HAVE_WPRINTF,;t t + s,@LIBICONV@,$LIBICONV,;t t + s,@LTLIBICONV@,$LTLIBICONV,;t t + s,@INTLBISON@,$INTLBISON,;t t +-s,@USE_NLS@,$USE_NLS,;t t + s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t + s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t + s,@CATOBJEXT@,$CATOBJEXT,;t t +-s,@INTLOBJS@,$INTLOBJS,;t t + s,@DATADIRNAME@,$DATADIRNAME,;t t + s,@INSTOBJEXT@,$INSTOBJEXT,;t t + s,@GENCAT@,$GENCAT,;t t ++s,@INTLOBJS@,$INTLOBJS,;t t + s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t + s,@INTLLIBS@,$INTLLIBS,;t t + s,@LIBINTL@,$LIBINTL,;t t +@@ -13993,6 +29789,8 @@ + s,@POSUB@,$POSUB,;t t + s,@COMPILE_INTL_TRUE@,$COMPILE_INTL_TRUE,;t t + s,@COMPILE_INTL_FALSE@,$COMPILE_INTL_FALSE,;t t ++s,@LIBOBJS@,$LIBOBJS,;t t ++s,@LTLIBOBJS@,$LTLIBOBJS,;t t + CEOF + + _ACEOF +@@ -14022,9 +29820,9 @@ + (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" ++ 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" ++ 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 +@@ -14042,46 +29840,51 @@ + # 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,:.*,,'` ;; ++ 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=`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 || ++ 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'` +- { case "$ac_dir" in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy="$ac_dir" +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || +- mkdir "$as_incr_dir" || +- { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- esac +-done; } ++ { 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=. + +@@ -14108,12 +29911,45 @@ + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; + esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ++ ++# 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 +@@ -14121,11 +29957,6 @@ + *) 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. */ +@@ -14135,7 +29966,7 @@ + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." ++ sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. +@@ -14144,26 +29975,32 @@ + 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 ++ # 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;; ++ 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 ++ 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;; ++ fi;; + esac + done` || { (exit 1); exit 1; } ++ ++ 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 + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +@@ -14203,12 +30040,12 @@ + # 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_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_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' + ac_uB='$,\1#\2define\3' + ac_uC=' ' + ac_uD=',;t' +@@ -14217,11 +30054,11 @@ + # 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,:.*,,'` ;; ++ 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=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + +@@ -14235,28 +30072,29 @@ + 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 ++ # 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;; ++ # 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 ++ 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;; ++ fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in ++ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + _ACEOF + +@@ -14279,9 +30117,9 @@ + s,[\\$`],\\&,g + t clear + : clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp ++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 ++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 +@@ -14295,13 +30133,13 @@ + # 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]*,/* & */, ++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 egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$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 +@@ -14310,7 +30148,7 @@ + # 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 ++ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS +@@ -14325,7 +30163,7 @@ + mv conftest.tail conftest.defines + done + rm -f conftest.defines +-echo ' fi # egrep' >>$CONFIG_STATUS ++echo ' fi # grep' >>$CONFIG_STATUS + echo >>$CONFIG_STATUS + + # Break up conftest.undefs because some shells have a limit on the size +@@ -14337,7 +30175,7 @@ + # 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 ++ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS +@@ -14365,41 +30203,46 @@ + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then +- if cmp -s $ac_file $tmp/config.h 2>/dev/null; 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 || ++ 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'` +- { case "$ac_dir" in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy="$ac_dir" +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || +- mkdir "$as_incr_dir" || +- { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- esac +-done; } ++ { 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 +@@ -14408,13 +30251,29 @@ + cat $tmp/config.h + rm -f $tmp/config.h + fi +- # Run the commands associated with the file. +- case $ac_file in +- gsm_config.h ) # update the timestamp +-echo 'timestamp for gsm_config.h' >"./stamp-h1" +- ;; ++# 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 + +@@ -14426,16 +30285,41 @@ + 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 || ++ 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 +@@ -14461,12 +30345,45 @@ + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; + esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ++ ++# 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 +@@ -14484,10 +30401,10 @@ + 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 || ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -14497,61 +30414,60 @@ + else + continue + fi +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ++ # 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 -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # 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 -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ++ 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 || ++ 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'` +- { case $dirpart/$fdir in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy=$dirpart/$fdir +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || +- mkdir "$as_incr_dir" || +- { { echo "$as_me:$LINENO: error: cannot create $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create $dirpart/$fdir" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- esac +-done; } ++ { 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" +@@ -14578,35 +30494,51 @@ + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac ++ # Treat a directory as a PO directory if and only if it has a ++ # POTFILES.in file. This allows packages to have multiple PO ++ # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" +- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend ++ POMAKEFILEDEPS="POTFILES.in" ++ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. +- if test -n "$ALL_LINGUAS"; then ++ if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi +- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` ++ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' ++ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" ++ else ++ # The set of available languages was given in configure.in. ++ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi ++ # Compute POFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) ++ # Compute UPDATEPOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) ++ # Compute DUMMYPOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) ++ # Compute GMOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= +- GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= ++ GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" +- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" ++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. +@@ -14641,7 +30573,7 @@ + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" +- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" ++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in +@@ -14677,8 +30609,11 @@ + # 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_cs_success=false ++ $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. +--- gsmlib-1.10.orig/stamp-h.in ++++ gsmlib-1.10/stamp-h.in +@@ -0,0 +1 @@ ++timestamp +--- gsmlib-1.10.orig/apps/gsmsmsstore.cc ++++ gsmlib-1.10/apps/gsmsmsstore.cc +@@ -292,19 +292,14 @@ + sourceStore = new SortedSMSStore(sourceMeTa->getSMSStore(storeName)); + } + +- // make sure destination file exists ++ // make sure destination file exists if specified ++ // Use isFile() for its exception-throwing properties, and discard ++ // return value cos we don't care (yet) whether it's a device or a ++ // regular file. + if (destination != "") +- { +- try +- { +- ofstream f(destination.c_str(), ios::out | ios::app | ios::binary); +- } +- catch (exception) +- { +- } +- } ++ isFile(destination); + +- // start accessing destination destination store or file ++ // start accessing destination store or file + if (operation == CopyOp || operation == BackupOp || operation == AddOp || + operation == DeleteOp) + if (destination == "-") +--- gsmlib-1.10.orig/apps/gsmsmsd.cc ++++ gsmlib-1.10/apps/gsmsmsd.cc +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #endif + #if defined(HAVE_GETOPT_LONG) || defined(WIN32) + #include +@@ -39,6 +40,7 @@ + #include + #include + #include ++#include + + using namespace std; + using namespace gsmlib; +@@ -53,6 +55,12 @@ + {"store", required_argument, (int*)NULL, 't'}, + {"device", required_argument, (int*)NULL, 'd'}, + {"spool", required_argument, (int*)NULL, 's'}, ++ {"sent", required_argument, (int*)NULL, 'S'}, ++ {"failed", required_argument, (int*)NULL, 'F'}, ++ {"priorities", required_argument, (int*)NULL, 'P'}, ++#ifndef WIN32 ++ {"syslog", no_argument, (int*)NULL, 'L'}, ++#endif + {"sca", required_argument, (int*)NULL, 'C'}, + {"flush", no_argument, (int*)NULL, 'f'}, + {"concatenate", required_argument, (int*)NULL, 'c'}, +@@ -178,9 +186,21 @@ + + bool requestStatusReport = false; + +-void sendSMS(string spoolDir, Ref at) ++void sendSMS(string spoolDirBase, string sentDirBase, string failedDirBase, ++ unsigned int priority, bool enableSyslog, Ref at) + { +- if (spoolDir != "") ++ string spoolDir = spoolDirBase; ++ string sentDir = sentDirBase; ++ string failedDir = failedDirBase; ++ if ( priority >= 1 ) ++ { ++ spoolDir = spoolDirBase + stringPrintf(_("%d"),priority); ++ sentDir = sentDirBase + stringPrintf(_("%d"),priority); ++ failedDir = failedDirBase + stringPrintf(_("%d"),priority); ++ } ++ if ( priority > 1 ) ++ sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); ++ if (spoolDirBase != "") + { + // look into spoolDir for any outgoing SMS that should be sent + #ifdef WIN32 +@@ -211,6 +231,8 @@ + strcmp(entry->d_name, "..") != 0) + #endif + { ++ if ( priority > 1 ) ++ sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); + // read in file + // the first line is interpreted as the phone number + // the rest is the message +@@ -221,11 +243,30 @@ + #endif + ifstream ifs(filename.c_str()); + if (! ifs) ++#ifndef WIN32 ++ if (enableSyslog) ++ { ++ syslog(LOG_WARNING, "Could not open SMS spool file %s", ++ filename.c_str()); ++ if (failedDirBase != "") { ++ string failedfilename = failedDir + "/" + entry->d_name; ++ rename(filename.c_str(),failedfilename.c_str()); ++ } ++ continue; ++ } ++ else ++#endif + throw GsmException( + stringPrintf(_("count not open SMS spool file %s"), + filename.c_str()), ParameterError); + char phoneBuf[1001]; + ifs.getline(phoneBuf, 1000); ++ for(int i=0;i<1000;i++) ++ if(phoneBuf[i]=='\t' || phoneBuf[i]==0) ++ { // ignore everything after a in the phone number ++ phoneBuf[i]=0; ++ break; ++ } + string text; + while (! ifs.eof()) + { +@@ -252,17 +293,51 @@ + submitSMS->setStatusReportRequest(requestStatusReport); + Address destAddr(phoneNumber); + submitSMS->setDestinationAddress(destAddr); +- if (concatenatedMessageId == -1) +- me->sendSMSs(submitSMS, text, true); +- else ++ try + { +- // maximum for concatenatedMessageId is 255 +- if (concatenatedMessageId > 256) +- concatenatedMessageId = 0; +- me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); ++ if (concatenatedMessageId == -1) ++ me->sendSMSs(submitSMS, text, true); ++ else ++ { ++ // maximum for concatenatedMessageId is 255 ++ if (concatenatedMessageId > 256) ++ concatenatedMessageId = 0; ++ me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); ++ } ++#ifndef WIN32 ++ if (enableSyslog) ++ syslog(LOG_NOTICE, "Sent SMS to %s from file %s", phoneBuf, filename.c_str()); ++#endif ++ if (sentDirBase != "") { ++#ifdef WIN32 ++ string sentfilename = sentDir + "\\" + fileInfo.name; ++#else ++ string sentfilename = sentDir + "/" + entry->d_name; ++#endif ++ rename(filename.c_str(),sentfilename.c_str()); ++ } else { ++ unlink(filename.c_str()); ++ } ++ } ++ catch (GsmException &me) ++ { ++#ifndef WIN32 ++ if (enableSyslog) ++ syslog(LOG_WARNING, "Failed sending SMS to %s from file %s: %s", phoneBuf, ++ filename.c_str(), me.what()); ++ else ++#endif ++ cerr << "Failed sending SMS to " << phoneBuf << " from " ++ << filename << ": " << me.what() << endl; ++ if (failedDirBase != "") { ++#ifdef WIN32 ++ string failedfilename = failedDir + "\\" + fileInfo.name; ++#else ++ string failedfilename = failedDir + "/" + entry->d_name; ++#endif ++ rename(filename.c_str(),failedfilename.c_str()); ++ } + } +- +- unlink(filename.c_str()); + #ifdef WIN32 + } + moreFiles = _findnext(fileHandle, &fileInfo) == 0; +@@ -276,10 +351,18 @@ + } + } + ++#ifndef WIN32 ++void syslogExit(int exitcode, int *dummy) ++{ ++ syslog(LOG_NOTICE, "exited (exit %d)",exitcode); ++} ++#endif ++ + // *** main program + + int main(int argc, char *argv[]) + { ++ bool enableSyslog = false; + try + { + string device = "/dev/mobilephone"; +@@ -291,13 +374,16 @@ + bool flushSMS = false; + bool onlyReceptionIndication = true; + string spoolDir; ++ string sentDir = ""; ++ string failedDir = ""; ++ unsigned int priorities = 0; + string initString = DEFAULT_INIT_STRING; + bool swHandshake = false; + string concatenatedMessageIdStr; + + int opt; + int dummy; +- while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:XDr", ++ while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:S:F:P:LXDr", + longOpts, &dummy)) != -1) + switch (opt) + { +@@ -328,6 +414,18 @@ + case 's': + spoolDir = optarg; + break; ++ case 'L': ++ enableSyslog = true; ++ break; ++ case 'S': ++ sentDir = optarg; ++ break; ++ case 'F': ++ failedDir = optarg; ++ break; ++ case 'P': ++ priorities = abs(atoi(optarg)); ++ break; + case 'f': + flushSMS = true; + break; +@@ -360,11 +458,21 @@ + << _(" -d, --device sets the device to connect to") << endl + << _(" -D, --direct enable direct routing of SMSs") << endl + << _(" -f, --flush flush SMS from store") << endl ++ << _(" -F, --failed directory to move failed SMS to,") << endl ++ << _(" if unset, the SMS will be deleted") << endl + << _(" -h, --help prints this message") << endl + << _(" -I, --init device AT init sequence") << endl ++#ifndef WIN32 ++ << _(" -L, --syslog log errors and information to syslog") ++ << endl ++#endif ++ << _(" -P, --priorities number of priority levels to use,") << endl ++ << _(" (default: none)") << endl + << _(" -r, --requeststat request SMS status report") << endl + << _(" -s, --spool spool directory for outgoing SMS") + << endl ++ << _(" -S, --sent directory to move sent SMS to,") << endl ++ << _(" if unset, the SMS will be deleted") << endl + << _(" -t, --store name of SMS store to use for flush\n" + " and/or temporary SMS storage") << endl + << endl +@@ -380,6 +488,14 @@ + << endl << endl + << _(" default is \"sms cb stat\"") << endl << endl + << _("If no action is given, the SMS is printed to stdout") ++ << endl << endl ++ << _("If -P is given, it activates the priority system and sets the") << endl ++ << _("number or levels to use. For every level, there must be directories") << endl ++ << _("named +.") << endl ++ << _("For example \"-P 2 -s queue -S send -F failed\" needs the following") <getAt()); ++ sendSMS(spoolDir, sentDir, failedDir, priorities, enableSyslog, me->getAt()); + } + } + catch (GsmException &ge) +--- gsmlib-1.10.orig/gsmlib/gsm_unix_serial.cc ++++ gsmlib-1.10/gsmlib/gsm_unix_serial.cc +@@ -20,12 +20,14 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include + #include ++#include + + using namespace std; + using namespace gsmlib; +@@ -131,7 +133,7 @@ + { + int res = read(_fd, &c, 1); + if (res != 1) +- return -1; ++ throwModemException(_("end of file when reading from TA")); + else + readDone = true; + break; +@@ -178,11 +180,15 @@ + + // switch off non-blocking mode + int fdFlags; +- if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) ++ if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) { ++ close(_fd); + throwModemException(_("getting file status flags failed")); ++ } + fdFlags &= ~O_NONBLOCK; +- if (fcntl(_fd, F_SETFL, fdFlags) == -1) ++ if (fcntl(_fd, F_SETFL, fdFlags) == -1) { ++ close(_fd); + throwModemException(_("switching of non-blocking mode failed")); ++ } + + long int saveTimeoutVal = _timeoutVal; + _timeoutVal = 3; +@@ -194,17 +200,22 @@ + + // toggle DTR to reset modem + int mctl = TIOCM_DTR; +- if (ioctl(_fd, TIOCMBIC, &mctl) < 0) ++ if (ioctl(_fd, TIOCMBIC, &mctl) < 0) { ++ close(_fd); + throwModemException(_("clearing DTR failed")); ++ } + // the waiting time for DTR toggling is increased with each loop + usleep(holdoff[initTries]); +- if (ioctl(_fd, TIOCMBIS, &mctl) < 0) ++ if (ioctl(_fd, TIOCMBIS, &mctl) < 0) { ++ close(_fd); + throwModemException(_("setting DTR failed")); +- ++ } + // get line modes +- if (tcgetattr(_fd, &t) < 0) ++ if (tcgetattr(_fd, &t) < 0) { ++ close(_fd); + throwModemException(stringPrintf(_("tcgetattr device '%s'"), + device.c_str())); ++ } + + // set line speed + cfsetispeed(&t, lineSpeed); +@@ -229,9 +240,11 @@ + t.c_cc[VSUSP] = 0; + + // write back +- if(tcsetattr (_fd, TCSANOW, &t) < 0) ++ if(tcsetattr (_fd, TCSANOW, &t) < 0) { ++ close(_fd); + throwModemException(stringPrintf(_("tcsetattr device '%s'"), + device.c_str())); ++ } + // the waiting time for writing to the ME/TA is increased with each loop + usleep(holdoff[initTries]); + +@@ -279,11 +292,14 @@ + catch (GsmException &e) + { + _timeoutVal = saveTimeoutVal; +- if (initTries == 0) ++ if (initTries == 0) { ++ close(_fd); + throw e; ++ } + } + } + // no response after 3 tries ++ close(_fd); + throw GsmException(stringPrintf(_("reset modem failed '%s'"), + device.c_str()), OtherError); + } +--- gsmlib-1.10.orig/gsmlib/gsm_me_ta.cc ++++ gsmlib-1.10/gsmlib/gsm_me_ta.cc +@@ -19,6 +19,8 @@ + #include + #include + ++#include ++ + using namespace std; + using namespace gsmlib; + +--- gsmlib-1.10.orig/gsmlib/gsm_sorted_phonebook.cc ++++ gsmlib-1.10/gsmlib/gsm_sorted_phonebook.cc +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + const int MAX_LINE_SIZE = 1000; + +--- gsmlib-1.10.orig/gsmlib/gsm_sms_codec.cc ++++ gsmlib-1.10/gsmlib/gsm_sms_codec.cc +@@ -23,6 +23,7 @@ + #ifdef HAVE_STRING_H + #include + #endif ++#include + #include + using namespace std; + using namespace gsmlib; +--- gsmlib-1.10.orig/gsmlib/gsm_at.cc ++++ gsmlib-1.10/gsmlib/gsm_at.cc +@@ -106,11 +106,27 @@ + putLine("AT" + atCommand); + // and gobble up CR/LF (and possibly echoed characters if echo can't be + // switched off) ++ // Also, some mobiles (e.g., Sony Ericsson K800i) respond to commands ++ // like "at+cmgf=0" with "+CMGF: 0" on success as well as the "OK" ++ // status -- so gobble that (but not if that sort of response was expected) ++ // FIXME: this is a gross hack, should be done via capabilities or sth ++ #include ++ string::size_type loc = atCommand.find( "=", 1 ); ++ string expect; ++ if (loc != string::npos) { ++ expect = atCommand; ++ expect.replace(loc, 1, " "); ++ expect.insert(loc, ":"); ++ } else { ++ expect = ""; ++ } + do + { + s = normalize(getLine()); + } +- while (s.length() == 0 || s == "AT" + atCommand); ++ while (s.length() == 0 || s == "AT" + atCommand || ++ ((response.length() == 0 || !matchResponse(s, response)) && ++ (expect.length() > 0 && matchResponse(s, expect)))); + + // handle errors + if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) +--- gsmlib-1.10.orig/gsmlib/gsm_map_key.h ++++ gsmlib-1.10/gsmlib/gsm_map_key.h +@@ -27,6 +27,7 @@ + + template class MapKey + { ++ public: + SortedStore &_myStore; // my store + // different type keys + Address _addressKey; +@@ -45,6 +46,7 @@ + MapKey(SortedStore &myStore, string key) : + _myStore(myStore), _strKey(key) {} + ++/* + friend + bool operator< + #ifndef WIN32 +@@ -59,6 +61,7 @@ + #endif + (const MapKey &x, + const MapKey &y); ++*/ + }; + + // compare two keys +@@ -72,7 +75,7 @@ + // MapKey members + + template +- bool gsmlib::operator<(const MapKey &x, ++ bool operator<(const MapKey &x, + const MapKey &y) + { + assert(&x._myStore == &y._myStore); +@@ -97,7 +100,7 @@ + } + + template +- bool gsmlib::operator==(const MapKey &x, ++ bool operator==(const MapKey &x, + const MapKey &y) + { + assert(&x._myStore == &y._myStore); +--- gsmlib-1.10.orig/gsmlib/gsm_me_ta.h ++++ gsmlib-1.10/gsmlib/gsm_me_ta.h +@@ -291,8 +291,8 @@ + // 3 disable phone receive RF circuits only + // 4 disable phone both transmit and receive RF circuits + // 5...127 implementation-defined +- int MeTa::getFunctionalityLevel() throw(GsmException); +- void MeTa::setFunctionalityLevel(int level) throw(GsmException); ++ int getFunctionalityLevel() throw(GsmException); ++ void setFunctionalityLevel(int level) throw(GsmException); + + // return battery charge status (+CBC): + // 0 ME is powered by the battery +@@ -386,13 +386,13 @@ + void setCallWaitingLockStatus(FacilityClass cl, + bool lock)throw(GsmException); + +- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); ++ void setCLIRPresentation(bool enable) throw(GsmException); + //(+CLIR) + + // 0:according to the subscription of the CLIR service + // 1:CLIR invocation + // 2:CLIR suppression +- int MeTa::getCLIRPresentation() throw(GsmException); ++ int getCLIRPresentation() throw(GsmException); + + friend class Phonebook; + friend class SMSStore; +--- gsmlib-1.10.orig/gsmlib/gsm_util.cc ++++ gsmlib-1.10/gsmlib/gsm_util.cc +@@ -35,6 +35,7 @@ + #define __USE_GNU + #define _GNU_SOURCE + #endif ++#include + #include + #include + +--- gsmlib-1.10.orig/intl/Makefile ++++ gsmlib-1.10/intl/Makefile +@@ -0,0 +1,214 @@ ++# Makefile for directory with message catalog handling in GNU NLS Utilities. ++# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++PACKAGE = gsmlib ++VERSION = 1.10 ++ ++SHELL = /bin/sh ++ ++srcdir = . ++top_srcdir = .. ++top_builddir = .. ++ ++ ++prefix = /usr ++exec_prefix = ${prefix} ++transform = s,x,x, ++libdir = $(exec_prefix)/lib ++includedir = $(prefix)/include ++datadir = $(prefix)/share ++localedir = $(datadir)/locale ++gnulocaledir = $(prefix)/share/locale ++gettextsrcdir = ${prefix}/share/gettext/intl ++aliaspath = $(localedir):. ++subdir = intl ++ ++INSTALL = /usr/bin/install -c ++INSTALL_DATA = ${INSTALL} -m 644 ++MKINSTALLDIRS = $(top_builddir)/scripts/mkinstalldirs ++ ++l = @l@ ++ ++AR = ar ++CC = i486-linux-gnu-gcc ++LIBTOOL = $(SHELL) $(top_builddir)/libtool ++RANLIB = ranlib ++ ++DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ ++-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" -DHAVE_CONFIG_H ++CPPFLAGS = ++CFLAGS = -D_REENTRANT -g -O2 ++LDFLAGS = ++ ++COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) ++ ++HEADERS = $(COMHDRS) libgettext.h loadinfo.h ++COMHDRS = gettext.h gettextP.h hash-string.h ++SOURCES = $(COMSRCS) intl-compat.c cat-compat.c ++COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ ++finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ ++explodename.c ++OBJECTS = bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ ++finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ ++explodename.$lo ++CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo ++GETTOBJS = intl-compat.$lo ++DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ ++xopen-msg.sed $(HEADERS) $(SOURCES) ++DISTFILES.normal = VERSION ++DISTFILES.gettext = libintl.glibc intlh.inst.in ++ ++.SUFFIXES: ++.SUFFIXES: .c .o .lo ++.c.o: ++ $(COMPILE) $< ++.c.lo: ++ $(LIBTOOL) --mode=compile $(COMPILE) $< ++ ++INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib ++ ++all: all-no ++ ++all-yes: libintl.$la intlh.inst ++all-no: ++ ++libintl.a: $(OBJECTS) ++ rm -f $@ ++ $(AR) cru $@ $(OBJECTS) ++ $(RANLIB) $@ ++ ++libintl.la: $(OBJECTS) ++ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ ++ -version-info 1:0 -rpath $(libdir) ++ ++../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot ++ cd ../po && $(MAKE) cat-id-tbl.$lo ++ ++check: all ++ ++# This installation goal is only used in GNU gettext. Packages which ++# only use the library should use install instead. ++ ++# We must not install the libintl.h/libintl.a files if we are on a ++# system which has the gettext() function in its C library or in a ++# separate library or use the catgets interface. A special case is ++# where configure found a previously installed GNU gettext library. ++# If you want to use the one which comes with this version of the ++# package, you have to use `configure --with-included-gettext'. ++install: install-exec install-data ++install-exec: all ++ if test "$(PACKAGE)" = "gettext" \ ++ && test '' = '$(GETTOBJS)'; then \ ++ if test -r $(MKINSTALLDIRS); then \ ++ $(MKINSTALLDIRS) $(libdir) $(includedir); \ ++ else \ ++ $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ ++ fi; \ ++ $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ ++ $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ ++ else \ ++ : ; \ ++ fi ++install-data: all ++ if test "$(PACKAGE)" = "gettext"; then \ ++ if test -r $(MKINSTALLDIRS); then \ ++ $(MKINSTALLDIRS) $(gettextsrcdir); \ ++ else \ ++ $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ ++ fi; \ ++ $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ ++ dists="$(DISTFILES.common)"; \ ++ for file in $$dists; do \ ++ $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ ++ done; \ ++ else \ ++ : ; \ ++ fi ++ ++# Define this as empty until I found a useful application. ++installcheck: ++ ++uninstall: ++ dists="$(DISTFILES.common)"; \ ++ for file in $$dists; do \ ++ rm -f $(gettextsrcdir)/$$file; \ ++ done ++ ++info dvi: ++ ++$(OBJECTS): ../gsm_config.h libgettext.h ++bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h ++dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h ++ ++tags: TAGS ++ ++TAGS: $(HEADERS) $(SOURCES) ++ here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) ++ ++id: ID ++ ++ID: $(HEADERS) $(SOURCES) ++ here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) ++ ++ ++mostlyclean: ++ rm -f *.a *.o *.lo core core.* ++ ++clean: mostlyclean ++ ++distclean: clean ++ rm -f Makefile ID TAGS po2msg.sed po2tbl.sed ++ ++maintainer-clean: distclean ++ @echo "This command is intended for maintainers to use;" ++ @echo "it deletes files that may require special tools to rebuild." ++ ++ ++# GNU gettext needs not contain the file `VERSION' but contains some ++# other files which should not be distributed in other packages. ++distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) ++dist distdir: Makefile $(DISTFILES) ++ if test "$(PACKAGE)" = gettext; then \ ++ additional="$(DISTFILES.gettext)"; \ ++ else \ ++ additional="$(DISTFILES.normal)"; \ ++ fi; \ ++ for file in $(DISTFILES.common) $$additional; do \ ++ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ ++ || cp -p $(srcdir)/$$file $(distdir); \ ++ done ++ ++dist-libc: ++ tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc ++ ++Makefile: Makefile.in ../config.status ++ cd .. \ ++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ++ ++# The dependency for intlh.inst is different in gettext and all other ++# packages. Because we cannot you GNU make features we have to solve ++# the problem while rewriting Makefile.in. ++@GT_YES@intlh.inst: intlh.inst.in ../config.status ++@GT_YES@ cd .. \ ++@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ ++@GT_YES@ $(SHELL) ./config.status ++@GT_NO@.PHONY: intlh.inst ++@GT_NO@intlh.inst: ++ ++# Tell versions [3.59,3.63) of GNU make not to export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +--- gsmlib-1.10.orig/po/cat-id-tbl.c ++++ gsmlib-1.10/po/cat-id-tbl.c +@@ -1,435 +0,0 @@ +-/* Automatically generated by po2tbl.sed from gsmlib.pot. */ +- +-#if HAVE_CONFIG_H +-# include +-#endif +- +-#include "libgettext.h" +- +-const struct _msg_ent _msg_tbl[] = { +- {"", 1}, +- {"could not execute '%s'", 2}, +- {"error writing to '%s'", 3}, +- {"error when calling opendir('%s')(errno: %d/%s)", 4}, +- {"count not open SMS spool file %s", 5}, +- {": version %s [compiled %s]", 6}, +- {"\ +-: [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n\ +- [-s spool dir][-t][-v]{sms_type}", 7}, +- {"\ +- -a, --action the action to execute when an SMS arrives\n\ +- (SMS is send to stdin of action)", 8}, +- {" -b, --baudrate baudrate to use for device (default: 38400)", 9}, +- {" -c, --concatenate start ID for concatenated SMS messages", 10}, +- {" -C, --sca SMS service centre address", 11}, +- {" -d, --device sets the device to connect to", 12}, +- {" -D, --direct enable direct routing of SMSs", 13}, +- {" -f, --flush flush SMS from store", 14}, +- {" -h, --help prints this message", 15}, +- {" -I, --init device AT init sequence", 16}, +- {" -r, --requeststat request SMS status report", 17}, +- {" -s, --spool spool directory for outgoing SMS", 18}, +- {"\ +- -t, --store name of SMS store to use for flush\n\ +- and/or temporary SMS storage", 19}, +- {" -v, --version prints version and exits", 20}, +- {" -X, --xonxoff switch on software handshake", 21}, +- {" sms_type may be any combination of", 22}, +- {" sms, no_sms controls reception of normal SMS", 23}, +- {" cb, no_cb controls reception of cell broadcast messages", 24}, +- {" stat, no_stat controls reception of status reports", 25}, +- {" default is \"sms cb stat\"", 26}, +- {"If no action is given, the SMS is printed to stdout", 27}, +- {"unknown option", 28}, +- {"error when calling sigaction() (errno: %d/%s)", 29}, +- {"store name must be given for flush option", 30}, +- {"Type of message: ", 31}, +- {"SMS message\n", 32}, +- {"submit report message\n", 33}, +- {"status report message\n", 34}, +- {"cell broadcast message\n", 35}, +- {"[ERROR]: ", 36}, +- {"(try setting sms_type, please refer to gsmsmsd manpage)", 37}, +- {"\ +-: [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n\ +- [-t][-v][-X] phonenumber [text]", 38}, +- {" -c, --concatenate ID for concatenated SMS messages", 39}, +- {" -d, --device sets the destination device to connect to", 40}, +- {"\ +- -t, --test convert text to GSM alphabet and vice\n\ +- versa, no SMS message is sent", 41}, +- {" phonenumber recipient's phone number", 42}, +- {"\ +- text optional text of the SMS message\n\ +- if omitted: read from stdin", 43}, +- {"phone number and text missing", 44}, +- {"more than two parameters given", 45}, +- {"text is larger than 160 characters", 46}, +- {"inserting '%s' tel# %s", 47}, +- {" (index #%d)", 48}, +- {"updating '%s' tel# %s to new tel# %s", 49}, +- {"updating '%s' tel# %s to new tel# %s(index %d)", 50}, +- {"deleting '%s' tel# %s", 51}, +- {"\ +-: [-b baudrate][-c][-d device or file][-h][-I init string]\n\ +- [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]", 52}, +- {" -c, --copy copy source entries to destination", 53}, +- {"\ +- -d, --destination sets the destination device to connect \n\ +- to, or the file to write", 54}, +- {" -D, --destination-backend sets the destination backend", 55}, +- {" -i, --index takes index positions into account", 56}, +- {" -p, --phonebook name of phonebook to use", 57}, +- {"\ +- -s, --source sets the source device to connect to,\n\ +- or the file to read", 58}, +- {"\ +- -t, --charset sets the character set to use for\n\ +- phonebook entries", 59}, +- {" -S, --source-backend sets the source backend", 60}, +- {" -V, --verbose print detailed progress messages", 61}, +- {"\ +- -y, --synchronize synchronize destination with source\n\ +- entries (destination is overwritten)\n\ +- (see gsmpb(1) for details)", 62}, +- {"both source and destination must be given", 63}, +- {"phonebook name must be given", 64}, +- {"\ +-text '%s' is too large to fit into destination (maximum size %d characters)", 65}, +- {"\ +-phone number '%s' is too large to fit into destination (maximum size %d \ +-characters)", 66}, +- {"active ", 67}, +- {"inactive ", 68}, +- {"number: ", 69}, +- {" subaddr: ", 70}, +- {" time: ", 71}, +- {" Manufacturer: ", 72}, +- {" Model: ", 73}, +- {" Revision: ", 74}, +- {" Serial Number: ", 75}, +- {" Functionality Level: ", 76}, +- {"unsupported", 77}, +- {"> Status: ", 78}, +- {"unknown", 79}, +- {"current", 80}, +- {"available", 81}, +- {"forbidden", 82}, +- {" Long name: '", 83}, +- {" Short name: '", 84}, +- {" Numeric name: ", 85}, +- {" Mode: ", 86}, +- {"automatic", 87}, +- {"manual", 88}, +- {"deregister", 89}, +- {"manual/automatic", 90}, +- {" Voice", 91}, +- {" unknown", 92}, +- {" Data", 93}, +- {" Fax", 94}, +- {"on", 95}, +- {"off", 96}, +- {"UnconditionalReason", 97}, +- {"MobileBusyReason", 98}, +- {"NoReplyReason", 99}, +- {"NotReachableReason", 100}, +- {"0 ME is powered by the battery", 101}, +- {"1 ME has a battery connected, but is not powered by it", 102}, +- {"2 ME does not have a battery connected", 103}, +- {"3 Recognized power fault, calls inhibited", 104}, +- {"unknown facility class parameter '%c'", 105}, +- {"not enough parameters, minimum number of parameters is %d", 106}, +- {"too many parameters, maximum number of parameters is %d", 107}, +- {"\ +-: [-b baudrate][-d device][-h][-I init string][-o operation]\n\ +- [-v][-X]{parameters}", 108}, +- {"\ +- -o, --operation operation to perform on the mobile \n\ +- phone with the specified parameters", 109}, +- {"\ +- parameters parameters to use for the operation\n\ +- (if an operation is given) or\n\ +- a specification which kind of\n\ +- information to read from the mobile phone", 110}, +- {"\ +-Refer to gsmctl(1) for details on the available parameters and operations.", 111}, +- {"unknown information parameter '%s'", 112}, +- {"unknown opmode parameter '%s'", 113}, +- {"unknown forward reason parameter '%s'", 114}, +- {"unknown forward mode parameter '%s'", 115}, +- {"unknown operation '%s'", 116}, +- {"inserting entry #%d from source into destination", 117}, +- {"incompatible options '%c' and '%c'", 118}, +- {"\ +-: [-a][-b baudrate][-c][-C sca][-d device or file]\n\ +- [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n\ +- [-v][-V][-x][-X]{indices}|[phonenumber text]", 119}, +- {"\ +- -a, --add add new SMS submit message\n\ +- (phonenumber and text) to destination", 120}, +- {"\ +- -c, --copy copy source entries to destination\n\ +- (if indices are given, copy only these entries)", 121}, +- {"\ +- -d, --destination sets the destination device to\n\ +- connect to, or the file to write to", 122}, +- {"\ +- -k, --backup backup new entries to destination\n\ +- (if indices are given, copy only these entries)", 123}, +- {" -l, --list list source to stdout", 124}, +- {" -t, --store name of SMS store to use", 125}, +- {" -x, --delete delete entries denoted by indices", 126}, +- {"no operation option given", 127}, +- {"both source and destination required", 128}, +- {"destination must not be given", 129}, +- {"source required", 130}, +- {"source must not be given", 131}, +- {"destination required", 132}, +- {"expected number, got '%s'", 133}, +- {"not enough parameters given", 134}, +- {"unexpected parameters", 135}, +- {"store name must be given", 136}, +- {"no index '%s' in source", 137}, +- {"index #%d", 138}, +- {"inserting new entry into destination", 139}, +- {"deleting entry #%d from destination", 140}, +- {"no index '%s' in destination", 141}, +- {"unspecified ME/TA error", 142}, +- {"ME/TA error '", 143}, +- {"(code %s)", 144}, +- {"ME/TA error '' (code not known)", 145}, +- {"unexpected response '%s' when sending 'AT%s'", 146}, +- {"unexpected character in PDU handshake", 147}, +- {"phone failure", 148}, +- {"no connection to phone", 149}, +- {"phone adaptor link reserved", 150}, +- {"operation not allowed", 151}, +- {"operation not supported", 152}, +- {"ph SIM PIN required", 153}, +- {"SIM not inserted", 154}, +- {"SIM PIN required", 155}, +- {"SIM PUK required", 156}, +- {"SIM failure", 157}, +- {"SIM busy", 158}, +- {"SIM wrong", 159}, +- {"incorrect password", 160}, +- {"SIM PIN2 required", 161}, +- {"SIM PUK2 required", 162}, +- {"memory full", 163}, +- {"invalid index", 164}, +- {"not found", 165}, +- {"memory failure", 166}, +- {"text string too long", 167}, +- {"invalid characters in text string", 168}, +- {"dial string too long", 169}, +- {"invalid characters in dial string", 170}, +- {"no network service", 171}, +- {"network timeout", 172}, +- {"invalid ME error %d", 173}, +- {"Unassigned (unallocated) number", 174}, +- {"Operator determined barring", 175}, +- {"Call barred", 176}, +- {"Network failure", 177}, +- {"Short message transfer rejected", 178}, +- {"Congestion", 179}, +- {"Destination out of service", 180}, +- {"Unidentified subscriber", 181}, +- {"Facility rejected", 182}, +- {"Unknown subscriber", 183}, +- {"Network out of order", 184}, +- {"Temporary failure", 185}, +- {"Resources unavailable, unspecified", 186}, +- {"Requested facility not subscribed", 187}, +- {"Requested facility not implemented", 188}, +- {"Invalid Transaction Identifier", 189}, +- {"Semantically incorrect message", 190}, +- {"Invalid mandatory information", 191}, +- {"Message type non-existent or not implemented", 192}, +- {"Message not compatible with short message protocol state", 193}, +- {"Information element non-existent or not implemented", 194}, +- {"Protocol error, unspecified", 195}, +- {"Interworking, unspecified", 196}, +- {"Telematic interworking not supported", 197}, +- {"Short message Type 0 not supported", 198}, +- {"Cannot replace short message", 199}, +- {"Unspecified TP-PID error", 200}, +- {"Data coding scheme (alphabet) not supported", 201}, +- {"Message class not supported", 202}, +- {"Unspecifiec TP-DCS error", 203}, +- {"Command cannot be actioned", 204}, +- {"Command unsupported", 205}, +- {"Unspecified TP-Command error", 206}, +- {"TPDU not supported", 207}, +- {"SC busy", 208}, +- {"No SC subscription", 209}, +- {"SC system failure", 210}, +- {"Invalid SME address", 211}, +- {"Destination SME barred", 212}, +- {"SM Rejected-Duplicated SM", 213}, +- {"SIM SMS storage full", 214}, +- {"No SMS storage capability in SIM", 215}, +- {"Error in MS", 216}, +- {"Memory Capacity Exceed", 217}, +- {"Unspecified error cause", 218}, +- {"ME failure", 219}, +- {"SMS service of ME reserved", 220}, +- {"invalid PDU mode parameter", 221}, +- {"invalid text mode parameter", 222}, +- {"PH-SIM PIN required", 223}, +- {"invalid memory index", 224}, +- {"SMSC address unknown", 225}, +- {"no +CNMA acknowledgement expected", 226}, +- {"unknown error", 227}, +- {"invalid SMS error %d", 228}, +- {"Short message received by the SME", 229}, +- {"\ +-Short message forwarded by the SC to the SME but the SC is unable to confirm \ +-delivery", 230}, +- {"Short message replaced by the SC", 231}, +- {"reserved", 232}, +- {"SME busy", 233}, +- {"No response from SME", 234}, +- {"Service rejected", 235}, +- {"Quality of service not available", 236}, +- {"Error in SME", 237}, +- {" (Temporary error, SC is not making any more transfer attempts)", 238}, +- {" (Temporary error, SC still trying to transfer SM)", 239}, +- {"Remote Procedure Error", 240}, +- {"Incompatible destination", 241}, +- {"Connection rejected by SME", 242}, +- {"Not obtainable", 243}, +- {"No interworking available", 244}, +- {"SM validity period expired", 245}, +- {"SM deleted by originating SME", 246}, +- {"SM deleted by SC administration", 247}, +- {"SM does not exit", 248}, +- {" (Permanent Error, SC is not making any more transfer attempts)", 249}, +- {"unexpected number format %d", 250}, +- {"unexpected unsolicited event '%s'", 251}, +- {"unable to set operator", 252}, +- {"call forward time must be in the range 0..30", 253}, +- {"Functionality Level commands not supported by ME", 254}, +- {"Requested Functionality Level out of range", 255}, +- {"unsupported alphabet for SMS", 256}, +- {"SMS text is larger than allowed", 257}, +- {"not more than 255 concatenated SMSs allowed", 258}, +- {"only serviceLevel 0 or 1 supported", 259}, +- {"cannot route SMS messages to TE", 260}, +- {"cannot route cell broadcast messages to TE", 261}, +- {"cannot route status reports messages to TE", 262}, +- {"cannot route status report messages to TE", 263}, +- {"expected parameter", 264}, +- {"expected '\"'", 265}, +- {"expected number", 266}, +- {"unexpected end of string '%s'", 267}, +- {" (at position %d of string '%s')", 268}, +- {"expected '%c'", 269}, +- {"expected ')' or ','", 270}, +- {"expected ')', ',' or '-'", 271}, +- {"range of the form a-b-c not allowed", 272}, +- {"range of the form a- no allowed", 273}, +- {"expected comma", 274}, +- {"expected end of line", 275}, +- {"\ +-length of text '%s' exceeds maximum text length (%d characters) of phonebook \ +-'%s'", 276}, +- {"\ +-length of telephone number '%s' exceeds maximum telephone number length (%d \ +-characters) of phonebook '%s'", 277}, +- {"phonebook full", 278}, +- {"attempt to overwrite phonebook entry", 279}, +- {"SIM card changed while accessing phonebook", 280}, +- {"unhandled SMS TPDU type", 281}, +- {"can only send SMS-SUBMIT and SMS-COMMAND TPDUs", 282}, +- {"no device given for sending SMS", 283}, +- {"Message type: SMS-DELIVER", 284}, +- {"SC address: '", 285}, +- {"More messages to send: ", 286}, +- {"Reply path: ", 287}, +- {"User data header indicator: ", 288}, +- {"Status report indication: ", 289}, +- {"Originating address: '", 290}, +- {"Protocol identifier: 0x", 291}, +- {"Data coding scheme: ", 292}, +- {"SC timestamp: ", 293}, +- {"User data length: ", 294}, +- {"User data header: 0x", 295}, +- {"User data: '", 296}, +- {"Message type: SMS-SUBMIT", 297}, +- {"Reject duplicates: ", 298}, +- {"Validity period format: ", 299}, +- {"not present", 300}, +- {"relative", 301}, +- {"absolute", 302}, +- {"Status report request: ", 303}, +- {"Message reference: ", 304}, +- {"Destination address: '", 305}, +- {"Validity period: ", 306}, +- {"Message type: SMS-STATUS-REPORT", 307}, +- {"Status report qualifier: ", 308}, +- {"Recipient address: '", 309}, +- {"Discharge time: ", 310}, +- {"Status: 0x", 311}, +- {"Message type: SMS-COMMAND", 312}, +- {"Command type: 0x", 313}, +- {"Message number: ", 314}, +- {"Command data length: ", 315}, +- {"Command data: '", 316}, +- {"Message type: SMS-DELIVER-REPORT", 317}, +- {"Protocol identifier present: ", 318}, +- {"Data coding scheme present: ", 319}, +- {"User data length present: ", 320}, +- {"Message type: SMS-SUBMIT-REPORT", 321}, +- {" minutes", 322}, +- {" days", 323}, +- {" weeks", 324}, +- {"compressed ", 325}, +- {"voicemail message waiting", 326}, +- {"fax message waiting", 327}, +- {"electronic mail message waiting", 328}, +- {"other message waiting", 329}, +- {"default alphabet", 330}, +- {"8-bit alphabet", 331}, +- {"16-bit alphabet", 332}, +- {"reserved alphabet", 333}, +- {"bad hexadecimal PDU format", 334}, +- {"premature end of PDU", 335}, +- {"unknown time period format", 336}, +- {"interrupted when reading from TA", 337}, +- {"reading from TA", 338}, +- {"timeout when reading from TA", 339}, +- {"opening device '%s'", 340}, +- {"getting file status flags failed", 341}, +- {"switching of non-blocking mode failed", 342}, +- {"clearing DTR failed", 343}, +- {"setting DTR failed", 344}, +- {"tcgetattr device '%s'", 345}, +- {"tcsetattr device '%s'", 346}, +- {"reset modem failed '%s'", 347}, +- {"interrupted when writing to TA", 348}, +- {"writing to TA", 349}, +- {"timeout when writing to TA", 350}, +- {"unknown baudrate '%s'", 351}, +- {"error when calling stat('%s') (errno: %d/%s)", 352}, +- {"file '%s' is neither file nor character device", 353}, +- {"maxmimum number of symbolic links exceeded", 354}, +- {"error renaming '%s' to '%s'", 355}, +- {"text '%s' contains illegal character '\"'", 356}, +- {"illegal character in telephone number '%s'", 357}, +- {"error reading from file '%s", 358}, +- {"entry '%s' lacks index", 359}, +- {"line '%s' has invalid format", 360}, +- {"error opening file '%s' for writing", 361}, +- {"", 362}, +- {"error writing to file '%s'", 363}, +- {"attempt to change phonebook read from ", 364}, +- {"cannot open file '%s'", 365}, +- {"", 366}, +- {"indices must be unique in phonebook", 367}, +- {"error reading from file '%s'", 368}, +- {"file '%s' has wrong version", 369}, +- {"corrupt SMS store file '%s'", 370}, +- {"attempt to change SMS store read from ", 371}, +-}; +- +-int _msg_tbl_length = 371; +--- gsmlib-1.10.orig/po/de.po ++++ gsmlib-1.10/po/de.po +@@ -233,7 +233,7 @@ + + #: apps/gsmsendsms.cc:171 + msgid " phonenumber recipient's phone number" +-msgstr " Telefonummer die Telefonnumer des Empfängers" ++msgstr " Telefonummer die Telefonnummer des Empfängers" + + #: apps/gsmsendsms.cc:172 + msgid "" +@@ -295,7 +295,7 @@ + + #: apps/gsmpb.cc:325 + msgid " -c, --copy copy source entries to destination" +-msgstr " -c, --copy kopiere Quell-Enträge zum Zielgerät/-datei" ++msgstr " -c, --copy kopiere Quell-Einträge zum Zielgerät/-datei" + + #: apps/gsmpb.cc:327 + msgid "" +@@ -626,14 +626,14 @@ + msgstr "" + ": [-a][-b Baud-Rate][-c][-C sca][-d Gerät oder Datei]\n" + " [-h][-I Init String][-k][-l][-s Gerät oder Datei][-t SMS Speichername]\n" +-" [-v][-V][-x][-X]{Indices}|[Telefonnumer Text]" ++" [-v][-V][-x][-X]{Indices}|[Telefonnummer Text]" + + #: apps/gsmsmsstore.cc:191 + msgid "" + " -a, --add add new SMS submit message\n" + " (phonenumber and text) to destination" + msgstr "" +-" -a, --add füge neue SMS-Submit-Nachricht (Telefonnumer und\n" ++" -a, --add füge neue SMS-Submit-Nachricht (Telefonnummer und\n" + " Text) in das Zielgerät/-datei ein" + + #: apps/gsmsmsstore.cc:197 +@@ -1437,7 +1437,7 @@ + + #: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 + msgid "Destination address: '" +-msgstr "Zieladdresse: '" ++msgstr "Zieladresse: '" + + #: gsmlib/gsm_sms.cc:455 + msgid "Validity period: " +--- gsmlib-1.10.orig/po/gsmlib.pot ++++ gsmlib-1.10/po/gsmlib.pot +@@ -7,7 +7,8 @@ + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" +-"POT-Creation-Date: 2002-10-22 22:48+0200\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2008-10-06 14:36+1100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -15,168 +16,225 @@ + "Content-Type: text/plain; charset=CHARSET\n" + "Content-Transfer-Encoding: 8bit\n" + +-#: apps/gsmsmsd.cc:164 ++#: apps/gsmsmsd.cc:172 + #, c-format + msgid "could not execute '%s'" + msgstr "" + +-#: apps/gsmsmsd.cc:168 ++#: apps/gsmsmsd.cc:176 + #, c-format + msgid "error writing to '%s'" + msgstr "" + +-#: apps/gsmsmsd.cc:196 ++#: apps/gsmsmsd.cc:197 apps/gsmsmsd.cc:198 apps/gsmsmsd.cc:199 ++#, c-format ++msgid "%d" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:216 + #, c-format + msgid "error when calling opendir('%s')(errno: %d/%s)" + msgstr "" + +-#: apps/gsmsmsd.cc:225 ++#: apps/gsmsmsd.cc:260 + #, c-format + msgid "count not open SMS spool file %s" + msgstr "" + +-#: apps/gsmsmsd.cc:341 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 ++#: apps/gsmsmsd.cc:439 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 + #: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 + #, c-format + msgid ": version %s [compiled %s]" + msgstr "" + +-#: apps/gsmsmsd.cc:346 ++#: apps/gsmsmsd.cc:444 + msgid "" + ": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" + " [-s spool dir][-t][-v]{sms_type}" + msgstr "" + +-#: apps/gsmsmsd.cc:350 ++#: apps/gsmsmsd.cc:448 + msgid "" + " -a, --action the action to execute when an SMS arrives\n" + " (SMS is send to stdin of action)" + msgstr "" + +-#: apps/gsmsmsd.cc:354 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 ++#: apps/gsmsmsd.cc:452 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 + #: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 + msgid " -b, --baudrate baudrate to use for device (default: 38400)" + msgstr "" + +-#: apps/gsmsmsd.cc:357 ++#: apps/gsmsmsd.cc:455 + msgid " -c, --concatenate start ID for concatenated SMS messages" + msgstr "" + +-#: apps/gsmsmsd.cc:359 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 ++#: apps/gsmsmsd.cc:457 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 + msgid " -C, --sca SMS service centre address" + msgstr "" + +-#: apps/gsmsmsd.cc:360 ++#: apps/gsmsmsd.cc:458 + msgid " -d, --device sets the device to connect to" + msgstr "" + +-#: apps/gsmsmsd.cc:361 ++#: apps/gsmsmsd.cc:459 + msgid " -D, --direct enable direct routing of SMSs" + msgstr "" + +-#: apps/gsmsmsd.cc:362 ++#: apps/gsmsmsd.cc:460 + msgid " -f, --flush flush SMS from store" + msgstr "" + +-#: apps/gsmsmsd.cc:363 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 ++#: apps/gsmsmsd.cc:461 ++msgid " -F, --failed directory to move failed SMS to," ++msgstr "" ++ ++#: apps/gsmsmsd.cc:462 apps/gsmsmsd.cc:475 ++msgid " if unset, the SMS will be deleted" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:463 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 + #: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 + msgid " -h, --help prints this message" + msgstr "" + +-#: apps/gsmsmsd.cc:364 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 ++#: apps/gsmsmsd.cc:464 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 + #: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 + msgid " -I, --init device AT init sequence" + msgstr "" + +-#: apps/gsmsmsd.cc:365 apps/gsmsendsms.cc:163 ++#: apps/gsmsmsd.cc:466 ++msgid " -L, --syslog log errors and information to syslog" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:469 ++msgid " -P, --priorities number of priority levels to use," ++msgstr "" ++ ++#: apps/gsmsmsd.cc:470 ++msgid " (default: none)" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:471 apps/gsmsendsms.cc:163 + msgid " -r, --requeststat request SMS status report" + msgstr "" + +-#: apps/gsmsmsd.cc:366 ++#: apps/gsmsmsd.cc:472 + msgid " -s, --spool spool directory for outgoing SMS" + msgstr "" + +-#: apps/gsmsmsd.cc:368 ++#: apps/gsmsmsd.cc:474 ++msgid " -S, --sent directory to move sent SMS to," ++msgstr "" ++ ++#: apps/gsmsmsd.cc:476 + msgid "" + " -t, --store name of SMS store to use for flush\n" + " and/or temporary SMS storage" + msgstr "" + +-#: apps/gsmsmsd.cc:371 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 ++#: apps/gsmsmsd.cc:479 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 + #: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 + msgid " -v, --version prints version and exits" + msgstr "" + +-#: apps/gsmsmsd.cc:372 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 ++#: apps/gsmsmsd.cc:480 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 + #: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 + msgid " -X, --xonxoff switch on software handshake" + msgstr "" + +-#: apps/gsmsmsd.cc:374 ++#: apps/gsmsmsd.cc:482 + msgid " sms_type may be any combination of" + msgstr "" + +-#: apps/gsmsmsd.cc:375 ++#: apps/gsmsmsd.cc:483 + msgid " sms, no_sms controls reception of normal SMS" + msgstr "" + +-#: apps/gsmsmsd.cc:377 ++#: apps/gsmsmsd.cc:485 + msgid " cb, no_cb controls reception of cell broadcast messages" + msgstr "" + +-#: apps/gsmsmsd.cc:379 ++#: apps/gsmsmsd.cc:487 + msgid " stat, no_stat controls reception of status reports" + msgstr "" + +-#: apps/gsmsmsd.cc:381 ++#: apps/gsmsmsd.cc:489 + msgid " default is \"sms cb stat\"" + msgstr "" + +-#: apps/gsmsmsd.cc:382 ++#: apps/gsmsmsd.cc:490 + msgid "If no action is given, the SMS is printed to stdout" + msgstr "" + +-#: apps/gsmsmsd.cc:387 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 ++#: apps/gsmsmsd.cc:492 ++msgid "If -P is given, it activates the priority system and sets the" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:493 ++msgid "number or levels to use. For every level, there must be directories" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:494 ++msgid "named +." ++msgstr "" ++ ++#: apps/gsmsmsd.cc:495 ++msgid "For example \"-P 2 -s queue -S send -F failed\" needs the following" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:496 ++msgid "directories: queue1/ queue2/ send1/ send2/ failed1/ failed2/" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:497 ++msgid "Before sending one SMS from queue2, all pending SMS from queue1" ++msgstr "" ++ ++#: apps/gsmsmsd.cc:498 ++msgid "will be sent." ++msgstr "" ++ ++#: apps/gsmsmsd.cc:503 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 + #: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 + msgid "unknown option" + msgstr "" + +-#: apps/gsmsmsd.cc:426 ++#: apps/gsmsmsd.cc:542 + #, c-format + msgid "error when calling sigaction() (errno: %d/%s)" + msgstr "" + +-#: apps/gsmsmsd.cc:446 ++#: apps/gsmsmsd.cc:562 + msgid "store name must be given for flush option" + msgstr "" + + #. process the new message +-#: apps/gsmsmsd.cc:454 apps/gsmsmsd.cc:522 ++#: apps/gsmsmsd.cc:570 apps/gsmsmsd.cc:638 + msgid "Type of message: " + msgstr "" + +-#: apps/gsmsmsd.cc:458 apps/gsmsmsd.cc:526 ++#: apps/gsmsmsd.cc:574 apps/gsmsmsd.cc:642 + msgid "SMS message\n" + msgstr "" + +-#: apps/gsmsmsd.cc:461 ++#: apps/gsmsmsd.cc:577 + msgid "submit report message\n" + msgstr "" + +-#: apps/gsmsmsd.cc:464 apps/gsmsmsd.cc:532 ++#: apps/gsmsmsd.cc:580 apps/gsmsmsd.cc:648 + msgid "status report message\n" + msgstr "" + +-#: apps/gsmsmsd.cc:529 ++#: apps/gsmsmsd.cc:645 + msgid "cell broadcast message\n" + msgstr "" + +-#: apps/gsmsmsd.cc:585 apps/gsmsmsd.cc:587 apps/gsmsendsms.cc:253 +-#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:435 ++#: apps/gsmsmsd.cc:701 apps/gsmsmsd.cc:703 apps/gsmsendsms.cc:253 ++#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:430 + msgid "[ERROR]: " + msgstr "" + +-#: apps/gsmsmsd.cc:588 ++#: apps/gsmsmsd.cc:704 + msgid "(try setting sms_type, please refer to gsmsmsd manpage)" + msgstr "" + +@@ -372,7 +430,7 @@ + msgstr "" + + #: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 +-#: gsmlib/gsm_sms_codec.cc:204 ++#: gsmlib/gsm_sms_codec.cc:205 + msgid "unknown" + msgstr "" + +@@ -541,7 +599,7 @@ + msgid "unknown operation '%s'" + msgstr "" + +-#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:363 apps/gsmsmsstore.cc:380 ++#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:358 apps/gsmsmsstore.cc:375 + #, c-format + msgid "inserting entry #%d from source into destination" + msgstr "" +@@ -618,7 +676,7 @@ + msgid "destination required" + msgstr "" + +-#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:285 ++#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:286 + #, c-format + msgid "expected number, got '%s'" + msgstr "" +@@ -631,30 +689,30 @@ + msgid "unexpected parameters" + msgstr "" + +-#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:317 ++#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:312 + msgid "store name must be given" + msgstr "" + +-#: apps/gsmsmsstore.cc:344 apps/gsmsmsstore.cc:377 ++#: apps/gsmsmsstore.cc:339 apps/gsmsmsstore.cc:372 + #, c-format + msgid "no index '%s' in source" + msgstr "" + +-#: apps/gsmsmsstore.cc:392 ++#: apps/gsmsmsstore.cc:387 + #, c-format + msgid "index #%d" + msgstr "" + +-#: apps/gsmsmsstore.cc:406 ++#: apps/gsmsmsstore.cc:401 + msgid "inserting new entry into destination" + msgstr "" + +-#: apps/gsmsmsstore.cc:421 ++#: apps/gsmsmsstore.cc:416 + #, c-format + msgid "deleting entry #%d from destination" + msgstr "" + +-#: apps/gsmsmsstore.cc:426 ++#: apps/gsmsmsstore.cc:421 + #, c-format + msgid "no index '%s' in destination" + msgstr "" +@@ -1107,52 +1165,52 @@ + msgid "unexpected unsolicited event '%s'" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:536 ++#: gsmlib/gsm_me_ta.cc:538 + msgid "unable to set operator" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:663 ++#: gsmlib/gsm_me_ta.cc:665 + msgid "call forward time must be in the range 0..30" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:811 ++#: gsmlib/gsm_me_ta.cc:813 + msgid "Functionality Level commands not supported by ME" + msgstr "" + + #. If the number was just out of range, we get here. +-#: gsmlib/gsm_me_ta.cc:830 ++#: gsmlib/gsm_me_ta.cc:832 + msgid "Requested Functionality Level out of range" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:941 ++#: gsmlib/gsm_me_ta.cc:943 + msgid "unsupported alphabet for SMS" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:950 ++#: gsmlib/gsm_me_ta.cc:952 + msgid "SMS text is larger than allowed" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:962 ++#: gsmlib/gsm_me_ta.cc:964 + msgid "not more than 255 concatenated SMSs allowed" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:995 ++#: gsmlib/gsm_me_ta.cc:997 + msgid "only serviceLevel 0 or 1 supported" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:1108 gsmlib/gsm_me_ta.cc:1150 ++#: gsmlib/gsm_me_ta.cc:1110 gsmlib/gsm_me_ta.cc:1152 + msgid "cannot route SMS messages to TE" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:1122 gsmlib/gsm_me_ta.cc:1164 ++#: gsmlib/gsm_me_ta.cc:1124 gsmlib/gsm_me_ta.cc:1166 + msgid "cannot route cell broadcast messages to TE" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:1134 ++#: gsmlib/gsm_me_ta.cc:1136 + msgid "cannot route status reports messages to TE" + msgstr "" + +-#: gsmlib/gsm_me_ta.cc:1178 ++#: gsmlib/gsm_me_ta.cc:1180 + msgid "cannot route status report messages to TE" + msgstr "" + +@@ -1314,7 +1372,7 @@ + msgid "Validity period format: " + msgstr "" + +-#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:183 ++#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:184 + msgid "not present" + msgstr "" + +@@ -1402,209 +1460,212 @@ + msgid "Message type: SMS-SUBMIT-REPORT" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:188 gsmlib/gsm_sms_codec.cc:190 ++#: gsmlib/gsm_sms_codec.cc:189 gsmlib/gsm_sms_codec.cc:191 + msgid " minutes" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:192 ++#: gsmlib/gsm_sms_codec.cc:193 + msgid " days" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:194 ++#: gsmlib/gsm_sms_codec.cc:195 + msgid " weeks" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:213 ++#: gsmlib/gsm_sms_codec.cc:214 + msgid "compressed " + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:218 ++#: gsmlib/gsm_sms_codec.cc:219 + msgid "voicemail message waiting" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:221 ++#: gsmlib/gsm_sms_codec.cc:222 + msgid "fax message waiting" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:224 ++#: gsmlib/gsm_sms_codec.cc:225 + msgid "electronic mail message waiting" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:227 ++#: gsmlib/gsm_sms_codec.cc:228 + msgid "other message waiting" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:234 ++#: gsmlib/gsm_sms_codec.cc:235 + msgid "default alphabet" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:237 ++#: gsmlib/gsm_sms_codec.cc:238 + msgid "8-bit alphabet" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:240 ++#: gsmlib/gsm_sms_codec.cc:241 + msgid "16-bit alphabet" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:243 ++#: gsmlib/gsm_sms_codec.cc:244 + msgid "reserved alphabet" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:256 ++#: gsmlib/gsm_sms_codec.cc:257 + msgid "bad hexadecimal PDU format" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:285 gsmlib/gsm_sms_codec.cc:295 +-#: gsmlib/gsm_sms_codec.cc:310 gsmlib/gsm_sms_codec.cc:318 +-#: gsmlib/gsm_sms_codec.cc:339 gsmlib/gsm_sms_codec.cc:347 +-#: gsmlib/gsm_sms_codec.cc:368 gsmlib/gsm_sms_codec.cc:382 ++#: gsmlib/gsm_sms_codec.cc:286 gsmlib/gsm_sms_codec.cc:296 ++#: gsmlib/gsm_sms_codec.cc:311 gsmlib/gsm_sms_codec.cc:319 ++#: gsmlib/gsm_sms_codec.cc:340 gsmlib/gsm_sms_codec.cc:348 ++#: gsmlib/gsm_sms_codec.cc:369 gsmlib/gsm_sms_codec.cc:383 + msgid "premature end of PDU" + msgstr "" + +-#: gsmlib/gsm_sms_codec.cc:473 ++#: gsmlib/gsm_sms_codec.cc:474 + msgid "unknown time period format" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:119 ++#: gsmlib/gsm_unix_serial.cc:121 + msgid "interrupted when reading from TA" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:144 ++#: gsmlib/gsm_unix_serial.cc:136 ++msgid "end of file when reading from TA" ++msgstr "" ++ ++#: gsmlib/gsm_unix_serial.cc:146 + msgid "reading from TA" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:149 ++#: gsmlib/gsm_unix_serial.cc:151 + msgid "timeout when reading from TA" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:176 ++#: gsmlib/gsm_unix_serial.cc:178 + #, c-format + msgid "opening device '%s'" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:182 ++#: gsmlib/gsm_unix_serial.cc:185 + msgid "getting file status flags failed" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:185 ++#: gsmlib/gsm_unix_serial.cc:190 + msgid "switching of non-blocking mode failed" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:198 ++#: gsmlib/gsm_unix_serial.cc:205 + msgid "clearing DTR failed" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:202 ++#: gsmlib/gsm_unix_serial.cc:211 + msgid "setting DTR failed" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:206 ++#: gsmlib/gsm_unix_serial.cc:216 + #, c-format + msgid "tcgetattr device '%s'" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:233 ++#: gsmlib/gsm_unix_serial.cc:245 + #, c-format + msgid "tcsetattr device '%s'" + msgstr "" + +-#. no response after 3 tries +-#: gsmlib/gsm_unix_serial.cc:287 ++#: gsmlib/gsm_unix_serial.cc:303 + #, c-format + msgid "reset modem failed '%s'" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:332 gsmlib/gsm_unix_serial.cc:364 ++#: gsmlib/gsm_unix_serial.cc:348 gsmlib/gsm_unix_serial.cc:380 + msgid "interrupted when writing to TA" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:347 gsmlib/gsm_unix_serial.cc:356 ++#: gsmlib/gsm_unix_serial.cc:363 gsmlib/gsm_unix_serial.cc:372 + msgid "writing to TA" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:377 ++#: gsmlib/gsm_unix_serial.cc:393 + msgid "timeout when writing to TA" + msgstr "" + +-#: gsmlib/gsm_unix_serial.cc:438 ++#: gsmlib/gsm_unix_serial.cc:454 + #, c-format + msgid "unknown baudrate '%s'" + msgstr "" + +-#: gsmlib/gsm_util.cc:205 ++#: gsmlib/gsm_util.cc:206 + #, c-format + msgid "error when calling stat('%s') (errno: %d/%s)" + msgstr "" + +-#: gsmlib/gsm_util.cc:236 ++#: gsmlib/gsm_util.cc:237 + #, c-format + msgid "file '%s' is neither file nor character device" + msgstr "" + +-#: gsmlib/gsm_util.cc:240 ++#: gsmlib/gsm_util.cc:241 + msgid "maxmimum number of symbolic links exceeded" + msgstr "" + +-#: gsmlib/gsm_util.cc:250 ++#: gsmlib/gsm_util.cc:251 + #, c-format + msgid "error renaming '%s' to '%s'" + msgstr "" + +-#: gsmlib/gsm_util.cc:348 ++#: gsmlib/gsm_util.cc:349 + #, c-format + msgid "text '%s' contains illegal character '\"'" + msgstr "" + +-#: gsmlib/gsm_util.cc:358 ++#: gsmlib/gsm_util.cc:359 + #, c-format + msgid "illegal character in telephone number '%s'" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:95 ++#: gsmlib/gsm_sorted_phonebook.cc:96 + #, c-format + msgid "error reading from file '%s" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:109 ++#: gsmlib/gsm_sorted_phonebook.cc:110 + #, c-format + msgid "entry '%s' lacks index" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:118 gsmlib/gsm_sorted_phonebook.cc:124 ++#: gsmlib/gsm_sorted_phonebook.cc:119 gsmlib/gsm_sorted_phonebook.cc:125 + #, c-format + msgid "line '%s' has invalid format" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:173 gsmlib/gsm_sorted_sms_store.cc:159 ++#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_sms_store.cc:159 + #, c-format + msgid "error opening file '%s' for writing" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_phonebook.cc:193 ++#: gsmlib/gsm_sorted_phonebook.cc:175 gsmlib/gsm_sorted_phonebook.cc:194 + #: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 + msgid "" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:192 gsmlib/gsm_sorted_sms_store.cc:66 ++#: gsmlib/gsm_sorted_phonebook.cc:193 gsmlib/gsm_sorted_sms_store.cc:66 + #, c-format + msgid "error writing to file '%s'" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:216 ++#: gsmlib/gsm_sorted_phonebook.cc:217 + msgid "attempt to change phonebook read from " + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:229 gsmlib/gsm_sorted_sms_store.cc:215 ++#: gsmlib/gsm_sorted_phonebook.cc:230 gsmlib/gsm_sorted_sms_store.cc:215 + #, c-format + msgid "cannot open file '%s'" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:244 gsmlib/gsm_sorted_sms_store.cc:55 ++#: gsmlib/gsm_sorted_phonebook.cc:245 gsmlib/gsm_sorted_sms_store.cc:55 + #: gsmlib/gsm_sorted_sms_store.cc:228 + msgid "" + msgstr "" + +-#: gsmlib/gsm_sorted_phonebook.cc:361 ++#: gsmlib/gsm_sorted_phonebook.cc:362 + msgid "indices must be unique in phonebook" + msgstr "" + +--- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.dirs ++++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.dirs +@@ -0,0 +1,11 @@ ++var/spool/sms/queue1 ++var/spool/sms/queue2 ++var/spool/sms/queue3 ++var/spool/sms/sent1 ++var/spool/sms/sent2 ++var/spool/sms/sent3 ++var/spool/sms/failed1 ++var/spool/sms/failed2 ++var/spool/sms/failed3 ++var/spool/sms/tmp ++var/run/gsm-utils +--- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.postinst ++++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.postinst +@@ -0,0 +1,28 @@ ++#!/bin/sh -e ++ ++# create gsmsms group if necessary. ++if ! grep -q ^gsmsms: /etc/group; then ++# echo Adding system group: gsmsms. ++ addgroup gsmsms ++fi ++ ++# create gsmsms user if necessary. ++if ! grep -q ^gsmsms: /etc/passwd; then ++# echo Adding system user: gsmsms. ++ adduser --system --ingroup gsmsms \ ++ --no-create-home --home /var/spool/sms gsmsms ++fi ++ ++# allow gsmsms to use serial lines ++if ! groups gsmsms | grep -q dialout ; then ++ adduser gsmsms dialout ++fi ++ ++# echo Updating spool directory structure: /var/spool/sms ++chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils ++chmod 700 /var/spool/sms/* ++chmod 750 /var/spool/sms ++chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp ++ ++# Add the rest automatically.. ++#DEBHELPER# +--- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.undocumented ++++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.undocumented +@@ -0,0 +1,2 @@ ++gsmsmsspool.1 ++gsmsmsrequeue.8 +--- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.prerm ++++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.prerm +@@ -0,0 +1,7 @@ ++#!/bin/sh -e ++ ++deluser gsmsms || true ++delgroup gsmsms || true ++ ++# Add the rest automatically.. ++#DEBHELPER# +--- gsmlib-1.10.orig/scripts/config.sub ++++ gsmlib-1.10/scripts/config.sub +@@ -1,9 +1,10 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + # Free Software Foundation, Inc. + +-timestamp='2001-09-07' ++timestamp='2008-01-16' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -21,15 +22,17 @@ + # + # 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., 59 Temple Place - Suite 330, +-# Boston, MA 02111-1307, USA. +- ++# 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 . ++ ++# 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. +@@ -69,8 +72,8 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++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." +@@ -82,11 +85,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -98,7 +101,7 @@ + *local*) + # First pass through any local machine types. + echo $1 +- exit 0;; ++ exit ;; + + * ) + break ;; +@@ -117,7 +120,9 @@ + # 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* | storm-chaos* | os2-emx* | windows32-*) ++ 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/'` + ;; +@@ -143,7 +148,7 @@ + -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) ++ -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; +@@ -168,6 +173,10 @@ + -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/'` +@@ -184,6 +193,10 @@ + # 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/'` +@@ -226,32 +239,53 @@ + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ +- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ ++ | 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 | dsp16xx \ +- | fr30 \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ +- | m32r | m68000 | m68k | m88k | mcore \ +- | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ +- | mips64vr4100 | mips64vr4100el | mips64vr4300 \ +- | mips64vr4300el | mips64vr5000 | mips64vr5000el \ +- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ +- | mipsisa32 \ ++ | ip2k | iq2000 \ ++ | m32c | m32r | m32rle | m68000 | m68k | m88k \ ++ | maxq | mb | microblaze | mcore | mep \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64el \ ++ | mips64vr | mips64vrel \ ++ | mips64orion | mips64orionel \ ++ | 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 \ +- | openrisc \ ++ | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ +- | s390 | s390x \ +- | sh | sh[34] | sh[34]eb | shbe | shle \ +- | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ +- | stormy16 | strongarm \ +- | tahoe | thumb | tic80 | tron \ +- | v850 \ ++ | score \ ++ | sh | sh[1234] | sh[24]a | 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 | xscale \ ++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; +@@ -262,6 +296,9 @@ + ;; + 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 +@@ -278,41 +315,68 @@ + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ +- | alphapca5[67]-* | arc-* \ +- | arm-* | armbe-* | armle-* | armv*-* \ +- | bs2000-* \ +- | c[123]* | c30-* | [cjt]90-* | c54x-* \ +- | clipper-* | cray2-* | cydra-* \ +- | d10v-* | d30v-* \ ++ | 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-* | fr30-* | fx80-* \ ++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ +- | m32r-* \ +- | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | mcore-* \ +- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ +- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ +- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ +- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ ++ | ip2k-* | iq2000-* \ ++ | m32c-* | m32r-* | m32rle-* \ ++ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* \ ++ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ ++ | mips16-* \ ++ | mips64-* | mips64el-* \ ++ | mips64vr-* | mips64vrel-* \ ++ | mips64orion-* | mips64orionel-* \ ++ | 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-* \ +- | s390-* | s390x-* \ +- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ +- | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ +- | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ +- | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ +- | v850-* | vax-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | 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-* \ ++ | tron-* \ ++ | v850-* | v850e-* | vax-* \ + | we32k-* \ +- | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ ++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ ++ | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-*) + ;; ++ # 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) +@@ -329,6 +393,9 @@ + basic_machine=a29k-amd + os=-udi + ;; ++ abacus) ++ basic_machine=abacus-unknown ++ ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout +@@ -343,6 +410,12 @@ + 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 +@@ -374,6 +447,18 @@ + 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 ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -394,30 +479,45 @@ + basic_machine=c38-convex + os=-bsd + ;; +- cray | ymp) +- basic_machine=ymp-cray ++ cray | j90) ++ basic_machine=j90-cray + os=-unicos + ;; +- cray2) +- basic_machine=cray2-cray +- os=-unicos ++ craynv) ++ basic_machine=craynv-cray ++ os=-unicosmp + ;; +- [cjt]90) +- basic_machine=${basic_machine}-cray +- os=-unicos ++ 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 +@@ -426,6 +526,10 @@ + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ djgpp) ++ basic_machine=i586-pc ++ os=-msdosdjgpp ++ ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx +@@ -576,6 +680,14 @@ + 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 + ;; +@@ -591,6 +703,10 @@ + basic_machine=i386-pc + os=-mingw32 + ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ os=-mingw32ce ++ ;; + miniframe) + basic_machine=m68000-convergent + ;; +@@ -598,32 +714,27 @@ + basic_machine=m68k-atari + os=-mint + ;; +- mipsel*-linux*) +- basic_machine=mipsel-unknown +- os=-linux-gnu +- ;; +- mips*-linux*) +- basic_machine=mips-unknown +- os=-linux-gnu +- ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; +- mmix*) +- basic_machine=mmix-knuth +- os=-mmixware +- ;; + 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 +@@ -699,6 +810,13 @@ + 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 +@@ -715,55 +833,75 @@ + 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-*) ++ pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; +- pentium | p5 | k5 | k6 | nexgen) ++ 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) ++ pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; +- pentiumii | pentium2) ++ pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-*) ++ 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-*) ++ 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/^[^-]*-//'` + ;; +@@ -774,6 +912,10 @@ + basic_machine=i586-unknown + os=-pw32 + ;; ++ rdos) ++ basic_machine=i386-pc ++ os=-rdos ++ ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff +@@ -784,10 +926,30 @@ + 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 + ;; +@@ -795,7 +957,13 @@ + basic_machine=sh-hitachi + os=-hms + ;; +- sparclite-wrs) ++ sh5el) ++ basic_machine=sh5le-unknown ++ ;; ++ sh64) ++ basic_machine=sh64-unknown ++ ;; ++ sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; +@@ -862,22 +1030,46 @@ + os=-dynix + ;; + t3e) +- basic_machine=t3e-cray ++ 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 +@@ -899,8 +1091,8 @@ + os=-vms + ;; + vpp*|vx|vx-*) +- basic_machine=f301-fujitsu +- ;; ++ basic_machine=f301-fujitsu ++ ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks +@@ -921,17 +1113,17 @@ + basic_machine=hppa1.1-winbond + os=-proelf + ;; +- windows32) +- basic_machine=i386-pc +- os=-windows32-msvcrt +- ;; +- xmp) +- basic_machine=xmp-cray +- os=-unicos ++ xbox) ++ basic_machine=i686-pc ++ os=-mingw32 + ;; +- xps | xps100) ++ xps | xps100) + basic_machine=xps100-honeywell + ;; ++ ymp) ++ basic_machine=ymp-cray ++ os=-unicos ++ ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim +@@ -952,16 +1144,12 @@ + op60c) + basic_machine=hppa1.1-oki + ;; +- mips) +- if [ x$os = x-linux-gnu ]; then +- basic_machine=mips-unknown +- else +- basic_machine=mips-mips +- fi +- ;; + romp) + basic_machine=romp-ibm + ;; ++ mmix) ++ basic_machine=mmix-knuth ++ ;; + rs6000) + basic_machine=rs6000-ibm + ;; +@@ -978,13 +1166,13 @@ + we32k) + basic_machine=we32k-att + ;; +- sh3 | sh4 | sh3eb | sh4eb) ++ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sparc | sparcv9 | sparcv9b) ++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; +- cydra) ++ cydra) + basic_machine=cydra-cydrome + ;; + orion) +@@ -999,10 +1187,6 @@ + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; +- c4x*) +- basic_machine=c4x-none +- os=-coff +- ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; +@@ -1058,17 +1242,23 @@ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ +- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ ++ | -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* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ +- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ ++ | -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*) ++ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ ++ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ ++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1080,16 +1270,21 @@ + ;; + esac + ;; ++ -nto-qnx*) ++ ;; + -nto*) +- os=-nto-qnx ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ ++ | -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|'` + ;; +@@ -1102,6 +1297,9 @@ + -opened*) + os=-openedition + ;; ++ -os400*) ++ os=-os400 ++ ;; + -wince*) + os=-wince + ;; +@@ -1120,14 +1318,23 @@ + -acis*) + os=-aos + ;; ++ -atheos*) ++ os=-atheos ++ ;; ++ -syllable*) ++ os=-syllable ++ ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; ++ -nova*) ++ os=-rtmk-nova ++ ;; + -ns2 ) +- os=-nextstep2 ++ os=-nextstep2 + ;; + -nsk*) + os=-nsk +@@ -1139,6 +1346,9 @@ + -sinix*) + os=-sysv4 + ;; ++ -tpf*) ++ os=-tpf ++ ;; + -triton*) + os=-sysv3 + ;; +@@ -1166,8 +1376,17 @@ + -xenix) + os=-xenix + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ os=-mint ++ ;; ++ -aros*) ++ os=-aros ++ ;; ++ -kaos*) ++ os=-kaos ++ ;; ++ -zvmoe) ++ os=-zvmoe + ;; + -none) + ;; +@@ -1191,6 +1410,12 @@ + # system, and we'll never get to this point. + + case $basic_machine in ++ score-*) ++ os=-elf ++ ;; ++ spu-*) ++ os=-elf ++ ;; + *-acorn) + os=-riscix1.2 + ;; +@@ -1200,10 +1425,14 @@ + arm*-semi) + os=-aout + ;; ++ c4x-* | tic4x-*) ++ os=-coff ++ ;; ++ # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; +- pdp11-*) ++ pdp11-*) + os=-none + ;; + *-dec | vax-*) +@@ -1224,12 +1453,18 @@ + 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 + ;; +@@ -1239,9 +1474,15 @@ + *-be) + os=-beos + ;; ++ *-haiku) ++ os=-haiku ++ ;; + *-ibm) + os=-aix + ;; ++ *-knuth) ++ os=-mmixware ++ ;; + *-wec) + os=-proelf + ;; +@@ -1293,19 +1534,19 @@ + *-next) + os=-nextstep3 + ;; +- *-gould) ++ *-gould) + os=-sysv + ;; +- *-highlevel) ++ *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; +- *-sgi) ++ *-sgi) + os=-irix + ;; +- *-siemens) ++ *-siemens) + os=-sysv4 + ;; + *-masscomp) +@@ -1374,10 +1615,16 @@ + -mvs* | -opened*) + vendor=ibm + ;; ++ -os400*) ++ vendor=ibm ++ ;; + -ptx*) + vendor=sequent + ;; +- -vxsim* | -vxworks*) ++ -tpf*) ++ vendor=ibm ++ ;; ++ -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) +@@ -1401,7 +1648,7 @@ + esac + + echo $basic_machine$os +-exit 0 ++exit + + # Local variables: + # eval: (add-hook 'write-file-hooks 'time-stamp) +--- gsmlib-1.10.orig/scripts/ltconfig ++++ gsmlib-1.10/scripts/ltconfig +@@ -1,8 +1,8 @@ + #! /bin/sh + + # ltconfig - Create a system-specific libtool. +-# Copyright (C) 1996-1998 Free Software Foundation, Inc. +-# Gordon Matzigkeit , 1996 ++# Copyright (C) 1996-1999 Free Software Foundation, Inc. ++# Originally by Gordon Matzigkeit , 1996 + # + # 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 +@@ -32,12 +32,8 @@ + # Discard the --no-reexec flag, and continue. + shift + elif test "X$1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat </dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +@@ -46,11 +42,30 @@ + exec "$SHELL" "$0" --no-reexec ${1+"$@"} + fi + ++if test "X$1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat </dev/null`} ++ case X$UNAME in ++ *-DOS) PATH_SEPARATOR=';' ;; ++ *) PATH_SEPARATOR=':' ;; ++ esac ++fi ++ + # The HP-UX ksh and POSIX shell print the target directory to stdout + # if CDPATH is set. +-if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi ++if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +-if test "X${echo_test_string+set}" != "Xset"; 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, ... +@@ -70,9 +85,9 @@ + # + # So, first we look for a working echo in the user's PATH. + +- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do +- if test -f $dir/echo && ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" +@@ -87,7 +102,8 @@ + test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 "X$CONFIG_SHELL" != X/bin/ksh; then ++ 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 ltconfig again with it. + ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" + export ORIGINAL_CONFIG_SHELL +@@ -96,10 +112,10 @@ + exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} + else + # Try using printf. +- echo='printf %s\n' ++ echo='printf "%s\n"' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then +- # Cool, printf works ++ test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then ++ # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then +@@ -110,9 +126,9 @@ + echo="$CONFIG_SHELL $0 --fallback-echo" + elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then +- echo="$CONFIG_SHELL $0 --fallback-echo" ++ echo="$CONFIG_SHELL $0 --fallback-echo" + else +- # maybe with a smaller string... ++ # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do +@@ -143,15 +159,20 @@ + # 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' ++ + # The name of this program. + progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + + # Constants: + PROGRAM=ltconfig + PACKAGE=libtool +-VERSION=1.2d +-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' +-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' ++VERSION=1.3.5 ++TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" ++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ++ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' + rm="rm -f" + + help="Try \`$progname --help' for more information." +@@ -160,8 +181,12 @@ + default_ofile=libtool + can_build_shared=yes + enable_shared=yes +-# All known linkers require a `.a' archive for static linking. ++# All known linkers require a `.a' archive for static linking (except M$VC, ++# which needs '.lib'). + enable_static=yes ++enable_fast_install=yes ++enable_dlopen=unknown ++enable_win32_dll=no + ltmain= + silent= + srcdir= +@@ -174,18 +199,24 @@ + with_gcc=no + with_gnu_ld=no + need_locks=yes ++ac_ext=c + objext=o + libext=a ++exeext= ++cache_file= + + old_AR="$AR" + old_CC="$CC" + old_CFLAGS="$CFLAGS" + old_CPPFLAGS="$CPPFLAGS" ++old_LDFLAGS="$LDFLAGS" + old_LD="$LD" + old_LN_S="$LN_S" ++old_LIBS="$LIBS" + old_NM="$NM" + old_RANLIB="$RANLIB" + old_DLLTOOL="$DLLTOOL" ++old_OBJDUMP="$OBJDUMP" + old_AS="$AS" + + # Parse the command line options. +@@ -214,6 +245,9 @@ + --debug enable verbose shell tracing + --disable-shared do not build shared libraries + --disable-static do not build static libraries ++ --disable-fast-install do not optimize for fast installation ++ --enable-dlopen enable dlopen support ++ --enable-win32-dll enable building dlls on win32 hosts + --help display this help and exit + --no-verify do not verify that HOST is a valid host type + -o, --output=FILE specify the output file [default=$default_ofile] +@@ -224,6 +258,7 @@ + --with-gcc assume that the GNU C compiler will be used + --with-gnu-ld assume that the C compiler uses the GNU linker + --disable-lock disable file locking ++ --cache-file=FILE configure cache file + + LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program + that provides basic libtool functionality. +@@ -242,6 +277,12 @@ + + --disable-static) enable_static=no ;; + ++ --disable-fast-install) enable_fast_install=no ;; ++ ++ --enable-dlopen) enable_dlopen=yes ;; ++ ++ --enable-win32-dll) enable_win32_dll=yes ;; ++ + --quiet | --silent) silent=yes ;; + + --srcdir) prev=srcdir ;; +@@ -252,13 +293,15 @@ + --output | -o) prev=ofile ;; + --output=*) ofile="$optarg" ;; + +- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;; ++ --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;; + + --with-gcc) with_gcc=yes ;; + --with-gnu-ld) with_gnu_ld=yes ;; + + --disable-lock) need_locks=no ;; + ++ --cache-file=*) cache_file="$optarg" ;; ++ + -*) + echo "$progname: unrecognized option \`$option'" 1>&2 + echo "$help" 1>&2 +@@ -326,8 +369,13 @@ + # Only set LANG and LC_ALL to C if already set. + # These must not be set unconditionally because not all systems understand + # e.g. LANG=C (notably SCO). +-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +-if test "${LANG+set}" = set; then LANG=C; export LANG; fi ++if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi ++if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi ++ ++if test -n "$cache_file" && test -r "$cache_file"; then ++ echo "loading cache $cache_file within ltconfig" ++ . $cache_file ++fi + + if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. +@@ -343,7 +391,7 @@ + + if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. +- srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'` ++ srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. + fi + +@@ -414,7 +462,7 @@ + # 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 "${COLLECT_NAMES+set}" != set; then ++ if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi +@@ -429,15 +477,18 @@ + # Set a sane default for `AR'. + test -z "$AR" && AR=ar + ++# Set a sane default for `OBJDUMP'. ++test -z "$OBJDUMP" && OBJDUMP=objdump ++ + # If RANLIB is not set, then run the test. + if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 +- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. +- if test -f $dir/ranlib; then ++ if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break +@@ -453,8 +504,9 @@ + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + fi + +-# Set sane defaults for `DLLTOOL' and `AS', used on cygwin32. ++# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. + test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$OBJDUMP" && OBJDUMP=objdump + test -z "$AS" && AS=as + + # Check to see if we are using GCC. +@@ -462,11 +514,10 @@ + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 +- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do +- IFS="$save_ifs" + test -z "$dir" && dir=. +- if test -f $dir/gcc; then ++ if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi +@@ -483,11 +534,11 @@ + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 +- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. +- if test -f $dir/cc; then ++ if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue +@@ -527,7 +578,7 @@ + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 +- echo "$progname:530: checking whether we are using GNU C" >&5 ++ echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ++ if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c +@@ -549,8 +600,8 @@ + echo $ac_n "checking for object suffix... $ac_c" 1>&6 + $rm conftest* + echo 'int i = 1;' > conftest.c +-echo "$progname:552: checking for object suffix" >& 5 +-if { (eval echo $progname:553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then ++echo "$progname:603: checking for object suffix" >& 5 ++if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + +@@ -568,6 +619,38 @@ + $rm conftest* + echo "$ac_t$objext" 1>&6 + ++echo $ac_n "checking for executable suffix... $ac_c" 1>&6 ++if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_cv_exeext="no" ++ $rm conftest* ++ echo 'main () { return 0; }' > conftest.c ++ echo "$progname:629: checking for executable suffix" >& 5 ++ if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then ++ # Append any warnings to the config.log. ++ cat conftest.err 1>&5 ++ ++ for ac_file in conftest.*; do ++ case $ac_file in ++ *.c | *.err | *.$objext ) ;; ++ *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; ++ esac ++ done ++ else ++ cat conftest.err 1>&5 ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 ++ fi ++ $rm conftest* ++fi ++if test "X$ac_cv_exeext" = Xno; then ++ exeext="" ++else ++ exeext="$ac_cv_exeext" ++fi ++echo "$ac_t$ac_cv_exeext" 1>&6 ++ + echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 + pic_flag= + special_shlib_compile_flags= +@@ -580,10 +663,19 @@ + link_static_flag='-static' + + case "$host_os" in +- aix3* | aix4* | irix5* | irix6* | osf3* | osf4*) ++ beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; +- cygwin32* | mingw32* | os2*) ++ aix*) ++ # Below there is a dirty hack to force normal static linking with -ldl ++ # The problem is because libdl dynamically linked with both libc and ++ # libC (AIX C++ library), which obviously doesn't included in libraries ++ # list by gcc. This cause undefined symbols with -static flags. ++ # This hack allows C programs to be linked with "-static -ldl", but ++ # we not sure about C++ programs. ++ link_static_flag="$link_static_flag ${wl}-lC" ++ ;; ++ cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) +@@ -592,6 +684,11 @@ + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ pic_flag=-Kconform_pic ++ fi ++ ;; + *) + pic_flag='-fPIC' + ;; +@@ -617,11 +714,11 @@ + # PIC (with -KPIC) is the default. + ;; + +- cygwin32* | mingw32* | os2*) ++ cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + +- osf3* | osf4*) ++ osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' +@@ -645,7 +742,7 @@ + wl='-Qoption ld ' + ;; + +- sysv4.2uw2* | sysv5*) ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' +@@ -655,7 +752,12 @@ + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; +- ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ pic_flag='-Kconform_pic' ++ link_static_flag='-Bstatic' ++ fi ++ ;; + *) + can_build_shared=no + ;; +@@ -671,22 +773,30 @@ + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" +- echo "$progname:674: checking if $compiler PIC flag $pic_flag works" >&5 +- if { (eval echo $progname:675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then ++ echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 ++ if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 +- +- # On HP-UX, both CC and GCC only warn that PIC is supported... then they +- # create non-PIC objects. So, if there were any warnings, we assume that +- # PIC is not supported. +- if test -s conftest.err; then +- echo "$ac_t"no 1>&6 +- can_build_shared=no +- pic_flag= +- else ++ ++ case "$host_os" in ++ hpux9* | hpux10* | hpux11*) ++ # On HP-UX, both CC and GCC only warn that PIC is supported... then they ++ # create non-PIC objects. So, if there were any warnings, we assume that ++ # PIC is not supported. ++ if test -s conftest.err; then ++ echo "$ac_t"no 1>&6 ++ can_build_shared=no ++ pic_flag= ++ else ++ echo "$ac_t"yes 1>&6 ++ pic_flag=" $pic_flag" ++ fi ++ ;; ++ *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" +- fi ++ ;; ++ esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 +@@ -702,16 +812,26 @@ + + # Check to see if options -o and -c are simultaneously supported by compiler + echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 ++$rm -r conftest 2>/dev/null ++mkdir conftest ++cd conftest + $rm conftest* + echo "int some_variable = 0;" > conftest.c ++mkdir out ++# According to Tom Tromey, Ian Lance Taylor reported there are C compilers ++# that will create temporary files in the current directory regardless of ++# the output directory. Thus, making CWD read-only will cause this test ++# to fail, enabling locking or at least warning the user not to do parallel ++# builds. ++chmod -w . + save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -c -o conftest2.o" +-echo "$progname:709: checking if $compiler supports -c -o file.o" >&5 +-if { (eval echo $progname:710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest2.o; then ++CFLAGS="$CFLAGS -o out/conftest2.o" ++echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 ++if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- if test -s conftest.err; then ++ if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else +@@ -720,12 +840,17 @@ + fi + else + # Append any errors to the config.log. +- cat conftest.err 1>&5 ++ cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" +-$rm conftest* ++chmod u+w . ++$rm conftest* out/* ++rmdir out ++cd .. ++rmdir conftest ++$rm -r conftest 2>/dev/null + + if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo +@@ -734,8 +859,8 @@ + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" +- echo "$progname:737: checking if $compiler supports -c -o file.lo" >&5 +-if { (eval echo $progname:738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then ++ echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 ++if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +@@ -743,8 +868,8 @@ + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else +- echo "$ac_t"yes 1>&6 +- compiler_o_lo=yes ++ echo "$ac_t"yes 1>&6 ++ compiler_o_lo=yes + fi + else + # Append any errors to the config.log. +@@ -786,17 +911,17 @@ + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" +- echo "$progname:789: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +- if { (eval echo $progname:790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then ++ echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++ if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then +- echo "$ac_t"no 1>&6 +- compiler_rtti_exceptions=no ++ echo "$ac_t"no 1>&6 ++ compiler_rtti_exceptions=no + else +- echo "$ac_t"yes 1>&6 +- compiler_rtti_exceptions=yes ++ echo "$ac_t"yes 1>&6 ++ compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. +@@ -830,8 +955,8 @@ + echo 'main(){return(0);}' > conftest.c + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $link_static_flag" +-echo "$progname:833: checking if $compiler static flag $link_static_flag works" >&5 +-if { (eval echo $progname:834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ++echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 ++if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 + else + echo "$ac_t"none 1>&6 +@@ -843,9 +968,9 @@ + if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 +- $rm conftestdata +- if ln -s X conftestdata 2>/dev/null; then +- $rm conftestdata ++ $rm conftest.dat ++ if ln -s X conftest.dat 2>/dev/null; then ++ $rm conftest.dat + LN_S="ln -s" + else + LN_S=ln +@@ -863,48 +988,18 @@ + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 +- echo "$progname:866: checking for ld used by GCC" >&5 ++ echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. +- /* | [A-Za-z]:/*) ++ [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' +- sub_uncdrive='s%^\([A-Za-z]\):/%//\1/%' +- # Canonicalize the path of ld +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- case "$host_os" in +- cygwin*) +- # Convert to a UNC path for cygwin +- test -z "$LD" && LD=`echo X$ac_prog | $Xsed -e "$sub_uncdrive"` +- ;; +- *) +- test -z "$LD" && LD="$ac_prog" +- ;; +- esac +- ;; +- ## +- ## FIXME: The code fails later on if we try to use an $LD with +- ## '\\' path separators. +- ## +- [A-Za-z]:[\\]*) +- re_direlt='\\[^\\][^\\]*\\\.\.\(\\\)' +- sub_uncdrive='s%^\([A-Za-z]\):\\%//\1/%' +- sub_uncdir='s%\\%/%g' + # Canonicalize the path 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%\1%"` ++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done +- case "$host_os" in +- cygwin*) +- # Convert to a UNC path for cygwin +- test -z "$LD" && LD=`echo X$ac_prog | $Xsed -e "$sub_uncdrive" -e "$sub_uncdir"` +- ;; +- *) +- test -z "$LD" && LD="$ac_prog" +- ;; +- esac ++ test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. +@@ -917,17 +1012,17 @@ + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 +- echo "$progname:920: checking for GNU ld" >&5 ++ echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +- echo "$progname:923: checking for non-GNU ld" >&5 ++ echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog"; then ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. +@@ -969,130 +1064,208 @@ + + allow_undefined_flag= + no_undefined_flag= ++need_lib_prefix=unknown ++need_version=unknown ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments + archive_cmds= +-archive_sym_cmds= ++archive_expsym_cmds= + old_archive_from_new_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= ++thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + runpath_var= ++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 egrep regular expression 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. + + case "$host_os" in +-aix3* | aix4*) +- # On AIX, the GNU linker works like the native linker. +- with_gnu_ld=no ++cygwin* | mingw*) ++ # 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 "$with_gcc" != yes; then ++ with_gnu_ld=no ++ fi + ;; ++ + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in ++ aix3* | aix4*) ++ # On AIX, the GNU linker is very broken ++ 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 ++ ;; ++ + amigaos*) +- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib$libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' ++ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes +- ;; + +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs$deplibs' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no ++ # 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 use ++ # them. ++ ld_shlibs=no + ;; + +- cygwin32* | mingw32*) +- if test "$with_gcc" = yes; then +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' ++ beos*) ++ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported +- # Very, very bogus. +- echo ' +-#define WIN32_LEAN_AND_MEAN +-#include +-#undef WIN32_LEAN_AND_MEAN +-#include ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; + +-BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); ++ cygwin* | mingw*) ++ # 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=yes + +-#include +-DECLARE_CYGWIN_DLL( DllMain ); +-HINSTANCE __hDllInstance_base; ++ # Extract the symbol export list from an `--export-all' def file, ++ # then regenerate the def file from the symbol export list, so that ++ # the compiled dll only exports the symbol export list. ++ # Be careful not to strip the DATA tag left by newer dlltools. ++ export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ ++ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ ++ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ ++ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' ++ ++ # If DATA tags from a recent dlltool are present, honour them! ++ archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ ++ _lt_hint=1; ++ cat $export_symbols | while read symbol; do ++ set dummy \$symbol; ++ case \$# in ++ 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; ++ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; ++ esac; ++ _lt_hint=`expr 1 + \$_lt_hint`; ++ done~ ++ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ ++ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ ++ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ ++ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ ++ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ ++ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ ++ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + +-BOOL APIENTRY +-DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-{ +- __hDllInstance_base = hInst; +- return TRUE; +-} +-' > ltdll.c +- archive_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ +- $DLLTOOL --export-all --output-def $lib-def $libobjs ltdll.$objext~ +- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $rm ltdll.$objext $soname-base $soname-exp' +- archive_sym_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ +- cat "$export_symbols" >> $lib-def~ +- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $rm ltdll.$objext $soname-base $soname-exp' +- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $lib-def --output-lib $objdir/$libname.a~$rm $lib.exp' +- else +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- with_gnu_ld=no +- # 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 +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib$libobjs`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' +- fix_srcfile_path='`cygpath -w $srcfile`' ++ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' ++ # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + ++ solaris* | sysv5*) ++ if $LD -v 2>&1 | egrep '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 | egrep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs' +- archive_sym_cmds='$CC -shared ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib$libobjs$deplibs' ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + +- if test "$ld_shlibs" = yes && test "$with_gnu_ld" = yes; then ++ if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' +- whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ case $host_os in ++ cygwin* | mingw*) ++ # dlltool doesn't understand --whole-archive et. al. ++ whole_archive_flag_spec= ++ ;; ++ *) ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ ;; ++ esac + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported +- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq' > $lib.exp~ +- $LD -o $objdir/$soname$libobjs$deplibs -bE:$lib.exp -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' +- archive_sym_cmds='$LD -o $objdir/$soname$libobjs$deplibs -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes +@@ -1104,80 +1277,67 @@ + ;; + + aix4*) +- allow_undefined_flag=unsupported +- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq' > $lib.exp else cat $export_symbols > $lib.exp~ +- $CC -o $objdir/$soname$libobjs$deplibs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry~$AR cru $lib $objdir/$soname' +- archive_sym_cmds='$CC -o $objdir/$soname$libobjs$deplibs ${wl}-bE:$export_symbols ${wl}-bM:SRE ${wl}-bnoentry~$AR cru $lib $objdir/$soname' +- hardcode_direct=yes +- hardcode_minus_L=yes +- ;; ++ hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' ++ hardcode_libdir_separator=':' ++ if test "$with_gcc" = yes; then ++ 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 ++ shared_flag='-shared' ++ else ++ shared_flag='${wl}-bM:SRE' ++ hardcode_direct=yes ++ fi ++ allow_undefined_flag=' ${wl}-berok' ++ archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' ++ archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' ++ case "$host_os" in aix4.[01]|aix4.[01].*) ++ # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on ++ always_export_symbols=yes ;; ++ esac ++ ;; + + amigaos*) +- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib$libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' ++ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 + ;; + +- cygwin32* | mingw32*) +- if test "$with_gcc" = yes; then +- # 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 +- # Very, very bogus. +- echo ' +-#define WIN32_LEAN_AND_MEAN +-#include +-#undef WIN32_LEAN_AND_MEAN +-#include +- +-BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +- +-#include +-DECLARE_CYGWIN_DLL( DllMain ); +-HINSTANCE __hDllInstance_base; ++ cygwin* | mingw*) ++ # 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 ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $linkopts `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' ++ fix_srcfile_path='`cygpath -w $srcfile`' ++ ;; + +-BOOL APIENTRY +-DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-{ +- __hDllInstance_base = hInst; +- return TRUE; +-} +-' > ltdll.c +- archive_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ +- $DLLTOOL --export-all --output-def $lib-def $libobjs ltdll.$objext~ +- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $rm ltdll.$objext $soname-base $soname-exp' +- archive_sym_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ +- cat "$export_symbols" >> $lib-def~ +- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ +- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ +- $rm ltdll.$objext $soname-base $soname-exp' +- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $lib-def --output-lib $objdir/$libname.a~$rm $lib.exp' +- else +- # 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 +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib$libobjs`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' +- fix_srcfile_path='`cygpath -w $srcfile`' +- fi ++ freebsd1*) ++ ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +@@ -1185,65 +1345,64 @@ + # 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 /usr/lib/c++rt0.o' ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +- hardcode_minus_L=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' ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + +- # FreeBSD 3, at last, uses gcc -shared to do shared libraries. +- freebsd3*) +- archive_cmds='$CC -shared -o $lib$libobjs$deplibs' ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +- hardcode_minus_L=no + hardcode_shlibpath_var=no + ;; + +- hpux9*) +- archive_cmds='$rm $objdir/$soname~$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs$deplibs~test $objdir/$soname = $lib || mv $objdir/$soname $lib' +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- export_dynamic_flag_spec='${wl}-E' +- ;; +- +- hpux10* | hpux11*) +- archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs$deplibs' ++ hpux9* | hpux10* | hpux11*) ++ case "$host_os" in ++ hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; ++ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; ++ esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: + hardcode_direct=yes +- hardcode_minus_L=yes ++ hardcode_minus_L=yes # Not in the search PATH, but as the default ++ # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then +- archive_cmds='$CC -shared -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs$deplibs' ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else +- archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' ++ archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: + ;; + + netbsd*) +- # Tested with NetBSD 1.2 ld +- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' +- hardcode_libdir_flag_spec='-R$libdir' ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF ++ fi ++ hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) +- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no +@@ -1253,102 +1412,169 @@ + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp$libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib$libobjs$deplibs $objdir/$libname.def' ++ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + +- osf3* | osf4*) ++ osf3*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs$deplibs' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + +- sco3.2v5*) +- archive_cmds='$LD -G -o $lib$libobjs$deplibs' ++ osf4* | osf5*) # As osf3* with the addition of the -msym flag ++ if test "$with_gcc" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ rhapsody*) ++ archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' ++ hardcode_libdir_flags_spec='-L$libdir' + hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sco3.2v5*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs$deplibs' +- archive_sym_cmds='$echo "{ global:" > $lib.exp~sed $export_symbols -e "s/.*/\1;/" >> $lib.exp~$echo "local: * }" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $export_symbols -h $soname -o $lib$libobjs$deplibs~$rm $lib.exp' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' ++ 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 $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no +- +- # Solaris 2 before 2.5 hardcodes -L paths. + case "$host_os" in +- solaris2.[0-4]*) +- hardcode_minus_L=yes +- ;; ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) # Supported since Solaris 2.6 (maybe 2.5.1?) ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) +- # Why do we need -Bstatic? To avoid inter-library dependencies, maybe... +- if test "$with_gcc" = yes; then +- archive_cmds='$CC -shared ${wl}-Bstatic -o $lib$libobjs$deplibs' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs$deplibs' +- fi ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + ++ sysv4) ++ 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 $linkopts' ++ else ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ fi ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv5*) ++ no_undefined_flag=' -z text' ++ # $CC -shared without GNU ld will not create a library from C++ ++ # object files and a static libstdc++, better avoid it by now ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' ++ 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 $linkopts~$rm $lib.exp' ++ hardcode_libdir_flag_spec= ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ;; ++ + uts4*) +- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=no +- hardcode_minus_L=no + hardcode_shlibpath_var=no + ;; + + dgux*) +- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4.2uw2*) ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' ++ hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no ++ hardcode_runpath_var=yes ++ runpath_var=LD_RUN_PATH ++ ;; ++ ++ unixware7*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no +- can_build_shared=no + ;; + esac + fi + echo "$ac_t$ld_shlibs" 1>&6 ++test "$ld_shlibs" = no && can_build_shared=no + + if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in +- /* | [A-Za-z]:[/\\]*) ;; # Let the user override the test with a path. ++ [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +- for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/nm; 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 +- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- NM="$ac_dir/nm -B" +- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- NM="$ac_dir/nm -p" ++ if test -f $ac_dir/nm || test -f $ac_dir/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 ++ if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ++ NM="$ac_dir/nm -B" ++ break ++ elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ++ NM="$ac_dir/nm -p" ++ break + else +- NM="$ac_dir/nm" ++ NM=${NM="$ac_dir/nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags + fi +- break + fi + done + IFS="$ac_save_ifs" +@@ -1365,52 +1591,54 @@ + # [They come from Ultrix. What could be older than Ultrix?!! ;)] + + # Character class describing NM global symbol codes. +-symcode='[BCDEGRSTU]' ++symcode='[BCDEGRST]' + + # Regexp to match symbols that can be accessed directly from C. + sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + + # Transform the above into a raw symbol and a C symbol. +-symxfrm='\1 \1' ++symxfrm='\1 \2\3 \3' ++ ++# Transform an extracted symbol line into a proper C declaration ++global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + + # Define system-specific variables. + case "$host_os" in + aix*) +- symcode='[BCDTU]' ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw*) ++ symcode='[ABCDGISTW]' + ;; +-sunos* | cygwin32* | mingw32*) +- sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' +- symxfrm='_\1 \1' ++hpux*) # Its linker distinguishes data from code symbols ++ global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; + irix*) +- # Cannot use undefined symbols on IRIX because inlined functions mess us up. + symcode='[BCDEGRST]' + ;; + solaris*) +- symcode='[BDTU]' ++ symcode='[BDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' + ;; + esac + + # If we're using GNU nm, then use its standard symbol codes. + if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[ABCDGISTUW]' ++ symcode='[ABCDGISTW]' + fi + +-case "$host_os" in +-cygwin32* | mingw32*) +- # We do not want undefined symbols on cygwin32. The user must +- # arrange to define them via -l arguments. +- symcode='[ABCDGISTW]' +- ;; +-esac ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do + +-# Write the raw and C identifiers. +-global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'" ++ # Write the raw and C identifiers. ++ global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + +-# Check to see that the pipe works correctly. +-pipe_works=no +-$rm conftest* +-cat > conftest.c < conftest.c <&5 +-if { (eval echo $progname:1426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if { echo "$progname:1429: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then +- +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- wcout=`wc "$nlist" 2>/dev/null` +- count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` +- (test "$count" -ge 0) 2>/dev/null || count=-1 +- else +- rm -f "$nlist"T +- count=-1 +- fi ++ echo "$progname:1653: checking if global_symbol_pipe works" >&5 ++ if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.c ++ # Make sure that we snagged all the symbols we need. ++ if egrep ' nm_test_var$' "$nlist" >/dev/null; then ++ if egrep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.c + #ifdef __cplusplus + extern "C" { + #endif + + EOF +- # Now generate the symbol file. +- sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c ++ # Now generate the symbol file. ++ eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + +- cat <> conftest.c ++ cat <> conftest.c + #if defined (__STDC__) && __STDC__ +-# define __ptr_t void * ++# define lt_ptr_t void * + #else +-# define __ptr_t char * ++# define lt_ptr_t char * ++# define const + #endif + +-/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ +-int dld_preloaded_symbol_count = $count; +- + /* The mapping between symbol names and symbols. */ +-struct { +- char *name; +- __ptr_t address; ++const struct { ++ const char *name; ++ lt_ptr_t address; + } +-dld_preloaded_symbols[] = ++lt_preloaded_symbols[] = + { + EOF +- sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c +- cat <<\EOF >> conftest.c +- {0, (__ptr_t) 0} ++ sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c ++ cat <<\EOF >> conftest.c ++ {0, (lt_ptr_t) 0} + }; + + #ifdef __cplusplus + } + #endif + EOF +- # Now try linking the two files. +- mv conftest.$objext conftestm.$objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftestm.$objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if { (eval echo $progname:1487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +- pipe_works=yes +- else +- echo "$progname: failed program was:" >&5 +- cat conftest.c >&5 +- fi +- LIBS="$save_LIBS" ++ # Now try linking the two files. ++ mv conftest.$objext conftstm.$objext ++ save_LIBS="$LIBS" ++ save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$objext" ++ CFLAGS="$CFLAGS$no_builtin_flag" ++ if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ++ pipe_works=yes ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 ++ fi ++ LIBS="$save_LIBS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi + else +- echo "cannot find nm_test_func in $nlist" >&5 ++ echo "cannot find nm_test_var in $nlist" >&5 + fi + else +- echo "cannot find nm_test_var in $nlist" >&5 ++ echo "cannot run $global_symbol_pipe" >&5 + fi + else +- echo "cannot run $global_symbol_pipe" >&5 ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 + fi ++ $rm conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ global_symbol_pipe= ++ fi ++done ++if test "$pipe_works" = yes; then ++ echo "${ac_t}ok" 1>&6 + else +- echo "$progname: failed program was:" >&5 +- cat conftest.c >&5 ++ echo "${ac_t}failed" 1>&6 + fi +-$rm conftest* + +-# Do not use the global_symbol_pipe unless it works. +-echo "$ac_t$pipe_works" 1>&6 +-test "$pipe_works" = yes || global_symbol_pipe= ++if test -z "$global_symbol_pipe"; then ++ global_symbol_to_cdecl= ++fi + + # Check hardcoding attributes. + echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +@@ -1517,10 +1752,12 @@ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && \ +- test "$hardcode_minus_L" != no && \ +- test "$hardcode_shlibpath_var" != no; then +- ++ 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 "$hardcode_shlibpath_var" != no && ++ test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else +@@ -1552,26 +1789,27 @@ + finish_cmds= + finish_eval= + shlibpath_var= ++shlibpath_overrides_runpath=unknown + version_type=none + dynamic_linker="$host_os ld.so" +-sys_lib_search_path="/lib /usr/lib /usr/local/lib" +-check_shared_deplibs_method='none' ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++file_magic_cmd= ++file_magic_test_file= ++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_regex' -- check by looking for filenames that look like the shared +-# library in the library path. +-# 'file_magic [regex]' -- check by looking for files in library path which +-# responds to the "file" command with a given regex. This is actually a +-# superset of the file_regex command. If you have file on your system, you'll +-# want to use this instead. +-# Notes: regexes are run through expr. +- ++# 'file_magic [regex]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given egrep 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. + echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 + case "$host_os" in +-aix3* | aix4*) ++aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH +@@ -1580,44 +1818,111 @@ + soname_spec='${libname}${release}.so$major' + ;; + ++aix4*) ++ version_type=linux ++ # AIX 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. ++ # We preserve .a as extension for shared libraries though AIX4.2 ++ # and later linker supports .so ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' ++ shlibpath_var=LIBPATH ++ deplibs_check_method=pass_all ++ ;; ++ + 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}.so' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ deplibs_check_method=pass_all ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ + bsdi4*) + version_type=linux +- library_names_spec='${libname}.so.$major ${libname}.so' +- soname_spec='${libname}.so' +- finish_cmds='PATH="$PATH:/sbin" ldconfig $libdir' ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH ++ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/shlib/libc.so ++ 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" ++ export_dynamic_flag_spec=-rdynamic ++ # 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 + ;; + +-cygwin32* | mingw32*) ++cygwin* | mingw*) + version_type=windows ++ need_version=no ++ need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' +- libname_spec='$name' ++ deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ file_magic_cmd='${OBJDUMP} -f' ++ # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= + ;; + +-freebsd2* | freebsd3*) ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat +- library_names_spec='${libname}${release}.so$versuffix $libname.so' +- finish_cmds='PATH="$PATH:/sbin" OBJFORMAT="$objformat" ldconfig -m $libdir' ++ case "$version_type" in ++ freebsd-elf*) ++ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /usr/lib/libc.so*` ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ deplibs_check_method=unknown ++ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' ++ need_version=yes ++ ;; ++ esac + shlibpath_var=LD_LIBRARY_PATH ++ case "$host_os" in ++ freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ ;; ++ esac + ;; + + gnu*) + version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so' ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' ++ soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH ++ deplibs_check_method=pass_all + ;; + + hpux9* | hpux10* | hpux11*) +@@ -1625,25 +1930,52 @@ + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos ++ need_lib_prefix=no ++ need_version=no + shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' ++ case "$host_os" in ++ hpux10.20*) ++ # TODO: Does this work for hpux-11 too? ++ deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac + ;; + +-irix5*) +- version_type=osf +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-irix6*) +- version_type=osf +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARYN32_PATH ++irix5* | irix6*) ++ version_type=irix ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}.so.$major' ++ library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' ++ case "$host_os" in ++ irix5*) ++ libsuff= shlibsuff= ++ # this will be overridden with pass_all, but let us keep it just in case ++ deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ++ ;; ++ *) ++ case "$LD" in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 ") 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}" ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /lib${libsuff}/libc.so*` ++ deplibs_check_method='pass_all' + ;; + + # No shared lib support for Linux oldld, aout, or coff. +@@ -1654,12 +1986,14 @@ + # This must be Linux ELF. + linux-gnu*) + version_type=linux ++ need_lib_prefix=no ++ need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH +- check_shared_deplibs_method='file_magic ELF 32-bit LSB shared object' +- sys_lib_search_path="/lib /usr/lib /usr/local/lib `echo $LD_LIBRARY_PATH | sed -e 's/:/ /g'`" ++ shlibpath_overrides_runpath=no ++ deplibs_check_method=pass_all + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' +@@ -1672,26 +2006,60 @@ + fi + ;; + +-netbsd* | openbsd*) ++netbsd*) ++ version_type=sunos ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' ++ soname_spec='${libname}${release}.so$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++openbsd*) + version_type=sunos +- library_names_spec='${libname}${release}.so$versuffix' ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ need_version=no ++ fi ++ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + + os2*) + libname_spec='$name' ++ need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +-osf3* | osf4*) ++osf3* | osf4* | osf5*) + version_type=osf ++ need_version=no + soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix $libname.so' ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH +- check_shared_deplibs_method='pass_all' ++ # this will be overridden with pass_all, but let us keep it just in case ++ deplibs_check_method='file_magic COFF format alpha shared library' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/shlib/libc.so ++ deplibs_check_method='pass_all' ++ 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" ++ ;; ++ ++rhapsody*) ++ version_type=sunos ++ library_names_spec='${libname}.so' ++ soname_spec='${libname}.so' ++ shlibpath_var=DYLD_LIBRARY_PATH ++ deplibs_check_method=pass_all + ;; + + sco3.2v5*) +@@ -1703,11 +2071,17 @@ + + solaris*) + version_type=linux ++ need_lib_prefix=no ++ need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' ++ deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/lib/libc.so + ;; + + sunos4*) +@@ -1715,29 +2089,63 @@ + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2*) ++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH ++ case "$host_vendor" in ++ sequent) ++ file_magic_cmd='/bin/file' ++ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ++ ;; ++ ncr) ++ deplibs_check_method='pass_all' ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ 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]' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ esac + ;; + + uts4*) + version_type=linux +- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' +- soname_spec='${libname}${release}.so.$major' ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + + dgux*) + version_type=linux ++ need_lib_prefix=no ++ need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' ++ soname_spec='$libname.so.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ + *) + dynamic_linker=no + ;; +@@ -1748,19 +2156,58 @@ + # Report the final consequences. + echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + ++# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in ++# configure.in, otherwise build static only libraries. ++case "$host_os" in ++cygwin* | mingw* | os2*) ++ if test x$can_build_shared = xyes; then ++ test x$enable_win32_dll = xno && can_build_shared=no ++ echo "checking if package supports dlls... $can_build_shared" 1>&6 ++ fi ++;; ++esac ++ ++if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then ++ case "$deplibs_check_method" in ++ "file_magic "*) ++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" ++ 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 ++ + echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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 +-aix*) ++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*) ++ test "$enable_shared" = yes && enable_static=no ++ ;; + esac + + echo "$ac_t$enable_shared" 1>&6 +@@ -1770,6 +2217,15 @@ + + echo "checking whether to build static libraries... $enable_static" 1>&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 ++ + echo $ac_n "checking for objdir... $ac_c" 1>&6 + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null +@@ -1782,6 +2238,449 @@ + rmdir .libs 2>/dev/null + echo "$ac_t$objdir" 1>&6 + ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then ++ lt_cv_dlopen=no lt_cv_dlopen_libs= ++echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ++echo "$progname:2248: checking for dlopen in -ldl" >&5 ++ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` ++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_save_LIBS="$LIBS" ++LIBS="-ldl $LIBS" ++cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=no" ++fi ++rm -f conftest* ++LIBS="$ac_save_LIBS" ++ ++fi ++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for dlopen""... $ac_c" 1>&6 ++echo "$progname:2288: checking for dlopen" >&5 ++if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ cat > conftest.$ac_ext < ++/* Override any gcc2 internal prototype to avoid an error. */ ++/* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen(); ++ ++int main() { ++ ++/* 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 ++dlopen(); ++#endif ++ ++; return 0; } ++EOF ++if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_dlopen=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_dlopen=no" ++fi ++rm -f conftest* ++fi ++if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="dlopen" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 ++echo "$progname:2335: checking for dld_link in -ldld" >&5 ++ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` ++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_save_LIBS="$LIBS" ++LIBS="-ldld $LIBS" ++cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=no" ++fi ++rm -f conftest* ++LIBS="$ac_save_LIBS" ++ ++fi ++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for shl_load""... $ac_c" 1>&6 ++echo "$progname:2375: checking for shl_load" >&5 ++if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ cat > conftest.$ac_ext < ++/* Override any gcc2 internal prototype to avoid an error. */ ++/* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load(); ++ ++int main() { ++ ++/* 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 ++shl_load(); ++#endif ++ ++; return 0; } ++EOF ++if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_shl_load=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_shl_load=no" ++fi ++rm -f conftest* ++fi ++ ++if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="shl_load" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ++echo "$progname:2423: checking for shl_load in -ldld" >&5 ++ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` ++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_save_LIBS="$LIBS" ++LIBS="-ldld $LIBS" ++cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=no" ++fi ++rm -f conftest* ++LIBS="$ac_save_LIBS" ++ ++fi ++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ echo "$ac_t""no" 1>&6 ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++fi ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ fi ++ ++ case "$lt_cv_dlopen" in ++ dlopen) ++for ac_hdr in dlfcn.h; do ++ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++echo "$progname:2488: checking for $ac_hdr" >&5 ++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ cat > conftest.$ac_ext < ++int fnord = 0; ++EOF ++ac_try="$ac_compile >/dev/null 2>conftest.out" ++{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++if test -z "$ac_err"; then ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=yes" ++else ++ echo "$ac_err" >&5 ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=no" ++fi ++rm -f conftest* ++fi ++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++else ++ echo "$ac_t""no" 1>&6 ++fi ++done ++ ++ if test "x$ac_cv_header_dlfcn_h" = xyes; then ++ CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ fi ++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 ++echo "$progname:2526: checking whether a program can dlopen itself" >&5 ++if test "${lt_cv_dlopen_self+set}" = set; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ if test "$cross_compiling" = yes; then ++ lt_cv_dlopen_self=cross ++ else ++ cat > conftest.c < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LTDL_GLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LTDL_GLOBAL DL_GLOBAL ++# else ++# define LTDL_GLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LTDL_LAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LTDL_LAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LTDL_LAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LTDL_LAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LTDL_LAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LTDL_LAZY_OR_NOW DL_NOW ++# else ++# define LTDL_LAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++fnord() { int i=42;} ++main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); ++ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); ++ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } ++ ++EOF ++if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null ++then ++ lt_cv_dlopen_self=yes ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -fr conftest* ++ lt_cv_dlopen_self=no ++fi ++rm -fr conftest* ++fi ++ ++fi ++ ++echo "$ac_t""$lt_cv_dlopen_self" 1>&6 ++ ++ if test "$lt_cv_dlopen_self" = yes; then ++ LDFLAGS="$LDFLAGS $link_static_flag" ++ echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 ++echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ if test "$cross_compiling" = yes; then ++ lt_cv_dlopen_self_static=cross ++ else ++ cat > conftest.c < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LTDL_GLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LTDL_GLOBAL DL_GLOBAL ++# else ++# define LTDL_GLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LTDL_LAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LTDL_LAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LTDL_LAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LTDL_LAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LTDL_LAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LTDL_LAZY_OR_NOW DL_NOW ++# else ++# define LTDL_LAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++fnord() { int i=42;} ++main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); ++ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); ++ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } ++ ++EOF ++if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null ++then ++ lt_cv_dlopen_self_static=yes ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -fr conftest* ++ lt_cv_dlopen_self_static=no ++fi ++rm -fr conftest* ++fi ++ ++fi ++ ++echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 ++fi ++ ;; ++ 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 ++ + # Copy echo and quote the copy, instead of the original, because it is + # used later. + ltecho="$echo" +@@ -1790,30 +2689,36 @@ + fi + LTSHELL="$SHELL" + ++LTCONFIG_VERSION="$VERSION" ++ + # Only quote variables if we're using ltmain.sh. + case "$ltmain" in + *.sh) + # Now quote all the things that may contain metacharacters. +- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ +- old_LN_S old_DLLTOOL old_AS AR CC LD LN_S NM LTSHELL VERSION \ ++ for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ ++ old_LD old_LDFLAGS old_LIBS \ ++ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ ++ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- whole_archive_flag_spec libname_spec library_names_spec soname_spec \ ++ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ ++ library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_sym_cmds postinstall_cmds postuninstall_cmds \ +- check_shared_deplibs_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe \ +- hardcode_libdir_flag_spec hardcode_libdir_separator sys_lib_search_path \ +- compiler_c_o compiler_o_lo need_locks; do ++ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ ++ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ ++ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ ++ hardcode_libdir_flag_spec hardcode_libdir_separator \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ +- archive_cmds | archive_sym_cmds | \ ++ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ +- finish_cmds | sys_lib_search_path) ++ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. +- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`\\\"" ++ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +@@ -1823,8 +2728,7 @@ + + case "$ltecho" in + *'\$0 --fallback-echo"') +- ltecho=`$echo "X$ltecho" | +- $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +@@ -1835,11 +2739,11 @@ + #! $SHELL + + # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION) ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) + # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. + # +-# Copyright (C) 1996-1998 Free Software Foundation, Inc. +-# Gordon Matzigkeit , 1996 ++# Copyright (C) 1996-1999 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 +@@ -1865,7 +2769,7 @@ + + # The HP-UX ksh and POSIX shell print the target directory to stdout + # if CDPATH is set. +-if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi ++if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + + ### BEGIN LIBTOOL CONFIG + EOF +@@ -1874,8 +2778,9 @@ + + *) + # Double-quote the variables that need it (for aesthetics). +- for var in old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ +- old_LN_S old_DLLTOOL old_AS; do ++ for var in old_CC old_CFLAGS old_CPPFLAGS \ ++ old_LD old_LDFLAGS old_LIBS \ ++ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + +@@ -1886,7 +2791,7 @@ + $rm "$cfgfile" + cat < "$cfgfile" + # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION) ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) + EOF + ;; + esac +@@ -1895,15 +2800,16 @@ + # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + # + # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +-# LD=$old_LD NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +-# DLLTOOL="$old_DLLTOOL" AS="$old_AS" \\ ++# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ ++# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ ++# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ + # $0$ltconfig_args + # + # Compiler and other test output produced by $progname, useful for + # debugging $progname, is in ./config.log if it exists. + + # The version of $progname that generated this script. +-LTCONFIG_VERSION=$VERSION ++LTCONFIG_VERSION=$LTCONFIG_VERSION + + # Shell to use when invoking shell scripts. + SHELL=$LTSHELL +@@ -1914,6 +2820,9 @@ + # Whether or not to build static libraries. + build_old_libs=$enable_static + ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ + # The host system. + host_alias=$host_alias + host=$host +@@ -1936,10 +2845,13 @@ + # A BSD-compatible nm program. + NM=$NM + +-# Used on cygwin32: DLL creation program. ++# Used on cygwin: DLL creation program. + DLLTOOL="$DLLTOOL" + +-# Used on cygwin32: assembler. ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. + AS="$AS" + + # The name of the directory that contains temporary libtool files. +@@ -1958,10 +2870,13 @@ + # Old archive suffix (normally "a"). + libext="$libext" + ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ + # Additional compiler flags for building library objects. + pic_flag=$pic_flag + +-# Does compiler simultaneously support -c and -o options ++# Does compiler simultaneously support -c and -o options? + compiler_c_o=$compiler_c_o + + # Can we write directly to a .lo ? +@@ -1970,6 +2885,21 @@ + # Must we lock files when doing compilation ? + need_locks=$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=$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=$link_static_flag + +@@ -1982,6 +2912,9 @@ + # Compiler flag to generate shared objects directly from archives. + whole_archive_flag_spec=$whole_archive_flag_spec + ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$thread_safe_flag_spec ++ + # Library versioning type. + version_type=$version_type + +@@ -2006,12 +2939,15 @@ + + # Commands used to build and install a shared archive. + archive_cmds=$archive_cmds +-archive_sym_cmds=$archive_sym_cmds ++archive_expsym_cmds=$archive_expsym_cmds + postinstall_cmds=$postinstall_cmds + postuninstall_cmds=$postuninstall_cmds + + # Method to check whether dependent libraries are shared objects. +-check_shared_deplibs_method=$check_shared_deplibs_method ++deplibs_check_method=$deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$file_magic_cmd + + # Flag that allows shared libraries with undefined symbols to be built. + allow_undefined_flag=$allow_undefined_flag +@@ -2028,12 +2964,18 @@ + # Take the output of nm and produce a listing of raw symbols and C names. + global_symbol_pipe=$global_symbol_pipe + ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$global_symbol_to_cdecl ++ + # 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 + +@@ -2056,11 +2998,27 @@ + # the resulting binary. + hardcode_shlibpath_var=$hardcode_shlibpath_var + +-# System search path for libraries +-sys_lib_search_path=$sys_lib_search_path ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$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=$export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$include_expsyms ++ + EOF + + case "$ltmain" in +@@ -2074,7 +3032,7 @@ + # 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 "${COLLECT_NAMES+set}" != set; then ++if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi +@@ -2083,7 +3041,11 @@ + esac + + # Append the ltmain.sh script. +- cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) ++ sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) ++ # 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? + + chmod +x "$ofile" + ;; +@@ -2093,6 +3055,58 @@ + echo "FIXME: would compile $ltmain" + ;; + esac ++ ++test -n "$cache_file" || exit 0 ++ ++# AC_CACHE_SAVE ++trap '' 1 2 15 ++cat > confcache <<\EOF ++# 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. It is not useful on other systems. ++# If it contains results you don't want to keep, you may remove or edit it. ++# ++# By default, configure uses ./config.cache as the cache file, ++# creating it if it does not exist already. You can give configure ++# the --cache-file=FILE option to use a different cache file; that is ++# what configure does when it calls configure scripts in ++# subdirectories, so they share the cache. ++# Giving --cache-file=/dev/null disables caching, for debugging configure. ++# config.status only pays attention to the cache file if you give it the ++# --recheck option to rerun configure. ++# ++EOF ++# 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 \ ++ -e "s/'/'\\\\''/g" \ ++ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ++ ;; ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ++ ;; ++ esac >> confcache ++if cmp -s $cache_file confcache; then ++ : ++else ++ if test -w $cache_file; then ++ echo "updating cache $cache_file" ++ cat confcache > $cache_file ++ else ++ echo "not updating unwritable cache $cache_file" ++ fi ++fi ++rm -f confcache ++ + exit 0 + + # Local Variables: +--- gsmlib-1.10.orig/scripts/config.guess ++++ gsmlib-1.10/scripts/config.guess +@@ -1,9 +1,10 @@ + #! /bin/sh + # Attempt to guess a canonical system name. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + # Free Software Foundation, Inc. + +-timestamp='2001-09-04' ++timestamp='2008-01-23' + + # 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 +@@ -17,15 +18,18 @@ + # + # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# 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. + +-# Written by Per Bothner . +-# Please send patches to . ++ ++# 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 +@@ -52,8 +56,8 @@ + GNU config.guess ($timestamp) + + Originally written by Per Bothner. +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++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." +@@ -65,11 +69,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -87,30 +91,42 @@ + exit 1 + fi + ++trap 'exit 1' 1 2 15 + +-dummy=dummy-$$ +-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; 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. + +-# CC_FOR_BUILD -- compiler used by this script. + # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still + # use `HOST_CC' if defined, but it is deprecated. + +-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in +- ,,) echo "int dummy(){}" > $dummy.c ; +- for c in cc gcc c89 ; do +- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; +- if test $? = 0 ; then ++# 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 ; +- rm -f $dummy.c $dummy.o $dummy.rel ; + 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' ++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) +@@ -127,29 +143,31 @@ + + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) +- # Netbsd (nbsd) targets should (where applicable) match one or ++ # 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. +- # Determine the machine/vendor (is the vendor relevant). +- case "${UNAME_MACHINE}" in +- amiga) machine=m68k-unknown ;; +- arm32) machine=arm-unknown ;; +- atari*) machine=m68k-atari ;; +- sun3*) machine=m68k-sun ;; +- mac68k) machine=m68k-apple ;; +- macppc) machine=powerpc-apple ;; +- hp3[0-9][05]) machine=m68k-hp ;; +- ibmrt|romp-ibm) machine=romp-ibm ;; +- *) machine=${UNAME_MACHINE}-unknown ;; ++ # ++ # 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}" in +- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) ++ 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 +@@ -166,120 +184,128 @@ + ;; + esac + # The OS release +- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ++ # 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 0 ;; ++ 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:*:*) +- if test $UNAME_RELEASE = "V4.0"; then ++ case $UNAME_RELEASE in ++ *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` +- fi ++ ;; ++ *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. +- cat <$dummy.s +- .data +-\$Lformat: +- .byte 37,100,45,37,120,10,0 # "%d-%x\n" +- +- .text +- .globl main +- .align 4 +- .ent main +-main: +- .frame \$30,16,\$26,0 +- ldgp \$29,0(\$27) +- .prologue 1 +- .long 0x47e03d80 # implver \$0 +- lda \$2,-1 +- .long 0x47e20c21 # amask \$2,\$1 +- lda \$16,\$Lformat +- mov \$0,\$17 +- not \$1,\$18 +- jsr \$26,printf +- ldgp \$29,0(\$26) +- mov 0,\$16 +- jsr \$26,exit +- .end main +-EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null +- if test "$?" = 0 ; then +- case `./$dummy` in +- 0-0) +- UNAME_MACHINE="alpha" +- ;; +- 1-0) +- UNAME_MACHINE="alphaev5" +- ;; +- 1-1) +- UNAME_MACHINE="alphaev56" +- ;; +- 1-101) +- UNAME_MACHINE="alphapca56" +- ;; +- 2-303) +- UNAME_MACHINE="alphaev6" +- ;; +- 2-307) +- UNAME_MACHINE="alphaev67" +- ;; +- 2-1307) +- UNAME_MACHINE="alphaev68" +- ;; +- esac +- fi +- rm -f $dummy.s $dummy +- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 +- exit 0 ;; ++ exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 +- exit 0;; +- amiga:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos +- exit 0 ;; +- arc64:OpenBSD:*:*) +- echo mips64el-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- arc:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- hkmips:OpenBSD:*:*) +- echo mips-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- pmax:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- sgi:OpenBSD:*:*) +- echo mips-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- wgrisc:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ *:[Mm]orph[Oo][Ss]:*:*) ++ echo ${UNAME_MACHINE}-unknown-morphos ++ exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition +- exit 0 ;; ++ 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 0;; ++ 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 0;; ++ 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 +@@ -287,25 +313,32 @@ + else + echo pyramid-pyramid-bsd + fi +- exit 0 ;; ++ exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; +- i86pc:SunOS:5.*:*) ++ exit ;; ++ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) +@@ -314,12 +347,12 @@ + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` +- exit 0 ;; ++ exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sun*:*:4.2BSD:*) +- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` ++ 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) +@@ -329,16 +362,10 @@ + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac +- exit 0 ;; ++ exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} +- exit 0 ;; +- sparc*:NetBSD:*) +- echo `uname -p`-unknown-netbsd${UNAME_RELEASE} +- exit 0 ;; +- atari*:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ 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 +@@ -349,49 +376,40 @@ + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} +- exit 0 ;; +- sun3*:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mac68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme88k:OpenBSD:*:*) +- echo m88k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ m68k:machten:*:*) ++ echo m68k-apple-machten${UNAME_RELEASE} ++ exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 +- exit 0 ;; ++ exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -415,27 +433,33 @@ + exit (-1); + } + EOF +- $CC_FOR_BUILD $dummy.c -o $dummy \ +- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ +- && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy ++ $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 0 ;; ++ exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 +- exit 0 ;; ++ exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 +- exit 0 ;; ++ exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` +@@ -451,29 +475,29 @@ + else + echo i586-dg-dgux${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 +- exit 0 ;; ++ exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 +- exit 0 ;; ++ exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd +- exit 0 ;; ++ exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` +- exit 0 ;; ++ 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;; ++ exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` +@@ -481,7 +505,7 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build +@@ -496,17 +520,20 @@ + exit(0); + } + EOF +- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy +- echo rs6000-ibm-aix3.2.5 ++ 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 0 ;; +- *:AIX:*:[45]) +- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` ++ 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 +@@ -518,38 +545,36 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix +- exit 0 ;; ++ exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 +- exit 0 ;; ++ exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to +- exit 0 ;; # report: romp-ibm BSD 4.3 ++ exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx +- exit 0 ;; ++ exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 +- exit 0 ;; ++ exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd +- exit 0 ;; ++ exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 +- exit 0 ;; ++ 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]) +- case "${HPUX_REV}" in +- 11.[0-9][0-9]) +- if [ -x /usr/bin/getconf ]; then +- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` ++ 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 +@@ -558,13 +583,13 @@ + 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 ;; +- esac +- if [ "${HP_ARCH}" = "" ]; then +- eval $set_cc_for_build +- sed 's/^ //' << EOF >$dummy.c ++ fi ++ if [ "${HP_ARCH}" = "" ]; then ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include +@@ -597,17 +622,37 @@ + exit (0); + } + EOF +- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` +- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi +- rm -f $dummy.c $dummy +- fi ;; ++ (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 0 ;; ++ exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -635,158 +680,247 @@ + exit (0); + } + EOF +- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy ++ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 +- exit 0 ;; ++ exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd +- exit 0 ;; ++ exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd +- exit 0 ;; ++ exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix +- exit 0 ;; ++ exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf +- exit 0 ;; ++ exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf +- exit 0 ;; ++ exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi +- exit 0 ;; ++ exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites +- exit 0 ;; +- hppa*:OpenBSD:*:*) +- echo hppa-unknown-openbsd +- exit 0 ;; ++ exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd +- exit 0 ;; +- CRAY*X-MP:*:*:*) +- echo xmp-cray-unicos +- exit 0 ;; ++ exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; +- CRAY*T3D:*:*:*) +- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; +- CRAY-2:*:*:*) +- echo cray2-cray-unicos +- exit 0 ;; ++ 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 0 ;; +- hp300:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:FreeBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +- exit 0 ;; +- *:OpenBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` +- exit 0 ;; ++ 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 0 ;; +- i*:MINGW*:*) ++ exit ;; ++ *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 +- exit 0 ;; ++ exit ;; ++ i*:windows32*:*) ++ # uname -m includes "-pc" on this system. ++ echo ${UNAME_MACHINE}-mingw32 ++ exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 +- exit 0 ;; ++ exit ;; ++ *:Interix*:[3456]*) ++ case ${UNAME_MACHINE} in ++ x86) ++ echo i586-pc-interix${UNAME_RELEASE} ++ exit ;; ++ EM64T | authenticamd) ++ 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 i386-pc-interix +- exit 0 ;; ++ echo i586-pc-interix ++ exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin +- exit 0 ;; ++ exit ;; ++ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) ++ echo x86_64-unknown-cygwin ++ exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin +- exit 0 ;; ++ exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + *:GNU:*:*) ++ # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` +- exit 0 ;; ++ 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 0 ;; ++ 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-gnu ++ else ++ echo ${UNAME_MACHINE}-unknown-linux-gnueabi ++ fi ++ exit ;; ++ avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ cris:Linux:*:*) ++ echo cris-axis-linux-gnu ++ exit ;; ++ crisv32:Linux:*:*) ++ echo crisv32-axis-linux-gnu ++ exit ;; ++ frv:Linux:*:*) ++ echo frv-unknown-linux-gnu ++ exit ;; + ia64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ m32r*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + mips:Linux:*:*) +- case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in +- big) echo mips-unknown-linux-gnu && exit 0 ;; +- little) echo mipsel-unknown-linux-gnu && exit 0 ;; +- esac ++ 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-gnu"; 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-gnu"; exit; } ++ ;; ++ or32:Linux:*:*) ++ echo or32-unknown-linux-gnu ++ exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; +@@ -800,7 +934,7 @@ + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} +- exit 0 ;; ++ exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +@@ -808,27 +942,37 @@ + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac +- exit 0 ;; ++ exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux +- exit 0 ;; ++ exit ;; ++ sh64*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ vax:Linux:*:*) ++ echo ${UNAME_MACHINE}-dec-linux-gnu ++ exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ xtensa*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ 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. +- ld_supported_targets=`cd /; ld --help 2>&1 \ ++ # 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: *// +@@ -840,52 +984,58 @@ + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" +- exit 0 ;; ++ exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" +- exit 0 ;; ++ exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" +- exit 0 ;; ++ exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build +- cat >$dummy.c < +-#ifdef __cplusplus +-#include /* for printf() prototype */ +- int main (int argc, char *argv[]) { +-#else +- int main (argc, argv) int argc; char *argv[]; { +-#endif +-#ifdef __ELF__ +-# ifdef __GLIBC__ +-# if __GLIBC__ >= 2 +- printf ("%s-pc-linux-gnu\n", argv[1]); +-# else +- printf ("%s-pc-linux-gnulibc1\n", argv[1]); +-# endif +-# else +- printf ("%s-pc-linux-gnulibc1\n", argv[1]); +-# endif +-#else +- printf ("%s-pc-linux-gnuaout\n", argv[1]); +-#endif +- return 0; +-} ++ 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 +- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy +- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ++ 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 0 ;; ++ 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... +@@ -893,7 +1043,27 @@ + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} +- exit 0 ;; ++ 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 +@@ -901,99 +1071,100 @@ + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi +- exit 0 ;; +- i*86:*:5:[78]*) ++ 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 0 ;; ++ 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|egrep Release|sed -e 's/.*= //')` +- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 +- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ ++ 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|egrep '^Machine.*Pent ?II' >/dev/null) \ ++ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 +- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ ++ (/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 0 ;; +- i*86:*DOS:*:*) +- echo ${UNAME_MACHINE}-pc-msdosdjgpp +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 +- exit 0 ;; ++ exit ;; + paragon:*:*:*) + echo i860-intel-osf1 +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv +- exit 0 ;; +- M68*:*:R3V[567]*:*) +- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; +- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) ++ 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 0 ++ && { 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 0 ;; ++ && { 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 0 ;; ++ && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 +- exit 0 ;; +- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) +- echo i386-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` +@@ -1001,82 +1172,107 @@ + else + echo ns32k-sni-sysv + fi +- exit 0 ;; ++ exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 +- exit 0 ;; ++ exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 +- exit 0 ;; ++ exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos +- exit 0 ;; ++ exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos +- exit 0 ;; ++ exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos +- exit 0 ;; ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ 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 0 ;; ++ exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Darwin:*:*) +- echo `uname -p`-apple-darwin${UNAME_RELEASE} +- exit 0 ;; ++ 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]*:*) +- if test "${UNAME_MACHINE}" = "x86pc"; then ++ UNAME_PROCESSOR=`uname -p` ++ if test "$UNAME_PROCESSOR" = "x86"; then ++ UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi +- echo `uname -p`-${UNAME_MACHINE}-nto-qnx +- exit 0 ;; ++ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} ++ exit ;; + *:QNX:*:4*) + echo i386-pc-qnx +- exit 0 ;; +- NSR-[KW]:NONSTOP_KERNEL:*:*) ++ exit ;; ++ NSE-?:NONSTOP_KERNEL:*:*) ++ echo nse-tandem-nsk${UNAME_RELEASE} ++ exit ;; ++ NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux +- exit 0 ;; ++ exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv +- exit 0 ;; ++ exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 +@@ -1087,36 +1283,47 @@ + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 +- exit 0 ;; +- 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 0 ;; ++ exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 +- exit 0 ;; ++ exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex +- exit 0 ;; ++ exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 +- exit 0 ;; ++ exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 +- exit 0 ;; ++ exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 +- exit 0 ;; ++ exit ;; + *:ITS:*:*) + echo pdp10-unknown-its +- exit 0 ;; +- i*86:XTS-300:*:STOP) +- echo ${UNAME_MACHINE}-unknown-stop +- exit 0 ;; +- i*86:atheos:*:*) +- echo ${UNAME_MACHINE}-unknown-atheos +- exit 0 ;; ++ 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 +@@ -1148,7 +1355,7 @@ + #endif + + #if defined (__arm) && defined (__acorn) && defined (__unix) +- printf ("arm-acorn-riscix"); exit (0); ++ printf ("arm-acorn-riscix\n"); exit (0); + #endif + + #if defined (hp300) && !defined (hpux) +@@ -1237,12 +1444,12 @@ + } + EOF + +-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +-rm -f $dummy.c $dummy ++$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 0; } ++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + + # Convex versions that predate uname can use getsysinfo(1) + +@@ -1251,22 +1458,22 @@ + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + c34*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + c38*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + c4*) + echo c4-convex-bsd +- exit 0 ;; ++ exit ;; + esac + fi + +@@ -1277,7 +1484,9 @@ + the operating system you are using. It is advised that you + download the most up to date version of the config scripts from + +- ftp://ftp.gnu.org/pub/gnu/config/ ++ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD ++and ++ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + + If the version you run ($0) is already up to date, please + send the following data and any information you think might be +--- gsmlib-1.10.orig/scripts/ltmain.sh ++++ gsmlib-1.10/scripts/ltmain.sh +@@ -1,7 +1,7 @@ + # 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 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 + # Free Software Foundation, Inc. + # Originally by Gordon Matzigkeit , 1996 + # +@@ -17,13 +17,41 @@ + # + # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# 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.20 Debian 1.5.20-2" ++TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" ++ ++# 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 ++ + # Check that we have a working $echo. + if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. +@@ -36,7 +64,7 @@ + : + else + # Restart under the correct shell, and then maybe $echo will work. +- exec $SHELL "$0" --no-reexec ${1+"$@"} ++ exec $SHELL "$progpath" --no-reexec ${1+"$@"} + fi + + if test "X$1" = X--fallback-echo; then +@@ -45,19 +73,9 @@ + cat <&2 +- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ $echo "$modename: not configured to build any kind of library" 1>&2 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE + fi + + # Global variables. +@@ -105,8 +135,225 @@ + lo2o="s/\\.lo\$/.${objext}/" + o2lo="s/\\.${objext}\$/.lo/" + ++##################################### ++# Shell function definitions: ++# This seems to be the best place for them ++ ++# 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 /{x;/import/!{s/^/import/;h;p;};x;};}'` ++ if test "X$win32_nmres" = "Ximport" ; then ++ win32_libid_type="x86 archive import" ++ else ++ win32_libid_type="x86 archive static" ++ fi ++ 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_xdir="$my_gentop/$my_xlib" ++ ++ $show "${rm}r $my_xdir" ++ $run ${rm}r "$my_xdir" ++ $show "$mkdir $my_xdir" ++ $run $mkdir "$my_xdir" ++ status=$? ++ if test "$status" -ne 0 && test ! -d "$my_xdir"; then ++ 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\" ++ + # Parse our command line options once, thoroughly. +-while test $# -gt 0 ++while test "$#" -gt 0 + do + arg="$1" + shift +@@ -122,6 +369,34 @@ + 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" + ;; +@@ -139,18 +414,27 @@ + ;; + + --version) +- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" +- exit 0 ++ $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' $0 +- exit 0 ++ ${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" ++ $echo "$progname: enabling shell trace mode" + set -x ++ preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) +@@ -158,18 +442,18 @@ + ;; + + --features) +- echo "host: $host" ++ $echo "host: $host" + if test "$build_libtool_libs" = yes; then +- echo "enable shared libraries" ++ $echo "enable shared libraries" + else +- echo "disable shared libraries" ++ $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then +- echo "enable static libraries" ++ $echo "enable static libraries" + else +- echo "disable static libraries" ++ $echo "disable static libraries" + fi +- exit 0 ++ exit $? + ;; + + --finish) mode="finish" ;; +@@ -181,6 +465,15 @@ + + --quiet | --silent) + show=: ++ preserve_args="$preserve_args $arg" ++ ;; ++ ++ --tag) prevopt="--tag" prev=tag ;; ++ --tag=*) ++ set tag "$optarg" ${1+"$@"} ++ shift ++ prev=tag ++ preserve_args="$preserve_args --tag" + ;; + + -dlopen) +@@ -191,7 +484,7 @@ + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + + *) +@@ -204,7 +497,7 @@ + if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # If this variable is set in any of the actions, the command in it +@@ -216,8 +509,10 @@ + + # 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 | *++ | gcc* | *-gcc*) ++ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do +@@ -258,7 +553,7 @@ + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. +@@ -272,158 +567,127 @@ + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= +- prev= +- lastarg= +- srcfile="$nonopt" ++ srcfile="$nonopt" # always keep a non-empty value in "srcfile" ++ suppress_opt=yes + suppress_output= ++ arg_mode=normal ++ libobj= ++ later= + +- user_target=no + for arg + do +- case $prev in +- "") ;; +- xcompiler) +- # Aesthetically quote the previous argument. +- prev= +- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` +- +- case $arg in +- # Double-quote args containing other shell metacharacters. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- arg="\"$arg\"" +- ;; +- esac +- +- # Add the previous argument to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else +- base_compile="$base_compile $lastarg" +- fi +- continue ++ case $arg_mode in ++ arg ) ++ # do not "continue". Instead, add this to base_compile ++ lastarg="$arg" ++ arg_mode=normal + ;; +- esac + +- # Accept any command-line options. +- case $arg in +- -o) +- if test "$user_target" != "no"; then +- $echo "$modename: you cannot specify \`-o' more than once" 1>&2 +- exit 1 +- fi +- user_target=next +- ;; +- +- -static) +- build_old_libs=yes ++ target ) ++ libobj="$arg" ++ arg_mode=normal + continue + ;; + +- -prefer-pic) +- pic_mode=yes +- 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 ++ ;; + +- -prefer-non-pic) +- pic_mode=no +- continue +- ;; ++ -static | -prefer-pic | -prefer-non-pic) ++ later="$later $arg" ++ continue ++ ;; + +- -Xcompiler) +- prev=xcompiler +- continue +- ;; ++ -no-suppress) ++ suppress_opt=no ++ continue ++ ;; + +- -Wc,*) +- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` +- lastarg= +- save_ifs="$IFS"; IFS=',' +- for arg in $args; do +- IFS="$save_ifs" ++ -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/^ //"` ++ # 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. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else ++ # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" +- fi +- continue +- ;; +- esac ++ continue ++ ;; + +- case $user_target in +- next) +- # The next one is the -o target name +- user_target=yes +- continue +- ;; +- yes) +- # We got the output file +- user_target=set +- libobj="$arg" +- continue ++ * ) ++ # Accept the current argument as the source file. ++ # The previous "srcfile" becomes the current argument. ++ # ++ lastarg="$srcfile" ++ srcfile="$arg" ++ ;; ++ esac # case $arg + ;; +- esac +- +- # Accept the current argument as the source file. +- lastarg="$srcfile" +- srcfile="$arg" ++ esac # case $arg_mode + + # Aesthetically quote the previous argument. +- +- # Backslashify any backslashes, double quotes, and dollar signs. +- # These are the only characters that are still specially +- # interpreted inside of double-quoted scrings. + 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, so we specify it separately. +- case $lastarg in ++ # 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 + +- # Add the previous argument to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else +- base_compile="$base_compile $lastarg" +- fi +- done ++ base_compile="$base_compile $lastarg" ++ done # for arg + +- case $user_target in +- set) ++ case $arg_mode in ++ arg) ++ $echo "$modename: you must specify an argument for -Xcompile" ++ exit $EXIT_FAILURE + ;; +- no) +- # Get the name of the library object. +- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ++ target) ++ $echo "$modename: you must specify a target with \`-o'" 1>&2 ++ exit $EXIT_FAILURE + ;; + *) +- $echo "$modename: you must specify a target with \`-o'" 1>&2 +- exit 1 ++ # 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='[cCFSfmso]' ++ xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; +@@ -431,10 +695,13 @@ + *.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 ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` +@@ -443,25 +710,63 @@ + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 +- exit 1 ++ 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 1 ++ exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then +- removelist="$obj $libobj" ++ removelist="$obj $lobj $libobj ${libobj}T" + else +- removelist="$libobj" ++ removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ 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 +@@ -480,8 +785,9 @@ + 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 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else ++ output_obj= + need_locks=no + lockfile= + fi +@@ -489,13 +795,13 @@ + # 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 "$0" "$lockfile" 2>/dev/null; do ++ 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 "\ ++ $echo "\ + *** ERROR, $lockfile exists and contains: + `cat $lockfile 2>/dev/null` + +@@ -507,14 +813,33 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi +- echo $srcfile > "$lockfile" ++ $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 "\ ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $echo "\ + *** ERROR, $lockfile contains: + `cat $lockfile 2>/dev/null` + +@@ -583,13 +893,13 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one +- if test x"$output_obj" != x"$libobj"; then +- $show "$mv $output_obj $libobj" +- if $run $mv $output_obj $libobj; then : ++ 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 +@@ -597,77 +907,50 @@ + fi + fi + +- # If we have no pic_flag, then copy the object into place and finish. +- if (test -z "$pic_flag" || test "$pic_mode" != default) && +- test "$build_old_libs" = yes; then +- # Rename the .lo from within objdir to obj +- if test -f $obj; then +- $show $rm $obj +- $run $rm $obj +- 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 "\ ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $echo "\ + *** ERROR, $lockfile contains: + `cat $lockfile 2>/dev/null` + +@@ -682,11 +965,11 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed +- if test x"$output_obj" != x"$obj"; then ++ 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 +@@ -696,29 +979,31 @@ + fi + fi + +- # Create an invalid libtool object if no PIC, so that we do not +- # accidentally link it into a program. +- if test "$build_libtool_libs" != yes; then +- $show "echo timestamp > $libobj" +- $run eval "echo timestamp > \$libobj" || exit $? +- else +- # Move the .lo from within objdir +- $show "$mv $libobj $lo_libobj" +- if $run $mv $libobj $lo_libobj; 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 </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 ++ 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 1 ++ exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then +@@ -938,13 +1341,33 @@ + 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) ++ 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 ++ fi # test -n "$prev" + + prevarg="$arg" + +@@ -986,7 +1409,7 @@ + -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 1 ++ exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms +@@ -996,6 +1419,14 @@ + continue + ;; + ++ -framework|-arch) ++ prev=darwin_framework ++ compiler_flags="$compiler_flags $arg" ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ continue ++ ;; ++ + -inst-prefix-dir) + prev=inst_prefix + continue +@@ -1005,7 +1436,7 @@ + # 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*) ++ no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; +@@ -1022,7 +1453,7 @@ + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + dir="$absdir" + ;; +@@ -1056,25 +1487,75 @@ + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; +- *-*-openbsd*) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; +- esac +- elif test "X$arg" = "X-lc_r"; then +- case $host in +- *-*-openbsd*) +- # Do not include libc_r directly, use -pthread flag. ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # Rhapsody C and math libraries are in the System framework ++ deplibs="$deplibs -framework System" + 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 + ;; + +- -module) +- module=yes ++ # 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 ++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) ++ ++ # 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" ++ if test "$with_gcc" = "yes" ; then ++ compiler_flags="$compiler_flags $arg" ++ fi ++ continue ++ ;; ++ ++ -shrext) ++ prev=shrext + continue + ;; + +@@ -1102,8 +1583,18 @@ + continue + ;; + ++ -objectlist) ++ prev=objectlist ++ continue ++ ;; ++ + -o) prev=output ;; + ++ -precious-files-regex) ++ prev=precious_regex ++ continue ++ ;; ++ + -release) + prev=release + continue +@@ -1126,7 +1617,7 @@ + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in +@@ -1154,6 +1645,11 @@ + prev=vinfo + continue + ;; ++ -version-number) ++ prev=vinfo ++ vinfo_number=yes ++ continue ++ ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` +@@ -1202,6 +1698,11 @@ + continue + ;; + ++ -XCClinker) ++ prev=xcclinker ++ continue ++ ;; ++ + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need +@@ -1214,29 +1715,101 @@ + esac + ;; + +- *.lo | *.$objext) +- # A library or standard object. +- if test "$prev" = dlfiles; then +- # This file was specified with -dlopen. +- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then +- dlfiles="$dlfiles $arg" +- prev= +- continue +- else +- # If libtool objects are unsupported, then we need to preload. +- prev=dlprefiles +- fi +- fi ++ *.$objext) ++ # A standard object. ++ objs="$objs $arg" ++ ;; + +- if test "$prev" = dlprefiles; then +- # Preload the old-style object. +- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` +- prev= +- else ++ *.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 +- *.lo) libobjs="$libobjs $arg" ;; +- *) objs="$objs $arg" ;; ++ */* | *\\*) . $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 ++ 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 + ;; + +@@ -1287,7 +1860,7 @@ + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then +@@ -1296,6 +1869,7 @@ + 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" +@@ -1330,7 +1904,7 @@ + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; +@@ -1338,7 +1912,17 @@ + *) 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) +@@ -1358,7 +1942,7 @@ + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= +- if test "X$duplicate_deps" = "Xyes" ; then ++ 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" ;; +@@ -1383,7 +1967,7 @@ + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -1400,39 +1984,58 @@ + ;; + 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 +- # Determine which files to process + case $pass in +- dlopen) +- libs="$dlfiles" +- save_deplibs="$deplibs" # Collect dlpreopened libraries +- deplibs= +- ;; ++ dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; +- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; ++ link) ++ libs="$deplibs %DEPLIBS%" ++ test "X$link_all_deplibs" != Xno && libs="$libs $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 +- -l*) +- if test "$linkmode" = oldlib && test "$linkmode" = obj; then +- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 +- continue ++ -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 +- if test "$pass" = conv; then +- deplibs="$deplib $deplibs" ++ 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 +- # Search the libtool library +- lib="$searchdir/lib${name}.la" +- if test -f "$lib"; then +- found=yes +- break +- fi ++ 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 +@@ -1444,6 +2047,42 @@ + 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*) +@@ -1461,14 +2100,14 @@ + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" +- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + 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: $deplib" 1>&2 ++ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue +@@ -1493,16 +2132,33 @@ + fi + case $linkmode in + lib) +- if test "$deplibs_check_method" != pass_all; then +- echo +- echo "*** Warning: This library needs some functionality provided by $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." ++ 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!" ++ $echo ++ $echo "*** Warning: Linking the shared library $output against the" ++ $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue +@@ -1519,14 +2175,18 @@ + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) +- 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" ++ 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 + ;; +@@ -1538,14 +2198,14 @@ + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ 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 1 ++ exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` +@@ -1558,8 +2218,11 @@ + library_names= + old_library= + # If the library was installed with an old release of libtool, +- # it will not redefine variable installed. ++ # it will not redefine variables installed, or shouldnotlink + installed=yes ++ shouldnotlink=no ++ avoidtemprpath= ++ + + # Read the .la file + case $lib in +@@ -1569,8 +2232,7 @@ + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || +- { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then +- # Add dl[pre]opened files of deplib ++ { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi +@@ -1581,7 +2243,7 @@ + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" +@@ -1598,11 +2260,12 @@ + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 +- exit 1 ++ 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 +@@ -1610,19 +2273,23 @@ + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ 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 1 ++ exit $EXIT_FAILURE + fi +- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ 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. +- dlprefiles="$dlprefiles $lib" ++ # 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 +@@ -1654,11 +2321,19 @@ + dir="$libdir" + absdir="$libdir" + fi ++ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else +- dir="$ladir/$objdir" +- absdir="$abs_ladir/$objdir" +- # Remove this search path later +- notinst_path="$notinst_path $abs_ladir" ++ 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//'` + +@@ -1666,7 +2341,7 @@ + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). +@@ -1688,11 +2363,12 @@ + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else +- deplibs="$lib $deplibs" ++ 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" +@@ -1726,13 +2402,19 @@ + continue + fi # $linkmode = prog... + +- link_static=no # Whether the deplib will be linked statically +- if test -n "$library_names" && +- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then +- # Link against this shared library ++ if test "$linkmode,$pass" = "prog,link"; then ++ if test -n "$library_names" && ++ { test "$prefer_static_libs" = no || 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 + +- if test "$linkmode,$pass" = "prog,link" || +- { 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. +@@ -1754,17 +2436,6 @@ + esac + ;; + esac +- if test "$linkmode" = prog; then +- # We need to hardcode the library path +- if test -n "$shlibpath_var"; then +- # Make sure the rpath contains only unique directories. +- case "$temp_rpath " in +- *" $dir "*) ;; +- *" $absdir "*) ;; +- *) temp_rpath="$temp_rpath $dir" ;; +- esac +- fi +- fi + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && +@@ -1774,11 +2445,52 @@ + # We only need to search for static libraries + continue + fi ++ fi + ++ link_static=no # Whether the deplib will be linked statically ++ if test -n "$library_names" && ++ { test "$prefer_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 +@@ -1792,7 +2504,7 @@ + elif test -n "$soname_spec"; then + # bleh windows + case $host in +- *cygwin*) ++ *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; +@@ -1804,17 +2516,18 @@ + + # 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" ++ 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='~' +- eval cmds=\"$extract_expsyms_cmds\" ++ cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -1825,9 +2538,10 @@ + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' +- eval cmds=\"$old_archive_from_expsyms_cmds\" ++ cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -1847,6 +2561,22 @@ + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" ++ case $host in ++ *-*-sco3.2v5* ) 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" ;; +@@ -1865,6 +2595,14 @@ + 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" +@@ -1878,7 +2616,7 @@ + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then +@@ -1912,16 +2650,7 @@ + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then +- # Try looking first in the location we're being installed to. +- add_dir= +- if test -n "$inst_prefix_dir"; then +- case "$libdir" in +- [\\/]*) +- add_dir="-L$inst_prefix_dir$libdir" +- ;; +- esac +- fi +- add_dir="$add_dir -L$libdir" ++ add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in +@@ -1929,18 +2658,24 @@ + *) 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. +- add_dir= + if test -n "$inst_prefix_dir"; then +- case "$libdir" in +- [\\/]*) +- add_dir="-L$inst_prefix_dir$libdir" +- ;; ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; + esac + fi +- add_dir="$add_dir -L$libdir" + add="-l$name" + fi + +@@ -1953,15 +2688,6 @@ + fi + fi + elif test "$linkmode" = prog; then +- 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 +- +- # Try to link the static library + # 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. +@@ -1981,20 +2707,21 @@ + + # 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 library needs some functionality provided by $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." ++ $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 "*** Therefore, libtool will create a static module, that should work " +- echo "*** as long as the dlopening application is linked with the -dlopen flag." ++ $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." ++ $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 +@@ -2004,8 +2731,6 @@ + fi + fi + else +- convenience="$convenience $dir/$old_library" +- old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi +@@ -2013,7 +2738,8 @@ + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && +- { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || ++ { test "$hardcode_into_libs" != yes || ++ test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= +@@ -2065,29 +2791,75 @@ + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then +- path="-L$absdir/$objdir" ++ path="$absdir/$objdir" + else +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ 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 1 ++ exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi +- path="-L$absdir" ++ 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="$deplibs $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 +@@ -2095,7 +2867,6 @@ + done + fi + if test "$pass" != dlopen; then +- test "$pass" != scan && dependency_libs="$newdependency_libs" + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= +@@ -2118,9 +2889,30 @@ + 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" ;; + *) +@@ -2148,11 +2940,20 @@ + eval $var=\"$tmp_libs\" + done # for var + fi +- if test "$pass" = "conv" && +- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then +- libs="$deplibs" # reset libs +- deplibs= +- 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" +@@ -2161,6 +2962,10 @@ + + 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 +@@ -2174,7 +2979,7 @@ + fi + + if test -n "$vinfo"; then +- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 ++ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then +@@ -2196,17 +3001,19 @@ + 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 1 ++ 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$//'` +@@ -2217,11 +3024,11 @@ + 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 1 ++ exit $EXIT_FAILURE + else +- echo +- echo "*** Warning: Linking the shared library $output against the non-libtool" +- echo "*** objects $objs is not portable!" ++ $echo ++ $echo "*** Warning: Linking the shared library $output against the non-libtool" ++ $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi +@@ -2240,14 +3047,16 @@ + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. +- libext=al ++ # 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' is ignored for convenience libraries" 1>&2 ++ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then +@@ -2263,45 +3072,87 @@ + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + +- current="$2" +- revision="$3" +- age="$4" ++ # 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) ++ 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" ++ ;; ++ *) ++ $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 ++ ;; ++ no) ++ current="$2" ++ revision="$3" ++ age="$4" ++ ;; ++ esac + + # Check that each of the things are valid numbers. + case $current in +- [0-9]*) ;; ++ 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' is not a nonnegative integer" 1>&2 ++ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $revision in +- [0-9]*) ;; ++ 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' is not a nonnegative integer" 1>&2 ++ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $age in +- [0-9]*) ;; ++ 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' is not a nonnegative integer" 1>&2 ++ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ 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 1 ++ exit $EXIT_FAILURE + fi + + # Calculate the version variables. +@@ -2318,7 +3169,7 @@ + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` +- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ++ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) +@@ -2331,16 +3182,21 @@ + versuffix=".$current"; + ;; + +- irix) ++ irix | nonstopux) + major=`expr $current - $age + 1` +- verstring="sgi$major.$revision" ++ ++ 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="sgi$major.$iface:$verstring" ++ verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. +@@ -2354,7 +3210,7 @@ + ;; + + osf) +- major=`expr $current - $age` ++ major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + +@@ -2384,20 +3240,19 @@ + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 +- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ $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= +- verstring="0.0" + 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= + ;; + *) + verstring="0.0" +@@ -2431,9 +3286,30 @@ + fi + + if test "$mode" != relink; then +- # Remove our outputs. +- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" +- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* ++ # 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. +@@ -2446,9 +3322,9 @@ + + # 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'` ++ 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 +@@ -2499,10 +3375,11 @@ + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; +- *-*-openbsd*) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. ++ test "X$arg" = "X-lc" && continue + ;; +- *) ++ *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" +@@ -2531,7 +3408,7 @@ + # 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 behaviour. ++ # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) +@@ -2544,64 +3421,88 @@ + int main() { return 0; } + EOF + $rm conftest +- $CC -o conftest conftest.c $deplibs ++ $LTCC -o conftest conftest.c $deplibs + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` + for i in $deplibs; do +- name="`expr $i : '-l\(.*\)'`" ++ name=`expr $i : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- deplib_matches=`eval \\$echo \"$library_names_spec\"` +- set dummy $deplib_matches +- deplib_match=$2 +- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then +- newdeplibs="$newdeplibs $i" +- else +- droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $i." +- 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 "$name" != "" && test "$name" -ne "0"; then ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $i "*) ++ newdeplibs="$newdeplibs $i" ++ i="" ++ ;; ++ esac ++ fi ++ if test -n "$i" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ deplib_matches=`eval \\$echo \"$library_names_spec\"` ++ set dummy $deplib_matches ++ deplib_match=$2 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then ++ newdeplibs="$newdeplibs $i" ++ else ++ droppeddeps=yes ++ $echo ++ $echo "*** Warning: dynamic linker does not accept needed library $i." ++ $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 I believe you do not have" ++ $echo "*** because a test_compile did reveal that the linker did not use it for" ++ $echo "*** its dynamic dependency list that programs get resolved with at runtime." ++ fi + fi + else + newdeplibs="$newdeplibs $i" + fi + done + else +- # Error occured in the first compile. Let's try to salvage the situation: +- # Compile a seperate program for each library. ++ # Error occurred in the first compile. Let's try to salvage ++ # the situation: Compile a separate program for each library. + for i in $deplibs; do +- name="`expr $i : '-l\(.*\)'`" +- # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then ++ name=`expr $i : '-l\(.*\)'` ++ # If $name is empty we are operating on a -L argument. ++ if test "$name" != "" && test "$name" != "0"; then + $rm conftest +- $CC -o conftest conftest.c $i ++ $LTCC -o conftest conftest.c $i + # Did it work? + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` +- libname=`eval \\$echo \"$libname_spec\"` +- deplib_matches=`eval \\$echo \"$library_names_spec\"` +- set dummy $deplib_matches +- deplib_match=$2 +- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then +- newdeplibs="$newdeplibs $i" +- else +- droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $i." +- 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $i "*) ++ newdeplibs="$newdeplibs $i" ++ i="" ++ ;; ++ esac ++ fi ++ if test -n "$i" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ deplib_matches=`eval \\$echo \"$library_names_spec\"` ++ set dummy $deplib_matches ++ deplib_match=$2 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then ++ newdeplibs="$newdeplibs $i" ++ else ++ droppeddeps=yes ++ $echo ++ $echo "*** Warning: dynamic linker does not accept needed library $i." ++ $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 a test_compile did reveal that the linker did not use this one" ++ $echo "*** as a dynamic dependency that programs can get resolved with at runtime." ++ fi + fi + else + droppeddeps=yes +- echo +- echo "*** Warning! Library $i is needed by this library but I was not able to" +- echo "*** make it link in! You will probably need to install it or some" +- echo "*** library that it depends on before this library will be fully" +- echo "*** functional. Installing it before continuing would be even better." ++ $echo ++ $echo "*** Warning! Library $i is needed by this library but I was not able to" ++ $echo "*** make it link in! You will probably need to install it or some" ++ $echo "*** library that it depends on before this library will be fully" ++ $echo "*** functional. Installing it before continuing would be even better." + fi + else + newdeplibs="$newdeplibs $i" +@@ -2613,13 +3514,22 @@ + set dummy $deplibs_check_method + file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do +- name="`expr $a_deplib : '-l\(.*\)'`" ++ name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; 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 ++ if test "$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 + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then +@@ -2632,28 +3542,36 @@ + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do +- potliblink=`ls -ld $potlib | sed 's/.* -> //'` ++ 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 ++ | ${SED} 10q \ ++ | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi +- done +- done ++ done ++ done ++ fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $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 ++ $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. +@@ -2665,29 +3583,47 @@ + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do +- name="`expr $a_deplib : '-l\(.*\)'`" ++ name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; 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 +- 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 ++ 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 +- done ++ fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $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 ++ $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. +@@ -2697,16 +3633,23 @@ + ;; + none | unknown | *) + newdeplibs="" +- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ +- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | +- grep . >/dev/null; then +- echo ++ 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." ++ $echo "*** Warning: inter-library dependencies are not supported in this platform." + else +- echo "*** Warning: inter-library dependencies are not known to be supported." ++ $echo "*** Warning: inter-library dependencies are not known to be supported." + fi +- echo "*** All declared inter-library dependencies are being dropped." ++ $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; +@@ -2726,17 +3669,17 @@ + + 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." ++ $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." ++ $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" +@@ -2746,16 +3689,16 @@ + 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." ++ $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." ++ $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 +@@ -2813,7 +3756,11 @@ + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" +- eval dep_rpath=\"$hardcode_libdir_flag_spec\" ++ 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. +@@ -2833,6 +3780,7 @@ + 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" +@@ -2843,7 +3791,9 @@ + else + soname="$realname" + fi +- test -z "$dlname" && dlname=$soname ++ if test -z "$dlname"; then ++ dlname=$soname ++ fi + + lib="$output_objdir/$realname" + for link +@@ -2851,23 +3801,6 @@ + linknames="$linknames $link" + done + +- # Ensure that we have .o objects for linkers which dislike .lo +- # (e.g. aix) in case we are running --disable-static +- for obj in $libobjs; do +- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$obj"; then +- xdir="." +- else +- xdir="$xdir" +- fi +- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` +- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` +- if test ! -f $xdir/$oldobj; then +- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" +- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? +- fi +- done +- + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + +@@ -2877,17 +3810,29 @@ + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols +- eval cmds=\"$export_symbols_cmds\" ++ cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" +- $show "$cmd" +- $run eval "$cmd" || exit $? ++ 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 "$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 +@@ -2898,46 +3843,30 @@ + $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" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test "$status" -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- for xlib in $convenience; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test "$status" -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` +- done ++ 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" +@@ -2949,23 +3878,175 @@ + 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 cmds=\"$archive_expsym_cmds\" ++ 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 +- eval cmds=\"$archive_cmds\" ++ # 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" || exit $? ++ $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 $? +- exit 0 ++ ++ 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. +@@ -3013,7 +4094,7 @@ + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` +@@ -3042,38 +4123,10 @@ + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test "$status" -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- for xlib in $convenience; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test "$status" -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` +- done ++ func_extract_archives $gentop $convenience ++ reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + +@@ -3081,10 +4134,11 @@ + 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" +- eval cmds=\"$reload_cmds\" ++ 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 +@@ -3097,7 +4151,7 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then +@@ -3108,37 +4162,24 @@ + + # 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 0 ++ # $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" +- eval cmds=\"$reload_cmds\" ++ 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" +- else +- # Just create a symlink. +- $show $rm $libobj +- $run $rm $libobj +- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$libobj"; then +- xdir="." +- else +- xdir="$xdir" +- fi +- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` +- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` +- $show "(cd $xdir && $LN_S $oldobj $baseobj)" +- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then +@@ -3146,12 +4187,12 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + prog) + case $host in +- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; ++ *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 +@@ -3176,6 +4217,16 @@ + ;; + 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 ++ + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + +@@ -3326,31 +4377,31 @@ + done + + if test -n "$exclude_expsyms"; then +- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' ++ $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 '$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/$output.exp" ++ export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols +- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else +- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' +- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' ++ $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"' + 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"' ++ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` ++ $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + +@@ -3359,12 +4410,18 @@ + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then +- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T ++ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. +- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then ++ 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 +@@ -3373,7 +4430,7 @@ + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else +- echo '/* NONE */' >> "$output_objdir/$dlsyms" ++ $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ +@@ -3388,7 +4445,26 @@ + #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; + } +@@ -3425,18 +4501,18 @@ + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; +- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; ++ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; +- *) pic_flag_for_symtable=" $pic_flag -DPIC";; ++ *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. +- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" +- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? ++ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" ++ $run eval '(cd $output_objdir && $LTCC -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" +@@ -3448,7 +4524,7 @@ + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + else +@@ -3536,7 +4612,7 @@ + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then +@@ -3591,10 +4667,10 @@ + fi + + # Quote $echo for shipping. +- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then +- case $0 in +- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; +- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; ++ 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 +@@ -3606,15 +4682,231 @@ + # 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$,,'` ;; ++ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in +- *cygwin*) exeext=.exe ;; ++ *cygwin*) ++ exeext=.exe ++ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac ++ case $host in ++ *cygwin* | *mingw* ) ++ cwrappersource=`$echo ${objdir}/lt-${outputname}.c` ++ cwrapper=`$echo ${output}.exe` ++ $rm $cwrappersource $cwrapper ++ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 ++ ++ cat > $cwrappersource <> $cwrappersource<<"EOF" ++#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 '/' ++#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 ++#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 */ ++ ++#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) ++#define XFREE(stale) do { \ ++ if (stale) { free ((void *) stale); stale = 0; } \ ++} while (0) ++ ++const char *program_name = NULL; ++ ++void * xmalloc (size_t num); ++char * xstrdup (const char *string); ++char * basename (const char *name); ++char * fnqualify(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 ((char *) basename (argv[0])); ++ newargz = XMALLOC(char *, argc+2); ++EOF ++ ++ cat >> $cwrappersource <> $cwrappersource <<"EOF" ++ newargz[1] = fnqualify(argv[0]); ++ /* 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; ++EOF ++ ++ cat >> $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 ++; ++} ++ ++char * ++basename (const char *name) ++{ ++ const char *base; ++ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ /* Skip over the disk name in MSDOS pathnames. */ ++ if (isalpha (name[0]) && name[1] == ':') ++ name += 2; ++#endif ++ ++ for (base = name; *name; name++) ++ if (IS_DIR_SEPARATOR (*name)) ++ base = name + 1; ++ return (char *) base; ++} ++ ++char * ++fnqualify(const char *path) ++{ ++ size_t size; ++ char *p; ++ char tmp[LT_PATHMAX + 1]; ++ ++ assert(path != NULL); ++ ++ /* Is it qualified already? */ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ if (isalpha (path[0]) && path[1] == ':') ++ return xstrdup (path); ++#endif ++ if (IS_DIR_SEPARATOR (path[0])) ++ return xstrdup (path); ++ ++ /* prepend the current directory */ ++ /* doesn't handle '~' */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ ++ p = XMALLOC(char, size); ++ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); ++ return p; ++} ++ ++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 -s -o $cwrapper $cwrappersource ++ ;; ++ esac + $rm $output +- trap "$rm $output; exit 1" 1 2 15 ++ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ + #! $SHELL +@@ -3630,12 +4922,12 @@ + + # Sed substitution that helps us do robust quoting. It backslashifies + # metacharacters that are still active within double-quoted strings. +-Xsed='sed -e 1s/^X//' ++Xsed='${SED} -e 1s/^X//' + sed_quote_subst='$sed_quote_subst' + + # The HP-UX ksh and POSIX shell print the target directory to stdout + # if CDPATH is set. +-if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + relink_command=\"$relink_command\" + +@@ -3668,7 +4960,7 @@ + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. +- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + +@@ -3681,7 +4973,7 @@ + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` +- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. +@@ -3690,12 +4982,12 @@ + " + + if test "$fast_install" = yes; then +- echo >> $output "\ ++ $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\`; \\ ++ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" +@@ -3706,7 +4998,7 @@ + $rm \"\$progdir/\$file\" + fi" + +- echo >> $output "\ ++ $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then +@@ -3714,7 +5006,7 @@ + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + +@@ -3724,13 +5016,13 @@ + $rm \"\$progdir/\$file\" + fi" + else +- echo >> $output "\ ++ $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" + " + fi + +- echo >> $output "\ ++ $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + +@@ -3761,47 +5053,35 @@ + # Run the actual program with our arguments. + " + case $host in +- # win32 systems need to use the prog path for dll +- # lookup to work +- *-*-cygwin* | *-*-pw32*) +- $echo >> $output "\ +- exec \$progdir/\$program \${1+\"\$@\"} +-" +- ;; +- + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ +- exec \$progdir\\\\\$program \${1+\"\$@\"} ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} + " + ;; + + *) + $echo >> $output "\ +- # Export the path to the program. +- PATH=\"\$progdir:\$PATH\" +- export PATH +- +- exec \$program \${1+\"\$@\"} ++ exec \"\$progdir/\$program\" \${1+\"\$@\"} + " + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" +- exit 1 ++ exit $EXIT_FAILURE + fi + else + # The program doesn't exist. +- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 ++ \$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 1 ++ $echo \"See the $PACKAGE documentation for more information.\" 1>&2 ++ exit $EXIT_FAILURE + fi + fi\ + " + chmod +x $output + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + esac + +@@ -3817,74 +5097,130 @@ + oldobjs="$libobjs_save" + build_libtool_libs=no + else +- oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` ++ oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test "$status" -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- # Add in members from convenience archives. +- for xlib in $addlibs; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test "$status" -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` +- done ++ 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 +- eval cmds=\"$old_archive_from_new_cmds\" ++ cmds=$old_archive_from_new_cmds + else +- # Ensure that we have .o objects in place in case we decided +- # not to build a shared library, and have fallen back to building +- # static libs even though --disable-static was passed! +- for oldobj in $oldobjs; do +- if test ! -f $oldobj; then +- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$oldobj"; then +- xdir="." +- else +- xdir="$xdir" ++ # 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" ++ status=$? ++ if test "$status" -ne 0 && test ! -d "$gentop"; then ++ exit $status + fi +- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` +- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` +- $show "(cd $xdir && ${LN_S} $obj $baseobj)" +- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi +- done ++ ++ 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 $? +@@ -3916,8 +5252,12 @@ + fi + done + # Quote the link command for shipping. +- relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" ++ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ if test "$hardcode_automatic" = yes ; then ++ relink_command= ++ fi ++ + + # Only create the output if not a dry run. + if test -z "$run"; then +@@ -3933,10 +5273,10 @@ + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ 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 1 ++ exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; +@@ -3947,10 +5287,10 @@ + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ 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 1 ++ exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done +@@ -3958,20 +5298,39 @@ + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ 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 1 ++ 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) tdlname=../bin/$dlname ;; ++ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ + # $outputname - a libtool library file +@@ -4000,6 +5359,9 @@ + # 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' +@@ -4019,7 +5381,7 @@ + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + # libtool install mode +@@ -4030,11 +5392,11 @@ + # 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" | $Xsed | grep shtool > /dev/null; then ++ $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 +@@ -4043,14 +5405,14 @@ + shift + else + install_prog= +- arg="$nonopt" ++ 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 +@@ -4068,28 +5430,31 @@ + do + if test -n "$dest"; then + files="$files $dest" +- dest="$arg" ++ dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; +- -f) prev="-f" ;; +- -g) prev="-g" ;; +- -m) prev="-m" ;; +- -o) prev="-o" ;; ++ -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" ++ dest=$arg + continue + fi + ;; +@@ -4098,7 +5463,7 @@ + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -4108,13 +5473,13 @@ + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -z "$files"; then +@@ -4124,7 +5489,7 @@ + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. +@@ -4145,7 +5510,7 @@ + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + case $destdir in +@@ -4157,7 +5522,7 @@ + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -4182,11 +5547,11 @@ + + *.la) + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ 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 1 ++ exit $EXIT_FAILURE + fi + + library_names= +@@ -4218,21 +5583,24 @@ + + 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\$%%"` ++ 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 1 ++ 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" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` ++ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else +- relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"` ++ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 +@@ -4240,7 +5608,7 @@ + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + +@@ -4264,23 +5632,36 @@ + + 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 && $rm $linkname && $LN_S $realname $linkname)" +- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" ++ $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" +- eval cmds=\"$postinstall_cmds\" ++ cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" +- $run eval "$cmd" || exit $? ++ $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 +@@ -4318,7 +5699,7 @@ + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +@@ -4336,7 +5717,7 @@ + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + *) +@@ -4348,21 +5729,47 @@ + 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. +- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ 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 $file in +- */* | *\\*) . $file ;; +- *) . ./$file ;; ++ 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 \`$file'" 1>&2 +- exit 1 ++ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 ++ exit $EXIT_FAILURE + fi + + finalize=yes +@@ -4384,10 +5791,15 @@ + 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 $file in +- */* | *\\*) . $file ;; +- *) . ./$file ;; ++ case $wrapper in ++ */* | *\\*) . ${wrapper} ;; ++ *) . ./${wrapper} ;; + esac + + outputname= +@@ -4395,17 +5807,17 @@ + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" +- tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` +- if test $? = 0 ; then : +- else +- tmpdir="$tmpdir/libtool-$$" +- fi +- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : ++ tmpdir="$tmpdir/libtool-$$" ++ save_umask=`umask` ++ umask 0077 ++ if $mkdir "$tmpdir"; then ++ umask $save_umask + else ++ umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi +- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` +@@ -4423,14 +5835,14 @@ + fi + else + # Install the binary that we compiled earlier. +- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` ++ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another +- # one anyways ++ # one anyway + case $install_prog,$host in +- /usr/bin/install*,*cygwin*) ++ */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok +@@ -4439,7 +5851,7 @@ + destfile=$destfile.exe + ;; + *:*.exe) +- destfile=`echo $destfile | sed -e 's,.exe$,,'` ++ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; +@@ -4460,16 +5872,17 @@ + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + +- if test -n "$stripme" && test -n "$striplib"; then ++ 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. +- eval cmds=\"$old_postinstall_cmds\" ++ 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 +@@ -4483,9 +5896,9 @@ + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" +- exec_cmd='$SHELL $0 --finish$current_libdirs' ++ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else +- exit 0 ++ exit $EXIT_SUCCESS + fi + ;; + +@@ -4504,10 +5917,11 @@ + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. +- eval cmds=\"$finish_cmds\" ++ 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" +@@ -4524,43 +5938,43 @@ + fi + + # Exit here if they wanted silent mode. +- test "$show" = : && exit 0 ++ test "$show" = : && exit $EXIT_SUCCESS + +- echo "----------------------------------------------------------------------" +- echo "Libraries have been installed in:" ++ $echo "----------------------------------------------------------------------" ++ $echo "Libraries have been installed in:" + for libdir in $libdirs; do +- echo " $libdir" ++ $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:" ++ $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" ++ $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" ++ $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" ++ $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then +- echo " - have your system administrator run these commands:$admincmds" ++ $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'" ++ $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 "----------------------------------------------------------------------" +- exit 0 ++ $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 "----------------------------------------------------------------------" ++ exit $EXIT_SUCCESS + ;; + + # libtool execute mode +@@ -4572,7 +5986,7 @@ + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. +@@ -4580,18 +5994,18 @@ + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ 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 1 ++ exit $EXIT_FAILURE + fi + + # Read the libtool library. +@@ -4618,7 +6032,7 @@ + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + ;; + +@@ -4658,7 +6072,7 @@ + -*) ;; + *) + # Do a test to see if this is really a libtool program. +- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ 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 ;; +@@ -4681,7 +6095,7 @@ + eval "export $shlibpath_var" + fi + +- # Restore saved enviroment variables ++ # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi +@@ -4698,7 +6112,7 @@ + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" +- exit 0 ++ exit $EXIT_SUCCESS + fi + ;; + +@@ -4726,18 +6140,19 @@ + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ 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="$objdir" ++ objdir="$origobjdir" + else +- objdir="$dir/$objdir" ++ objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" +@@ -4767,7 +6182,7 @@ + case $name in + *.la) + # Possibly a libtool archive, so verify it. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. +@@ -4780,10 +6195,11 @@ + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. +- eval cmds=\"$postuninstall_cmds\" ++ 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 +@@ -4795,10 +6211,11 @@ + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. +- eval cmds=\"$old_postuninstall_cmds\" ++ 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 +@@ -4813,22 +6230,52 @@ + ;; + + *.lo) +- if test "$build_old_libs" = yes; then +- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` +- rmfiles="$rmfiles $dir/$oldobj" ++ # 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 + ;; + + *) +- # Do a test to see if this is a libtool program. +- if test "$mode" = clean && +- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then +- relink_command= +- . $dir/$file ++ 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 + +- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" +- if test "$fast_install" = yes && test -n "$relink_command"; then +- rmfiles="$rmfiles $objdir/lt-$name" ++ # 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 + ;; +@@ -4836,6 +6283,7 @@ + $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 +@@ -4851,20 +6299,20 @@ + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi # test -z "$show_help" + + if test -n "$exec_cmd"; then + eval exec $exec_cmd +- exit 1 ++ exit $EXIT_FAILURE + fi + + # We need to display help for each of the modes. +@@ -4883,6 +6331,7 @@ + --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: +@@ -4896,8 +6345,10 @@ + 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." +- exit 0 ++a more detailed description of MODE. ++ ++Report bugs to ." ++ exit $EXIT_SUCCESS + ;; + + clean) +@@ -5008,6 +6459,9 @@ + -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 +@@ -5049,14 +6503,34 @@ + *) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +-echo ++$echo + $echo "Try \`$modename --help' for more information about other modes." + +-exit 0 ++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 ++build_libtool_libs=no ++build_old_libs=yes ++# ### END LIBTOOL TAG CONFIG: disable-shared ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-static ++build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` ++# ### END LIBTOOL TAG CONFIG: disable-static + + # Local Variables: + # mode:shell-script +--- gsmlib-1.10.orig/doc/gsmsmsstore.man ++++ gsmlib-1.10/doc/gsmsmsstore.man +@@ -15,36 +15,36 @@ + gsmsmsstore \- SMS store manipulation program + .SH SYNOPSIS + .B gsmsmsstore +-[ \fB-a\fP ] +-[ \fB--add\fP ] +-[ \fB-b\fP \fIbaudrate\fP ] +-[ \fB--baudrate\fP \fIbaudrate\fP ] +-[ \fB-c\fP ] +-[ \fB--copy\fP ] +-[ \fB-C\fP \fIservice centre address\fP ] +-[ \fB--sca\fP \fIservice centre address\fP ] +-[ \fB-d\fP \fIdestination device or file\fP ] +-[ \fB--destination\fP \fIdestination device or file\fP ] +-[ \fB-h\fP ] +-[ \fB--help\fP ] +-[ \fB-I\fP \fIinit string\fP ] +-[ \fB--init\fP \fIinit string\fP ] +-[ \fB-k\fP ] +-[ \fB--backup\fP ] +-[ \fB-l\fP ] +-[ \fB--list\fP ] +-[ \fB-s\fP \fIsource device or file\fP ] +-[ \fB--source\fP \fIsource device or file\fP ] +-[ \fB-t\fP \fISMS store name\fP ] +-[ \fB--store\fP \fISMS store name\fP ] +-[ \fB-v\fP ] +-[ \fB--version\fP ] +-[ \fB-V\fP ] +-[ \fB--verbose\fP ] +-[ \fB-x\fP ] +-[ \fB--delete\fP ] +-[ \fB-X\fP ] +-[ \fB--xonxoff\fP ] ++[ \fB\-a\fP ] ++[ \fB\-\-add\fP ] ++[ \fB\-b\fP \fIbaudrate\fP ] ++[ \fB\-\-baudrate\fP \fIbaudrate\fP ] ++[ \fB\-c\fP ] ++[ \fB\-\-copy\fP ] ++[ \fB\-C\fP \fIservice centre address\fP ] ++[ \fB\-\-sca\fP \fIservice centre address\fP ] ++[ \fB\-d\fP \fIdestination device or file\fP ] ++[ \fB\-\-destination\fP \fIdestination device or file\fP ] ++[ \fB\-h\fP ] ++[ \fB\-\-help\fP ] ++[ \fB\-I\fP \fIinit string\fP ] ++[ \fB\-\-init\fP \fIinit string\fP ] ++[ \fB\-k\fP ] ++[ \fB\-\-backup\fP ] ++[ \fB\-l\fP ] ++[ \fB\-\-list\fP ] ++[ \fB\-s\fP \fIsource device or file\fP ] ++[ \fB\-\-source\fP \fIsource device or file\fP ] ++[ \fB\-t\fP \fISMS store name\fP ] ++[ \fB\-\-store\fP \fISMS store name\fP ] ++[ \fB\-v\fP ] ++[ \fB\-\-version\fP ] ++[ \fB\-V\fP ] ++[ \fB\-\-verbose\fP ] ++[ \fB\-x\fP ] ++[ \fB\-\-delete\fP ] ++[ \fB\-X\fP ] ++[ \fB\-\-xonxoff\fP ] + { \fIindices\fP } + [ \fIphonenumber\fP \fItext\fP ] + .PP +@@ -57,19 +57,19 @@ + \fIgsmsmsstore\fP reads entries from the source which can be a mobile + phone (if a serial device file is given) or a file (if a file name is + given). The source is never modified. \fIgsmsmsstore\fP writes SMS +-messages to a destination file or device in the case of \fB--copy\fP, +-\fB--backup\fP, and \fB--add\fP. ++messages to a destination file or device in the case of \fB\-\-copy\fP, ++\fB\-\-backup\fP, and \fB\-\-add\fP. + .PP +-The \fB--list\fP option does not change any file but just lists the ++The \fB\-\-list\fP option does not change any file but just lists the + contents to standard output. + .PP +-The \fB--backup\fP and \fB--copy\fP options require both source and +-destination files or devices. The \fB--list\fP option requires a +-source. The \fB--add\fP and \fB--delete\fP options require a ++The \fB\-\-backup\fP and \fB\-\-copy\fP options require both source and ++destination files or devices. The \fB\-\-list\fP option requires a ++source. The \fB\-\-add\fP and \fB\-\-delete\fP options require a + destination file or device. + .PP +-If "-" is given as the parameter for the \fB--source\fP or +-\fB--destination\fP options, the SMS store is read from standard input ++If "\-" is given as the parameter for the \fB\-\-source\fP or ++\fB\-\-destination\fP options, the SMS store is read from standard input + and/or written to standard output, respectively. + .PP + SMS message files are not human-readable. +@@ -79,61 +79,61 @@ + .PP + .SH OPTIONS + .TP +-\fB-a\fP, \fB--add\fP ++\fB\-a\fP, \fB\-\-add\fP + Adds an SMS submit message with recipient address \fIphonenumber\fP and + text \fItext\fP to the destination. + .TP +-\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP ++\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP + The baud rate to use. The default baudrate is 38400. + .TP +-\fB-c\fP, \fB--copy\fP ++\fB\-c\fP, \fB\-\-copy\fP + This causes the contents of the source to be copied to the + destination. After this operation the destination has exactly the same + contents as the source. If \fIindices\fP are given on the command + line only those SMS messages denoted by the indices are copied to the + destination. + .TP +-\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP ++\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP + Sets the service centre address to use for all SUBMIT SMSs (may not + work with some phones). + .TP +-\fB-d\fP \fIdestination\fP, \fB--destination\fP \fIdestination\fP ++\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP + The destination device or file. + .TP +-\fB-h\fP, \fB--help\fP ++\fB\-h\fP, \fB\-\-help\fP + Prints an option summary. + .TP +-\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP ++\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP + Initialization string to send to the TA (default: "E0"). Note that the + sequence "ATZ" is sent first. + .TP +-\fB-k\fP, \fB--backup\fP ++\fB\-k\fP, \fB\-\-backup\fP + This causes those entries to be added from the source to the + destination that are not already present in the destination. If + \fIindices\fP are given on the command line only those SMS messages + denoted by the indices are backed up (ie. added) to the destination. + .TP +-\fB-l\fP, \fB--list\fP ++\fB\-l\fP, \fB\-\-list\fP + Prints out the entire contents of the source in human-readable form. + .TP +-\fB-s\fP \fIsource\fP, \fB--source\fP \fIsource\fP ++\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP + The source device or file. + .TP +-\fB-t\fP \fISMS store name\fP, \fB--store\fP \fISMS store name\fP ++\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP + The name of the SMS store to read from or write to. This information is + only used for device sources and destinations. A commonly available message + store is "SM" (SIM card). + .TP +-\fB-v\fP, \fB--version\fP ++\fB\-v\fP, \fB\-\-version\fP + Prints the program version. + .TP +-\fB-V\fP, \fB--verbose\fP ++\fB\-V\fP, \fB\-\-verbose\fP + Prints out a detailed progress report. + .TP +-\fB-x\fP, \fB--delete\fP ++\fB\-x\fP, \fB\-\-delete\fP + Delete the SMS messages as denoted by the \fIindices\fP from the destination. + .TP +-\fB-X\fP, \fB--xonxoff\fP ++\fB\-X\fP, \fB\-\-xonxoff\fP + Uses software handshaking (XON/XOFF) for accessing the device. + .PP + .SH EXAMPLES +@@ -141,15 +141,15 @@ + to \fI/dev/mobilephone\fP to the standard output: + .PP + .nf +-gsmsmsstore -b 19200 -s /dev/mobilephone -t SM -l ++gsmsmsstore \-b 19200 \-s /dev/mobilephone \-t SM \-l + .fi + .PP + The following adds entries 4, 7, and 10 from the device + \fI/dev/mobilephone\fP to the file \fIsmsstore\fP: + .PP + .nf +-gsmsmsstore -s /dev/mobilephone -d /home/fred/smsstore +- -t SM -b 4 7 10 ++gsmsmsstore \-s /dev/mobilephone \-d /home/fred/smsstore ++ \-t SM \-b 4 7 10 + .fi + .PP + .SH AUTHOR +--- gsmlib-1.10.orig/doc/gsmsmsd.man ++++ gsmlib-1.10/doc/gsmsmsd.man +@@ -17,34 +17,34 @@ + .PP + .SH SYNOPSIS + .B gsmsmsd +-[ \fB-a\fP \fIaction\fP ] +-[ \fB--action\fP \fIaction\fP ] +-[ \fB-b\fP \fIbaudrate\fP ] +-[ \fB--baudrate\fP \fIbaudrate\fP ] +-[ \fB-c\fP \fIconcatenatedID\fP ] +-[ \fB--concatenate\fP \fIconcatenatedID\fP ] +-[ \fB-C\fP \fIservice centre address\fP ] +-[ \fB--sca\fP \fIservice centre address\fP ] +-[ \fB-d\fP \fIdevice\fP ] +-[ \fB--device\fP \fIdevice\fP ] +-[ \fB-D\fP ] +-[ \fB--direct\fP ] +-[ \fB-f\fP ] +-[ \fB--flush\fP ] +-[ \fB-h\fP ] +-[ \fB--help\fP ] +-[ \fB-I\fP \fIinit string\fP ] +-[ \fB--init\fP \fIinit string\fP ] +-[ \fB-r\fP ] +-[ \fB--requeststat\fP ] +-[ \fB-s\fP \fIspool directory\fP ] +-[ \fB--spool\fP \fIspool directory\fP ] +-[ \fB-t\fP \fISMS store name\fP ] +-[ \fB--store\fP \fISMS store name\fP ] +-[ \fB-v\fP ] +-[ \fB--version\fP ] +-[ \fB-X\fP ] +-[ \fB--xonxoff\fP ] ++[ \fB\-a\fP \fIaction\fP ] ++[ \fB\-\-action\fP \fIaction\fP ] ++[ \fB\-b\fP \fIbaudrate\fP ] ++[ \fB\-\-baudrate\fP \fIbaudrate\fP ] ++[ \fB\-c\fP \fIconcatenatedID\fP ] ++[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] ++[ \fB\-C\fP \fIservice centre address\fP ] ++[ \fB\-\-sca\fP \fIservice centre address\fP ] ++[ \fB\-d\fP \fIdevice\fP ] ++[ \fB\-\-device\fP \fIdevice\fP ] ++[ \fB\-D\fP ] ++[ \fB\-\-direct\fP ] ++[ \fB\-f\fP ] ++[ \fB\-\-flush\fP ] ++[ \fB\-h\fP ] ++[ \fB\-\-help\fP ] ++[ \fB\-I\fP \fIinit string\fP ] ++[ \fB\-\-init\fP \fIinit string\fP ] ++[ \fB\-r\fP ] ++[ \fB\-\-requeststat\fP ] ++[ \fB\-s\fP \fIspool directory\fP ] ++[ \fB\-\-spool\fP \fIspool directory\fP ] ++[ \fB\-t\fP \fISMS store name\fP ] ++[ \fB\-\-store\fP \fISMS store name\fP ] ++[ \fB\-v\fP ] ++[ \fB\-\-version\fP ] ++[ \fB\-X\fP ] ++[ \fB\-\-xonxoff\fP ] + { \fIsms_type\fP } + .PP + .SH DESCRIPTION +@@ -65,10 +65,10 @@ + \fIgsmsmsd\fP needs one empty storage slot for SMS messages in the + mobile phone, otherwise SMS reception will not work. The SMS store to + use for temporary storage of incoming SMS can be selected using the +-\fB--store\fP option, otherwise the ME default store is used. ++\fB\-\-store\fP option, otherwise the ME default store is used. + .PP + To terminate \fIgsmsmsd\fP cleanly (without losing SMS messages) one +-should send either SIGINT (CTRL-C on the command line) or SIGTERM to ++should send either SIGINT (CTRL\-C on the command line) or SIGTERM to + the process. + .PP + Error messages are printed to the standard error output. If the program +@@ -89,14 +89,14 @@ + .PP + .SH OPTIONS + .TP +-\fB-a\fP \fIaction\fP, \fB--action\fP \fIaction\fP ++\fB\-a\fP \fIaction\fP, \fB\-\-action\fP \fIaction\fP + The action to execute for each incoming SMS message. If no action + is given the SMS is written to the standard output. + .TP +-\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP ++\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP + The baud rate to use. + .TP +-\fB-c\fP \fIconcatenatedID\fP, \fB--concatenate\fP \fIconcatenatedID\fP ++\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP + If an ID is given, large SMSs are split into several, concatenated + SMSs. All SMSs have the same ID and are numbered consecutively so that + the receiving phone can assemble them in the correct order. IDs must +@@ -108,43 +108,43 @@ + carried in the user data header element at the beginning of the SMS + user data. This information may show up as garbage in such phones. + .TP +-\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP ++\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP + Sets the service centre address to use for all SUBMIT SMSs (may not + work with some phones). + .TP +-\fB-d\fP \fIdevice\fP, \fB--device\fP \fIdevice\fP ++\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP + The device to which the GSM modem is connected. The default is + \fI/dev/mobilephone\fP. + .TP +-\fB-D\fP, \fB--direct\fP ++\fB\-D\fP, \fB\-\-direct\fP + Enables direct routing of incoming SMS messages to the TE. This is not + supported by many mobile phone/GSM modem combinations. Therefore, the + default is to store incoming SMS temporarily before processing them in + the indicated store. + .TP +-\fB-f\fP, \fB--flush\fP ++\fB\-f\fP, \fB\-\-flush\fP + This option causes \fIgsmsmsd\fP to flush (ie. read and erase) + existing SMS messages from +-the SMS store selected by the \fB--store\fP option. The action given +-by the \fB--action\fP option is executed on each of the flushed ++the SMS store selected by the \fB\-\-store\fP option. The action given ++by the \fB\-\-action\fP option is executed on each of the flushed + SMS. This option should be used to ensure that enough space is + available in the SMS store for temporary storage of incoming SMS, + otherwise incoming SMS might be ignored silently by the ME. + .TP +-\fB-h\fP, \fB--help\fP ++\fB\-h\fP, \fB\-\-help\fP + Prints an option summary. + .TP +-\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP ++\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP + Initialization string to send to the TA (default: "E0"). Note that the + sequence "ATZ" is sent first. + .TP +-\fB-r\fP, \fB--requeststat\fP ++\fB\-r\fP, \fB\-\-requeststat\fP + Request status reports for sent SMS. Note: This option only makes + sense if the phone supports routing of status reports to the + TE. Otherwise the status reports might show on the phone's display or + get lost. + .TP +-\fB-s\fP \fIspool directory\fP, \fB--spool\fP \fIspool directory\fP ++\fB\-s\fP \fIspool directory\fP, \fB\-\-spool\fP \fIspool directory\fP + This option sets the spool directory where \fIgsmsmsd\fP expects SMS + messages to send. The format of SMS files is very simple: The first + line contains the phone number of the recipient. Everything else after +@@ -154,18 +154,18 @@ + \fIgsmsmsd\fP polls the spool directory every 5 seconds. Sent + SMS message files are removed. + .TP +-\fB-t\fP \fISMS store name\fP, \fB--store\fP \fISMS store name\fP +-The name of the SMS store to read from (for the \fB--flush\fP option) ++\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP ++The name of the SMS store to read from (for the \fB\-\-flush\fP option) + or write to (for temporary SMS storage). This option must +-be must be used in conjunction with the \fB--flush\fP option. If this ++be must be used in conjunction with the \fB\-\-flush\fP option. If this + option is omitted the ME uses it's default SMS store for temporary + storage of incoming SMS. A commonly available message + store is "SM" (SIM card). + .TP +-\fB-v\fP, \fB--version\fP ++\fB\-v\fP, \fB\-\-version\fP + Prints the program version. + .TP +-\fB-X\fP, \fB--xonxoff\fP ++\fB\-X\fP, \fB\-\-xonxoff\fP + Uses software handshaking (XON/XOFF) for accessing the device. + .PP + .SH EXAMPLES +@@ -173,14 +173,14 @@ + as a mail to the user "smsadmin": + .PP + .nf +-gsmsmsd -d /dev/ttyS2 -b 19200 -a "mail smsadmin" ++gsmsmsd \-d /dev/ttyS2 \-b 19200 \-a "mail smsadmin" + .fi + .PP + This is the format of SMS deliver messages as output from \fIgsmsmsd\fP: + .PP + .nf + ---------------------------------------------------------------- +-Message type: SMS-DELIVER ++Message type: SMS\-DELIVER + SC address: '491710762100' + More messages to send: 1 + Reply path: 0 +@@ -202,7 +202,7 @@ + .PP + .nf + ---------------------------------------------------------------- +-Message type: SMS-STATUS-REPORT ++Message type: SMS\-STATUS\-REPORT + SC address: '' + More messages to send: 0 + Status report qualifier: 0 +@@ -219,8 +219,8 @@ + directory for SMS to send: + .PP + .nf +-gsmsmsd -d /dev/ttyS2 --spool /tmp/spooldir -f --store sm \\ +---action 'mail smsadmin' ++gsmsmsd \-d /dev/ttyS2 \-\-spool /tmp/spooldir \-f \-\-store sm \\ ++\-\-action 'mail smsadmin' + .fi + .PP + .SH FILES +--- gsmlib-1.10.orig/doc/gsmctl.man ++++ gsmlib-1.10/doc/gsmctl.man +@@ -1,6 +1,6 @@ + .TH GSMCTL 8 "##DATE##" "gsmctl v##VERSION##" + .SH NAME +-gsmctl \- GSM mobile phone control program ++gsmctl, gsmsiectl \- GSM mobile phone control program + .SH SYNOPSIS + .B gsmctl + .RB [\| \-b +@@ -25,6 +25,30 @@ + .RB | \ \-\-operation + .IR operation \ | + .I parameters ++.PP ++.B gsmsiectl ++.RB [\| \-b ++.IR baudrate \|] ++.RB [\| \-\-baudrate ++.IR baudrate\| ] ++.RB [ \|\-d ++.IR device\| ] ++.RB [ \|\-\-device ++.IR device\fP ] ++.RB [ \|\-h\| ] ++.RB [ \|\-\-help\| ] ++.RB [ \|\-I ++.IR "init string" \|] ++.RB [ \|\-\-init ++.IR "init string" \|] ++.RB [ \|\-v\| ] ++.RB [ \|\-\-version\| ] ++.RB [ \|\-X\| ] ++.RB [ \|\-\-xonxoff\| ] ++.BI \-o \ operation ++.RB | \ \-\-operation ++.IR operation \ | ++.I parameters + .SH DESCRIPTION + .B gsmctl + can request information from or perform operations on an GSM mobile +@@ -38,7 +62,7 @@ + If no + .I device + is given, the device +-.I/dev/mobilephone ++.I /dev/mobilephone + is used. If no + .I baudrate + is given, a default baud rate of 38400 is used. +@@ -61,6 +85,12 @@ + .B OPERATIONS + for more details. + .PP ++.B gsmsiectl ++is the same program with some extension for Siemens mobile phones. ++Some extra ++.B OPERATIONS ++are available in this case. ++.PP + Error messages are printed to the standard error output. If the + program terminates on error the error code 1 is returned. + .SH OPTIONS +@@ -252,14 +282,14 @@ + .I SIM PUK + ME is waiting SIM PUK to be given. + .TP +-.I PH-SIM PIN +-ME is waiting phone-to-SIM card password to be given. ++.I PH\-SIM PIN ++ME is waiting phone/-to/-SIM card password to be given. + .TP +-.I PH-FSIM PIN +-ME is waiting phone-to-very first SIM card password to be given. ++.I PH/-FSIM PIN ++ME is waiting phone/-to/-very first SIM card password to be given. + .TP +-.I PH-FSIM PUK +-ME is waiting phone-to-very first SIM card unblocking password to be ++.I PH/-FSIM PUK ++ME is waiting phone/-to/-very first SIM card unblocking password to be + given. + .TP + .I SIM PIN2 +@@ -268,13 +298,13 @@ + .I SIM PUK2 + ME is waiting SIM PUK2 to be given. + .TP +-.I PH-NET PIN ++.I PH/-NET PIN + ME is waiting network personalisation password to be given. + .TP +-.I PH-NET PUK ++.I PH/-NET PUK + ME is waiting network personalisation unblocking password to be given. + .TP +-.I PH-NETSUB PIN ++.I PH/-NETSUB PIN + ME is waiting network subset personalisation password to be given. + .RE + .TP 7 +@@ -458,6 +488,33 @@ + This is the reverse operation to \fBlock\fP. See above for a + description of the parameters. + .RE ++.PP ++.B Extra operators for gsmsiectl: ++.PP ++.B cset ++.RS ++Charset info. ++.RE ++.PP ++.B pbook ++.RS ++Phone book info. ++.RE ++.PP ++.B signal ++.RS ++Signal tone info. ++.RE ++.PP ++.B ring ++.RS ++Ringing tone info. ++.RE ++.PP ++.B binary ++.RS ++Binary info. ++.RE + .SH EXAMPLES + The following invocation of + .I gsmctl +@@ -482,11 +539,11 @@ + .HP + Serial Number: 448058511817585 + .HP +- Status: available Long name: 'D1-TELEKOM' Short name: '' Numeric name: 26201 ++ Status: available Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 + .HP + Status: forbidden Long name: 'D2 PRIVAT' Short name: '' Numeric name: 26202 + .HP +- Long name: 'D1-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic ++ Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic + .HP + 'CS' + .HP +--- gsmlib-1.10.orig/doc/gsmsendsms.man ++++ gsmlib-1.10/doc/gsmsendsms.man +@@ -17,26 +17,26 @@ + .PP + .SH SYNOPSIS + .B gsmsendsms +-[ \fB-b\fP \fIbaudrate\fP ] +-[ \fB--baudrate\fP \fIbaudrate\fP ] +-[ \fB-c\fP \fIconcatenatedID\fP ] +-[ \fB--concatenate\fP \fIconcatenatedID\fP ] +-[ \fB-C\fP \fIservice centre address\fP ] +-[ \fB--sca\fP \fIservice centre address\fP ] +-[ \fB-d\fP \fIdevice\fP ] +-[ \fB--device\fP \fIdevice\fP ] +-[ \fB-h\fP ] +-[ \fB--help\fP ] +-[ \fB-I\fP \fIinit string\fP ] +-[ \fB--init\fP \fIinit string\fP ] +-[ \fB-r\fP ] +-[ \fB--requeststat\fP ] +-[ \fB-t\fP ] +-[ \fB--test\fP ] +-[ \fB-v\fP ] +-[ \fB--version\fP ] +-[ \fB-X\fP ] +-[ \fB--xonxoff\fP ] ++[ \fB\-b\fP \fIbaudrate\fP ] ++[ \fB\-\-baudrate\fP \fIbaudrate\fP ] ++[ \fB\-c\fP \fIconcatenatedID\fP ] ++[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] ++[ \fB\-C\fP \fIservice centre address\fP ] ++[ \fB\-\-sca\fP \fIservice centre address\fP ] ++[ \fB\-d\fP \fIdevice\fP ] ++[ \fB\-\-device\fP \fIdevice\fP ] ++[ \fB\-h\fP ] ++[ \fB\-\-help\fP ] ++[ \fB\-I\fP \fIinit string\fP ] ++[ \fB\-\-init\fP \fIinit string\fP ] ++[ \fB\-r\fP ] ++[ \fB\-\-requeststat\fP ] ++[ \fB\-t\fP ] ++[ \fB\-\-test\fP ] ++[ \fB\-v\fP ] ++[ \fB\-\-version\fP ] ++[ \fB\-X\fP ] ++[ \fB\-\-xonxoff\fP ] + \fIphonenumber\fP + [ \fItext\fP ] + .PP +@@ -51,7 +51,7 @@ + \fIgsmsendsms\fP accepts a phone number (recipient address) and the + short message text as parameters. The text may have a maximum length + of 160 characters which is the maximum SMS message length. The GSM +-default alphabet is used for encoding. ASCII and Latin-1 characters ++default alphabet is used for encoding. ASCII and Latin\-1 characters + that can not be encoded using the GSM default alphabet are converted + to the GSM delta character (GSM code 16). + .PP +@@ -60,10 +60,10 @@ + .PP + .SH OPTIONS + .TP +-\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP ++\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP + The baud rate to use. + .TP +-\fB-c\fP \fIconcatenatedID\fP, \fB--concatenate\fP \fIconcatenatedID\fP ++\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP + If an ID is given, large SMSs are split into several, concatenated + SMSs. All SMSs have the same ID and are numbered consecutively so that + the receiving phone can assemble them in the correct order. IDs must +@@ -73,37 +73,37 @@ + carried in the user data header element at the beginning of the SMS + user data. This information may show up as garbage in such phones. + .TP +-\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP ++\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP + Sets the service centre address to use for all SUBMIT SMSs (may not + work with some phones). + .TP +-\fB-d\fP \fIdevice\fP, \fB--device\fP \fIdevice\fP ++\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP + The device to which the GSM modem is connected. The default is + \fI/dev/mobilephone\fP. + .TP +-\fB-h\fP, \fB--help\fP ++\fB\-h\fP, \fB\-\-help\fP + Prints an option summary. + .TP +-\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP ++\fB-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP + Initialization string to send to the TA (default: "E0"). Note that the + sequence "ATZ" is sent first. + .TP +-\fB-r\fP, \fB--requeststat\fP ++\fB\-r\fP, \fB\-\-requeststat\fP + Request status reports for sent SMS. + .TP +-\fB-t\fP, \fB--test\fP ++\fB\-t\fP, \fB\-\-test\fP + If this option is given the text is converted +-to the GSM default alphabet and back to Latin-1. This option can be +-used to find out how ASCII or Latin-1 texts are converted to the GSM ++to the GSM default alphabet and back to Latin\-1. This option can be ++used to find out how ASCII or Latin\-1 texts are converted to the GSM + default alphabet. Characters that can not be converted to the GSM default +-alphabet are reported as ASCII code 172 (Latin-1 boolean "not") ++alphabet are reported as ASCII code 172 (Latin\-1 boolean "not") + after this double conversion. No SMS messages are sent, a connection + to a mobile phone is not established. + .TP +-\fB-v\fP, \fB--version\fP ++\fB\-v\fP, \fB\-\-version\fP + Prints the program version. + .TP +-\fB-X\fP, \fB--xonxoff\fP ++\fB\-X\fP, \fB\-\-xonxoff\fP + Uses software handshaking (XON/XOFF) for accessing the device. + .PP + .SH EXAMPLES +@@ -111,8 +111,8 @@ + SMS message to the number "1234": + .PP + .nf +-gsmsendsms -d /dev/ttyS2 -b 19200 1234 "This is a test." +-echo "This is a test." | gsmsendsms -d /dev/ttyS2 -b 19200 1234 ++gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 "This is a test." ++echo "This is a test." | gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 + .fi + .PP + .SH FILES +--- gsmlib-1.10.orig/doc/gsmpb.man ++++ gsmlib-1.10/doc/gsmpb.man +@@ -15,32 +15,32 @@ + gsmpb \- GSM mobile phone phonebook manipulation program + .SH SYNOPSIS + .B gsmpb +-[ \fB-b\fP \fIbaudrate\fP ] +-[ \fB--baudrate\fP \fIbaudrate\fP ] +-[ \fB-c\fP ] +-[ \fB--copy\fP ] +-[ \fB-d\fP \fIdestination device or file\fP ] +-[ \fB--destination\fP \fIdestination device or file\fP ] +-[ \fB-h\fP ] +-[ \fB--help\fP ] +-[ \fB-i\fP ] +-[ \fB--index\fP ] +-[ \fB-I\fP \fIinit string\fP ] +-[ \fB--init\fP \fIinit string\fP ] +-[ \fB-p\fP \fIphonebook name\fP ] +-[ \fB--phonebook\fP \fIphonebook name\fP ] +-[ \fB-s\fP \fIsource device or file\fP ] +-[ \fB--source\fP \fIsource device or file\fP ] +-[ \fB-t\fP \fIcharacter set\fP ] +-[ \fB--charset\fP \fIcharacter set\fP ] +-[ \fB-v\fP ] +-[ \fB--version\fP ] +-[ \fB-V\fP ] +-[ \fB--verbose\fP ] +-[ \fB-X\fP ] +-[ \fB--xonxoff\fP ] +-[ \fB-y\fP ] +-[ \fB--synchronize\fP ] ++[ \fB\-b\fP \fIbaudrate\fP ] ++[ \fB\-\-baudrate\fP \fIbaudrate\fP ] ++[ \fB\-c\fP ] ++[ \fB\-\-copy\fP ] ++[ \fB\-d\fP \fIdestination device or file\fP ] ++[ \fB\-\-destination\fP \fIdestination device or file\fP ] ++[ \fB\-h\fP ] ++[ \fB\-\-help\fP ] ++[ \fB\-i\fP ] ++[ \fB\-\-index\fP ] ++[ \fB\-I\fP \fIinit string\fP ] ++[ \fB\-\-init\fP \fIinit string\fP ] ++[ \fB\-p\fP \fIphonebook name\fP ] ++[ \fB\-\-phonebook\fP \fIphonebook name\fP ] ++[ \fB\-s\fP \fIsource device or file\fP ] ++[ \fB\-\-source\fP \fIsource device or file\fP ] ++[ \fB\-t\fP \fIcharacter set\fP ] ++[ \fB\-\-charset\fP \fIcharacter set\fP ] ++[ \fB\-v\fP ] ++[ \fB\-\-version\fP ] ++[ \fB\-V\fP ] ++[ \fB\-\-verbose\fP ] ++[ \fB\-X\fP ] ++[ \fB\-\-xonxoff\fP ] ++[ \fB\-y\fP ] ++[ \fB\-\-synchronize\fP ] + .PP + .SH DESCRIPTION + \fIgsmpb\fP can store or retrieve phonebook entries residing in a GSM +@@ -55,45 +55,45 @@ + destination, or the destination is synchronized with regard to the + source which is the default (details see below). + .PP +-If "-" is given as the parameter for the \fB--source\fP or +-\fB--destination\fP options, the phonebook is read from standard input ++If "\-" is given as the parameter for the \fB\-\-source\fP or ++\fB\-\-destination\fP options, the phonebook is read from standard input + and/or written to standard output, respectively. + .PP + Phonebook entries names are encoded using the GSM default alphabet in +-the mobile phone, whereas they are stored using the Latin-1 encoding ++the mobile phone, whereas they are stored using the Latin\-1 encoding + in phonebook files. When reading phonebook entries from a mobile phone +-entry names are converted from the GSM default to Latin-1. Characters +-that can not be converted to Latin-1 are encoded as character code +-172 (Latin-1 boolean "not"). When writing file-based phonebook entries ++entry names are converted from the GSM default to Latin\-1. Characters ++that can not be converted to Latin\-1 are encoded as character code ++172 (Latin\-1 boolean "not"). When writing file-based phonebook entries + to a mobile phone a conversion to the GSM default alphabet takes + place. Characters that can not be converted are encoded as GSM delta + (code 16). If the default character set has been changed using the +-\fB--charset\fP option no conversion takes place. ++\fB\-\-charset\fP option no conversion takes place. + .PP + Error messages are printed to the standard error output. If the program + terminates on error the error code 1 is returned. + .PP + .SH OPTIONS + .TP .7i +-\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP ++\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP + The baud rate to use. The default baudrate is 38400. + .TP .7i +-\fB-c\fP, \fB--copy\fP ++\fB\-c\fP, \fB\-\-copy\fP + This causes the contents of the source to be copied to the + destination. After this operation the destination has exactly the same + contents as the source. + .TP .7i +-\fB-d\fP \fIdestination\fP, \fB--destination\fP \fIdestination\fP ++\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP + The destination device or file. + .TP .7i +-\fB-h\fP, \fB--help\fP ++\fB\-h\fP, \fB\-\-help\fP + Prints an option summary. + .TP .7i +-\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP ++\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP + Initialization string to send to the TA (default: "E0"). Note that the + sequence "ATZ" is sent first. + .TP .7i +-\fB-i\fP, \fB--index\fP ++\fB\-i\fP, \fB\-\-index\fP + If the index position is given, \fIgsmpb\fP preserves the assignment + of entries to memory slots in the mobile phone's phonebook. This can + be used to backup phonebook entries with their position into a +@@ -104,7 +104,7 @@ + be unique, ie. it is not allowed to assign one entry twice to a + specific position in the mobile phone's phonebook. + .TP .7i +-\fB-p\fP \fIphonebook\fP, \fB--phonebook\fP \fIphonebook\fP ++\fB\-p\fP \fIphonebook\fP, \fB\-\-phonebook\fP \fIphonebook\fP + The name of the phonebook to read from or write to. This is only used + for device sources and destinations. Commonly available phonebooks + are: +@@ -112,10 +112,10 @@ + .po +0.7i + .ll 5.8i + \fIFD\fP +-SIM fixdialling-phonebook ++SIM fixdialling\-phonebook + .TP .3i + \fILD\fP +-SIM last-dialling-phonebook ++SIM last\-dialling\-phonebook + .TP .3i + \fIME\fP + ME phonebook +@@ -131,23 +131,23 @@ + .TP .7i + .po -0.7i + .ll 6.5i +-\fB-s\fP \fIsource\fP, \fB--source\fP \fIsource\fP ++\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP + The source device or file. + .TP +-\fB-t\fP \fIcharacter set\fP, \fB--charset\fP \fIcharacter set\fP ++\fB\-t\fP \fIcharacter set\fP, \fB\-\-charset\fP \fIcharacter set\fP + Set the character set to use for phonebook operations (default is the + GSM default alphabet). + .TP +-\fB-v\fP, \fB--version\fP ++\fB\-v\fP, \fB\-\-version\fP + Prints the program version. + .TP .7i +-\fB-V\fP, \fB--verbose\fP ++\fB\-V\fP, \fB\-\-verbose\fP + Prints out a detailed progress report. + .TP .7i +-\fB-X\fP, \fB--xonxoff\fP ++\fB\-X\fP, \fB\-\-xonxoff\fP + Uses software handshaking (XON/XOFF) for accessing the device. + .TP .7i +-\fB-y\fP, \fB--synchronize\fP ++\fB\-y\fP, \fB\-\-synchronize\fP + This causes the contents of the source to be synchronized with the + destination (default). Synchronization in this context means: + .TP .2i +@@ -188,7 +188,7 @@ + \fIindex\fP + The index of the entry which must be a positive number. The index may + also be empty. Indices can be used in conjunction with the +-\fB--index\fP option to store the entry into a specific position in ++\fB\-\-index\fP option to store the entry into a specific position in + the mobile phone. + .TP .7i + \fItext\fP +@@ -199,7 +199,7 @@ + encoded using the GSM default alphabet (see comments above). + .TP .7i + \fIphone number\fP +-Phone numbers can only contains the digits 0-9 and the '+' sign. A '+' ++Phone numbers can only contains the digits 0\-9 and the '+' sign. A '+' + sign denotes an international number. + .PP + .SH EXAMPLES +@@ -207,8 +207,8 @@ + SIM phonebook with the file $HOME/.phonebook: + .PP + .nf +-gsmpb --synchronize -b 19200 -d /dev/mobilephone \\ +- -s $HOME/.phonebook -p "SM" ++gsmpb \-\-synchronize \-b 19200 \-d /dev/mobilephone \\ ++ \-s $HOME/.phonebook \-p "SM" + .fi + .PP + .SH AUTHOR +--- gsmlib-1.10.orig/debian/compat ++++ gsmlib-1.10/debian/compat +@@ -0,0 +1 @@ ++4 +--- gsmlib-1.10.orig/debian/gsm-utils.cron.d ++++ gsmlib-1.10/debian/gsm-utils.cron.d +@@ -0,0 +1,3 @@ ++# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils ++ ++*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi +--- gsmlib-1.10.orig/debian/copyright ++++ gsmlib-1.10/debian/copyright +@@ -0,0 +1,34 @@ ++This package was debianized by Mikael Hedin on ++Thu, 14 Dec 2000 01:06:40 +0100. ++ ++It was downloaded from http://www.pxh.de/fs/gsmlib/index.html ++ ++Upstream Author: Peter Hofmann ++ ++ext/gsmsiexfer.cc:// * Author: Christian W. Zuckschwerdt ++ ++Copyright: ++ ++ Copyright (C) 1999-2002 Peter Hofmann ++ ++License: ++ ++ This package is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2 of the License, or (at your option) any later version. ++ ++ This package 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 ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this package; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++On Debian systems, the complete text of the GNU Lesser General ++Public License can be found in `/usr/share/common-licenses/LGPL'. ++ ++The Debian packaging is (C) 2000, Mikael Hedin and ++is licensed under the GPL, see `/usr/share/common-licenses/GPL'. +--- gsmlib-1.10.orig/debian/gsm-utils.dirs ++++ gsmlib-1.10/debian/gsm-utils.dirs +@@ -0,0 +1,11 @@ ++var/spool/sms/queue1 ++var/spool/sms/queue2 ++var/spool/sms/queue3 ++var/spool/sms/sent1 ++var/spool/sms/sent2 ++var/spool/sms/sent3 ++var/spool/sms/failed1 ++var/spool/sms/failed2 ++var/spool/sms/failed3 ++var/spool/sms/tmp ++var/run/gsm-utils +--- gsmlib-1.10.orig/debian/gsm-utils.default ++++ gsmlib-1.10/debian/gsm-utils.default +@@ -0,0 +1,18 @@ ++PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 ++BAUDRATE=9600 ++PIN="" # or 1234 ++ ++# RUNGSMSMS: If set to anything other that 'yes', the asterisk init.d script ++# will not run. The default is 'yes'. ++# You should probaly also install the crontab from /usr/share/doc/gsm-utils/examples ++RUNGSMSMS=no ++ ++SPOOLDIR=/var/spool/sms ++PRIORITIES=3 ++ ++SMSADMIN=root ++SUBJECT="SMS delivery report:" ++ ++SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor ++ ++do_accounting () { true; } # it's your turn +--- gsmlib-1.10.orig/debian/watch ++++ gsmlib-1.10/debian/watch +@@ -0,0 +1,2 @@ ++version=2 ++http://www.pxh.de/fs/gsmlib/download/content.html gsmlib-(.*)\.tar\.gz +--- gsmlib-1.10.orig/debian/gsm-utils.postinst ++++ gsmlib-1.10/debian/gsm-utils.postinst +@@ -0,0 +1,28 @@ ++#!/bin/sh -e ++ ++# create gsmsms group if necessary. ++if ! grep -q ^gsmsms: /etc/group; then ++# echo Adding system group: gsmsms. ++ addgroup --system gsmsms ++fi ++ ++# create gsmsms user if necessary. ++if ! grep -q ^gsmsms: /etc/passwd; then ++# echo Adding system user: gsmsms. ++ adduser --system --ingroup gsmsms \ ++ --no-create-home --home /var/spool/sms gsmsms ++fi ++ ++# allow gsmsms to use serial lines ++if ! groups gsmsms | grep -q dialout ; then ++ adduser gsmsms dialout ++fi ++ ++# echo Updating spool directory structure: /var/spool/sms ++chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils ++chmod 700 /var/spool/sms/* ++chmod 750 /var/spool/sms ++chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp ++ ++# Add the rest automatically.. ++#DEBHELPER# +--- gsmlib-1.10.orig/debian/control ++++ gsmlib-1.10/debian/control +@@ -0,0 +1,45 @@ ++Source: gsmlib ++Section: comm ++Priority: extra ++Maintainer: Mark Purcell ++Build-Depends: debhelper (>= 3.0.0), chrpath ++Standards-Version: 3.7.3 ++Homepage: http://www.pxh.de/fs/gsmlib/ ++ ++Package: libgsmme-dev ++Section: libdevel ++Architecture: any ++Depends: libgsmme1c2a (= ${binary:Version}), libc6-dev ++Description: Header files and static libraries for gsmlib ++ Headers and static libraries for use when compiling programs with ++ gsmlib. ++ . ++ gsmlib is a library for access to a GSM mobile phone using the ++ standards ETSI GSM 07.07, ETSI GSM 07.05, and others. ++ ++Package: libgsmme1c2a ++Conflicts: libgsmme1, libgsmme1c102, libgsmme1c2 ++Replaces: libgsmme1c102, libgsmme1c2 ++Section: libs ++Architecture: any ++Depends: ${shlibs:Depends} ++Description: GSM mobile phone access library ++ Library to access GSM mobile phones through GSM modems or IrDA devices. ++ Features include: ++ . ++ * modification of phone books stored in the mobile phone or on the ++ SIM card ++ * reading and writing of SMS messages stored in the mobile phone ++ * sending and reception of SMS messages ++ . ++ gsmlib uses standard ETSI GSM 07.07, ETSI GSM 07.05, and others. ++ ++Package: gsm-utils ++Section: comm ++Architecture: any ++Depends: ${shlibs:Depends}, adduser ++Description: GSM mobile phone access applications ++ Some simple command line programs to access a GSM mobile phone via ++ GSM modem or IrDA. Functions include: modification of phone books and ++ reading, writing, sending and receiving SMS messages. Uses the GSM ++ standards ETSI GSM 07.07, ETSI GSM 07.05, and others. +--- gsmlib-1.10.orig/debian/gsm-utils.postrm ++++ gsmlib-1.10/debian/gsm-utils.postrm +@@ -0,0 +1,43 @@ ++#!/bin/sh ++# postrm script for #PACKAGE# ++# ++# see: dh_installdeb(1) ++ ++set -e ++ ++# summary of how this script can be called: ++# * `remove' ++# * `purge' ++# * `upgrade' ++# * `failed-upgrade' ++# * `abort-install' ++# * `abort-install' ++# * `abort-upgrade' ++# * `disappear' ++# ++# for details, see http://www.debian.org/doc/debian-policy/ or ++# the debian-policy package ++ ++ ++case "$1" in ++ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ++ ;; ++ ++ purge) ++ deluser gsmsms ++ ;; ++ ++ *) ++ echo "postrm called with unknown argument \`$1'" >&2 ++ exit 1 ++ ;; ++esac ++ ++# dh_installdeb will replace this with shell code automatically ++# generated by other debhelper scripts. ++ ++#DEBHELPER# ++ ++exit 0 ++ ++ +--- gsmlib-1.10.orig/debian/gsmsiexfer.1 ++++ gsmlib-1.10/debian/gsmsiexfer.1 +@@ -0,0 +1,29 @@ ++.\" -*- eval: (nroff-mode) -*- ++.de TQ ++.br ++.ns ++.TP \\$1 ++.. ++.\" Like TP, but if specified indent is more than half ++.\" the current line-length - indent, use the default indent. ++.de Tp ++.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP ++.el .TP "\\$1" ++.. ++.TH GSMSIEXFER 1 "" "gsmsiexfer" ++.SH NAME ++gsmsiexfer \- Siemens ME file transfer program for Siemens phones S25, S35, S45, ME45, SL45 ++.SH SYNOPSIS ++.B gsmsiexfer \-\-help ++.PP ++.SH DESCRIPTION ++\fIgsmsiexer\fP comes with no man page. Try gsmsiexfer \-\-help, or ++read the source. ++.PP ++.SH "SEE ALSO" ++.BR gsminfo(7), ++.BR gsmctl(1), ++.BR gsmsendsms(1), ++.BR gsmsmsd(8), ++.BR gsmsmsstore(1). ++ +--- gsmlib-1.10.orig/debian/gsm-utils.examples ++++ gsmlib-1.10/debian/gsm-utils.examples +@@ -0,0 +1,2 @@ ++contrib/gsm-utils.cron.d ++contrib/gsm-utils.init +--- gsmlib-1.10.orig/debian/dirs ++++ gsmlib-1.10/debian/dirs +@@ -0,0 +1 @@ ++/var/run/gsm-utils +--- gsmlib-1.10.orig/debian/libgsmme-dev.docs ++++ gsmlib-1.10/debian/libgsmme-dev.docs +@@ -0,0 +1,2 @@ ++doc/README.developers ++doc/README.NLS +--- gsmlib-1.10.orig/debian/gsm-utils.init ++++ gsmlib-1.10/debian/gsm-utils.init +@@ -0,0 +1,87 @@ ++#! /bin/sh ++### BEGIN INIT INFO ++# Provides: gsm-utils ++# Required-Start: $remote_fs $syslog ++# Required-Stop: $remote_fs $syslog ++# Default-Start: 2 3 4 5 ++# Default-Stop: 0 1 6 ++# Short-Description: Start daemon at boot time ++# Description: Enable service provided by daemon. ++### END INIT INFO ++# ++# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon ++# ++# written by Matthias Goebl ++ ++PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ++DAEMON=/usr/bin/gsmsmsd ++NAME=gsmsmsd ++DESC="GSM SMS send daemon" ++ ++test -x $DAEMON || exit 0 ++ ++if [ "$RUNGSMSMS" != "yes" ];then ++ echo "GSM SMS deamon not yet configured. Edit /etc/default/gsm-utils first." ++ exit 0 ++fi ++ ++ ++PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 ++BAUDRATE=9600 ++PIN="" # or 1234 ++SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor ++SPOOLDIR=/var/spool/sms ++PRIORITIES=3 ++STARTOPTS="" ++SMSUSER="gsmsms:gsmsms" ++test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters ++ ++OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" ++OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" ++test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" ++test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" ++test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS ++ ++case "$1" in ++ start) ++ echo -n "Starting $DESC: " ++ if [ -n "$PIN" ];then ++ echo -n "entering PIN.. " ++ ( ++ # This is ugly.. But if the PIN is already entered, the ME returns ++ # "ERROR" and makes gsmctl retrying.. ++ /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & ++ PID=$! ++ sleep 3 ++ kill $PID 2>/dev/null ++ ) >/dev/null 2>&1 ++ fi ++ echo -n "$NAME" ++ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS ++ echo "." ++ ;; ++ stop) ++ echo -n "Stopping $DESC: $NAME " ++ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --exec $DAEMON ++ sleep 5 ++ echo "." ++ ;; ++ restart|force-reload) ++ echo -n "Restarting $DESC: $NAME" ++ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --make-pidfile --background --exec $DAEMON -- $OPTIONS ++ sleep 5 ++ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS ++ echo "." ++ ;; ++ *) ++ N=/etc/init.d/gsm-utils ++ echo "Usage: $N {start|stop|restart|force-reload}" >&2 ++ exit 1 ++ ;; ++esac ++ ++exit 0 +--- gsmlib-1.10.orig/debian/changelog ++++ gsmlib-1.10/debian/changelog +@@ -0,0 +1,284 @@ ++gsmlib (1.10-13) unstable; urgency=low ++ ++ * Ack NMU, Thanks Michael, Christoph & Petter ++ * debian/control add Homepage: ++ * Update debian/copyright; gsm-lib/COPYING actually specifies LGPL: ++ - fixes lintian:copyright-without-copyright-notice ++ * Update manpages fixes lintian:hyphen-used-as-minus-sign ++ * Update debian/gsm-utils.init ++ - fixes lintian:init.d-script-missing-lsb-short-description ++ * Bug fixes from ubuntu ++ - Don't install contrib/gsm-utils.init dh_installinit debian/gsm-utils.init ++ - Create /var/run/gsm-utils ++ * Add case 'L' to apps/gsmsmsd.cc - thks to Andrew Suffield ++ - syslog support does not work (Closes: #346240) ++ * gsm-utils.init really call restart with --stop first ++ - init script calls --start twice (Closes: #377448) ++ * Explictly set /bin/bash: gsmsmsspool & gsmsmsrequeue ++ - bashism in /bin/sh script (Closes: #464981) ++ - gsmsmsrequeue contains bashism or function error (Closes: #459396) ++ * Patch apps/gsmsmsstore.cc - thks Isaac Wilcox ++ - gsmsmsstore device existence check causes problems with RFCOMM ++ devices (Closes: #340179) ++ * Only start gsmsmsd if set in /etc/default/gsm-utils. crontab -> examples ++ - gsmsmsd should be optional / start only if told so in ++ /etc/default/gsm-utils (Closes: #474093) ++ * Apply patch from Stefan Katerkamp & Jacob Nevins ++ - Gsmsendsms fails with SonyEricsson W880 (fix included) (Closes: ++ #413341) ++ ++ -- Mark Purcell Mon, 06 Oct 2008 15:01:49 +1100 ++ ++gsmlib (1.10-12.5) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Yet another bashism that was later on reported on the old bug report, thus ++ again closes: #464981 ++ * Also found a shell related problem in debian/rules and fixed it. ++ * Bumped standard to 3.7.3. ++ ++ -- Michael Meskes Mon, 14 Apr 2008 10:48:19 +0200 ++ ++gsmlib (1.10-12.4) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Argh, somehow I mananged to upload without fixing the bug completely, ++ sorry. Added those missing braces, closes: #464981. ++ ++ -- Michael Meskes Wed, 09 Apr 2008 14:46:08 +0200 ++ ++gsmlib (1.10-12.3) unstable; urgency=high ++ ++ * Non-maintainer upload. ++ * Removed bashism in contrib/gsmsmsrequeue (Closes: #464981). ++ ++ -- Michael Meskes Sun, 06 Apr 2008 15:37:35 +0200 ++ ++gsmlib (1.10-12.2) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Fix FTBFS with GCC 4.3: 'strerror' was not declared in this scope, thanks ++ to Cyril Brulebois for the patch (Closes: #455402). ++ ++ -- Christoph Berg Fri, 04 Apr 2008 18:01:05 +0200 ++ ++gsmlib (1.10-12.1) unstable; urgency=low ++ ++ * Non-maintainer upload to solve release goal. ++ * Add LSB dependency header to init.d scripts (Closes: #464061). ++ ++ -- Petter Reinholdtsen Fri, 28 Mar 2008 11:39:20 +0100 ++ ++gsmlib (1.10-12) unstable; urgency=low ++ ++ * addgroup --system gsmsms works better. Thanks Jon ++ * only delete gsmsms on purge ++ - gsm-utils: deletes and recreates the gsmsms user on each upgrade ++ (Closes: #346238) ++ - gsm-utils fails installation / addgroup: The user gsmsms; does ++ not exist (Closes: #445404) ++ * lintian cleanup: debian-rules-ignores-make-clean-error substvar- ++ source-version-is-deprecated ++ * Scripts are installed +x ++ - gsm-utils: uselessly installs non-executable scripts into /usr/bin ++ (Closes: #346230) ++ * Remove bogus symlink ++ - gsm-utils: wrong symlink for manpage gsmsiectl.1 (Closes: #322382) ++ - gsm-utils: gsmsiectl.1 dangling symlink (Closes: #399582) ++ * debian/gsm-utils.init reload/restart was not calling --stop. Thanks ++ Barry ++ - init script calls --start twice (Closes: #377448) ++ ++ -- Mark Purcell Mon, 08 Oct 2007 21:44:00 +0100 ++ ++gsmlib (1.10-11) unstable; urgency=low ++ ++ * Create system group gsmsms - Thanks Emmanuel ++ - gsm-utils: creates group in non-system gid range (Closes: #353967) ++ - gsm-utils: postinst should create system grp gsmsms (Closes: ++ #390266) ++ * Upgrade to compat 4 ++ * Apply gcc-4.3 patch from Martin ++ - FTBFS with GCC 4.3: missing #includes (Closes: #417222) ++ ++ -- Mark Purcell Sat, 29 Sep 2007 18:22:56 +0100 ++ ++gsmlib (1.10-10) unstable; urgency=low ++ ++ * FTBFS with G++ 4.1: extra qualifications (Closes: #356109) ++ ++ -- Mark Purcell Sat, 20 May 2006 21:54:42 +0100 ++ ++gsmlib (1.10-9) unstable; urgency=low ++ ++ * library package needs to be renamed (libstdc++ allocator change) ++ (Closes: #339179) ++ ++ -- Mark Purcell Mon, 21 Nov 2005 21:19:51 +0000 ++ ++gsmlib (1.10-8) unstable; urgency=low ++ ++ * removal of automake1.6 (Closes: #335123) ++ * fails with dash [bashisms in scripts] (Closes: #309834) ++ * Update libtool Fixes: gsmlib(GNU/k*BSD): FTBFS: out of date libtool scripts (Closes: ++ #319688) ++ * [INTL:de] German PO file corrections (Closes: #314060) ++ * Fix: old-fsf-address-in-copyright-file ++ ++ -- Mark Purcell Thu, 3 Nov 2005 22:40:19 +0000 ++ ++gsmlib (1.10-7) unstable; urgency=low ++ ++ * C++ 4.0 transition ++ * Closes: #315864: Missing manpages ++ * gsm-utils: maintainer-script-needs-depends-on-adduser postinst ++ ++ -- Mark Purcell Sat, 23 Jul 2005 00:46:31 +1000 ++ ++gsmlib (1.10-6) unstable; urgency=low ++ ++ * Rebuild for invalid dependancies ++ * Closes: #258056: libgsmme 99% cpu usage ++ - Patch from Emard ++ * Closes: #274382: FTBFS with gcc-3.4: template-id `operator< ++ <>' for `bool gsmlib::operator<(const ++ gsmlib::MapKey<gsmlib::SortedPhonebookBase>&, const ++ gsmlib::MapKey<gsmlib::SortedPhonebookBase>&)' does not ++ match any template declaration ++ - Patch from Andreas Jochens ++ * Closes: #294251: FTBFS (amd64/gcc-4.0): explicit qualification in ++ declaration of `bool gsmlib::operator<(const ++ gsmlib::MapKey<SortedStore>&, const ++ gsmlib::MapKey<SortedStore>&)' ++ - Patch from Andreas Jochens ++ * Closes: #200189: Patch and contribution ++ + Added multi-queue-priority-system and syslog patch (Matthias Goebl) ++ + Included init, spool and requeue scripts for gsmsmsd (Matthias Goebl) ++ + gsmsmsd runs with own user and group (gsmsms:gsmsms) (Matthias Goebl) ++ ++ -- Mark Purcell Tue, 17 May 2005 11:34:45 +0100 ++ ++gsmlib (1.10-5) unstable; urgency=low ++ ++ * Change Section: libdevel ++ * gsm_unix_serial.cc patch from Daniel Schepler to fix g++-3.3 ++ compliation. Thanks. (Closes: Bug#195151) ++ ++ -- Mark Purcell Sat, 19 Jul 2003 15:57:28 +1000 ++ ++gsmlib (1.10-4) unstable; urgency=low ++ ++ * Include file descriptor leak patch from Edd Dumbill (Closes: ++ Bug#168475) ++ * lintian cleanup: description-synopsis-might-not-be-phrased-properly ++ * lintian cleanup: configure-generated-file-in-source ++ ++ -- Mark Purcell Sun, 9 Feb 2003 14:04:54 +1100 ++ ++gsmlib (1.10-3) unstable; urgency=low ++ ++ * New Maintainer (Closes: Bug#180061). Thanks Mikael for your work. ++ ++ -- Mark Purcell Sat, 8 Feb 2003 16:55:26 +1100 ++ ++gsmlib (1.10-2) unstable; urgency=low ++ ++ * Rebuild to use the new c++ ABI (GCC 3.2) ++ ++ -- Mikael Hedin Thu, 23 Jan 2003 20:57:50 +0100 ++ ++gsmlib (1.10-1) unstable; urgency=low ++ ++ * New upstrem release. ++ ++ -- Mikael Hedin Wed, 6 Nov 2002 17:44:17 +0100 ++ ++gsmlib (1.9-2) unstable; urgency=low ++ ++ * Made new rules for the config.guess/sub update thing (closes: #146865, ++ #146867). ++ ++ -- Mikael Hedin Tue, 14 May 2002 09:28:03 +0200 ++ ++gsmlib (1.9-1) unstable; urgency=low ++ ++ * New upstream version. ++ * Use chrpath to get rid of rpaths. ++ * Add mini-manpage for gsmsiexfer. ++ * Remove b-d on auto-stuff, we don't use them. ++ ++ -- Mikael Hedin Mon, 13 May 2002 22:10:28 +0200 ++ ++gsmlib (1.8-2) unstable; urgency=low ++ ++ * Removed b-d on gcc 3.0, as they are no longer nessecary. ++ ++ -- Mikael Hedin Thu, 24 Jan 2002 12:59:07 +0100 ++ ++gsmlib (1.8-1) unstable; urgency=low ++ ++ * New upstream version. ++ * Revert the arch hack, now it should compile with either g++. ++ * Include the new lib in libgsmme1. Run dh_makeshlibs -V because of this. ++ * Added info for gsmsiectl in gsmctl(1). ++ ++ -- Mikael Hedin Wed, 9 Jan 2002 22:38:45 +0100 ++ ++gsmlib (1.7-2) unstable; urgency=low ++ ++ * gsm-utils: Added shlibs:Depends (closes: #126127). ++ * Spelling correction (closes: #124705, #124972) ++ * Rm libgsmme1.postins, and let dh_makeshlibs take care of ldconfig. ++ * Made explicit arch list without sparc and arm, they cannot use g++-3.0 ++ right now. ++ ++ -- Mikael Hedin Sat, 22 Dec 2001 20:27:54 +0100 ++ ++gsmlib (1.7-1) unstable; urgency=low ++ ++ * New upstream ++ * Use gcc-3.0 and g++-3.0, 2.95 doesn't compile. ++ ++ -- Mikael Hedin Thu, 1 Nov 2001 10:24:33 +0100 ++ ++gsmlib (1.6-5) unstable; urgency=low ++ ++ * Updated manpage (closes: #110973) ++ * Corrected problem with OP status (closes: #110970) ++ ++ -- Mikael Hedin Sat, 8 Sep 2001 18:12:17 +0200 ++ ++gsmlib (1.6-4) unstable; urgency=low ++ ++ * Support DEB_BUILD_OPTIONS ++ * Changed libgsmme-dev to section devel. ++ * Reran libtoolize. ++ * Lots of small patches to compile with g++-3.0. (Closes: #104411) ++ * Removed dh_testversion. ++ ++ -- Mikael Hedin Thu, 12 Jul 2001 16:06:23 +0200 ++ ++gsmlib (1.6-3) unstable; urgency=low ++ ++ * Various minor corrections. ++ ++ -- Mikael Hedin Thu, 8 Mar 2001 16:24:07 +0100 ++ ++gsmlib (1.6-2) unstable; urgency=low ++ ++ * Dont install INSTALL. Correct indentation for libgsmme1 description. ++ ++ -- Mikael Hedin Tue, 6 Mar 2001 14:55:05 +0100 ++ ++gsmlib (1.6-1) unstable; urgency=low ++ ++ * New upstream version. ++ ++ -- Mikael Hedin Mon, 29 Jan 2001 17:57:21 +0100 ++ ++gsmlib (1.5-1) unstable; urgency=low ++ ++ * Initial Release. ++ ++ -- Mikael Hedin Thu, 14 Dec 2000 01:06:40 +0100 ++ +--- gsmlib-1.10.orig/debian/gsm-utils.docs ++++ gsmlib-1.10/debian/gsm-utils.docs +@@ -0,0 +1,4 @@ ++NEWS ++README ++TODO ++doc/FAQ +--- gsmlib-1.10.orig/debian/rules ++++ gsmlib-1.10/debian/rules +@@ -0,0 +1,129 @@ ++#!/usr/bin/make -f ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++# shared library versions, option 1 ++#version=2.0.5 ++#major=2 ++# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so ++me_version=`ls gsmlib/.libs/libgsmme*.so.* | \ ++ awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` ++me_major=`ls gsmlib/.libs/libgsmme*.so.* | \ ++ awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` ++ex_version=`ls ext/.libs/libgsmext*.so.* | \ ++ awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` ++ex_major=`ls ext/.libs/libgsmext*.so.* | \ ++ awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` ++ ++ ++export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) ++export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ++ ++ ++# FOR AUTOCONF 2.13 ONLY ++ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) ++ confflags += $(DEB_HOST_GNU_TYPE) ++else ++ confflags += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE) ++endif ++ ++ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) ++CFLAGS += -g ++CXXFLAGS += -g ++endif ++ ++configure: configure-stamp ++configure-stamp: ++ dh_testdir ++ # Add here commands to configure the package. ++ CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" INSTALL_PROGRAM=$(INSTALL_PROGRAM) \ ++ ./configure $(confflags) --prefix=/usr --mandir=\$${prefix}/share/man \ ++ --infodir=\$${prefix}/share/info ++ ++ touch configure-stamp ++ ++build: configure-stamp build-stamp ++build-stamp: ++ dh_testdir ++ ++ # Add here commands to compile the package. ++ $(MAKE) ++ ++ touch build-stamp ++ ++clean: ++ dh_testdir ++ dh_testroot ++ ++ # Add here commands to clean up after the build process. ++ [ ! -f Makefile ] || $(MAKE) distclean ++ rm -f build-stamp configure-stamp config.log config.status po/de.gmo ++ ++ -test -r /usr/share/misc/config.sub && \ ++ cp -f /usr/share/misc/config.sub scripts/config.sub ++ -test -r /usr/share/misc/config.guess && \ ++ cp -f /usr/share/misc/config.guess scripts/config.guess ++ ++ dh_clean ++ ++install: build ++ dh_testdir ++ dh_testroot ++ dh_clean -k ++ dh_installdirs ++ dh_installdirs -pgsm-utils ++ ++ # Add here commands to install the package into debian/gsmlib. ++ $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp ++ chrpath -d debian/tmp/usr/bin/* ++ cp contrib/gsmsmsspool contrib/gsmsmsrequeue debian/tmp/usr/bin ++ ++ ++# Build architecture-independent files here. ++binary-indep: build install ++# We have nothing to do by default. ++ ++# Build architecture-dependent files here. ++binary-arch: build install ++ dh_testdir ++ dh_testroot ++ # ++ # build libgsmlib${major} package by moving files from gsmlib-dev ++ # ++ dh_movefiles -plibgsmme$(me_major)c2a \ ++ usr/lib/libgsmme.so.$(me_major) \ ++ usr/lib/libgsmme.so.$(me_version) \ ++ usr/lib/libgsmext.so.$(ex_major) \ ++ usr/lib/libgsmext.so.$(ex_version) \ ++ usr/share/locale ++ ++ dh_movefiles -plibgsmme-dev \ ++ usr/include \ ++ usr/lib ++ ++ dh_movefiles -pgsm-utils \ ++ usr/bin ++ ++ ++ dh_installdocs ++ dh_installexamples ++ dh_installmenu ++ dh_installinit ++ dh_installcron ++ dh_installman -pgsm-utils debian/*.1 debian/tmp/usr/share/man/man*/* ++ dh_installinfo ++ dh_installchangelogs ChangeLog ++ dh_link ++ dh_strip ++ dh_compress ++ dh_fixperms ++ dh_makeshlibs -V ++ dh_installdeb ++ dh_shlibdeps -ldebian/libgsmme1c2a/usr/lib ++ dh_gencontrol ++ dh_md5sums ++ dh_builddeb ++ ++binary: binary-indep binary-arch ++.PHONY: build clean binary-indep binary-arch binary install configure +--- gsmlib-1.10.orig/contrib/gsmsmsrequeue ++++ gsmlib-1.10/contrib/gsmsmsrequeue +@@ -0,0 +1,48 @@ ++#! /bin/bash ++# ++# /usr/bin/gsmsmsrequeue: Re-queues failed SMS ++# ++# written by Matthias Goebl ++ ++SPOOLDIR=/var/spool/sms ++PRIORITIES=3 ++SMSADMIN=root ++SUBJECT="SMS delivery report:" ++ ++send_notify() ++{ ++ tmpfile="$SPOOLDIR/tmp/"`basename "$1"` ++ status="$2" ++ if mv "$1" "$tmpfile" 2>/dev/null; then ++ # extract the first tab-separated field after the phone number as ++ # email-address to send the notification to ++ mailto=` cat "$tmpfile" | sed -ne '1s/^[^ ]* \([^ ]*\).*/\1/p' ` ++ test -z "$mailto" && mailto="$SMSADMIN" ++ cat "$tmpfile" | mail -s "$SUBJECT $status" "$mailto" ++ rm "$tmpfile" ++ fi ++} ++do_accounting() ++{ ++ true; ++} ++ ++test -r /etc/default/gsm-utils && . /etc/default/gsm-utils ++ ++for p in `seq 1 $PRIORITIES`; do ++ ls "$SPOOLDIR/failed$p" | while read file; do ++ if expr "$file" : ".*rrrrrrrrrrrr" >/dev/null; then ++ send_notify "$SPOOLDIR/failed$p/$file" "failed" ++ else ++ # re-queue SMS ++ mv "$SPOOLDIR/failed$p/$file" "$SPOOLDIR/queue$p/${file}r" 2>/dev/null ++ fi ++ done ++done ++ ++for p in `seq 1 $PRIORITIES`; do ++ ls "$SPOOLDIR/sent$p" | while read file; do ++ do_accounting "$SPOOLDIR/sent$p/$file" "sent" ++ send_notify "$SPOOLDIR/sent$p/$file" "sent" ++ done ++done +--- gsmlib-1.10.orig/contrib/gsm-utils.cron.d ++++ gsmlib-1.10/contrib/gsm-utils.cron.d +@@ -0,0 +1,3 @@ ++# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils ++ ++*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi +--- gsmlib-1.10.orig/contrib/gsm-utils.default ++++ gsmlib-1.10/contrib/gsm-utils.default +@@ -0,0 +1,13 @@ ++PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 ++BAUDRATE=9600 ++PIN="" # or 1234 ++ ++SPOOLDIR=/var/spool/sms ++PRIORITIES=3 ++ ++SMSADMIN=root ++SUBJECT="SMS delivery report:" ++ ++SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor ++ ++do_accounting () { true; } # it's your turn +--- gsmlib-1.10.orig/contrib/gsmsmsspool ++++ gsmlib-1.10/contrib/gsmsmsspool +@@ -0,0 +1,34 @@ ++#! /bin/bash ++# ++# /usr/bin/gsmsmsspool: Queues SMS for sending ++# ++# written by Matthias Goebl ++ ++SPOOLDIR=/var/spool/sms ++PRIORITIES=3 ++test -r /etc/default/gsm-utils && . /etc/default/gsm-utils ++ ++if [ -z "$1" ]; then ++ echo "Usage: gsmsmsspool NUMBER [MESSAGE]" ++ exit 1 ++fi ++ ++priority=$PRIORITIES # default priority ++test -n "$GSMSMS_PRIORITY" && priority="$GSMSMS_PRIORITY" ++mailto=`id -un` ++test -n "$GSMSMS_NOTIFY" && mailto="$GSMSMS_NOTIFY" ++ ++tmpfile="$SPOOLDIR/tmp/`date +%s`.$$" ++umask 022 ++echo "$1 $mailto" > "$tmpfile" ++if [ -n "$2" ]; then ++ echo "$2" | head -c 160 >> "$tmpfile" ++else ++ head -c 160 >> "$tmpfile" ++fi ++ ++if [ "`id -un`" = "root" ]; then ++ chown gsmsms:gsmsms "$tmpfile" ++fi ++ ++mv "$tmpfile" "$SPOOLDIR/queue$priority/" +--- gsmlib-1.10.orig/contrib/gsm-utils.init ++++ gsmlib-1.10/contrib/gsm-utils.init +@@ -0,0 +1,81 @@ ++#! /bin/sh ++### BEGIN INIT INFO ++# Provides: gsm-utils ++# Required-Start: $remote_fs $syslog ++# Required-Stop: $remote_fs $syslog ++# Default-Start: 2 3 4 5 ++# Default-Stop: 0 1 6 ++# Short-Description: Start daemon at boot time ++# Description: Enable service provided by daemon. ++### END INIT INFO ++# ++# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon ++# ++# written by Matthias Goebl ++ ++PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ++DAEMON=/usr/bin/gsmsmsd ++NAME=gsmsmsd ++DESC="GSM SMS send daemon" ++ ++test -x $DAEMON || exit 0 ++ ++PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 ++BAUDRATE=9600 ++PIN="" # or 1234 ++SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor ++SPOOLDIR=/var/spool/sms ++PRIORITIES=3 ++STARTOPTS="" ++SMSUSER="gsmsms:gsmsms" ++test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters ++ ++OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" ++OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" ++test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" ++test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" ++test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS ++ ++case "$1" in ++ start) ++ echo -n "Starting $DESC: " ++ if [ -n "$PIN" ];then ++ echo -n "entering PIN.. " ++ ( ++ # This is ugly.. But if the PIN is already entered, the ME returns ++ # "ERROR" and makes gsmctl retrying.. ++ /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & ++ PID=$! ++ sleep 3 ++ kill $PID 2>/dev/null ++ ) >/dev/null 2>&1 ++ fi ++ echo -n "$NAME" ++ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS ++ echo "." ++ ;; ++ stop) ++ echo -n "Stopping $DESC: $NAME " ++ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --exec $DAEMON ++ sleep 5 ++ echo "." ++ ;; ++ restart|force-reload) ++ echo -n "Restarting $DESC: $NAME" ++ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS ++ sleep 5 ++ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ ++ --make-pidfile --background --exec $DAEMON -- $OPTIONS ++ echo "." ++ ;; ++ *) ++ N=/etc/init.d/gsm-utils ++ echo "Usage: $N {start|stop|restart|force-reload}" >&2 ++ exit 1 ++ ;; ++esac ++ ++exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c3e2c3bb743da9a3ff5fd23c22226e7e9c20d6c2 GIT binary patch literal 474591 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

y?NWl|-xxOBP>;aWs+( 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�tXTZ`Nv+9T#Ymn-Q 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‰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�$k_J@TZ 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 literal 0 HcmV?d00001 From 3df7a04df5ddcaeb101809155484f09d04f7ae78 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 17 Apr 2012 20:11:44 +0200 Subject: [PATCH 163/630] gsmopen: added win_iconv --- .../endpoints/mod_gsmopen/win_iconv/Makefile | 72 + .../endpoints/mod_gsmopen/win_iconv/iconv.def | 24 + .../endpoints/mod_gsmopen/win_iconv/iconv.h | 5 + .../endpoints/mod_gsmopen/win_iconv/mlang.def | 11 + .../endpoints/mod_gsmopen/win_iconv/mlang.h | 54 + .../mod_gsmopen/win_iconv/readme.txt | 3 + .../mod_gsmopen/win_iconv/win_iconv.c | 1986 +++++++++++++++++ .../mod_gsmopen/win_iconv/win_iconv_test.c | 261 +++ 8 files changed, 2416 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/Makefile create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/iconv.def create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/iconv.h create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/mlang.def create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/mlang.h create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/readme.txt create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv_test.c diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/Makefile b/src/mod/endpoints/mod_gsmopen/win_iconv/Makefile new file mode 100644 index 0000000000..c0969f607f --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/Makefile @@ -0,0 +1,72 @@ + +# comma separated list (e.g. "iconv.dll,libiconv.dll") +DEFAULT_LIBICONV_DLL ?= \"\" + +CFLAGS += -pedantic -Wall +CFLAGS += -DUSE_LIBICONV_DLL +CFLAGS += -DDEFAULT_LIBICONV_DLL=$(DEFAULT_LIBICONV_DLL) + +all: iconv.dll libiconv.a win_iconv.exe + +dist: test win_iconv.zip + +iconv.dll: win_iconv.c + gcc $(CFLAGS) -c win_iconv.c -DMAKE_DLL + dllwrap --dllname iconv.dll --def iconv.def win_iconv.o $(SPECS_FLAGS) + strip iconv.dll + +libiconv.a: win_iconv.c + gcc $(CFLAGS) -c win_iconv.c + ar rcs libiconv.a win_iconv.o + ranlib libiconv.a + +win_iconv.exe: win_iconv.c + gcc $(CFLAGS) -s -o win_iconv.exe win_iconv.c -DMAKE_EXE + +libmlang.a: mlang.def + dlltool --kill-at --input-def mlang.def --output-lib libmlang.a + +test: + gcc $(CFLAGS) -s -o win_iconv_test.exe win_iconv_test.c + ./win_iconv_test.exe + +win_iconv.zip: msvcrt msvcr70 msvcr71 + rm -rf win_iconv + svn export . win_iconv + cp msvcrt/iconv.dll msvcrt/win_iconv.exe win_iconv/ + mkdir win_iconv/msvcr70 + cp msvcr70/iconv.dll win_iconv/msvcr70/ + mkdir win_iconv/msvcr71 + cp msvcr71/iconv.dll win_iconv/msvcr71/ + zip -r win_iconv.zip win_iconv + +msvcrt: + svn export . msvcrt; \ + cd msvcrt; \ + $(MAKE); + +msvcr70: + svn export . msvcr70; \ + cd msvcr70; \ + gcc -dumpspecs | sed s/-lmsvcrt/-lmsvcr70/ > specs; \ + $(MAKE) "SPECS_FLAGS=-specs=$$PWD/specs"; + +msvcr71: + svn export . msvcr71; \ + cd msvcr71; \ + gcc -dumpspecs | sed s/-lmsvcrt/-lmsvcr71/ > specs; \ + $(MAKE) "SPECS_FLAGS=-specs=$$PWD/specs"; + +clean: + rm -f win_iconv.exe + rm -f win_iconv.o + rm -f iconv.dll + rm -f libiconv.a + rm -f win_iconv_test.exe + rm -f libmlang.a + rm -rf win_iconv + rm -rf win_iconv.zip + rm -rf msvcrt + rm -rf msvcr70 + rm -rf msvcr71 + diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/iconv.def b/src/mod/endpoints/mod_gsmopen/win_iconv/iconv.def new file mode 100644 index 0000000000..f609c86a59 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/iconv.def @@ -0,0 +1,24 @@ +LIBRARY ICONV.DLL +EXPORTS + iconv + iconv_open + iconv_close + iconvctl + libiconv=iconv + libiconv_open=iconv_open + libiconv_close=iconv_close + libiconvctl=iconvctl +;; libiconv-1.11.dll +;; TODO for binary compatibility +; _libiconv_version @1 +; aliases2_lookup @2 +; aliases_lookup @3 +; iconv_canonicalize @4 +; libiconv @5 +; libiconv_close @6 +; libiconv_open @7 +; libiconv_relocate @8 +; libiconv_set_relocation_prefix @9 +; libiconvctl @10 +; libiconvlist @11 +; locale_charset @12 diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/iconv.h b/src/mod/endpoints/mod_gsmopen/win_iconv/iconv.h new file mode 100644 index 0000000000..7c941fe435 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/iconv.h @@ -0,0 +1,5 @@ +#include +typedef void* iconv_t; +iconv_t iconv_open(const char *tocode, const char *fromcode); +int iconv_close(iconv_t cd); +size_t iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/mlang.def b/src/mod/endpoints/mod_gsmopen/win_iconv/mlang.def new file mode 100644 index 0000000000..cb475aeea8 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/mlang.def @@ -0,0 +1,11 @@ +LIBRARY MLANG.DLL +EXPORTS + ConvertINetMultiByteToUnicode@24 + ;; ConvertINetReset (not documented) + ConvertINetString@28 + ConvertINetUnicodeToMultiByte@24 + IsConvertINetStringAvailable@8 + LcidToRfc1766A@12 + LcidToRfc1766W@12 + Rfc1766ToLcidA@8 + Rfc1766ToLcidW@8 diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/mlang.h b/src/mod/endpoints/mod_gsmopen/win_iconv/mlang.h new file mode 100644 index 0000000000..525f484e98 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/mlang.h @@ -0,0 +1,54 @@ +HRESULT WINAPI ConvertINetString( + LPDWORD lpdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + LPCSTR lpSrcStr, + LPINT lpnSrcSize, + LPBYTE lpDstStr, + LPINT lpnDstSize +); + +HRESULT WINAPI ConvertINetMultiByteToUnicode( + LPDWORD lpdwMode, + DWORD dwSrcEncoding, + LPCSTR lpSrcStr, + LPINT lpnMultiCharCount, + LPWSTR lpDstStr, + LPINT lpnWideCharCount +); + +HRESULT WINAPI ConvertINetUnicodeToMultiByte( + LPDWORD lpdwMode, + DWORD dwEncoding, + LPCWSTR lpSrcStr, + LPINT lpnWideCharCount, + LPSTR lpDstStr, + LPINT lpnMultiCharCount +); + +HRESULT WINAPI IsConvertINetStringAvailable( + DWORD dwSrcEncoding, + DWORD dwDstEncoding +); + +HRESULT WINAPI LcidToRfc1766A( + LCID Locale, + LPSTR pszRfc1766, + int nChar +); + +HRESULT WINAPI LcidToRfc1766W( + LCID Locale, + LPWSTR pszRfc1766, + int nChar +); + +HRESULT WINAPI Rfc1766ToLcidA( + LCID *pLocale, + LPSTR pszRfc1766 +); + +HRESULT WINAPI Rfc1766ToLcidW( + LCID *pLocale, + LPWSTR pszRfc1766 +); diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/readme.txt b/src/mod/endpoints/mod_gsmopen/win_iconv/readme.txt new file mode 100644 index 0000000000..c4fb7d692b --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/readme.txt @@ -0,0 +1,3 @@ +win_iconv is a iconv library using Win32 API to conversion. +win_iconv is placed in the public domain. +Yukihiro Nakadaira diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c b/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c new file mode 100644 index 0000000000..9d22da3f40 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c @@ -0,0 +1,1986 @@ +/* + * iconv library using Win32 API to conversion. + * + * This file is placed in the public domain. + * + * Last Change: 2009-07-06 + * + * ENVIRONMENT VARIABLE: + * WINICONV_LIBICONV_DLL + * If $WINICONV_LIBICONV_DLL is set, win_iconv uses the DLL. If + * loading the DLL or iconv_open() failed, falls back to internal + * conversion. If a few DLL are specified as comma separated list, + * the first loadable DLL is used. The DLL should have iconv_open(), + * iconv_close() and iconv(). Or libiconv_open(), libiconv_close() + * and libiconv(). + * (only available when USE_LIBICONV_DLL is defined at compile time) + * + * Win32 API does not support strict encoding conversion for some + * codepage. And MLang function drop or replace invalid bytes and does + * not return useful error status as iconv. This implementation cannot + * be used for encoding validation purpose. + */ + +/* for WC_NO_BEST_FIT_CHARS */ +#ifndef WINVER +# define WINVER 0x0500 +#endif + +#include +#include +#include +#include + +#if 0 +# define MAKE_EXE +# define MAKE_DLL +# define USE_LIBICONV_DLL +#endif + +#if !defined(DEFAULT_LIBICONV_DLL) +# define DEFAULT_LIBICONV_DLL "" +#endif + +#define MB_CHAR_MAX 16 + +#define UNICODE_MODE_BOM_DONE 1 +#define UNICODE_MODE_SWAPPED 2 + +#define FLAG_USE_BOM 1 +#define FLAG_TRANSLIT 2 /* //TRANSLIT */ +#define FLAG_IGNORE 4 /* //IGNORE (not implemented) */ + +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; + +typedef void* iconv_t; + +iconv_t iconv_open(const char *tocode, const char *fromcode); +int iconv_close(iconv_t cd); +size_t iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + +/* libiconv interface for vim */ +#if defined(MAKE_DLL) +int +iconvctl (iconv_t cd, int request, void* argument) +{ + /* not supported */ + return 0; +} +#endif + +typedef struct compat_t compat_t; +typedef struct csconv_t csconv_t; +typedef struct rec_iconv_t rec_iconv_t; + +typedef iconv_t (*f_iconv_open)(const char *tocode, const char *fromcode); +typedef int (*f_iconv_close)(iconv_t cd); +typedef size_t (*f_iconv)(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +typedef int* (*f_errno)(void); +typedef int (*f_mbtowc)(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +typedef int (*f_wctomb)(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +typedef int (*f_mblen)(csconv_t *cv, const uchar *buf, int bufsize); +typedef int (*f_flush)(csconv_t *cv, uchar *buf, int bufsize); + +#define COMPAT_IN 1 +#define COMPAT_OUT 2 + +/* unicode mapping for compatibility with other conversion table. */ +struct compat_t { + uint in; + uint out; + uint flag; +}; + +struct csconv_t { + int codepage; + int flags; + f_mbtowc mbtowc; + f_wctomb wctomb; + f_mblen mblen; + f_flush flush; + DWORD mode; + compat_t *compat; +}; + +struct rec_iconv_t { + iconv_t cd; + f_iconv_close iconv_close; + f_iconv iconv; + f_errno _errno; + csconv_t from; + csconv_t to; +#if defined(USE_LIBICONV_DLL) + HMODULE hlibiconv; +#endif +}; + +static int win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); +static int win_iconv_close(iconv_t cd); +static size_t win_iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + +static int load_mlang(); +static int make_csconv(const char *name, csconv_t *cv); +static int name_to_codepage(const char *name); +static uint utf16_to_ucs4(const ushort *wbuf); +static void ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize); +static int mbtowc_flags(int codepage); +static int must_use_null_useddefaultchar(int codepage); +static char *strrstr(const char *str, const char *token); +static char *xstrndup(const char *s, size_t n); +static int seterror(int err); + +#if defined(USE_LIBICONV_DLL) +static int libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); +static PVOID MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size); +static HMODULE find_imported_module_by_funcname(HMODULE hModule, const char *funcname); + +static HMODULE hwiniconv; +#endif + +static int sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize); + +static int kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize); + +static struct { + int codepage; + const char *name; +} codepage_alias[] = { + {65001, "CP65001"}, + {65001, "UTF8"}, + {65001, "UTF-8"}, + + {1200, "CP1200"}, + {1200, "UTF16LE"}, + {1200, "UTF-16LE"}, + {1200, "UCS-2LE"}, + + {1201, "CP1201"}, + {1201, "UTF16BE"}, + {1201, "UTF-16BE"}, + {1201, "UCS-2BE"}, + {1201, "unicodeFFFE"}, + + {12000, "CP12000"}, + {12000, "UTF32LE"}, + {12000, "UTF-32LE"}, + + {12001, "CP12001"}, + {12001, "UTF32BE"}, + {12001, "UTF-32BE"}, + +#ifndef GLIB_COMPILATION + /* + * Default is big endian. + * See rfc2781 4.3 Interpreting text labelled as UTF-16. + */ + {1201, "UTF16"}, + {1201, "UTF-16"}, + {12001, "UTF32"}, + {12001, "UTF-32"}, +#else + /* Default is little endian, because the platform is */ + {1200, "UTF16"}, + {1200, "UTF-16"}, + {1200, "UCS-2"}, + {12000, "UTF32"}, + {12000, "UTF-32"}, +#endif + + /* copy from libiconv `iconv -l` */ + /* !IsValidCodePage(367) */ + {20127, "ANSI_X3.4-1968"}, + {20127, "ANSI_X3.4-1986"}, + {20127, "ASCII"}, + {20127, "CP367"}, + {20127, "IBM367"}, + {20127, "ISO-IR-6"}, + {20127, "ISO646-US"}, + {20127, "ISO_646.IRV:1991"}, + {20127, "US"}, + {20127, "US-ASCII"}, + {20127, "CSASCII"}, + + /* !IsValidCodePage(819) */ + {1252, "CP819"}, + {1252, "IBM819"}, + {28591, "ISO-8859-1"}, + {28591, "ISO-IR-100"}, + {28591, "ISO8859-1"}, + {28591, "ISO_8859-1"}, + {28591, "ISO_8859-1:1987"}, + {28591, "L1"}, + {28591, "LATIN1"}, + {28591, "CSISOLATIN1"}, + + {1250, "CP1250"}, + {1250, "MS-EE"}, + {1250, "WINDOWS-1250"}, + + {1251, "CP1251"}, + {1251, "MS-CYRL"}, + {1251, "WINDOWS-1251"}, + + {1252, "CP1252"}, + {1252, "MS-ANSI"}, + {1252, "WINDOWS-1252"}, + + {1253, "CP1253"}, + {1253, "MS-GREEK"}, + {1253, "WINDOWS-1253"}, + + {1254, "CP1254"}, + {1254, "MS-TURK"}, + {1254, "WINDOWS-1254"}, + + {1255, "CP1255"}, + {1255, "MS-HEBR"}, + {1255, "WINDOWS-1255"}, + + {1256, "CP1256"}, + {1256, "MS-ARAB"}, + {1256, "WINDOWS-1256"}, + + {1257, "CP1257"}, + {1257, "WINBALTRIM"}, + {1257, "WINDOWS-1257"}, + + {1258, "CP1258"}, + {1258, "WINDOWS-1258"}, + + {850, "850"}, + {850, "CP850"}, + {850, "IBM850"}, + {850, "CSPC850MULTILINGUAL"}, + + /* !IsValidCodePage(862) */ + {862, "862"}, + {862, "CP862"}, + {862, "IBM862"}, + {862, "CSPC862LATINHEBREW"}, + + {866, "866"}, + {866, "CP866"}, + {866, "IBM866"}, + {866, "CSIBM866"}, + + /* !IsValidCodePage(154) */ + {154, "CP154"}, + {154, "CYRILLIC-ASIAN"}, + {154, "PT154"}, + {154, "PTCP154"}, + {154, "CSPTCP154"}, + + /* !IsValidCodePage(1133) */ + {1133, "CP1133"}, + {1133, "IBM-CP1133"}, + + {874, "CP874"}, + {874, "WINDOWS-874"}, + + /* !IsValidCodePage(51932) */ + {51932, "CP51932"}, + {51932, "MS51932"}, + {51932, "WINDOWS-51932"}, + {51932, "EUC-JP"}, + + {932, "CP932"}, + {932, "MS932"}, + {932, "SHIFFT_JIS"}, + {932, "SHIFFT_JIS-MS"}, + {932, "SJIS"}, + {932, "SJIS-MS"}, + {932, "SJIS-OPEN"}, + {932, "SJIS-WIN"}, + {932, "WINDOWS-31J"}, + {932, "WINDOWS-932"}, + {932, "CSWINDOWS31J"}, + + {50221, "CP50221"}, + {50221, "ISO-2022-JP"}, + {50221, "ISO-2022-JP-MS"}, + {50221, "ISO2022-JP"}, + {50221, "ISO2022-JP-MS"}, + {50221, "MS50221"}, + {50221, "WINDOWS-50221"}, + + {936, "CP936"}, + {936, "GBK"}, + {936, "MS936"}, + {936, "WINDOWS-936"}, + + {950, "CP950"}, + {950, "BIG5"}, + + {949, "CP949"}, + {949, "UHC"}, + {949, "EUC-KR"}, + + {1361, "CP1361"}, + {1361, "JOHAB"}, + + {437, "437"}, + {437, "CP437"}, + {437, "IBM437"}, + {437, "CSPC8CODEPAGE437"}, + + {737, "CP737"}, + + {775, "CP775"}, + {775, "IBM775"}, + {775, "CSPC775BALTIC"}, + + {852, "852"}, + {852, "CP852"}, + {852, "IBM852"}, + {852, "CSPCP852"}, + + /* !IsValidCodePage(853) */ + {853, "CP853"}, + + {855, "855"}, + {855, "CP855"}, + {855, "IBM855"}, + {855, "CSIBM855"}, + + {857, "857"}, + {857, "CP857"}, + {857, "IBM857"}, + {857, "CSIBM857"}, + + /* !IsValidCodePage(858) */ + {858, "CP858"}, + + {860, "860"}, + {860, "CP860"}, + {860, "IBM860"}, + {860, "CSIBM860"}, + + {861, "861"}, + {861, "CP-IS"}, + {861, "CP861"}, + {861, "IBM861"}, + {861, "CSIBM861"}, + + {863, "863"}, + {863, "CP863"}, + {863, "IBM863"}, + {863, "CSIBM863"}, + + {864, "CP864"}, + {864, "IBM864"}, + {864, "CSIBM864"}, + + {865, "865"}, + {865, "CP865"}, + {865, "IBM865"}, + {865, "CSIBM865"}, + + {869, "869"}, + {869, "CP-GR"}, + {869, "CP869"}, + {869, "IBM869"}, + {869, "CSIBM869"}, + + /* !IsValidCodePage(1152) */ + {1125, "CP1125"}, + + /* + * Code Page Identifiers + * http://msdn2.microsoft.com/en-us/library/ms776446.aspx + */ + {37, "IBM037"}, /* IBM EBCDIC US-Canada */ + {437, "IBM437"}, /* OEM United States */ + {500, "IBM500"}, /* IBM EBCDIC International */ + {708, "ASMO-708"}, /* Arabic (ASMO 708) */ + /* 709 Arabic (ASMO-449+, BCON V4) */ + /* 710 Arabic - Transparent Arabic */ + {720, "DOS-720"}, /* Arabic (Transparent ASMO); Arabic (DOS) */ + {737, "ibm737"}, /* OEM Greek (formerly 437G); Greek (DOS) */ + {775, "ibm775"}, /* OEM Baltic; Baltic (DOS) */ + {850, "ibm850"}, /* OEM Multilingual Latin 1; Western European (DOS) */ + {852, "ibm852"}, /* OEM Latin 2; Central European (DOS) */ + {855, "IBM855"}, /* OEM Cyrillic (primarily Russian) */ + {857, "ibm857"}, /* OEM Turkish; Turkish (DOS) */ + {858, "IBM00858"}, /* OEM Multilingual Latin 1 + Euro symbol */ + {860, "IBM860"}, /* OEM Portuguese; Portuguese (DOS) */ + {861, "ibm861"}, /* OEM Icelandic; Icelandic (DOS) */ + {862, "DOS-862"}, /* OEM Hebrew; Hebrew (DOS) */ + {863, "IBM863"}, /* OEM French Canadian; French Canadian (DOS) */ + {864, "IBM864"}, /* OEM Arabic; Arabic (864) */ + {865, "IBM865"}, /* OEM Nordic; Nordic (DOS) */ + {866, "cp866"}, /* OEM Russian; Cyrillic (DOS) */ + {869, "ibm869"}, /* OEM Modern Greek; Greek, Modern (DOS) */ + {870, "IBM870"}, /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ + {874, "windows-874"}, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ + {875, "cp875"}, /* IBM EBCDIC Greek Modern */ + {932, "shift_jis"}, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ + {932, "shift-jis"}, /* alternative name for it */ + {936, "gb2312"}, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ + {949, "ks_c_5601-1987"}, /* ANSI/OEM Korean (Unified Hangul Code) */ + {950, "big5"}, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ + {1026, "IBM1026"}, /* IBM EBCDIC Turkish (Latin 5) */ + {1047, "IBM01047"}, /* IBM EBCDIC Latin 1/Open System */ + {1140, "IBM01140"}, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ + {1141, "IBM01141"}, /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ + {1142, "IBM01142"}, /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ + {1143, "IBM01143"}, /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ + {1144, "IBM01144"}, /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ + {1145, "IBM01145"}, /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ + {1146, "IBM01146"}, /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ + {1147, "IBM01147"}, /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ + {1148, "IBM01148"}, /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ + {1149, "IBM01149"}, /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ + {1250, "windows-1250"}, /* ANSI Central European; Central European (Windows) */ + {1251, "windows-1251"}, /* ANSI Cyrillic; Cyrillic (Windows) */ + {1252, "windows-1252"}, /* ANSI Latin 1; Western European (Windows) */ + {1253, "windows-1253"}, /* ANSI Greek; Greek (Windows) */ + {1254, "windows-1254"}, /* ANSI Turkish; Turkish (Windows) */ + {1255, "windows-1255"}, /* ANSI Hebrew; Hebrew (Windows) */ + {1256, "windows-1256"}, /* ANSI Arabic; Arabic (Windows) */ + {1257, "windows-1257"}, /* ANSI Baltic; Baltic (Windows) */ + {1258, "windows-1258"}, /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ + {1361, "Johab"}, /* Korean (Johab) */ + {10000, "macintosh"}, /* MAC Roman; Western European (Mac) */ + {10001, "x-mac-japanese"}, /* Japanese (Mac) */ + {10002, "x-mac-chinesetrad"}, /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ + {10003, "x-mac-korean"}, /* Korean (Mac) */ + {10004, "x-mac-arabic"}, /* Arabic (Mac) */ + {10005, "x-mac-hebrew"}, /* Hebrew (Mac) */ + {10006, "x-mac-greek"}, /* Greek (Mac) */ + {10007, "x-mac-cyrillic"}, /* Cyrillic (Mac) */ + {10008, "x-mac-chinesesimp"}, /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ + {10010, "x-mac-romanian"}, /* Romanian (Mac) */ + {10017, "x-mac-ukrainian"}, /* Ukrainian (Mac) */ + {10021, "x-mac-thai"}, /* Thai (Mac) */ + {10029, "x-mac-ce"}, /* MAC Latin 2; Central European (Mac) */ + {10079, "x-mac-icelandic"}, /* Icelandic (Mac) */ + {10081, "x-mac-turkish"}, /* Turkish (Mac) */ + {10082, "x-mac-croatian"}, /* Croatian (Mac) */ + {20000, "x-Chinese_CNS"}, /* CNS Taiwan; Chinese Traditional (CNS) */ + {20001, "x-cp20001"}, /* TCA Taiwan */ + {20002, "x_Chinese-Eten"}, /* Eten Taiwan; Chinese Traditional (Eten) */ + {20003, "x-cp20003"}, /* IBM5550 Taiwan */ + {20004, "x-cp20004"}, /* TeleText Taiwan */ + {20005, "x-cp20005"}, /* Wang Taiwan */ + {20105, "x-IA5"}, /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ + {20106, "x-IA5-German"}, /* IA5 German (7-bit) */ + {20107, "x-IA5-Swedish"}, /* IA5 Swedish (7-bit) */ + {20108, "x-IA5-Norwegian"}, /* IA5 Norwegian (7-bit) */ + {20127, "us-ascii"}, /* US-ASCII (7-bit) */ + {20261, "x-cp20261"}, /* T.61 */ + {20269, "x-cp20269"}, /* ISO 6937 Non-Spacing Accent */ + {20273, "IBM273"}, /* IBM EBCDIC Germany */ + {20277, "IBM277"}, /* IBM EBCDIC Denmark-Norway */ + {20278, "IBM278"}, /* IBM EBCDIC Finland-Sweden */ + {20280, "IBM280"}, /* IBM EBCDIC Italy */ + {20284, "IBM284"}, /* IBM EBCDIC Latin America-Spain */ + {20285, "IBM285"}, /* IBM EBCDIC United Kingdom */ + {20290, "IBM290"}, /* IBM EBCDIC Japanese Katakana Extended */ + {20297, "IBM297"}, /* IBM EBCDIC France */ + {20420, "IBM420"}, /* IBM EBCDIC Arabic */ + {20423, "IBM423"}, /* IBM EBCDIC Greek */ + {20424, "IBM424"}, /* IBM EBCDIC Hebrew */ + {20833, "x-EBCDIC-KoreanExtended"}, /* IBM EBCDIC Korean Extended */ + {20838, "IBM-Thai"}, /* IBM EBCDIC Thai */ + {20866, "koi8-r"}, /* Russian (KOI8-R); Cyrillic (KOI8-R) */ + {20871, "IBM871"}, /* IBM EBCDIC Icelandic */ + {20880, "IBM880"}, /* IBM EBCDIC Cyrillic Russian */ + {20905, "IBM905"}, /* IBM EBCDIC Turkish */ + {20924, "IBM00924"}, /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ + {20932, "EUC-JP"}, /* Japanese (JIS 0208-1990 and 0121-1990) */ + {20936, "x-cp20936"}, /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ + {20949, "x-cp20949"}, /* Korean Wansung */ + {21025, "cp1025"}, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ + /* 21027 (deprecated) */ + {21866, "koi8-u"}, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ + {28591, "iso-8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ + {28591, "iso8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ + {28592, "iso-8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ + {28592, "iso8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ + {28593, "iso-8859-3"}, /* ISO 8859-3 Latin 3 */ + {28593, "iso8859-3"}, /* ISO 8859-3 Latin 3 */ + {28594, "iso-8859-4"}, /* ISO 8859-4 Baltic */ + {28594, "iso8859-4"}, /* ISO 8859-4 Baltic */ + {28595, "iso-8859-5"}, /* ISO 8859-5 Cyrillic */ + {28595, "iso8859-5"}, /* ISO 8859-5 Cyrillic */ + {28596, "iso-8859-6"}, /* ISO 8859-6 Arabic */ + {28596, "iso8859-6"}, /* ISO 8859-6 Arabic */ + {28597, "iso-8859-7"}, /* ISO 8859-7 Greek */ + {28597, "iso8859-7"}, /* ISO 8859-7 Greek */ + {28598, "iso-8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ + {28598, "iso8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ + {28599, "iso-8859-9"}, /* ISO 8859-9 Turkish */ + {28599, "iso8859-9"}, /* ISO 8859-9 Turkish */ + {28603, "iso-8859-13"}, /* ISO 8859-13 Estonian */ + {28603, "iso8859-13"}, /* ISO 8859-13 Estonian */ + {28605, "iso-8859-15"}, /* ISO 8859-15 Latin 9 */ + {28605, "iso8859-15"}, /* ISO 8859-15 Latin 9 */ + {29001, "x-Europa"}, /* Europa 3 */ + {38598, "iso-8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ + {38598, "iso8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ + {50220, "iso-2022-jp"}, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ + {50221, "csISO2022JP"}, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ + {50222, "iso-2022-jp"}, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ + {50225, "iso-2022-kr"}, /* ISO 2022 Korean */ + {50225, "iso2022-kr"}, /* ISO 2022 Korean */ + {50227, "x-cp50227"}, /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ + /* 50229 ISO 2022 Traditional Chinese */ + /* 50930 EBCDIC Japanese (Katakana) Extended */ + /* 50931 EBCDIC US-Canada and Japanese */ + /* 50933 EBCDIC Korean Extended and Korean */ + /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ + /* 50936 EBCDIC Simplified Chinese */ + /* 50937 EBCDIC US-Canada and Traditional Chinese */ + /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ + {51932, "euc-jp"}, /* EUC Japanese */ + {51936, "EUC-CN"}, /* EUC Simplified Chinese; Chinese Simplified (EUC) */ + {51949, "euc-kr"}, /* EUC Korean */ + /* 51950 EUC Traditional Chinese */ + {52936, "hz-gb-2312"}, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */ + {54936, "GB18030"}, /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */ + {57002, "x-iscii-de"}, /* ISCII Devanagari */ + {57003, "x-iscii-be"}, /* ISCII Bengali */ + {57004, "x-iscii-ta"}, /* ISCII Tamil */ + {57005, "x-iscii-te"}, /* ISCII Telugu */ + {57006, "x-iscii-as"}, /* ISCII Assamese */ + {57007, "x-iscii-or"}, /* ISCII Oriya */ + {57008, "x-iscii-ka"}, /* ISCII Kannada */ + {57009, "x-iscii-ma"}, /* ISCII Malayalam */ + {57010, "x-iscii-gu"}, /* ISCII Gujarati */ + {57011, "x-iscii-pa"}, /* ISCII Punjabi */ + + {0, NULL} +}; + +/* + * SJIS SHIFTJIS table CP932 table + * ---- --------------------------- -------------------------------- + * 5C U+00A5 YEN SIGN U+005C REVERSE SOLIDUS + * 7E U+203E OVERLINE U+007E TILDE + * 815C U+2014 EM DASH U+2015 HORIZONTAL BAR + * 815F U+005C REVERSE SOLIDUS U+FF3C FULLWIDTH REVERSE SOLIDUS + * 8160 U+301C WAVE DASH U+FF5E FULLWIDTH TILDE + * 8161 U+2016 DOUBLE VERTICAL LINE U+2225 PARALLEL TO + * 817C U+2212 MINUS SIGN U+FF0D FULLWIDTH HYPHEN-MINUS + * 8191 U+00A2 CENT SIGN U+FFE0 FULLWIDTH CENT SIGN + * 8192 U+00A3 POUND SIGN U+FFE1 FULLWIDTH POUND SIGN + * 81CA U+00AC NOT SIGN U+FFE2 FULLWIDTH NOT SIGN + * + * EUC-JP and ISO-2022-JP should be compatible with CP932. + * + * Kernel and MLang have different Unicode mapping table. Make sure + * which API is used. + */ +static compat_t cp932_compat[] = { + {0x00A5, 0x005C, COMPAT_OUT}, + {0x203E, 0x007E, COMPAT_OUT}, + {0x2014, 0x2015, COMPAT_OUT}, + {0x301C, 0xFF5E, COMPAT_OUT}, + {0x2016, 0x2225, COMPAT_OUT}, + {0x2212, 0xFF0D, COMPAT_OUT}, + {0x00A2, 0xFFE0, COMPAT_OUT}, + {0x00A3, 0xFFE1, COMPAT_OUT}, + {0x00AC, 0xFFE2, COMPAT_OUT}, + {0, 0, 0} +}; + +static compat_t cp20932_compat[] = { + {0x00A5, 0x005C, COMPAT_OUT}, + {0x203E, 0x007E, COMPAT_OUT}, + {0x2014, 0x2015, COMPAT_OUT}, + {0xFF5E, 0x301C, COMPAT_OUT|COMPAT_IN}, + {0x2225, 0x2016, COMPAT_OUT|COMPAT_IN}, + {0xFF0D, 0x2212, COMPAT_OUT|COMPAT_IN}, + {0xFFE0, 0x00A2, COMPAT_OUT|COMPAT_IN}, + {0xFFE1, 0x00A3, COMPAT_OUT|COMPAT_IN}, + {0xFFE2, 0x00AC, COMPAT_OUT|COMPAT_IN}, + {0, 0, 0} +}; + +static compat_t *cp51932_compat = cp932_compat; + +/* cp20932_compat for kernel. cp932_compat for mlang. */ +static compat_t *cp5022x_compat = cp932_compat; + +typedef HRESULT (WINAPI *CONVERTINETSTRING)( + LPDWORD lpdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + LPCSTR lpSrcStr, + LPINT lpnSrcSize, + LPBYTE lpDstStr, + LPINT lpnDstSize +); +typedef HRESULT (WINAPI *CONVERTINETMULTIBYTETOUNICODE)( + LPDWORD lpdwMode, + DWORD dwSrcEncoding, + LPCSTR lpSrcStr, + LPINT lpnMultiCharCount, + LPWSTR lpDstStr, + LPINT lpnWideCharCount +); +typedef HRESULT (WINAPI *CONVERTINETUNICODETOMULTIBYTE)( + LPDWORD lpdwMode, + DWORD dwEncoding, + LPCWSTR lpSrcStr, + LPINT lpnWideCharCount, + LPSTR lpDstStr, + LPINT lpnMultiCharCount +); +typedef HRESULT (WINAPI *ISCONVERTINETSTRINGAVAILABLE)( + DWORD dwSrcEncoding, + DWORD dwDstEncoding +); +typedef HRESULT (WINAPI *LCIDTORFC1766A)( + LCID Locale, + LPSTR pszRfc1766, + int nChar +); +typedef HRESULT (WINAPI *LCIDTORFC1766W)( + LCID Locale, + LPWSTR pszRfc1766, + int nChar +); +typedef HRESULT (WINAPI *RFC1766TOLCIDA)( + LCID *pLocale, + LPSTR pszRfc1766 +); +typedef HRESULT (WINAPI *RFC1766TOLCIDW)( + LCID *pLocale, + LPWSTR pszRfc1766 +); +static CONVERTINETSTRING ConvertINetString; +static CONVERTINETMULTIBYTETOUNICODE ConvertINetMultiByteToUnicode; +static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte; +static ISCONVERTINETSTRINGAVAILABLE IsConvertINetStringAvailable; +static LCIDTORFC1766A LcidToRfc1766A; +static RFC1766TOLCIDA Rfc1766ToLcidA; + +static int +load_mlang() +{ + HMODULE h; + if (ConvertINetString != NULL) + return TRUE; + h = LoadLibrary("mlang.dll"); + if (!h) + return FALSE; + ConvertINetString = (CONVERTINETSTRING)GetProcAddress(h, "ConvertINetString"); + ConvertINetMultiByteToUnicode = (CONVERTINETMULTIBYTETOUNICODE)GetProcAddress(h, "ConvertINetMultiByteToUnicode"); + ConvertINetUnicodeToMultiByte = (CONVERTINETUNICODETOMULTIBYTE)GetProcAddress(h, "ConvertINetUnicodeToMultiByte"); + IsConvertINetStringAvailable = (ISCONVERTINETSTRINGAVAILABLE)GetProcAddress(h, "IsConvertINetStringAvailable"); + LcidToRfc1766A = (LCIDTORFC1766A)GetProcAddress(h, "LcidToRfc1766A"); + Rfc1766ToLcidA = (RFC1766TOLCIDA)GetProcAddress(h, "Rfc1766ToLcidA"); + return TRUE; +} + +iconv_t +iconv_open(const char *tocode, const char *fromcode) +{ + rec_iconv_t *cd; + + cd = (rec_iconv_t *)calloc(1, sizeof(rec_iconv_t)); + if (cd == NULL) + return (iconv_t)(-1); + +#if defined(USE_LIBICONV_DLL) + errno = 0; + if (libiconv_iconv_open(cd, tocode, fromcode)) + return (iconv_t)cd; +#endif + + /* reset the errno to prevent reporting wrong error code. + * 0 for unsorted error. */ + errno = 0; + if (win_iconv_open(cd, tocode, fromcode)) + return (iconv_t)cd; + + free(cd); + + return (iconv_t)(-1); +} + +int +iconv_close(iconv_t _cd) +{ + rec_iconv_t *cd = (rec_iconv_t *)_cd; + int r = cd->iconv_close(cd->cd); + int e = *(cd->_errno()); +#if defined(USE_LIBICONV_DLL) + if (cd->hlibiconv != NULL) + FreeLibrary(cd->hlibiconv); +#endif + free(cd); + errno = e; + return r; +} + +size_t +iconv(iconv_t _cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +{ + rec_iconv_t *cd = (rec_iconv_t *)_cd; + size_t r = cd->iconv(cd->cd, inbuf, inbytesleft, outbuf, outbytesleft); + errno = *(cd->_errno()); + return r; +} + +static int +win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) +{ + if (!make_csconv(fromcode, &cd->from) || !make_csconv(tocode, &cd->to)) + return FALSE; + cd->iconv_close = win_iconv_close; + cd->iconv = win_iconv; + cd->_errno = _errno; + cd->cd = (iconv_t)cd; + return TRUE; +} + +static int +win_iconv_close(iconv_t cd) +{ + return 0; +} + +static size_t +win_iconv(iconv_t _cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +{ + rec_iconv_t *cd = (rec_iconv_t *)_cd; + ushort wbuf[MB_CHAR_MAX]; /* enough room for one character */ + int insize; + int outsize; + int wsize; + DWORD frommode; + DWORD tomode; + uint wc; + compat_t *cp; + int i; + + if (inbuf == NULL || *inbuf == NULL) + { + if (outbuf != NULL && *outbuf != NULL && cd->to.flush != NULL) + { + tomode = cd->to.mode; + outsize = cd->to.flush(&cd->to, (uchar *)*outbuf, *outbytesleft); + if (outsize == -1) + { + cd->to.mode = tomode; + return (size_t)(-1); + } + *outbuf += outsize; + *outbytesleft -= outsize; + } + cd->from.mode = 0; + cd->to.mode = 0; + return 0; + } + + while (*inbytesleft != 0) + { + frommode = cd->from.mode; + tomode = cd->to.mode; + wsize = MB_CHAR_MAX; + + insize = cd->from.mbtowc(&cd->from, (const uchar *)*inbuf, *inbytesleft, wbuf, &wsize); + if (insize == -1) + { + cd->from.mode = frommode; + return (size_t)(-1); + } + + if (wsize == 0) + { + *inbuf += insize; + *inbytesleft -= insize; + continue; + } + + if (cd->from.compat != NULL) + { + wc = utf16_to_ucs4(wbuf); + cp = cd->from.compat; + for (i = 0; cp[i].in != 0; ++i) + { + if ((cp[i].flag & COMPAT_IN) && cp[i].out == wc) + { + ucs4_to_utf16(cp[i].in, wbuf, &wsize); + break; + } + } + } + + if (cd->to.compat != NULL) + { + wc = utf16_to_ucs4(wbuf); + cp = cd->to.compat; + for (i = 0; cp[i].in != 0; ++i) + { + if ((cp[i].flag & COMPAT_OUT) && cp[i].in == wc) + { + ucs4_to_utf16(cp[i].out, wbuf, &wsize); + break; + } + } + } + + outsize = cd->to.wctomb(&cd->to, wbuf, wsize, (uchar *)*outbuf, *outbytesleft); + if (outsize == -1) + { + cd->from.mode = frommode; + cd->to.mode = tomode; + return (size_t)(-1); + } + + *inbuf += insize; + *outbuf += outsize; + *inbytesleft -= insize; + *outbytesleft -= outsize; + } + + return 0; +} + +static int +make_csconv(const char *_name, csconv_t *cv) +{ + CPINFOEX cpinfoex; + int use_compat = TRUE; + int flag = 0; + char *name; + char *p; + + name = xstrndup(_name, strlen(_name)); + if (name == NULL) + return FALSE; + + /* check for option "enc_name//opt1//opt2" */ + while ((p = strrstr(name, "//")) != NULL) + { + if (_stricmp(p + 2, "nocompat") == 0) + use_compat = FALSE; + else if (_stricmp(p + 2, "translit") == 0) + flag |= FLAG_TRANSLIT; + else if (_stricmp(p + 2, "ignore") == 0) + flag |= FLAG_IGNORE; + *p = 0; + } + + cv->mode = 0; + cv->flags = flag; + cv->mblen = NULL; + cv->flush = NULL; + cv->compat = NULL; + cv->codepage = name_to_codepage(name); + if (cv->codepage == 1200 || cv->codepage == 1201) + { + cv->mbtowc = utf16_mbtowc; + cv->wctomb = utf16_wctomb; + if (_stricmp(name, "UTF-16") == 0 || _stricmp(name, "UTF16") == 0) + cv->flags |= FLAG_USE_BOM; + } + else if (cv->codepage == 12000 || cv->codepage == 12001) + { + cv->mbtowc = utf32_mbtowc; + cv->wctomb = utf32_wctomb; + if (_stricmp(name, "UTF-32") == 0 || _stricmp(name, "UTF32") == 0) + cv->flags |= FLAG_USE_BOM; + } + else if (cv->codepage == 65001) + { + cv->mbtowc = kernel_mbtowc; + cv->wctomb = kernel_wctomb; + cv->mblen = utf8_mblen; + } + else if ((cv->codepage == 50220 || cv->codepage == 50221 || cv->codepage == 50222) && load_mlang()) + { + cv->mbtowc = iso2022jp_mbtowc; + cv->wctomb = iso2022jp_wctomb; + cv->flush = iso2022jp_flush; + } + else if (cv->codepage == 51932 && load_mlang()) + { + cv->mbtowc = mlang_mbtowc; + cv->wctomb = mlang_wctomb; + cv->mblen = eucjp_mblen; + } + else if (IsValidCodePage(cv->codepage) + && GetCPInfoEx(cv->codepage, 0, &cpinfoex) != 0) + { + cv->mbtowc = kernel_mbtowc; + cv->wctomb = kernel_wctomb; + if (cpinfoex.MaxCharSize == 1) + cv->mblen = sbcs_mblen; + else if (cpinfoex.MaxCharSize == 2) + cv->mblen = dbcs_mblen; + else + cv->mblen = mbcs_mblen; + } + else + { + /* not supported */ + free(name); + errno = EINVAL; + return FALSE; + } + + if (use_compat) + { + switch (cv->codepage) + { + case 932: cv->compat = cp932_compat; break; + case 20932: cv->compat = cp20932_compat; break; + case 51932: cv->compat = cp51932_compat; break; + case 50220: case 50221: case 50222: cv->compat = cp5022x_compat; break; + } + } + + free(name); + + return TRUE; +} + +static int +name_to_codepage(const char *name) +{ + int i; + + if (*name == '\0' || + strcmp(name, "char") == 0) + return GetACP(); + else if (strcmp(name, "wchar_t") == 0) + return 1200; + else if (_strnicmp(name, "cp", 2) == 0) + return atoi(name + 2); /* CP123 */ + else if ('0' <= name[0] && name[0] <= '9') + return atoi(name); /* 123 */ + else if (_strnicmp(name, "xx", 2) == 0) + return atoi(name + 2); /* XX123 for debug */ + + for (i = 0; codepage_alias[i].name != NULL; ++i) + if (_stricmp(name, codepage_alias[i].name) == 0) + return codepage_alias[i].codepage; + return -1; +} + +/* + * http://www.faqs.org/rfcs/rfc2781.html + */ +static uint +utf16_to_ucs4(const ushort *wbuf) +{ + uint wc = wbuf[0]; + if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) + wc = ((wbuf[0] & 0x3FF) << 10) + (wbuf[1] & 0x3FF) + 0x10000; + return wc; +} + +static void +ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize) +{ + if (wc < 0x10000) + { + wbuf[0] = wc; + *wbufsize = 1; + } + else + { + wc -= 0x10000; + wbuf[0] = 0xD800 | ((wc >> 10) & 0x3FF); + wbuf[1] = 0xDC00 | (wc & 0x3FF); + *wbufsize = 2; + } +} + +/* + * Check if codepage is one of those for which the dwFlags parameter + * to MultiByteToWideChar() must be zero. Return zero or + * MB_ERR_INVALID_CHARS. The docs in Platform SDK for for Windows + * Server 2003 R2 claims that also codepage 65001 is one of these, but + * that doesn't seem to be the case. The MSDN docs for MSVS2008 leave + * out 65001 (UTF-8), and that indeed seems to be the case on XP, it + * works fine to pass MB_ERR_INVALID_CHARS in dwFlags when converting + * from UTF-8. + */ +static int +mbtowc_flags(int codepage) +{ + return (codepage == 50220 || codepage == 50221 || + codepage == 50222 || codepage == 50225 || + codepage == 50227 || codepage == 50229 || + codepage == 52936 || codepage == 54936 || + (codepage >= 57002 && codepage <= 57011) || + codepage == 65000 || codepage == 42) ? 0 : MB_ERR_INVALID_CHARS; +} + +/* + * Check if codepage is one those for which the lpUsedDefaultChar + * parameter to WideCharToMultiByte() must be NULL. The docs in + * Platform SDK for for Windows Server 2003 R2 claims that this is the + * list below, while the MSDN docs for MSVS2008 claim that it is only + * for 65000 (UTF-7) and 65001 (UTF-8). This time the earlier Platform + * SDK seems to be correct, at least for XP. + */ +static int +must_use_null_useddefaultchar(int codepage) +{ + return (codepage == 65000 || codepage == 65001 || + codepage == 50220 || codepage == 50221 || + codepage == 50222 || codepage == 50225 || + codepage == 50227 || codepage == 50229 || + codepage == 52936 || codepage == 54936 || + (codepage >= 57002 && codepage <= 57011) || + codepage == 42); +} + +static char * +strrstr(const char *str, const char *token) +{ + int len = strlen(token); + const char *p = str + strlen(str); + + while (str <= --p) + if (p[0] == token[0] && strncmp(p, token, len) == 0) + return (char *)p; + return NULL; +} + +static char * +xstrndup(const char *s, size_t n) +{ + char *p; + + p = malloc(n + 1); + if (p == NULL) + return NULL; + memcpy(p, s, n); + p[n] = '\0'; + return p; +} + +static int +seterror(int err) +{ + errno = err; + return -1; +} + +#if defined(USE_LIBICONV_DLL) +static int +libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) +{ + HMODULE hlibiconv = NULL; + HMODULE hmsvcrt = NULL; + char *dllname; + const char *p; + const char *e; + f_iconv_open _iconv_open; + + /* + * always try to load dll, so that we can switch dll in runtime. + */ + + /* XXX: getenv() can't get variable set by SetEnvironmentVariable() */ + p = getenv("WINICONV_LIBICONV_DLL"); + if (p == NULL) + p = DEFAULT_LIBICONV_DLL; + /* parse comma separated value */ + for ( ; *p != 0; p = (*e == ',') ? e + 1 : e) + { + e = strchr(p, ','); + if (p == e) + continue; + else if (e == NULL) + e = p + strlen(p); + dllname = xstrndup(p, e - p); + if (dllname == NULL) + return FALSE; + hlibiconv = LoadLibrary(dllname); + free(dllname); + if (hlibiconv != NULL) + { + if (hlibiconv == hwiniconv) + { + FreeLibrary(hlibiconv); + hlibiconv = NULL; + continue; + } + break; + } + } + + if (hlibiconv == NULL) + goto failed; + + hmsvcrt = find_imported_module_by_funcname(hlibiconv, "_errno"); + if (hmsvcrt == NULL) + goto failed; + + _iconv_open = (f_iconv_open)GetProcAddress(hlibiconv, "libiconv_open"); + if (_iconv_open == NULL) + _iconv_open = (f_iconv_open)GetProcAddress(hlibiconv, "iconv_open"); + cd->iconv_close = (f_iconv_close)GetProcAddress(hlibiconv, "libiconv_close"); + if (cd->iconv_close == NULL) + cd->iconv_close = (f_iconv_close)GetProcAddress(hlibiconv, "iconv_close"); + cd->iconv = (f_iconv)GetProcAddress(hlibiconv, "libiconv"); + if (cd->iconv == NULL) + cd->iconv = (f_iconv)GetProcAddress(hlibiconv, "iconv"); + cd->_errno = (f_errno)GetProcAddress(hmsvcrt, "_errno"); + if (_iconv_open == NULL || cd->iconv_close == NULL + || cd->iconv == NULL || cd->_errno == NULL) + goto failed; + + cd->cd = _iconv_open(tocode, fromcode); + if (cd->cd == (iconv_t)(-1)) + goto failed; + + cd->hlibiconv = hlibiconv; + return TRUE; + +failed: + if (hlibiconv != NULL) + FreeLibrary(hlibiconv); + /* do not free hmsvcrt which is obtained by GetModuleHandle() */ + return FALSE; +} + +/* + * Reference: + * http://forums.belution.com/ja/vc/000/234/78s.shtml + * http://nienie.com/~masapico/api_ImageDirectoryEntryToData.html + * + * The formal way is + * imagehlp.h or dbghelp.h + * imagehlp.lib or dbghelp.lib + * ImageDirectoryEntryToData() + */ +#define TO_DOS_HEADER(base) ((PIMAGE_DOS_HEADER)(base)) +#define TO_NT_HEADERS(base) ((PIMAGE_NT_HEADERS)((LPBYTE)(base) + TO_DOS_HEADER(base)->e_lfanew)) +static PVOID +MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size) +{ + /* TODO: MappedAsImage? */ + PIMAGE_DATA_DIRECTORY p; + p = TO_NT_HEADERS(Base)->OptionalHeader.DataDirectory + DirectoryEntry; + if (p->VirtualAddress == 0) { + *Size = 0; + return NULL; + } + *Size = p->Size; + return (PVOID)((LPBYTE)Base + p->VirtualAddress); +} + +static HMODULE +find_imported_module_by_funcname(HMODULE hModule, const char *funcname) +{ + DWORD Base; + ULONG Size; + PIMAGE_IMPORT_DESCRIPTOR Imp; + PIMAGE_THUNK_DATA Name; /* Import Name Table */ + PIMAGE_IMPORT_BY_NAME ImpName; + + Base = (DWORD)hModule; + Imp = MyImageDirectoryEntryToData( + (LPVOID)Base, + TRUE, + IMAGE_DIRECTORY_ENTRY_IMPORT, + &Size); + if (Imp == NULL) + return NULL; + for ( ; Imp->OriginalFirstThunk != 0; ++Imp) + { + Name = (PIMAGE_THUNK_DATA)(Base + Imp->OriginalFirstThunk); + for ( ; Name->u1.Ordinal != 0; ++Name) + { + if (!IMAGE_SNAP_BY_ORDINAL(Name->u1.Ordinal)) + { + ImpName = (PIMAGE_IMPORT_BY_NAME) + (Base + (DWORD)Name->u1.AddressOfData); + if (strcmp((char *)ImpName->Name, funcname) == 0) + return GetModuleHandle((char *)(Base + Imp->Name)); + } + } + } + return NULL; +} +#endif + +static int +sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + return 1; +} + +static int +dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + int len = IsDBCSLeadByteEx(cv->codepage, buf[0]) ? 2 : 1; + if (bufsize < len) + return seterror(EINVAL); + return len; +} + +static int +mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + int len = 0; + + if (cv->codepage == 54936) { + if (buf[0] <= 0x7F) len = 1; + else if (buf[0] >= 0x81 && buf[0] <= 0xFE && + bufsize >= 2 && + ((buf[1] >= 0x40 && buf[1] <= 0x7E) || + (buf[1] >= 0x80 && buf[1] <= 0xFE))) len = 2; + else if (buf[0] >= 0x81 && buf[0] <= 0xFE && + bufsize >= 4 && + buf[1] >= 0x30 && buf[1] <= 0x39) len = 4; + else + return seterror(EINVAL); + return len; + } + else + return seterror(EINVAL); +} + +static int +utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + int len = 0; + + if (buf[0] < 0x80) len = 1; + else if ((buf[0] & 0xE0) == 0xC0) len = 2; + else if ((buf[0] & 0xF0) == 0xE0) len = 3; + else if ((buf[0] & 0xF8) == 0xF0) len = 4; + else if ((buf[0] & 0xFC) == 0xF8) len = 5; + else if ((buf[0] & 0xFE) == 0xFC) len = 6; + + if (len == 0) + return seterror(EILSEQ); + else if (bufsize < len) + return seterror(EINVAL); + return len; +} + +static int +eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + if (buf[0] < 0x80) /* ASCII */ + return 1; + else if (buf[0] == 0x8E) /* JIS X 0201 */ + { + if (bufsize < 2) + return seterror(EINVAL); + else if (!(0xA1 <= buf[1] && buf[1] <= 0xDF)) + return seterror(EILSEQ); + return 2; + } + else if (buf[0] == 0x8F) /* JIS X 0212 */ + { + if (bufsize < 3) + return seterror(EINVAL); + else if (!(0xA1 <= buf[1] && buf[1] <= 0xFE) + || !(0xA1 <= buf[2] && buf[2] <= 0xFE)) + return seterror(EILSEQ); + return 3; + } + else /* JIS X 0208 */ + { + if (bufsize < 2) + return seterror(EINVAL); + else if (!(0xA1 <= buf[0] && buf[0] <= 0xFE) + || !(0xA1 <= buf[1] && buf[1] <= 0xFE)) + return seterror(EILSEQ); + return 2; + } +} + +static int +kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int len; + + len = cv->mblen(cv, buf, bufsize); + if (len == -1) + return -1; + *wbufsize = MultiByteToWideChar(cv->codepage, mbtowc_flags (cv->codepage), + (const char *)buf, len, (wchar_t *)wbuf, *wbufsize); + if (*wbufsize == 0) + return seterror(EILSEQ); + return len; +} + +static int +kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + BOOL usedDefaultChar = 0; + BOOL *p = NULL; + int flags = 0; + int len; + + if (bufsize == 0) + return seterror(E2BIG); + if (!must_use_null_useddefaultchar(cv->codepage)) + { + p = &usedDefaultChar; +#ifdef WC_NO_BEST_FIT_CHARS + if (!(cv->flags & FLAG_TRANSLIT)) + flags |= WC_NO_BEST_FIT_CHARS; +#endif + } + len = WideCharToMultiByte(cv->codepage, flags, + (const wchar_t *)wbuf, wbufsize, (char *)buf, bufsize, NULL, p); + if (len == 0) + { + if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) + return seterror(E2BIG); + return seterror(EILSEQ); + } + else if (usedDefaultChar) + return seterror(EILSEQ); + else if (cv->mblen(cv, buf, len) != len) /* validate result */ + return seterror(EILSEQ); + return len; +} + +/* + * It seems that the mode (cv->mode) is fixnum. + * For example, when converting iso-2022-jp(cp50221) to unicode: + * in ascii sequence: mode=0xC42C0000 + * in jisx0208 sequence: mode=0xC42C0001 + * "C42C" is same for each convert session. + * It should be: ((codepage-1)<<16)|state + */ +static int +mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int len; + int insize; + HRESULT hr; + + len = cv->mblen(cv, buf, bufsize); + if (len == -1) + return -1; + insize = len; + hr = ConvertINetMultiByteToUnicode(&cv->mode, cv->codepage, + (const char *)buf, &insize, (wchar_t *)wbuf, wbufsize); + if (hr != S_OK || insize != len) + return seterror(EILSEQ); + return len; +} + +static int +mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + char tmpbuf[MB_CHAR_MAX]; /* enough room for one character */ + int tmpsize = MB_CHAR_MAX; + int insize = wbufsize; + HRESULT hr; + + hr = ConvertINetUnicodeToMultiByte(&cv->mode, cv->codepage, + (const wchar_t *)wbuf, &wbufsize, tmpbuf, &tmpsize); + if (hr != S_OK || insize != wbufsize) + return seterror(EILSEQ); + else if (bufsize < tmpsize) + return seterror(E2BIG); + else if (cv->mblen(cv, (uchar *)tmpbuf, tmpsize) != tmpsize) + return seterror(EILSEQ); + memcpy(buf, tmpbuf, tmpsize); + return tmpsize; +} + +static int +utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int codepage = cv->codepage; + + /* swap endian: 1200 <-> 1201 */ + if (cv->mode & UNICODE_MODE_SWAPPED) + codepage ^= 1; + + if (bufsize < 2) + return seterror(EINVAL); + if (codepage == 1200) /* little endian */ + wbuf[0] = (buf[1] << 8) | buf[0]; + else if (codepage == 1201) /* big endian */ + wbuf[0] = (buf[0] << 8) | buf[1]; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + cv->mode |= UNICODE_MODE_BOM_DONE; + if (wbuf[0] == 0xFFFE) + { + cv->mode |= UNICODE_MODE_SWAPPED; + *wbufsize = 0; + return 2; + } + else if (wbuf[0] == 0xFEFF) + { + *wbufsize = 0; + return 2; + } + } + + if (0xDC00 <= wbuf[0] && wbuf[0] <= 0xDFFF) + return seterror(EILSEQ); + if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) + { + if (bufsize < 4) + return seterror(EINVAL); + if (codepage == 1200) /* little endian */ + wbuf[1] = (buf[3] << 8) | buf[2]; + else if (codepage == 1201) /* big endian */ + wbuf[1] = (buf[2] << 8) | buf[3]; + if (!(0xDC00 <= wbuf[1] && wbuf[1] <= 0xDFFF)) + return seterror(EILSEQ); + *wbufsize = 2; + return 4; + } + *wbufsize = 1; + return 2; +} + +static int +utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + int r; + + cv->mode |= UNICODE_MODE_BOM_DONE; + if (bufsize < 2) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + memcpy(buf, "\xFF\xFE", 2); + else if (cv->codepage == 1201) /* big endian */ + memcpy(buf, "\xFE\xFF", 2); + + r = utf16_wctomb(cv, wbuf, wbufsize, buf + 2, bufsize - 2); + if (r == -1) + return -1; + return r + 2; + } + + if (bufsize < 2) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + { + buf[0] = (wbuf[0] & 0x00FF); + buf[1] = (wbuf[0] & 0xFF00) >> 8; + } + else if (cv->codepage == 1201) /* big endian */ + { + buf[0] = (wbuf[0] & 0xFF00) >> 8; + buf[1] = (wbuf[0] & 0x00FF); + } + if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) + { + if (bufsize < 4) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + { + buf[2] = (wbuf[1] & 0x00FF); + buf[3] = (wbuf[1] & 0xFF00) >> 8; + } + else if (cv->codepage == 1201) /* big endian */ + { + buf[2] = (wbuf[1] & 0xFF00) >> 8; + buf[3] = (wbuf[1] & 0x00FF); + } + return 4; + } + return 2; +} + +static int +utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int codepage = cv->codepage; + uint wc; + + /* swap endian: 12000 <-> 12001 */ + if (cv->mode & UNICODE_MODE_SWAPPED) + codepage ^= 1; + + if (bufsize < 4) + return seterror(EINVAL); + if (codepage == 12000) /* little endian */ + wc = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; + else if (codepage == 12001) /* big endian */ + wc = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + cv->mode |= UNICODE_MODE_BOM_DONE; + if (wc == 0xFFFE0000) + { + cv->mode |= UNICODE_MODE_SWAPPED; + *wbufsize = 0; + return 4; + } + else if (wc == 0x0000FEFF) + { + *wbufsize = 0; + return 4; + } + } + + if ((0xD800 <= wc && wc <= 0xDFFF) || 0x10FFFF < wc) + return seterror(EILSEQ); + ucs4_to_utf16(wc, wbuf, wbufsize); + return 4; +} + +static int +utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + uint wc; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + int r; + + cv->mode |= UNICODE_MODE_BOM_DONE; + if (bufsize < 4) + return seterror(E2BIG); + if (cv->codepage == 12000) /* little endian */ + memcpy(buf, "\xFF\xFE\x00\x00", 4); + else if (cv->codepage == 12001) /* big endian */ + memcpy(buf, "\x00\x00\xFE\xFF", 4); + + r = utf32_wctomb(cv, wbuf, wbufsize, buf + 4, bufsize - 4); + if (r == -1) + return -1; + return r + 4; + } + + if (bufsize < 4) + return seterror(E2BIG); + wc = utf16_to_ucs4(wbuf); + if (cv->codepage == 12000) /* little endian */ + { + buf[0] = wc & 0x000000FF; + buf[1] = (wc & 0x0000FF00) >> 8; + buf[2] = (wc & 0x00FF0000) >> 16; + buf[3] = (wc & 0xFF000000) >> 24; + } + else if (cv->codepage == 12001) /* big endian */ + { + buf[0] = (wc & 0xFF000000) >> 24; + buf[1] = (wc & 0x00FF0000) >> 16; + buf[2] = (wc & 0x0000FF00) >> 8; + buf[3] = wc & 0x000000FF; + } + return 4; +} + +/* + * 50220: ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) + * 50221: ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow + * 1 byte Kana) + * 50222: ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte + * Kana - SO/SI) + * + * MultiByteToWideChar() and WideCharToMultiByte() behave differently + * depending on Windows version. On XP, WideCharToMultiByte() doesn't + * terminate result sequence with ascii escape. But Vista does. + * Use MLang instead. + */ + +#define ISO2022_MODE(cs, shift) (((cs) << 8) | (shift)) +#define ISO2022_MODE_CS(mode) (((mode) >> 8) & 0xFF) +#define ISO2022_MODE_SHIFT(mode) ((mode) & 0xFF) + +#define ISO2022_SI 0 +#define ISO2022_SO 1 + +/* shift in */ +static const char iso2022_SI_seq[] = "\x0F"; +/* shift out */ +static const char iso2022_SO_seq[] = "\x0E"; + +typedef struct iso2022_esc_t iso2022_esc_t; +struct iso2022_esc_t { + const char *esc; + int esc_len; + int len; + int cs; +}; + +#define ISO2022JP_CS_ASCII 0 +#define ISO2022JP_CS_JISX0201_ROMAN 1 +#define ISO2022JP_CS_JISX0201_KANA 2 +#define ISO2022JP_CS_JISX0208_1978 3 +#define ISO2022JP_CS_JISX0208_1983 4 +#define ISO2022JP_CS_JISX0212 5 + +static iso2022_esc_t iso2022jp_esc[] = { + {"\x1B\x28\x42", 3, 1, ISO2022JP_CS_ASCII}, + {"\x1B\x28\x4A", 3, 1, ISO2022JP_CS_JISX0201_ROMAN}, + {"\x1B\x28\x49", 3, 1, ISO2022JP_CS_JISX0201_KANA}, + {"\x1B\x24\x40", 3, 2, ISO2022JP_CS_JISX0208_1983}, /* unify 1978 with 1983 */ + {"\x1B\x24\x42", 3, 2, ISO2022JP_CS_JISX0208_1983}, + {"\x1B\x24\x28\x44", 4, 2, ISO2022JP_CS_JISX0212}, + {NULL, 0, 0, 0} +}; + +static int +iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + iso2022_esc_t *iesc = iso2022jp_esc; + char tmp[MB_CHAR_MAX]; + int insize; + HRESULT hr; + DWORD dummy = 0; + int len; + int esc_len; + int cs; + int shift; + int i; + + if (buf[0] == 0x1B) + { + for (i = 0; iesc[i].esc != NULL; ++i) + { + esc_len = iesc[i].esc_len; + if (bufsize < esc_len) + { + if (strncmp((char *)buf, iesc[i].esc, bufsize) == 0) + return seterror(EINVAL); + } + else + { + if (strncmp((char *)buf, iesc[i].esc, esc_len) == 0) + { + cv->mode = ISO2022_MODE(iesc[i].cs, ISO2022_SI); + *wbufsize = 0; + return esc_len; + } + } + } + /* not supported escape sequence */ + return seterror(EILSEQ); + } + else if (buf[0] == iso2022_SO_seq[0]) + { + cv->mode = ISO2022_MODE(ISO2022_MODE_CS(cv->mode), ISO2022_SO); + *wbufsize = 0; + return 1; + } + else if (buf[0] == iso2022_SI_seq[0]) + { + cv->mode = ISO2022_MODE(ISO2022_MODE_CS(cv->mode), ISO2022_SI); + *wbufsize = 0; + return 1; + } + + cs = ISO2022_MODE_CS(cv->mode); + shift = ISO2022_MODE_SHIFT(cv->mode); + + /* reset the mode for informal sequence */ + if (buf[0] < 0x20) + { + cs = ISO2022JP_CS_ASCII; + shift = ISO2022_SI; + } + + len = iesc[cs].len; + if (bufsize < len) + return seterror(EINVAL); + for (i = 0; i < len; ++i) + if (!(buf[i] < 0x80)) + return seterror(EILSEQ); + esc_len = iesc[cs].esc_len; + memcpy(tmp, iesc[cs].esc, esc_len); + if (shift == ISO2022_SO) + { + memcpy(tmp + esc_len, iso2022_SO_seq, 1); + esc_len += 1; + } + memcpy(tmp + esc_len, buf, len); + + if ((cv->codepage == 50220 || cv->codepage == 50221 + || cv->codepage == 50222) && shift == ISO2022_SO) + { + /* XXX: shift-out cannot be used for mbtowc (both kernel and + * mlang) */ + esc_len = iesc[ISO2022JP_CS_JISX0201_KANA].esc_len; + memcpy(tmp, iesc[ISO2022JP_CS_JISX0201_KANA].esc, esc_len); + memcpy(tmp + esc_len, buf, len); + } + + insize = len + esc_len; + hr = ConvertINetMultiByteToUnicode(&dummy, cv->codepage, + (const char *)tmp, &insize, (wchar_t *)wbuf, wbufsize); + if (hr != S_OK || insize != len + esc_len) + return seterror(EILSEQ); + + /* Check for conversion error. Assuming defaultChar is 0x3F. */ + /* ascii should be converted from ascii */ + if (wbuf[0] == buf[0] + && cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) + return seterror(EILSEQ); + + /* reset the mode for informal sequence */ + if (cv->mode != ISO2022_MODE(cs, shift)) + cv->mode = ISO2022_MODE(cs, shift); + + return len; +} + +static int +iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + iso2022_esc_t *iesc = iso2022jp_esc; + char tmp[MB_CHAR_MAX]; + int tmpsize = MB_CHAR_MAX; + int insize = wbufsize; + HRESULT hr; + DWORD dummy = 0; + int len; + int esc_len; + int cs; + int shift; + int i; + + /* + * MultiByte = [escape sequence] + character + [escape sequence] + * + * Whether trailing escape sequence is added depends on which API is + * used (kernel or MLang, and its version). + */ + hr = ConvertINetUnicodeToMultiByte(&dummy, cv->codepage, + (const wchar_t *)wbuf, &wbufsize, tmp, &tmpsize); + if (hr != S_OK || insize != wbufsize) + return seterror(EILSEQ); + else if (bufsize < tmpsize) + return seterror(E2BIG); + + if (tmpsize == 1) + { + cs = ISO2022JP_CS_ASCII; + esc_len = 0; + } + else + { + for (i = 1; iesc[i].esc != NULL; ++i) + { + esc_len = iesc[i].esc_len; + if (strncmp(tmp, iesc[i].esc, esc_len) == 0) + { + cs = iesc[i].cs; + break; + } + } + if (iesc[i].esc == NULL) + /* not supported escape sequence */ + return seterror(EILSEQ); + } + + shift = ISO2022_SI; + if (tmp[esc_len] == iso2022_SO_seq[0]) + { + shift = ISO2022_SO; + esc_len += 1; + } + + len = iesc[cs].len; + + /* Check for converting error. Assuming defaultChar is 0x3F. */ + /* ascii should be converted from ascii */ + if (cs == ISO2022JP_CS_ASCII && !(wbuf[0] < 0x80)) + return seterror(EILSEQ); + else if (tmpsize < esc_len + len) + return seterror(EILSEQ); + + if (cv->mode == ISO2022_MODE(cs, shift)) + { + /* remove escape sequence */ + if (esc_len != 0) + memmove(tmp, tmp + esc_len, len); + esc_len = 0; + } + else + { + if (cs == ISO2022JP_CS_ASCII) + { + esc_len = iesc[ISO2022JP_CS_ASCII].esc_len; + memmove(tmp + esc_len, tmp, len); + memcpy(tmp, iesc[ISO2022JP_CS_ASCII].esc, esc_len); + } + if (ISO2022_MODE_SHIFT(cv->mode) == ISO2022_SO) + { + /* shift-in before changing to other mode */ + memmove(tmp + 1, tmp, len + esc_len); + memcpy(tmp, iso2022_SI_seq, 1); + esc_len += 1; + } + } + + if (bufsize < len + esc_len) + return seterror(E2BIG); + memcpy(buf, tmp, len + esc_len); + cv->mode = ISO2022_MODE(cs, shift); + return len + esc_len; +} + +static int +iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize) +{ + iso2022_esc_t *iesc = iso2022jp_esc; + int esc_len; + + if (cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) + { + esc_len = 0; + if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) + esc_len += 1; + if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) + esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; + if (bufsize < esc_len) + return seterror(E2BIG); + + esc_len = 0; + if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) + { + memcpy(buf, iso2022_SI_seq, 1); + esc_len += 1; + } + if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) + { + memcpy(buf + esc_len, iesc[ISO2022JP_CS_ASCII].esc, + iesc[ISO2022JP_CS_ASCII].esc_len); + esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; + } + return esc_len; + } + return 0; +} + +#if defined(MAKE_DLL) && defined(USE_LIBICONV_DLL) +BOOL WINAPI +DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) +{ + switch( fdwReason ) + { + case DLL_PROCESS_ATTACH: + hwiniconv = (HMODULE)hinstDLL; + break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} +#endif + +#if defined(MAKE_EXE) +#include +#include +#include +int +main(int argc, char **argv) +{ + char *fromcode = NULL; + char *tocode = NULL; + int i; + char inbuf[BUFSIZ]; + char outbuf[BUFSIZ]; + const char *pin; + char *pout; + size_t inbytesleft; + size_t outbytesleft; + size_t rest = 0; + iconv_t cd; + size_t r; + FILE *in = stdin; + + _setmode(_fileno(stdin), _O_BINARY); + _setmode(_fileno(stdout), _O_BINARY); + + for (i = 1; i < argc; ++i) + { + if (strcmp(argv[i], "-l") == 0) + { + for (i = 0; codepage_alias[i].name != NULL; ++i) + printf("%s\n", codepage_alias[i].name); + return 0; + } + + if (strcmp(argv[i], "-f") == 0) + fromcode = argv[++i]; + else if (strcmp(argv[i], "-t") == 0) + tocode = argv[++i]; + else + { + in = fopen(argv[i], "rb"); + if (in == NULL) + { + fprintf(stderr, "cannot open %s\n", argv[i]); + return 1; + } + break; + } + } + + if (fromcode == NULL || tocode == NULL) + { + printf("usage: %s -f from-enc -t to-enc [file]\n", argv[0]); + return 0; + } + + cd = iconv_open(tocode, fromcode); + if (cd == (iconv_t)(-1)) + { + perror("iconv_open error"); + return 1; + } + + while ((inbytesleft = fread(inbuf + rest, 1, sizeof(inbuf) - rest, in)) != 0 + || rest != 0) + { + inbytesleft += rest; + pin = inbuf; + pout = outbuf; + outbytesleft = sizeof(outbuf); + r = iconv(cd, &pin, &inbytesleft, &pout, &outbytesleft); + fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); + if (r == (size_t)(-1) && errno != E2BIG && (errno != EINVAL || feof(in))) + { + perror("conversion error"); + return 1; + } + memmove(inbuf, pin, inbytesleft); + rest = inbytesleft; + } + pout = outbuf; + outbytesleft = sizeof(outbuf); + r = iconv(cd, NULL, NULL, &pout, &outbytesleft); + fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); + if (r == (size_t)(-1)) + { + perror("conversion error"); + return 1; + } + + iconv_close(cd); + + return 0; +} +#endif + diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv_test.c b/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv_test.c new file mode 100644 index 0000000000..25b5574fa6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv_test.c @@ -0,0 +1,261 @@ + +#include "win_iconv.c" +#include + +const char * +tohex(const char *str, int size) +{ + static char buf[BUFSIZ]; + char *pbuf = buf; + int i; + buf[0] = 0; + for (i = 0; i < size; ++i) + pbuf += sprintf(pbuf, "%02X", str[i] & 0xFF); + return buf; +} + +const char * +errstr(int errcode) +{ + static char buf[BUFSIZ]; + switch (errcode) + { + case 0: return "NOERROR"; + case EINVAL: return "EINVAL"; + case EILSEQ: return "EILSEQ"; + case E2BIG: return "E2BIG"; + } + sprintf(buf, "%d\n", errcode); + return buf; +} + +#ifdef USE_LIBICONV_DLL +int use_dll; + +int +setdll(const char *dllpath) +{ + char buf[BUFSIZ]; + rec_iconv_t cd; + + sprintf(buf, "WINICONV_LIBICONV_DLL=%s", dllpath); + putenv(buf); + if (libiconv_iconv_open(&cd, "ascii", "ascii")) + { + FreeLibrary(cd.hlibiconv); + use_dll = TRUE; + return TRUE; + } + use_dll = FALSE; + return FALSE; +} +#endif + +/* + * We can test the codepage that is installed in the system. + */ +int +check_enc(const char *encname, int codepage) +{ + iconv_t cd; + int cp; + cd = iconv_open("utf-8", encname); + if (cd == (iconv_t)(-1)) + { + printf("%s(%d) IS NOT SUPPORTED: SKIP THE TEST\n", encname, codepage); + return FALSE; + } + cp = ((rec_iconv_t *)cd)->from.codepage; + if (cp != codepage) + { + printf("%s(%d) ALIAS IS MAPPED TO DIFFERENT CODEPAGE (%d)\n", encname, codepage, cp); + exit(1); + } + iconv_close(cd); + return TRUE; +} + +int use_dll; + +void +test(const char *from, const char *fromstr, int fromsize, const char *to, const char *tostr, int tosize, int errcode, int bufsize, int line) +{ + char outbuf[BUFSIZ]; + const char *pin; + char *pout; + size_t inbytesleft; + size_t outbytesleft; + iconv_t cd; + size_t r; + char dllpath[_MAX_PATH]; + + cd = iconv_open(to, from); + if (cd == (iconv_t)(-1)) + { + printf("%s -> %s: NG: INVALID ENCODING NAME: line=%d\n", from, to, line); + exit(1); + } + +#ifdef USE_LIBICONV_DLL + if (((rec_iconv_t *)cd)->hlibiconv != NULL) + GetModuleFileName(((rec_iconv_t *)cd)->hlibiconv, dllpath, sizeof(dllpath)); + + if (use_dll && ((rec_iconv_t *)cd)->hlibiconv == NULL) + { + printf("%s: %s -> %s: NG: FAILED TO USE DLL: line=%d\n", dllpath, from, to, line); + exit(1); + } + else if (!use_dll && ((rec_iconv_t *)cd)->hlibiconv != NULL) + { + printf("%s: %s -> %s: NG: DLL IS LOADED UNEXPECTEDLY: line=%d\n", dllpath, from, to, line); + exit(1); + } +#endif + + errno = 0; + + pin = fromstr; + pout = outbuf; + inbytesleft = fromsize; + outbytesleft = bufsize; + r = iconv(cd, &pin, &inbytesleft, &pout, &outbytesleft); + if (r != (size_t)(-1)) + r = iconv(cd, NULL, NULL, &pout, &outbytesleft); + *pout = 0; + +#ifdef USE_LIBICONV_DLL + if (use_dll) + printf("%s: ", dllpath); +#endif + printf("%s(%s) -> ", from, tohex(fromstr, fromsize)); + printf("%s(%s%s%s): ", to, tohex(tostr, tosize), + errcode == 0 ? "" : ":", + errcode == 0 ? "" : errstr(errcode)); + if (strcmp(outbuf, tostr) == 0 && errno == errcode) + printf("OK\n"); + else + { + printf("RESULT(%s:%s): ", tohex(outbuf, sizeof(outbuf) - outbytesleft), + errstr(errno)); + printf("NG: line=%d\n", line); + exit(1); + } +} + +#define STATIC_STRLEN(arr) (sizeof(arr) - 1) + +#define success(from, fromstr, to, tostr) test(from, fromstr, STATIC_STRLEN(fromstr), to, tostr, STATIC_STRLEN(tostr), 0, BUFSIZ, __LINE__) +#define einval(from, fromstr, to, tostr) test(from, fromstr, STATIC_STRLEN(fromstr), to, tostr, STATIC_STRLEN(tostr), EINVAL, BUFSIZ, __LINE__) +#define eilseq(from, fromstr, to, tostr) test(from, fromstr, STATIC_STRLEN(fromstr), to, tostr, STATIC_STRLEN(tostr), EILSEQ, BUFSIZ, __LINE__) +#define e2big(from, fromstr, to, tostr, bufsize) test(from, fromstr, STATIC_STRLEN(fromstr), to, tostr, STATIC_STRLEN(tostr), E2BIG, bufsize, __LINE__) + +int +main(int argc, char **argv) +{ +#ifdef USE_LIBICONV_DLL + /* test use of dll if $DEFAULT_LIBICONV_DLL was defined. */ + if (setdll("")) + { + success("ascii", "ABC", "ascii", "ABC"); + success("ascii", "ABC", "utf-16be", "\x00\x41\x00\x42\x00\x43"); + } + else + { + printf("\nDLL TEST IS SKIPPED\n\n"); + } + + setdll("none"); +#endif + + if (check_enc("ascii", 20127)) + { + success("ascii", "ABC", "ascii", "ABC"); + /* MSB is dropped. Hmm... */ + success("ascii", "\x80\xFF", "ascii", "\x00\x7F"); + } + + /* unicode (CP1200 CP1201 CP12000 CP12001 CP65001) */ + if (check_enc("utf-8", 65001) + && check_enc("utf-16be", 1201) && check_enc("utf-16le", 1200) + && check_enc("utf-32be", 12001) && check_enc("utf-32le", 12000) + ) + { + /* Test the BOM behavior + * 1. Remove the BOM when "fromcode" is utf-16 or utf-32. + * 2. Add the BOM when "tocode" is utf-16 or utf-32. */ + success("utf-16", "\xFE\xFF\x01\x02", "utf-16be", "\x01\x02"); + success("utf-16", "\xFF\xFE\x02\x01", "utf-16be", "\x01\x02"); + success("utf-32", "\x00\x00\xFE\xFF\x00\x00\x01\x02", "utf-32be", "\x00\x00\x01\x02"); + success("utf-32", "\xFF\xFE\x00\x00\x02\x01\x00\x00", "utf-32be", "\x00\x00\x01\x02"); + success("utf-16", "\xFE\xFF\x00\x01", "utf-8", "\x01"); +#ifndef GLIB_COMPILATION + success("utf-8", "\x01", "utf-16", "\xFE\xFF\x00\x01"); + success("utf-8", "\x01", "utf-32", "\x00\x00\xFE\xFF\x00\x00\x00\x01"); +#else + success("utf-8", "\x01", "utf-16", "\xFF\xFE\x01\x00"); + success("utf-8", "\x01", "utf-32", "\xFF\xFE\x00\x00\x01\x00\x00\x00"); +#endif + + success("utf-16be", "\xFE\xFF\x01\x02", "utf-16be", "\xFE\xFF\x01\x02"); + success("utf-16le", "\xFF\xFE\x02\x01", "utf-16be", "\xFE\xFF\x01\x02"); + success("utf-32be", "\x00\x00\xFE\xFF\x00\x00\x01\x02", "utf-32be", "\x00\x00\xFE\xFF\x00\x00\x01\x02"); + success("utf-32le", "\xFF\xFE\x00\x00\x02\x01\x00\x00", "utf-32be", "\x00\x00\xFE\xFF\x00\x00\x01\x02"); + success("utf-16be", "\xFE\xFF\x00\x01", "utf-8", "\xEF\xBB\xBF\x01"); + success("utf-8", "\xEF\xBB\xBF\x01", "utf-8", "\xEF\xBB\xBF\x01"); + + success("utf-16be", "\x01\x02", "utf-16le", "\x02\x01"); + success("utf-16le", "\x02\x01", "utf-16be", "\x01\x02"); + success("utf-16be", "\xFE\xFF", "utf-16le", "\xFF\xFE"); + success("utf-16le", "\xFF\xFE", "utf-16be", "\xFE\xFF"); + success("utf-32be", "\x00\x00\x03\x04", "utf-32le", "\x04\x03\x00\x00"); + success("utf-32le", "\x04\x03\x00\x00", "utf-32be", "\x00\x00\x03\x04"); + success("utf-32be", "\x00\x00\xFF\xFF", "utf-16be", "\xFF\xFF"); + success("utf-16be", "\xFF\xFF", "utf-32be", "\x00\x00\xFF\xFF"); + success("utf-32be", "\x00\x01\x00\x00", "utf-16be", "\xD8\x00\xDC\x00"); + success("utf-16be", "\xD8\x00\xDC\x00", "utf-32be", "\x00\x01\x00\x00"); + success("utf-32be", "\x00\x10\xFF\xFF", "utf-16be", "\xDB\xFF\xDF\xFF"); + success("utf-16be", "\xDB\xFF\xDF\xFF", "utf-32be", "\x00\x10\xFF\xFF"); + eilseq("utf-32be", "\x00\x11\x00\x00", "utf-16be", ""); + eilseq("utf-16be", "\xDB\xFF\xE0\x00", "utf-32be", ""); + success("utf-8", "\xE3\x81\x82", "utf-16be", "\x30\x42"); + einval("utf-8", "\xE3", "utf-16be", ""); + } + + /* Japanese (CP932 CP20932 CP50220 CP50221 CP50222 CP51932) */ + if (check_enc("cp932", 932) + && check_enc("cp20932", 20932) && check_enc("euc-jp", 51932) + && check_enc("cp50220", 50220) && check_enc("cp50221", 50221) + && check_enc("cp50222", 50222) && check_enc("iso-2022-jp", 50221)) + { + /* Test the compatibility for each other Japanese codepage. + * And validate the escape sequence handling for iso-2022-jp. */ + success("utf-16be", "\xFF\x5E", "cp932", "\x81\x60"); + success("utf-16be", "\x30\x1C", "cp932", "\x81\x60"); + success("utf-16be", "\xFF\x5E", "cp932//nocompat", "\x81\x60"); + eilseq("utf-16be", "\x30\x1C", "cp932//nocompat", ""); + success("euc-jp", "\xA4\xA2", "utf-16be", "\x30\x42"); + einval("euc-jp", "\xA4\xA2\xA4", "utf-16be", "\x30\x42"); + eilseq("euc-jp", "\xA4\xA2\xFF\xFF", "utf-16be", "\x30\x42"); + success("cp932", "\x81\x60", "iso-2022-jp", "\x1B\x24\x42\x21\x41\x1B\x28\x42"); + success("UTF-16BE", "\xFF\x5E", "iso-2022-jp", "\x1B\x24\x42\x21\x41\x1B\x28\x42"); + eilseq("UTF-16BE", "\x30\x1C", "iso-2022-jp//nocompat", ""); + success("UTF-16BE", "\x30\x42\x30\x44", "iso-2022-jp", "\x1B\x24\x42\x24\x22\x24\x24\x1B\x28\x42"); + success("iso-2022-jp", "\x1B\x24\x42\x21\x41\x1B\x28\x42", "UTF-16BE", "\xFF\x5E"); + } + + /* + * test for //translit + * U+FF41 (FULLWIDTH LATIN SMALL LETTER A) <-> U+0062 (LATIN SMALL LETTER A) + */ + eilseq("UTF-16BE", "\xFF\x41", "iso-8859-1", ""); + success("UTF-16BE", "\xFF\x41", "iso-8859-1//translit", "a"); + + /* + * TODO: + * Test for state after iconv() failed. + * Ensure iconv() error is safe and continuable. + */ + + return 0; +} + From 1f664b68f4364d574e139f322c90287a71703e3b Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 17 Apr 2012 21:17:09 +0200 Subject: [PATCH 164/630] gsmopen: added gsmlib support to incoming smss (eg: PDU mode) --- .../mod_gsmopen/gsmopen_protocol.cpp | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 712276549f..a03c2b614b 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,5 +1,23 @@ #include "gsmopen.h" +#define WANT_GSMLIB + +#ifdef WANT_GSMLIB +#include +//#ifdef WIN32 +//#include +//#else +//#include +//#endif +//#include +//#include + + +using namespace std; +using namespace gsmlib; +#endif// WANT_GSMLIB + + extern int running; //FIXME int gsmopen_dir_entry_extension = 1; //FIXME int option_debug = 100; //FIXME @@ -347,6 +365,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) if (res) { DEBUGA_GSMOPEN("AT+CMGF? failed, continue\n", GSMOPEN_P_LOG); } +#ifndef WANT_GSMLIB res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); if (res) { ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); @@ -382,7 +401,26 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) } } +#else// WANT_GSMLIB + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); + if (res) { + ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); + } + tech_pvt->sms_pdu_not_supported = 0; + tech_pvt->no_ucs2 = 1; + if (tech_pvt->no_ucs2) { + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); + if (res) { + WARNINGA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,16"); //"flash", class 0 sms 7 bit + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,0"); //normal, 7 bit message + if (res) { + WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); + } + } +#endif// WANT_GSMLIB #ifdef NOTDEF //GSMLIB? XXX @@ -1599,6 +1637,58 @@ read: DEBUGA_GSMOPEN("2 content3=%s\n", GSMOPEN_P_LOG, content3); } } else { + + +#ifdef WANT_GSMLIB + char content2[1000]; + SMSMessageRef sms; + //MessageType messagetype; + //Address servicecentreaddress; + //Timestamp servicecentretimestamp; + //Address sender_recipient_address; + + sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + + DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + + } + DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); + DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); + DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); + DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); + + + memset(sms_body, '\0', sizeof(sms_body)); + strncpy(sms_body, content2, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); + strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); + strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); + strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), + sizeof(tech_pvt->sms_servicecentreaddress)); + tech_pvt->sms_messagetype = sms->messageType(); + //messagetype = sms->messageType(); + //servicecentreaddress = sms->serviceCentreAddress(); + //servicecentretimestamp = sms->serviceCentreTimestamp(); + //sender_recipient_address = sms->address(); + +#endif// WANT_GSMLIB + + + } } //it was the UCS2 from cellphone From a621cdee99cb3979d82d893f674919e34f57ef88 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 17 Apr 2012 22:54:54 +0200 Subject: [PATCH 165/630] gsmopen: added proof of concet to send pdu messages via gsmlib --- src/mod/endpoints/mod_gsmopen/Makefile | 2 +- .../mod_gsmopen/gsmopen_protocol.cpp | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index 7084df12e4..bf1920aa6f 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,6 +1,6 @@ MODNAME=mod_gsmopen SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' LOCAL_CFLAGS += $(SVNDEF) -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff -LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 +LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 -lgsmme LOCAL_OBJS=gsmopen_protocol.o include ../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index a03c2b614b..041ed8caa6 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1685,6 +1685,26 @@ read: //servicecentretimestamp = sms->serviceCentreTimestamp(); //sender_recipient_address = sms->address(); + + +#ifdef NOTDEF_SENDING_EXAMPLE + SMSMessageRef smsMessage; + // message text has probably to be in 8859-1 + smsMessage = new SMSSubmitMessage("submit me ", "3472665618"); + cout << smsMessage->toString() << endl; + string pdu = smsMessage->encode(); + cout << pdu << endl; + //cout << intToStr(pdu.length() / 2 - getSCAddressLen()) << endl; + cout << intToStr(pdu.length() / 2 - 1) << endl; + + /* + string pdu = encode(); + Parser p(_at->sendPdu("+CMGS=" + + intToStr(pdu.length() / 2 - getSCAddressLen()), + "+CMGS:", pdu)); + */ +#endif// NOTDEF_SENDING_EXAMPLE + #endif// WANT_GSMLIB From e27a9c78c32c314c0a90ad99f382e047d305d2b6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 17 Apr 2012 16:12:14 -0500 Subject: [PATCH 166/630] put caller back into the fifo if the agent hangs up before they are bridged --- src/mod/applications/mod_fifo/mod_fifo.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c index 3d99740e68..8b4905f60c 100644 --- a/src/mod/applications/mod_fifo/mod_fifo.c +++ b/src/mod/applications/mod_fifo/mod_fifo.c @@ -2926,12 +2926,27 @@ SWITCH_STANDARD_APP(fifo_function) if (!(switch_channel_ready(channel))) { const char *app = switch_channel_get_variable(other_channel, "current_application"); const char *arg = switch_channel_get_variable(other_channel, "current_application_data"); - switch_caller_extension_t *extension = NULL; + switch_caller_extension_t *extension = NULL; + + + switch_channel_set_variable_printf(channel, "last_sent_callee_id_name", "%s (AGENT FAIL)", + switch_channel_get_variable(other_channel, "caller_id_name")); + switch_channel_set_variable(channel, "last_sent_callee_id_number", switch_channel_get_variable(other_channel, "caller_id_number")); + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, + "Customer %s %s [%s] appears to be abandoned by agent %s [%s] " + "but is still on the line, redirecting them back to the queue with VIP status.\n", + switch_channel_get_name(other_channel), + switch_channel_get_variable(other_channel, "caller_id_name"), + switch_channel_get_variable(other_channel, "caller_id_number"), + switch_channel_get_variable(channel, "caller_id_name"), + switch_channel_get_variable(channel, "caller_id_number")); + + switch_channel_wait_for_state_timeout(other_channel, CS_HIBERNATE, 5000); send_presence(node); check_cancel(node); - - + if (app) { extension = switch_caller_extension_new(other_session, app, arg); switch_caller_extension_add_application(other_session, extension, app, arg); @@ -2940,6 +2955,7 @@ SWITCH_STANDARD_APP(fifo_function) } else { switch_channel_hangup(other_channel, SWITCH_CAUSE_NORMAL_CLEARING); } + switch_channel_set_variable(other_channel, "fifo_vip", "true"); switch_core_session_rwunlock(other_session); break; @@ -3098,6 +3114,7 @@ SWITCH_STANDARD_APP(fifo_function) send_presence(node); check_cancel(node); + switch_core_session_rwunlock(other_session); @@ -3230,7 +3247,6 @@ SWITCH_STANDARD_APP(fifo_function) switch_channel_clear_app_flag_key(FIFO_APP_KEY, channel, FIFO_APP_BRIDGE_TAG); switch_core_media_bug_resume(session); - } struct xml_helper { From 19f441c6f4516f035828aa112bcf92f47f4e0f28 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 17 Apr 2012 16:13:41 -0500 Subject: [PATCH 167/630] move relevant portion of display update code into the core and fix mod_loopback bug involving passing display updates across properly --- src/mod/endpoints/mod_loopback/mod_loopback.c | 50 +++++++++++++++++-- src/mod/endpoints/mod_sofia/mod_sofia.c | 20 +------- src/switch_core_session.c | 30 ++++++++--- 3 files changed, 71 insertions(+), 29 deletions(-) diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index 3ec843e187..a1882f8ca3 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -217,6 +217,7 @@ static switch_status_t channel_on_init(switch_core_session_t *session) switch_core_session_t *b_session; char name[128]; switch_caller_profile_t *caller_profile; + switch_event_t *vars = NULL; tech_pvt = switch_core_session_get_private(session); switch_assert(tech_pvt != NULL); @@ -273,8 +274,18 @@ static switch_status_t channel_on_init(switch_core_session_t *session) switch_channel_set_flag(channel, CF_ACCEPT_CNG); - //switch_ivr_transfer_variable(session, tech_pvt->other_session, "process_cdr"); - switch_ivr_transfer_variable(session, tech_pvt->other_session, NULL); + + if ((vars = (switch_event_t *) switch_channel_get_private(channel, "__loopback_vars__"))) { + switch_event_header_t *h; + + switch_channel_set_private(channel, "__loopback_vars__", NULL); + + for (h = vars->headers; h; h = h->next) { + switch_channel_set_variable(tech_pvt->other_channel, h->name, h->value); + } + + switch_event_destroy(&vars); + } if (switch_test_flag(tech_pvt, TFLAG_APP)) { switch_set_flag(b_tech_pvt, TFLAG_APP); @@ -382,12 +393,18 @@ static switch_status_t channel_on_destroy(switch_core_session_t *session) switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; void *pop; + switch_event_t *vars; channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); tech_pvt = switch_core_session_get_private(session); + if ((vars = (switch_event_t *) switch_channel_get_private(channel, "__loopback_vars__"))) { + switch_channel_set_private(channel, "__loopback_vars__", NULL); + switch_event_destroy(&vars); + } + if (tech_pvt) { switch_core_timer_destroy(&tech_pvt->timer); @@ -741,7 +758,7 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s { switch_channel_t *channel; private_t *tech_pvt; - int done = 1; + int done = 1, pass = 0; channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); @@ -799,7 +816,27 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s } - if (!done && tech_pvt->other_session && switch_test_flag(tech_pvt, TFLAG_RUNNING_APP)) { + switch (msg->message_id) { + case SWITCH_MESSAGE_INDICATE_DISPLAY: + { + + if (!zstr(msg->string_array_arg[0])) { + switch_channel_set_profile_var(tech_pvt->other_channel, "callee_id_name", msg->string_array_arg[0]); + } + + if (!zstr(msg->string_array_arg[1])) { + switch_channel_set_profile_var(tech_pvt->other_channel, "callee_id_number", msg->string_array_arg[1]); + } + + pass = 1; + } + break; + default: + break; + } + + + if (!done && tech_pvt->other_session && (pass || switch_test_flag(tech_pvt, TFLAG_RUNNING_APP))) { switch_status_t r = SWITCH_STATUS_FALSE; switch_core_session_t *other_session; @@ -889,6 +926,7 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi private_t *tech_pvt; switch_channel_t *channel; switch_caller_profile_t *caller_profile; + switch_event_t *clone = NULL; switch_core_session_add_stream(*new_session, NULL); @@ -906,6 +944,10 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; } + if (switch_event_dup(&clone, var_event) == SWITCH_STATUS_SUCCESS) { + switch_channel_set_private(channel, "__loopback_vars__", clone); + } + if (outbound_profile) { char *dialplan = NULL, *context = NULL; diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index a103b86302..22df5bbf25 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2082,20 +2082,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi case SWITCH_MESSAGE_INDICATE_DISPLAY: { const char *name = msg->string_array_arg[0], *number = msg->string_array_arg[1]; - char *arg = NULL; - char *argv[2] = { 0 }; - //int argc; - - if (zstr(name) && !zstr(msg->string_arg)) { - arg = strdup(msg->string_arg); - switch_assert(arg); - - switch_separate_string(arg, '|', argv, (sizeof(argv) / sizeof(argv[0]))); - name = argv[0]; - number = argv[1]; - - } - + if (!zstr(name)) { char message[256] = ""; const char *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent"); @@ -2176,9 +2163,6 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi tech_pvt->last_sent_callee_id_name = switch_core_session_strdup(tech_pvt->session, name); tech_pvt->last_sent_callee_id_number = switch_core_session_strdup(tech_pvt->session, number); - - switch_channel_set_variable(channel, "last_sent_callee_id_name", name); - switch_channel_set_variable(channel, "last_sent_callee_id_number", number); if (switch_event_create(&event, SWITCH_EVENT_CALL_UPDATE) == SWITCH_STATUS_SUCCESS) { @@ -2203,8 +2187,6 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } } } - - switch_safe_free(arg); } break; diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 4e6836ddce..54be1431ac 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -681,12 +681,30 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_perform_receive_message(swit switch_channel_clear_flag(session->channel, CF_EARLY_MEDIA); } - if (message->message_id == SWITCH_MESSAGE_INDICATE_DISPLAY && - switch_true(switch_channel_get_variable(session->channel, SWITCH_IGNORE_DISPLAY_UPDATES_VARIABLE))) { - switch_log_printf(SWITCH_CHANNEL_ID_LOG, message->_file, message->_func, message->_line, - switch_core_session_get_uuid(session), SWITCH_LOG_DEBUG1, "Ignoring display update.\n"); - status = SWITCH_STATUS_SUCCESS; - goto end; + if (message->message_id == SWITCH_MESSAGE_INDICATE_DISPLAY) { + char *arg = NULL; + + if (zstr(message->string_array_arg[0]) && !zstr(message->string_arg)) { + arg = switch_core_session_strdup(session, message->string_arg); + switch_separate_string(arg, '|', (char **)message->string_array_arg, 2); + } + + if (!zstr(message->string_array_arg[0])) { + switch_channel_set_variable(session->channel, "last_sent_callee_id_name", message->string_array_arg[0]); + } + + if (!zstr(message->string_array_arg[1])) { + switch_channel_set_variable(session->channel, "last_sent_callee_id_number", message->string_array_arg[1]); + } + + + if (switch_true(switch_channel_get_variable(session->channel, SWITCH_IGNORE_DISPLAY_UPDATES_VARIABLE))) { + switch_log_printf(SWITCH_CHANNEL_ID_LOG, message->_file, message->_func, message->_line, + switch_core_session_get_uuid(session), SWITCH_LOG_DEBUG1, "Ignoring display update.\n"); + status = SWITCH_STATUS_SUCCESS; + goto end; + } + } if (switch_channel_down_nosig(session->channel) && message->message_id != SWITCH_MESSAGE_INDICATE_SIGNAL_DATA) { From 315c0e4c0d77919aea0eb4b588b938744cc3db67 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 17 Apr 2012 23:32:21 +0000 Subject: [PATCH 168/630] ldns: fix bootstrap on automake 1.10 --- libs/ldns/configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/ldns/configure.ac b/libs/ldns/configure.ac index d4aa2b030e..534a4efef2 100644 --- a/libs/ldns/configure.ac +++ b/libs/ldns/configure.ac @@ -486,3 +486,4 @@ AC_OUTPUT COPY_HEADER_FILES(ldns/, ldns/) AC_CONFIG_SUBDIRS([drill]) +AC_REQUIRE_AUX_FILE([install-sh]) From bf60eff52b4f00d9dec5b5dd90fedfaf53b5867c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 17 Apr 2012 16:46:05 -0500 Subject: [PATCH 169/630] FS-4116 --resolve repeat bootstrap.sh or manually remove config.cache before running configure. The options was cached from the first time you ran configure and the new --without-openssl param did not matter --- bootstrap.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bootstrap.sh b/bootstrap.sh index a5658853fb..93c96f4088 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -340,6 +340,8 @@ bootstrap_apr() { ${ACLOCAL:-aclocal} ${ACLOCAL_OPTS} ### do some work to toss config.cache? + rm -rf config.cache + echo "Creating configure ..." ${AUTOCONF:-autoconf} From 456b07eb8b075a69f62cbde0c56eeb1ba2282b00 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 17 Apr 2012 16:51:40 -0500 Subject: [PATCH 170/630] FS-4125 --resolve you should really switch to {} when you know you have one dial string but i'll add this as a convienence --- src/switch_ivr_originate.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 825de90d32..3d120e8628 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1890,6 +1890,22 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess oglobals.check_vars = SWITCH_FALSE; } + + /* extract channel variables, allowing multiple sets of braces */ + if (*data == '<') { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Parsing ultra-global variables\n"); + while (*data == '<') { + char *parsed = NULL; + + if (switch_event_create_brackets(data, '<', '>', ',', &var_event, &parsed, SWITCH_FALSE) != SWITCH_STATUS_SUCCESS || !parsed) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Parse Error!\n"); + switch_goto_status(SWITCH_STATUS_GENERR, done); + } + + data = parsed; + } + } + /* extract channel variables, allowing multiple sets of braces */ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Parsing global variables\n"); while (*data == '{') { From 395965891e9b273e8d4605b08747c754f5e18b29 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 17 Apr 2012 16:53:25 -0500 Subject: [PATCH 171/630] FS-4119 --resolve --- src/include/switch_apr.h | 8 +++++++- src/switch_apr.c | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/include/switch_apr.h b/src/include/switch_apr.h index f2af8bc24b..a49487c5e2 100644 --- a/src/include/switch_apr.h +++ b/src/include/switch_apr.h @@ -1483,8 +1483,14 @@ SWITCH_DECLARE(switch_status_t) switch_thread_exit(switch_thread_t *thd, switch_ */ SWITCH_DECLARE(switch_status_t) switch_thread_join(switch_status_t *retval, switch_thread_t *thd); - /** @} */ +/** + * Return a human readable string describing the specified error. + * @param statcode The error code the get a string for. + * @param buf A buffer to hold the error string. + * @bufsize Size of the buffer to hold the string. + */ +SWITCH_DECLARE(char *) switch_strerror(switch_status_t statcode, char *buf, switch_size_t bufsize); diff --git a/src/switch_apr.c b/src/switch_apr.c index 329bbeee37..4443c4c7f9 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -1223,6 +1223,10 @@ SWITCH_DECLARE(int) switch_atomic_dec(volatile switch_atomic_t *mem) #endif } +SWITCH_DECLARE(char *) switch_strerror(switch_status_t statcode, char *buf, switch_size_t bufsize) +{ + return apr_strerror(statcode, buf, bufsize); +} /* For Emacs: * Local Variables: From 180f5354902fc460662be428b7e6614a62f152a1 Mon Sep 17 00:00:00 2001 From: William King Date: Tue, 17 Apr 2012 17:28:47 -0700 Subject: [PATCH 172/630] Adding a failed registration event and adding an auth result header on the attempt event. --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia_reg.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index fffc739224..75438c8c83 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -78,6 +78,7 @@ typedef struct private_object private_object_t; #define MY_EVENT_REGISTER "sofia::register" #define MY_EVENT_PRE_REGISTER "sofia::pre_register" #define MY_EVENT_REGISTER_ATTEMPT "sofia::register_attempt" +#define MY_EVENT_REGISTER_FAILURE "sofia::register_failure" #define MY_EVENT_UNREGISTER "sofia::unregister" #define MY_EVENT_EXPIRE "sofia::expire" #define MY_EVENT_GATEWAY_STATE "sofia::gateway_state" diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 9252071908..f7c614fc0e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -1241,6 +1241,20 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "username", username); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "realm", realm); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "user-agent", agent); + switch (auth_res) { + case AUTH_OK: + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "auth-result", "SUCCESS"); + break; + case AUTH_RENEWED: + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "auth-result", "RENEWED"); + break; + case AUTH_STALE: + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "auth-result", "STALE"); + break; + case AUTH_FORBIDDEN: + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "auth-result", "FORBIDDEN"); + break; + } switch_event_fire(&s_event); } @@ -1378,6 +1392,14 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand (regtype == REG_INVITE) ? "INVITE" : "REGISTER", profile->name, to_user, to_host, network_ip); } + if (forbidden && switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, MY_EVENT_REGISTER_FAILURE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "profile-name", profile->name); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "to-user", to_user); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "to-host", to_host); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "network-ip", network_ip); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "registration-type", (regtype == REG_INVITE) ? "INVITE" : "REGISTER"); + switch_event_fire(&s_event); + } switch_goto_int(r, 1, end); } } From 215d8921a132bb25b7afae78ec1fce58d434a57a Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 17 Apr 2012 21:48:49 -0400 Subject: [PATCH 173/630] please stop removing libs/ldns/install-sh if you can't make it actually work on all platforms. This is the second time I have had to erevert this --- bootstrap.sh | 24 -- libs/.gitignore | 1 + libs/ldns/install-sh | 527 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 528 insertions(+), 24 deletions(-) create mode 100644 libs/ldns/install-sh diff --git a/bootstrap.sh b/bootstrap.sh index 93c96f4088..217dabd2c8 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -436,24 +436,6 @@ bootstrap_fs() { rm -rf autom4te*.cache } -bootstrap_libs_pre() { - case "$1" in - *) return 0;; - esac -} - -bootstrap_libs_post() { - case "$1" in - ldns) - cd $BASEDIR/libs/ldns - if test ! -x install-sh; then - ex automake --add-missing --copy - ex rm -rf autom4te*.cache - fi - ;; - esac -} - bootstrap_libs() { for i in ${SUBDIRS}; do case "$i" in @@ -463,12 +445,6 @@ bootstrap_libs() { continue ;; esac - bootstrap_libs_pre ${i} - if ! ${BGJOB}; then - libbootstrap ${i} ; bootstrap_libs_post ${i} - else - ((libbootstrap ${i} ; bootstrap_libs_post ${i}) &) - fi done } diff --git a/libs/.gitignore b/libs/.gitignore index e39b1f4bf1..e0fed1112a 100644 --- a/libs/.gitignore +++ b/libs/.gitignore @@ -887,6 +887,7 @@ missing !/ldns/drill/install-sh !/ldns/examples/config.h.in !/ldns/examples/configure +!/ldns/install-sh !/ldns/ldns/config.h.in !/libdingaling/config.guess !/libdingaling/config.sub diff --git a/libs/ldns/install-sh b/libs/ldns/install-sh new file mode 100644 index 0000000000..a9244eb078 --- /dev/null +++ b/libs/ldns/install-sh @@ -0,0 +1,527 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2011-01-19.21; # UTC + +# 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 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + 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 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + 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 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 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 problematic for `test' and other utilities. + 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 + + # 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 X"$d" = X && 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-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: From 5c575b27f8ece89439fc218bfacaba87ec1b2d99 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 17 Apr 2012 22:00:59 -0400 Subject: [PATCH 174/630] fix typo --- bootstrap.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bootstrap.sh b/bootstrap.sh index 217dabd2c8..a3f5f26eca 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -445,6 +445,11 @@ bootstrap_libs() { continue ;; esac + if ! ${BGJOB}; then + libbootstrap ${i} ; + else + ((libbootstrap ${i} ; ) &) + fi done } From 2f9889624fb973d1942fd078d973b42375001a15 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 17 Apr 2012 22:30:28 -0400 Subject: [PATCH 175/630] AC_REQUIRE_AUX_FILE is not available in all versions of autotools --- libs/ldns/configure.ac | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/ldns/configure.ac b/libs/ldns/configure.ac index 534a4efef2..d4aa2b030e 100644 --- a/libs/ldns/configure.ac +++ b/libs/ldns/configure.ac @@ -486,4 +486,3 @@ AC_OUTPUT COPY_HEADER_FILES(ldns/, ldns/) AC_CONFIG_SUBDIRS([drill]) -AC_REQUIRE_AUX_FILE([install-sh]) From e9abdac010462e013200124b02abc1cc25471d4a Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 17 Apr 2012 23:05:48 -0400 Subject: [PATCH 176/630] attempt to fix ldns install-sh correctly --- bootstrap.sh | 23 +- libs/.gitignore | 1 - libs/ldns/configure.ac | 1 + libs/ldns/install-sh | 527 ----------------------------------------- 4 files changed, 22 insertions(+), 530 deletions(-) delete mode 100644 libs/ldns/install-sh diff --git a/bootstrap.sh b/bootstrap.sh index a3f5f26eca..93c96f4088 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -436,6 +436,24 @@ bootstrap_fs() { rm -rf autom4te*.cache } +bootstrap_libs_pre() { + case "$1" in + *) return 0;; + esac +} + +bootstrap_libs_post() { + case "$1" in + ldns) + cd $BASEDIR/libs/ldns + if test ! -x install-sh; then + ex automake --add-missing --copy + ex rm -rf autom4te*.cache + fi + ;; + esac +} + bootstrap_libs() { for i in ${SUBDIRS}; do case "$i" in @@ -445,10 +463,11 @@ bootstrap_libs() { continue ;; esac + bootstrap_libs_pre ${i} if ! ${BGJOB}; then - libbootstrap ${i} ; + libbootstrap ${i} ; bootstrap_libs_post ${i} else - ((libbootstrap ${i} ; ) &) + ((libbootstrap ${i} ; bootstrap_libs_post ${i}) &) fi done } diff --git a/libs/.gitignore b/libs/.gitignore index e0fed1112a..e39b1f4bf1 100644 --- a/libs/.gitignore +++ b/libs/.gitignore @@ -887,7 +887,6 @@ missing !/ldns/drill/install-sh !/ldns/examples/config.h.in !/ldns/examples/configure -!/ldns/install-sh !/ldns/ldns/config.h.in !/libdingaling/config.guess !/libdingaling/config.sub diff --git a/libs/ldns/configure.ac b/libs/ldns/configure.ac index d4aa2b030e..9d759ddea5 100644 --- a/libs/ldns/configure.ac +++ b/libs/ldns/configure.ac @@ -486,3 +486,4 @@ AC_OUTPUT COPY_HEADER_FILES(ldns/, ldns/) AC_CONFIG_SUBDIRS([drill]) +m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([install-sh])]) diff --git a/libs/ldns/install-sh b/libs/ldns/install-sh deleted file mode 100644 index a9244eb078..0000000000 --- a/libs/ldns/install-sh +++ /dev/null @@ -1,527 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2011-01-19.21; # UTC - -# 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 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - 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 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - 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 - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 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 problematic for `test' and other utilities. - 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 - - # 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 X"$d" = X && 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-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: From a4df4fa1f411a29dc35701ae79694ed2a2b7b1b2 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 15:17:31 +0200 Subject: [PATCH 177/630] gsmopen: added gsmlib support to outbound smss (eg: PDU mode). Must implement a mechanism to fall back sending in UCS2 when characters cannot be represented in iso-8859-1 (gsmlib does not support utf) --- .../mod_gsmopen/gsmopen_protocol.cpp | 160 +++++++++++++++--- 1 file changed, 132 insertions(+), 28 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 041ed8caa6..1c656fdf77 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -593,7 +593,7 @@ read: msecs_passed += 20; if (timeout_in_msec != 100){ - ERRORA("TIMEOUT=%d, PASSED=%d\n", GSMOPEN_P_LOG, timeout_in_msec, msecs_passed); + //ERRORA("TIMEOUT=%d, PASSED=%d\n", GSMOPEN_P_LOG, timeout_in_msec, msecs_passed); } //read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)); read_count = tech_pvt->serialPort_serial_control->Read(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); @@ -1687,24 +1687,6 @@ read: -#ifdef NOTDEF_SENDING_EXAMPLE - SMSMessageRef smsMessage; - // message text has probably to be in 8859-1 - smsMessage = new SMSSubmitMessage("submit me ", "3472665618"); - cout << smsMessage->toString() << endl; - string pdu = smsMessage->encode(); - cout << pdu << endl; - //cout << intToStr(pdu.length() / 2 - getSCAddressLen()) << endl; - cout << intToStr(pdu.length() / 2 - 1) << endl; - - /* - string pdu = encode(); - Parser p(_at->sendPdu("+CMGS=" + - intToStr(pdu.length() / 2 - getSCAddressLen()), - "+CMGS:", pdu)); - */ -#endif// NOTDEF_SENDING_EXAMPLE - #endif// WANT_GSMLIB @@ -2353,10 +2335,55 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb #endif //WIN32 return 0; } +int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *iso_8859_1_out, size_t outbytesleft) +{ + /* cicopet */ +#ifndef WIN32 + iconv_t iconv_format; + int iconv_res; + char *outbuf; + char *inbuf; + + outbuf = iso_8859_1_out; + inbuf = utf8_in; + + iconv_format = iconv_open("ISO_8859-1", "UTF8"); + if (iconv_format == (iconv_t) -1) { + ERRORA("error: %s\n", GSMOPEN_P_LOG, strerror(errno)); + return -1; + } + outbytesleft = strlen(utf8_in) * 2; + + DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, iso_8859_1_out=%s\n", + GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, iso_8859_1_out); + iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + if (iconv_res == (size_t) -1) { + ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); + return -1; + } + DEBUGA_GSMOPEN + ("iconv_res=%d, in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, iso_8859_1_out=%s\n", + GSMOPEN_P_LOG, iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, iso_8859_1_out); + iconv_close(iconv_format); +#if 0 + for (i = 0; i < 16000 - outbytesleft; i++) { + memset(stringa, '\0', sizeof(stringa)); + memset(stringa2, '\0', sizeof(stringa2)); + sprintf(stringa, "%02X", converted[i]); + DEBUGA_GSMOPEN("character is |%02X|\n", GSMOPEN_P_LOG, converted[i]); + stringa2[0] = stringa[strlen(stringa) - 2]; + stringa2[1] = stringa[strlen(stringa) - 1]; + strncat(iso_8859_1_out, stringa2, ((outbytesleft - strlen(iso_8859_1_out)) - 1)); //add the received line to the buffer + DEBUGA_GSMOPEN("stringa=%s, stringa2=%s, iso_8859_1_out=%s\n", GSMOPEN_P_LOG, stringa, stringa2, iso_8859_1_out); + } +#endif //0 +#endif //WIN32 + return 0; +} + int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft) { - char converted[16000]; #ifndef WIN32 iconv_t iconv_format; int iconv_res; @@ -2368,8 +2395,6 @@ int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, //double hexnum; //int i = 0; - memset(converted, '\0', sizeof(converted)); - DEBUGA_GSMOPEN("iso_8859_1_in=%s\n", GSMOPEN_P_LOG, iso_8859_1_in); outbuf = utf8_out; @@ -2656,17 +2681,94 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) if (tech_pvt->controldevprotocol == PROTOCOL_AT) { char smscommand[16000]; memset(smscommand, '\0', sizeof(smscommand)); + char pdu2[16000]; + memset(pdu2, '\0', sizeof(pdu2)); + int pdulenght = 0; PUSHA_UNLOCKA(&tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); +#ifndef WANT_GSMLIB err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); if (err) { ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); } +#else// WANT_GSMLIB + err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); + if (err) { + ERRORA("AT+CMGF=0 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); + } +#endif// WANT_GSMLIB + + + if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { +#ifdef WANT_GSMLIB + SMSMessageRef smsMessage; + + memset(mesg_test, '\0', sizeof(mesg_test)); + sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + //text=mesg_test; + + utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); + smsMessage = new SMSSubmitMessage(smscommand, dest); + string pdu = smsMessage->encode(); + strncpy(pdu2, pdu.c_str(), sizeof(pdu2)-1); + memset(smscommand, '\0', sizeof(smscommand)); + pdulenght = pdu.length() / 2 - 1; + sprintf(smscommand, "AT+CMGS=%d", pdulenght); + +#ifdef NOTDEF + char content2[1000]; + SMSMessageRef sms; + //MessageType messagetype; + //Address servicecentreaddress; + //Timestamp servicecentretimestamp; + //Address sender_recipient_address; + + sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + + DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + + } + DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); + DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); + DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); + DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); + + + memset(sms_body, '\0', sizeof(sms_body)); + strncpy(sms_body, content2, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); + strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); + strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); + strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), + sizeof(tech_pvt->sms_servicecentreaddress)); + tech_pvt->sms_messagetype = sms->messageType(); + //messagetype = sms->messageType(); + //servicecentreaddress = sms->serviceCentreAddress(); + //servicecentretimestamp = sms->serviceCentreTimestamp(); + //sender_recipient_address = sms->address(); +#endif// NOTDEF + +#else// WANT_GSMLIB + ERRORA("tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0 && no WANT_GSMLIB\n", GSMOPEN_P_LOG); + return RESULT_FAILURE; +#endif// WANT_GSMLIB - if (tech_pvt->no_ucs2) { - sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //TODO: support phones that only accept pdu mode } else { char dest2[1048]; @@ -2677,11 +2779,8 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) memset(dest2, '\0', sizeof(dest2)); utf8_to_ucs2(tech_pvt, dest, strlen(dest), dest2, sizeof(dest2)); - sprintf(smscommand, "AT+CMGS=\"%s\"", dest2); //TODO: support phones that only accept pdu mode + sprintf(smscommand, "AT+CMGS=\"%s\"", dest2); } - //TODO: support phones that only accept pdu mode - //TODO would be better to lock controldev here - //sprintf(smscommand, "AT+CMGS=\"%s\"", dest); //FIXME: nokia e63 want this err = gsmopen_serial_write_AT_noack(tech_pvt, smscommand); if (err) { ERRORA("Error sending SMS\n", GSMOPEN_P_LOG); @@ -2716,6 +2815,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) } #endif +#ifndef WANT_GSMLIB memset(mesg_test, '\0', sizeof(mesg_test)); sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 //text=mesg_test; @@ -2726,7 +2826,11 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) } else { utf8_to_ucs2(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); } +#else // WANT_GSMLIB + memset(smscommand, '\0', sizeof(smscommand)); + sprintf(smscommand, "%s", pdu2); +#endif // WANT_GSMLIB smscommand[strlen(smscommand)] = 0x1A; DEBUGA_GSMOPEN("smscommand len is: %d, text is:|||%s|||\n", GSMOPEN_P_LOG, (int) strlen(smscommand), smscommand); From 4ed53eca2397593171c3791d2aa2c606c40a06aa Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 15:18:39 +0200 Subject: [PATCH 178/630] gsmopen: updated gsmopen.h --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 355ae4a588..1c959a57ec 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -563,6 +563,7 @@ int gsmopen_serial_getstatus_AT(private_t *tech_pvt); #define RESULT_SUCCESS 1 int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft); int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft); +int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *iso_8859_1_out, size_t outbytesleft); //#define PUSHA_UNLOCKA(x) pthread_cleanup_push(gsmopen_unlocka_log, (void *) x); //#define POPPA_UNLOCKA(x) pthread_cleanup_pop(0); From e08c027dbe81da212513ecc3fc81d76463d6f98c Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 15:35:53 +0200 Subject: [PATCH 179/630] gsmopen: added an excerpt from gsmlib FAQ on how to sending UCS2 when characters cannot be represented in GSM-7 (gsmlib does not support utf to UCS2) --- .../mod_gsmopen/gsmopen_protocol.cpp | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 1c656fdf77..36fb81b3c4 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2706,7 +2706,8 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) SMSMessageRef smsMessage; memset(mesg_test, '\0', sizeof(mesg_test)); - sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + //sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + sprintf(mesg_test,":) ciao belè èéàòìù"); //text=mesg_test; utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); @@ -2718,6 +2719,31 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) sprintf(smscommand, "AT+CMGS=%d", pdulenght); #ifdef NOTDEF + +*** 9. How to support unicode? + +You need 6 steps: + +1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET + +2. set your locale correctly, for example, my locale, china. + setlocale(LC_ALL, "chs"); + +3. translate MBCS(multiple byte character set) string to unicode string. + wchar_t wstr[ 1000 ]; + memset(wstr, 0, 2000); + mbstowcs(wstr, data.c_str(), data.length()); + +4. get unicode string length. + int wcs_len = wcslen(wstr); + +5. change unicode string to net order. + for (int i = 0; i < wcs_len; i++) + wstr[ i ] = htons(wstr[ i ]); + +6. put unicode string into pdu. + + char content2[1000]; SMSMessageRef sms; //MessageType messagetype; From b20558818c589e3ee35aebafc75c44059592d0ca Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 15:41:08 +0200 Subject: [PATCH 180/630] gsmopen: not compiling with gsmlib by default right now, will be default soon --- src/mod/endpoints/mod_gsmopen/Makefile | 2 +- src/mod/endpoints/mod_gsmopen/Makefile.am | 2 +- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index bf1920aa6f..e728199f1a 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,6 +1,6 @@ MODNAME=mod_gsmopen SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' LOCAL_CFLAGS += $(SVNDEF) -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff -LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 -lgsmme +LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 #-lgsmme LOCAL_OBJS=gsmopen_protocol.o include ../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/Makefile.am b/src/mod/endpoints/mod_gsmopen/Makefile.am index 4d9f751a19..491cf4ab42 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile.am +++ b/src/mod/endpoints/mod_gsmopen/Makefile.am @@ -13,7 +13,7 @@ mod_LTLIBRARIES = mod_gsmopen.la mod_gsmopen_la_SOURCES = mod_gsmopen.cpp gsmopen_protocol.cpp mod_gsmopen_la_CFLAGS = $(AM_CFLAGS) -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I. -DGSMOPEN_SVN_VERSION=\"`cat $(switch_builddir)/.version`\" mod_gsmopen_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA) $(TIFF_LA) -mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lctb-0.16 +mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lctb-0.16 #-lgsmme $(SPANDSP_LA): $(TIFF_LA) $(SPANDSP_DIR) $(SPANDSP_DIR)/.update cd $(SPANDSP_BUILDDIR) && $(MAKE) -j1 diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 36fb81b3c4..35fec92a29 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,6 +1,6 @@ #include "gsmopen.h" -#define WANT_GSMLIB +#undef WANT_GSMLIB #ifdef WANT_GSMLIB #include From e6963e34bb1fea17a7bc7676c1edecba1538e4df Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 18 Apr 2012 09:17:52 -0500 Subject: [PATCH 181/630] FS-4127 --resolve --- src/switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch.c b/src/switch.c index b903fae5f0..4ac189a84a 100644 --- a/src/switch.c +++ b/src/switch.c @@ -212,7 +212,7 @@ void WINAPI service_main(DWORD numArgs, char **args) memset(&status, 0, sizeof(SERVICE_STATUS)); status.dwServiceType = SERVICE_WIN32; status.dwCurrentState = SERVICE_START_PENDING; - status.dwControlsAccepted = SERVICE_ACCEPT_STOP; + status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; /* register our handler for service control messages */ hStatus = RegisterServiceCtrlHandler(service_name, &ServiceCtrlHandler); From 113c00aa5b038c458b61b8c68d486c2ad8c5fc63 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Wed, 18 Apr 2012 09:33:05 -0500 Subject: [PATCH 182/630] FS-4117 --resolve --- src/switch_core_sqldb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index e939981aa0..cddf640245 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -903,7 +903,7 @@ SWITCH_DECLARE(switch_bool_t) switch_cache_db_test_reactive(switch_cache_db_hand switch_core_db_exec(dbh->native_handle.core_db_dbh, drop_sql, NULL, NULL, &errmsg); } if (errmsg) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SQL ERR [%s]\n[%s]\n", errmsg, reactive_sql); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SQL ERR [%s]\n[%s]\n", errmsg, drop_sql); switch_core_db_free(errmsg); errmsg = NULL; } From 98b51e56813927d3aca3b29ad172a28ad4bac65e Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 17 Apr 2012 11:27:54 +0200 Subject: [PATCH 183/630] gsmopen: zeroize sms_message store in case we receive an empty message --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index f0b28e1c75..712276549f 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1110,7 +1110,7 @@ read: memset(at_command, 0, sizeof(at_command)); sprintf(at_command, "AT+CMGR=%d", tech_pvt->unread_sms_msg_id); - //memset(tech_pvt->sms_message, 0, sizeof(tech_pvt->sms_message)); + memset(tech_pvt->sms_message, 0, sizeof(tech_pvt->sms_message)); tech_pvt->reading_sms_msg = 1; res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); From f2a77da45ed779ffcc3b8e5db8d2b26a28b6f0d3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 18 Apr 2012 08:08:45 -0500 Subject: [PATCH 184/630] FS-4126 --resolve --- src/mod/applications/mod_conference/mod_conference.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 549269ff68..4d394306ed 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -2501,6 +2501,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v switch_clear_flag_locked(member, MFLAG_TALKING); check_agc_levels(member); clear_avg(member); + member->score_iir = 0; if (test_eflag(member->conference, EFLAG_STOP_TALKING) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) { From 47ab2eb7b243aac78d57bb62fd23440ea68db2c0 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 16:24:54 +0200 Subject: [PATCH 185/630] gsmopen: compile on windows, with iconv for windows --- .../mod_gsmopen/gsmopen_protocol.cpp | 28 ++++++++++--------- src/mod/endpoints/mod_gsmopen/win_iconv.c | 1 + .../mod_gsmopen/win_iconv/win_iconv.c | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) create mode 120000 src/mod/endpoints/mod_gsmopen/win_iconv.c diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 35fec92a29..bf4d1e3e30 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,5 +1,7 @@ #include "gsmopen.h" - +#ifdef WIN32 +#include "win_iconv.c" +#endif// WIN32 #undef WANT_GSMLIB #ifdef WANT_GSMLIB @@ -2282,7 +2284,7 @@ int gsmopen_serial_call_AT(private_t *tech_pvt, char *dstr) int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outbytesleft) { char converted[16000]; -#ifndef WIN32 +//#ifndef WIN32 iconv_t iconv_format; int iconv_res; char *outbuf; @@ -2319,7 +2321,7 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb DEBUGA_GSMOPEN("1 ciao in=%s, inleft=%d, out=%s, outleft=%d, converted=%s, utf8_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); - iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); if (iconv_res == (size_t) -1) { DEBUGA_GSMOPEN("2 ciao in=%s, inleft=%d, out=%s, outleft=%d, converted=%s, utf8_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); @@ -2332,13 +2334,13 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb GSMOPEN_P_LOG, iconv_res, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); iconv_close(iconv_format); -#endif //WIN32 +//#endif //WIN32 return 0; } int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *iso_8859_1_out, size_t outbytesleft) { /* cicopet */ -#ifndef WIN32 +//#ifndef WIN32 iconv_t iconv_format; int iconv_res; char *outbuf; @@ -2356,7 +2358,7 @@ int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, c DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, iso_8859_1_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, iso_8859_1_out); - iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); if (iconv_res == (size_t) -1) { ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); return -1; @@ -2377,14 +2379,14 @@ int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, c DEBUGA_GSMOPEN("stringa=%s, stringa2=%s, iso_8859_1_out=%s\n", GSMOPEN_P_LOG, stringa, stringa2, iso_8859_1_out); } #endif //0 -#endif //WIN32 +//#endif //WIN32 return 0; } int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, size_t outbytesleft) { -#ifndef WIN32 +//#ifndef WIN32 iconv_t iconv_format; int iconv_res; char *outbuf; @@ -2407,7 +2409,7 @@ int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, } inbytesleft = strlen(iso_8859_1_in) * 2; - iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); if (iconv_res == (size_t) -1) { DEBUGA_GSMOPEN("ciao in=%s, inleft=%d, out=%s, outleft=%d, utf8_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_out); @@ -2420,14 +2422,14 @@ int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, iconv_close(iconv_format); -#endif //WIN32 +//#endif //WIN32 return 0; } int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *ucs2_out, size_t outbytesleft) { /* cicopet */ -#ifndef WIN32 +//#ifndef WIN32 iconv_t iconv_format; int iconv_res; char *outbuf; @@ -2451,7 +2453,7 @@ int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *u DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, converted=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, converted); - iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); if (iconv_res == (size_t) -1) { ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); return -1; @@ -2471,7 +2473,7 @@ int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *u strncat(ucs2_out, stringa2, ((outbytesleft - strlen(ucs2_out)) - 1)); //add the received line to the buffer DEBUGA_GSMOPEN("stringa=%s, stringa2=%s, ucs2_out=%s\n", GSMOPEN_P_LOG, stringa, stringa2, ucs2_out); } -#endif //WIN32 +//#endif //WIN32 return 0; } diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv.c b/src/mod/endpoints/mod_gsmopen/win_iconv.c new file mode 120000 index 0000000000..98b5c9e160 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv.c @@ -0,0 +1 @@ +win_iconv/win_iconv.c \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c b/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c index 9d22da3f40..94c8d4a1e7 100644 --- a/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c +++ b/src/mod/endpoints/mod_gsmopen/win_iconv/win_iconv.c @@ -1065,7 +1065,7 @@ xstrndup(const char *s, size_t n) { char *p; - p = malloc(n + 1); + p = (char *)malloc(n + 1); if (p == NULL) return NULL; memcpy(p, s, n); From 9134968fd6fe05d66fe1efb987b7ff2b5d3401fd Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 16:32:22 +0200 Subject: [PATCH 186/630] gsmopen: compile on windows, with iconv for windows --- src/mod/endpoints/mod_gsmopen/win_iconv.c | 1 - 1 file changed, 1 deletion(-) delete mode 120000 src/mod/endpoints/mod_gsmopen/win_iconv.c diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv.c b/src/mod/endpoints/mod_gsmopen/win_iconv.c deleted file mode 120000 index 98b5c9e160..0000000000 --- a/src/mod/endpoints/mod_gsmopen/win_iconv.c +++ /dev/null @@ -1 +0,0 @@ -win_iconv/win_iconv.c \ No newline at end of file From 3156a1ec9a2a0e46b0e6e2e273658d357a3fb22d Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 16:33:09 +0200 Subject: [PATCH 187/630] gsmopen: compile on windows, with iconv for windows. Substituted actual file to symlink --- src/mod/endpoints/mod_gsmopen/win_iconv.c | 1986 +++++++++++++++++++++ 1 file changed, 1986 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/win_iconv.c diff --git a/src/mod/endpoints/mod_gsmopen/win_iconv.c b/src/mod/endpoints/mod_gsmopen/win_iconv.c new file mode 100644 index 0000000000..94c8d4a1e7 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/win_iconv.c @@ -0,0 +1,1986 @@ +/* + * iconv library using Win32 API to conversion. + * + * This file is placed in the public domain. + * + * Last Change: 2009-07-06 + * + * ENVIRONMENT VARIABLE: + * WINICONV_LIBICONV_DLL + * If $WINICONV_LIBICONV_DLL is set, win_iconv uses the DLL. If + * loading the DLL or iconv_open() failed, falls back to internal + * conversion. If a few DLL are specified as comma separated list, + * the first loadable DLL is used. The DLL should have iconv_open(), + * iconv_close() and iconv(). Or libiconv_open(), libiconv_close() + * and libiconv(). + * (only available when USE_LIBICONV_DLL is defined at compile time) + * + * Win32 API does not support strict encoding conversion for some + * codepage. And MLang function drop or replace invalid bytes and does + * not return useful error status as iconv. This implementation cannot + * be used for encoding validation purpose. + */ + +/* for WC_NO_BEST_FIT_CHARS */ +#ifndef WINVER +# define WINVER 0x0500 +#endif + +#include +#include +#include +#include + +#if 0 +# define MAKE_EXE +# define MAKE_DLL +# define USE_LIBICONV_DLL +#endif + +#if !defined(DEFAULT_LIBICONV_DLL) +# define DEFAULT_LIBICONV_DLL "" +#endif + +#define MB_CHAR_MAX 16 + +#define UNICODE_MODE_BOM_DONE 1 +#define UNICODE_MODE_SWAPPED 2 + +#define FLAG_USE_BOM 1 +#define FLAG_TRANSLIT 2 /* //TRANSLIT */ +#define FLAG_IGNORE 4 /* //IGNORE (not implemented) */ + +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; + +typedef void* iconv_t; + +iconv_t iconv_open(const char *tocode, const char *fromcode); +int iconv_close(iconv_t cd); +size_t iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + +/* libiconv interface for vim */ +#if defined(MAKE_DLL) +int +iconvctl (iconv_t cd, int request, void* argument) +{ + /* not supported */ + return 0; +} +#endif + +typedef struct compat_t compat_t; +typedef struct csconv_t csconv_t; +typedef struct rec_iconv_t rec_iconv_t; + +typedef iconv_t (*f_iconv_open)(const char *tocode, const char *fromcode); +typedef int (*f_iconv_close)(iconv_t cd); +typedef size_t (*f_iconv)(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +typedef int* (*f_errno)(void); +typedef int (*f_mbtowc)(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +typedef int (*f_wctomb)(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +typedef int (*f_mblen)(csconv_t *cv, const uchar *buf, int bufsize); +typedef int (*f_flush)(csconv_t *cv, uchar *buf, int bufsize); + +#define COMPAT_IN 1 +#define COMPAT_OUT 2 + +/* unicode mapping for compatibility with other conversion table. */ +struct compat_t { + uint in; + uint out; + uint flag; +}; + +struct csconv_t { + int codepage; + int flags; + f_mbtowc mbtowc; + f_wctomb wctomb; + f_mblen mblen; + f_flush flush; + DWORD mode; + compat_t *compat; +}; + +struct rec_iconv_t { + iconv_t cd; + f_iconv_close iconv_close; + f_iconv iconv; + f_errno _errno; + csconv_t from; + csconv_t to; +#if defined(USE_LIBICONV_DLL) + HMODULE hlibiconv; +#endif +}; + +static int win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); +static int win_iconv_close(iconv_t cd); +static size_t win_iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + +static int load_mlang(); +static int make_csconv(const char *name, csconv_t *cv); +static int name_to_codepage(const char *name); +static uint utf16_to_ucs4(const ushort *wbuf); +static void ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize); +static int mbtowc_flags(int codepage); +static int must_use_null_useddefaultchar(int codepage); +static char *strrstr(const char *str, const char *token); +static char *xstrndup(const char *s, size_t n); +static int seterror(int err); + +#if defined(USE_LIBICONV_DLL) +static int libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); +static PVOID MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size); +static HMODULE find_imported_module_by_funcname(HMODULE hModule, const char *funcname); + +static HMODULE hwiniconv; +#endif + +static int sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize); +static int eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize); + +static int kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); +static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); +static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize); + +static struct { + int codepage; + const char *name; +} codepage_alias[] = { + {65001, "CP65001"}, + {65001, "UTF8"}, + {65001, "UTF-8"}, + + {1200, "CP1200"}, + {1200, "UTF16LE"}, + {1200, "UTF-16LE"}, + {1200, "UCS-2LE"}, + + {1201, "CP1201"}, + {1201, "UTF16BE"}, + {1201, "UTF-16BE"}, + {1201, "UCS-2BE"}, + {1201, "unicodeFFFE"}, + + {12000, "CP12000"}, + {12000, "UTF32LE"}, + {12000, "UTF-32LE"}, + + {12001, "CP12001"}, + {12001, "UTF32BE"}, + {12001, "UTF-32BE"}, + +#ifndef GLIB_COMPILATION + /* + * Default is big endian. + * See rfc2781 4.3 Interpreting text labelled as UTF-16. + */ + {1201, "UTF16"}, + {1201, "UTF-16"}, + {12001, "UTF32"}, + {12001, "UTF-32"}, +#else + /* Default is little endian, because the platform is */ + {1200, "UTF16"}, + {1200, "UTF-16"}, + {1200, "UCS-2"}, + {12000, "UTF32"}, + {12000, "UTF-32"}, +#endif + + /* copy from libiconv `iconv -l` */ + /* !IsValidCodePage(367) */ + {20127, "ANSI_X3.4-1968"}, + {20127, "ANSI_X3.4-1986"}, + {20127, "ASCII"}, + {20127, "CP367"}, + {20127, "IBM367"}, + {20127, "ISO-IR-6"}, + {20127, "ISO646-US"}, + {20127, "ISO_646.IRV:1991"}, + {20127, "US"}, + {20127, "US-ASCII"}, + {20127, "CSASCII"}, + + /* !IsValidCodePage(819) */ + {1252, "CP819"}, + {1252, "IBM819"}, + {28591, "ISO-8859-1"}, + {28591, "ISO-IR-100"}, + {28591, "ISO8859-1"}, + {28591, "ISO_8859-1"}, + {28591, "ISO_8859-1:1987"}, + {28591, "L1"}, + {28591, "LATIN1"}, + {28591, "CSISOLATIN1"}, + + {1250, "CP1250"}, + {1250, "MS-EE"}, + {1250, "WINDOWS-1250"}, + + {1251, "CP1251"}, + {1251, "MS-CYRL"}, + {1251, "WINDOWS-1251"}, + + {1252, "CP1252"}, + {1252, "MS-ANSI"}, + {1252, "WINDOWS-1252"}, + + {1253, "CP1253"}, + {1253, "MS-GREEK"}, + {1253, "WINDOWS-1253"}, + + {1254, "CP1254"}, + {1254, "MS-TURK"}, + {1254, "WINDOWS-1254"}, + + {1255, "CP1255"}, + {1255, "MS-HEBR"}, + {1255, "WINDOWS-1255"}, + + {1256, "CP1256"}, + {1256, "MS-ARAB"}, + {1256, "WINDOWS-1256"}, + + {1257, "CP1257"}, + {1257, "WINBALTRIM"}, + {1257, "WINDOWS-1257"}, + + {1258, "CP1258"}, + {1258, "WINDOWS-1258"}, + + {850, "850"}, + {850, "CP850"}, + {850, "IBM850"}, + {850, "CSPC850MULTILINGUAL"}, + + /* !IsValidCodePage(862) */ + {862, "862"}, + {862, "CP862"}, + {862, "IBM862"}, + {862, "CSPC862LATINHEBREW"}, + + {866, "866"}, + {866, "CP866"}, + {866, "IBM866"}, + {866, "CSIBM866"}, + + /* !IsValidCodePage(154) */ + {154, "CP154"}, + {154, "CYRILLIC-ASIAN"}, + {154, "PT154"}, + {154, "PTCP154"}, + {154, "CSPTCP154"}, + + /* !IsValidCodePage(1133) */ + {1133, "CP1133"}, + {1133, "IBM-CP1133"}, + + {874, "CP874"}, + {874, "WINDOWS-874"}, + + /* !IsValidCodePage(51932) */ + {51932, "CP51932"}, + {51932, "MS51932"}, + {51932, "WINDOWS-51932"}, + {51932, "EUC-JP"}, + + {932, "CP932"}, + {932, "MS932"}, + {932, "SHIFFT_JIS"}, + {932, "SHIFFT_JIS-MS"}, + {932, "SJIS"}, + {932, "SJIS-MS"}, + {932, "SJIS-OPEN"}, + {932, "SJIS-WIN"}, + {932, "WINDOWS-31J"}, + {932, "WINDOWS-932"}, + {932, "CSWINDOWS31J"}, + + {50221, "CP50221"}, + {50221, "ISO-2022-JP"}, + {50221, "ISO-2022-JP-MS"}, + {50221, "ISO2022-JP"}, + {50221, "ISO2022-JP-MS"}, + {50221, "MS50221"}, + {50221, "WINDOWS-50221"}, + + {936, "CP936"}, + {936, "GBK"}, + {936, "MS936"}, + {936, "WINDOWS-936"}, + + {950, "CP950"}, + {950, "BIG5"}, + + {949, "CP949"}, + {949, "UHC"}, + {949, "EUC-KR"}, + + {1361, "CP1361"}, + {1361, "JOHAB"}, + + {437, "437"}, + {437, "CP437"}, + {437, "IBM437"}, + {437, "CSPC8CODEPAGE437"}, + + {737, "CP737"}, + + {775, "CP775"}, + {775, "IBM775"}, + {775, "CSPC775BALTIC"}, + + {852, "852"}, + {852, "CP852"}, + {852, "IBM852"}, + {852, "CSPCP852"}, + + /* !IsValidCodePage(853) */ + {853, "CP853"}, + + {855, "855"}, + {855, "CP855"}, + {855, "IBM855"}, + {855, "CSIBM855"}, + + {857, "857"}, + {857, "CP857"}, + {857, "IBM857"}, + {857, "CSIBM857"}, + + /* !IsValidCodePage(858) */ + {858, "CP858"}, + + {860, "860"}, + {860, "CP860"}, + {860, "IBM860"}, + {860, "CSIBM860"}, + + {861, "861"}, + {861, "CP-IS"}, + {861, "CP861"}, + {861, "IBM861"}, + {861, "CSIBM861"}, + + {863, "863"}, + {863, "CP863"}, + {863, "IBM863"}, + {863, "CSIBM863"}, + + {864, "CP864"}, + {864, "IBM864"}, + {864, "CSIBM864"}, + + {865, "865"}, + {865, "CP865"}, + {865, "IBM865"}, + {865, "CSIBM865"}, + + {869, "869"}, + {869, "CP-GR"}, + {869, "CP869"}, + {869, "IBM869"}, + {869, "CSIBM869"}, + + /* !IsValidCodePage(1152) */ + {1125, "CP1125"}, + + /* + * Code Page Identifiers + * http://msdn2.microsoft.com/en-us/library/ms776446.aspx + */ + {37, "IBM037"}, /* IBM EBCDIC US-Canada */ + {437, "IBM437"}, /* OEM United States */ + {500, "IBM500"}, /* IBM EBCDIC International */ + {708, "ASMO-708"}, /* Arabic (ASMO 708) */ + /* 709 Arabic (ASMO-449+, BCON V4) */ + /* 710 Arabic - Transparent Arabic */ + {720, "DOS-720"}, /* Arabic (Transparent ASMO); Arabic (DOS) */ + {737, "ibm737"}, /* OEM Greek (formerly 437G); Greek (DOS) */ + {775, "ibm775"}, /* OEM Baltic; Baltic (DOS) */ + {850, "ibm850"}, /* OEM Multilingual Latin 1; Western European (DOS) */ + {852, "ibm852"}, /* OEM Latin 2; Central European (DOS) */ + {855, "IBM855"}, /* OEM Cyrillic (primarily Russian) */ + {857, "ibm857"}, /* OEM Turkish; Turkish (DOS) */ + {858, "IBM00858"}, /* OEM Multilingual Latin 1 + Euro symbol */ + {860, "IBM860"}, /* OEM Portuguese; Portuguese (DOS) */ + {861, "ibm861"}, /* OEM Icelandic; Icelandic (DOS) */ + {862, "DOS-862"}, /* OEM Hebrew; Hebrew (DOS) */ + {863, "IBM863"}, /* OEM French Canadian; French Canadian (DOS) */ + {864, "IBM864"}, /* OEM Arabic; Arabic (864) */ + {865, "IBM865"}, /* OEM Nordic; Nordic (DOS) */ + {866, "cp866"}, /* OEM Russian; Cyrillic (DOS) */ + {869, "ibm869"}, /* OEM Modern Greek; Greek, Modern (DOS) */ + {870, "IBM870"}, /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ + {874, "windows-874"}, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ + {875, "cp875"}, /* IBM EBCDIC Greek Modern */ + {932, "shift_jis"}, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ + {932, "shift-jis"}, /* alternative name for it */ + {936, "gb2312"}, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ + {949, "ks_c_5601-1987"}, /* ANSI/OEM Korean (Unified Hangul Code) */ + {950, "big5"}, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ + {1026, "IBM1026"}, /* IBM EBCDIC Turkish (Latin 5) */ + {1047, "IBM01047"}, /* IBM EBCDIC Latin 1/Open System */ + {1140, "IBM01140"}, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ + {1141, "IBM01141"}, /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ + {1142, "IBM01142"}, /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ + {1143, "IBM01143"}, /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ + {1144, "IBM01144"}, /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ + {1145, "IBM01145"}, /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ + {1146, "IBM01146"}, /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ + {1147, "IBM01147"}, /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ + {1148, "IBM01148"}, /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ + {1149, "IBM01149"}, /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ + {1250, "windows-1250"}, /* ANSI Central European; Central European (Windows) */ + {1251, "windows-1251"}, /* ANSI Cyrillic; Cyrillic (Windows) */ + {1252, "windows-1252"}, /* ANSI Latin 1; Western European (Windows) */ + {1253, "windows-1253"}, /* ANSI Greek; Greek (Windows) */ + {1254, "windows-1254"}, /* ANSI Turkish; Turkish (Windows) */ + {1255, "windows-1255"}, /* ANSI Hebrew; Hebrew (Windows) */ + {1256, "windows-1256"}, /* ANSI Arabic; Arabic (Windows) */ + {1257, "windows-1257"}, /* ANSI Baltic; Baltic (Windows) */ + {1258, "windows-1258"}, /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ + {1361, "Johab"}, /* Korean (Johab) */ + {10000, "macintosh"}, /* MAC Roman; Western European (Mac) */ + {10001, "x-mac-japanese"}, /* Japanese (Mac) */ + {10002, "x-mac-chinesetrad"}, /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ + {10003, "x-mac-korean"}, /* Korean (Mac) */ + {10004, "x-mac-arabic"}, /* Arabic (Mac) */ + {10005, "x-mac-hebrew"}, /* Hebrew (Mac) */ + {10006, "x-mac-greek"}, /* Greek (Mac) */ + {10007, "x-mac-cyrillic"}, /* Cyrillic (Mac) */ + {10008, "x-mac-chinesesimp"}, /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ + {10010, "x-mac-romanian"}, /* Romanian (Mac) */ + {10017, "x-mac-ukrainian"}, /* Ukrainian (Mac) */ + {10021, "x-mac-thai"}, /* Thai (Mac) */ + {10029, "x-mac-ce"}, /* MAC Latin 2; Central European (Mac) */ + {10079, "x-mac-icelandic"}, /* Icelandic (Mac) */ + {10081, "x-mac-turkish"}, /* Turkish (Mac) */ + {10082, "x-mac-croatian"}, /* Croatian (Mac) */ + {20000, "x-Chinese_CNS"}, /* CNS Taiwan; Chinese Traditional (CNS) */ + {20001, "x-cp20001"}, /* TCA Taiwan */ + {20002, "x_Chinese-Eten"}, /* Eten Taiwan; Chinese Traditional (Eten) */ + {20003, "x-cp20003"}, /* IBM5550 Taiwan */ + {20004, "x-cp20004"}, /* TeleText Taiwan */ + {20005, "x-cp20005"}, /* Wang Taiwan */ + {20105, "x-IA5"}, /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ + {20106, "x-IA5-German"}, /* IA5 German (7-bit) */ + {20107, "x-IA5-Swedish"}, /* IA5 Swedish (7-bit) */ + {20108, "x-IA5-Norwegian"}, /* IA5 Norwegian (7-bit) */ + {20127, "us-ascii"}, /* US-ASCII (7-bit) */ + {20261, "x-cp20261"}, /* T.61 */ + {20269, "x-cp20269"}, /* ISO 6937 Non-Spacing Accent */ + {20273, "IBM273"}, /* IBM EBCDIC Germany */ + {20277, "IBM277"}, /* IBM EBCDIC Denmark-Norway */ + {20278, "IBM278"}, /* IBM EBCDIC Finland-Sweden */ + {20280, "IBM280"}, /* IBM EBCDIC Italy */ + {20284, "IBM284"}, /* IBM EBCDIC Latin America-Spain */ + {20285, "IBM285"}, /* IBM EBCDIC United Kingdom */ + {20290, "IBM290"}, /* IBM EBCDIC Japanese Katakana Extended */ + {20297, "IBM297"}, /* IBM EBCDIC France */ + {20420, "IBM420"}, /* IBM EBCDIC Arabic */ + {20423, "IBM423"}, /* IBM EBCDIC Greek */ + {20424, "IBM424"}, /* IBM EBCDIC Hebrew */ + {20833, "x-EBCDIC-KoreanExtended"}, /* IBM EBCDIC Korean Extended */ + {20838, "IBM-Thai"}, /* IBM EBCDIC Thai */ + {20866, "koi8-r"}, /* Russian (KOI8-R); Cyrillic (KOI8-R) */ + {20871, "IBM871"}, /* IBM EBCDIC Icelandic */ + {20880, "IBM880"}, /* IBM EBCDIC Cyrillic Russian */ + {20905, "IBM905"}, /* IBM EBCDIC Turkish */ + {20924, "IBM00924"}, /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ + {20932, "EUC-JP"}, /* Japanese (JIS 0208-1990 and 0121-1990) */ + {20936, "x-cp20936"}, /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ + {20949, "x-cp20949"}, /* Korean Wansung */ + {21025, "cp1025"}, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ + /* 21027 (deprecated) */ + {21866, "koi8-u"}, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ + {28591, "iso-8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ + {28591, "iso8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ + {28592, "iso-8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ + {28592, "iso8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ + {28593, "iso-8859-3"}, /* ISO 8859-3 Latin 3 */ + {28593, "iso8859-3"}, /* ISO 8859-3 Latin 3 */ + {28594, "iso-8859-4"}, /* ISO 8859-4 Baltic */ + {28594, "iso8859-4"}, /* ISO 8859-4 Baltic */ + {28595, "iso-8859-5"}, /* ISO 8859-5 Cyrillic */ + {28595, "iso8859-5"}, /* ISO 8859-5 Cyrillic */ + {28596, "iso-8859-6"}, /* ISO 8859-6 Arabic */ + {28596, "iso8859-6"}, /* ISO 8859-6 Arabic */ + {28597, "iso-8859-7"}, /* ISO 8859-7 Greek */ + {28597, "iso8859-7"}, /* ISO 8859-7 Greek */ + {28598, "iso-8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ + {28598, "iso8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ + {28599, "iso-8859-9"}, /* ISO 8859-9 Turkish */ + {28599, "iso8859-9"}, /* ISO 8859-9 Turkish */ + {28603, "iso-8859-13"}, /* ISO 8859-13 Estonian */ + {28603, "iso8859-13"}, /* ISO 8859-13 Estonian */ + {28605, "iso-8859-15"}, /* ISO 8859-15 Latin 9 */ + {28605, "iso8859-15"}, /* ISO 8859-15 Latin 9 */ + {29001, "x-Europa"}, /* Europa 3 */ + {38598, "iso-8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ + {38598, "iso8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ + {50220, "iso-2022-jp"}, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ + {50221, "csISO2022JP"}, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ + {50222, "iso-2022-jp"}, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ + {50225, "iso-2022-kr"}, /* ISO 2022 Korean */ + {50225, "iso2022-kr"}, /* ISO 2022 Korean */ + {50227, "x-cp50227"}, /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ + /* 50229 ISO 2022 Traditional Chinese */ + /* 50930 EBCDIC Japanese (Katakana) Extended */ + /* 50931 EBCDIC US-Canada and Japanese */ + /* 50933 EBCDIC Korean Extended and Korean */ + /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ + /* 50936 EBCDIC Simplified Chinese */ + /* 50937 EBCDIC US-Canada and Traditional Chinese */ + /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ + {51932, "euc-jp"}, /* EUC Japanese */ + {51936, "EUC-CN"}, /* EUC Simplified Chinese; Chinese Simplified (EUC) */ + {51949, "euc-kr"}, /* EUC Korean */ + /* 51950 EUC Traditional Chinese */ + {52936, "hz-gb-2312"}, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */ + {54936, "GB18030"}, /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */ + {57002, "x-iscii-de"}, /* ISCII Devanagari */ + {57003, "x-iscii-be"}, /* ISCII Bengali */ + {57004, "x-iscii-ta"}, /* ISCII Tamil */ + {57005, "x-iscii-te"}, /* ISCII Telugu */ + {57006, "x-iscii-as"}, /* ISCII Assamese */ + {57007, "x-iscii-or"}, /* ISCII Oriya */ + {57008, "x-iscii-ka"}, /* ISCII Kannada */ + {57009, "x-iscii-ma"}, /* ISCII Malayalam */ + {57010, "x-iscii-gu"}, /* ISCII Gujarati */ + {57011, "x-iscii-pa"}, /* ISCII Punjabi */ + + {0, NULL} +}; + +/* + * SJIS SHIFTJIS table CP932 table + * ---- --------------------------- -------------------------------- + * 5C U+00A5 YEN SIGN U+005C REVERSE SOLIDUS + * 7E U+203E OVERLINE U+007E TILDE + * 815C U+2014 EM DASH U+2015 HORIZONTAL BAR + * 815F U+005C REVERSE SOLIDUS U+FF3C FULLWIDTH REVERSE SOLIDUS + * 8160 U+301C WAVE DASH U+FF5E FULLWIDTH TILDE + * 8161 U+2016 DOUBLE VERTICAL LINE U+2225 PARALLEL TO + * 817C U+2212 MINUS SIGN U+FF0D FULLWIDTH HYPHEN-MINUS + * 8191 U+00A2 CENT SIGN U+FFE0 FULLWIDTH CENT SIGN + * 8192 U+00A3 POUND SIGN U+FFE1 FULLWIDTH POUND SIGN + * 81CA U+00AC NOT SIGN U+FFE2 FULLWIDTH NOT SIGN + * + * EUC-JP and ISO-2022-JP should be compatible with CP932. + * + * Kernel and MLang have different Unicode mapping table. Make sure + * which API is used. + */ +static compat_t cp932_compat[] = { + {0x00A5, 0x005C, COMPAT_OUT}, + {0x203E, 0x007E, COMPAT_OUT}, + {0x2014, 0x2015, COMPAT_OUT}, + {0x301C, 0xFF5E, COMPAT_OUT}, + {0x2016, 0x2225, COMPAT_OUT}, + {0x2212, 0xFF0D, COMPAT_OUT}, + {0x00A2, 0xFFE0, COMPAT_OUT}, + {0x00A3, 0xFFE1, COMPAT_OUT}, + {0x00AC, 0xFFE2, COMPAT_OUT}, + {0, 0, 0} +}; + +static compat_t cp20932_compat[] = { + {0x00A5, 0x005C, COMPAT_OUT}, + {0x203E, 0x007E, COMPAT_OUT}, + {0x2014, 0x2015, COMPAT_OUT}, + {0xFF5E, 0x301C, COMPAT_OUT|COMPAT_IN}, + {0x2225, 0x2016, COMPAT_OUT|COMPAT_IN}, + {0xFF0D, 0x2212, COMPAT_OUT|COMPAT_IN}, + {0xFFE0, 0x00A2, COMPAT_OUT|COMPAT_IN}, + {0xFFE1, 0x00A3, COMPAT_OUT|COMPAT_IN}, + {0xFFE2, 0x00AC, COMPAT_OUT|COMPAT_IN}, + {0, 0, 0} +}; + +static compat_t *cp51932_compat = cp932_compat; + +/* cp20932_compat for kernel. cp932_compat for mlang. */ +static compat_t *cp5022x_compat = cp932_compat; + +typedef HRESULT (WINAPI *CONVERTINETSTRING)( + LPDWORD lpdwMode, + DWORD dwSrcEncoding, + DWORD dwDstEncoding, + LPCSTR lpSrcStr, + LPINT lpnSrcSize, + LPBYTE lpDstStr, + LPINT lpnDstSize +); +typedef HRESULT (WINAPI *CONVERTINETMULTIBYTETOUNICODE)( + LPDWORD lpdwMode, + DWORD dwSrcEncoding, + LPCSTR lpSrcStr, + LPINT lpnMultiCharCount, + LPWSTR lpDstStr, + LPINT lpnWideCharCount +); +typedef HRESULT (WINAPI *CONVERTINETUNICODETOMULTIBYTE)( + LPDWORD lpdwMode, + DWORD dwEncoding, + LPCWSTR lpSrcStr, + LPINT lpnWideCharCount, + LPSTR lpDstStr, + LPINT lpnMultiCharCount +); +typedef HRESULT (WINAPI *ISCONVERTINETSTRINGAVAILABLE)( + DWORD dwSrcEncoding, + DWORD dwDstEncoding +); +typedef HRESULT (WINAPI *LCIDTORFC1766A)( + LCID Locale, + LPSTR pszRfc1766, + int nChar +); +typedef HRESULT (WINAPI *LCIDTORFC1766W)( + LCID Locale, + LPWSTR pszRfc1766, + int nChar +); +typedef HRESULT (WINAPI *RFC1766TOLCIDA)( + LCID *pLocale, + LPSTR pszRfc1766 +); +typedef HRESULT (WINAPI *RFC1766TOLCIDW)( + LCID *pLocale, + LPWSTR pszRfc1766 +); +static CONVERTINETSTRING ConvertINetString; +static CONVERTINETMULTIBYTETOUNICODE ConvertINetMultiByteToUnicode; +static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte; +static ISCONVERTINETSTRINGAVAILABLE IsConvertINetStringAvailable; +static LCIDTORFC1766A LcidToRfc1766A; +static RFC1766TOLCIDA Rfc1766ToLcidA; + +static int +load_mlang() +{ + HMODULE h; + if (ConvertINetString != NULL) + return TRUE; + h = LoadLibrary("mlang.dll"); + if (!h) + return FALSE; + ConvertINetString = (CONVERTINETSTRING)GetProcAddress(h, "ConvertINetString"); + ConvertINetMultiByteToUnicode = (CONVERTINETMULTIBYTETOUNICODE)GetProcAddress(h, "ConvertINetMultiByteToUnicode"); + ConvertINetUnicodeToMultiByte = (CONVERTINETUNICODETOMULTIBYTE)GetProcAddress(h, "ConvertINetUnicodeToMultiByte"); + IsConvertINetStringAvailable = (ISCONVERTINETSTRINGAVAILABLE)GetProcAddress(h, "IsConvertINetStringAvailable"); + LcidToRfc1766A = (LCIDTORFC1766A)GetProcAddress(h, "LcidToRfc1766A"); + Rfc1766ToLcidA = (RFC1766TOLCIDA)GetProcAddress(h, "Rfc1766ToLcidA"); + return TRUE; +} + +iconv_t +iconv_open(const char *tocode, const char *fromcode) +{ + rec_iconv_t *cd; + + cd = (rec_iconv_t *)calloc(1, sizeof(rec_iconv_t)); + if (cd == NULL) + return (iconv_t)(-1); + +#if defined(USE_LIBICONV_DLL) + errno = 0; + if (libiconv_iconv_open(cd, tocode, fromcode)) + return (iconv_t)cd; +#endif + + /* reset the errno to prevent reporting wrong error code. + * 0 for unsorted error. */ + errno = 0; + if (win_iconv_open(cd, tocode, fromcode)) + return (iconv_t)cd; + + free(cd); + + return (iconv_t)(-1); +} + +int +iconv_close(iconv_t _cd) +{ + rec_iconv_t *cd = (rec_iconv_t *)_cd; + int r = cd->iconv_close(cd->cd); + int e = *(cd->_errno()); +#if defined(USE_LIBICONV_DLL) + if (cd->hlibiconv != NULL) + FreeLibrary(cd->hlibiconv); +#endif + free(cd); + errno = e; + return r; +} + +size_t +iconv(iconv_t _cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +{ + rec_iconv_t *cd = (rec_iconv_t *)_cd; + size_t r = cd->iconv(cd->cd, inbuf, inbytesleft, outbuf, outbytesleft); + errno = *(cd->_errno()); + return r; +} + +static int +win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) +{ + if (!make_csconv(fromcode, &cd->from) || !make_csconv(tocode, &cd->to)) + return FALSE; + cd->iconv_close = win_iconv_close; + cd->iconv = win_iconv; + cd->_errno = _errno; + cd->cd = (iconv_t)cd; + return TRUE; +} + +static int +win_iconv_close(iconv_t cd) +{ + return 0; +} + +static size_t +win_iconv(iconv_t _cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) +{ + rec_iconv_t *cd = (rec_iconv_t *)_cd; + ushort wbuf[MB_CHAR_MAX]; /* enough room for one character */ + int insize; + int outsize; + int wsize; + DWORD frommode; + DWORD tomode; + uint wc; + compat_t *cp; + int i; + + if (inbuf == NULL || *inbuf == NULL) + { + if (outbuf != NULL && *outbuf != NULL && cd->to.flush != NULL) + { + tomode = cd->to.mode; + outsize = cd->to.flush(&cd->to, (uchar *)*outbuf, *outbytesleft); + if (outsize == -1) + { + cd->to.mode = tomode; + return (size_t)(-1); + } + *outbuf += outsize; + *outbytesleft -= outsize; + } + cd->from.mode = 0; + cd->to.mode = 0; + return 0; + } + + while (*inbytesleft != 0) + { + frommode = cd->from.mode; + tomode = cd->to.mode; + wsize = MB_CHAR_MAX; + + insize = cd->from.mbtowc(&cd->from, (const uchar *)*inbuf, *inbytesleft, wbuf, &wsize); + if (insize == -1) + { + cd->from.mode = frommode; + return (size_t)(-1); + } + + if (wsize == 0) + { + *inbuf += insize; + *inbytesleft -= insize; + continue; + } + + if (cd->from.compat != NULL) + { + wc = utf16_to_ucs4(wbuf); + cp = cd->from.compat; + for (i = 0; cp[i].in != 0; ++i) + { + if ((cp[i].flag & COMPAT_IN) && cp[i].out == wc) + { + ucs4_to_utf16(cp[i].in, wbuf, &wsize); + break; + } + } + } + + if (cd->to.compat != NULL) + { + wc = utf16_to_ucs4(wbuf); + cp = cd->to.compat; + for (i = 0; cp[i].in != 0; ++i) + { + if ((cp[i].flag & COMPAT_OUT) && cp[i].in == wc) + { + ucs4_to_utf16(cp[i].out, wbuf, &wsize); + break; + } + } + } + + outsize = cd->to.wctomb(&cd->to, wbuf, wsize, (uchar *)*outbuf, *outbytesleft); + if (outsize == -1) + { + cd->from.mode = frommode; + cd->to.mode = tomode; + return (size_t)(-1); + } + + *inbuf += insize; + *outbuf += outsize; + *inbytesleft -= insize; + *outbytesleft -= outsize; + } + + return 0; +} + +static int +make_csconv(const char *_name, csconv_t *cv) +{ + CPINFOEX cpinfoex; + int use_compat = TRUE; + int flag = 0; + char *name; + char *p; + + name = xstrndup(_name, strlen(_name)); + if (name == NULL) + return FALSE; + + /* check for option "enc_name//opt1//opt2" */ + while ((p = strrstr(name, "//")) != NULL) + { + if (_stricmp(p + 2, "nocompat") == 0) + use_compat = FALSE; + else if (_stricmp(p + 2, "translit") == 0) + flag |= FLAG_TRANSLIT; + else if (_stricmp(p + 2, "ignore") == 0) + flag |= FLAG_IGNORE; + *p = 0; + } + + cv->mode = 0; + cv->flags = flag; + cv->mblen = NULL; + cv->flush = NULL; + cv->compat = NULL; + cv->codepage = name_to_codepage(name); + if (cv->codepage == 1200 || cv->codepage == 1201) + { + cv->mbtowc = utf16_mbtowc; + cv->wctomb = utf16_wctomb; + if (_stricmp(name, "UTF-16") == 0 || _stricmp(name, "UTF16") == 0) + cv->flags |= FLAG_USE_BOM; + } + else if (cv->codepage == 12000 || cv->codepage == 12001) + { + cv->mbtowc = utf32_mbtowc; + cv->wctomb = utf32_wctomb; + if (_stricmp(name, "UTF-32") == 0 || _stricmp(name, "UTF32") == 0) + cv->flags |= FLAG_USE_BOM; + } + else if (cv->codepage == 65001) + { + cv->mbtowc = kernel_mbtowc; + cv->wctomb = kernel_wctomb; + cv->mblen = utf8_mblen; + } + else if ((cv->codepage == 50220 || cv->codepage == 50221 || cv->codepage == 50222) && load_mlang()) + { + cv->mbtowc = iso2022jp_mbtowc; + cv->wctomb = iso2022jp_wctomb; + cv->flush = iso2022jp_flush; + } + else if (cv->codepage == 51932 && load_mlang()) + { + cv->mbtowc = mlang_mbtowc; + cv->wctomb = mlang_wctomb; + cv->mblen = eucjp_mblen; + } + else if (IsValidCodePage(cv->codepage) + && GetCPInfoEx(cv->codepage, 0, &cpinfoex) != 0) + { + cv->mbtowc = kernel_mbtowc; + cv->wctomb = kernel_wctomb; + if (cpinfoex.MaxCharSize == 1) + cv->mblen = sbcs_mblen; + else if (cpinfoex.MaxCharSize == 2) + cv->mblen = dbcs_mblen; + else + cv->mblen = mbcs_mblen; + } + else + { + /* not supported */ + free(name); + errno = EINVAL; + return FALSE; + } + + if (use_compat) + { + switch (cv->codepage) + { + case 932: cv->compat = cp932_compat; break; + case 20932: cv->compat = cp20932_compat; break; + case 51932: cv->compat = cp51932_compat; break; + case 50220: case 50221: case 50222: cv->compat = cp5022x_compat; break; + } + } + + free(name); + + return TRUE; +} + +static int +name_to_codepage(const char *name) +{ + int i; + + if (*name == '\0' || + strcmp(name, "char") == 0) + return GetACP(); + else if (strcmp(name, "wchar_t") == 0) + return 1200; + else if (_strnicmp(name, "cp", 2) == 0) + return atoi(name + 2); /* CP123 */ + else if ('0' <= name[0] && name[0] <= '9') + return atoi(name); /* 123 */ + else if (_strnicmp(name, "xx", 2) == 0) + return atoi(name + 2); /* XX123 for debug */ + + for (i = 0; codepage_alias[i].name != NULL; ++i) + if (_stricmp(name, codepage_alias[i].name) == 0) + return codepage_alias[i].codepage; + return -1; +} + +/* + * http://www.faqs.org/rfcs/rfc2781.html + */ +static uint +utf16_to_ucs4(const ushort *wbuf) +{ + uint wc = wbuf[0]; + if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) + wc = ((wbuf[0] & 0x3FF) << 10) + (wbuf[1] & 0x3FF) + 0x10000; + return wc; +} + +static void +ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize) +{ + if (wc < 0x10000) + { + wbuf[0] = wc; + *wbufsize = 1; + } + else + { + wc -= 0x10000; + wbuf[0] = 0xD800 | ((wc >> 10) & 0x3FF); + wbuf[1] = 0xDC00 | (wc & 0x3FF); + *wbufsize = 2; + } +} + +/* + * Check if codepage is one of those for which the dwFlags parameter + * to MultiByteToWideChar() must be zero. Return zero or + * MB_ERR_INVALID_CHARS. The docs in Platform SDK for for Windows + * Server 2003 R2 claims that also codepage 65001 is one of these, but + * that doesn't seem to be the case. The MSDN docs for MSVS2008 leave + * out 65001 (UTF-8), and that indeed seems to be the case on XP, it + * works fine to pass MB_ERR_INVALID_CHARS in dwFlags when converting + * from UTF-8. + */ +static int +mbtowc_flags(int codepage) +{ + return (codepage == 50220 || codepage == 50221 || + codepage == 50222 || codepage == 50225 || + codepage == 50227 || codepage == 50229 || + codepage == 52936 || codepage == 54936 || + (codepage >= 57002 && codepage <= 57011) || + codepage == 65000 || codepage == 42) ? 0 : MB_ERR_INVALID_CHARS; +} + +/* + * Check if codepage is one those for which the lpUsedDefaultChar + * parameter to WideCharToMultiByte() must be NULL. The docs in + * Platform SDK for for Windows Server 2003 R2 claims that this is the + * list below, while the MSDN docs for MSVS2008 claim that it is only + * for 65000 (UTF-7) and 65001 (UTF-8). This time the earlier Platform + * SDK seems to be correct, at least for XP. + */ +static int +must_use_null_useddefaultchar(int codepage) +{ + return (codepage == 65000 || codepage == 65001 || + codepage == 50220 || codepage == 50221 || + codepage == 50222 || codepage == 50225 || + codepage == 50227 || codepage == 50229 || + codepage == 52936 || codepage == 54936 || + (codepage >= 57002 && codepage <= 57011) || + codepage == 42); +} + +static char * +strrstr(const char *str, const char *token) +{ + int len = strlen(token); + const char *p = str + strlen(str); + + while (str <= --p) + if (p[0] == token[0] && strncmp(p, token, len) == 0) + return (char *)p; + return NULL; +} + +static char * +xstrndup(const char *s, size_t n) +{ + char *p; + + p = (char *)malloc(n + 1); + if (p == NULL) + return NULL; + memcpy(p, s, n); + p[n] = '\0'; + return p; +} + +static int +seterror(int err) +{ + errno = err; + return -1; +} + +#if defined(USE_LIBICONV_DLL) +static int +libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) +{ + HMODULE hlibiconv = NULL; + HMODULE hmsvcrt = NULL; + char *dllname; + const char *p; + const char *e; + f_iconv_open _iconv_open; + + /* + * always try to load dll, so that we can switch dll in runtime. + */ + + /* XXX: getenv() can't get variable set by SetEnvironmentVariable() */ + p = getenv("WINICONV_LIBICONV_DLL"); + if (p == NULL) + p = DEFAULT_LIBICONV_DLL; + /* parse comma separated value */ + for ( ; *p != 0; p = (*e == ',') ? e + 1 : e) + { + e = strchr(p, ','); + if (p == e) + continue; + else if (e == NULL) + e = p + strlen(p); + dllname = xstrndup(p, e - p); + if (dllname == NULL) + return FALSE; + hlibiconv = LoadLibrary(dllname); + free(dllname); + if (hlibiconv != NULL) + { + if (hlibiconv == hwiniconv) + { + FreeLibrary(hlibiconv); + hlibiconv = NULL; + continue; + } + break; + } + } + + if (hlibiconv == NULL) + goto failed; + + hmsvcrt = find_imported_module_by_funcname(hlibiconv, "_errno"); + if (hmsvcrt == NULL) + goto failed; + + _iconv_open = (f_iconv_open)GetProcAddress(hlibiconv, "libiconv_open"); + if (_iconv_open == NULL) + _iconv_open = (f_iconv_open)GetProcAddress(hlibiconv, "iconv_open"); + cd->iconv_close = (f_iconv_close)GetProcAddress(hlibiconv, "libiconv_close"); + if (cd->iconv_close == NULL) + cd->iconv_close = (f_iconv_close)GetProcAddress(hlibiconv, "iconv_close"); + cd->iconv = (f_iconv)GetProcAddress(hlibiconv, "libiconv"); + if (cd->iconv == NULL) + cd->iconv = (f_iconv)GetProcAddress(hlibiconv, "iconv"); + cd->_errno = (f_errno)GetProcAddress(hmsvcrt, "_errno"); + if (_iconv_open == NULL || cd->iconv_close == NULL + || cd->iconv == NULL || cd->_errno == NULL) + goto failed; + + cd->cd = _iconv_open(tocode, fromcode); + if (cd->cd == (iconv_t)(-1)) + goto failed; + + cd->hlibiconv = hlibiconv; + return TRUE; + +failed: + if (hlibiconv != NULL) + FreeLibrary(hlibiconv); + /* do not free hmsvcrt which is obtained by GetModuleHandle() */ + return FALSE; +} + +/* + * Reference: + * http://forums.belution.com/ja/vc/000/234/78s.shtml + * http://nienie.com/~masapico/api_ImageDirectoryEntryToData.html + * + * The formal way is + * imagehlp.h or dbghelp.h + * imagehlp.lib or dbghelp.lib + * ImageDirectoryEntryToData() + */ +#define TO_DOS_HEADER(base) ((PIMAGE_DOS_HEADER)(base)) +#define TO_NT_HEADERS(base) ((PIMAGE_NT_HEADERS)((LPBYTE)(base) + TO_DOS_HEADER(base)->e_lfanew)) +static PVOID +MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size) +{ + /* TODO: MappedAsImage? */ + PIMAGE_DATA_DIRECTORY p; + p = TO_NT_HEADERS(Base)->OptionalHeader.DataDirectory + DirectoryEntry; + if (p->VirtualAddress == 0) { + *Size = 0; + return NULL; + } + *Size = p->Size; + return (PVOID)((LPBYTE)Base + p->VirtualAddress); +} + +static HMODULE +find_imported_module_by_funcname(HMODULE hModule, const char *funcname) +{ + DWORD Base; + ULONG Size; + PIMAGE_IMPORT_DESCRIPTOR Imp; + PIMAGE_THUNK_DATA Name; /* Import Name Table */ + PIMAGE_IMPORT_BY_NAME ImpName; + + Base = (DWORD)hModule; + Imp = MyImageDirectoryEntryToData( + (LPVOID)Base, + TRUE, + IMAGE_DIRECTORY_ENTRY_IMPORT, + &Size); + if (Imp == NULL) + return NULL; + for ( ; Imp->OriginalFirstThunk != 0; ++Imp) + { + Name = (PIMAGE_THUNK_DATA)(Base + Imp->OriginalFirstThunk); + for ( ; Name->u1.Ordinal != 0; ++Name) + { + if (!IMAGE_SNAP_BY_ORDINAL(Name->u1.Ordinal)) + { + ImpName = (PIMAGE_IMPORT_BY_NAME) + (Base + (DWORD)Name->u1.AddressOfData); + if (strcmp((char *)ImpName->Name, funcname) == 0) + return GetModuleHandle((char *)(Base + Imp->Name)); + } + } + } + return NULL; +} +#endif + +static int +sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + return 1; +} + +static int +dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + int len = IsDBCSLeadByteEx(cv->codepage, buf[0]) ? 2 : 1; + if (bufsize < len) + return seterror(EINVAL); + return len; +} + +static int +mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + int len = 0; + + if (cv->codepage == 54936) { + if (buf[0] <= 0x7F) len = 1; + else if (buf[0] >= 0x81 && buf[0] <= 0xFE && + bufsize >= 2 && + ((buf[1] >= 0x40 && buf[1] <= 0x7E) || + (buf[1] >= 0x80 && buf[1] <= 0xFE))) len = 2; + else if (buf[0] >= 0x81 && buf[0] <= 0xFE && + bufsize >= 4 && + buf[1] >= 0x30 && buf[1] <= 0x39) len = 4; + else + return seterror(EINVAL); + return len; + } + else + return seterror(EINVAL); +} + +static int +utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + int len = 0; + + if (buf[0] < 0x80) len = 1; + else if ((buf[0] & 0xE0) == 0xC0) len = 2; + else if ((buf[0] & 0xF0) == 0xE0) len = 3; + else if ((buf[0] & 0xF8) == 0xF0) len = 4; + else if ((buf[0] & 0xFC) == 0xF8) len = 5; + else if ((buf[0] & 0xFE) == 0xFC) len = 6; + + if (len == 0) + return seterror(EILSEQ); + else if (bufsize < len) + return seterror(EINVAL); + return len; +} + +static int +eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize) +{ + if (buf[0] < 0x80) /* ASCII */ + return 1; + else if (buf[0] == 0x8E) /* JIS X 0201 */ + { + if (bufsize < 2) + return seterror(EINVAL); + else if (!(0xA1 <= buf[1] && buf[1] <= 0xDF)) + return seterror(EILSEQ); + return 2; + } + else if (buf[0] == 0x8F) /* JIS X 0212 */ + { + if (bufsize < 3) + return seterror(EINVAL); + else if (!(0xA1 <= buf[1] && buf[1] <= 0xFE) + || !(0xA1 <= buf[2] && buf[2] <= 0xFE)) + return seterror(EILSEQ); + return 3; + } + else /* JIS X 0208 */ + { + if (bufsize < 2) + return seterror(EINVAL); + else if (!(0xA1 <= buf[0] && buf[0] <= 0xFE) + || !(0xA1 <= buf[1] && buf[1] <= 0xFE)) + return seterror(EILSEQ); + return 2; + } +} + +static int +kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int len; + + len = cv->mblen(cv, buf, bufsize); + if (len == -1) + return -1; + *wbufsize = MultiByteToWideChar(cv->codepage, mbtowc_flags (cv->codepage), + (const char *)buf, len, (wchar_t *)wbuf, *wbufsize); + if (*wbufsize == 0) + return seterror(EILSEQ); + return len; +} + +static int +kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + BOOL usedDefaultChar = 0; + BOOL *p = NULL; + int flags = 0; + int len; + + if (bufsize == 0) + return seterror(E2BIG); + if (!must_use_null_useddefaultchar(cv->codepage)) + { + p = &usedDefaultChar; +#ifdef WC_NO_BEST_FIT_CHARS + if (!(cv->flags & FLAG_TRANSLIT)) + flags |= WC_NO_BEST_FIT_CHARS; +#endif + } + len = WideCharToMultiByte(cv->codepage, flags, + (const wchar_t *)wbuf, wbufsize, (char *)buf, bufsize, NULL, p); + if (len == 0) + { + if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) + return seterror(E2BIG); + return seterror(EILSEQ); + } + else if (usedDefaultChar) + return seterror(EILSEQ); + else if (cv->mblen(cv, buf, len) != len) /* validate result */ + return seterror(EILSEQ); + return len; +} + +/* + * It seems that the mode (cv->mode) is fixnum. + * For example, when converting iso-2022-jp(cp50221) to unicode: + * in ascii sequence: mode=0xC42C0000 + * in jisx0208 sequence: mode=0xC42C0001 + * "C42C" is same for each convert session. + * It should be: ((codepage-1)<<16)|state + */ +static int +mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int len; + int insize; + HRESULT hr; + + len = cv->mblen(cv, buf, bufsize); + if (len == -1) + return -1; + insize = len; + hr = ConvertINetMultiByteToUnicode(&cv->mode, cv->codepage, + (const char *)buf, &insize, (wchar_t *)wbuf, wbufsize); + if (hr != S_OK || insize != len) + return seterror(EILSEQ); + return len; +} + +static int +mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + char tmpbuf[MB_CHAR_MAX]; /* enough room for one character */ + int tmpsize = MB_CHAR_MAX; + int insize = wbufsize; + HRESULT hr; + + hr = ConvertINetUnicodeToMultiByte(&cv->mode, cv->codepage, + (const wchar_t *)wbuf, &wbufsize, tmpbuf, &tmpsize); + if (hr != S_OK || insize != wbufsize) + return seterror(EILSEQ); + else if (bufsize < tmpsize) + return seterror(E2BIG); + else if (cv->mblen(cv, (uchar *)tmpbuf, tmpsize) != tmpsize) + return seterror(EILSEQ); + memcpy(buf, tmpbuf, tmpsize); + return tmpsize; +} + +static int +utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int codepage = cv->codepage; + + /* swap endian: 1200 <-> 1201 */ + if (cv->mode & UNICODE_MODE_SWAPPED) + codepage ^= 1; + + if (bufsize < 2) + return seterror(EINVAL); + if (codepage == 1200) /* little endian */ + wbuf[0] = (buf[1] << 8) | buf[0]; + else if (codepage == 1201) /* big endian */ + wbuf[0] = (buf[0] << 8) | buf[1]; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + cv->mode |= UNICODE_MODE_BOM_DONE; + if (wbuf[0] == 0xFFFE) + { + cv->mode |= UNICODE_MODE_SWAPPED; + *wbufsize = 0; + return 2; + } + else if (wbuf[0] == 0xFEFF) + { + *wbufsize = 0; + return 2; + } + } + + if (0xDC00 <= wbuf[0] && wbuf[0] <= 0xDFFF) + return seterror(EILSEQ); + if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) + { + if (bufsize < 4) + return seterror(EINVAL); + if (codepage == 1200) /* little endian */ + wbuf[1] = (buf[3] << 8) | buf[2]; + else if (codepage == 1201) /* big endian */ + wbuf[1] = (buf[2] << 8) | buf[3]; + if (!(0xDC00 <= wbuf[1] && wbuf[1] <= 0xDFFF)) + return seterror(EILSEQ); + *wbufsize = 2; + return 4; + } + *wbufsize = 1; + return 2; +} + +static int +utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + int r; + + cv->mode |= UNICODE_MODE_BOM_DONE; + if (bufsize < 2) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + memcpy(buf, "\xFF\xFE", 2); + else if (cv->codepage == 1201) /* big endian */ + memcpy(buf, "\xFE\xFF", 2); + + r = utf16_wctomb(cv, wbuf, wbufsize, buf + 2, bufsize - 2); + if (r == -1) + return -1; + return r + 2; + } + + if (bufsize < 2) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + { + buf[0] = (wbuf[0] & 0x00FF); + buf[1] = (wbuf[0] & 0xFF00) >> 8; + } + else if (cv->codepage == 1201) /* big endian */ + { + buf[0] = (wbuf[0] & 0xFF00) >> 8; + buf[1] = (wbuf[0] & 0x00FF); + } + if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) + { + if (bufsize < 4) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + { + buf[2] = (wbuf[1] & 0x00FF); + buf[3] = (wbuf[1] & 0xFF00) >> 8; + } + else if (cv->codepage == 1201) /* big endian */ + { + buf[2] = (wbuf[1] & 0xFF00) >> 8; + buf[3] = (wbuf[1] & 0x00FF); + } + return 4; + } + return 2; +} + +static int +utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + int codepage = cv->codepage; + uint wc; + + /* swap endian: 12000 <-> 12001 */ + if (cv->mode & UNICODE_MODE_SWAPPED) + codepage ^= 1; + + if (bufsize < 4) + return seterror(EINVAL); + if (codepage == 12000) /* little endian */ + wc = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; + else if (codepage == 12001) /* big endian */ + wc = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + cv->mode |= UNICODE_MODE_BOM_DONE; + if (wc == 0xFFFE0000) + { + cv->mode |= UNICODE_MODE_SWAPPED; + *wbufsize = 0; + return 4; + } + else if (wc == 0x0000FEFF) + { + *wbufsize = 0; + return 4; + } + } + + if ((0xD800 <= wc && wc <= 0xDFFF) || 0x10FFFF < wc) + return seterror(EILSEQ); + ucs4_to_utf16(wc, wbuf, wbufsize); + return 4; +} + +static int +utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + uint wc; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + int r; + + cv->mode |= UNICODE_MODE_BOM_DONE; + if (bufsize < 4) + return seterror(E2BIG); + if (cv->codepage == 12000) /* little endian */ + memcpy(buf, "\xFF\xFE\x00\x00", 4); + else if (cv->codepage == 12001) /* big endian */ + memcpy(buf, "\x00\x00\xFE\xFF", 4); + + r = utf32_wctomb(cv, wbuf, wbufsize, buf + 4, bufsize - 4); + if (r == -1) + return -1; + return r + 4; + } + + if (bufsize < 4) + return seterror(E2BIG); + wc = utf16_to_ucs4(wbuf); + if (cv->codepage == 12000) /* little endian */ + { + buf[0] = wc & 0x000000FF; + buf[1] = (wc & 0x0000FF00) >> 8; + buf[2] = (wc & 0x00FF0000) >> 16; + buf[3] = (wc & 0xFF000000) >> 24; + } + else if (cv->codepage == 12001) /* big endian */ + { + buf[0] = (wc & 0xFF000000) >> 24; + buf[1] = (wc & 0x00FF0000) >> 16; + buf[2] = (wc & 0x0000FF00) >> 8; + buf[3] = wc & 0x000000FF; + } + return 4; +} + +/* + * 50220: ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) + * 50221: ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow + * 1 byte Kana) + * 50222: ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte + * Kana - SO/SI) + * + * MultiByteToWideChar() and WideCharToMultiByte() behave differently + * depending on Windows version. On XP, WideCharToMultiByte() doesn't + * terminate result sequence with ascii escape. But Vista does. + * Use MLang instead. + */ + +#define ISO2022_MODE(cs, shift) (((cs) << 8) | (shift)) +#define ISO2022_MODE_CS(mode) (((mode) >> 8) & 0xFF) +#define ISO2022_MODE_SHIFT(mode) ((mode) & 0xFF) + +#define ISO2022_SI 0 +#define ISO2022_SO 1 + +/* shift in */ +static const char iso2022_SI_seq[] = "\x0F"; +/* shift out */ +static const char iso2022_SO_seq[] = "\x0E"; + +typedef struct iso2022_esc_t iso2022_esc_t; +struct iso2022_esc_t { + const char *esc; + int esc_len; + int len; + int cs; +}; + +#define ISO2022JP_CS_ASCII 0 +#define ISO2022JP_CS_JISX0201_ROMAN 1 +#define ISO2022JP_CS_JISX0201_KANA 2 +#define ISO2022JP_CS_JISX0208_1978 3 +#define ISO2022JP_CS_JISX0208_1983 4 +#define ISO2022JP_CS_JISX0212 5 + +static iso2022_esc_t iso2022jp_esc[] = { + {"\x1B\x28\x42", 3, 1, ISO2022JP_CS_ASCII}, + {"\x1B\x28\x4A", 3, 1, ISO2022JP_CS_JISX0201_ROMAN}, + {"\x1B\x28\x49", 3, 1, ISO2022JP_CS_JISX0201_KANA}, + {"\x1B\x24\x40", 3, 2, ISO2022JP_CS_JISX0208_1983}, /* unify 1978 with 1983 */ + {"\x1B\x24\x42", 3, 2, ISO2022JP_CS_JISX0208_1983}, + {"\x1B\x24\x28\x44", 4, 2, ISO2022JP_CS_JISX0212}, + {NULL, 0, 0, 0} +}; + +static int +iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) +{ + iso2022_esc_t *iesc = iso2022jp_esc; + char tmp[MB_CHAR_MAX]; + int insize; + HRESULT hr; + DWORD dummy = 0; + int len; + int esc_len; + int cs; + int shift; + int i; + + if (buf[0] == 0x1B) + { + for (i = 0; iesc[i].esc != NULL; ++i) + { + esc_len = iesc[i].esc_len; + if (bufsize < esc_len) + { + if (strncmp((char *)buf, iesc[i].esc, bufsize) == 0) + return seterror(EINVAL); + } + else + { + if (strncmp((char *)buf, iesc[i].esc, esc_len) == 0) + { + cv->mode = ISO2022_MODE(iesc[i].cs, ISO2022_SI); + *wbufsize = 0; + return esc_len; + } + } + } + /* not supported escape sequence */ + return seterror(EILSEQ); + } + else if (buf[0] == iso2022_SO_seq[0]) + { + cv->mode = ISO2022_MODE(ISO2022_MODE_CS(cv->mode), ISO2022_SO); + *wbufsize = 0; + return 1; + } + else if (buf[0] == iso2022_SI_seq[0]) + { + cv->mode = ISO2022_MODE(ISO2022_MODE_CS(cv->mode), ISO2022_SI); + *wbufsize = 0; + return 1; + } + + cs = ISO2022_MODE_CS(cv->mode); + shift = ISO2022_MODE_SHIFT(cv->mode); + + /* reset the mode for informal sequence */ + if (buf[0] < 0x20) + { + cs = ISO2022JP_CS_ASCII; + shift = ISO2022_SI; + } + + len = iesc[cs].len; + if (bufsize < len) + return seterror(EINVAL); + for (i = 0; i < len; ++i) + if (!(buf[i] < 0x80)) + return seterror(EILSEQ); + esc_len = iesc[cs].esc_len; + memcpy(tmp, iesc[cs].esc, esc_len); + if (shift == ISO2022_SO) + { + memcpy(tmp + esc_len, iso2022_SO_seq, 1); + esc_len += 1; + } + memcpy(tmp + esc_len, buf, len); + + if ((cv->codepage == 50220 || cv->codepage == 50221 + || cv->codepage == 50222) && shift == ISO2022_SO) + { + /* XXX: shift-out cannot be used for mbtowc (both kernel and + * mlang) */ + esc_len = iesc[ISO2022JP_CS_JISX0201_KANA].esc_len; + memcpy(tmp, iesc[ISO2022JP_CS_JISX0201_KANA].esc, esc_len); + memcpy(tmp + esc_len, buf, len); + } + + insize = len + esc_len; + hr = ConvertINetMultiByteToUnicode(&dummy, cv->codepage, + (const char *)tmp, &insize, (wchar_t *)wbuf, wbufsize); + if (hr != S_OK || insize != len + esc_len) + return seterror(EILSEQ); + + /* Check for conversion error. Assuming defaultChar is 0x3F. */ + /* ascii should be converted from ascii */ + if (wbuf[0] == buf[0] + && cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) + return seterror(EILSEQ); + + /* reset the mode for informal sequence */ + if (cv->mode != ISO2022_MODE(cs, shift)) + cv->mode = ISO2022_MODE(cs, shift); + + return len; +} + +static int +iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) +{ + iso2022_esc_t *iesc = iso2022jp_esc; + char tmp[MB_CHAR_MAX]; + int tmpsize = MB_CHAR_MAX; + int insize = wbufsize; + HRESULT hr; + DWORD dummy = 0; + int len; + int esc_len; + int cs; + int shift; + int i; + + /* + * MultiByte = [escape sequence] + character + [escape sequence] + * + * Whether trailing escape sequence is added depends on which API is + * used (kernel or MLang, and its version). + */ + hr = ConvertINetUnicodeToMultiByte(&dummy, cv->codepage, + (const wchar_t *)wbuf, &wbufsize, tmp, &tmpsize); + if (hr != S_OK || insize != wbufsize) + return seterror(EILSEQ); + else if (bufsize < tmpsize) + return seterror(E2BIG); + + if (tmpsize == 1) + { + cs = ISO2022JP_CS_ASCII; + esc_len = 0; + } + else + { + for (i = 1; iesc[i].esc != NULL; ++i) + { + esc_len = iesc[i].esc_len; + if (strncmp(tmp, iesc[i].esc, esc_len) == 0) + { + cs = iesc[i].cs; + break; + } + } + if (iesc[i].esc == NULL) + /* not supported escape sequence */ + return seterror(EILSEQ); + } + + shift = ISO2022_SI; + if (tmp[esc_len] == iso2022_SO_seq[0]) + { + shift = ISO2022_SO; + esc_len += 1; + } + + len = iesc[cs].len; + + /* Check for converting error. Assuming defaultChar is 0x3F. */ + /* ascii should be converted from ascii */ + if (cs == ISO2022JP_CS_ASCII && !(wbuf[0] < 0x80)) + return seterror(EILSEQ); + else if (tmpsize < esc_len + len) + return seterror(EILSEQ); + + if (cv->mode == ISO2022_MODE(cs, shift)) + { + /* remove escape sequence */ + if (esc_len != 0) + memmove(tmp, tmp + esc_len, len); + esc_len = 0; + } + else + { + if (cs == ISO2022JP_CS_ASCII) + { + esc_len = iesc[ISO2022JP_CS_ASCII].esc_len; + memmove(tmp + esc_len, tmp, len); + memcpy(tmp, iesc[ISO2022JP_CS_ASCII].esc, esc_len); + } + if (ISO2022_MODE_SHIFT(cv->mode) == ISO2022_SO) + { + /* shift-in before changing to other mode */ + memmove(tmp + 1, tmp, len + esc_len); + memcpy(tmp, iso2022_SI_seq, 1); + esc_len += 1; + } + } + + if (bufsize < len + esc_len) + return seterror(E2BIG); + memcpy(buf, tmp, len + esc_len); + cv->mode = ISO2022_MODE(cs, shift); + return len + esc_len; +} + +static int +iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize) +{ + iso2022_esc_t *iesc = iso2022jp_esc; + int esc_len; + + if (cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) + { + esc_len = 0; + if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) + esc_len += 1; + if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) + esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; + if (bufsize < esc_len) + return seterror(E2BIG); + + esc_len = 0; + if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) + { + memcpy(buf, iso2022_SI_seq, 1); + esc_len += 1; + } + if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) + { + memcpy(buf + esc_len, iesc[ISO2022JP_CS_ASCII].esc, + iesc[ISO2022JP_CS_ASCII].esc_len); + esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; + } + return esc_len; + } + return 0; +} + +#if defined(MAKE_DLL) && defined(USE_LIBICONV_DLL) +BOOL WINAPI +DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) +{ + switch( fdwReason ) + { + case DLL_PROCESS_ATTACH: + hwiniconv = (HMODULE)hinstDLL; + break; + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} +#endif + +#if defined(MAKE_EXE) +#include +#include +#include +int +main(int argc, char **argv) +{ + char *fromcode = NULL; + char *tocode = NULL; + int i; + char inbuf[BUFSIZ]; + char outbuf[BUFSIZ]; + const char *pin; + char *pout; + size_t inbytesleft; + size_t outbytesleft; + size_t rest = 0; + iconv_t cd; + size_t r; + FILE *in = stdin; + + _setmode(_fileno(stdin), _O_BINARY); + _setmode(_fileno(stdout), _O_BINARY); + + for (i = 1; i < argc; ++i) + { + if (strcmp(argv[i], "-l") == 0) + { + for (i = 0; codepage_alias[i].name != NULL; ++i) + printf("%s\n", codepage_alias[i].name); + return 0; + } + + if (strcmp(argv[i], "-f") == 0) + fromcode = argv[++i]; + else if (strcmp(argv[i], "-t") == 0) + tocode = argv[++i]; + else + { + in = fopen(argv[i], "rb"); + if (in == NULL) + { + fprintf(stderr, "cannot open %s\n", argv[i]); + return 1; + } + break; + } + } + + if (fromcode == NULL || tocode == NULL) + { + printf("usage: %s -f from-enc -t to-enc [file]\n", argv[0]); + return 0; + } + + cd = iconv_open(tocode, fromcode); + if (cd == (iconv_t)(-1)) + { + perror("iconv_open error"); + return 1; + } + + while ((inbytesleft = fread(inbuf + rest, 1, sizeof(inbuf) - rest, in)) != 0 + || rest != 0) + { + inbytesleft += rest; + pin = inbuf; + pout = outbuf; + outbytesleft = sizeof(outbuf); + r = iconv(cd, &pin, &inbytesleft, &pout, &outbytesleft); + fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); + if (r == (size_t)(-1) && errno != E2BIG && (errno != EINVAL || feof(in))) + { + perror("conversion error"); + return 1; + } + memmove(inbuf, pin, inbytesleft); + rest = inbytesleft; + } + pout = outbuf; + outbytesleft = sizeof(outbuf); + r = iconv(cd, NULL, NULL, &pout, &outbytesleft); + fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); + if (r == (size_t)(-1)) + { + perror("conversion error"); + return 1; + } + + iconv_close(cd); + + return 0; +} +#endif + From 675bf4f5468947d79d95cdce45f65de7b5a028e2 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 16:46:59 +0200 Subject: [PATCH 188/630] gsmopen: windows config file update --- src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml b/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml index e4f2b08747..997ed7626f 100644 --- a/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml +++ b/src/mod/endpoints/mod_gsmopen/configs/gsmopen.conf.xml @@ -11,6 +11,10 @@ + From 2fc4960f973a84513e014a507be148dd73a457a6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 18 Apr 2012 08:24:15 -0500 Subject: [PATCH 189/630] fix regression in commit 19f441c6f4516f035828aa112bcf92f47f4e0f28 --- src/mod/endpoints/mod_loopback/mod_loopback.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index a1882f8ca3..cffd920699 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -963,9 +963,16 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi } switch_channel_set_variable(channel, "loopback_app", app); + + if (clone) { + switch_event_add_header(clone, SWITCH_STACK_BOTTOM, "loopback_app", app); + } if (arg) { switch_channel_set_variable(channel, "loopback_app_arg", arg); + if (clone) { + switch_event_add_header(clone, SWITCH_STACK_BOTTOM, "loopback_app_arg", arg); + } } switch_set_flag(tech_pvt, TFLAG_APP); From 1fbde2b403503c691b671cb99de6f3981f90b60e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 18 Apr 2012 08:53:38 -0500 Subject: [PATCH 190/630] FS-3902 --resolve --- .../applications/mod_dptools/mod_dptools.c | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 7d48784486..aa79eb0320 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -1965,7 +1965,7 @@ SWITCH_STANDARD_APP(speak_function) { switch_channel_t *channel = switch_core_session_get_channel(session); char buf[10]; - char *argv[4] = { 0 }; + char *argv[3] = { 0 }; int argc; const char *engine = NULL; const char *voice = NULL; @@ -1984,14 +1984,14 @@ SWITCH_STANDARD_APP(speak_function) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Invalid Params!\n"); return; } else if (argc == 1) { - text = argv[0]; + text = switch_core_session_strdup(session, data); /* unstripped text */ } else if (argc == 2) { voice = argv[0]; - text = argv[1]; + text = switch_core_session_strdup(session, data + (argv[1] - argv[0])); /* unstripped text */ } else { engine = argv[0]; voice = argv[1]; - text = argv[2]; + text = switch_core_session_strdup(session, data + (argv[2] - argv[0])); /* unstripped text */ } if (!engine) { @@ -2766,7 +2766,7 @@ SWITCH_STANDARD_APP(audio_bridge_function) switch_thread_t *thread = NULL; switch_threadattr_t *thd_attr = NULL; char *camp_data = NULL; - switch_status_t status; + switch_status_t status = SWITCH_STATUS_FALSE; int camp_loops = 0; if (zstr(data)) { @@ -3936,7 +3936,7 @@ static switch_status_t file_string_file_read(switch_file_handle_t *handle, void *len = context->samples; } - context->samples -= *len; + context->samples -= (int) *len; memset(data, 255, *len *2); status = SWITCH_STATUS_SUCCESS; } else { @@ -3991,7 +3991,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) file_string_supported_formats[0] = "file_string"; - file_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_FILE_INTERFACE); + file_interface = (switch_file_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_FILE_INTERFACE); file_interface->interface_name = modname; file_interface->extens = file_string_supported_formats; file_interface->file_open = file_string_file_open; @@ -4000,15 +4000,15 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) file_interface->file_seek = file_string_file_seek; - error_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + error_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); error_endpoint_interface->interface_name = "error"; error_endpoint_interface->io_routines = &error_io_routines; - group_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + group_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); group_endpoint_interface->interface_name = "group"; group_endpoint_interface->io_routines = &group_io_routines; - user_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + user_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); user_endpoint_interface->interface_name = "user"; user_endpoint_interface->io_routines = &user_io_routines; From f7579162be14d5f7468f61f66729b7c301c15912 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 18 Apr 2012 09:34:02 -0500 Subject: [PATCH 191/630] fix build --- src/mod/endpoints/mod_loopback/mod_loopback.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index cffd920699..cc2f30c7d7 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -965,13 +965,13 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi switch_channel_set_variable(channel, "loopback_app", app); if (clone) { - switch_event_add_header(clone, SWITCH_STACK_BOTTOM, "loopback_app", app); + switch_event_add_header_string(clone, SWITCH_STACK_BOTTOM, "loopback_app", app); } if (arg) { switch_channel_set_variable(channel, "loopback_app_arg", arg); if (clone) { - switch_event_add_header(clone, SWITCH_STACK_BOTTOM, "loopback_app_arg", arg); + switch_event_add_header_string(clone, SWITCH_STACK_BOTTOM, "loopback_app_arg", arg); } } From 437e502b5902a8a204b2054fb0727c7f62aa0556 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Wed, 18 Apr 2012 11:04:16 -0500 Subject: [PATCH 192/630] fix my contact info as i havent had that email address in years --- src/mod/applications/mod_dptools/mod_dptools.c | 2 +- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 +- src/mod/endpoints/mod_sofia/sofia.c | 2 +- src/mod/endpoints/mod_sofia/sofia_glue.c | 2 +- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index aa79eb0320..351c9a6104 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -24,7 +24,7 @@ * Contributor(s): * * Anthony Minessale II - * Ken Rice, Asteria Solutions Group, Inc + * Ken Rice * Michael Murdock * Neal Horman * Bret McDanel diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 75438c8c83..69afee7c29 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -24,7 +24,7 @@ * Contributor(s): * * Anthony Minessale II - * Ken Rice, Asteria Solutions Group, Inc + * Ken Rice * Paul D. Tinsley * Bret McDanel * Marcel Barbulescu diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 864b95aa13..9cf44b5f00 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -24,7 +24,7 @@ * Contributor(s): * * Anthony Minessale II - * Ken Rice, Asteria Solutions Group, Inc + * Ken Rice * Paul D. Tinsley * Bret McDanel * Marcel Barbulescu diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index b1995580a3..32b7511337 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -24,7 +24,7 @@ * Contributor(s): * * Anthony Minessale II - * Ken Rice, Asteria Solutions Group, Inc + * Ken Rice * Paul D. Tinsley * Bret McDanel * Eliot Gable diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 7f78a6ea8c..b2ff205b89 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -24,7 +24,7 @@ * Contributor(s): * * Anthony Minessale II - * Ken Rice, Asteria Solutions Group, Inc + * Ken Rice * Paul D. Tinsley * Bret McDanel * From c5554eb939e5fc389131de83015c3929ab464352 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Wed, 18 Apr 2012 11:51:48 -0500 Subject: [PATCH 193/630] Copyright date update. --- libs/freetdm/mod_freetdm/mod_freetdm.c | 2 +- libs/freetdm/src/libteletone_detect.c | 2 +- libs/freetdm/src/libteletone_generate.c | 2 +- libs/libdingaling/src/libdingaling.c | 2 +- libs/libteletone/src/libteletone_detect.c | 2 +- libs/libteletone/src/libteletone_generate.c | 2 +- libs/libzrtp/src/zrtp_iface_cache.c | 2 +- libs/openzap/mod_openzap/mod_openzap.c | 2 +- libs/openzap/src/libteletone_detect.c | 2 +- src/fs_encode.c | 2 +- src/mod/applications/mod_abstraction/mod_abstraction.c | 2 +- src/mod/applications/mod_blacklist/mod_blacklist.c | 2 +- src/mod/applications/mod_callcenter/mod_callcenter.c | 2 +- src/mod/applications/mod_cidlookup/mod_cidlookup.c | 2 +- src/mod/applications/mod_cluechoo/mod_cluechoo.c | 2 +- src/mod/applications/mod_commands/mod_commands.c | 2 +- src/mod/applications/mod_conference/mod_conference.c | 2 +- src/mod/applications/mod_curl/mod_curl.c | 2 +- src/mod/applications/mod_db/mod_db.c | 2 +- src/mod/applications/mod_directory/mod_directory.c | 2 +- src/mod/applications/mod_distributor/mod_distributor.c | 2 +- src/mod/applications/mod_dptools/mod_dptools.c | 2 +- src/mod/applications/mod_easyroute/mod_easyroute.c | 2 +- src/mod/applications/mod_enum/mod_enum.c | 2 +- src/mod/applications/mod_esf/mod_esf.c | 2 +- src/mod/applications/mod_esl/mod_esl.c | 2 +- src/mod/applications/mod_expr/mod_expr.c | 2 +- src/mod/applications/mod_fax/mod_fax.c | 2 +- src/mod/applications/mod_fifo/mod_fifo.c | 2 +- src/mod/applications/mod_fsk/fsk_callerid.c | 2 +- src/mod/applications/mod_fsk/mod_fsk.c | 2 +- src/mod/applications/mod_fsv/mod_fsv.c | 2 +- src/mod/applications/mod_hash/mod_hash.c | 2 +- src/mod/applications/mod_httapi/mod_httapi.c | 2 +- src/mod/applications/mod_http_cache/mod_http_cache.c | 2 +- src/mod/applications/mod_ladspa/mod_ladspa.c | 2 +- src/mod/applications/mod_lcr/mod_lcr.c | 2 +- src/mod/applications/mod_limit/mod_limit.c | 2 +- src/mod/applications/mod_memcache/mod_memcache.c | 2 +- src/mod/applications/mod_nibblebill/mod_nibblebill.c | 2 +- src/mod/applications/mod_rad_auth/mod_rad_auth.c | 2 +- src/mod/applications/mod_redis/mod_redis.c | 2 +- src/mod/applications/mod_rss/mod_rss.c | 2 +- src/mod/applications/mod_skel/mod_skel.c | 2 +- src/mod/applications/mod_sms/mod_sms.c | 2 +- src/mod/applications/mod_snapshot/mod_snapshot.c | 2 +- src/mod/applications/mod_snipe_hunt/mod_snipe_hunt.c | 2 +- src/mod/applications/mod_snom/mod_snom.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp_codecs.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp_dsp.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp_fax.c | 2 +- src/mod/applications/mod_spandsp/mod_spandsp_modem.c | 2 +- src/mod/applications/mod_spy/mod_spy.c | 2 +- src/mod/applications/mod_valet_parking/mod_valet_parking.c | 2 +- src/mod/applications/mod_voicemail/mod_voicemail.c | 2 +- src/mod/applications/mod_voicemail_ivr/config.c | 2 +- src/mod/applications/mod_voicemail_ivr/ivr.c | 2 +- src/mod/applications/mod_voicemail_ivr/menu.c | 2 +- src/mod/applications/mod_voicemail_ivr/mod_voicemail_ivr.c | 2 +- src/mod/applications/mod_voicemail_ivr/utils.c | 2 +- src/mod/asr_tts/mod_cepstral/mod_cepstral.c | 2 +- src/mod/asr_tts/mod_flite/mod_flite.c | 2 +- src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c | 2 +- src/mod/codecs/mod_amr/mod_amr.c | 2 +- src/mod/codecs/mod_amrwb/mod_amrwb.c | 2 +- src/mod/codecs/mod_bv/mod_bv.c | 2 +- src/mod/codecs/mod_celt/mod_celt.c | 2 +- src/mod/codecs/mod_codec2/mod_codec2.c | 2 +- src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c | 2 +- src/mod/codecs/mod_g723_1/mod_g723_1.c | 2 +- src/mod/codecs/mod_g729/mod_g729.c | 2 +- src/mod/codecs/mod_h26x/mod_h26x.c | 2 +- src/mod/codecs/mod_ilbc/mod_ilbc.c | 2 +- src/mod/codecs/mod_isac/auto_corr_to_refl_coef.c | 2 +- src/mod/codecs/mod_isac/mod_isac.c | 2 +- src/mod/codecs/mod_mp4v/mod_mp4v.c | 2 +- src/mod/codecs/mod_opus/mod_opus.c | 2 +- src/mod/codecs/mod_siren/mod_siren.c | 2 +- src/mod/codecs/mod_skel_codec/mod_skel_codec.c | 2 +- src/mod/codecs/mod_theora/mod_theora.c | 2 +- src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c | 2 +- src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c | 2 +- .../dialplans/mod_dialplan_directory/mod_dialplan_directory.c | 2 +- src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c | 2 +- src/mod/directories/mod_ldap/mod_ldap.c | 2 +- src/mod/endpoints/mod_alsa/mod_alsa.c | 2 +- src/mod/endpoints/mod_dingaling/mod_dingaling.c | 2 +- .../alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c | 2 +- src/mod/endpoints/mod_loopback/mod_loopback.c | 2 +- src/mod/endpoints/mod_portaudio/mod_portaudio.c | 2 +- src/mod/endpoints/mod_reference/mod_reference.c | 2 +- src/mod/endpoints/mod_rtmp/mod_rtmp.c | 2 +- src/mod/endpoints/mod_rtmp/rtmp.c | 2 +- src/mod/endpoints/mod_rtmp/rtmp_sig.c | 2 +- src/mod/endpoints/mod_rtmp/rtmp_tcp.c | 2 +- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 2 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 2 +- src/mod/endpoints/mod_sofia/sofia.c | 2 +- src/mod/endpoints/mod_sofia/sofia_glue.c | 2 +- src/mod/endpoints/mod_sofia/sofia_presence.c | 2 +- src/mod/endpoints/mod_sofia/sofia_reg.c | 2 +- src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c | 2 +- src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c | 2 +- src/mod/event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c | 2 +- src/mod/event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c | 2 +- src/mod/event_handlers/mod_erlang_event/ei_helpers.c | 2 +- src/mod/event_handlers/mod_erlang_event/handle_msg.c | 2 +- src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c | 2 +- .../event_handlers/mod_event_multicast/mod_event_multicast.c | 2 +- src/mod/event_handlers/mod_event_socket/mod_event_socket.c | 2 +- src/mod/event_handlers/mod_event_test/mod_event_test.c | 2 +- src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c | 2 +- src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c | 2 +- src/mod/event_handlers/mod_snmp/mod_snmp.c | 2 +- src/mod/event_handlers/mod_snmp/subagent.c | 2 +- src/mod/formats/mod_local_stream/mod_local_stream.c | 2 +- src/mod/formats/mod_native_file/mod_native_file.c | 2 +- src/mod/formats/mod_portaudio_stream/mod_portaudio_stream.c | 2 +- src/mod/formats/mod_shell_stream/mod_shell_stream.c | 2 +- src/mod/formats/mod_shout/mod_shout.c | 2 +- src/mod/formats/mod_sndfile/mod_sndfile.c | 2 +- src/mod/formats/mod_tone_stream/mod_tone_stream.c | 2 +- src/mod/formats/mod_vlc/mod_vlc.c | 2 +- src/mod/languages/mod_perl/mod_perl.c | 2 +- src/mod/languages/mod_python/mod_python.c | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey.c | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.c | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.c | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.c | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey_skel.c | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.c | 2 +- src/mod/languages/mod_yaml/mod_yaml.c | 2 +- src/mod/loggers/mod_console/mod_console.c | 2 +- src/mod/say/mod_say_he/mod_say_he.c | 2 +- src/mod/sdk/autotools/src/mod_example.c | 2 +- src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c | 2 +- src/mod/xml_int/mod_xml_curl/mod_xml_curl.c | 2 +- src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c | 2 +- src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c | 2 +- src/switch.c | 2 +- src/switch_apr.c | 2 +- src/switch_buffer.c | 2 +- src/switch_caller.c | 2 +- src/switch_channel.c | 2 +- src/switch_config.c | 2 +- src/switch_console.c | 2 +- src/switch_core.c | 2 +- src/switch_core_asr.c | 2 +- src/switch_core_codec.c | 2 +- src/switch_core_db.c | 2 +- src/switch_core_directory.c | 2 +- src/switch_core_event_hook.c | 2 +- src/switch_core_file.c | 2 +- src/switch_core_hash.c | 2 +- src/switch_core_io.c | 2 +- src/switch_core_media_bug.c | 2 +- src/switch_core_memory.c | 2 +- src/switch_core_port_allocator.c | 2 +- src/switch_core_rwlock.c | 2 +- src/switch_core_session.c | 2 +- src/switch_core_speech.c | 2 +- src/switch_core_sqldb.c | 2 +- src/switch_core_state_machine.c | 2 +- src/switch_core_timer.c | 2 +- src/switch_event.c | 2 +- src/switch_ivr.c | 2 +- src/switch_ivr_async.c | 2 +- src/switch_ivr_bridge.c | 2 +- src/switch_ivr_menu.c | 2 +- src/switch_ivr_originate.c | 2 +- src/switch_ivr_play_say.c | 2 +- src/switch_ivr_say.c | 2 +- src/switch_loadable_module.c | 2 +- src/switch_log.c | 2 +- src/switch_odbc.c | 2 +- src/switch_pcm.c | 2 +- src/switch_regex.c | 2 +- src/switch_resample.c | 2 +- src/switch_rtp.c | 2 +- src/switch_scheduler.c | 2 +- src/switch_stun.c | 2 +- src/switch_swig.c | 2 +- src/switch_time.c | 2 +- src/switch_utils.c | 2 +- src/switch_xml.c | 2 +- src/switch_xml_config.c | 2 +- src/tone2wav.c | 2 +- 188 files changed, 188 insertions(+), 188 deletions(-) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 9b6641d7b0..8b0acc3aef 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/freetdm/src/libteletone_detect.c b/libs/freetdm/src/libteletone_detect.c index 0d0fd27eec..2006fcaa27 100644 --- a/libs/freetdm/src/libteletone_detect.c +++ b/libs/freetdm/src/libteletone_detect.c @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/freetdm/src/libteletone_generate.c b/libs/freetdm/src/libteletone_generate.c index 7448508944..3e263af7ee 100644 --- a/libs/freetdm/src/libteletone_generate.c +++ b/libs/freetdm/src/libteletone_generate.c @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libdingaling/src/libdingaling.c b/libs/libdingaling/src/libdingaling.c index 9d0355191f..0b11411ffd 100644 --- a/libs/libdingaling/src/libdingaling.c +++ b/libs/libdingaling/src/libdingaling.c @@ -1,6 +1,6 @@ /* * libDingaLing XMPP Jingle Library - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libteletone/src/libteletone_detect.c b/libs/libteletone/src/libteletone_detect.c index 0d0fd27eec..2006fcaa27 100644 --- a/libs/libteletone/src/libteletone_detect.c +++ b/libs/libteletone/src/libteletone_detect.c @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libteletone/src/libteletone_generate.c b/libs/libteletone/src/libteletone_generate.c index 7448508944..3e263af7ee 100644 --- a/libs/libteletone/src/libteletone_generate.c +++ b/libs/libteletone/src/libteletone_generate.c @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libzrtp/src/zrtp_iface_cache.c b/libs/libzrtp/src/zrtp_iface_cache.c index ae1b454666..970d97e869 100644 --- a/libs/libzrtp/src/zrtp_iface_cache.c +++ b/libs/libzrtp/src/zrtp_iface_cache.c @@ -1,6 +1,6 @@ /* * libZRTP SDK library, implements the ZRTP secure VoIP protocol. - * Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved. + * Copyright (c) 2006-2012 Philip R. Zimmermann. All rights reserved. * Contact: http://philzimmermann.com * For licensing and other legal details, see the file zrtp_legal.c. * diff --git a/libs/openzap/mod_openzap/mod_openzap.c b/libs/openzap/mod_openzap/mod_openzap.c index ef346b8eea..ea10ab5cd4 100644 --- a/libs/openzap/mod_openzap/mod_openzap.c +++ b/libs/openzap/mod_openzap/mod_openzap.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/openzap/src/libteletone_detect.c b/libs/openzap/src/libteletone_detect.c index 0436c25953..2c4253b314 100644 --- a/libs/openzap/src/libteletone_detect.c +++ b/libs/openzap/src/libteletone_detect.c @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Much less efficient expansion interface was added to allow for the detection of * a single arbitrary tone combination which may also exceed 2 simultaneous tones. diff --git a/src/fs_encode.c b/src/fs_encode.c index bdaf1ec759..efd93738fc 100644 --- a/src/fs_encode.c +++ b/src/fs_encode.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_abstraction/mod_abstraction.c b/src/mod/applications/mod_abstraction/mod_abstraction.c index b1af6a6271..7f7e5cb01c 100644 --- a/src/mod/applications/mod_abstraction/mod_abstraction.c +++ b/src/mod/applications/mod_abstraction/mod_abstraction.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_blacklist/mod_blacklist.c b/src/mod/applications/mod_blacklist/mod_blacklist.c index 39db253396..c05a533e6b 100644 --- a/src/mod/applications/mod_blacklist/mod_blacklist.c +++ b/src/mod/applications/mod_blacklist/mod_blacklist.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 277026a3c6..30bdf9c2b3 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_cidlookup/mod_cidlookup.c b/src/mod/applications/mod_cidlookup/mod_cidlookup.c index b88081ee7d..562cea7f5f 100755 --- a/src/mod/applications/mod_cidlookup/mod_cidlookup.c +++ b/src/mod/applications/mod_cidlookup/mod_cidlookup.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_cluechoo/mod_cluechoo.c b/src/mod/applications/mod_cluechoo/mod_cluechoo.c index b4eaee0acb..a87aa09433 100644 --- a/src/mod/applications/mod_cluechoo/mod_cluechoo.c +++ b/src/mod/applications/mod_cluechoo/mod_cluechoo.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index d82d5eb2d2..289f6d3b02 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 4d394306ed..89182fa6de 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_curl/mod_curl.c b/src/mod/applications/mod_curl/mod_curl.c index 513e40fcd6..688b78ae73 100644 --- a/src/mod/applications/mod_curl/mod_curl.c +++ b/src/mod/applications/mod_curl/mod_curl.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_db/mod_db.c b/src/mod/applications/mod_db/mod_db.c index d94de1b900..5c64b20c95 100644 --- a/src/mod/applications/mod_db/mod_db.c +++ b/src/mod/applications/mod_db/mod_db.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_directory/mod_directory.c b/src/mod/applications/mod_directory/mod_directory.c index edc8f89b4c..90f55e64e3 100644 --- a/src/mod/applications/mod_directory/mod_directory.c +++ b/src/mod/applications/mod_directory/mod_directory.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_distributor/mod_distributor.c b/src/mod/applications/mod_distributor/mod_distributor.c index b87b3edb75..1a3714c7a2 100644 --- a/src/mod/applications/mod_distributor/mod_distributor.c +++ b/src/mod/applications/mod_distributor/mod_distributor.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 351c9a6104..d40e74d017 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_easyroute/mod_easyroute.c b/src/mod/applications/mod_easyroute/mod_easyroute.c index c4a017d3db..4431aac2ee 100644 --- a/src/mod/applications/mod_easyroute/mod_easyroute.c +++ b/src/mod/applications/mod_easyroute/mod_easyroute.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_enum/mod_enum.c b/src/mod/applications/mod_enum/mod_enum.c index 80b4d899f4..c0cf904da2 100644 --- a/src/mod/applications/mod_enum/mod_enum.c +++ b/src/mod/applications/mod_enum/mod_enum.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_esf/mod_esf.c b/src/mod/applications/mod_esf/mod_esf.c index 5dd4782519..5414b9d8df 100644 --- a/src/mod/applications/mod_esf/mod_esf.c +++ b/src/mod/applications/mod_esf/mod_esf.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_esl/mod_esl.c b/src/mod/applications/mod_esl/mod_esl.c index 5ebda251f2..9af05b236e 100644 --- a/src/mod/applications/mod_esl/mod_esl.c +++ b/src/mod/applications/mod_esl/mod_esl.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_expr/mod_expr.c b/src/mod/applications/mod_expr/mod_expr.c index d562d8cd9c..8933f872d5 100644 --- a/src/mod/applications/mod_expr/mod_expr.c +++ b/src/mod/applications/mod_expr/mod_expr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_fax/mod_fax.c b/src/mod/applications/mod_fax/mod_fax.c index 340a497a23..7eac2520b3 100644 --- a/src/mod/applications/mod_fax/mod_fax.c +++ b/src/mod/applications/mod_fax/mod_fax.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c index 8b4905f60c..15c6d124f9 100644 --- a/src/mod/applications/mod_fifo/mod_fifo.c +++ b/src/mod/applications/mod_fifo/mod_fifo.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_fsk/fsk_callerid.c b/src/mod/applications/mod_fsk/fsk_callerid.c index 2146f663c5..9c99650f3d 100644 --- a/src/mod/applications/mod_fsk/fsk_callerid.c +++ b/src/mod/applications/mod_fsk/fsk_callerid.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_fsk/mod_fsk.c b/src/mod/applications/mod_fsk/mod_fsk.c index 0291707c62..da996fdba4 100644 --- a/src/mod/applications/mod_fsk/mod_fsk.c +++ b/src/mod/applications/mod_fsk/mod_fsk.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_fsv/mod_fsv.c b/src/mod/applications/mod_fsv/mod_fsv.c index 6f37776f92..1c09365175 100644 --- a/src/mod/applications/mod_fsv/mod_fsv.c +++ b/src/mod/applications/mod_fsv/mod_fsv.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_hash/mod_hash.c b/src/mod/applications/mod_hash/mod_hash.c index c4a899a74b..3a93062ada 100644 --- a/src/mod/applications/mod_hash/mod_hash.c +++ b/src/mod/applications/mod_hash/mod_hash.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index 3abc519b67..bc1731d21e 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_http_cache/mod_http_cache.c b/src/mod/applications/mod_http_cache/mod_http_cache.c index b93016a5e6..452eadc656 100644 --- a/src/mod/applications/mod_http_cache/mod_http_cache.c +++ b/src/mod/applications/mod_http_cache/mod_http_cache.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_ladspa/mod_ladspa.c b/src/mod/applications/mod_ladspa/mod_ladspa.c index efc75e03ee..e7362108a4 100644 --- a/src/mod/applications/mod_ladspa/mod_ladspa.c +++ b/src/mod/applications/mod_ladspa/mod_ladspa.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_lcr/mod_lcr.c b/src/mod/applications/mod_lcr/mod_lcr.c index d24aa2df1a..f3d3c0fe41 100644 --- a/src/mod/applications/mod_lcr/mod_lcr.c +++ b/src/mod/applications/mod_lcr/mod_lcr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_limit/mod_limit.c b/src/mod/applications/mod_limit/mod_limit.c index 56da299941..8ffe00ab57 100644 --- a/src/mod/applications/mod_limit/mod_limit.c +++ b/src/mod/applications/mod_limit/mod_limit.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_memcache/mod_memcache.c b/src/mod/applications/mod_memcache/mod_memcache.c index 6016639d4f..ea4ed38a25 100755 --- a/src/mod/applications/mod_memcache/mod_memcache.c +++ b/src/mod/applications/mod_memcache/mod_memcache.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_nibblebill/mod_nibblebill.c b/src/mod/applications/mod_nibblebill/mod_nibblebill.c index eca9f621c9..44cbc29abc 100755 --- a/src/mod/applications/mod_nibblebill/mod_nibblebill.c +++ b/src/mod/applications/mod_nibblebill/mod_nibblebill.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_rad_auth/mod_rad_auth.c b/src/mod/applications/mod_rad_auth/mod_rad_auth.c index 1dc6d6bbdc..4f66608814 100644 --- a/src/mod/applications/mod_rad_auth/mod_rad_auth.c +++ b/src/mod/applications/mod_rad_auth/mod_rad_auth.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -* Copyright (C) 2005-2011, Anthony Minessale II +* Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_redis/mod_redis.c b/src/mod/applications/mod_redis/mod_redis.c index 36376dd069..979977baa8 100755 --- a/src/mod/applications/mod_redis/mod_redis.c +++ b/src/mod/applications/mod_redis/mod_redis.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_rss/mod_rss.c b/src/mod/applications/mod_rss/mod_rss.c index 073b471bb4..8f45e0bd1c 100644 --- a/src/mod/applications/mod_rss/mod_rss.c +++ b/src/mod/applications/mod_rss/mod_rss.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_skel/mod_skel.c b/src/mod/applications/mod_skel/mod_skel.c index c5445f3166..f412cd6e7c 100644 --- a/src/mod/applications/mod_skel/mod_skel.c +++ b/src/mod/applications/mod_skel/mod_skel.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_sms/mod_sms.c b/src/mod/applications/mod_sms/mod_sms.c index e3e3f49578..f70282f8c6 100644 --- a/src/mod/applications/mod_sms/mod_sms.c +++ b/src/mod/applications/mod_sms/mod_sms.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_snapshot/mod_snapshot.c b/src/mod/applications/mod_snapshot/mod_snapshot.c index 854292c777..08c83dea00 100644 --- a/src/mod/applications/mod_snapshot/mod_snapshot.c +++ b/src/mod/applications/mod_snapshot/mod_snapshot.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_snipe_hunt/mod_snipe_hunt.c b/src/mod/applications/mod_snipe_hunt/mod_snipe_hunt.c index 334a0c5e20..6f899b9fab 100644 --- a/src/mod/applications/mod_snipe_hunt/mod_snipe_hunt.c +++ b/src/mod/applications/mod_snipe_hunt/mod_snipe_hunt.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_snom/mod_snom.c b/src/mod/applications/mod_snom/mod_snom.c index 3c50ea1699..1ec423df05 100644 --- a/src/mod/applications/mod_snom/mod_snom.c +++ b/src/mod/applications/mod_snom/mod_snom.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp.c b/src/mod/applications/mod_spandsp/mod_spandsp.c index ba5f7713f2..c210e02c0e 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_codecs.c b/src/mod/applications/mod_spandsp/mod_spandsp_codecs.c index c75db05449..e9ce7665df 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_codecs.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_codecs.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c b/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c index f5b8408b87..144d02ef8d 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_dsp.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c index fab30f2bb8..975aca1fc8 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_modem.c b/src/mod/applications/mod_spandsp/mod_spandsp_modem.c index 9b8fa1e090..e3f8afa89f 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_modem.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_modem.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spy/mod_spy.c b/src/mod/applications/mod_spy/mod_spy.c index 1797539cf0..12c42ba15c 100644 --- a/src/mod/applications/mod_spy/mod_spy.c +++ b/src/mod/applications/mod_spy/mod_spy.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_valet_parking/mod_valet_parking.c b/src/mod/applications/mod_valet_parking/mod_valet_parking.c index 9a237ac44a..9b70e5b317 100644 --- a/src/mod/applications/mod_valet_parking/mod_valet_parking.c +++ b/src/mod/applications/mod_valet_parking/mod_valet_parking.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index b6149aa54d..44bafb3ea2 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/config.c b/src/mod/applications/mod_voicemail_ivr/config.c index a664d85462..1066a5c6ce 100644 --- a/src/mod/applications/mod_voicemail_ivr/config.c +++ b/src/mod/applications/mod_voicemail_ivr/config.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/ivr.c b/src/mod/applications/mod_voicemail_ivr/ivr.c index 4c2b2c8010..81e4cc542f 100644 --- a/src/mod/applications/mod_voicemail_ivr/ivr.c +++ b/src/mod/applications/mod_voicemail_ivr/ivr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/menu.c b/src/mod/applications/mod_voicemail_ivr/menu.c index 73fa7f4859..4442b23e53 100644 --- a/src/mod/applications/mod_voicemail_ivr/menu.c +++ b/src/mod/applications/mod_voicemail_ivr/menu.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/mod_voicemail_ivr.c b/src/mod/applications/mod_voicemail_ivr/mod_voicemail_ivr.c index bede1d0e04..bfc2a62c6c 100644 --- a/src/mod/applications/mod_voicemail_ivr/mod_voicemail_ivr.c +++ b/src/mod/applications/mod_voicemail_ivr/mod_voicemail_ivr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/utils.c b/src/mod/applications/mod_voicemail_ivr/utils.c index e7b374a325..1f065a55f0 100644 --- a/src/mod/applications/mod_voicemail_ivr/utils.c +++ b/src/mod/applications/mod_voicemail_ivr/utils.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/asr_tts/mod_cepstral/mod_cepstral.c b/src/mod/asr_tts/mod_cepstral/mod_cepstral.c index 63ed2a23d9..1889ad269a 100644 --- a/src/mod/asr_tts/mod_cepstral/mod_cepstral.c +++ b/src/mod/asr_tts/mod_cepstral/mod_cepstral.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/asr_tts/mod_flite/mod_flite.c b/src/mod/asr_tts/mod_flite/mod_flite.c index 079818af07..be7abd1915 100644 --- a/src/mod/asr_tts/mod_flite/mod_flite.c +++ b/src/mod/asr_tts/mod_flite/mod_flite.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c b/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c index c9a59038fd..995fe737d2 100644 --- a/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c +++ b/src/mod/asr_tts/mod_pocketsphinx/mod_pocketsphinx.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_amr/mod_amr.c b/src/mod/codecs/mod_amr/mod_amr.c index 0523e64fdd..394535cf4c 100644 --- a/src/mod/codecs/mod_amr/mod_amr.c +++ b/src/mod/codecs/mod_amr/mod_amr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_amrwb/mod_amrwb.c b/src/mod/codecs/mod_amrwb/mod_amrwb.c index d71953b224..f11486ca34 100644 --- a/src/mod/codecs/mod_amrwb/mod_amrwb.c +++ b/src/mod/codecs/mod_amrwb/mod_amrwb.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_bv/mod_bv.c b/src/mod/codecs/mod_bv/mod_bv.c index d8560094b4..d41e014bc5 100644 --- a/src/mod/codecs/mod_bv/mod_bv.c +++ b/src/mod/codecs/mod_bv/mod_bv.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_celt/mod_celt.c b/src/mod/codecs/mod_celt/mod_celt.c index 8d36b6af12..d03f45ed82 100644 --- a/src/mod/codecs/mod_celt/mod_celt.c +++ b/src/mod/codecs/mod_celt/mod_celt.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_codec2/mod_codec2.c b/src/mod/codecs/mod_codec2/mod_codec2.c index 866a39c9df..fefe80463f 100644 --- a/src/mod/codecs/mod_codec2/mod_codec2.c +++ b/src/mod/codecs/mod_codec2/mod_codec2.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c b/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c index a5bf1ecad7..b9d150dc4f 100644 --- a/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c +++ b/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_g723_1/mod_g723_1.c b/src/mod/codecs/mod_g723_1/mod_g723_1.c index cd5defb8e9..f4d835cedd 100644 --- a/src/mod/codecs/mod_g723_1/mod_g723_1.c +++ b/src/mod/codecs/mod_g723_1/mod_g723_1.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_g729/mod_g729.c b/src/mod/codecs/mod_g729/mod_g729.c index 0b1d2ada0e..4de9604935 100644 --- a/src/mod/codecs/mod_g729/mod_g729.c +++ b/src/mod/codecs/mod_g729/mod_g729.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_h26x/mod_h26x.c b/src/mod/codecs/mod_h26x/mod_h26x.c index 7f9ec543f6..368edb98f2 100644 --- a/src/mod/codecs/mod_h26x/mod_h26x.c +++ b/src/mod/codecs/mod_h26x/mod_h26x.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_ilbc/mod_ilbc.c b/src/mod/codecs/mod_ilbc/mod_ilbc.c index 23ca642c22..50ecdce368 100644 --- a/src/mod/codecs/mod_ilbc/mod_ilbc.c +++ b/src/mod/codecs/mod_ilbc/mod_ilbc.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_isac/auto_corr_to_refl_coef.c b/src/mod/codecs/mod_isac/auto_corr_to_refl_coef.c index b7e885898a..b0ed4605f4 100644 --- a/src/mod/codecs/mod_isac/auto_corr_to_refl_coef.c +++ b/src/mod/codecs/mod_isac/auto_corr_to_refl_coef.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. + * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source diff --git a/src/mod/codecs/mod_isac/mod_isac.c b/src/mod/codecs/mod_isac/mod_isac.c index 3f5f40aadb..e182999368 100644 --- a/src/mod/codecs/mod_isac/mod_isac.c +++ b/src/mod/codecs/mod_isac/mod_isac.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_mp4v/mod_mp4v.c b/src/mod/codecs/mod_mp4v/mod_mp4v.c index d4e0a1ea23..48c7242482 100644 --- a/src/mod/codecs/mod_mp4v/mod_mp4v.c +++ b/src/mod/codecs/mod_mp4v/mod_mp4v.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_opus/mod_opus.c b/src/mod/codecs/mod_opus/mod_opus.c index b9a31208a4..285557fd96 100644 --- a/src/mod/codecs/mod_opus/mod_opus.c +++ b/src/mod/codecs/mod_opus/mod_opus.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_siren/mod_siren.c b/src/mod/codecs/mod_siren/mod_siren.c index 224a8258a6..1a3bc54cad 100644 --- a/src/mod/codecs/mod_siren/mod_siren.c +++ b/src/mod/codecs/mod_siren/mod_siren.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_skel_codec/mod_skel_codec.c b/src/mod/codecs/mod_skel_codec/mod_skel_codec.c index cab5c7e8df..7be74aa6a6 100644 --- a/src/mod/codecs/mod_skel_codec/mod_skel_codec.c +++ b/src/mod/codecs/mod_skel_codec/mod_skel_codec.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_theora/mod_theora.c b/src/mod/codecs/mod_theora/mod_theora.c index f1601436ca..fb97fd850d 100644 --- a/src/mod/codecs/mod_theora/mod_theora.c +++ b/src/mod/codecs/mod_theora/mod_theora.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c b/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c index 68bec657e6..5bbbc29d97 100644 --- a/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c +++ b/src/mod/codecs/mod_voipcodecs/mod_voipcodecs.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c b/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c index 4e62a00da8..2da9a6caa7 100644 --- a/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c +++ b/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c b/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c index d28804e3b8..d316299c8b 100644 --- a/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c +++ b/src/mod/dialplans/mod_dialplan_directory/mod_dialplan_directory.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c index 9faaa1852b..2ff472afea 100644 --- a/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c +++ b/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/directories/mod_ldap/mod_ldap.c b/src/mod/directories/mod_ldap/mod_ldap.c index 1bc9b9d61b..32b0c5a886 100644 --- a/src/mod/directories/mod_ldap/mod_ldap.c +++ b/src/mod/directories/mod_ldap/mod_ldap.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_alsa/mod_alsa.c b/src/mod/endpoints/mod_alsa/mod_alsa.c index cadd560de4..bafe8bdcc1 100644 --- a/src/mod/endpoints/mod_alsa/mod_alsa.c +++ b/src/mod/endpoints/mod_alsa/mod_alsa.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c index 7de70de36e..735a68efc7 100644 --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c +++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c index 7db2452a95..fdfbca74b8 100644 --- a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c +++ b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/mod_gsmopen.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index cc2f30c7d7..b333cebda9 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_portaudio/mod_portaudio.c b/src/mod/endpoints/mod_portaudio/mod_portaudio.c index 04a3011d72..c66ed8a95b 100644 --- a/src/mod/endpoints/mod_portaudio/mod_portaudio.c +++ b/src/mod/endpoints/mod_portaudio/mod_portaudio.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_reference/mod_reference.c b/src/mod/endpoints/mod_reference/mod_reference.c index f895e81338..2ce4c4c19a 100644 --- a/src/mod/endpoints/mod_reference/mod_reference.c +++ b/src/mod/endpoints/mod_reference/mod_reference.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.c b/src/mod/endpoints/mod_rtmp/mod_rtmp.c index 5dd5b4adfd..5247074762 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.c +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.c @@ -1,6 +1,6 @@ /* * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2011, Barracuda Networks Inc. + * Copyright (C) 2011-2012, Barracuda Networks Inc. * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_rtmp/rtmp.c b/src/mod/endpoints/mod_rtmp/rtmp.c index 25f769b552..f28f518383 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp.c @@ -1,6 +1,6 @@ /* * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2011, Barracuda Networks Inc. + * Copyright (C) 2011-2012, Barracuda Networks Inc. * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_rtmp/rtmp_sig.c b/src/mod/endpoints/mod_rtmp/rtmp_sig.c index 7aaf79d6f6..5f57eb04c7 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_sig.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_sig.c @@ -1,6 +1,6 @@ /* * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2011, Barracuda Networks Inc. + * Copyright (C) 2011-2012, Barracuda Networks Inc. * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c index 7d4bbd5465..2cfd93b677 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c @@ -1,6 +1,6 @@ /* * mod_rtmp for FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2011, Barracuda Networks Inc. + * Copyright (C) 2011-2012, Barracuda Networks Inc. * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 0360913eb0..159840f5e4 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 22df5bbf25..7e031f1f26 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 9cf44b5f00..921708c4e3 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 32b7511337..645203520f 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index b2ff205b89..72cca73d71 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index f7c614fc0e..e8d02d08e1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c b/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c index d3e72f5d32..1fcab9fda6 100644 --- a/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c +++ b/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c b/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c index d721bed8a5..f2ecd35a4a 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c b/src/mod/event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c index 7f2a7e8b3c..9ad6b8a442 100644 --- a/src/mod/event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c +++ b/src/mod/event_handlers/mod_cdr_pg_csv/mod_cdr_pg_csv.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c b/src/mod/event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c index 73fe4109e7..f4e3f6c10e 100644 --- a/src/mod/event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c +++ b/src/mod/event_handlers/mod_cdr_sqlite/mod_cdr_sqlite.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_erlang_event/ei_helpers.c b/src/mod/event_handlers/mod_erlang_event/ei_helpers.c index aaa0cb6b85..0206f37718 100644 --- a/src/mod/event_handlers/mod_erlang_event/ei_helpers.c +++ b/src/mod/event_handlers/mod_erlang_event/ei_helpers.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_erlang_event/handle_msg.c b/src/mod/event_handlers/mod_erlang_event/handle_msg.c index 2f45ea6203..46e9e67e85 100644 --- a/src/mod/event_handlers/mod_erlang_event/handle_msg.c +++ b/src/mod/event_handlers/mod_erlang_event/handle_msg.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index 15a60f447a..243303d9cd 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c index f0635275f6..88dd4f4c82 100644 --- a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c +++ b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index 0b071b9c12..518583a25d 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_event_test/mod_event_test.c b/src/mod/event_handlers/mod_event_test/mod_event_test.c index d960b08ec5..49c411983f 100644 --- a/src/mod/event_handlers/mod_event_test/mod_event_test.c +++ b/src/mod/event_handlers/mod_event_test/mod_event_test.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c index 4370ee7f91..92a51c65cb 100644 --- a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c +++ b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c b/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c index d42914d061..9f3eaf1cb6 100644 --- a/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c +++ b/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_snmp/mod_snmp.c b/src/mod/event_handlers/mod_snmp/mod_snmp.c index 059646bc19..b068627de2 100644 --- a/src/mod/event_handlers/mod_snmp/mod_snmp.c +++ b/src/mod/event_handlers/mod_snmp/mod_snmp.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 69f135d6bd..ae0132b9a3 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_local_stream/mod_local_stream.c b/src/mod/formats/mod_local_stream/mod_local_stream.c index 4f36e20128..1a90949d13 100644 --- a/src/mod/formats/mod_local_stream/mod_local_stream.c +++ b/src/mod/formats/mod_local_stream/mod_local_stream.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_native_file/mod_native_file.c b/src/mod/formats/mod_native_file/mod_native_file.c index d28b8dcf3a..4193987025 100644 --- a/src/mod/formats/mod_native_file/mod_native_file.c +++ b/src/mod/formats/mod_native_file/mod_native_file.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_portaudio_stream/mod_portaudio_stream.c b/src/mod/formats/mod_portaudio_stream/mod_portaudio_stream.c index b7e49e9e24..5f360bb504 100644 --- a/src/mod/formats/mod_portaudio_stream/mod_portaudio_stream.c +++ b/src/mod/formats/mod_portaudio_stream/mod_portaudio_stream.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_shell_stream/mod_shell_stream.c b/src/mod/formats/mod_shell_stream/mod_shell_stream.c index 11b5b10241..38969c84f6 100644 --- a/src/mod/formats/mod_shell_stream/mod_shell_stream.c +++ b/src/mod/formats/mod_shell_stream/mod_shell_stream.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_shout/mod_shout.c b/src/mod/formats/mod_shout/mod_shout.c index e3c3764429..5cc7c08186 100644 --- a/src/mod/formats/mod_shout/mod_shout.c +++ b/src/mod/formats/mod_shout/mod_shout.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_sndfile/mod_sndfile.c b/src/mod/formats/mod_sndfile/mod_sndfile.c index b7e4dbfd6b..42d2a71a71 100644 --- a/src/mod/formats/mod_sndfile/mod_sndfile.c +++ b/src/mod/formats/mod_sndfile/mod_sndfile.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_tone_stream/mod_tone_stream.c b/src/mod/formats/mod_tone_stream/mod_tone_stream.c index f02dc31cab..45f3ee65fd 100644 --- a/src/mod/formats/mod_tone_stream/mod_tone_stream.c +++ b/src/mod/formats/mod_tone_stream/mod_tone_stream.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c index 990cef1409..98a40f77ad 100644 --- a/src/mod/formats/mod_vlc/mod_vlc.c +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_perl/mod_perl.c b/src/mod/languages/mod_perl/mod_perl.c index e658a0892c..b6be17c951 100644 --- a/src/mod/languages/mod_perl/mod_perl.c +++ b/src/mod/languages/mod_perl/mod_perl.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_python/mod_python.c b/src/mod/languages/mod_python/mod_python.c index b92526e135..aab40df096 100644 --- a/src/mod/languages/mod_python/mod_python.c +++ b/src/mod/languages/mod_python/mod_python.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index f370d83ba9..e17c590a71 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.c index e7a68a632f..0003dda0d8 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_core_db.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.c index 13794e65dd..819ce6e4c7 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_curl.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.c index 63709a4d8f..38b7890024 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_odbc.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_skel.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_skel.c index 7bc73d07e7..f1547ad53c 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_skel.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_skel.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.c index 4f142dbc2f..41337effc2 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey_teletone.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_yaml/mod_yaml.c b/src/mod/languages/mod_yaml/mod_yaml.c index 7142997868..b6827d2960 100644 --- a/src/mod/languages/mod_yaml/mod_yaml.c +++ b/src/mod/languages/mod_yaml/mod_yaml.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/loggers/mod_console/mod_console.c b/src/mod/loggers/mod_console/mod_console.c index 06956708fc..451cca78c3 100644 --- a/src/mod/loggers/mod_console/mod_console.c +++ b/src/mod/loggers/mod_console/mod_console.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/say/mod_say_he/mod_say_he.c b/src/mod/say/mod_say_he/mod_say_he.c index 62f0b59ba2..cca0cbf465 100644 --- a/src/mod/say/mod_say_he/mod_say_he.c +++ b/src/mod/say/mod_say_he/mod_say_he.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Shahar Hadas + * Copyright (c) 2011-2012, Shahar Hadas * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/sdk/autotools/src/mod_example.c b/src/mod/sdk/autotools/src/mod_example.c index b94e81cec7..1888c1e711 100644 --- a/src/mod/sdk/autotools/src/mod_example.c +++ b/src/mod/sdk/autotools/src/mod_example.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c index 684a048806..44379444e3 100644 --- a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c +++ b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c b/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c index 1a01c7f4ff..cf85acce43 100644 --- a/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c +++ b/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c b/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c index 1ac0d38889..ee7a362008 100644 --- a/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c +++ b/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c index 9e61312417..9b20546aec 100644 --- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c +++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch.c b/src/switch.c index 4ac189a84a..a3f8759d8c 100644 --- a/src/switch.c +++ b/src/switch.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_apr.c b/src/switch_apr.c index 4443c4c7f9..426bed59f5 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_buffer.c b/src/switch_buffer.c index 0f104f5500..edfddc2e25 100644 --- a/src/switch_buffer.c +++ b/src/switch_buffer.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_caller.c b/src/switch_caller.c index 9436e44e29..021a901590 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_channel.c b/src/switch_channel.c index b6032d73f2..3c4262b0a9 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_config.c b/src/switch_config.c index 912094024e..974cbf6107 100644 --- a/src/switch_config.c +++ b/src/switch_config.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_console.c b/src/switch_console.c index c54ba643d2..41d308e339 100644 --- a/src/switch_console.c +++ b/src/switch_console.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core.c b/src/switch_core.c index 61a0a8e6e1..a7259ce18d 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_asr.c b/src/switch_core_asr.c index 4fb64b0a0a..4db889929c 100644 --- a/src/switch_core_asr.c +++ b/src/switch_core_asr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index d5404c033c..28439c1b60 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_db.c b/src/switch_core_db.c index 3c20b0f368..7cc151dc5b 100644 --- a/src/switch_core_db.c +++ b/src/switch_core_db.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_directory.c b/src/switch_core_directory.c index 5ff4e05c6c..e86a6fd047 100644 --- a/src/switch_core_directory.c +++ b/src/switch_core_directory.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_event_hook.c b/src/switch_core_event_hook.c index 9cfe1ac79f..e3b17ca6c6 100644 --- a/src/switch_core_event_hook.c +++ b/src/switch_core_event_hook.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_file.c b/src/switch_core_file.c index 6beaa83584..ed1a03f76b 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_hash.c b/src/switch_core_hash.c index 1cfb1424ee..4ac3d2620e 100644 --- a/src/switch_core_hash.c +++ b/src/switch_core_hash.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_io.c b/src/switch_core_io.c index bfc8f1cd33..6125cedbda 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 313552124f..52151b9681 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_memory.c b/src/switch_core_memory.c index d7d8f14a0f..3a93632338 100644 --- a/src/switch_core_memory.c +++ b/src/switch_core_memory.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_port_allocator.c b/src/switch_core_port_allocator.c index 580e45bd91..4b15318274 100644 --- a/src/switch_core_port_allocator.c +++ b/src/switch_core_port_allocator.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_rwlock.c b/src/switch_core_rwlock.c index 5992fa28f1..6567aa1557 100644 --- a/src/switch_core_rwlock.c +++ b/src/switch_core_rwlock.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 54be1431ac..f42104bdc3 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_speech.c b/src/switch_core_speech.c index 12b60538d1..f0e97f8b28 100644 --- a/src/switch_core_speech.c +++ b/src/switch_core_speech.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index cddf640245..d436c60596 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c index 1b540c963f..7b2e900e7f 100644 --- a/src/switch_core_state_machine.c +++ b/src/switch_core_state_machine.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_core_timer.c b/src/switch_core_timer.c index 1798442509..8f6ce4820a 100644 --- a/src/switch_core_timer.c +++ b/src/switch_core_timer.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_event.c b/src/switch_event.c index aa965b9eea..3395fcf04a 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 6511935281..b9ef71f2bf 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 49d14aa3bc..ecddfdbbb6 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 9d4e7a25bc..9051e3c8c3 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr_menu.c b/src/switch_ivr_menu.c index c171d1b02b..4b73f58793 100644 --- a/src/switch_ivr_menu.c +++ b/src/switch_ivr_menu.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 3d120e8628..ed84a351d7 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index fdd67f1de5..bc68cc50f4 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_ivr_say.c b/src/switch_ivr_say.c index 7764ee441b..0081ab16f5 100644 --- a/src/switch_ivr_say.c +++ b/src/switch_ivr_say.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 560004fd3b..d61a537ff3 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_log.c b/src/switch_log.c index 781cc0e5c9..1bd931a44e 100644 --- a/src/switch_log.c +++ b/src/switch_log.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_odbc.c b/src/switch_odbc.c index 24a25cb0af..a0204de243 100644 --- a/src/switch_odbc.c +++ b/src/switch_odbc.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_pcm.c b/src/switch_pcm.c index 51d1ced182..01a56b8e58 100644 --- a/src/switch_pcm.c +++ b/src/switch_pcm.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_regex.c b/src/switch_regex.c index 58be38cb6c..02ed65e4e2 100644 --- a/src/switch_regex.c +++ b/src/switch_regex.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_resample.c b/src/switch_resample.c index 7355384915..136adc9694 100644 --- a/src/switch_resample.c +++ b/src/switch_resample.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 4e6b6311f0..fefb50f551 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_scheduler.c b/src/switch_scheduler.c index 3268d270d1..dc68fe2f5a 100644 --- a/src/switch_scheduler.c +++ b/src/switch_scheduler.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_stun.c b/src/switch_stun.c index 9ed2f98d79..30933fff6a 100644 --- a/src/switch_stun.c +++ b/src/switch_stun.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_swig.c b/src/switch_swig.c index 71ed3f7467..08512ea7da 100644 --- a/src/switch_swig.c +++ b/src/switch_swig.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_time.c b/src/switch_time.c index 7199edf9cc..9c9ce509ec 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_utils.c b/src/switch_utils.c index 0eccf2a67b..07b02d37e7 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_xml.c b/src/switch_xml.c index ce85efad4c..585b867995 100644 --- a/src/switch_xml.c +++ b/src/switch_xml.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_xml_config.c b/src/switch_xml_config.c index 31f44ce175..c33dba4e8a 100644 --- a/src/switch_xml_config.c +++ b/src/switch_xml_config.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/tone2wav.c b/src/tone2wav.c index 403f45a727..99a2370189 100644 --- a/src/tone2wav.c +++ b/src/tone2wav.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * From 6ea05d25f739d9f166dbcad28d4984f9d570a6b9 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 18 Apr 2012 17:56:42 +0200 Subject: [PATCH 194/630] gsmopen: gsmlib compile on windows, made a solution (vc++ makefile) for it --- .../gsmlib/gsm_util.cc | 3 + .../tests/testgsmlib.cc | 1 + .../win32/gsm_config.h | 2 + .../win32/gsmctl.vcproj | 250 +++++++++++++ .../win32/gsmlib.sln | 92 +++++ .../win32/gsmlib.vcproj | 327 ++++++++++++++++++ .../win32/gsmpb.vcproj | 250 +++++++++++++ .../win32/gsmsendsms.vcproj | 250 +++++++++++++ .../win32/gsmsmsd.vcproj | 250 +++++++++++++ .../win32/gsmsmsstore.vcproj | 252 ++++++++++++++ .../win32/testgsmlib.vcproj | 222 ++++++++++++ .../win32/testsms.vcproj | 222 ++++++++++++ .../win32/testsms2.vcproj | 222 ++++++++++++ 13 files changed, 2343 insertions(+) mode change 100644 => 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc mode change 100644 => 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc mode change 100644 => 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.sln create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.vcproj create mode 100755 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.vcproj diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc old mode 100644 new mode 100755 index 3958908df7..a1d25310b3 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/gsmlib/gsm_util.cc @@ -267,6 +267,9 @@ NoCopy &NoCopy::operator=(NoCopy &n) { cerr << "ABORT: NoCopy::operator= used" << endl; abort(); +#ifdef WIN32 + return n; +#endif //WIN32 } #endif // NDEBUG diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc old mode 100644 new mode 100755 index d3fac84f5c..a40e74178d --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/tests/testgsmlib.cc @@ -13,6 +13,7 @@ #include #endif #ifdef WIN32 +#include #include #else #include diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h old mode 100644 new mode 100755 index 176ccc58d2..258d4fed52 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsm_config.h @@ -68,7 +68,9 @@ /* Define if vsnprintf() function available */ #define HAVE_VSNPRINTF 1 +#ifndef WIN32 #define vsnprintf _vsnprintf +#endif// WIN32 /* The number of bytes in a unsigned int. */ #define SIZEOF_UNSIGNED_INT 4 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.vcproj new file mode 100755 index 0000000000..b41426144d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmctl.vcproj @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.sln b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.sln new file mode 100755 index 0000000000..928215c23d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.sln @@ -0,0 +1,92 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmctl", "gsmctl.vcproj", "{A822BA57-6F96-4C69-9E28-C0FB2667B1B0}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "gsmlib.vcproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmpb", "gsmpb.vcproj", "{311D5A85-4DC1-4714-9B61-AE3C57B67B5B}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmsendsms", "gsmsendsms.vcproj", "{CF99664C-05D1-41A3-9B12-B79D55718377}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmsmsd", "gsmsmsd.vcproj", "{3C5D7948-5E49-4C78-9AAB-3AC53A15BEF4}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmsmsstore", "gsmsmsstore.vcproj", "{5A834BCC-8B96-4D1C-9811-ADC816797E3A}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgsmlib", "testgsmlib.vcproj", "{248E3E22-2203-4352-964E-32946A1A0AEC}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsms", "testsms.vcproj", "{BEE3EFDE-4C00-4CE5-9DFC-61DF6F0E5481}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsms2", "testsms2.vcproj", "{3E08AF8F-6DD3-40EC-AA97-C8D4237CA127}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A822BA57-6F96-4C69-9E28-C0FB2667B1B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {A822BA57-6F96-4C69-9E28-C0FB2667B1B0}.Debug|Win32.Build.0 = Debug|Win32 + {A822BA57-6F96-4C69-9E28-C0FB2667B1B0}.Release|Win32.ActiveCfg = Release|Win32 + {A822BA57-6F96-4C69-9E28-C0FB2667B1B0}.Release|Win32.Build.0 = Release|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.Build.0 = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.Build.0 = Release|Win32 + {311D5A85-4DC1-4714-9B61-AE3C57B67B5B}.Debug|Win32.ActiveCfg = Debug|Win32 + {311D5A85-4DC1-4714-9B61-AE3C57B67B5B}.Debug|Win32.Build.0 = Debug|Win32 + {311D5A85-4DC1-4714-9B61-AE3C57B67B5B}.Release|Win32.ActiveCfg = Release|Win32 + {311D5A85-4DC1-4714-9B61-AE3C57B67B5B}.Release|Win32.Build.0 = Release|Win32 + {CF99664C-05D1-41A3-9B12-B79D55718377}.Debug|Win32.ActiveCfg = Debug|Win32 + {CF99664C-05D1-41A3-9B12-B79D55718377}.Debug|Win32.Build.0 = Debug|Win32 + {CF99664C-05D1-41A3-9B12-B79D55718377}.Release|Win32.ActiveCfg = Release|Win32 + {CF99664C-05D1-41A3-9B12-B79D55718377}.Release|Win32.Build.0 = Release|Win32 + {3C5D7948-5E49-4C78-9AAB-3AC53A15BEF4}.Debug|Win32.ActiveCfg = Debug|Win32 + {3C5D7948-5E49-4C78-9AAB-3AC53A15BEF4}.Debug|Win32.Build.0 = Debug|Win32 + {3C5D7948-5E49-4C78-9AAB-3AC53A15BEF4}.Release|Win32.ActiveCfg = Release|Win32 + {3C5D7948-5E49-4C78-9AAB-3AC53A15BEF4}.Release|Win32.Build.0 = Release|Win32 + {5A834BCC-8B96-4D1C-9811-ADC816797E3A}.Debug|Win32.ActiveCfg = Debug|Win32 + {5A834BCC-8B96-4D1C-9811-ADC816797E3A}.Debug|Win32.Build.0 = Debug|Win32 + {5A834BCC-8B96-4D1C-9811-ADC816797E3A}.Release|Win32.ActiveCfg = Release|Win32 + {5A834BCC-8B96-4D1C-9811-ADC816797E3A}.Release|Win32.Build.0 = Release|Win32 + {248E3E22-2203-4352-964E-32946A1A0AEC}.Debug|Win32.ActiveCfg = Debug|Win32 + {248E3E22-2203-4352-964E-32946A1A0AEC}.Debug|Win32.Build.0 = Debug|Win32 + {248E3E22-2203-4352-964E-32946A1A0AEC}.Release|Win32.ActiveCfg = Release|Win32 + {248E3E22-2203-4352-964E-32946A1A0AEC}.Release|Win32.Build.0 = Release|Win32 + {BEE3EFDE-4C00-4CE5-9DFC-61DF6F0E5481}.Debug|Win32.ActiveCfg = Debug|Win32 + {BEE3EFDE-4C00-4CE5-9DFC-61DF6F0E5481}.Debug|Win32.Build.0 = Debug|Win32 + {BEE3EFDE-4C00-4CE5-9DFC-61DF6F0E5481}.Release|Win32.ActiveCfg = Release|Win32 + {BEE3EFDE-4C00-4CE5-9DFC-61DF6F0E5481}.Release|Win32.Build.0 = Release|Win32 + {3E08AF8F-6DD3-40EC-AA97-C8D4237CA127}.Debug|Win32.ActiveCfg = Debug|Win32 + {3E08AF8F-6DD3-40EC-AA97-C8D4237CA127}.Debug|Win32.Build.0 = Debug|Win32 + {3E08AF8F-6DD3-40EC-AA97-C8D4237CA127}.Release|Win32.ActiveCfg = Release|Win32 + {3E08AF8F-6DD3-40EC-AA97-C8D4237CA127}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj new file mode 100755 index 0000000000..7227391d18 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.vcproj new file mode 100755 index 0000000000..5390644dd6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmpb.vcproj @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.vcproj new file mode 100755 index 0000000000..391d71bef6 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsendsms.vcproj @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.vcproj new file mode 100755 index 0000000000..46d6ed3d72 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsd.vcproj @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.vcproj new file mode 100755 index 0000000000..b8e7bc14f2 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmsmsstore.vcproj @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.vcproj new file mode 100755 index 0000000000..f75fb35a4d --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testgsmlib.vcproj @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.vcproj new file mode 100755 index 0000000000..5988cf44fe --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms.vcproj @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.vcproj new file mode 100755 index 0000000000..f1318baccd --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/testsms2.vcproj @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 677b2235796001e9bb2b745be443ffc9ebfd2d3b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 18 Apr 2012 09:55:58 -0500 Subject: [PATCH 195/630] FS-4122 --resolve this fixes the issue and eliminates the delay unless you configure it to have some --- conf/vanilla/sip_profiles/internal.xml | 5 ++++ src/include/switch_rtp.h | 1 + src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 13 ++++++++++ src/mod/endpoints/mod_sofia/sofia_glue.c | 15 ++++++++++++ src/switch_rtp.c | 31 ++++++++++++++++++------ 6 files changed, 58 insertions(+), 8 deletions(-) diff --git a/conf/vanilla/sip_profiles/internal.xml b/conf/vanilla/sip_profiles/internal.xml index b8390c7934..b9605a192c 100644 --- a/conf/vanilla/sip_profiles/internal.xml +++ b/conf/vanilla/sip_profiles/internal.xml @@ -27,6 +27,11 @@ + + + + + - - - + + + + + + + From b453c2fdfc212c2a948967409fab70bbfe30c9f9 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 20 Apr 2012 10:23:50 +0200 Subject: [PATCH 223/630] gsmopen: reporting git version of files in logging --- src/mod/endpoints/mod_gsmopen/Makefile | 3 +-- src/mod/endpoints/mod_gsmopen/Makefile.am | 2 +- src/mod/endpoints/mod_gsmopen/gsmopen.h | 6 ++++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/Makefile b/src/mod/endpoints/mod_gsmopen/Makefile index bf1920aa6f..18823eb4ca 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile +++ b/src/mod/endpoints/mod_gsmopen/Makefile @@ -1,6 +1,5 @@ MODNAME=mod_gsmopen -SVNDEF := -D'GSMOPEN_SVN_VERSION="$(shell svnversion -n .)"' -LOCAL_CFLAGS += $(SVNDEF) -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff +LOCAL_CFLAGS += -I../../../../libs/spandsp/src -I../../../..//libs/tiff-3.8.2/libtiff -DGSMOPEN_C_VER=\"`git log -1 --format="%h" gsmopen_protocol.cpp`\" -DMODGSMOPEN_C_VER=\"`git log -1 --format="%h" mod_gsmopen.cpp`\" LOCAL_LDFLAGS=-L../../../../libs/spandsp/src -lspandsp -lctb-0.16 -lgsmme LOCAL_OBJS=gsmopen_protocol.o include ../../../../build/modmake.rules diff --git a/src/mod/endpoints/mod_gsmopen/Makefile.am b/src/mod/endpoints/mod_gsmopen/Makefile.am index cef21e9871..749d04896c 100644 --- a/src/mod/endpoints/mod_gsmopen/Makefile.am +++ b/src/mod/endpoints/mod_gsmopen/Makefile.am @@ -11,7 +11,7 @@ SPANDSP_LA=$(SPANDSP_BUILDDIR)/src/libspandsp.la mod_LTLIBRARIES = mod_gsmopen.la mod_gsmopen_la_SOURCES = mod_gsmopen.cpp gsmopen_protocol.cpp -mod_gsmopen_la_CFLAGS = $(AM_CFLAGS) -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I. -DGSMOPEN_SVN_VERSION=\"`cat $(switch_builddir)/.version`\" +mod_gsmopen_la_CFLAGS = $(AM_CFLAGS) -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I. -DGSMOPEN_C_VER=\"`git log -1 --format="%h" gsmopen_protocol.cpp`\" -DMODGSMOPEN_C_VER=\"`git log -1 --format="%h" mod_gsmopen.cpp`\" mod_gsmopen_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA) $(TIFF_LA) mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lctb-0.16 -lgsmme diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 1c959a57ec..c2e450147f 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -108,6 +108,12 @@ //#define SAMPLERATE_GSMOPEN 16000 //#define SAMPLES_PER_FRAME SAMPLERATE_GSMOPEN/50 +#ifdef GSMOPEN_C_VER +#ifdef MODGSMOPEN_C_VER +#define GSMOPEN_SVN_VERSION MODGSMOPEN_C_VER"|"GSMOPEN_C_VER +#endif +#endif + #ifndef GSMOPEN_SVN_VERSION #define GSMOPEN_SVN_VERSION SWITCH_VERSION_REVISION #endif /* GSMOPEN_SVN_VERSION */ From 845639025ccf57889276793e8775642a7dfb92de Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 20 Apr 2012 08:03:03 -0500 Subject: [PATCH 224/630] FS-4122 --- src/mod/endpoints/mod_sofia/sofia.c | 14 +++++++------- src/switch_rtp.c | 10 ++-------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 44afd6242d..9614b1cba0 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2957,7 +2957,7 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_PASS_CALLEE_ID); } - } else if (!strcasecmp(var, "rtp-digit-timeout")) { + } else if (!strcasecmp(var, "rtp-digit-delay")) { int delay = val ? atoi(val) : 0; if (delay < 0) delay = 0; @@ -3747,6 +3747,7 @@ switch_status_t config_sofia(int reload, char *profile_name) switch_thread_rwlock_create(&profile->rwlock, profile->pool); switch_mutex_init(&profile->flag_mutex, SWITCH_MUTEX_NESTED, profile->pool); profile->dtmf_duration = 100; + profile->rtp_digit_delay = 40; profile->sip_force_expires = 0; profile->sip_expires_max_deviation = 0; profile->tls_version = 0; @@ -3845,13 +3846,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_LIBERAL_DTMF); } - } else if (!strcasecmp(var, "rtp-digit-timeout")) { - int delay = val ? atoi(val) : 0; - - if (delay < 0) delay = 0; - + } else if (!strcasecmp(var, "rtp-digit-delay")) { + int delay = atoi(val); + if (delay < 0) { + delay = 0; + } profile->rtp_digit_delay = (uint32_t) delay; - } else if (!strcasecmp(var, "watchdog-enabled")) { profile->watchdog_enabled = switch_true(val); } else if (!strcasecmp(var, "watchdog-step-timeout")) { diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 193520000f..72d7a8e71c 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -2310,11 +2310,6 @@ static void do_2833(switch_rtp_t *rtp_session, switch_core_session_t *session) switch_frame_flag_t flags = 0; uint32_t samples = rtp_session->samples_per_interval; - if (rtp_session->sending_dtmf > 1) { - rtp_session->sending_dtmf--; - return; - } - if (!rtp_session->last_write_ts) { return; } @@ -2409,8 +2404,7 @@ static void do_2833(switch_rtp_t *rtp_session, switch_core_session_t *session) if (!rtp_session->sending_dtmf) { - rtp_session->sending_dtmf = 2; - return; + rtp_session->sending_dtmf = 1; } if (switch_queue_trypop(rtp_session->dtmf_data.dtmf_queue, &pop) == SWITCH_STATUS_SUCCESS) { @@ -2983,7 +2977,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ do_2833(rtp_session, session); - if (rtp_session->dtmf_data.out_digit_dur > 0 || rtp_session->dtmf_data.in_digit_sanity || rtp_session->sending_dtmf > 0 || + if (rtp_session->dtmf_data.out_digit_dur > 0 || rtp_session->dtmf_data.in_digit_sanity || rtp_session->sending_dtmf || switch_queue_size(rtp_session->dtmf_data.dtmf_queue) || switch_queue_size(rtp_session->dtmf_data.dtmf_inqueue)) { pt = 20000; } From c6aaa281f1d55c76d2a33370326ba9c26186c3b3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 20 Apr 2012 08:56:14 -0500 Subject: [PATCH 225/630] FS-4135 --resolve --- src/switch_loadable_module.c | 86 +++++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 27 deletions(-) diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 104c4b4073..c0755c6b55 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -2075,6 +2075,37 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_impleme } +char *parse_codec_buf(char *buf, uint32_t *interval, uint32_t *rate, uint32_t *bit) +{ + char *cur, *next = NULL, *name, *p; + + name = next = cur = buf; + + for (;;) { + if (!next) { + break; + } + + if ((p = strchr(next, '@'))) { + *p++ = '\0'; + } + next = p; + + if (cur != name) { + if (strchr(cur, 'i')) { + *interval = atoi(cur); + } else if ((strchr(cur, 'k') || strchr(cur, 'h'))) { + *rate = atoi(cur); + } else if (strchr(cur, 'b')) { + *bit = atoi(cur); + } + } + cur = next; + } + + return name; +} + SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_implementation_t **array, int arraylen, char **prefs, int preflen) { int x, i = 0, j = 0; @@ -2084,40 +2115,41 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_ switch_mutex_lock(loadable_modules.mutex); for (x = 0; x < preflen; x++) { - char *cur, *next = NULL, *name, *p, buf[256]; + char *name, buf[256], jbuf[256]; uint32_t interval = 0, rate = 0, bit = 0; + switch_copy_string(buf, prefs[x], sizeof(buf)); + name = parse_codec_buf(buf, &interval, &rate, &bit); + for(j = 0; j < x; j++) { - if (!strcasecmp(prefs[j], prefs[x])) { + char *jname; + uint32_t jinterval = 0, jrate = 0, jbit = 0; + uint32_t ointerval = interval, orate = rate, obit = bit; + + if (ointerval == 0) { + ointerval = switch_default_ptime(name, 0); + } + + if (orate == 0) { + orate = 8000; + } + + switch_copy_string(jbuf, prefs[j], sizeof(jbuf)); + jname = parse_codec_buf(jbuf, &jinterval, &jrate, &jbit); + + if (jinterval == 0) { + jinterval = switch_default_ptime(jname, 0); + } + + if (jrate == 0) { + jrate = 8000; + } + + if (!strcasecmp(name, jname) && ointerval == jinterval && orate == jrate) { goto next_x; } } - switch_copy_string(buf, prefs[x], sizeof(buf)); - name = next = cur = buf; - - for (;;) { - if (!next) { - break; - } - - if ((p = strchr(next, '@'))) { - *p++ = '\0'; - } - next = p; - - if (cur != name) { - if (strchr(cur, 'i')) { - interval = atoi(cur); - } else if ((strchr(cur, 'k') || strchr(cur, 'h'))) { - rate = atoi(cur); - } else if (strchr(cur, 'b')) { - bit = atoi(cur); - } - } - cur = next; - } - if ((codec_interface = switch_loadable_module_get_codec_interface(name)) != 0) { /* If no specific codec interval is requested opt for the default above all else because lots of stuff assumes it */ for (imp = codec_interface->implementations; imp; imp = imp->next) { From 7cbafee809f15804ab60b55d91161b554e2431be Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 20 Apr 2012 09:47:09 -0500 Subject: [PATCH 226/630] FS-4128 --- .../mod_local_stream/mod_local_stream.c | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/mod/formats/mod_local_stream/mod_local_stream.c b/src/mod/formats/mod_local_stream/mod_local_stream.c index 1e795ed587..8402b2bfcb 100644 --- a/src/mod/formats/mod_local_stream/mod_local_stream.c +++ b/src/mod/formats/mod_local_stream/mod_local_stream.c @@ -752,10 +752,11 @@ SWITCH_STANDARD_API(start_local_stream_function) switch_thread_t *thread; switch_threadattr_t *thd_attr = NULL; char *mycmd = NULL, *argv[8] = { 0 }; - char *local_stream_name = NULL, *path = NULL, *timer_name = NULL; + char *local_stream_name = NULL, *path = NULL, *timer_name = NULL, *chime_list = NULL, *list_dup = NULL; uint32_t prebuf = 1; - int rate = 8000, shuffle = 1, interval = 20; + int rate = 8000, shuffle = 1, interval = 20, chime_freq = 30; uint8_t channels = 1; + uint32_t chime_max = 0; int argc = 0; char *cf = "local_stream.conf"; switch_xml_t cfg, xml, directory, param; @@ -851,6 +852,18 @@ SWITCH_STANDARD_API(start_local_stream_function) } } else if (!strcasecmp(var, "timer-name")) { timer_name = strdup(val); + } else if (!strcasecmp(var, "chime-freq")) { + tmp = atoi(val); + if (tmp > 1) { + chime_freq = (uint32_t) tmp; + } + } else if (!strcasecmp(var, "chime-max")) { + tmp = atoi(val); + if (tmp > 1) { + chime_max = (uint32_t) tmp; + } + } else if (!strcasecmp(var, "chime-list")) { + chime_list = val; } } break; @@ -893,6 +906,16 @@ SWITCH_STANDARD_API(start_local_stream_function) source->interval = interval; source->channels = channels; source->timer_name = switch_core_strdup(source->pool, timer_name ? timer_name : (argv[7] ? argv[7] : "soft")); + list_dup = switch_core_strdup(source->pool, chime_list); + source->chime_total = switch_separate_string(list_dup, ',', source->chime_list, (sizeof(source->chime_list) / sizeof(source->chime_list[0]))); + if (source->chime_total) { + source->chime_freq = chime_freq; + + if (chime_max) { + source->chime_max = chime_max * source->rate; + } + } + source->chime_counter = source->rate * source->chime_freq; source->prebuf = prebuf; source->stopped = 0; source->shuffle = shuffle; From 49917519702b9befa15385d001ff3a71fa63576e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 20 Apr 2012 09:53:51 -0500 Subject: [PATCH 227/630] sometimes compiler warnings are annoying --- src/switch_loadable_module.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index c0755c6b55..812afe785b 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -2124,7 +2124,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_ for(j = 0; j < x; j++) { char *jname; uint32_t jinterval = 0, jrate = 0, jbit = 0; - uint32_t ointerval = interval, orate = rate, obit = bit; + uint32_t ointerval = interval, orate = rate; if (ointerval == 0) { ointerval = switch_default_ptime(name, 0); From aa4b221d12fd6ed4d3c978fb656f771fcc8b8064 Mon Sep 17 00:00:00 2001 From: William King Date: Fri, 20 Apr 2012 15:01:15 -0700 Subject: [PATCH 228/630] Resolve debian packaging make file conflict regressions --- debian/rules | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/debian/rules b/debian/rules index 044815a0fa..b874063b1f 100755 --- a/debian/rules +++ b/debian/rules @@ -178,8 +178,6 @@ config.status: configure ./configure --prefix=/opt/freeswitch --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ${FEATURES} build: build-arch build-indep -build-arch: build-stamp -build-indep: build-stamp build-stamp: config.status dh_testdir @@ -198,7 +196,7 @@ clean: # .pc/applied-patches rm -f */*/*/config.status dh_clean -install: build +install: build-stamp dh_testdir dh_testroot dh_prep @@ -209,11 +207,11 @@ install: build # Build architecture-independent files here. -binary-indep: build install +binary-indep: build-stamp install # We have nothing to do by default. # Build architecture-dependent files here. -binary-arch: build install +binary-arch: build-stamp install dh_testdir dh_testroot dh_installdocs From 57802936968c251ede95d14a5b0bbb4d36bd1fec Mon Sep 17 00:00:00 2001 From: William King Date: Fri, 20 Apr 2012 15:05:02 -0700 Subject: [PATCH 229/630] Adding headers for fail2ban to better handle the source and target of the failures. --- src/mod/endpoints/mod_sofia/sofia_reg.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index e8d02d08e1..81b8da1696 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -1397,6 +1397,9 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "to-user", to_user); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "to-host", to_host); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "network-ip", network_ip); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "user-agent", agent); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "profile-name", profile->name); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "network-port", network_port_c); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "registration-type", (regtype == REG_INVITE) ? "INVITE" : "REGISTER"); switch_event_fire(&s_event); } From adae5e56486bb2c5de394cb35a26cd9c5419055e Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Sat, 21 Apr 2012 16:08:32 +0200 Subject: [PATCH 230/630] gsmopen: closing libctb serial ports when unloading or reloading mod_gsmopen --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 1bb4e36faa..8ccfeda0ae 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1915,9 +1915,16 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown) //DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); if (fd) { //close(fd); - //tech_pvt->controldevfd = -1; + tech_pvt->controldevfd = -1; DEBUGA_GSMOPEN("SHUTDOWN tech_pvt->controldevfd=%d\n", GSMOPEN_P_LOG, tech_pvt->controldevfd); } + + serial_audio_shutdown(tech_pvt); + + int res; + res = tech_pvt->serialPort_serial_control->Close(); + DEBUGA_GSMOPEN("serial_shutdown res=%d (controldevfd is %d)\n", GSMOPEN_P_LOG, res, tech_pvt->controldevfd); + #ifndef WIN32 shutdown(tech_pvt->audiogsmopenpipe[0], 2); close(tech_pvt->audiogsmopenpipe[0]); From 50acea7d95217b506f7ff41b0c5cd7e4a3f8b0a4 Mon Sep 17 00:00:00 2001 From: William King Date: Sat, 21 Apr 2012 12:38:30 -0700 Subject: [PATCH 231/630] Finally fully inline with binary* and build* with Debian Policy Manual section 4.9 --- debian/rules | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index b874063b1f..044815a0fa 100755 --- a/debian/rules +++ b/debian/rules @@ -178,6 +178,8 @@ config.status: configure ./configure --prefix=/opt/freeswitch --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ${FEATURES} build: build-arch build-indep +build-arch: build-stamp +build-indep: build-stamp build-stamp: config.status dh_testdir @@ -196,7 +198,7 @@ clean: # .pc/applied-patches rm -f */*/*/config.status dh_clean -install: build-stamp +install: build dh_testdir dh_testroot dh_prep @@ -207,11 +209,11 @@ install: build-stamp # Build architecture-independent files here. -binary-indep: build-stamp install +binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. -binary-arch: build-stamp install +binary-arch: build install dh_testdir dh_testroot dh_installdocs From 5e5a2ff84b94b1b86eff6c7063c7877b0bc6a581 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 23 Apr 2012 07:50:57 -0500 Subject: [PATCH 232/630] FS-4141 --resolve --- src/mod/applications/mod_hash/mod_hash.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/mod/applications/mod_hash/mod_hash.c b/src/mod/applications/mod_hash/mod_hash.c index 3a93062ada..5905116883 100644 --- a/src/mod/applications/mod_hash/mod_hash.c +++ b/src/mod/applications/mod_hash/mod_hash.c @@ -451,8 +451,6 @@ SWITCH_STANDARD_APP(hash_function) value = strdup(argv[3]); switch_assert(value); switch_core_hash_insert(globals.db_hash, hash_key, value); - } else { - switch_safe_free(value); } } else if (!strcasecmp(argv[0], "delete")) { @@ -466,9 +464,9 @@ SWITCH_STANDARD_APP(hash_function) } if ((value = switch_core_hash_find(globals.db_hash, hash_key))) { if(!strcmp(argv[3], value)) { + switch_safe_free(value); switch_core_hash_delete(globals.db_hash, hash_key); } - switch_safe_free(value); } } else { goto usage; @@ -527,7 +525,6 @@ SWITCH_STANDARD_API(hash_api_function) switch_thread_rwlock_wrlock(globals.db_hash_rwlock); if ((value = switch_core_hash_find(globals.db_hash, hash_key))) { stream->write_function(stream, "-ERR key already exists\n"); - switch_safe_free(value); } else { value = strdup(argv[3]); switch_assert(value); @@ -552,12 +549,12 @@ SWITCH_STANDARD_API(hash_api_function) switch_thread_rwlock_wrlock(globals.db_hash_rwlock); if ((value = switch_core_hash_find(globals.db_hash, hash_key))) { if(!strcmp(argv[3],value)) { + switch_safe_free(value); switch_core_hash_delete(globals.db_hash, hash_key); stream->write_function(stream, "+OK\n"); } else { stream->write_function(stream, "-ERR Doesn't match\n"); } - switch_safe_free(value); } else { stream->write_function(stream, "-ERR Not found\n"); } From ffc8e81b763c4e11e02309b99e2a4b4aa666e845 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 23 Apr 2012 17:00:30 +0000 Subject: [PATCH 233/630] check for missing unixodbc-dev during configure Previously if --enable-core-odbc-support was set but unixodbc-dev was not available, we would fail during make rather during configure. --- configure.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configure.in b/configure.in index 4228883fd3..f6d2e091ef 100644 --- a/configure.in +++ b/configure.in @@ -391,6 +391,10 @@ AX_LIB_ODBC if test "$ac_cv_found_odbc" = "yes" ; then enable_core_odbc_support="yes" fi +if test "x$enable_core_odbc_support" != "xno"; then + AC_CHECK_LIB([odbc], [SQLDisconnect],, AC_MSG_ERROR([no usable libodbc; please install unixodbc devel package or equivalent])) +fi + AC_ARG_ENABLE(timerfd-wrapper, From f73804ac6a879c7523f0b988fa5700211cb99635 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 23 Apr 2012 18:40:28 +0000 Subject: [PATCH 234/630] mod_gsmopen: remove binaries from tree --- src/mod/endpoints/mod_gsmopen/.gitignore | 1 - src/mod/endpoints/mod_gsmopen/gsmlib/README | 4 +- .../mod_gsmopen/gsmlib/gsmlib_1.10-13.diff | 64915 ---------------- .../gsmlib/gsmlib_1.10.orig.tar.gz | Bin 474591 -> 0 bytes 4 files changed, 2 insertions(+), 64918 deletions(-) delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff delete mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz diff --git a/src/mod/endpoints/mod_gsmopen/.gitignore b/src/mod/endpoints/mod_gsmopen/.gitignore index e2769c8969..9fdeeb1412 100644 --- a/src/mod/endpoints/mod_gsmopen/.gitignore +++ b/src/mod/endpoints/mod_gsmopen/.gitignore @@ -1,3 +1,2 @@ !/gsmlib/gsmlib-*/aclocal.m4 !/gsmlib/gsmlib-*/configure -!/gsmlib/gsmlib_1.10.orig.tar.gz diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/README b/src/mod/endpoints/mod_gsmopen/gsmlib/README index 709f78f2ca..9dbb65daa8 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/README +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/README @@ -1,8 +1,8 @@ For Linux distros without gsmlib (eg: CentOS): -Here are the original (ancient) sources for gsmlib, and the patch made by Ubuntu for modern compilers. +In the directory gsmlib-1.10-patched-13ubuntu is the source for gsmlib +as patched by Ubuntu for modern compilers: -In the directory gsmlib-1.10-patched-13ubuntu are the patched sources, ready for (no need to patch them again): ./configure make make install diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff deleted file mode 100644 index ddea9c6d8f..0000000000 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10-13.diff +++ /dev/null @@ -1,64915 +0,0 @@ ---- gsmlib-1.10.orig/g41.patch -+++ gsmlib-1.10/g41.patch -@@ -0,0 +1,29 @@ -+--- ./gsmlib/gsm_me_ta.h~ 2006-03-09 19:15:59.000000000 +0000 -++++ ./gsmlib/gsm_me_ta.h 2006-03-09 19:16:31.000000000 +0000 -+@@ -291,8 +291,8 @@ -+ // 3 disable phone receive RF circuits only -+ // 4 disable phone both transmit and receive RF circuits -+ // 5...127 implementation-defined -+- int MeTa::getFunctionalityLevel() throw(GsmException); -+- void MeTa::setFunctionalityLevel(int level) throw(GsmException); -++ int getFunctionalityLevel() throw(GsmException); -++ void setFunctionalityLevel(int level) throw(GsmException); -+ -+ // return battery charge status (+CBC): -+ // 0 ME is powered by the battery -+@@ -386,13 +386,13 @@ -+ void setCallWaitingLockStatus(FacilityClass cl, -+ bool lock)throw(GsmException); -+ -+- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); -++ void setCLIRPresentation(bool enable) throw(GsmException); -+ //(+CLIR) -+ -+ // 0:according to the subscription of the CLIR service -+ // 1:CLIR invocation -+ // 2:CLIR suppression -+- int MeTa::getCLIRPresentation() throw(GsmException); -++ int getCLIRPresentation() throw(GsmException); -+ -+ friend class Phonebook; -+ friend class SMSStore; ---- gsmlib-1.10.orig/Makefile.in -+++ gsmlib-1.10/Makefile.in -@@ -1,8 +1,6 @@ --# Makefile.in generated by automake 1.6.3 from Makefile.am. --# @configure_input@ -+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am - --# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+# Copyright (C) 1994, 1995-8, 1999, 2001 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. -@@ -12,8 +10,6 @@ - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - --@SET_MAKE@ -- - # ************************************************************************* - # * GSM TA/ME library - # * -@@ -25,6 +21,8 @@ - # * - # * Created: 21.5.1999 - # ************************************************************************* -+ -+ - SHELL = @SHELL@ - - srcdir = @srcdir@ -@@ -45,9 +43,13 @@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include -+ -+DESTDIR = -+ - pkgdatadir = $(datadir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ -+ - top_builddir = . - - ACLOCAL = @ACLOCAL@ -@@ -55,16 +57,12 @@ - AUTOMAKE = @AUTOMAKE@ - AUTOHEADER = @AUTOHEADER@ - --am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - INSTALL = @INSTALL@ --INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) - INSTALL_DATA = @INSTALL_DATA@ --install_sh_DATA = $(install_sh) -c -m 644 --install_sh_PROGRAM = $(install_sh) -c --install_sh_SCRIPT = $(install_sh) -c - INSTALL_SCRIPT = @INSTALL_SCRIPT@ --INSTALL_HEADER = $(INSTALL_DATA) - transform = @program_transform_name@ -+ - NORMAL_INSTALL = : - PRE_INSTALL = : - POST_INSTALL = : -@@ -73,33 +71,38 @@ - POST_UNINSTALL = : - host_alias = @host_alias@ - host_triplet = @host@ -- --EXEEXT = @EXEEXT@ --OBJEXT = @OBJEXT@ --PATH_SEPARATOR = @PATH_SEPARATOR@ --AMTAR = @AMTAR@ -+AR = @AR@ - AS = @AS@ --AWK = @AWK@ - BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ - CATOBJEXT = @CATOBJEXT@ - CC = @CC@ - CPP = @CPP@ - CXX = @CXX@ -+CXXCPP = @CXXCPP@ - DATADIRNAME = @DATADIRNAME@ --DEPDIR = @DEPDIR@ - DLLTOOL = @DLLTOOL@ - ECHO = @ECHO@ -+EGREP = @EGREP@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+GCJ = @GCJ@ -+GCJFLAGS = @GCJFLAGS@ - GENCAT = @GENCAT@ -+GLIBC2 = @GLIBC2@ - GLIBC21 = @GLIBC21@ - GMSGFMT = @GMSGFMT@ - GSM_VERSION = @GSM_VERSION@ -+HAVE_ASPRINTF = @HAVE_ASPRINTF@ - HAVE_LIB = @HAVE_LIB@ --INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ -+HAVE_SNPRINTF = @HAVE_SNPRINTF@ -+HAVE_WPRINTF = @HAVE_WPRINTF@ - INSTOBJEXT = @INSTOBJEXT@ - INTLBISON = @INTLBISON@ - INTLLIBS = @INTLLIBS@ - INTLOBJS = @INTLOBJS@ - INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ - LIB = @LIB@ - LIBICONV = @LIBICONV@ - LIBINTL = @LIBINTL@ -@@ -108,89 +111,83 @@ - LTLIB = @LTLIB@ - LTLIBICONV = @LTLIBICONV@ - LTLIBINTL = @LTLIBINTL@ -+MAKEINFO = @MAKEINFO@ - MKINSTALLDIRS = @MKINSTALLDIRS@ - OBJDUMP = @OBJDUMP@ -+OBJEXT = @OBJEXT@ - PACKAGE = @PACKAGE@ - POSUB = @POSUB@ - RANLIB = @RANLIB@ -+RC = @RC@ - STRIP = @STRIP@ - USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ - USE_NLS = @USE_NLS@ - VERSION = @VERSION@ --am__include = @am__include@ --am__quote = @am__quote@ --install_sh = @install_sh@ - - SUBDIRS_ = po gsmlib apps tests doc scripts win32 ext - - EXTRA_DIST = gsmlib.spec -- - @COMPILE_INTL_TRUE@SUBDIRS = intl $(SUBDIRS_) # po - make automake happy - @COMPILE_INTL_FALSE@SUBDIRS = $(SUBDIRS_) # po intl - make automake happy --subdir = . - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - mkinstalldirs = $(SHELL) $(top_srcdir)/scripts/mkinstalldirs - CONFIG_HEADER = gsm_config.h --CONFIG_CLEAN_FILES = intl/Makefile --DIST_SOURCES = -+CONFIG_CLEAN_FILES = -+DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ -+INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ -+aclocal.m4 configure configure.in gsm_config.h.in - --RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ -- uninstall-info-recursive all-recursive install-data-recursive \ -- install-exec-recursive installdirs-recursive install-recursive \ -- uninstall-recursive check-recursive installcheck-recursive --DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ -- Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ -- aclocal.m4 configure configure.in gsm_config.h.in --DIST_SUBDIRS = po gsmlib apps tests doc scripts win32 ext intl --all: gsm_config.h -- $(MAKE) $(AM_MAKEFLAGS) all-recursive - -+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -+ -+TAR = tar -+GZIP_ENV = --best -+DIST_SUBDIRS = intl po gsmlib apps tests doc scripts win32 ext po \ -+gsmlib apps tests doc scripts win32 ext -+all: all-redirect - .SUFFIXES: -+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) -+ cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile - --am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -- configure.lineno --$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) -- cd $(top_srcdir) && \ -- $(AUTOMAKE) --gnu Makefile --Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - --$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+$(ACLOCAL_M4): configure.in acinclude.m4 -+ cd $(srcdir) && $(ACLOCAL) -+ -+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck --$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) -+$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - --$(ACLOCAL_M4): configure.in acinclude.m4 -- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -- --gsm_config.h: stamp-h1 -+gsm_config.h: stamp-h - @if test ! -f $@; then \ -- rm -f stamp-h1; \ -- $(MAKE) stamp-h1; \ -+ rm -f stamp-h; \ -+ $(MAKE) stamp-h; \ - else :; fi -- --stamp-h1: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status -- @rm -f stamp-h1 -- cd $(top_builddir) && $(SHELL) ./config.status gsm_config.h -- --$(srcdir)/gsm_config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h -+stamp-h: $(srcdir)/gsm_config.h.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES= CONFIG_HEADERS=gsm_config.h \ -+ $(SHELL) ./config.status -+ @echo timestamp > stamp-h 2> /dev/null -+$(srcdir)/gsm_config.h.in: $(srcdir)/stamp-h.in -+ @if test ! -f $@; then \ -+ rm -f $(srcdir)/stamp-h.in; \ -+ $(MAKE) $(srcdir)/stamp-h.in; \ -+ else :; fi -+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) -- touch $(srcdir)/gsm_config.h.in -+ @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - --distclean-hdr: -- -rm -f gsm_config.h stamp-h1 --intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in -- cd $(top_builddir) && $(SHELL) ./config.status $@ -+mostlyclean-hdr: - --mostlyclean-libtool: -- -rm -f *.lo -+clean-hdr: - --clean-libtool: -- -rm -rf .libs _libs -+distclean-hdr: -+ -rm -f gsm_config.h - --distclean-libtool: -- -rm -f libtool --uninstall-info-am: -+maintainer-clean-hdr: - - # This directory's subdirectories are mostly independent; you can cd - # into them and run `make' without going through this Makefile. -@@ -198,8 +195,13 @@ - # (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): -- @set fnord $$MAKEFLAGS; amf=$$2; \ -+ -+@SET_MAKE@ -+ -+all-recursive install-data-recursive install-exec-recursive \ -+installdirs-recursive install-recursive uninstall-recursive \ -+check-recursive installcheck-recursive info-recursive dvi-recursive: -+ @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ -@@ -219,18 +221,13 @@ - - mostlyclean-recursive clean-recursive distclean-recursive \ - maintainer-clean-recursive: -- @set fnord $$MAKEFLAGS; amf=$$2; \ -+ @set fnord $(MAKEFLAGS); amf=$$2; \ - 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; \ -+ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ -+ rev="$$subdir $$rev"; \ -+ test "$$subdir" != "." || dot_seen=yes; \ - done; \ -- rev="$$rev ."; \ -+ test "$$dot_seen" = "no" && rev=". $$rev"; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ -@@ -247,237 +244,180 @@ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - --ETAGS = etags --ETAGSFLAGS = -- - tags: TAGS - --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; } \ -+ID: $(HEADERS) $(SOURCES) $(LISP) -+ list='$(SOURCES) $(HEADERS)'; \ -+ unique=`for i in $$list; do echo $$i; done | \ -+ awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ -- mkid -fID $$unique -+ here=`pwd` && cd $(srcdir) \ -+ && mkid -f$$here/ID $$unique $(LISP) - --TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) \ -- $(TAGS_FILES) $(LISP) -+TAGS: tags-recursive $(HEADERS) $(SOURCES) gsm_config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -+ if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ -- fi; \ -+ fi; \ - done; \ -- list='$(SOURCES) $(HEADERS) gsm_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; } \ -+ list='$(SOURCES) $(HEADERS)'; \ -+ unique=`for i in $$list; do echo $$i; done | \ -+ awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ -- test -z "$(ETAGS_ARGS)$$tags$$unique" \ -- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -- $$tags $$unique -- --GTAGS: -- here=`$(am__cd) $(top_builddir) && pwd` \ -- && cd $(top_srcdir) \ -- && gtags -i $(GTAGS_ARGS) $$here -+ test -z "$(ETAGS_ARGS)gsm_config.h.in$$unique$(LISP)$$tags" \ -+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags gsm_config.h.in $$unique $(LISP)) - --distclean-tags: -- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+mostlyclean-tags: - --top_distdir = . --distdir = $(PACKAGE)-$(VERSION) -+clean-tags: - --am__remove_distdir = \ -- { test ! -d $(distdir) \ -- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -- && rm -fr $(distdir); }; } -+distclean-tags: -+ -rm -f TAGS ID - --GZIP_ENV = --best --distcleancheck_listfiles = find . -type f -print -+maintainer-clean-tags: - -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(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 -+ -rm -rf $(distdir) -+ GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz -+ mkdir $(distdir)/=build -+ mkdir $(distdir)/=inst -+ dc_install_base=`cd $(distdir)/=inst && pwd`; \ -+ cd $(distdir)/=build \ -+ && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ -+ && $(MAKE) $(AM_MAKEFLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) dvi \ -+ && $(MAKE) $(AM_MAKEFLAGS) check \ -+ && $(MAKE) $(AM_MAKEFLAGS) install \ -+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist -+ -rm -rf $(distdir) -+ @banner="$(distdir).tar.gz is ready for distribution"; \ -+ dashes=`echo "$$banner" | sed s/./=/g`; \ -+ echo "$$dashes"; \ -+ echo "$$banner"; \ -+ echo "$$dashes" -+dist: distdir -+ -chmod -R a+r $(distdir) -+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -+ -rm -rf $(distdir) -+dist-all: distdir -+ -chmod -R a+r $(distdir) -+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -+ -rm -rf $(distdir) - distdir: $(DISTFILES) -- $(am__remove_distdir) -+ -rm -rf $(distdir) - mkdir $(distdir) -- $(mkinstalldirs) $(distdir)/intl $(distdir)/po -- @list='$(DISTFILES)'; for file in $$list; do \ -- 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"; \ -- $(mkinstalldirs) "$(distdir)$$dir"; \ -- else \ -- dir=''; \ -- fi; \ -+ -chmod 777 $(distdir) -+ here=`cd $(top_builddir) && pwd`; \ -+ top_distdir=`cd $(distdir) && pwd`; \ -+ distdir=`cd $(distdir) && pwd`; \ -+ cd $(top_srcdir) \ -+ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile -+ @for file in $(DISTFILES); do \ -+ d=$(srcdir); \ - 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; \ -+ cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ -- || cp -p $$d/$$file $(distdir)/$$file \ -- || exit 1; \ -+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ -+ || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done -- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ for subdir in $(DIST_SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ -- (cd $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" \ -- distdir=../$(distdir)/$$subdir \ -- distdir) \ -+ chmod 777 $(distdir)/$$subdir; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(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 -- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --dist dist-all: distdir -- $(AMTAR) chof - $(distdir) | 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 -- $(am__remove_distdir) -- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - -- 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` \ -- && cd $(distdir)/=build \ -- && ../configure --srcdir=.. --prefix=$$dc_install_base \ -- --with-included-gettext \ -- $(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 \ -- && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ -- || { echo "ERROR: files left after uninstall:" ; \ -- find $$dc_install_base -type f -print ; \ -- exit 1; } >&2 ) \ -- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ -- && rm -f $(distdir).tar.gz \ -- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -- $(am__remove_distdir) -- @echo "$(distdir).tar.gz is ready for distribution" | \ -- sed 'h;s/./=/g;p;x;p;x' --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 after distclean:" ; \ -- $(distcleancheck_listfiles) ; \ -- exit 1; } >&2 -+info-am: -+info: info-recursive -+dvi-am: -+dvi: dvi-recursive - check-am: all-am - check: check-recursive --all-am: Makefile gsm_config.h --installdirs: installdirs-recursive --installdirs-am: -+installcheck-am: -+installcheck: installcheck-recursive -+all-recursive-am: gsm_config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-recursive - --install: install-recursive -+install-exec-am: - install-exec: install-exec-recursive -+ -+install-data-am: - 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: install-recursive -+uninstall-am: -+uninstall: uninstall-recursive -+all-am: Makefile gsm_config.h -+all-redirect: all-recursive-am - install-strip: -- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -- INSTALL_STRIP_FLAG=-s \ -- `test -z '$(STRIP)' || \ -- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -+installdirs: installdirs-recursive -+installdirs-am: -+ -+ - mostlyclean-generic: - - clean-generic: - - distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) -+ -rm -f config.cache config.log stamp-h stamp-h[0-9]* - - 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) --distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ -- distclean-tags -+mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic - --dvi: dvi-recursive -- --dvi-am: -- --info: info-recursive -- --info-am: -+mostlyclean: mostlyclean-recursive - --install-data-am: -+clean-am: clean-hdr clean-tags clean-generic mostlyclean-am - --install-exec-am: -+clean: clean-recursive - --install-info: install-info-recursive -+distclean-am: distclean-hdr distclean-tags distclean-generic clean-am -+ -rm -f libtool - --install-man: -+distclean: distclean-recursive -+ -rm -f config.status - --installcheck-am: -+maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ -+ maintainer-clean-generic distclean-am -+ @echo "This command is intended for maintainers to use;" -+ @echo "it deletes files that may require special tools to rebuild." - - maintainer-clean: maintainer-clean-recursive -- -rm -f $(am__CONFIG_DISTCLEAN_FILES) -- -rm -rf autom4te.cache --maintainer-clean-am: distclean-am maintainer-clean-generic -- --mostlyclean: mostlyclean-recursive -- --mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -rm -f config.status - --uninstall-am: uninstall-info-am -- --uninstall-info: uninstall-info-recursive -- --.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ -- clean-generic clean-libtool clean-recursive dist dist-all \ -- dist-gzip distcheck distclean distclean-generic distclean-hdr \ -- distclean-libtool distclean-recursive distclean-tags \ -- distcleancheck distdir dvi dvi-am dvi-recursive info info-am \ -- info-recursive install install-am install-data install-data-am \ -- install-data-recursive install-exec install-exec-am \ -- install-exec-recursive install-info install-info-am \ -- install-info-recursive install-man install-recursive \ -- install-strip installcheck installcheck-am installdirs \ -- installdirs-am installdirs-recursive maintainer-clean \ -- maintainer-clean-generic maintainer-clean-recursive mostlyclean \ -- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ -- tags tags-recursive uninstall uninstall-am uninstall-info-am \ -- uninstall-info-recursive uninstall-recursive -+.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -+install-data-recursive uninstall-data-recursive install-exec-recursive \ -+uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -+all-recursive check-recursive installcheck-recursive info-recursive \ -+dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -+dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -+install-exec-am install-exec install-data-am install-data install-am \ -+install uninstall-am uninstall all-redirect all-am all installdirs-am \ -+installdirs mostlyclean-generic distclean-generic clean-generic \ -+maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - - all: -+ - # 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: ---- gsmlib-1.10.orig/gsm_config.h.in -+++ gsmlib-1.10/gsm_config.h.in -@@ -55,25 +55,50 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_ARGZ_H - -+/* Define to 1 if you have the `asprintf' function. */ -+#undef HAVE_ASPRINTF -+ -+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the -+ CoreFoundation framework. */ -+#undef HAVE_CFLOCALECOPYCURRENT -+ -+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in -+ the CoreFoundation framework. */ -+#undef HAVE_CFPREFERENCESCOPYAPPVALUE -+ - /* Define if the GNU dcgettext() function is already present or preinstalled. - */ - #undef HAVE_DCGETTEXT - -+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you -+ don't. */ -+#undef HAVE_DECL_FEOF_UNLOCKED -+ -+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if -+ you don't. */ -+#undef HAVE_DECL_FGETS_UNLOCKED -+ -+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you -+ don't. */ -+#undef HAVE_DECL_GETC_UNLOCKED -+ -+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you -+ don't. */ -+#undef HAVE_DECL__SNPRINTF -+ -+/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you -+ don't. */ -+#undef HAVE_DECL__SNWPRINTF -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_DLFCN_H - --/* Define to 1 if you have the `feof_unlocked' function. */ --#undef HAVE_FEOF_UNLOCKED -- --/* Define to 1 if you have the `fgets_unlocked' function. */ --#undef HAVE_FGETS_UNLOCKED -+/* Define to 1 if you have the `fwprintf' function. */ -+#undef HAVE_FWPRINTF - - /* Define to 1 if you have the `getcwd' function. */ - #undef HAVE_GETCWD - --/* Define to 1 if you have the `getc_unlocked' function. */ --#undef HAVE_GETC_UNLOCKED -- - /* Define to 1 if you have the `getegid' function. */ - #undef HAVE_GETEGID - -@@ -95,6 +120,9 @@ - /* Define if you have the iconv() function. */ - #undef HAVE_ICONV - -+/* Define if you have the 'intmax_t' type in or . */ -+#undef HAVE_INTMAX_T -+ - /* Define if exists and doesn't clash with . */ - #undef HAVE_INTTYPES_H - -@@ -120,6 +148,12 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_LOCALE_H - -+/* Define if you have the 'long double' type. */ -+#undef HAVE_LONG_DOUBLE -+ -+/* Define if you have the 'long long' type. */ -+#undef HAVE_LONG_LONG -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_MALLOC_H - -@@ -141,6 +175,9 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_NL_TYPES_H - -+/* Define if your printf() function supports format strings with positions. */ -+#undef HAVE_POSIX_PRINTF -+ - /* Define to 1 if you have the `putenv' function. */ - #undef HAVE_PUTENV - -@@ -150,6 +187,9 @@ - /* Define to 1 if you have the `setlocale' function. */ - #undef HAVE_SETLOCALE - -+/* Define to 1 if you have the `snprintf' function. */ -+#undef HAVE_SNPRINTF -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_STDDEF_H - -@@ -193,12 +233,24 @@ - /* Define to 1 if you have the `tsearch' function. */ - #undef HAVE_TSEARCH - -+/* Define if you have the 'uintmax_t' type in or . */ -+#undef HAVE_UINTMAX_T -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_UNISTD_H - --/* Define if you have the unsigned long long type. */ -+/* Define if you have the 'unsigned long long' type. */ - #undef HAVE_UNSIGNED_LONG_LONG - -+/* Define if you have the 'wchar_t' type. */ -+#undef HAVE_WCHAR_T -+ -+/* Define to 1 if you have the `wcslen' function. */ -+#undef HAVE_WCSLEN -+ -+/* Define if you have the 'wint_t' type. */ -+#undef HAVE_WINT_T -+ - /* Define to 1 if you have the `__argz_count' function. */ - #undef HAVE___ARGZ_COUNT - -@@ -208,6 +260,9 @@ - /* Define to 1 if you have the `__argz_stringify' function. */ - #undef HAVE___ARGZ_STRINGIFY - -+/* Define to 1 if you have the `__fsetlocking' function. */ -+#undef HAVE___FSETLOCKING -+ - /* Define as const if the declaration of iconv() needs const. */ - #undef ICONV_CONST - -@@ -244,12 +299,16 @@ - /* The size of a `unsigned short int', as computed by sizeof. */ - #undef SIZEOF_UNSIGNED_SHORT_INT - -+/* Define as the maximum value of type 'size_t', if the system doesn't define -+ it. */ -+#undef SIZE_MAX -+ - /* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. -- STACK_DIRECTION > 0 => grows toward higher addresses -- STACK_DIRECTION < 0 => grows toward lower addresses -- STACK_DIRECTION = 0 => direction of growth unknown */ -+ STACK_DIRECTION > 0 => grows toward higher addresses -+ STACK_DIRECTION < 0 => grows toward lower addresses -+ STACK_DIRECTION = 0 => direction of growth unknown */ - #undef STACK_DIRECTION - - /* Define to 1 if you have the ANSI C header files. */ -@@ -261,16 +320,25 @@ - /* Define to empty if `const' does not conform to ANSI C. */ - #undef const - --/* Define as `__inline' if that's what the C compiler calls it, or to nothing -- if it is not supported. */ -+/* 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 as the type of the result of subtracting two pointers, if the system -+ doesn't define it. */ -+#undef ptrdiff_t -+ -+/* Define to empty if the C compiler doesn't support this keyword. */ -+#undef signed -+ - /* Define to `unsigned' if does not define. */ - #undef size_t - --/* Define to unsigned long or unsigned long long if and -- don't define. */ -+/* Define to unsigned long or unsigned long long if and -+ don't define. */ - #undef uintmax_t ---- gsmlib-1.10.orig/aclocal.m4 -+++ gsmlib-1.10/aclocal.m4 -@@ -1,7 +1,7 @@ --# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- -+# generated automatically by aclocal 1.9.6 -*- Autoconf -*- - --# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+# 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. -@@ -11,5211 +11,1221 @@ - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - -+# codeset.m4 serial AM1 (gettext-0.10.40) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- -- --# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. -+dnl From Bruno Haible. - --# 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. -+AC_DEFUN([AM_LANGINFO_CODESET], -+[ -+ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, -+ [AC_TRY_LINK([#include ], -+ [char* cs = nl_langinfo(CODESET);], -+ am_cv_langinfo_codeset=yes, -+ am_cv_langinfo_codeset=no) -+ ]) -+ if test $am_cv_langinfo_codeset = yes; then -+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1, -+ [Define if you have and nl_langinfo(CODESET).]) -+ fi -+]) - --# 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. -+# gettext.m4 serial 37 (gettext-0.14.4) -+dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. - --AC_PREREQ([2.52]) -+dnl Macro to add for using GNU gettext. - --# serial 6 -+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -+dnl default (if it is not specified or empty) is 'no-libtool'. -+dnl INTLSYMBOL should be 'external' for packages with no intl directory, -+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -+dnl If INTLSYMBOL is 'use-libtool', then a libtool library -+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -+dnl depending on --{enable,disable}-{shared,static} and on the presence of -+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -+dnl $(top_builddir)/intl/libintl.a will be created. -+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -+dnl implementations (in libc or libintl) without the ngettext() function -+dnl will be ignored. If NEEDSYMBOL is specified and is -+dnl 'need-formatstring-macros', then GNU gettext implementations that don't -+dnl support the ISO C 99 formatstring macros will be ignored. -+dnl INTLDIR is used to find the intl libraries. If empty, -+dnl the value `$(top_builddir)/intl/' is used. -+dnl -+dnl The result of the configuration is one of three cases: -+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -+dnl and used. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 2) GNU gettext has been found in the system's C library. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 3) No internationalization, always use English msgid. -+dnl Catalog format: none -+dnl Catalog extension: none -+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -+dnl The use of .gmo is historical (it was needed to avoid overwriting the -+dnl GNU format catalogs when building on a platform with an X/Open gettext), -+dnl but we keep it in order not to force irrelevant filename changes on the -+dnl maintainers. -+dnl -+AC_DEFUN([AM_GNU_GETTEXT], -+[ -+ dnl Argument checking. -+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , -+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -+])])])])]) -+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , -+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -+])])])]) -+ define([gt_included_intl], ifelse([$1], [external], [no], [yes])) -+ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) - --# 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. We must strip everything past the first ":", --# and everything past the last "/". -+ AC_REQUIRE([AM_PO_SUBDIRS])dnl -+ ifelse(gt_included_intl, yes, [ -+ AC_REQUIRE([AM_INTL_SUBDIR])dnl -+ ]) - --# _AM_DIRNAME(PATH) --# ----------------- --# Like AS_DIRNAME, only do it during macro expansion --AC_DEFUN([_AM_DIRNAME], -- [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, -- m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, -- m4_if(regexp([$1], [^/.*]), -1, -- [.], -- patsubst([$1], [^\(/\).*], [\1])), -- patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), -- patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl --])# _AM_DIRNAME -- -- --# The stamp files are numbered to have different names. --# We could number them on a directory basis, but that's additional --# complications, let's have a unique counter. --m4_define([_AM_STAMP_Count], [0]) -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) - -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ dnl Ideally we would do this search only after the -+ dnl if test "$USE_NLS" = "yes"; then -+ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then -+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT -+ dnl the configure script would need to contain the same shell code -+ dnl again, outside any 'if'. There are two solutions: -+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. -+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. -+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not -+ dnl documented, we avoid it. -+ ifelse(gt_included_intl, yes, , [ -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+ ]) - --# _AM_STAMP(HEADER) --# ----------------- --# The name of the stamp file for HEADER. --AC_DEFUN([_AM_STAMP], --[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl --AS_ESCAPE(_AM_DIRNAME(patsubst([$1], -- [:.*])))/stamp-h[]_AM_STAMP_Count]) -+ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. -+ gt_INTL_MACOSX - -+ dnl Set USE_NLS. -+ AM_NLS - --# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) --# ------------------------------------------------------------ --# We used to try to get a real timestamp in stamp-h. But the fear is that --# that will cause unnecessary cvs conflicts. --AC_DEFUN([_AM_CONFIG_HEADER], --[# Add the stamp file to the list of files AC keeps track of, --# along with our hook. --AC_CONFIG_HEADERS([$1], -- [# update the timestamp --echo 'timestamp for $1' >"_AM_STAMP([$1])" --$2], -- [$3]) --])# _AM_CONFIG_HEADER -- -- --# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) --# -------------------------------------------------------------- --AC_DEFUN([AM_CONFIG_HEADER], --[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) --])# AM_CONFIG_HEADER -+ ifelse(gt_included_intl, yes, [ -+ BUILD_INCLUDED_LIBINTL=no -+ USE_INCLUDED_LIBINTL=no -+ ]) -+ LIBINTL= -+ LTLIBINTL= -+ POSUB= - --# Do all the work for Automake. -*- Autoconf -*- -+ dnl If we use NLS figure out what method -+ if test "$USE_NLS" = "yes"; then -+ gt_use_preinstalled_gnugettext=no -+ ifelse(gt_included_intl, yes, [ -+ AC_MSG_CHECKING([whether included gettext is requested]) -+ AC_ARG_WITH(included-gettext, -+ [ --with-included-gettext use the GNU gettext library included here], -+ nls_cv_force_use_gnu_gettext=$withval, -+ nls_cv_force_use_gnu_gettext=no) -+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - --# 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. -+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" -+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then -+ ]) -+ dnl User does not insist on using GNU NLS library. Figure out what -+ dnl to use. If GNU gettext is available we use this. Else we have -+ dnl to fall back to GNU NLS library. - --# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+ dnl Add a version number to the cache macros. -+ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) -+ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) -+ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - --# 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. -+ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, -+ [AC_TRY_LINK([#include -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern int *_nl_domain_bindings;], -+ [bindtextdomain ("", ""); -+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], -+ gt_cv_func_gnugettext_libc=yes, -+ gt_cv_func_gnugettext_libc=no)]) - --# 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. -+ if test "$gt_cv_func_gnugettext_libc" != "yes"; then -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ ifelse(gt_included_intl, yes, , [ -+ AM_ICONV_LINK -+ ]) -+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL -+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) -+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL -+ dnl even if libiconv doesn't exist. -+ AC_LIB_LINKFLAGS_BODY([intl]) -+ AC_CACHE_CHECK([for GNU gettext in libintl], -+ gt_cv_func_gnugettext_libintl, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $INCINTL" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIBINTL" -+ dnl Now see whether libintl exists and does not depend on libiconv. -+ AC_TRY_LINK([#include -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias (const char *);], -+ [bindtextdomain ("", ""); -+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], -+ gt_cv_func_gnugettext_libintl=yes, -+ gt_cv_func_gnugettext_libintl=no) -+ dnl Now see whether libintl exists and depends on libiconv. -+ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then -+ LIBS="$LIBS $LIBICONV" -+ AC_TRY_LINK([#include -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias (const char *);], -+ [bindtextdomain ("", ""); -+return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], -+ [LIBINTL="$LIBINTL $LIBICONV" -+ LTLIBINTL="$LTLIBINTL $LTLIBICONV" -+ gt_cv_func_gnugettext_libintl=yes -+ ]) -+ fi -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ fi - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+ dnl If an already present or preinstalled GNU gettext() is found, -+ dnl use it. But if this macro is used in GNU gettext, and GNU -+ dnl gettext is already preinstalled in libintl, we update this -+ dnl libintl. (Cf. the install rule in intl/Makefile.in.) -+ if test "$gt_cv_func_gnugettext_libc" = "yes" \ -+ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ -+ && test "$PACKAGE" != gettext-runtime \ -+ && test "$PACKAGE" != gettext-tools; }; then -+ gt_use_preinstalled_gnugettext=yes -+ else -+ dnl Reset the values set by searching for libintl. -+ LIBINTL= -+ LTLIBINTL= -+ INCINTL= -+ fi - --# serial 8 -+ ifelse(gt_included_intl, yes, [ -+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then -+ dnl GNU gettext is not found in the C library. -+ dnl Fall back on included GNU gettext library. -+ nls_cv_use_gnu_gettext=yes -+ fi -+ fi - --# 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... -+ if test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions used to generate GNU NLS library. -+ BUILD_INCLUDED_LIBINTL=yes -+ USE_INCLUDED_LIBINTL=yes -+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" -+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" -+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` -+ fi - -+ CATOBJEXT= -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions to use GNU gettext tools. -+ CATOBJEXT=.gmo -+ fi -+ ]) - --AC_PREREQ([2.52]) -+ if test -n "$INTL_MACOSX_LIBS"; then -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Some extra flags are needed during linking. -+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" -+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" -+ fi -+ fi - --# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow --# the ones we care about. --m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ AC_DEFINE(ENABLE_NLS, 1, -+ [Define to 1 if translation of program messages to the user's native language -+ is requested.]) -+ else -+ USE_NLS=no -+ fi -+ fi - --# 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_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 -+ AC_MSG_CHECKING([whether to use NLS]) -+ AC_MSG_RESULT([$USE_NLS]) -+ if test "$USE_NLS" = "yes"; then -+ AC_MSG_CHECKING([where the gettext function comes from]) -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -+ gt_source="external libintl" -+ else -+ gt_source="libc" -+ fi -+ else -+ gt_source="included intl directory" -+ fi -+ AC_MSG_RESULT([$gt_source]) -+ fi - --# 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 -+ if test "$USE_NLS" = "yes"; then - --_AM_IF_OPTION([no-define],, --[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -+ AC_MSG_CHECKING([how to link with libintl]) -+ AC_MSG_RESULT([$LIBINTL]) -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -+ fi - --# 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_MISSING_PROG(AMTAR, tar) --AM_PROG_INSTALL_SH --AM_PROG_INSTALL_STRIP --# 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 -+ dnl For backward compatibility. Some packages may be using this. -+ AC_DEFINE(HAVE_GETTEXT, 1, -+ [Define if the GNU gettext() function is already present or preinstalled.]) -+ AC_DEFINE(HAVE_DCGETTEXT, 1, -+ [Define if the GNU dcgettext() function is already present or preinstalled.]) -+ fi - --_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 --]) --]) -+ dnl We need to process the po/ directory. -+ POSUB=po -+ fi - --# Copyright 2002 Free Software Foundation, Inc. -+ ifelse(gt_included_intl, yes, [ -+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL -+ dnl to 'yes' because some of the testsuite requires it. -+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then -+ BUILD_INCLUDED_LIBINTL=yes -+ fi - --# 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. -+ dnl Make all variables we use known to autoconf. -+ AC_SUBST(BUILD_INCLUDED_LIBINTL) -+ AC_SUBST(USE_INCLUDED_LIBINTL) -+ AC_SUBST(CATOBJEXT) - --# 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. -+ dnl For backward compatibility. Some configure.ins may be using this. -+ nls_cv_header_intl= -+ nls_cv_header_libgt= - --# 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., 59 Temple Place - Suite 330, Boston, MA -+ dnl For backward compatibility. Some Makefiles may be using this. -+ DATADIRNAME=share -+ AC_SUBST(DATADIRNAME) - --# 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.6"]) -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INSTOBJEXT=.mo -+ AC_SUBST(INSTOBJEXT) - --# 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.6.3])]) -+ dnl For backward compatibility. Some Makefiles may be using this. -+ GENCAT=gencat -+ AC_SUBST(GENCAT) - --# Helper functions for option handling. -*- Autoconf -*- -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INTLOBJS= -+ if test "$USE_INCLUDED_LIBINTL" = yes; then -+ INTLOBJS="\$(GETTOBJS)" -+ fi -+ AC_SUBST(INTLOBJS) - --# Copyright 2001, 2002 Free Software Foundation, Inc. -+ dnl Enable libtool support if the surrounding package wishes it. -+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix -+ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) -+ ]) - --# 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. -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INTLLIBS="$LIBINTL" -+ AC_SUBST(INTLLIBS) - --# 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. -+ dnl Make all documented variables known to autoconf. -+ AC_SUBST(LIBINTL) -+ AC_SUBST(LTLIBINTL) -+ AC_SUBST(POSUB) -+]) - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. - --# serial 2 -+dnl Checks for all prerequisites of the intl subdirectory, -+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -+AC_DEFUN([AM_INTL_SUBDIR], -+[ -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl -+ AC_REQUIRE([AC_PROG_CC])dnl -+ AC_REQUIRE([AC_CANONICAL_HOST])dnl -+ AC_REQUIRE([gt_GLIBC2])dnl -+ AC_REQUIRE([AC_PROG_RANLIB])dnl -+ AC_REQUIRE([AC_ISC_POSIX])dnl -+ AC_REQUIRE([AC_HEADER_STDC])dnl -+ AC_REQUIRE([AC_C_CONST])dnl -+ AC_REQUIRE([bh_C_SIGNED])dnl -+ AC_REQUIRE([AC_C_INLINE])dnl -+ AC_REQUIRE([AC_TYPE_OFF_T])dnl -+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl -+ AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl -+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl -+ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl -+ AC_REQUIRE([gt_TYPE_WINT_T])dnl -+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) -+ AC_REQUIRE([gt_TYPE_INTMAX_T]) -+ AC_REQUIRE([gt_PRINTF_POSIX]) -+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl -+ AC_REQUIRE([AC_FUNC_MMAP])dnl -+ AC_REQUIRE([gl_GLIBC21])dnl -+ AC_REQUIRE([gt_INTDIV0])dnl -+ AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl -+ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl -+ AC_REQUIRE([gt_INTTYPES_PRI])dnl -+ AC_REQUIRE([gl_XSIZE])dnl -+ AC_REQUIRE([gt_INTL_MACOSX])dnl - --# _AM_MANGLE_OPTION(NAME) --# ----------------------- --AC_DEFUN([_AM_MANGLE_OPTION], --[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -+ AC_CHECK_TYPE([ptrdiff_t], , -+ [AC_DEFINE([ptrdiff_t], [long], -+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) -+ ]) -+ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -+stdlib.h string.h unistd.h sys/param.h]) -+ AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -+mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -+strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -+__fsetlocking]) -+ -+ dnl Use the _snprintf function only if it is declared (because on NetBSD it -+ dnl is defined as a weak alias of snprintf; we prefer to use the latter). -+ gt_CHECK_DECL(_snprintf, [#include ]) -+ gt_CHECK_DECL(_snwprintf, [#include ]) -+ -+ dnl Use the *_unlocked functions only if they are declared. -+ dnl (because some of them were defined without being declared in Solaris -+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built -+ dnl on Solaris 2.5.1 to run on Solaris 2.6). -+ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. -+ gt_CHECK_DECL(feof_unlocked, [#include ]) -+ gt_CHECK_DECL(fgets_unlocked, [#include ]) -+ gt_CHECK_DECL(getc_unlocked, [#include ]) -+ -+ case $gt_cv_func_printf_posix in -+ *yes) HAVE_POSIX_PRINTF=1 ;; -+ *) HAVE_POSIX_PRINTF=0 ;; -+ esac -+ AC_SUBST([HAVE_POSIX_PRINTF]) -+ if test "$ac_cv_func_asprintf" = yes; then -+ HAVE_ASPRINTF=1 -+ else -+ HAVE_ASPRINTF=0 -+ fi -+ AC_SUBST([HAVE_ASPRINTF]) -+ if test "$ac_cv_func_snprintf" = yes; then -+ HAVE_SNPRINTF=1 -+ else -+ HAVE_SNPRINTF=0 -+ fi -+ AC_SUBST([HAVE_SNPRINTF]) -+ if test "$ac_cv_func_wprintf" = yes; then -+ HAVE_WPRINTF=1 -+ else -+ HAVE_WPRINTF=0 -+ fi -+ AC_SUBST([HAVE_WPRINTF]) - --# _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_ICONV -+ AM_LANGINFO_CODESET -+ if test $ac_cv_header_locale_h = yes; then -+ gt_LC_MESSAGES -+ fi - --# _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)])]) -+ if test -n "$INTL_MACOSX_LIBS"; then -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ fi - --# _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])]) -+ dnl intl/plural.c is generated from intl/plural.y. It requires bison, -+ dnl because plural.y uses bison specific features. It requires at least -+ dnl bison-1.26 because earlier versions generate a plural.c that doesn't -+ dnl compile. -+ dnl bison is only needed for the maintainer (who touches plural.y). But in -+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put -+ dnl the rule in general Makefile. Now, some people carelessly touch the -+ dnl files or have a broken "make" program, hence the plural.c rule will -+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not -+ dnl present or too old. -+ AC_CHECK_PROGS([INTLBISON], [bison]) -+ if test -z "$INTLBISON"; then -+ ac_verc_fail=yes -+ else -+ dnl Found it, now check the version. -+ AC_MSG_CHECKING([version of bison]) -+changequote(<<,>>)dnl -+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ case $ac_prog_version in -+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -+changequote([,])dnl -+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -+ esac -+ AC_MSG_RESULT([$ac_prog_version]) -+ fi -+ if test $ac_verc_fail = yes; then -+ INTLBISON=: -+ fi -+]) - --# --# Check to make sure that the build environment is sane. --# - --# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. -+dnl Checks for special options needed on MacOS X. -+dnl Defines INTL_MACOSX_LIBS. -+AC_DEFUN([gt_INTL_MACOSX], -+[ -+ dnl Check for API introduced in MacOS X 10.2. -+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue], -+ gt_cv_func_CFPreferencesCopyAppValue, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ AC_TRY_LINK([#include ], -+ [CFPreferencesCopyAppValue(NULL, NULL)], -+ [gt_cv_func_CFPreferencesCopyAppValue=yes], -+ [gt_cv_func_CFPreferencesCopyAppValue=no]) -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, -+ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) -+ fi -+ dnl Check for API introduced in MacOS X 10.3. -+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], -+ [gt_cv_func_CFLocaleCopyCurrent=yes], -+ [gt_cv_func_CFLocaleCopyCurrent=no]) -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, -+ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) -+ fi -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" -+ fi -+ AC_SUBST([INTL_MACOSX_LIBS]) -+]) - --# 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. -+dnl gt_CHECK_DECL(FUNC, INCLUDES) -+dnl Check whether a function is declared. -+AC_DEFUN([gt_CHECK_DECL], -+[ -+ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, -+ [AC_TRY_COMPILE([$2], [ -+#ifndef $1 -+ char *p = (char *) $1; -+#endif -+], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) -+ if test $ac_cv_have_decl_$1 = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi -+ AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], -+ [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -+]) - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. - --# serial 3 -+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -+AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) - --# 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)]) -- --# -*- Autoconf -*- -+# glibc2.m4 serial 1 -+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - -+# Test for the GNU C Library, version 2.0 or newer. -+# From Bruno Haible. - --# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. -+AC_DEFUN([gt_GLIBC2], -+ [ -+ AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, -+ ac_cv_gnu_library_2, -+ [AC_EGREP_CPP([Lucky GNU user], -+ [ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ >= 2) -+ Lucky GNU user -+ #endif -+#endif -+ ], -+ ac_cv_gnu_library_2=yes, -+ ac_cv_gnu_library_2=no) -+ ] -+ ) -+ AC_SUBST(GLIBC2) -+ GLIBC2="$ac_cv_gnu_library_2" -+ ] -+) - --# 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. -+# glibc21.m4 serial 3 -+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl 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; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. -+# Test for the GNU C Library, version 2.1 or newer. -+# From Bruno Haible. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_DEFUN([gl_GLIBC21], -+ [ -+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, -+ ac_cv_gnu_library_2_1, -+ [AC_EGREP_CPP([Lucky GNU user], -+ [ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -+ Lucky GNU user -+ #endif -+#endif -+ ], -+ ac_cv_gnu_library_2_1=yes, -+ ac_cv_gnu_library_2_1=no) -+ ] -+ ) -+ AC_SUBST(GLIBC21) -+ GLIBC21="$ac_cv_gnu_library_2_1" -+ ] -+) - --# serial 3 -+# iconv.m4 serial AM4 (gettext-0.11.3) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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)]) -+dnl From Bruno Haible. - -+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -+[ -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) - --# 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 -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([iconv]) - ]) - --# AM_AUX_DIR_EXPAND -- --# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_DEFUN([AM_ICONV_LINK], -+[ -+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and -+ dnl those with the standalone portable GNU libiconv installed). - --# 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. -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - --# Rely on autoconf to set up CDPATH properly. --AC_PREREQ([2.50]) -+ dnl Add $INCICONV to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed libiconv and not disabled its use -+ dnl via --without-libiconv-prefix, he wants to use it. The first -+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. -+ am_save_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - --AC_DEFUN([AM_AUX_DIR_EXPAND], [ --# expand $ac_aux_dir to an absolute path --am_aux_dir=`cd $ac_aux_dir && pwd` -+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ -+ am_cv_func_iconv="no, consider installing GNU libiconv" -+ am_cv_lib_iconv=no -+ AC_TRY_LINK([#include -+#include ], -+ [iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);], -+ am_cv_func_iconv=yes) -+ if test "$am_cv_func_iconv" != yes; then -+ am_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIBICONV" -+ AC_TRY_LINK([#include -+#include ], -+ [iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);], -+ am_cv_lib_iconv=yes -+ am_cv_func_iconv=yes) -+ LIBS="$am_save_LIBS" -+ fi -+ ]) -+ if test "$am_cv_func_iconv" = yes; then -+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) -+ fi -+ if test "$am_cv_lib_iconv" = yes; then -+ AC_MSG_CHECKING([how to link with libiconv]) -+ AC_MSG_RESULT([$LIBICONV]) -+ else -+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV -+ dnl either. -+ CPPFLAGS="$am_save_CPPFLAGS" -+ LIBICONV= -+ LTLIBICONV= -+ fi -+ AC_SUBST(LIBICONV) -+ AC_SUBST(LTLIBICONV) - ]) - --# AM_PROG_INSTALL_SH --# ------------------ --# Define $install_sh. -+AC_DEFUN([AM_ICONV], -+[ -+ AM_ICONV_LINK -+ if test "$am_cv_func_iconv" = yes; then -+ AC_MSG_CHECKING([for iconv declaration]) -+ AC_CACHE_VAL(am_cv_proto_iconv, [ -+ AC_TRY_COMPILE([ -+#include -+#include -+extern -+#ifdef __cplusplus -+"C" -+#endif -+#if defined(__STDC__) || defined(__cplusplus) -+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -+#else -+size_t iconv(); -+#endif -+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") -+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) -+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` -+ AC_MSG_RESULT([$]{ac_t:- -+ }[$]am_cv_proto_iconv) -+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, -+ [Define as const if the declaration of iconv() needs const.]) -+ fi -+]) - --# Copyright 2001 Free Software Foundation, Inc. -+# intdiv0.m4 serial 1 (gettext-0.11.3) -+dnl Copyright (C) 2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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. -+dnl From Bruno Haible. - --# 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. -+AC_DEFUN([gt_INTDIV0], -+[ -+ AC_REQUIRE([AC_PROG_CC])dnl -+ AC_REQUIRE([AC_CANONICAL_HOST])dnl - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], -+ gt_cv_int_divbyzero_sigfpe, -+ [ -+ AC_TRY_RUN([ -+#include -+#include - --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)]) -+static void -+#ifdef __cplusplus -+sigfpe_handler (int sig) -+#else -+sigfpe_handler (sig) int sig; -+#endif -+{ -+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -+ exit (sig != SIGFPE); -+} - --# AM_PROG_INSTALL_STRIP -- --# Copyright 2001 Free Software Foundation, Inc. -+int x = 1; -+int y = 0; -+int z; -+int nan; - --# 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. -+int main () -+{ -+ signal (SIGFPE, sigfpe_handler); -+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -+ signal (SIGTRAP, sigfpe_handler); -+#endif -+/* Linux/SPARC yields signal SIGILL. */ -+#if defined (__sparc__) && defined (__linux__) -+ signal (SIGILL, sigfpe_handler); -+#endif - --# 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. -+ z = x / y; -+ nan = y / y; -+ exit (1); -+} -+], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, -+ [ -+ # Guess based on the CPU. -+ case "$host_cpu" in -+ alpha* | i[34567]86 | m68k | s390*) -+ gt_cv_int_divbyzero_sigfpe="guessing yes";; -+ *) -+ gt_cv_int_divbyzero_sigfpe="guessing no";; -+ esac -+ ]) -+ ]) -+ case "$gt_cv_int_divbyzero_sigfpe" in -+ *yes) value=1;; -+ *) value=0;; -+ esac -+ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, -+ [Define if integer division by zero raises signal SIGFPE.]) -+]) - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+# intmax.m4 serial 2 (gettext-0.14.2) -+dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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])]) -+dnl From Bruno Haible. -+dnl Test whether the system has the 'intmax_t' type, but don't attempt to -+dnl find a replacement if it is lacking. - --# serial 4 -*- Autoconf -*- -+AC_DEFUN([gt_TYPE_INTMAX_T], -+[ -+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) -+ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, -+ [AC_TRY_COMPILE([ -+#include -+#include -+#if HAVE_STDINT_H_WITH_UINTMAX -+#include -+#endif -+#if HAVE_INTTYPES_H_WITH_UINTMAX -+#include -+#endif -+], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) -+ if test $gt_cv_c_intmax_t = yes; then -+ AC_DEFINE(HAVE_INTMAX_T, 1, -+ [Define if you have the 'intmax_t' type in or .]) -+ fi -+]) - --# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. -+# inttypes-pri.m4 serial 1 (gettext-0.11.4) -+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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. -+dnl From Bruno Haible. - --# 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. -+# Define PRI_MACROS_BROKEN if exists and defines the PRI* -+# macros to non-string values. This is the case on AIX 4.3.3. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_DEFUN([gt_INTTYPES_PRI], -+[ -+ AC_REQUIRE([gt_HEADER_INTTYPES_H]) -+ if test $gt_cv_header_inttypes_h = yes; then -+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], -+ gt_cv_inttypes_pri_broken, -+ [ -+ AC_TRY_COMPILE([#include -+#ifdef PRId32 -+char *p = PRId32; -+#endif -+], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) -+ ]) -+ fi -+ if test "$gt_cv_inttypes_pri_broken" = yes; then -+ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, -+ [Define if exists and defines unusable PRI* macros.]) -+ fi -+]) - -+# inttypes.m4 serial 1 (gettext-0.11.4) -+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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... -+dnl From Paul Eggert. - -+# Define HAVE_INTTYPES_H if exists and doesn't clash with -+# . - -+AC_DEFUN([gt_HEADER_INTTYPES_H], -+[ -+ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, -+ [ -+ AC_TRY_COMPILE( -+ [#include -+#include ], -+ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) -+ ]) -+ if test $gt_cv_header_inttypes_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, -+ [Define if exists and doesn't clash with .]) -+ fi -+]) - --# _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 -+# inttypes_h.m4 serial 6 -+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --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=]) -+dnl From Paul Eggert. - --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 -+# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, -+# doesn't clash with , and declares uintmax_t. - -- 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` -+AC_DEFUN([gl_AC_HEADER_INTTYPES_H], -+[ -+ AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, -+ [AC_TRY_COMPILE( -+ [#include -+#include ], -+ [uintmax_t i = (uintmax_t) -1;], -+ gl_cv_header_inttypes_h=yes, -+ gl_cv_header_inttypes_h=no)]) -+ if test $gl_cv_header_inttypes_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, -+ [Define if exists, doesn't clash with , -+ and declares uintmax_t. ]) - fi -- for depmode in $am_compiler_list; do -- # 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. -- echo '#include "conftest.h"' > conftest.c -- echo 'int i;' > conftest.h -- echo "${am__include} ${am__quote}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=conftest.c object=conftest.o \ -- depfile=conftest.Po tmpdepfile=conftest.TPo \ -- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && -- grep conftest.h conftest.Po > /dev/null 2>&1 && -- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -- am_cv_$1_dependencies_compiler_type=$depmode -- break -- 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]) - ]) - -+# lcmessage.m4 serial 4 (gettext-0.14.2) -+dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. - --# AM_SET_DEPDIR --# ------------- --# Choose a directory name for dependency files. --# This macro is AC_REQUIREd in _AM_DEPENDENCIES --AC_DEFUN([AM_SET_DEPDIR], --[rm -f .deps 2>/dev/null --mkdir .deps 2>/dev/null --if test -d .deps; then -- DEPDIR=.deps --else -- # MS-DOS does not allow filenames that begin with a dot. -- DEPDIR=_deps --fi --rmdir .deps 2>/dev/null --AC_SUBST([DEPDIR]) --]) -+dnl Authors: -+dnl Ulrich Drepper , 1995. - -+# Check whether LC_MESSAGES is available in . - --# AM_DEP_TRACK --# ------------ --AC_DEFUN([AM_DEP_TRACK], --[AC_ARG_ENABLE(dependency-tracking, --[ --disable-dependency-tracking Speeds up one-time builds -- --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]) -+AC_DEFUN([gt_LC_MESSAGES], -+[ -+ AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, -+ [AC_TRY_LINK([#include ], [return LC_MESSAGES], -+ gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) -+ if test $gt_cv_val_LC_MESSAGES = yes; then -+ AC_DEFINE(HAVE_LC_MESSAGES, 1, -+ [Define if your file defines LC_MESSAGES.]) -+ fi - ]) - --# Generate code to set up dependency tracking. -*- Autoconf -*- -- --# Copyright 1999, 2000, 2001, 2002 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. -+# lib-ld.m4 serial 3 (gettext-0.13) -+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+dnl Subroutines of libtool.m4, -+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -+dnl with libtool.m4. - --#serial 2 -+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -+AC_DEFUN([AC_LIB_PROG_LD_GNU], -+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -+[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -+case `$LD -v 2>&1 /dev/null 2>&1; then -- dirpart=`AS_DIRNAME("$mf")` -+dnl From libtool-1.4. Sets the variable LD. -+AC_DEFUN([AC_LIB_PROG_LD], -+[AC_ARG_WITH(gnu-ld, -+[ --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([AC_PROG_CC])dnl -+AC_REQUIRE([AC_CANONICAL_HOST])dnl -+# Prepare PATH_SEPARATOR. -+# 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 -- continue -+ PATH_SEPARATOR=: - fi -- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue -- # Extract the definition of DEP_FILES from the Makefile without -- # running `make'. -- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` -- test -z "$DEPDIR" && continue -- # When using ansi2knr, U may be empty or an underscore; expand it -- U=`sed -n -e '/^U = / s///p' < "$mf"` -- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" -- # 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 -e ' -- /^DEP_FILES = .*\\\\$/ { -- s/^DEP_FILES = // -- :loop -- s/\\\\$// -- p -- n -- /\\\\$/ b loop -- p -- } -- /^DEP_FILES = / s/^DEP_FILES = //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"]) --]) -- --# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- -- --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -- --# serial 2 -- --# AM_MAKE_INCLUDE() --# ----------------- --# Check to see how make treats includes. --AC_DEFUN([AM_MAKE_INCLUDE], --[am_make=${MAKE-make} --cat > confinc << 'END' --doit: -- @echo done --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 | fgrep -v 'ing directory'`" = "done"; then -- am__include=include -- am__quote= -- _am_result=GNU -+ rm -f conf$$.sh - 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 -+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 GCC]) -+ 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. -+ [[\\/]* | [A-Za-z]:[\\/]*)] -+ [re_direlt='/[^/][^/]*/\.\./'] -+ # Canonicalize the path 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_SUBST(am__include) --AC_SUBST(am__quote) --AC_MSG_RESULT($_am_result) --rm -f confinc confmf -+AC_CACHE_VAL(acl_cv_path_LD, -+[if test -z "$LD"; then -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" -+ for ac_dir in $PATH; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -+ acl_cv_path_LD="$ac_dir/$ac_prog" -+ # Check to see if the program is GNU ld. I'd rather use --version, -+ # but apparently some GNU ld's only accept -v. -+ # Break only if it was the GNU/non-GNU ld that we prefer. -+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in -+ *GNU* | *'with BFD'*) -+ test "$with_gnu_ld" != no && break ;; -+ *) -+ test "$with_gnu_ld" != yes && break ;; -+ esac -+ fi -+ done -+ IFS="$ac_save_ifs" -+else -+ acl_cv_path_LD="$LD" # Let the user override the test with a path. -+fi]) -+LD="$acl_cv_path_LD" -+if test -n "$LD"; then -+ AC_MSG_RESULT($LD) -+else -+ AC_MSG_RESULT(no) -+fi -+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -+AC_LIB_PROG_LD_GNU - ]) - --# AM_CONDITIONAL -*- Autoconf -*- -- --# Copyright 1997, 2000, 2001 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. -+# lib-link.m4 serial 6 (gettext-0.14.3) -+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl 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; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. -+dnl From Bruno Haible. - --# 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., 59 Temple Place - Suite 330, Boston, MA --# 02111-1307, USA. -+AC_PREREQ(2.50) - --# serial 5 -+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -+dnl augments the CPPFLAGS variable. -+AC_DEFUN([AC_LIB_LINKFLAGS], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ define([Name],[translit([$1],[./-], [___])]) -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ -+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) -+ ac_cv_lib[]Name[]_libs="$LIB[]NAME" -+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" -+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME" -+ ]) -+ LIB[]NAME="$ac_cv_lib[]Name[]_libs" -+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" -+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -+ AC_SUBST([LIB]NAME) -+ AC_SUBST([LTLIB]NAME) -+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the -+ dnl results of this search when this library appears as a dependency. -+ HAVE_LIB[]NAME=yes -+ undefine([Name]) -+ undefine([NAME]) -+]) - --AC_PREREQ(2.52) -+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -+dnl searches for libname and the libraries corresponding to explicit and -+dnl implicit dependencies, together with the specified include files and -+dnl the ability to compile and link the specified testcode. If found, it -+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ define([Name],[translit([$1],[./-], [___])]) -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - --# AM_CONDITIONAL(NAME, SHELL-CONDITION) --# ------------------------------------- --# Define a conditional. --AC_DEFUN([AM_CONDITIONAL], --[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])]) -+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) - --# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- -+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed lib[]Name and not disabled its use -+ dnl via --without-lib[]Name-prefix, he wants to use it. -+ ac_save_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - --# serial 46 AC_PROG_LIBTOOL -+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ -+ ac_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIB[]NAME" -+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) -+ LIBS="$ac_save_LIBS" -+ ]) -+ if test "$ac_cv_lib[]Name" = yes; then -+ HAVE_LIB[]NAME=yes -+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) -+ AC_MSG_CHECKING([how to link with lib[]$1]) -+ AC_MSG_RESULT([$LIB[]NAME]) -+ else -+ HAVE_LIB[]NAME=no -+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need -+ dnl $INC[]NAME either. -+ CPPFLAGS="$ac_save_CPPFLAGS" -+ LIB[]NAME= -+ LTLIB[]NAME= -+ fi -+ AC_SUBST([HAVE_LIB]NAME) -+ AC_SUBST([LIB]NAME) -+ AC_SUBST([LTLIB]NAME) -+ undefine([Name]) -+ undefine([NAME]) -+]) - --AC_DEFUN([AC_PROG_LIBTOOL], --[AC_REQUIRE([AC_LIBTOOL_SETUP])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_DEFUN([AC_LIBTOOL_SETUP], --[AC_PREREQ(2.13)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 --AC_REQUIRE([AC_OBJEXT])dnl --AC_REQUIRE([AC_EXEEXT])dnl --dnl -- --_LT_AC_PROG_ECHO_BACKSLASH --# 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_CHECK_TOOL(RANLIB, ranlib, :) --AC_CHECK_TOOL(STRIP, strip, :) -- --ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) --ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], --enable_win32_dll=yes, enable_win32_dll=no) -- --AC_ARG_ENABLE(libtool-lock, -- [ --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 --*-*-irix6*) -- # Find out which ABI we are using. -- echo '[#]line __oline__ "configure"' > conftest.$ac_ext -- if AC_TRY_EVAL(ac_compile); then -- 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 -- 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_SAVE -- AC_LANG_C -- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) -- AC_LANG_RESTORE]) -- 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 -- ;; -- --ifdef([AC_PROVIDE_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) -- -- # recent cygwin and mingw systems supply a stub DllMain which the user -- # can override, but on older systems we have to supply one -- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, -- [AC_TRY_LINK([], -- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); -- DllMain (0, 0, 0);], -- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) -- -- case $host/$CC in -- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) -- # old mingw systems require "-dll" to link a DLL, while more recent ones -- # require "-mdll" -- SAVE_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -mdll" -- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, -- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) -- CFLAGS="$SAVE_CFLAGS" ;; -- *-*-cygwin* | *-*-pw32*) -- # cygwin systems need to pass --dll to the linker, and not link -- # crt.o which will require a WinMain@16 definition. -- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; -- esac -- ;; -+dnl Determine the platform dependent parameters needed to use rpath: -+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -+dnl hardcode_direct, hardcode_minus_L. -+AC_DEFUN([AC_LIB_RPATH], -+[ -+ dnl Tell automake >= 1.10 to complain if config.rpath is missing. -+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) -+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS -+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld -+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host -+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir -+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ -+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ -+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh -+ . ./conftest.sh -+ rm -f ./conftest.sh -+ acl_cv_rpath=done - ]) --esac -- --_LT_AC_LTCONFIG_HACK -- -+ wl="$acl_cv_wl" -+ libext="$acl_cv_libext" -+ shlibext="$acl_cv_shlibext" -+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" -+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" -+ hardcode_direct="$acl_cv_hardcode_direct" -+ hardcode_minus_L="$acl_cv_hardcode_minus_L" -+ dnl Determine whether the user wants rpath handling at all. -+ AC_ARG_ENABLE(rpath, -+ [ --disable-rpath do not hardcode runtime library paths], -+ :, enable_rpath=yes) - ]) - --# AC_LIBTOOL_HEADER_ASSERT --# ------------------------ --AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], --[AC_CACHE_CHECK([whether $CC supports assert without backlinking], -- [lt_cv_func_assert_works], -- [case $host in -- *-*-solaris*) -- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then -- case `$CC --version 2>/dev/null` in -- [[12]].*) lt_cv_func_assert_works=no ;; -- *) lt_cv_func_assert_works=yes ;; -- esac -- fi -- ;; -- esac]) -- --if test "x$lt_cv_func_assert_works" = xyes; then -- AC_CHECK_HEADERS(assert.h) --fi --])# AC_LIBTOOL_HEADER_ASSERT -- --# _LT_AC_CHECK_DLFCN --# -------------------- --AC_DEFUN([_LT_AC_CHECK_DLFCN], --[AC_CHECK_HEADERS(dlfcn.h) --])# _LT_AC_CHECK_DLFCN -- --# 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]) --AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl -- --# 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 the above into a raw symbol and a C symbol. --symxfrm='\1 \2\3 \3' -- --# Transform an extracted symbol line into a proper C declaration --lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" -- --# Transform an extracted symbol line into symbol name and symbol address --lt_cv_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 -- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -- ;; --irix*) -- symcode='[[BCDEGRST]]' -- ;; --solaris* | sysv5*) -- symcode='[[BDT]]' -- ;; --sysv4) -- symcode='[[DFNSTU]]' -- ;; --esac -- --# Handle CRLF in mingw tool chain --opt_cr= --case $host_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. --if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then -- symcode='[[ABCDGISTW]]' --fi -- --# Try without a prefix undercore, then with it. --for ac_symprfx in "" "_"; do -- -- # 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" -+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -+AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -+[ -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_LIB_ARG_WITH([lib$1-prefix], -+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib -+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) - else -- rm -f "$nlist"T -- fi -- -- # Make sure that we snagged all the symbols we need. -- if egrep ' nm_test_var$' "$nlist" >/dev/null; then -- if egrep ' 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_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' -- -- cat <> conftest.$ac_ext --#if defined (__STDC__) && __STDC__ --# define lt_ptr void * --#else --# define lt_ptr char * --# define const --#endif -- --/* The mapping between symbol names and symbols. */ --const struct { -- const char *name; -- lt_ptr address; --} --lt_preloaded_symbols[[]] = --{ --EOF -- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext -- cat <<\EOF >> conftest.$ac_ext -- {0, (lt_ptr) 0} --}; -- --#ifdef __cplusplus --} --#endif --EOF -- # Now try linking the two files. -- mv conftest.$ac_objext conftstm.$ac_objext -- save_LIBS="$LIBS" -- save_CFLAGS="$CFLAGS" -- LIBS="conftstm.$ac_objext" -- CFLAGS="$CFLAGS$no_builtin_flag" -- if AC_TRY_EVAL(ac_link) && test -s conftest; then -- pipe_works=yes -- fi -- LIBS="$save_LIBS" -- CFLAGS="$save_CFLAGS" -- else -- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC -- fi -- else -- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC -- fi -- else -- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC -- fi -- else -- echo "$progname: failed program was:" >&AC_FD_CC -- 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 --]) --global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" --if test -z "$lt_cv_sys_global_symbol_pipe"; then -- global_symbol_to_cdecl= -- global_symbol_to_c_name_address= --else -- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" -- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" --fi --if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; --then -- AC_MSG_RESULT(failed) --else -- AC_MSG_RESULT(ok) --fi --]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -- --# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR --# --------------------------------- --AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], --[# Find the correct PATH separator. Usually this is `:', but --# DJGPP uses `;' like DOS. --if test "X${PATH_SEPARATOR+set}" != Xset; then -- UNAME=${UNAME-`uname 2>/dev/null`} -- case X$UNAME in -- *-DOS) lt_cv_sys_path_separator=';' ;; -- *) lt_cv_sys_path_separator=':' ;; -- esac -- PATH_SEPARATOR=$lt_cv_sys_path_separator --fi --])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR -- --# _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], --[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], -- [AC_DIVERT_PUSH(NOTICE)]) --_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR -- --# 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 && -- 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. -- -- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- 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="$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) --AC_DIVERT_POP --])# _LT_AC_PROG_ECHO_BACKSLASH -- --# _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], --[if test "$cross_compiling" = yes; then : -- [$4] --else -- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -- 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); */ -- } -- -- exit (status); --}] --EOF -- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) 2>/dev/null -- lt_status=$? -- case x$lt_status in -- x$lt_dlno_uscore) $1 ;; -- x$lt_dlneed_uscore) $2 ;; -- x$lt_unknown|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], --[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 -- ;; -- -- cygwin* | mingw* | pw32*) -- lt_cv_dlopen="LoadLibrary" -- lt_cv_dlopen_libs= -- ;; -- -- *) -- 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" -- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -- -- save_LDFLAGS="$LDFLAGS" -- 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 -- LDFLAGS="$LDFLAGS $link_static_flag" -- 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_DEFUN([_LT_AC_LTCONFIG_HACK], --[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --Xsed='sed -e s/^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' -- --# Constants: --rm="rm -f" -- --# Global variables: --default_ofile=libtool --can_build_shared=yes -- --# All known linkers require a `.a' archive for static linking (except M$VC, --# which needs '.lib'). --libext=a --ltmain="$ac_aux_dir/ltmain.sh" --ofile="$default_ofile" --with_gnu_ld="$lt_cv_prog_gnu_ld" --need_locks="$enable_libtool_lock" -- --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 "$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 "$OBJDUMP" && OBJDUMP=objdump --test -z "$RANLIB" && RANLIB=: --test -z "$STRIP" && STRIP=: --test -z "$ac_objext" && ac_objext=o -- --if test x"$host" != x"$build"; then -- ac_tool_prefix=${host_alias}- --else -- ac_tool_prefix= --fi -- --# Transform linux* to *-*-linux-gnu*, to support old configure scripts. --case $host_os in --linux-gnu*) ;; --linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` --esac -- --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 -- --# 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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -- ;; -- *) -- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -- ;; -- esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" --fi -- --# Allow CC to be a program name with arguments. --set dummy $CC --compiler="[$]2" -- --AC_MSG_CHECKING([for objdir]) --rm -f .libs 2>/dev/null --mkdir .libs 2>/dev/null --if test -d .libs; then -- objdir=.libs --else -- # MS-DOS does not allow filenames that begin with a dot. -- objdir=_libs --fi --rmdir .libs 2>/dev/null --AC_MSG_RESULT($objdir) -- -- --AC_ARG_WITH(pic, --[ --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 -- --# We assume here that the value for lt_cv_prog_cc_pic will not be cached --# in isolation, and that seeing it set (from the cache) indicates that --# the associated values are set (in the cache) correctly too. --AC_MSG_CHECKING([for $compiler option to produce PIC]) --AC_CACHE_VAL(lt_cv_prog_cc_pic, --[ lt_cv_prog_cc_pic= -- lt_cv_prog_cc_shlib= -- lt_cv_prog_cc_wl= -- lt_cv_prog_cc_static= -- lt_cv_prog_cc_no_builtin= -- lt_cv_prog_cc_can_build_shared=$can_build_shared -- -- if test "$GCC" = yes; then -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-static' -- -- case $host_os in -- aix*) -- # Below there is a dirty hack to force normal static linking with -ldl -- # The problem is because libdl dynamically linked with both libc and -- # libC (AIX C++ library), which obviously doesn't included in libraries -- # list by gcc. This cause undefined symbols with -static flags. -- # This hack allows C programs to be linked with "-static -ldl", but -- # not sure about C++ programs. -- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" -- ;; -- 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' -- ;; -- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) -- # PIC is the default for these OSes. -- ;; -- darwin* | rhapsody*) -- # PIC is the default on this platform -- # Common symbols not allowed in MH_DYLIB files -- lt_cv_prog_cc_pic='-fno-common' -- ;; -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- sysv4*MP*) -- if test -d /usr/nec; then -- lt_cv_prog_cc_pic=-Kconform_pic -- fi -- ;; -- *) -- lt_cv_prog_cc_pic='-fPIC' -- ;; -- esac -- else -- # PORTME Check for PIC flags for the system compiler. -- case $host_os in -- aix3* | aix4* | aix5*) -- lt_cv_prog_cc_wl='-Wl,' -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- lt_cv_prog_cc_static='-Bstatic' -- else -- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' -- fi -- ;; -- -- hpux9* | hpux10* | hpux11*) -- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" -- lt_cv_prog_cc_pic='+Z' -- ;; -- -- irix5* | irix6*) -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- # PIC (with -KPIC) is the default. -- ;; -- -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- -- newsos6) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- osf3* | osf4* | osf5*) -- # All OSF/1 code is PIC. -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- ;; -- -- sco3.2v5*) -- lt_cv_prog_cc_pic='-Kpic' -- lt_cv_prog_cc_static='-dn' -- lt_cv_prog_cc_shlib='-belf' -- ;; -- -- solaris*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Wl,' -- ;; -- -- sunos4*) -- lt_cv_prog_cc_pic='-PIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Qoption ld ' -- ;; -- -- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- if test "x$host_vendor" = xsni; then -- lt_cv_prog_cc_wl='-LD' -- else -- lt_cv_prog_cc_wl='-Wl,' -- fi -- ;; -- -- uts4*) -- lt_cv_prog_cc_pic='-pic' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec ;then -- lt_cv_prog_cc_pic='-Kconform_pic' -- lt_cv_prog_cc_static='-Bstatic' -- fi -- ;; -- -- *) -- lt_cv_prog_cc_can_build_shared=no -- ;; -- esac -- fi --]) --if test -z "$lt_cv_prog_cc_pic"; then -- AC_MSG_RESULT([none]) --else -- AC_MSG_RESULT([$lt_cv_prog_cc_pic]) -- -- # Check to make sure the pic_flag actually works. -- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) -- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" -- AC_TRY_COMPILE([], [], [dnl -- case $host_os in -- hpux9* | hpux10* | hpux11*) -- # On HP-UX, both CC and GCC only warn that PIC is supported... then -- # they create non-PIC objects. So, if there were any warnings, we -- # assume that PIC is not supported. -- if test -s conftest.err; then -- lt_cv_prog_cc_pic_works=no -- else -- lt_cv_prog_cc_pic_works=yes -- fi -- ;; -- *) -- lt_cv_prog_cc_pic_works=yes -- ;; -- esac -- ], [dnl -- lt_cv_prog_cc_pic_works=no -- ]) -- CFLAGS="$save_CFLAGS" -- ]) -- -- if test "X$lt_cv_prog_cc_pic_works" = Xno; then -- lt_cv_prog_cc_pic= -- lt_cv_prog_cc_can_build_shared=no -- else -- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" -- fi -- -- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) --fi -- --# Check for any special shared library compilation flags. --if test -n "$lt_cv_prog_cc_shlib"; then -- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) -- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : -- else -- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) -- lt_cv_prog_cc_can_build_shared=no -- fi --fi -- --AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) --AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl -- lt_cv_prog_cc_static_works=no -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" -- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) -- LDFLAGS="$save_LDFLAGS" --]) -- --# Belt *and* braces to stop my trousers falling down: --test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= --AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) -- --pic_flag="$lt_cv_prog_cc_pic" --special_shlib_compile_flags="$lt_cv_prog_cc_shlib" --wl="$lt_cv_prog_cc_wl" --link_static_flag="$lt_cv_prog_cc_static" --no_builtin_flag="$lt_cv_prog_cc_no_builtin" --can_build_shared="$lt_cv_prog_cc_can_build_shared" -- -- --# Check to see if options -o and -c are simultaneously supported by compiler --AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) --AC_CACHE_VAL([lt_cv_compiler_c_o], [ --$rm -r conftest 2>/dev/null --mkdir conftest --cd conftest --echo "int some_variable = 0;" > conftest.$ac_ext --mkdir out --# According to Tom Tromey, Ian Lance Taylor reported there are C compilers --# that will create temporary files in the current directory regardless of --# the output directory. Thus, making CWD read-only will cause this test --# to fail, enabling locking or at least warning the user not to do parallel --# builds. --chmod -w . --save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" --compiler_c_o=no --if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 -- if test -s out/conftest.err; then -- lt_cv_compiler_c_o=no -- else -- lt_cv_compiler_c_o=yes -- fi --else -- # Append any errors to the config.log. -- cat out/conftest.err 1>&AC_FD_CC -- lt_cv_compiler_c_o=no --fi --CFLAGS="$save_CFLAGS" --chmod u+w . --$rm conftest* out/* --rmdir out --cd .. --rmdir conftest --$rm -r conftest 2>/dev/null --]) --compiler_c_o=$lt_cv_compiler_c_o --AC_MSG_RESULT([$compiler_c_o]) -- --if test x"$compiler_c_o" = x"yes"; then -- # Check to see if we can write to a .lo -- AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) -- AC_CACHE_VAL([lt_cv_compiler_o_lo], [ -- lt_cv_compiler_o_lo=no -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -c -o conftest.lo" -- save_objext="$ac_objext" -- ac_objext=lo -- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- lt_cv_compiler_o_lo=no -- else -- lt_cv_compiler_o_lo=yes -- fi -- ]) -- ac_objext="$save_objext" -- CFLAGS="$save_CFLAGS" -- ]) -- compiler_o_lo=$lt_cv_compiler_o_lo -- AC_MSG_RESULT([$compiler_o_lo]) --else -- compiler_o_lo=no --fi -- --# Check to see if we can do hard links to lock some files if needed --hard_links="nottested" --if test "$compiler_c_o" = 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 -- --if test "$GCC" = yes; then -- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler -- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) -- echo "int some_variable = 0;" > conftest.$ac_ext -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" -- compiler_rtti_exceptions=no -- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- compiler_rtti_exceptions=no -- else -- compiler_rtti_exceptions=yes -- fi -- ]) -- CFLAGS="$save_CFLAGS" -- AC_MSG_RESULT([$compiler_rtti_exceptions]) -- -- if test "$compiler_rtti_exceptions" = "yes"; then -- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' -- else -- no_builtin_flag=' -fno-builtin' -- fi --fi -- --# See if the linker supports building shared libraries. --AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) -- --allow_undefined_flag= --no_undefined_flag= --need_lib_prefix=unknown --need_version=unknown --# when you set need_version to no, make sure it does not cause -set_version --# flags to be left without arguments --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_into_libs=no --hardcode_libdir_flag_spec= --hardcode_libdir_separator= --hardcode_direct=no --hardcode_minus_L=no --hardcode_shlibpath_var=unsupported --runpath_var= --link_all_deplibs=unknown --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 egrep regular expression 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= -- --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 -- ;; --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}' -- -- # See if GNU ld supports shared libraries. -- case $host_os in -- aix3* | aix4* | aix5*) -- # On AIX, the GNU linker is very broken -- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. -- 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 -- ;; -- -- 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 use -- # them. -- ld_shlibs=no -- ;; -- -- beos*) -- if $LD --help 2>&1 | egrep ': 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*) -- # 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=yes -- -- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ -- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ -- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ -- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ -- else $CC -o impgen impgen.c ; fi)~ -- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' -- -- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' -- -- # cygwin and mingw dlls have different entry points and sets of symbols -- # to exclude. -- # FIXME: what about values for MSVC? -- dll_entry=__cygwin_dll_entry@12 -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ -- case $host_os in -- mingw*) -- # mingw values -- dll_entry=_DllMainCRTStartup@12 -- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ -- ;; -- esac -- -- # mingw and cygwin differ, and it's simplest to just exclude the union -- # of the two symbol sets. -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 -- -- # recent cygwin and mingw systems supply a stub DllMain which the user -- # can override, but on older systems we have to supply one (in ltdll.c) -- if test "x$lt_cv_need_dllmain" = "xyes"; then -- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " -- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ -- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' -- else -- ltdll_obj= -- ltdll_cmds= -- fi -- -- # Extract the symbol export list from an `--export-all' def file, -- # then regenerate the def file from the symbol export list, so that -- # the compiled dll only exports the symbol export list. -- # Be careful not to strip the DATA tag left be newer dlltools. -- export_symbols_cmds="$ltdll_cmds"' -- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ -- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' -- -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is. -- # If DATA tags from a recent dlltool are present, honour them! -- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname-def; -- else -- echo EXPORTS > $output_objdir/$soname-def; -- _lt_hint=1; -- cat $export_symbols | while read symbol; do -- set dummy \$symbol; -- case \[$]# in -- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; -- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; -- esac; -- _lt_hint=`expr 1 + \$_lt_hint`; -- done; -- fi~ -- '"$ltdll_cmds"' -- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ -- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ -- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' -- ;; -- -- 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 -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -- fi -- ;; -- -- solaris* | sysv5*) -- if $LD -v 2>&1 | egrep '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 | egrep ': 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 -- ;; -- -- 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 | egrep ': 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" = yes; then -- runpath_var=LD_RUN_PATH -- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' -- export_dynamic_flag_spec='${wl}--export-dynamic' -- case $host_os in -- cygwin* | mingw* | pw32*) -- # dlltool doesn't understand --whole-archive et. al. -- whole_archive_flag_spec= -- ;; -- *) -- # ancient GNU ld didn't support --whole-archive et. al. -- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then -- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- whole_archive_flag_spec= -- fi -- ;; -- esac -- 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 "$link_static_flag"; 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 -- 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. -- -- hardcode_direct=yes -- archive_cmds='' -- hardcode_libdir_separator=':' -- if test "$GCC" = yes; then -- case $host_os in aix4.[[012]]|aix4.[[012]].*) -- 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' -- else -- # not using gcc -- if test "$host_cpu" = ia64; then -- shared_flag='${wl}-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 can do strange things, 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' -- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' -- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" -- else -- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' -- # Warning - without using the other run time loading flags, -- # -berok will link without error, but may produce a broken library. -- allow_undefined_flag='${wl}-berok' -- # This is a bit strange, but is similar to how AIX traditionally builds -- # it's shared libraries. -- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $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 -- ;; -- -- 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 -- # 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"`' -- ;; -- -- darwin* | rhapsody*) -- case "$host_os" in -- rhapsody* | darwin1.[[012]]) -- allow_undefined_flag='-undefined suppress' -- ;; -- *) # Darwin 1.3 on -- allow_undefined_flag='-flat_namespace -undefined suppress' -- ;; -- esac -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' -- # We need to add '_' to the symbols in $export_symbols first -- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- whole_archive_flag_spec='-all_load $convenience' -- ;; -- -- 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*) -- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- ;; -- -- hpux9* | hpux10* | hpux11*) -- case $host_os in -- hpux9*) 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' ;; -- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; -- esac -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_separator=: -- hardcode_direct=yes -- hardcode_minus_L=yes # Not in the search PATH, but as the default -- # location of the library. -- export_dynamic_flag_spec='${wl}-E' -- ;; -- -- irix5* | irix6*) -- 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' -- 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 $linker_flags' -- 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 $linker_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 "-exported_symbol " >> $lib.exp; echo "\$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 ${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=: -- ;; -- -- sco3.2v5*) -- 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 -- export_dynamic_flag_spec='${wl}-Bexport' -- ;; -- -- solaris*) -- # gcc --version < 3.0 without binutils cannot create self contained -- # shared libraries reliably, requiring libgcc.a to resolve some of -- # the object symbols generated in some cases. Libraries that use -- # assert need libgcc.a to resolve __eprintf, for example. Linking -- # a copy of libgcc.a into every shared library to guarantee resolving -- # such symbols causes other problems: According to Tim Van Holder -- # , C++ libraries end up with a separate -- # (to the application) exception stack for one thing. -- no_undefined_flag=' -z defs' -- if test "$GCC" = yes; then -- case `$CC --version 2>/dev/null` in -- [[12]].*) -- cat <&2 -- --*** Warning: Releases of GCC earlier than version 3.0 cannot reliably --*** create self contained shared libraries on Solaris systems, without --*** introducing a dependency on libgcc.a. Therefore, libtool is disabling --*** -no-undefined support, which will at least allow you to build shared --*** libraries. However, you may find that when you link such libraries --*** into an application without using GCC, you have to manually add --*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to --*** upgrade to a newer version of GCC. Another option is to rebuild your --*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. -- --EOF -- no_undefined_flag= -- ;; -- esac -- fi -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_shlibpath_var=no -- case $host_os in -- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -- *) # Supported since Solaris 2.6 (maybe 2.5.1?) -- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; -- 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) -- if test "x$host_vendor" = xsno; then -- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes # is this really true??? -- else -- 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 -- fi -- 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' -- ;; -- -- sysv5*) -- no_undefined_flag=' -z text' -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec= -- hardcode_shlibpath_var=no -- runpath_var='LD_RUN_PATH' -- ;; -- -- uts4*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -- -- dgux*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -- -- 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.2uw2*) -- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes -- hardcode_minus_L=no -- hardcode_shlibpath_var=no -- hardcode_runpath_var=yes -- runpath_var=LD_RUN_PATH -- ;; -- -- sysv5uw7* | unixware7*) -- no_undefined_flag='${wl}-z ${wl}text' -- if test "$GCC" = yes; then -- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- else -- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -- fi -- runpath_var='LD_RUN_PATH' -- hardcode_shlibpath_var=no -- ;; -- -- *) -- ld_shlibs=no -- ;; -- esac --fi --AC_MSG_RESULT([$ld_shlibs]) --test "$ld_shlibs" = no && can_build_shared=no -- --# Check hardcoding attributes. --AC_MSG_CHECKING([how to hardcode library paths into programs]) --hardcode_action= --if test -n "$hardcode_libdir_flag_spec" || \ -- test -n "$runpath_var"; 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 "$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 --AC_MSG_RESULT([$hardcode_action]) -- --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 -- AC_MSG_RESULT([no]) --fi -- --reload_cmds='$LD$reload_flag -o $output$reload_objs' --test -z "$deplibs_check_method" && deplibs_check_method=unknown -- --# PORTME Fill in your ld.so characteristics --AC_MSG_CHECKING([dynamic linker characteristics]) --library_names_spec= --libname_spec='lib$name' --soname_spec= --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" --sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -- --case $host_os in --aix3*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix $libname.a' -- shlibpath_var=LIBPATH -- -- # AIX has no versioning support, so we append a major version to the name. -- soname_spec='${libname}${release}.so$major' -- ;; -- --aix4* | aix5*) -- version_type=linux -- if test "$host_cpu" = ia64; then -- # AIX 5 supports IA64 -- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' -- 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}.so$versuffix ${libname}${release}.so$major $libname.so' -- 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}.so$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}.so' -- dynamic_linker="$host_os ld.so" -- shlibpath_var=LIBRARY_PATH -- ;; -- --bsdi4*) -- version_type=linux -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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" -- export_dynamic_flag_spec=-rdynamic -- # 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 -- need_version=no -- need_lib_prefix=no -- case $GCC,$host_os in -- yes,cygwin*) -- library_names_spec='$libname.dll.a' -- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' -- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ -- dldir=$destdir/`dirname \$dlpath`~ -- test -d \$dldir || mkdir -p \$dldir~ -- $install_prog .libs/$dlname \$dldir/$dlname' -- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ -- dlpath=$dir/\$dldll~ -- $rm \$dlpath' -- ;; -- yes,mingw*) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' -- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` -- ;; -- yes,pw32*) -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' -- ;; -- *) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $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 -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' -- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' -- shlibpath_overrides_runpath=yes -- shlibpath_var=DYLD_LIBRARY_PATH -- ;; -- --freebsd1*) -- dynamic_linker=no -- ;; -- --freebsd*) -- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` -- version_type=freebsd-$objformat -- case $version_type in -- freebsd-elf*) -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- need_version=no -- need_lib_prefix=no -- ;; -- freebsd-*) -- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' -- need_version=yes -- ;; -- esac -- shlibpath_var=LD_LIBRARY_PATH -- case $host_os in -- freebsd2*) -- shlibpath_overrides_runpath=yes -- ;; -- *) -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- esac -- ;; -- --gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' -- soname_spec='${libname}${release}.so$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. -- dynamic_linker="$host_os dld.sl" -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' -- soname_spec='${libname}${release}.sl$major' -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -- --irix5* | irix6*) -- version_type=irix -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' -- case $host_os in -- irix5*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 ") 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}" -- ;; -- --# No shared lib support for Linux oldld, aout, or coff. --linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) -- dynamic_linker=no -- ;; -- --# This must be Linux ELF. --linux-gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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 -- -- # 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' -- ;; -- --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}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- dynamic_linker='NetBSD (a.out) ld.so' -- else -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' -- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- ;; -- --openbsd*) -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- 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 -- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --os2*) -- libname_spec='$name' -- need_lib_prefix=no -- library_names_spec='$libname.dll $libname.a' -- dynamic_linker='OS/2 ld.exe' -- shlibpath_var=LIBPATH -- ;; -- --osf3* | osf4* | osf5*) -- version_type=osf -- need_version=no -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- 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" -- ;; -- --sco3.2v5*) -- version_type=osf -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --solaris*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- case $host_vendor in -- sni) -- shlibpath_overrides_runpath=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 -- ;; -- --uts4*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --dgux*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --sysv4*MP*) -- if test -d /usr/nec ;then -- version_type=linux -- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' -- soname_spec='$libname.so.$major' -- shlibpath_var=LD_LIBRARY_PATH -- fi -- ;; -- --*) -- dynamic_linker=no -- ;; --esac --AC_MSG_RESULT([$dynamic_linker]) --test "$dynamic_linker" = no && can_build_shared=no -- --# Report the final consequences. --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*) -- 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]) -- --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 -- --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_DLOPEN_SELF -- --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. -- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) -- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], -- [$rm conftest* -- echo 'static int dummy;' > conftest.$ac_ext -- -- if AC_TRY_EVAL(ac_compile); then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$lt_cv_prog_cc_wl -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- save_allow_undefined_flag=$allow_undefined_flag -- allow_undefined_flag= -- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) -- then -- lt_cv_archive_cmds_need_lc=no -- else -- lt_cv_archive_cmds_need_lc=yes -- fi -- allow_undefined_flag=$save_allow_undefined_flag -- else -- cat conftest.err 1>&5 -- fi]) -- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) -- ;; -- esac --fi --need_lc=${lt_cv_archive_cmds_need_lc-yes} -- --# The second 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 -- : --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. -- test -f Makefile && make "$ltmain" --fi -- --if test -f "$ltmain"; then -- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 -- $rm -f "${ofile}T" -- -- echo creating $ofile -- -- # 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 CC LD LN_S NM SHELL \ -- reload_flag reload_cmds wl \ -- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ -- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ -- library_names_spec soname_spec \ -- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ -- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ -- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ -- old_striplib striplib file_magic_cmd export_symbols_cmds \ -- deplibs_check_method allow_undefined_flag no_undefined_flag \ -- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ -- global_symbol_to_c_name_address \ -- hardcode_libdir_flag_spec hardcode_libdir_separator \ -- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do -- -- case $var in -- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ -- old_postinstall_cmds | old_postuninstall_cmds | \ -- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ -- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ -- postinstall_cmds | postuninstall_cmds | \ -- finish_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 -- -- cat <<__EOF__ > "${ofile}T" --#! $SHELL -- --# `$echo "$ofile" | 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-2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. -- --# Sed that helps us avoid accidentally triggering echo(1) options like -n. --Xsed="sed -e s/^X//" -- --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi -- --# ### 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=$need_lc -- --# Whether or not to optimize for fast installation. --fast_install=$enable_fast_install -- --# The host system. --host_alias=$host_alias --host=$host -- --# An echo program that does not interpret backslashes. --echo=$lt_echo -- --# The archiver. --AR=$lt_AR --AR_FLAGS=$lt_AR_FLAGS -- --# The default C compiler. --CC=$lt_CC -- --# Is the compiler the GNU C compiler? --with_gcc=$GCC -- --# 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=$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_wl -- --# Object file suffix (normally "o"). --objext="$ac_objext" -- --# Old archive suffix (normally "a"). --libext="$libext" -- --# Executable file suffix (normally ""). --exeext="$exeext" -- --# Additional compiler flags for building library objects. --pic_flag=$lt_pic_flag --pic_mode=$pic_mode -- --# Does compiler simultaneously support -c and -o options? --compiler_c_o=$lt_compiler_c_o -- --# Can we write directly to a .lo ? --compiler_o_lo=$lt_compiler_o_lo -- --# 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_link_static_flag -- --# Compiler flag to turn off builtin functions. --no_builtin_flag=$lt_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 to strip libraries. --old_striplib=$lt_old_striplib --striplib=$lt_striplib -- --# 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_global_symbol_pipe -- --# Transform the output of nm in a proper C declaration --global_symbol_to_cdecl=$lt_global_symbol_to_cdecl -- --# Transform the output of nm in a C name address pair --global_symbol_to_c_name_address=$lt_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 -- --# 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.so 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 -- --# 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=$lt_sys_lib_search_path_spec -- --# 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 >> "${ofile}T" -- --# 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 -- -- case $host_os in -- cygwin* | mingw* | pw32* | os2*) -- cat <<'EOF' >> "${ofile}T" -- # This is a source program that is used to create dlls on Windows -- # Don't remove nor modify the starting and closing comments --# /* 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 */ -- # This is a source program that is used to create import libraries -- # on Windows for dlls which lack them. Don't remove nor modify the -- # starting and closing comments --# /* impgen.c starts here */ --# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. --# --# This file is part of GNU libtool. --# --# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --# */ --# --# #include /* for printf() */ --# #include /* for open(), lseek(), read() */ --# #include /* for O_RDONLY, O_BINARY */ --# #include /* for strdup() */ --# --# /* O_BINARY isn't required (or even defined sometimes) under Unix */ --# #ifndef O_BINARY --# #define O_BINARY 0 --# #endif --# --# static unsigned int --# pe_get16 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[2]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 2); --# return b[0] + (b[1]<<8); --# } --# --# static unsigned int --# pe_get32 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[4]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 4); --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# static unsigned int --# pe_as32 (ptr) --# void *ptr; --# { --# unsigned char *b = ptr; --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# int --# main (argc, argv) --# int argc; --# char *argv[]; --# { --# int dll; --# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; --# unsigned long export_rva, export_size, nsections, secptr, expptr; --# unsigned long name_rvas, nexp; --# unsigned char *expdata, *erva; --# char *filename, *dll_name; --# --# filename = argv[1]; --# --# dll = open(filename, O_RDONLY|O_BINARY); --# if (dll < 1) --# return 1; --# --# dll_name = filename; --# --# for (i=0; filename[i]; i++) --# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') --# dll_name = filename + i +1; --# --# pe_header_offset = pe_get32 (dll, 0x3c); --# opthdr_ofs = pe_header_offset + 4 + 20; --# num_entries = pe_get32 (dll, opthdr_ofs + 92); --# --# if (num_entries < 1) /* no exports */ --# return 1; --# --# export_rva = pe_get32 (dll, opthdr_ofs + 96); --# export_size = pe_get32 (dll, opthdr_ofs + 100); --# nsections = pe_get16 (dll, pe_header_offset + 4 +2); --# secptr = (pe_header_offset + 4 + 20 + --# pe_get16 (dll, pe_header_offset + 4 + 16)); --# --# expptr = 0; --# for (i = 0; i < nsections; i++) --# { --# char sname[8]; --# unsigned long secptr1 = secptr + 40 * i; --# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); --# unsigned long vsize = pe_get32 (dll, secptr1 + 16); --# unsigned long fptr = pe_get32 (dll, secptr1 + 20); --# lseek(dll, secptr1, SEEK_SET); --# read(dll, sname, 8); --# if (vaddr <= export_rva && vaddr+vsize > export_rva) --# { --# expptr = fptr + (export_rva - vaddr); --# if (export_rva + export_size > vaddr + vsize) --# export_size = vsize - (export_rva - vaddr); --# break; --# } --# } --# --# expdata = (unsigned char*)malloc(export_size); --# lseek (dll, expptr, SEEK_SET); --# read (dll, expdata, export_size); --# erva = expdata - export_rva; --# --# nexp = pe_as32 (expdata+24); --# name_rvas = pe_as32 (expdata+32); --# --# printf ("EXPORTS\n"); --# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) -- -- mv -f "${ofile}T" "$ofile" || \ -- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") -- chmod +x "$ofile" --fi -- --])# _LT_AC_LTCONFIG_HACK -- --# AC_LIBTOOL_DLOPEN - enable checks for dlopen support --AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) -- --# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's --AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) -- --# AC_ENABLE_SHARED - implement the --enable-shared flag --# Usage: AC_ENABLE_SHARED[(DEFAULT)] --# Where 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, --changequote(<<, >>)dnl --<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], --changequote([, ])dnl --[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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_shared=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac], --enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl --]) -- --# 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_ENABLE_STATIC - implement the --enable-static flag --# Usage: AC_ENABLE_STATIC[(DEFAULT)] --# Where 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, --changequote(<<, >>)dnl --<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], --changequote([, ])dnl --[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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_static=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac], --enable_static=AC_ENABLE_STATIC_DEFAULT)dnl --]) -- --# 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_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag --# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] --# Where 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, --changequote(<<, >>)dnl --<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], --changequote([, ])dnl --[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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_fast_install=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac], --enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl --]) -- --# 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_LIBTOOL_PICMODE - implement the --with-pic flag --# Usage: AC_LIBTOOL_PICMODE[(MODE)] --# Where 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_PATH_TOOL_PREFIX - find a file program which can recognise shared library --AC_DEFUN([AC_PATH_TOOL_PREFIX], --[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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. -- ;; -- *) -- ac_save_MAGIC_CMD="$MAGIC_CMD" -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" --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 -- 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="$ac_save_ifs" -- MAGIC_CMD="$ac_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_MAGIC - find a file program which can recognise a shared library --AC_DEFUN([AC_PATH_MAGIC], --[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl --AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$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) -- else -- MAGIC_CMD=: -- fi --fi --]) -- -- --# AC_PROG_LD - find the path to the GNU or non-GNU linker --AC_DEFUN([AC_PROG_LD], --[AC_ARG_WITH(gnu-ld, --[ --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([AC_PROG_CC])dnl --AC_REQUIRE([AC_CANONICAL_HOST])dnl --AC_REQUIRE([AC_CANONICAL_BUILD])dnl --AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])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 GCC]) -- 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. -- [[\\/]]* | [[A-Za-z]]:[[\\/]]*) -- re_direlt='/[[^/]][[^/]]*/\.\./' -- # Canonicalize the path 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 -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for ac_dir in $PATH; do -- 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 GNU ld's only accept -v. -- # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -- test "$with_gnu_ld" != no && break -- else -- test "$with_gnu_ld" != yes && break -- fi -- fi -- done -- IFS="$ac_save_ifs" --else -- lt_cv_path_LD="$LD" # Let the user override the test with a path. --fi]) --LD="$lt_cv_path_LD" --if test -n "$LD"; then -- AC_MSG_RESULT($LD) --else -- AC_MSG_RESULT(no) --fi --test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) --AC_PROG_LD_GNU --]) -- --# AC_PROG_LD_GNU - --AC_DEFUN([AC_PROG_LD_GNU], --[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, --[# I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -- lt_cv_prog_gnu_ld=yes --else -- lt_cv_prog_gnu_ld=no --fi]) --with_gnu_ld=$lt_cv_prog_gnu_ld --]) -- --# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker --# -- PORTME Some linkers may need a different reload flag. --AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], --[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, --[lt_cv_ld_reload_flag='-r']) --reload_flag=$lt_cv_ld_reload_flag --test -n "$reload_flag" && reload_flag=" $reload_flag" --]) -- --# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies --# -- PORTME fill in with the dynamic library characteristics --AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], --[AC_CACHE_CHECK([how to recognise dependant libraries], --lt_cv_deplibs_check_method, --[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 egrep 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 -- ;; -- --bsdi4*) -- 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* | mingw* | pw32*) -- 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='file_magic Mach-O dynamically linked shared library' -- lt_cv_file_magic_cmd='/usr/bin/file -L' -- case "$host_os" in -- rhapsody* | darwin1.[[012]]) -- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` -- ;; -- *) # Darwin 1.3 on -- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' -- ;; -- esac -- ;; -- --freebsd*) -- 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)/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_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- --irix5* | irix6*) -- case $host_os in -- irix5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" -- ;; -- *) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" -- ;; -- esac -- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` -- lt_cv_deplibs_check_method=pass_all -- ;; -- --# This must be Linux ELF. --linux-gnu*) -- case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) -- lt_cv_deplibs_check_method=pass_all ;; -- *) -- # glibc up to 2.1.1 does not perform some relocations on ARM -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; -- esac -- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` -- ;; -- --netbsd*) -- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then -- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' -- else -- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' -- 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 -- ;; -- --openbsd*) -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` -- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' -- else -- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' -- fi -- ;; -- --osf3* | osf4* | osf5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' -- lt_cv_file_magic_test_file=/shlib/libc.so -- lt_cv_deplibs_check_method=pass_all -- ;; -- --sco3.2v5*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --solaris*) -- lt_cv_deplibs_check_method=pass_all -- lt_cv_file_magic_test_file=/lib/libc.so -- ;; -- --sysv5uw[[78]]* | sysv4*uw2*) -- lt_cv_deplibs_check_method=pass_all -- ;; -- --sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- 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 -- ;; -- esac -- ;; --esac --]) --file_magic_cmd=$lt_cv_file_magic_cmd --deplibs_check_method=$lt_cv_deplibs_check_method --]) -- -- --# AC_PROG_NM - find the path to a BSD-compatible name lister --AC_DEFUN([AC_PROG_NM], --[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl --AC_MSG_CHECKING([for BSD-compatible nm]) --AC_CACHE_VAL(lt_cv_path_NM, --[if test -n "$NM"; then -- # Let the user override the test. -- lt_cv_path_NM="$NM" --else -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do -- test -z "$ac_dir" && ac_dir=. -- tmp_nm=$ac_dir/${ac_tool_prefix}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 -- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then -- lt_cv_path_NM="$tmp_nm -B" -- break -- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- lt_cv_path_NM="$tmp_nm -p" -- break -- else -- 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 -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm --fi]) --NM="$lt_cv_path_NM" --AC_MSG_RESULT([$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*) -- # These system don't have libm -- ;; --*-ncr-sysv4.3*) -- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") -- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") -- ;; --*) -- AC_CHECK_LIB(m, main, LIBM="-lm") -- ;; --esac --]) -- --# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for --# the libltdl convenience library and INCLTDL to the include flags for --# the libltdl header and adds --enable-ltdl-convenience to the --# configure arguments. Note that LIBLTDL and INCLTDL are not --# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not --# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed --# with '${top_builddir}/' and INCLTDL 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 -- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) --]) -- --# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for --# the libltdl installable library and INCLTDL to the include flags for --# the libltdl header and adds --enable-ltdl-install to the configure --# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is --# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed --# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will --# be prefixed with '${top_builddir}/' and INCLTDL 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. --# 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, main, -- [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 -- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) -- else -- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" -- LIBLTDL="-lltdl" -- INCLTDL= -- fi --]) -- --# 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]) -- --# gettext.m4 serial 16 (gettext-0.11.4) --dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. --dnl --dnl This file can can be used in projects which are not available under --dnl the GNU General Public License or the GNU Library General Public --dnl License but which still want to provide support for the GNU gettext --dnl functionality. --dnl Please note that the actual code of the GNU gettext library is covered --dnl by the GNU Library General Public License, and the rest of the GNU --dnl gettext package package is covered by the GNU General Public License. --dnl They are *not* in the public domain. -- --dnl Authors: --dnl Ulrich Drepper , 1995-2000. --dnl Bruno Haible , 2000-2002. -- --dnl Macro to add for using GNU gettext. -- --dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). --dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The --dnl default (if it is not specified or empty) is 'no-libtool'. --dnl INTLSYMBOL should be 'external' for packages with no intl directory, --dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. --dnl If INTLSYMBOL is 'use-libtool', then a libtool library --dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, --dnl depending on --{enable,disable}-{shared,static} and on the presence of --dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library --dnl $(top_builddir)/intl/libintl.a will be created. --dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext --dnl implementations (in libc or libintl) without the ngettext() function --dnl will be ignored. If NEEDSYMBOL is specified and is --dnl 'need-formatstring-macros', then GNU gettext implementations that don't --dnl support the ISO C 99 formatstring macros will be ignored. --dnl INTLDIR is used to find the intl libraries. If empty, --dnl the value `$(top_builddir)/intl/' is used. --dnl --dnl The result of the configuration is one of three cases: --dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled --dnl and used. --dnl Catalog format: GNU --> install in $(datadir) --dnl Catalog extension: .mo after installation, .gmo in source tree --dnl 2) GNU gettext has been found in the system's C library. --dnl Catalog format: GNU --> install in $(datadir) --dnl Catalog extension: .mo after installation, .gmo in source tree --dnl 3) No internationalization, always use English msgid. --dnl Catalog format: none --dnl Catalog extension: none --dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. --dnl The use of .gmo is historical (it was needed to avoid overwriting the --dnl GNU format catalogs when building on a platform with an X/Open gettext), --dnl but we keep it in order not to force irrelevant filename changes on the --dnl maintainers. --dnl --AC_DEFUN([AM_GNU_GETTEXT], --[ -- dnl Argument checking. -- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , -- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT --])])])])]) -- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , -- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT --])])])]) -- define(gt_included_intl, ifelse([$1], [external], [no], [yes])) -- define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) -- -- AC_REQUIRE([AM_PO_SUBDIRS])dnl -- ifelse(gt_included_intl, yes, [ -- AC_REQUIRE([AM_INTL_SUBDIR])dnl -- ]) -- -- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) -- -- dnl Sometimes libintl requires libiconv, so first search for libiconv. -- dnl Ideally we would do this search only after the -- dnl if test "$USE_NLS" = "yes"; then -- dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then -- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT -- dnl the configure script would need to contain the same shell code -- dnl again, outside any 'if'. There are two solutions: -- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. -- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. -- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not -- dnl documented, we avoid it. -- ifelse(gt_included_intl, yes, , [ -- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -- ]) -- -- AC_MSG_CHECKING([whether NLS is requested]) -- dnl Default is enabled NLS -- AC_ARG_ENABLE(nls, -- [ --disable-nls do not use Native Language Support], -- USE_NLS=$enableval, USE_NLS=yes) -- AC_MSG_RESULT($USE_NLS) -- AC_SUBST(USE_NLS) -- -- ifelse(gt_included_intl, yes, [ -- BUILD_INCLUDED_LIBINTL=no -- USE_INCLUDED_LIBINTL=no -- ]) -- LIBINTL= -- LTLIBINTL= -- POSUB= -- -- dnl If we use NLS figure out what method -- if test "$USE_NLS" = "yes"; then -- gt_use_preinstalled_gnugettext=no -- ifelse(gt_included_intl, yes, [ -- AC_MSG_CHECKING([whether included gettext is requested]) -- AC_ARG_WITH(included-gettext, -- [ --with-included-gettext use the GNU gettext library included here], -- nls_cv_force_use_gnu_gettext=$withval, -- nls_cv_force_use_gnu_gettext=no) -- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) -- -- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" -- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then -- ]) -- dnl User does not insist on using GNU NLS library. Figure out what -- dnl to use. If GNU gettext is available we use this. Else we have -- dnl to fall back to GNU NLS library. -- -- dnl Add a version number to the cache macros. -- define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) -- define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) -- define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) -- -- AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, -- [AC_TRY_LINK([#include --]ifelse([$2], [need-formatstring-macros], --[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION --#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) --#endif --changequote(,)dnl --typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; --changequote([,])dnl --], [])[extern int _nl_msg_cat_cntr; --extern int *_nl_domain_bindings;], -- [bindtextdomain ("", ""); --return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], -- gt_cv_func_gnugettext_libc=yes, -- gt_cv_func_gnugettext_libc=no)]) -- -- if test "$gt_cv_func_gnugettext_libc" != "yes"; then -- dnl Sometimes libintl requires libiconv, so first search for libiconv. -- ifelse(gt_included_intl, yes, , [ -- AM_ICONV_LINK -- ]) -- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL -- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) -- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL -- dnl even if libiconv doesn't exist. -- AC_LIB_LINKFLAGS_BODY([intl]) -- AC_CACHE_CHECK([for GNU gettext in libintl], -- gt_cv_func_gnugettext_libintl, -- [gt_save_CPPFLAGS="$CPPFLAGS" -- CPPFLAGS="$CPPFLAGS $INCINTL" -- gt_save_LIBS="$LIBS" -- LIBS="$LIBS $LIBINTL" -- dnl Now see whether libintl exists and does not depend on libiconv. -- AC_TRY_LINK([#include --]ifelse([$2], [need-formatstring-macros], --[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION --#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) --#endif --changequote(,)dnl --typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; --changequote([,])dnl --], [])[extern int _nl_msg_cat_cntr; --extern --#ifdef __cplusplus --"C" --#endif --const char *_nl_expand_alias ();], -- [bindtextdomain ("", ""); --return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], -- gt_cv_func_gnugettext_libintl=yes, -- gt_cv_func_gnugettext_libintl=no) -- dnl Now see whether libintl exists and depends on libiconv. -- if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then -- LIBS="$LIBS $LIBICONV" -- AC_TRY_LINK([#include --]ifelse([$2], [need-formatstring-macros], --[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION --#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) --#endif --changequote(,)dnl --typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; --changequote([,])dnl --], [])[extern int _nl_msg_cat_cntr; --extern --#ifdef __cplusplus --"C" --#endif --const char *_nl_expand_alias ();], -- [bindtextdomain ("", ""); --return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], -- [LIBINTL="$LIBINTL $LIBICONV" -- LTLIBINTL="$LTLIBINTL $LTLIBICONV" -- gt_cv_func_gnugettext_libintl=yes -- ]) -- fi -- CPPFLAGS="$gt_save_CPPFLAGS" -- LIBS="$gt_save_LIBS"]) -- fi -- -- dnl If an already present or preinstalled GNU gettext() is found, -- dnl use it. But if this macro is used in GNU gettext, and GNU -- dnl gettext is already preinstalled in libintl, we update this -- dnl libintl. (Cf. the install rule in intl/Makefile.in.) -- if test "$gt_cv_func_gnugettext_libc" = "yes" \ -- || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ -- && test "$PACKAGE" != gettext; }; then -- gt_use_preinstalled_gnugettext=yes -- else -- dnl Reset the values set by searching for libintl. -- LIBINTL= -- LTLIBINTL= -- INCINTL= -- fi -- -- ifelse(gt_included_intl, yes, [ -- if test "$gt_use_preinstalled_gnugettext" != "yes"; then -- dnl GNU gettext is not found in the C library. -- dnl Fall back on included GNU gettext library. -- nls_cv_use_gnu_gettext=yes -- fi -- fi -- -- if test "$nls_cv_use_gnu_gettext" = "yes"; then -- dnl Mark actions used to generate GNU NLS library. -- INTLOBJS="\$(GETTOBJS)" -- BUILD_INCLUDED_LIBINTL=yes -- USE_INCLUDED_LIBINTL=yes -- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" -- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" -- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` -- fi -- -- if test "$gt_use_preinstalled_gnugettext" = "yes" \ -- || test "$nls_cv_use_gnu_gettext" = "yes"; then -- dnl Mark actions to use GNU gettext tools. -- CATOBJEXT=.gmo -- fi -- ]) -- -- if test "$gt_use_preinstalled_gnugettext" = "yes" \ -- || test "$nls_cv_use_gnu_gettext" = "yes"; then -- AC_DEFINE(ENABLE_NLS, 1, -- [Define to 1 if translation of program messages to the user's native language -- is requested.]) -- else -- USE_NLS=no -- fi -- fi -- -- if test "$USE_NLS" = "yes"; then -- -- if test "$gt_use_preinstalled_gnugettext" = "yes"; then -- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -- AC_MSG_CHECKING([how to link with libintl]) -- AC_MSG_RESULT([$LIBINTL]) -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -- fi -- -- dnl For backward compatibility. Some packages may be using this. -- AC_DEFINE(HAVE_GETTEXT, 1, -- [Define if the GNU gettext() function is already present or preinstalled.]) -- AC_DEFINE(HAVE_DCGETTEXT, 1, -- [Define if the GNU dcgettext() function is already present or preinstalled.]) -- fi -- -- dnl We need to process the po/ directory. -- POSUB=po -- fi -- -- ifelse(gt_included_intl, yes, [ -- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL -- dnl to 'yes' because some of the testsuite requires it. -- if test "$PACKAGE" = gettext; then -- BUILD_INCLUDED_LIBINTL=yes -- fi -- -- dnl Make all variables we use known to autoconf. -- AC_SUBST(BUILD_INCLUDED_LIBINTL) -- AC_SUBST(USE_INCLUDED_LIBINTL) -- AC_SUBST(CATOBJEXT) -- AC_SUBST(INTLOBJS) -- -- dnl For backward compatibility. Some configure.ins may be using this. -- nls_cv_header_intl= -- nls_cv_header_libgt= -- -- dnl For backward compatibility. Some Makefiles may be using this. -- DATADIRNAME=share -- AC_SUBST(DATADIRNAME) -- -- dnl For backward compatibility. Some Makefiles may be using this. -- INSTOBJEXT=.mo -- AC_SUBST(INSTOBJEXT) -- -- dnl For backward compatibility. Some Makefiles may be using this. -- GENCAT=gencat -- AC_SUBST(GENCAT) -- -- dnl Enable libtool support if the surrounding package wishes it. -- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix -- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) -- ]) -- -- dnl For backward compatibility. Some Makefiles may be using this. -- INTLLIBS="$LIBINTL" -- AC_SUBST(INTLLIBS) -- -- dnl Make all documented variables known to autoconf. -- AC_SUBST(LIBINTL) -- AC_SUBST(LTLIBINTL) -- AC_SUBST(POSUB) --]) -- -- --dnl Checks for all prerequisites of the po subdirectory, --dnl except for USE_NLS. --AC_DEFUN([AM_PO_SUBDIRS], --[ -- AC_REQUIRE([AC_PROG_MAKE_SET])dnl -- AC_REQUIRE([AC_PROG_INSTALL])dnl -- AC_REQUIRE([AM_MKINSTALLDIRS])dnl -- -- dnl Perform the following tests also if --disable-nls has been given, -- dnl because they are needed for "make dist" to work. -- -- dnl Search for GNU msgfmt in the PATH. -- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. -- dnl The second test excludes FreeBSD msgfmt. -- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -- [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -- :) -- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -- -- dnl Search for GNU xgettext 0.11 or newer in the PATH. -- dnl The first test excludes Solaris xgettext and early GNU xgettext versions. -- dnl The second test excludes FreeBSD xgettext. -- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -- [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -- :) -- dnl Remove leftover from FreeBSD xgettext call. -- rm -f messages.po -- -- dnl Search for GNU msgmerge 0.11 or newer in the PATH. -- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, -- [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) -- -- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -- dnl Test whether we really found GNU msgfmt. -- if test "$GMSGFMT" != ":"; then -- dnl If it is no GNU msgfmt we define it as : so that the -- dnl Makefiles still can work. -- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -- AC_MSG_RESULT( -- [found $GMSGFMT program is not GNU msgfmt; ignore it]) -- GMSGFMT=":" -- fi -- fi -- -- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -- dnl Test whether we really found GNU xgettext. -- if test "$XGETTEXT" != ":"; then -- dnl If it is no GNU xgettext we define it as : so that the -- dnl Makefiles still can work. -- if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- AC_MSG_RESULT( -- [found xgettext program is not GNU xgettext; ignore it]) -- XGETTEXT=":" -- fi -- dnl Remove leftover from FreeBSD xgettext call. -- rm -f messages.po -- fi -- -- AC_OUTPUT_COMMANDS([ -- for ac_file in $CONFIG_FILES; do -- # Support "outfile[:infile[:infile...]]" -- case "$ac_file" in -- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -- esac -- # PO directories have a Makefile.in generated from Makefile.in.in. -- case "$ac_file" in */Makefile.in) -- # Adjust a relative srcdir. -- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -- # In autoconf-2.13 it is called $ac_given_srcdir. -- # In autoconf-2.50 it is called $srcdir. -- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -- case "$ac_given_srcdir" in -- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -- /*) top_srcdir="$ac_given_srcdir" ;; -- *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -- esac -- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then -- rm -f "$ac_dir/POTFILES" -- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" -- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend -- # on $ac_dir but don't depend on user-specified configuration -- # parameters. -- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then -- # The LINGUAS file contains the set of available languages. -- if test -n "$ALL_LINGUAS"; then -- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -- fi -- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` -- # Hide the ALL_LINGUAS assigment from automake. -- eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -- fi -- case "$ac_given_srcdir" in -- .) srcdirpre= ;; -- *) srcdirpre='$(srcdir)/' ;; -- esac -- POFILES= -- GMOFILES= -- UPDATEPOFILES= -- DUMMYPOFILES= -- for lang in $ALL_LINGUAS; do -- POFILES="$POFILES $srcdirpre$lang.po" -- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" -- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" -- DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -- done -- # CATALOGS depends on both $ac_dir and the user's LINGUAS -- # environment variable. -- INST_LINGUAS= -- if test -n "$ALL_LINGUAS"; then -- for presentlang in $ALL_LINGUAS; do -- useit=no -- if test "%UNSET%" != "$LINGUAS"; then -- desiredlanguages="$LINGUAS" -- else -- desiredlanguages="$ALL_LINGUAS" -- fi -- for desiredlang in $desiredlanguages; do -- # Use the presentlang catalog if desiredlang is -- # a. equal to presentlang, or -- # b. a variant of presentlang (because in this case, -- # presentlang can be used as a fallback for messages -- # which are not translated in the desiredlang catalog). -- case "$desiredlang" in -- "$presentlang"*) useit=yes;; -- esac -- done -- if test $useit = yes; then -- INST_LINGUAS="$INST_LINGUAS $presentlang" -- fi -- done -- fi -- CATALOGS= -- if test -n "$INST_LINGUAS"; then -- for lang in $INST_LINGUAS; do -- CATALOGS="$CATALOGS $lang.gmo" -- done -- fi -- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do -- if test -f "$f"; then -- case "$f" in -- *.orig | *.bak | *~) ;; -- *) cat "$f" >> "$ac_dir/Makefile" ;; -- esac -- fi -- done -- fi -- ;; -- esac -- done], -- [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute -- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it -- # from automake. -- eval 'ALL_LINGUAS''="$ALL_LINGUAS"' -- # Capture the value of LINGUAS because we need it to compute CATALOGS. -- LINGUAS="${LINGUAS-%UNSET%}" -- ]) --]) -- -- --dnl Checks for all prerequisites of the intl subdirectory, --dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, --dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. --AC_DEFUN([AM_INTL_SUBDIR], --[ -- AC_REQUIRE([AC_PROG_INSTALL])dnl -- AC_REQUIRE([AM_MKINSTALLDIRS])dnl -- AC_REQUIRE([AC_PROG_CC])dnl -- AC_REQUIRE([AC_CANONICAL_HOST])dnl -- AC_REQUIRE([AC_PROG_RANLIB])dnl -- AC_REQUIRE([AC_ISC_POSIX])dnl -- AC_REQUIRE([AC_HEADER_STDC])dnl -- AC_REQUIRE([AC_C_CONST])dnl -- AC_REQUIRE([AC_C_INLINE])dnl -- AC_REQUIRE([AC_TYPE_OFF_T])dnl -- AC_REQUIRE([AC_TYPE_SIZE_T])dnl -- AC_REQUIRE([AC_FUNC_ALLOCA])dnl -- AC_REQUIRE([AC_FUNC_MMAP])dnl -- AC_REQUIRE([jm_GLIBC21])dnl -- AC_REQUIRE([gt_INTDIV0])dnl -- AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl -- AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl -- AC_REQUIRE([gt_INTTYPES_PRI])dnl -- -- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ --stdlib.h string.h unistd.h sys/param.h]) -- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ --geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ --strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) -- -- AM_ICONV -- AM_LANGINFO_CODESET -- if test $ac_cv_header_locale_h = yes; then -- AM_LC_MESSAGES -- fi -- -- dnl intl/plural.c is generated from intl/plural.y. It requires bison, -- dnl because plural.y uses bison specific features. It requires at least -- dnl bison-1.26 because earlier versions generate a plural.c that doesn't -- dnl compile. -- dnl bison is only needed for the maintainer (who touches plural.y). But in -- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put -- dnl the rule in general Makefile. Now, some people carelessly touch the -- dnl files or have a broken "make" program, hence the plural.c rule will -- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not -- dnl present or too old. -- AC_CHECK_PROGS([INTLBISON], [bison]) -- if test -z "$INTLBISON"; then -- ac_verc_fail=yes -- else -- dnl Found it, now check the version. -- AC_MSG_CHECKING([version of bison]) --changequote(<<,>>)dnl -- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -- case $ac_prog_version in -- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) --changequote([,])dnl -- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -- esac -- AC_MSG_RESULT([$ac_prog_version]) -- fi -- if test $ac_verc_fail = yes; then -- INTLBISON=: -- fi --]) -- -- --AC_DEFUN([AM_MKINSTALLDIRS], --[ -- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly -- dnl find the mkinstalldirs script in another subdir but $(top_srcdir). -- dnl Try to locate is. -- MKINSTALLDIRS= -- if test -n "$ac_aux_dir"; then -- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" -- fi -- if test -z "$MKINSTALLDIRS"; then -- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -- fi -- AC_SUBST(MKINSTALLDIRS) --]) -- -- --dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) --AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -- --# lib-prefix.m4 serial 1 (gettext-0.11) --dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -- --dnl From Bruno Haible. -- --dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed --dnl to access previously installed libraries. The basic assumption is that --dnl a user will want packages to use other packages he previously installed --dnl with the same --prefix option. --dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate --dnl libraries, but is otherwise very convenient. --AC_DEFUN([AC_LIB_PREFIX], --[ -- AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) -- AC_REQUIRE([AC_PROG_CC]) -- AC_REQUIRE([AC_CANONICAL_HOST]) -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- dnl By default, look in $includedir and $libdir. -- use_additional=yes -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- AC_ARG_WITH([lib-prefix], --[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib -- --without-lib-prefix don't search for libraries in includedir and libdir], --[ -- if test "X$withval" = "Xno"; then -- use_additional=no -- else -- if test "X$withval" = "X"; then -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- else -- additional_includedir="$withval/include" -- additional_libdir="$withval/lib" -- fi -- fi --]) -- if test $use_additional = yes; then -- dnl Potentially add $additional_includedir to $CPPFLAGS. -- dnl But don't add it -- dnl 1. if it's the standard /usr/include, -- dnl 2. if it's already present in $CPPFLAGS, -- dnl 3. if it's /usr/local/include and we are using GCC on Linux, -- dnl 4. if it doesn't exist as a directory. -- if test "X$additional_includedir" != "X/usr/include"; then -- haveit= -- for x in $CPPFLAGS; do -- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -- if test "X$x" = "X-I$additional_includedir"; then -- haveit=yes -- break -- fi -- done -- if test -z "$haveit"; then -- if test "X$additional_includedir" = "X/usr/local/include"; then -- if test -n "$GCC"; then -- case $host_os in -- linux*) haveit=yes;; -- esac -- fi -- fi -- if test -z "$haveit"; then -- if test -d "$additional_includedir"; then -- dnl Really add $additional_includedir to $CPPFLAGS. -- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" -- fi -- fi -- fi -- fi -- dnl Potentially add $additional_libdir to $LDFLAGS. -- dnl But don't add it -- dnl 1. if it's the standard /usr/lib, -- dnl 2. if it's already present in $LDFLAGS, -- dnl 3. if it's /usr/local/lib and we are using GCC on Linux, -- dnl 4. if it doesn't exist as a directory. -- if test "X$additional_libdir" != "X/usr/lib"; then -- haveit= -- for x in $LDFLAGS; do -- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -- if test "X$x" = "X-L$additional_libdir"; then -- haveit=yes -- break -- fi -- done -- if test -z "$haveit"; then -- if test "X$additional_libdir" = "X/usr/local/lib"; then -- if test -n "$GCC"; then -- case $host_os in -- linux*) haveit=yes;; -- esac -- fi -- fi -- if test -z "$haveit"; then -- if test -d "$additional_libdir"; then -- dnl Really add $additional_libdir to $LDFLAGS. -- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" -- fi -- fi -- fi -- fi -- fi --]) -- --dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, --dnl acl_final_exec_prefix, containing the values to which $prefix and --dnl $exec_prefix will expand at the end of the configure script. --AC_DEFUN([AC_LIB_PREPARE_PREFIX], --[ -- dnl Unfortunately, prefix and exec_prefix get only finally determined -- dnl at the end of configure. -- if test "X$prefix" = "XNONE"; then -- acl_final_prefix="$ac_default_prefix" -- else -- acl_final_prefix="$prefix" -- fi -- if test "X$exec_prefix" = "XNONE"; then -- acl_final_exec_prefix='${prefix}' -- else -- acl_final_exec_prefix="$exec_prefix" -- fi -- acl_save_prefix="$prefix" -- prefix="$acl_final_prefix" -- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" -- prefix="$acl_save_prefix" --]) -- --dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the --dnl variables prefix and exec_prefix bound to the values they will have --dnl at the end of the configure script. --AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], --[ -- acl_save_prefix="$prefix" -- prefix="$acl_final_prefix" -- acl_save_exec_prefix="$exec_prefix" -- exec_prefix="$acl_final_exec_prefix" -- $1 -- exec_prefix="$acl_save_exec_prefix" -- prefix="$acl_save_prefix" --]) -- --# lib-link.m4 serial 3 (gettext-0.11.3) --dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -- --dnl From Bruno Haible. -- --dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and --dnl the libraries corresponding to explicit and implicit dependencies. --dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and --dnl augments the CPPFLAGS variable. --AC_DEFUN([AC_LIB_LINKFLAGS], --[ -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) -- define([Name],[translit([$1],[./-], [___])]) -- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ -- AC_LIB_LINKFLAGS_BODY([$1], [$2]) -- ac_cv_lib[]Name[]_libs="$LIB[]NAME" -- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" -- ac_cv_lib[]Name[]_cppflags="$INC[]NAME" -- ]) -- LIB[]NAME="$ac_cv_lib[]Name[]_libs" -- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" -- INC[]NAME="$ac_cv_lib[]Name[]_cppflags" -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -- AC_SUBST([LIB]NAME) -- AC_SUBST([LTLIB]NAME) -- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the -- dnl results of this search when this library appears as a dependency. -- HAVE_LIB[]NAME=yes -- undefine([Name]) -- undefine([NAME]) --]) -- --dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) --dnl searches for libname and the libraries corresponding to explicit and --dnl implicit dependencies, together with the specified include files and --dnl the ability to compile and link the specified testcode. If found, it --dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and --dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and --dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs --dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. --AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], --[ -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) -- define([Name],[translit([$1],[./-], [___])]) -- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -- -- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME -- dnl accordingly. -- AC_LIB_LINKFLAGS_BODY([$1], [$2]) -- -- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, -- dnl because if the user has installed lib[]Name and not disabled its use -- dnl via --without-lib[]Name-prefix, he wants to use it. -- ac_save_CPPFLAGS="$CPPFLAGS" -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -- -- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ -- ac_save_LIBS="$LIBS" -- LIBS="$LIBS $LIB[]NAME" -- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) -- LIBS="$ac_save_LIBS" -- ]) -- if test "$ac_cv_lib[]Name" = yes; then -- HAVE_LIB[]NAME=yes -- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) -- AC_MSG_CHECKING([how to link with lib[]$1]) -- AC_MSG_RESULT([$LIB[]NAME]) -- else -- HAVE_LIB[]NAME=no -- dnl If $LIB[]NAME didn't lead to a usable library, we don't need -- dnl $INC[]NAME either. -- CPPFLAGS="$ac_save_CPPFLAGS" -- LIB[]NAME= -- LTLIB[]NAME= -- fi -- AC_SUBST([HAVE_LIB]NAME) -- AC_SUBST([LIB]NAME) -- AC_SUBST([LTLIB]NAME) -- undefine([Name]) -- undefine([NAME]) --]) -- --dnl Determine the platform dependent parameters needed to use rpath: --dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, --dnl hardcode_direct, hardcode_minus_L, --dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. --AC_DEFUN([AC_LIB_RPATH], --[ -- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS -- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld -- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host -- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir -- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ -- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ -- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh -- . ./conftest.sh -- rm -f ./conftest.sh -- acl_cv_rpath=done -- ]) -- wl="$acl_cv_wl" -- libext="$acl_cv_libext" -- shlibext="$acl_cv_shlibext" -- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" -- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" -- hardcode_direct="$acl_cv_hardcode_direct" -- hardcode_minus_L="$acl_cv_hardcode_minus_L" -- sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" -- sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" -- dnl Determine whether the user wants rpath handling at all. -- AC_ARG_ENABLE(rpath, -- [ --disable-rpath do not hardcode runtime library paths], -- :, enable_rpath=yes) --]) -- --dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and --dnl the libraries corresponding to explicit and implicit dependencies. --dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. --AC_DEFUN([AC_LIB_LINKFLAGS_BODY], --[ -- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -- dnl By default, look in $includedir and $libdir. -- use_additional=yes -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- AC_ARG_WITH([lib$1-prefix], --[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib -- --without-lib$1-prefix don't search for lib$1 in includedir and libdir], --[ -- if test "X$withval" = "Xno"; then -- use_additional=no -- else -- if test "X$withval" = "X"; then -- AC_LIB_WITH_FINAL_PREFIX([ -- eval additional_includedir=\"$includedir\" -- eval additional_libdir=\"$libdir\" -- ]) -- else -- additional_includedir="$withval/include" -- additional_libdir="$withval/lib" -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/lib" - fi - fi - ]) -@@ -5419,7 +1429,7 @@ - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -5468,7 +1478,7 @@ - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -5552,695 +1562,8143 @@ - done - fi - else -- dnl Didn't find the library; assume it is in the system directories -- dnl known to the linker and runtime loader. (All the system -- dnl directories known to the linker should also be known to the -- dnl runtime loader, otherwise the system is severely misconfigured.) -- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" -+ dnl Didn't find the library; assume it is in the system directories -+ dnl known to the linker and runtime loader. (All the system -+ dnl directories known to the linker should also be known to the -+ dnl runtime loader, otherwise the system is severely misconfigured.) -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" -+ fi -+ fi -+ fi -+ done -+ done -+ if test "X$rpathdirs" != "X"; then -+ if test -n "$hardcode_libdir_separator"; then -+ dnl Weird platform: only the last -rpath option counts, the user must -+ dnl pass all path elements in one option. We can arrange that for a -+ dnl single library, but not when more than one $LIBNAMEs are used. -+ alldirs= -+ for found_dir in $rpathdirs; do -+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" -+ done -+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. -+ acl_save_libdir="$libdir" -+ libdir="$alldirs" -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ libdir="$acl_save_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ else -+ dnl The -rpath options are cumulative. -+ for found_dir in $rpathdirs; do -+ acl_save_libdir="$libdir" -+ libdir="$found_dir" -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ libdir="$acl_save_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ done -+ fi -+ fi -+ if test "X$ltrpathdirs" != "X"; then -+ dnl When using libtool, the option that works for both libraries and -+ dnl executables is -R. The -R options are cumulative. -+ for found_dir in $ltrpathdirs; do -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" -+ done -+ fi -+]) -+ -+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -+dnl unless already present in VAR. -+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -+dnl contains two or three consecutive elements that belong together. -+AC_DEFUN([AC_LIB_APPENDTOVAR], -+[ -+ for element in [$2]; do -+ haveit= -+ for x in $[$1]; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X$element"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ [$1]="${[$1]}${[$1]:+ }$element" -+ fi -+ done -+]) -+ -+# lib-prefix.m4 serial 4 (gettext-0.14.2) -+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+ -+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -+dnl require excessive bracketing. -+ifdef([AC_HELP_STRING], -+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) -+ -+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -+dnl to access previously installed libraries. The basic assumption is that -+dnl a user will want packages to use other packages he previously installed -+dnl with the same --prefix option. -+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -+dnl libraries, but is otherwise very convenient. -+AC_DEFUN([AC_LIB_PREFIX], -+[ -+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) -+ AC_REQUIRE([AC_PROG_CC]) -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_LIB_ARG_WITH([lib-prefix], -+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib -+ --without-lib-prefix don't search for libraries in includedir and libdir], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ else -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/lib" -+ fi -+ fi -+]) -+ if test $use_additional = yes; then -+ dnl Potentially add $additional_includedir to $CPPFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/include, -+ dnl 2. if it's already present in $CPPFLAGS, -+ dnl 3. if it's /usr/local/include and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_includedir" != "X/usr/include"; then -+ haveit= -+ for x in $CPPFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-I$additional_includedir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_includedir" = "X/usr/local/include"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_includedir"; then -+ dnl Really add $additional_includedir to $CPPFLAGS. -+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" -+ fi -+ fi -+ fi -+ fi -+ dnl Potentially add $additional_libdir to $LDFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/lib, -+ dnl 2. if it's already present in $LDFLAGS, -+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_libdir" != "X/usr/lib"; then -+ haveit= -+ for x in $LDFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$additional_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_libdir" = "X/usr/local/lib"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_libdir"; then -+ dnl Really add $additional_libdir to $LDFLAGS. -+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" -+ fi -+ fi -+ fi -+ fi -+ fi -+]) -+ -+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -+dnl acl_final_exec_prefix, containing the values to which $prefix and -+dnl $exec_prefix will expand at the end of the configure script. -+AC_DEFUN([AC_LIB_PREPARE_PREFIX], -+[ -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ acl_final_prefix="$ac_default_prefix" -+ else -+ acl_final_prefix="$prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ acl_final_exec_prefix='${prefix}' -+ else -+ acl_final_exec_prefix="$exec_prefix" -+ fi -+ acl_save_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" -+ prefix="$acl_save_prefix" -+]) -+ -+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -+dnl variables prefix and exec_prefix bound to the values they will have -+dnl at the end of the configure script. -+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -+[ -+ acl_save_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ acl_save_exec_prefix="$exec_prefix" -+ exec_prefix="$acl_final_exec_prefix" -+ $1 -+ exec_prefix="$acl_save_exec_prefix" -+ prefix="$acl_save_prefix" -+]) -+ -+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -+ -+# serial 47 Debian 1.5.20-2 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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -+ ;; -+ *) -+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -+ ;; -+ 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"} -+ -+# 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' >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' >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 -+ ;; -+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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 > conftest.exp -+ $SED '/^$/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` -+ ;; -+ 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 -+ ;; -+ *) -+ # 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); */ -+ } -+ -+ 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_unknown|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" -+ 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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+])# 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 -+ -+ # 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 -+ ;; -+ -+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* | netbsdelf*-gnu | knetbsd*-gnu) -+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' -+ else -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' -+ fi -+ ;; -+ -+newos6*) -+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=/usr/lib/libnls.so -+ ;; -+ -+nto-qnx*) -+ lt_cv_deplibs_check_method=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 -+ ;; -+ -+sco3.2v5*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+solaris*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ esac -+ ;; -+ -+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | 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_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ tmp_nm="$ac_dir/${ac_tool_prefix}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" -+ 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 -+ -+# -+# Check for any special shared library compilation flags. -+# -+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -+if test "$GCC" = no; then -+ case $host_os in -+ sco3.2v5*) -+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' -+ ;; -+ esac -+fi -+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then -+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) -+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : -+ else -+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) -+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no -+ fi -+fi -+ -+ -+# -+# Check to make sure the static flag actually works. -+# -+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], -+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), -+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), -+ [], -+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) -+ -+ -+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($1) -+ -+# Report which librarie types wil 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_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 -+ 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 -+ 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' -+ _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ ;; -+ *) -+ _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' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, -+ # but as the default -+ # location of the library. -+ ;; -+ *) -+ _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*|ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ _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 -+ ia64*|hppa*64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ _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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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 -+ ;; -+ sco*) -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ case $cc_basename in -+ CC*) -+ # 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 -+ ;; -+ 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 -+ ;; -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ ;; -+ 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_SYS_LIB_STRIP -+AC_LIBTOOL_DLOPEN_SELF($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 -+ -+# 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) -+ -+# 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=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) -+ -+# 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=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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* | sysv5*) -+ symcode='[[BDRT]]' -+ ;; -+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)= -+ ;; -+ 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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ ;; -+ esac -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ ;; -+ 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*) -+ ;; -+ sco*) -+ case $cc_basename in -+ CC*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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 -+ ;; -+ unixware*) -+ ;; -+ 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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ _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 -+ ;; -+ -+ 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 -+]) -+ -+ -+# 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' -+ ;; -+ linux*) -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no -+ ;; -+ *) -+ _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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ 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 -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=no -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' -+ _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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ -+ # 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(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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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)=: -+ ;; -+ -+ sco3.2v5*) -+ _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)='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ sysv5*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ _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' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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) -+ 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 -+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_MSG_RESULT([$SED]) -+]) -+ -+# longdouble.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+dnl Test whether the compiler supports the 'long double' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_LONGDOUBLE], -+[ -+ AC_CACHE_CHECK([for long double], gt_cv_c_long_double, -+ [if test "$GCC" = yes; then -+ gt_cv_c_long_double=yes -+ else -+ AC_TRY_COMPILE([ -+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ -+ long double foo = 0.0; -+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ -+ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; -+ ], , -+ gt_cv_c_long_double=yes, gt_cv_c_long_double=no) -+ fi]) -+ if test $gt_cv_c_long_double = yes; then -+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) -+ fi -+]) -+ -+# longlong.m4 serial 5 -+dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_LONG_LONG if 'long long' works. -+ -+AC_DEFUN([gl_AC_TYPE_LONG_LONG], -+[ -+ AC_CACHE_CHECK([for long long], ac_cv_type_long_long, -+ [AC_TRY_LINK([long long ll = 1LL; int i = 63;], -+ [long long llmax = (long long) -1; -+ return ll << i | ll >> i | llmax / ll | llmax % ll;], -+ ac_cv_type_long_long=yes, -+ ac_cv_type_long_long=no)]) -+ if test $ac_cv_type_long_long = yes; then -+ AC_DEFINE(HAVE_LONG_LONG, 1, -+ [Define if you have the 'long long' type.]) -+ fi -+]) -+ -+# nls.m4 serial 2 (gettext-0.14.3) -+dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. -+ -+AC_PREREQ(2.50) -+ -+AC_DEFUN([AM_NLS], -+[ -+ AC_MSG_CHECKING([whether NLS is requested]) -+ dnl Default is enabled NLS -+ AC_ARG_ENABLE(nls, -+ [ --disable-nls do not use Native Language Support], -+ USE_NLS=$enableval, USE_NLS=yes) -+ AC_MSG_RESULT($USE_NLS) -+ AC_SUBST(USE_NLS) -+]) -+ -+AC_DEFUN([AM_MKINSTALLDIRS], -+[ -+ dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. -+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) -+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly -+ dnl find the mkinstalldirs script in another subdir but $(top_srcdir). -+ dnl Try to locate it. -+ MKINSTALLDIRS= -+ if test -n "$ac_aux_dir"; then -+ case "$ac_aux_dir" in -+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; -+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; -+ esac -+ fi -+ if test -z "$MKINSTALLDIRS"; then -+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -+ fi -+ AC_SUBST(MKINSTALLDIRS) -+]) -+ -+# po.m4 serial 7 (gettext-0.14.3) -+dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1995-2000. -+dnl Bruno Haible , 2000-2003. -+ -+AC_PREREQ(2.50) -+ -+dnl Checks for all prerequisites of the po subdirectory. -+AC_DEFUN([AM_PO_SUBDIRS], -+[ -+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl -+ AC_REQUIRE([AM_NLS])dnl -+ -+ dnl Perform the following tests also if --disable-nls has been given, -+ dnl because they are needed for "make dist" to work. -+ -+ dnl Search for GNU msgfmt in the PATH. -+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. -+ dnl The second test excludes FreeBSD msgfmt. -+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && -+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -+ -+ dnl Search for GNU xgettext 0.12 or newer in the PATH. -+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. -+ dnl The second test excludes FreeBSD xgettext. -+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && -+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ -+ dnl Search for GNU msgmerge 0.11 or newer in the PATH. -+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, -+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) -+ -+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -+ dnl Test whether we really found GNU msgfmt. -+ if test "$GMSGFMT" != ":"; then -+ dnl If it is no GNU msgfmt we define it as : so that the -+ dnl Makefiles still can work. -+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -+ AC_MSG_RESULT( -+ [found $GMSGFMT program is not GNU msgfmt; ignore it]) -+ GMSGFMT=":" -+ fi -+ fi -+ -+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -+ dnl Test whether we really found GNU xgettext. -+ if test "$XGETTEXT" != ":"; then -+ dnl If it is no GNU xgettext we define it as : so that the -+ dnl Makefiles still can work. -+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && -+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ AC_MSG_RESULT( -+ [found xgettext program is not GNU xgettext; ignore it]) -+ XGETTEXT=":" -+ fi -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ fi -+ -+ AC_OUTPUT_COMMANDS([ -+ for ac_file in $CONFIG_FILES; do -+ # Support "outfile[:infile[:infile...]]" -+ case "$ac_file" in -+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -+ esac -+ # PO directories have a Makefile.in generated from Makefile.in.in. -+ case "$ac_file" in */Makefile.in) -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ case "$ac_given_srcdir" in -+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -+ /*) top_srcdir="$ac_given_srcdir" ;; -+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ # Treat a directory as a PO directory if and only if it has a -+ # POTFILES.in file. This allows packages to have multiple PO -+ # directories under different names or in different locations. -+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then -+ rm -f "$ac_dir/POTFILES" -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" -+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -+ POMAKEFILEDEPS="POTFILES.in" -+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend -+ # on $ac_dir but don't depend on user-specified configuration -+ # parameters. -+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then -+ # The LINGUAS file contains the set of available languages. -+ if test -n "$OBSOLETE_ALL_LINGUAS"; then -+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -+ fi -+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` -+ # Hide the ALL_LINGUAS assigment from automake. -+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" -+ else -+ # The set of available languages was given in configure.in. -+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' -+ fi -+ # Compute POFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) -+ # Compute UPDATEPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) -+ # Compute DUMMYPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) -+ # Compute GMOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) -+ case "$ac_given_srcdir" in -+ .) srcdirpre= ;; -+ *) srcdirpre='$(srcdir)/' ;; -+ esac -+ POFILES= -+ UPDATEPOFILES= -+ DUMMYPOFILES= -+ GMOFILES= -+ for lang in $ALL_LINGUAS; do -+ POFILES="$POFILES $srcdirpre$lang.po" -+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" -+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" -+ done -+ # CATALOGS depends on both $ac_dir and the user's LINGUAS -+ # environment variable. -+ INST_LINGUAS= -+ if test -n "$ALL_LINGUAS"; then -+ for presentlang in $ALL_LINGUAS; do -+ useit=no -+ if test "%UNSET%" != "$LINGUAS"; then -+ desiredlanguages="$LINGUAS" -+ else -+ desiredlanguages="$ALL_LINGUAS" -+ fi -+ for desiredlang in $desiredlanguages; do -+ # Use the presentlang catalog if desiredlang is -+ # a. equal to presentlang, or -+ # b. a variant of presentlang (because in this case, -+ # presentlang can be used as a fallback for messages -+ # which are not translated in the desiredlang catalog). -+ case "$desiredlang" in -+ "$presentlang"*) useit=yes;; -+ esac -+ done -+ if test $useit = yes; then -+ INST_LINGUAS="$INST_LINGUAS $presentlang" -+ fi -+ done -+ fi -+ CATALOGS= -+ if test -n "$INST_LINGUAS"; then -+ for lang in $INST_LINGUAS; do -+ CATALOGS="$CATALOGS $lang.gmo" -+ done - fi -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do -+ if test -f "$f"; then -+ case "$f" in -+ *.orig | *.bak | *~) ;; -+ *) cat "$f" >> "$ac_dir/Makefile" ;; -+ esac -+ fi -+ done - fi -- fi -- done -+ ;; -+ esac -+ done], -+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute -+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it -+ # from automake. -+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' -+ # Capture the value of LINGUAS because we need it to compute CATALOGS. -+ LINGUAS="${LINGUAS-%UNSET%}" -+ ]) -+]) -+ -+dnl Postprocesses a Makefile in a directory containing PO files. -+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -+[ -+ # When this code is run, in config.status, two variables have already been -+ # set: -+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, -+ # - LINGUAS is the value of the environment variable LINGUAS at configure -+ # time. -+ -+changequote(,)dnl -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ case "$ac_given_srcdir" in -+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -+ /*) top_srcdir="$ac_given_srcdir" ;; -+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ -+ # Find a way to echo strings without interpreting backslash. -+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then -+ gt_echo='echo' -+ else -+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then -+ gt_echo='printf %s\n' -+ else -+ echo_func () { -+ cat < "$ac_file.tmp" -+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then -+ # Add dependencies that cannot be formulated as a simple suffix rule. -+ for lang in $ALL_LINGUAS; do -+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` -+ cat >> "$ac_file.tmp" < /dev/null; then -+ # Add dependencies that cannot be formulated as a simple suffix rule. -+ for lang in $ALL_LINGUAS; do -+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` -+ cat >> "$ac_file.tmp" <> "$ac_file.tmp" < -+#include -+/* The string "%2$d %1$d", with dollar characters protected from the shell's -+ dollar expansion (possibly an autoconf bug). */ -+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -+static char buf[100]; -+int main () -+{ -+ sprintf (buf, format, 33, 55); -+ return (strcmp (buf, "55 33") != 0); -+}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, -+ [ -+ AC_EGREP_CPP(notposix, [ -+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ -+ notposix -+#endif -+ ], gt_cv_func_printf_posix="guessing no", -+ gt_cv_func_printf_posix="guessing yes") -+ ]) -+ ]) -+ case $gt_cv_func_printf_posix in -+ *yes) -+ AC_DEFINE(HAVE_POSIX_PRINTF, 1, -+ [Define if your printf() function supports format strings with positions.]) -+ ;; -+ esac -+]) -+ -+# progtest.m4 serial 4 (gettext-0.14.2) -+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper , 1996. -+ -+AC_PREREQ(2.50) -+ -+# Search path for a program which passes the given test. -+ -+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -+AC_DEFUN([AM_PATH_PROG_WITH_TEST], -+[ -+# Prepare PATH_SEPARATOR. -+# 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 -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" -+else -+ ac_executable_p="test -f" -+fi -+rm -f conf$$.file -+ -+# Extract the first word of "$2", so it can be a program name with args. -+set dummy $2; ac_word=[$]2 -+AC_MSG_CHECKING([for $ac_word]) -+AC_CACHE_VAL(ac_cv_path_$1, -+[case "[$]$1" in -+ [[\\/]]* | ?:[[\\/]]*) -+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in ifelse([$5], , $PATH, [$5]); do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD -+ if [$3]; then -+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi - done -- fi -- fi -- if test "X$ltrpathdirs" != "X"; then -- dnl When using libtool, the option that works for both libraries and -- dnl executables is -R. The -R options are cumulative. -- for found_dir in $ltrpathdirs; do -- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done -+ IFS="$ac_save_IFS" -+dnl If no 4th arg is given, leave the cache variable unset, -+dnl so AC_PATH_PROGS will keep looking. -+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -+])dnl -+ ;; -+esac])dnl -+$1="$ac_cv_path_$1" -+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then -+ AC_MSG_RESULT([$]$1) -+else -+ AC_MSG_RESULT(no) -+fi -+AC_SUBST($1)dnl -+]) -+ -+# signed.m4 serial 1 (gettext-0.10.40) -+dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([bh_C_SIGNED], -+[ -+ AC_CACHE_CHECK([for signed], bh_cv_c_signed, -+ [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) -+ if test $bh_cv_c_signed = no; then -+ AC_DEFINE(signed, , -+ [Define to empty if the C compiler doesn't support this keyword.]) - fi - ]) - --dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, --dnl unless already present in VAR. --dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes --dnl contains two or three consecutive elements that belong together. --AC_DEFUN([AC_LIB_APPENDTOVAR], -+# size_max.m4 serial 2 -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([gl_SIZE_MAX], - [ -- for element in [$2]; do -- haveit= -- for x in $[$1]; do -- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -- if test "X$x" = "X$element"; then -- haveit=yes -- break -+ AC_CHECK_HEADERS(stdint.h) -+ dnl First test whether the system already has SIZE_MAX. -+ AC_MSG_CHECKING([for SIZE_MAX]) -+ result= -+ AC_EGREP_CPP([Found it], [ -+#include -+#if HAVE_STDINT_H -+#include -+#endif -+#ifdef SIZE_MAX -+Found it -+#endif -+], result=yes) -+ if test -z "$result"; then -+ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider -+ dnl than the type 'unsigned long'. -+ dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', -+ dnl which is guaranteed to work from LONG_MIN to LONG_MAX. -+ _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, -+ [#include ], result=?) -+ _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, -+ [#include ], result=?) -+ _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, -+ [#include ], result=?) -+ if test "$fits_in_uint" = 1; then -+ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type -+ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. -+ AC_TRY_COMPILE([#include -+ extern size_t foo; -+ extern unsigned long foo; -+ ], [], fits_in_uint=0) -+ fi -+ if test -z "$result"; then -+ if test "$fits_in_uint" = 1; then -+ result="$res_hi$res_lo"U -+ else -+ result="$res_hi$res_lo"UL - fi -- done -- if test -z "$haveit"; then -- [$1]="${[$1]}${[$1]:+ }$element" -+ else -+ dnl Shouldn't happen, but who knows... -+ result='~(size_t)0' - fi -- done -+ fi -+ AC_MSG_RESULT([$result]) -+ if test "$result" != yes; then -+ AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], -+ [Define as the maximum value of type 'size_t', if the system doesn't define it.]) -+ fi - ]) - --# lib-ld.m4 serial 1 (gettext-0.11) --dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# stdint_h.m4 serial 5 -+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. - --dnl Subroutines of libtool.m4, --dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision --dnl with libtool.m4. -+dnl From Paul Eggert. - --dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. --AC_DEFUN([AC_LIB_PROG_LD_GNU], --[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, --[# I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -- acl_cv_prog_gnu_ld=yes --else -- acl_cv_prog_gnu_ld=no --fi]) --with_gnu_ld=$acl_cv_prog_gnu_ld -+# Define HAVE_STDINT_H_WITH_UINTMAX if exists, -+# doesn't clash with , and declares uintmax_t. -+ -+AC_DEFUN([gl_AC_HEADER_STDINT_H], -+[ -+ AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, -+ [AC_TRY_COMPILE( -+ [#include -+#include ], -+ [uintmax_t i = (uintmax_t) -1;], -+ gl_cv_header_stdint_h=yes, -+ gl_cv_header_stdint_h=no)]) -+ if test $gl_cv_header_stdint_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, -+ [Define if exists, doesn't clash with , -+ and declares uintmax_t. ]) -+ fi -+]) -+ -+# uintmax_t.m4 serial 9 -+dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Paul Eggert. -+ -+AC_PREREQ(2.13) -+ -+# Define uintmax_t to 'unsigned long' or 'unsigned long long' -+# if it is not already defined in or . -+ -+AC_DEFUN([gl_AC_TYPE_UINTMAX_T], -+[ -+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([gl_AC_HEADER_STDINT_H]) -+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then -+ AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) -+ test $ac_cv_type_unsigned_long_long = yes \ -+ && ac_type='unsigned long long' \ -+ || ac_type='unsigned long' -+ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, -+ [Define to unsigned long or unsigned long long -+ if and don't define.]) -+ else -+ AC_DEFINE(HAVE_UINTMAX_T, 1, -+ [Define if you have the 'uintmax_t' type in or .]) -+ fi -+]) -+ -+# ulonglong.m4 serial 4 -+dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. -+ -+AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], -+[ -+ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, -+ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], -+ [unsigned long long ullmax = (unsigned long long) -1; -+ return ull << i | ull >> i | ullmax / ull | ullmax % ull;], -+ ac_cv_type_unsigned_long_long=yes, -+ ac_cv_type_unsigned_long_long=no)]) -+ if test $ac_cv_type_unsigned_long_long = yes; then -+ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, -+ [Define if you have the 'unsigned long long' type.]) -+ fi -+]) -+ -+# wchar_t.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+dnl Test whether has the 'wchar_t' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_WCHAR_T], -+[ -+ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, -+ [AC_TRY_COMPILE([#include -+ wchar_t foo = (wchar_t)'\0';], , -+ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) -+ if test $gt_cv_c_wchar_t = yes; then -+ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) -+ fi -+]) -+ -+# wint_t.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+dnl From Bruno Haible. -+dnl Test whether has the 'wint_t' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_WINT_T], -+[ -+ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, -+ [AC_TRY_COMPILE([#include -+ wint_t foo = (wchar_t)'\0';], , -+ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) -+ if test $gt_cv_c_wint_t = yes; then -+ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) -+ fi -+]) -+ -+# xsize.m4 serial 3 -+dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. -+dnl This file is free software; the Free Software Foundation -+dnl gives unlimited permission to copy and/or distribute it, -+dnl with or without modifications, as long as this notice is preserved. -+ -+AC_DEFUN([gl_XSIZE], -+[ -+ dnl Prerequisites of lib/xsize.h. -+ AC_REQUIRE([gl_SIZE_MAX]) -+ AC_REQUIRE([AC_C_INLINE]) -+ AC_CHECK_HEADERS(stdint.h) -+]) -+ -+# 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` - ]) - --dnl From libtool-1.4. Sets the variable LD. --AC_DEFUN([AC_LIB_PROG_LD], --[AC_ARG_WITH(gnu-ld, --[ --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([AC_PROG_CC])dnl --AC_REQUIRE([AC_CANONICAL_HOST])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 GCC]) -- 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. -- [[\\/]* | [A-Za-z]:[\\/]*)] -- [re_direlt='/[^/][^/]*/\.\./'] -- # Canonicalize the path 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(acl_cv_path_LD, --[if test -z "$LD"; then -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -- acl_cv_path_LD="$ac_dir/$ac_prog" -- # Check to see if the program is GNU ld. I'd rather use --version, -- # but apparently some GNU ld's only accept -v. -- # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -- test "$with_gnu_ld" != no && break -+# 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 -- test "$with_gnu_ld" != yes && break -+ 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 -- IFS="$ac_save_ifs" --else -- acl_cv_path_LD="$LD" # Let the user override the test with a path. --fi]) --LD="$acl_cv_path_LD" --if test -n "$LD"; then -- AC_MSG_RESULT($LD) -+ -+ cd .. -+ rm -rf conftest.dir - else -- AC_MSG_RESULT(no) -+ am_cv_$1_dependencies_compiler_type=none - fi --test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) --AC_LIB_PROG_LD_GNU -+]) -+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]) - ]) - --# iconv.m4 serial AM4 (gettext-0.11.3) --dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. - --dnl From Bruno Haible. -+# 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 -+]) - --AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], --[ -- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -- AC_REQUIRE([AC_LIB_RPATH]) - -- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -- dnl accordingly. -- AC_LIB_LINKFLAGS_BODY([iconv]) -+# 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]) - ]) - --AC_DEFUN([AM_ICONV_LINK], --[ -- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and -- dnl those with the standalone portable GNU libiconv installed). -+# Generate code to set up dependency tracking. -*- Autoconf -*- - -- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -- dnl accordingly. -- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+# 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. - -- dnl Add $INCICONV to CPPFLAGS before performing the following checks, -- dnl because if the user has installed libiconv and not disabled its use -- dnl via --without-libiconv-prefix, he wants to use it. The first -- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. -- am_save_CPPFLAGS="$CPPFLAGS" -- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) -+#serial 3 - -- AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ -- am_cv_func_iconv="no, consider installing GNU libiconv" -- am_cv_lib_iconv=no -- AC_TRY_LINK([#include --#include ], -- [iconv_t cd = iconv_open("",""); -- iconv(cd,NULL,NULL,NULL,NULL); -- iconv_close(cd);], -- am_cv_func_iconv=yes) -- if test "$am_cv_func_iconv" != yes; then -- am_save_LIBS="$LIBS" -- LIBS="$LIBS $LIBICONV" -- AC_TRY_LINK([#include --#include ], -- [iconv_t cd = iconv_open("",""); -- iconv(cd,NULL,NULL,NULL,NULL); -- iconv_close(cd);], -- am_cv_lib_iconv=yes -- am_cv_func_iconv=yes) -- LIBS="$am_save_LIBS" -- fi -- ]) -- if test "$am_cv_func_iconv" = yes; then -- AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) -- fi -- if test "$am_cv_lib_iconv" = yes; then -- AC_MSG_CHECKING([how to link with libiconv]) -- AC_MSG_RESULT([$LIBICONV]) -+# _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 -- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV -- dnl either. -- CPPFLAGS="$am_save_CPPFLAGS" -- LIBICONV= -- LTLIBICONV= -+ continue - fi -- AC_SUBST(LIBICONV) -- AC_SUBST(LTLIBICONV) --]) -+ # 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 - --AC_DEFUN([AM_ICONV], --[ -- AM_ICONV_LINK -- if test "$am_cv_func_iconv" = yes; then -- AC_MSG_CHECKING([for iconv declaration]) -- AC_CACHE_VAL(am_cv_proto_iconv, [ -- AC_TRY_COMPILE([ --#include --#include --extern --#ifdef __cplusplus --"C" --#endif --#if defined(__STDC__) || defined(__cplusplus) --size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); --#else --size_t iconv(); --#endif --], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") -- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) -- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` -- AC_MSG_RESULT([$]{ac_t:- -- }[$]am_cv_proto_iconv) -- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, -- [Define as const if the declaration of iconv() needs const.]) -- fi -+ -+# 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"]) - ]) - --# progtest.m4 serial 2 (gettext-0.10.40) --dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. --dnl --dnl This file can can be used in projects which are not available under --dnl the GNU General Public License or the GNU Library General Public --dnl License but which still want to provide support for the GNU gettext --dnl functionality. --dnl Please note that the actual code of the GNU gettext library is covered --dnl by the GNU Library General Public License, and the rest of the GNU --dnl gettext package package is covered by the GNU General Public License. --dnl They are *not* in the public domain. -+# 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 8 - --dnl Authors: --dnl Ulrich Drepper , 1996. -+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - --# Search path for a program which passes the given test. -+# Do all the work for Automake. -*- Autoconf -*- - --dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, --dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) --AC_DEFUN([AM_PATH_PROG_WITH_TEST], --[# Extract the first word of "$2", so it can be a program name with args. --set dummy $2; ac_word=[$]2 --AC_MSG_CHECKING([for $ac_word]) --AC_CACHE_VAL(ac_cv_path_$1, --[case "[$]$1" in -- /*) -- ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in ifelse([$5], , $PATH, [$5]); do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if [$3]; then -- ac_cv_path_$1="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" --dnl If no 4th arg is given, leave the cache variable unset, --dnl so AC_PATH_PROGS will keep looking. --ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" --])dnl -- ;; --esac])dnl --$1="$ac_cv_path_$1" --if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then -- AC_MSG_RESULT([$]$1) --else -- AC_MSG_RESULT(no) --fi --AC_SUBST($1)dnl --]) -+# 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. - --# isc-posix.m4 serial 2 (gettext-0.11.2) --dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -- --# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. -- --# This test replaces the one in autoconf. --# Currently this macro should have the same name as the autoconf macro --# because gettext's gettext.m4 (distributed in the automake package) --# still uses it. Otherwise, the use in gettext.m4 makes autoheader --# give these diagnostics: --# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX --# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX -+# serial 12 - --undefine([AC_ISC_POSIX]) -+# 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. - --AC_DEFUN([AC_ISC_POSIX], -- [ -- dnl This test replaces the obsolescent AC_ISC_POSIX kludge. -- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) -- ] --) -+# 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 - --# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) --dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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]) - --# Test for the GNU C Library, version 2.1 or newer. --# From Bruno Haible. -+# 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 - --AC_DEFUN([jm_GLIBC21], -- [ -- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, -- ac_cv_gnu_library_2_1, -- [AC_EGREP_CPP([Lucky GNU user], -- [ --#include --#ifdef __GNU_LIBRARY__ -- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -- Lucky GNU user -- #endif --#endif -- ], -- ac_cv_gnu_library_2_1=yes, -- ac_cv_gnu_library_2_1=no) -- ] -- ) -- AC_SUBST(GLIBC21) -- GLIBC21="$ac_cv_gnu_library_2_1" -- ] --) -+_AM_IF_OPTION([no-define],, -+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - --# intdiv0.m4 serial 1 (gettext-0.11.3) --dnl Copyright (C) 2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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 -+]) -+]) - --dnl From Bruno Haible. - --AC_DEFUN([gt_INTDIV0], --[ -- AC_REQUIRE([AC_PROG_CC])dnl -- AC_REQUIRE([AC_CANONICAL_HOST])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. - -- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], -- gt_cv_int_divbyzero_sigfpe, -- [ -- AC_TRY_RUN([ --#include --#include -+# 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]) - --static void --#ifdef __cplusplus --sigfpe_handler (int sig) --#else --sigfpe_handler (sig) int sig; --#endif --{ -- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -- exit (sig != SIGFPE); --} -+# 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. - --int x = 1; --int y = 0; --int z; --int nan; -+# 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)]) - --int main () --{ -- signal (SIGFPE, sigfpe_handler); --/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ --#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -- signal (SIGTRAP, sigfpe_handler); --#endif --/* Linux/SPARC yields signal SIGILL. */ --#if defined (__sparc__) && defined (__linux__) -- signal (SIGILL, sigfpe_handler); --#endif -+# 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. - -- z = x / y; -- nan = y / y; -- exit (1); --} --], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, -- [ -- # Guess based on the CPU. -- case "$host_cpu" in -- alpha* | i[34567]86 | m68k | s390*) -- gt_cv_int_divbyzero_sigfpe="guessing yes";; -- *) -- gt_cv_int_divbyzero_sigfpe="guessing no";; -- esac -- ]) -- ]) -- case "$gt_cv_int_divbyzero_sigfpe" in -- *yes) value=1;; -- *) value=0;; -- esac -- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, -- [Define if integer division by zero raises signal SIGFPE.]) --]) -+# serial 2 - --# uintmax_t.m4 serial 6 (gettext-0.11) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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])]) - --dnl From Paul Eggert. -+# Check to see how 'make' treats includes. -*- Autoconf -*- - --AC_PREREQ(2.13) -+# 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. - --# Define uintmax_t to `unsigned long' or `unsigned long long' --# if does not exist. -+# serial 3 - --AC_DEFUN([jm_AC_TYPE_UINTMAX_T], --[ -- AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) -- AC_REQUIRE([jm_AC_HEADER_STDINT_H]) -- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then -- AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) -- test $ac_cv_type_unsigned_long_long = yes \ -- && ac_type='unsigned long long' \ -- || ac_type='unsigned long' -- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, -- [Define to unsigned long or unsigned long long -- if and don't define.]) -- fi -+# 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 - ]) - --# inttypes_h.m4 serial 4 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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 - --dnl From Paul Eggert. -+# 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)]) - --# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, --# doesn't clash with , and declares uintmax_t. - --AC_DEFUN([jm_AC_HEADER_INTTYPES_H], --[ -- AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, -- [AC_TRY_COMPILE( -- [#include --#include ], -- [uintmax_t i = (uintmax_t) -1;], -- jm_ac_cv_header_inttypes_h=yes, -- jm_ac_cv_header_inttypes_h=no)]) -- if test $jm_ac_cv_header_inttypes_h = yes; then -- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, --[Define if exists, doesn't clash with , -- and declares uintmax_t. ]) -- fi -+# 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 - ]) - --# stdint_h.m4 serial 2 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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. - --dnl From Paul Eggert. -+# 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])]) - --# Define HAVE_STDINT_H_WITH_UINTMAX if exists, --# doesn't clash with , and declares uintmax_t. -+# Helper functions for option handling. -*- Autoconf -*- - --AC_DEFUN([jm_AC_HEADER_STDINT_H], --[ -- AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, -- [AC_TRY_COMPILE( -- [#include --#include ], -- [uintmax_t i = (uintmax_t) -1;], -- jm_ac_cv_header_stdint_h=yes, -- jm_ac_cv_header_stdint_h=no)]) -- if test $jm_ac_cv_header_stdint_h = yes; then -- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, --[Define if exists, doesn't clash with , -- and declares uintmax_t. ]) -- fi --]) -+# 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. - --# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) --dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# serial 3 - --dnl From Paul Eggert. -+# _AM_MANGLE_OPTION(NAME) -+# ----------------------- -+AC_DEFUN([_AM_MANGLE_OPTION], -+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - --AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], --[ -- AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, -- [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], -- [unsigned long long ullmax = (unsigned long long) -1; -- return ull << i | ull >> i | ullmax / ull | ullmax % ull;], -- ac_cv_type_unsigned_long_long=yes, -- ac_cv_type_unsigned_long_long=no)]) -- if test $ac_cv_type_unsigned_long_long = yes; then -- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, -- [Define if you have the unsigned long long type.]) -- fi --]) -+# _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)]) - --# inttypes.m4 serial 1 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# _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)])]) - --dnl From Paul Eggert. -+# _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])]) - --# Define HAVE_INTTYPES_H if exists and doesn't clash with --# . -+# Check to make sure that the build environment is sane. -*- Autoconf -*- - --AC_DEFUN([gt_HEADER_INTTYPES_H], --[ -- AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, -- [ -- AC_TRY_COMPILE( -- [#include --#include ], -- [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) -- ]) -- if test $gt_cv_header_inttypes_h = yes; then -- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, -- [Define if exists and doesn't clash with .]) -- fi --]) -+# 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. - --# inttypes-pri.m4 serial 1 (gettext-0.11.4) --dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# serial 4 - --dnl From Bruno Haible. -+# 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 - --# Define PRI_MACROS_BROKEN if exists and defines the PRI* --# macros to non-string values. This is the case on AIX 4.3.3. -+ # 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 - --AC_DEFUN([gt_INTTYPES_PRI], --[ -- AC_REQUIRE([gt_HEADER_INTTYPES_H]) -- if test $gt_cv_header_inttypes_h = yes; then -- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], -- gt_cv_inttypes_pri_broken, -- [ -- AC_TRY_COMPILE([#include --#ifdef PRId32 --char *p = PRId32; --#endif --], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) -- ]) -- fi -- if test "$gt_cv_inttypes_pri_broken" = yes; then -- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, -- [Define if exists and defines unusable PRI* macros.]) -- 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)]) - --# codeset.m4 serial AM1 (gettext-0.10.40) --dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. -+# 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. - --dnl From Bruno Haible. -+# 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])]) - --AC_DEFUN([AM_LANGINFO_CODESET], --[ -- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, -- [AC_TRY_LINK([#include ], -- [char* cs = nl_langinfo(CODESET);], -- am_cv_langinfo_codeset=yes, -- am_cv_langinfo_codeset=no) -- ]) -- if test $am_cv_langinfo_codeset = yes; then -- AC_DEFINE(HAVE_LANGINFO_CODESET, 1, -- [Define if you have and nl_langinfo(CODESET).]) -- fi --]) -+# Check how to create a tarball. -*- Autoconf -*- - --# lcmessage.m4 serial 3 (gettext-0.11.3) --dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. --dnl This file is free software, distributed under the terms of the GNU --dnl General Public License. As a special exception to the GNU General --dnl Public License, this file may be distributed as part of a program --dnl that contains a configuration script generated by Autoconf, under --dnl the same distribution terms as the rest of that program. --dnl --dnl This file can can be used in projects which are not available under --dnl the GNU General Public License or the GNU Library General Public --dnl License but which still want to provide support for the GNU gettext --dnl functionality. --dnl Please note that the actual code of the GNU gettext library is covered --dnl by the GNU Library General Public License, and the rest of the GNU --dnl gettext package package is covered by the GNU General Public License. --dnl They are *not* in the public domain. -+# 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. - --dnl Authors: --dnl Ulrich Drepper , 1995. -+# serial 2 - --# Check whether LC_MESSAGES is available in . -+# _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 - --AC_DEFUN([AM_LC_MESSAGES], --[ -- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, -- [AC_TRY_LINK([#include ], [return LC_MESSAGES], -- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) -- if test $am_cv_val_LC_MESSAGES = yes; then -- AC_DEFINE(HAVE_LC_MESSAGES, 1, -- [Define if your file defines LC_MESSAGES.]) -+ # 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 - -+m4_include([acinclude.m4]) ---- gsmlib-1.10.orig/configure -+++ gsmlib-1.10/configure -@@ -1,178 +1,10 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.53. -+# Generated by GNU Autoconf 2.59. - # --# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 --# Free Software Foundation, Inc. -+# 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. -- --# Find the correct PATH separator. Usually this is `:', but --# DJGPP uses `;' like DOS. --if test "X${PATH_SEPARATOR+set}" != Xset; then -- UNAME=${UNAME-`uname 2>/dev/null`} -- case X$UNAME in -- *-DOS) lt_cv_sys_path_separator=';' ;; -- *) lt_cv_sys_path_separator=':' ;; -- esac -- PATH_SEPARATOR=$lt_cv_sys_path_separator --fi -- -- --# 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 && -- 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. -- -- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR -- for dir in $PATH /usr/ucb; do -- 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="$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 -- -- -- --if expr a : '\(a\)' >/dev/null 2>&1; then -- as_expr=expr --else -- as_expr=false --fi -- -- - ## --------------------- ## - ## M4sh Initialization. ## - ## --------------------- ## -@@ -181,46 +13,57 @@ - 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 - --# NLS nuisances. - # Support unset when possible. --if (FOO=FOO; unset FOO) >/dev/null 2>&1; then -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset - else - as_unset=false - fi - --(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && -- { $as_unset LANG || test "${LANG+set}" != set; } || -- { LANG=C; export LANG; } --(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && -- { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || -- { LC_ALL=C; export LC_ALL; } --(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && -- { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || -- { LC_TIME=C; export LC_TIME; } --(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && -- { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || -- { LC_CTYPE=C; export LC_CTYPE; } --(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && -- { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || -- { LANGUAGE=C; export LANGUAGE; } --(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && -- { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || -- { LC_COLLATE=C; export LC_COLLATE; } --(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && -- { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || -- { LC_NUMERIC=C; export LC_NUMERIC; } --(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && -- { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || -- { LC_MESSAGES=C; export LC_MESSAGES; } -+ -+# 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=`(basename "$0") 2>/dev/null || -+as_me=`$as_basename "$0" || - $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ -@@ -231,6 +74,7 @@ - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -+ - # PATH needs CR, and LINENO needs CR and PATH. - # Avoid depending upon Character Ranges. - as_cr_letters='abcdefghijklmnopqrstuvwxyz' -@@ -241,15 +85,15 @@ - - # The user is always right. - if test "${PATH_SEPARATOR+set}" != set; then -- echo "#! /bin/sh" >conftest.sh -- echo "exit 0" >>conftest.sh -- chmod +x conftest.sh -- if (PATH=".;."; conftest.sh) >/dev/null 2>&1; 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 conftest.sh -+ rm -f conf$$.sh - fi - - -@@ -297,6 +141,8 @@ - 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+"$@"} -@@ -369,13 +215,20 @@ - 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="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -+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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - # IFS -@@ -385,76 +238,233 @@ - IFS=" $as_nl" - - # CDPATH. --$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } -- -+$as_unset CDPATH - --# 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 --cross_compiling=no --subdirs= --MFLAGS= --MAKEFLAGS= -+# Check that we are running under the correct shell. - 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} -+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 - --# Identity of this package. --PACKAGE_NAME= --PACKAGE_TARNAME= --PACKAGE_VERSION= --PACKAGE_STRING= --PACKAGE_BUGREPORT= -+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 - --ac_unique_file="gsmlib/gsm_error.h" --# 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" -+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= -+PACKAGE_TARNAME= -+PACKAGE_VERSION= -+PACKAGE_STRING= -+PACKAGE_BUGREPORT= -+ -+ac_unique_file="gsmlib/gsm_error.h" -+# 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_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 CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT 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 DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ALLOCA GSM_VERSION MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE GLIBC2 GLIBC21 INTL_MACOSX_LIBS HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB COMPILE_INTL_TRUE COMPILE_INTL_FALSE LIBOBJS LTLIBOBJS' -+ac_subst_files='' - - # Initialize some variables set by options. - ac_init_help= -@@ -812,7 +822,7 @@ - - # Be sure to have absolute paths. - for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ -- localstatedir libdir includedir oldincludedir infodir mandir -+ localstatedir libdir includedir oldincludedir infodir mandir - do - eval ac_val=$`echo $ac_var` - case $ac_val in -@@ -852,10 +862,10 @@ - # 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 || -+ X"$0" : 'X\(//\)[^/]' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || - echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } -@@ -878,6 +888,9 @@ - { (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 -@@ -919,6 +932,18 @@ - 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. -@@ -952,9 +977,9 @@ - cat <<_ACEOF - Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX -- [$ac_default_prefix] -+ [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX -- [PREFIX] -+ [PREFIX] - - By default, \`make install' will install all the files in - \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -@@ -998,24 +1023,31 @@ - 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 builds -- --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-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) -- --disable-rpath do not hardcode runtime library paths - --disable-nls do not use Native Language Support -+ --disable-rpath do not hardcode runtime library paths - - 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-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-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib -+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-included-gettext use the GNU gettext library included here -- --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib -+ --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - - Some influential environment variables: -@@ -1028,6 +1060,9 @@ - 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. -@@ -1065,12 +1100,45 @@ - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac --# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be --# absolute. --ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` --ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` --ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` --ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` -+ -+# 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. -@@ -1081,13 +1149,13 @@ - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || -- test -f $ac_srcdir/configure.in; then -+ 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 -+ cd "$ac_popdir" - done - fi - -@@ -1095,8 +1163,7 @@ - if $ac_init_version; then - cat <<\_ACEOF - --Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 --Free Software Foundation, Inc. -+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 -@@ -1108,7 +1175,7 @@ - running configure, to aid debugging if configure makes a mistake. - - It was created by $as_me, which was --generated by GNU Autoconf 2.53. Invocation command line was -+generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -@@ -1160,27 +1227,54 @@ - - # 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= --for ac_arg -+ac_must_keep_next=false -+for ac_pass in 1 2 - do -- case $ac_arg in -- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -- | --no-cr | --no-c | -n ) continue ;; -- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) -- continue ;; -- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) -- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; -- esac -- case " $ac_configure_args " in -- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. -- *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" -- ac_sep=" " ;; -- esac -- # Get rid of the leading space. -+ 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 -@@ -1191,6 +1285,7 @@ - # Save into config.log some information that might help in debugging. - { - echo -+ - cat <<\_ASBOX - ## ---------------- ## - ## Cache variables. ## -@@ -1203,16 +1298,45 @@ - 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" -+ "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" -+ "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 - ## ----------- ## -@@ -1220,14 +1344,14 @@ - ## ----------- ## - _ASBOX - echo -- sed "/^$/d" confdefs.h -+ 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.* *.core && -+ rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -@@ -1307,7 +1431,7 @@ - # 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 -+ 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" -@@ -1324,13 +1448,13 @@ - ,);; - *) - 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:$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:$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:$LINENO: current value: $ac_new_val" >&5 - echo "$as_me: current value: $ac_new_val" >&2;} -- ac_cache_corrupted=: -+ ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. -@@ -1378,6 +1502,7 @@ - - - -+ - ac_aux_dir= - for ac_dir in scripts $srcdir/scripts; do - if test -f $ac_dir/install-sh; then -@@ -1414,6 +1539,7 @@ - # 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 -@@ -1430,6 +1556,7 @@ - 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. -@@ -1437,20 +1564,20 @@ - # 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 -+ 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 - ;; -@@ -1685,9 +1812,7 @@ - # 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 -- set dummy "$as_dir/$ac_word" ${1+"$@"} -- shift -- ac_cv_prog_CC="$@" -+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi - fi - fi -@@ -1792,8 +1917,10 @@ - fi - - --test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 --echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} -+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. -@@ -1817,15 +1944,12 @@ - (exit $ac_status); } - - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -1835,12 +1959,12 @@ - } - _ACEOF - ac_clean_files_save=$ac_clean_files --ac_clean_files="$ac_clean_files a.out a.exe" -+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" >&5 --echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 -+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 -@@ -1854,26 +1978,39 @@ - # 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= --for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; -- ls a.out conftest 2>/dev/null; -- ls a.* conftest.* 2>/dev/null`; do -+# 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 | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; -- a.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 --akim. -- export ac_cv_exeext -- break;; -- * ) break;; -+ *.$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 --cat conftest.$ac_ext >&5 --{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 --echo "$as_me: error: C compiler cannot create executables" >&2;} -+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 - -@@ -1900,9 +2037,11 @@ - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. --If you meant to cross compile, use \`--host'." >&5 -+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'." >&2;} -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -@@ -1910,7 +2049,7 @@ - echo "$as_me:$LINENO: result: yes" >&5 - echo "${ECHO_T}yes" >&6 - --rm -f a.out a.exe conftest$ac_cv_exeext -+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. -@@ -1930,18 +2069,21 @@ - # 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 `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do -+for ac_file in conftest.exe conftest conftest.*; do -+ test -f "$ac_file" || continue - case $ac_file in -- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -- export ac_cv_exeext -- break;; -+ export ac_cv_exeext -+ break;; - * ) break;; - esac - done - else -- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 --echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} -+ { { 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 - -@@ -1958,15 +2100,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -1983,16 +2122,19 @@ - (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 ) ;; -+ *.$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 --cat conftest.$ac_ext >&5 --{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 --echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} -+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 - -@@ -2008,15 +2150,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2030,11 +2169,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2043,10 +2191,11 @@ - ac_compiler_gnu=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_compiler_gnu=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cv_c_compiler_gnu=$ac_compiler_gnu - - fi -@@ -2062,15 +2211,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2081,11 +2227,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2094,10 +2249,11 @@ - ac_cv_prog_cc_g=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_cv_prog_cc_g=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -@@ -2116,6 +2272,120 @@ - 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 -@@ -2127,19 +2397,27 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 \ -- ''\ -- '#include ' \ -+ '' \ - '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 ();' \ -@@ -2147,16 +2425,13 @@ - 'void exit (int);' - do - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+#include - int - main () - { -@@ -2167,11 +2442,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2180,20 +2464,18 @@ - : - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - continue - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2204,11 +2486,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -2217,9 +2508,10 @@ - break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done - rm -f conftest* - if test -n "$ac_declaration"; then -@@ -2230,9 +2522,10 @@ - - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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' -@@ -2249,8 +2542,11 @@ - ac_check_lib_save_LIBS=$LIBS - LIBS="-lintl $LIBS" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 -@@ -2259,12 +2555,6 @@ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char textdomain (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -2275,11 +2565,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -2288,10 +2587,12 @@ - ac_cv_lib_intl_textdomain=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_cv_lib_intl_textdomain=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+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_intl_textdomain" >&5 -@@ -2306,14 +2607,10 @@ - fi - - --# Add the stamp file to the list of files AC keeps track of, --# along with our hook. --ac_config_headers="$ac_config_headers gsm_config.h" -+ ac_config_headers="$ac_config_headers gsm_config.h" - - -- -- --am__api_version="1.6" -+am__api_version="1.9" - 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 -@@ -2372,7 +2669,6 @@ - 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` - -@@ -2386,6 +2682,39 @@ - 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. -@@ -2426,15 +2755,15 @@ - 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_,'` -+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}"' -+ @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=` -@@ -2455,24 +2784,25 @@ - SET_MAKE="MAKE=${MAKE-make}" - fi - --rm -f .deps 2>/dev/null --mkdir .deps 2>/dev/null --if test -d .deps; then -- DEPDIR=.deps -+rm -rf .tst 2>/dev/null -+mkdir .tst 2>/dev/null -+if test -d .tst; then -+ am__leading_dot=. - else -- # MS-DOS does not allow filenames that begin with a dot. -- DEPDIR=_deps -+ am__leading_dot=_ - fi --rmdir .deps 2>/dev/null -+rmdir .tst 2>/dev/null - -+DEPDIR="${am__leading_dot}deps" - --ac_config_commands="$ac_config_commands depfiles" -+ ac_config_commands="$ac_config_commands depfiles" - - - am_make=${MAKE-make} - cat > confinc << 'END' --doit: -+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 -@@ -2487,7 +2817,7 @@ - # 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 | fgrep -v 'ing directory'`" = "done"; then -+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -@@ -2528,7 +2858,7 @@ - - - -- # test to see if srcdir already configured -+# 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 -@@ -2536,6 +2866,16 @@ - { (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=gsmlib - VERSION=1.10 -@@ -2566,9 +2906,6 @@ - - MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -- --AMTAR=${AMTAR-"${am_missing_run}tar"} -- - install_sh=${install_sh-"$am_aux_dir/install-sh"} - - # Installed binaries are usually stripped using `strip' when the user -@@ -2661,6 +2998,13 @@ - - # 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 -' -+ -+ - - - depcc="$CC" am_compiler_list= -@@ -2681,18 +3025,34 @@ - # 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. -- echo '#include "conftest.h"' > conftest.c -- echo 'int i;' > conftest.h -- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf -+ : > 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) -@@ -2710,13 +3070,25 @@ - # 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=conftest.c object=conftest.o \ -- depfile=conftest.Po tmpdepfile=conftest.TPo \ -- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && -- grep conftest.h conftest.Po > /dev/null 2>&1 && -+ 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 -- am_cv_CC_dependencies_compiler_type=$depmode -- break -+ # 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 - -@@ -2733,30 +3105,44 @@ - - - -+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 -+ -+ -+ - - # 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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_shared=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac -+ 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; - -+ - if test "$CXXFLAGS" = ""; then - CXXFLAGS="-O2" - fi -@@ -2774,46 +3160,50 @@ - 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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_static=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac -+ 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. -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," -- for pkg in $enableval; do -- if test "X$pkg" = "X$p"; then -- enable_fast_install=yes -- fi -- done -- IFS="$ac_save_ifs" -- ;; --esac -+ 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 -@@ -2868,16 +3258,77 @@ - host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - --# Find the correct PATH separator. Usually this is `:', but --# DJGPP uses `;' like DOS. --if test "X${PATH_SEPARATOR+set}" != Xset; then -- UNAME=${UNAME-`uname 2>/dev/null`} -- case X$UNAME in -- *-DOS) lt_cv_sys_path_separator=';' ;; -- *) lt_cv_sys_path_separator=':' ;; -- esac -- PATH_SEPARATOR=$lt_cv_sys_path_separator -+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 -+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 -+ -+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 -+ - - - # Check whether --with-gnu-ld or --without-gnu-ld was given. -@@ -2890,8 +3341,8 @@ - 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 GCC" >&5 --echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 -+ 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 -@@ -2901,12 +3352,12 @@ - esac - case $ac_prog in - # Accept absolute paths. -- [\\/]* | [A-Za-z]:[\\/]*) -+ [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' -- # Canonicalize the path of ld -- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` -+ # 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%/%"` -+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; -@@ -2930,22 +3381,26 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - if test -z "$LD"; then -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ 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 GNU ld's only accept -v. -+ # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -+ case `"$lt_cv_path_LD" -v 2>&1 &6 - else -- # I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -+ # 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 -@@ -2989,7 +3447,20 @@ - 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 --test -n "$reload_flag" && reload_flag=" $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='$CC -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 -@@ -3000,35 +3471,42 @@ - # Let the user override the test. - lt_cv_path_NM="$NM" - else -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do -+ IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. -- tmp_nm=$ac_dir/${ac_tool_prefix}nm -- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then -+ tmp_nm="$ac_dir/${ac_tool_prefix}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 -- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then -+ 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 -- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- lt_cv_path_NM="$tmp_nm -p" -- break -- else -- 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 -- fi -+ ;; -+ *) -+ 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="$ac_save_ifs" -+ IFS="$lt_save_ifs" - 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: result: $NM" >&5 --echo "${ECHO_T}$NM" >&6 - - echo "$as_me:$LINENO: checking whether ln -s works" >&5 - echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -@@ -3041,8 +3519,8 @@ - echo "${ECHO_T}no, using $LN_S" >&6 - fi - --echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 --echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 -+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 -@@ -3056,7 +3534,7 @@ - # '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 egrep regex. -+# 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. - -@@ -3069,37 +3547,36 @@ - lt_cv_deplibs_check_method=pass_all - ;; - --bsdi4*) -+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* | mingw* | pw32*) -+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='file_magic Mach-O dynamically linked shared library' -- lt_cv_file_magic_cmd='/usr/bin/file -L' -- case "$host_os" in -- rhapsody* | darwin1.[012]) -- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` -- ;; -- *) # Darwin 1.3 on -- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' -- ;; -- esac -+ lt_cv_deplibs_check_method=pass_all - ;; - --freebsd*) -+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)/i[3-9]86 (compact )?demand paged shared library' -+ 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.*` - ;; -@@ -3113,50 +3590,44 @@ - lt_cv_deplibs_check_method=pass_all - ;; - --hpux10.20*|hpux11*) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -+hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -- ;; -- --irix5* | irix6*) -- case $host_os in -- irix5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" -+ 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 - ;; - *) -- case $LD in -- *-32|*"-32 ") libmagic=32-bit;; -- *-n32|*"-n32 ") libmagic=N32;; -- *-64|*"-64 ") libmagic=64-bit;; -- *) libmagic=never-match;; -- esac -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" -+ 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 -- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` -+ ;; -+ -+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-gnu*) -- case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) -- lt_cv_deplibs_check_method=pass_all ;; -- *) -- # glibc up to 2.1.1 does not perform some relocations on ARM -- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; -- esac -- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` -+linux*) -+ lt_cv_deplibs_check_method=pass_all - ;; - --netbsd*) -+netbsd* | netbsdelf*-gnu | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then -- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -+ 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$' -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -@@ -3166,20 +3637,19 @@ - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -+nto-qnx*) -+ lt_cv_deplibs_check_method=unknown -+ ;; -+ - openbsd*) -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else -- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - - osf3* | osf4* | osf5*) -- # this will be overridden with pass_all, but let us keep it just in case -- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' -- lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -@@ -3189,11 +3659,6 @@ - - solaris*) - lt_cv_deplibs_check_method=pass_all -- lt_cv_file_magic_test_file=/lib/libc.so -- ;; -- --sysv5uw[78]* | sysv4*uw2*) -- lt_cv_deplibs_check_method=pass_all - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -@@ -3214,8 +3679,15 @@ - 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 -+ ;; - esac - ;; -+ -+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; - esac - - fi -@@ -3223,207 +3695,208 @@ - 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"} - -+# 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" - --# 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" >&5 --echo $ECHO_N "checking command to parse $NM output... $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 the above into a raw symbol and a C symbol. --symxfrm='\1 \2\3 \3' -- --# Transform an extracted symbol line into a proper C declaration --lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" -- --# Transform an extracted symbol line into symbol name and symbol address --lt_cv_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 -- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -- ;; --irix*) -- symcode='[BCDEGRST]' -- ;; --solaris* | sysv5*) -- symcode='[BDT]' -- ;; --sysv4) -- symcode='[DFNSTU]' -- ;; --esac -- --# Handle CRLF in mingw tool chain --opt_cr= --case $host_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. --if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then -- symcode='[ABCDGISTW]' --fi -- --# Try without a prefix undercore, then with it. --for ac_symprfx in "" "_"; do -- -- # 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 < 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 -- # 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 -+ 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 3740 "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); } && 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 -+ (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* -+ ;; - -- # Make sure that we snagged all the symbols we need. -- if egrep ' nm_test_var$' "$nlist" >/dev/null; then -- if egrep ' nm_test_func$' "$nlist" >/dev/null; then -- cat < conftest.$ac_ext --#ifdef __cplusplus --extern "C" { --#endif -+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* -+ ;; - --EOF -- # Now generate the symbol file. -- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' -+*-*-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 --#if defined (__STDC__) && __STDC__ --# define lt_ptr void * --#else --# define lt_ptr char * --# define const --#endif -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --/* The mapping between symbol names and symbols. */ --const struct { -- const char *name; -- lt_ptr address; --} --lt_preloaded_symbols[] = -+int -+main () - { --EOF -- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext -- cat <<\EOF >> conftest.$ac_ext -- {0, (lt_ptr) 0} --}; - --#ifdef __cplusplus -+ ; -+ return 0; - } --#endif --EOF -- # Now try linking the two files. -- mv conftest.$ac_objext conftstm.$ac_objext -- save_LIBS="$LIBS" -- save_CFLAGS="$CFLAGS" -- LIBS="conftstm.$ac_objext" -- CFLAGS="$CFLAGS$no_builtin_flag" -- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+_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); } && test -s conftest; then -- pipe_works=yes -- fi -- LIBS="$save_LIBS" -- CFLAGS="$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 -+ (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 - --global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" --if test -z "$lt_cv_sys_global_symbol_pipe"; then -- global_symbol_to_cdecl= -- global_symbol_to_c_name_address= --else -- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" -- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" --fi --if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; --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: 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 -+ ;; -+ -+esac -+ -+need_locks="$enable_libtool_lock" -+ - - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' -@@ -3448,24 +3921,34 @@ - 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3476,7 +3959,8 @@ - : - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Broken: fails on valid input. - continue - fi -@@ -3485,20 +3969,24 @@ - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3510,7 +3998,8 @@ - continue - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Passes both tests. - ac_preproc_ok=: - break -@@ -3539,24 +4028,34 @@ - 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3567,7 +4066,8 @@ - : - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Broken: fails on valid input. - continue - fi -@@ -3576,20 +4076,24 @@ - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3601,7 +4105,8 @@ - continue - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - # Passes both tests. - ac_preproc_ok=: - break -@@ -3614,8 +4119,10 @@ - if $ac_preproc_ok; then - : - else -- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 --echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} -+ { { 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 - -@@ -3632,49 +4139,67 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 - ac_status=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -+ (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 -- cat conftest.$ac_ext >&5 -- ac_cv_header_stdc=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_header_stdc=no - fi --rm -f conftest.err conftest.$ac_ext -+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 --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 -+ $EGREP "memchr" >/dev/null 2>&1; then - : - else - ac_cv_header_stdc=no -@@ -3686,13 +4211,16 @@ - 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 --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 -+ $EGREP "free" >/dev/null 2>&1; then - : - else - ac_cv_header_stdc=no -@@ -3707,16 +4235,20 @@ - : - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) - # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) - #endif - -@@ -3727,7 +4259,7 @@ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) -- || toupper (i) != TOUPPER (i)) -+ || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); - } -@@ -3747,11 +4279,12 @@ - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ( exit $ac_status ) - ac_cv_header_stdc=no - fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - fi - fi -@@ -3776,7 +4309,7 @@ - - - for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ -- inttypes.h stdint.h unistd.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 -@@ -3785,19 +4318,31 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -3806,10 +4351,11 @@ - eval "$as_ac_Header=yes" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - eval "$as_ac_Header=no" - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -@@ -3840,18 +4386,30 @@ - echo "$as_me:$LINENO: checking $ac_header usability" >&5 - echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -3860,10 +4418,11 @@ - ac_header_compiler=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_header_compiler=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 - -@@ -3871,20 +4430,24 @@ - echo "$as_me:$LINENO: checking $ac_header presence" >&5 - echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -@@ -3895,7 +4458,8 @@ - ac_header_preproc=yes - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ac_header_preproc=no - fi - rm -f conftest.err conftest.$ac_ext -@@ -3903,26 +4467,43 @@ - echo "${ECHO_T}$ac_header_preproc" >&6 - - # So? What about this header? --case $ac_header_compiler:$ac_header_preproc in -- yes:no ) -+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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- no:yes ) -+ { 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: 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: 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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" -+ 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 -@@ -3937,159 +4518,65 @@ - - done - -- -- -- -- --# 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 -+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 -- case $MAGIC_CMD in -- /*) -- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. -- ;; -- ?:/*) -- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. -- ;; -- *) -- ac_save_MAGIC_CMD="$MAGIC_CMD" -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -- ac_dummy="/usr/bin:$PATH" -- for ac_dir in $ac_dummy; do -- 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 -+ 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 - --EOF -- fi ;; -- esac -- fi -- break -- fi -- done -- IFS="$ac_save_ifs" -- MAGIC_CMD="$ac_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 -+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 - --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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. -- ;; -- *) -- ac_save_MAGIC_CMD="$MAGIC_CMD" -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -- ac_dummy="/usr/bin:$PATH" -- for ac_dir in $ac_dummy; do -- 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 -+ test -n "$CXX" && break - done -- IFS="$ac_save_ifs" -- MAGIC_CMD="$ac_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 -- --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 -+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_RANLIB+set}" = set; then -+if test "${ac_cv_prog_ac_ct_CXX+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. -+ 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 -@@ -4098,7 +4585,7 @@ - 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" -+ ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -@@ -4107,4958 +4594,18846 @@ - - fi - fi --RANLIB=$ac_cv_prog_RANLIB --if test -n "$RANLIB"; then -- echo "$as_me:$LINENO: result: $RANLIB" >&5 --echo "${ECHO_T}$RANLIB" >&6 -+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 - --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 -+ test -n "$ac_ct_CXX" && break - done -+test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - -- 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 -+ CXX=$ac_ct_CXX - 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 -+# 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 -- 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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --fi --fi --STRIP=$ac_cv_prog_STRIP --if test -n "$STRIP"; then -- echo "$as_me:$LINENO: result: $STRIP" >&5 --echo "${ECHO_T}$STRIP" >&6 -+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:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 --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 "$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 -- 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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - -- 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 -+int -+main () -+{ - -- STRIP=$ac_ct_STRIP --else -- STRIP="$ac_cv_prog_STRIP" --fi -- -- --enable_dlopen=no --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 -- --# Some flags need to be propagated to the compiler or linker for good --# libtool support. --case $host in --*-*-irix6*) -- # Find out which ABI we are using. -- echo '#line 4259 "configure"' > conftest.$ac_ext -- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+ ; -+ 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); }; then -- 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 -- 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 -+ (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_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 --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+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 conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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 -- lt_cv_cc_needs_belf=yes -+ : - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --lt_cv_cc_needs_belf=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+continue - fi --rm -f 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 -+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 --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 -- ;; -+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 - --esac -+depcc="$CXX" am_compiler_list= - --# Sed substitution that helps us do robust quoting. It backslashifies --# metacharacters that are still active within double-quoted strings. --Xsed='sed -e s/^X//' --sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' -+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 - --# Same as above, but do not quote variable references. --double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' -+ 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 - --# Sed substitution to delay expansion of an escaped shell variable in a --# double_quote_subst'ed string. --delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+ 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 - --# Constants: --rm="rm -f" -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_CXX_dependencies_compiler_type=none -+fi - --# Global variables: --default_ofile=libtool --can_build_shared=yes -+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 - --# All known linkers require a `.a' archive for static linking (except M$VC, --# which needs '.lib'). --libext=a --ltmain="$ac_aux_dir/ltmain.sh" --ofile="$default_ofile" --with_gnu_ld="$lt_cv_prog_gnu_ld" --need_locks="$enable_libtool_lock" - --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 "$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 "$OBJDUMP" && OBJDUMP=objdump --test -z "$RANLIB" && RANLIB=: --test -z "$STRIP" && STRIP=: --test -z "$ac_objext" && ac_objext=o -- --if test x"$host" != x"$build"; then -- ac_tool_prefix=${host_alias}- --else -- ac_tool_prefix= --fi -- --# Transform linux* to *-*-linux-gnu*, to support old configure scripts. --case $host_os in --linux-gnu*) ;; --linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` --esac -- --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 -- --# 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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -- ;; -- *) -- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -- ;; -- esac -- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" --fi - --# Allow CC to be a program name with arguments. --set dummy $CC --compiler="$2" -- --echo "$as_me:$LINENO: checking for objdir" >&5 --echo $ECHO_N "checking for objdir... $ECHO_C" >&6 --rm -f .libs 2>/dev/null --mkdir .libs 2>/dev/null --if test -d .libs; then -- objdir=.libs -+if -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then -+ am__fastdepCXX_TRUE= -+ am__fastdepCXX_FALSE='#' - else -- # MS-DOS does not allow filenames that begin with a dot. -- objdir=_libs -+ am__fastdepCXX_TRUE='#' -+ am__fastdepCXX_FALSE= - fi --rmdir .libs 2>/dev/null --echo "$as_me:$LINENO: result: $objdir" >&5 --echo "${ECHO_T}$objdir" >&6 - - - --# 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 - --# We assume here that the value for lt_cv_prog_cc_pic will not be cached --# in isolation, and that seeing it set (from the cache) indicates that --# the associated values are set (in the cache) correctly too. --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 "${lt_cv_prog_cc_pic+set}" = set; then -+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 -- lt_cv_prog_cc_pic= -- lt_cv_prog_cc_shlib= -- lt_cv_prog_cc_wl= -- lt_cv_prog_cc_static= -- lt_cv_prog_cc_no_builtin= -- lt_cv_prog_cc_can_build_shared=$can_build_shared -- -- if test "$GCC" = yes; then -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-static' -- -- case $host_os in -- aix*) -- # Below there is a dirty hack to force normal static linking with -ldl -- # The problem is because libdl dynamically linked with both libc and -- # libC (AIX C++ library), which obviously doesn't included in libraries -- # list by gcc. This cause undefined symbols with -static flags. -- # This hack allows C programs to be linked with "-static -ldl", but -- # not sure about C++ programs. -- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" -- ;; -- 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' -- ;; -- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) -- # PIC is the default for these OSes. -- ;; -- darwin* | rhapsody*) -- # PIC is the default on this platform -- # Common symbols not allowed in MH_DYLIB files -- lt_cv_prog_cc_pic='-fno-common' -- ;; -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- sysv4*MP*) -- if test -d /usr/nec; then -- lt_cv_prog_cc_pic=-Kconform_pic -- fi -- ;; -- *) -- lt_cv_prog_cc_pic='-fPIC' -- ;; -- esac -+ # 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 -- # PORTME Check for PIC flags for the system compiler. -- case $host_os in -- aix3* | aix4* | aix5*) -- lt_cv_prog_cc_wl='-Wl,' -- # All AIX code is PIC. -- if test "$host_cpu" = ia64; then -- # AIX 5 now supports IA64 processor -- lt_cv_prog_cc_static='-Bstatic' -- else -- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' -- fi -- ;; -- -- hpux9* | hpux10* | hpux11*) -- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" -- lt_cv_prog_cc_pic='+Z' -- ;; -- -- irix5* | irix6*) -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- # PIC (with -KPIC) is the default. -- ;; -- -- cygwin* | 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_cv_prog_cc_pic='-DDLL_EXPORT' -- ;; -- -- newsos6) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- osf3* | osf4* | osf5*) -- # All OSF/1 code is PIC. -- lt_cv_prog_cc_wl='-Wl,' -- lt_cv_prog_cc_static='-non_shared' -- ;; -- -- sco3.2v5*) -- lt_cv_prog_cc_pic='-Kpic' -- lt_cv_prog_cc_static='-dn' -- lt_cv_prog_cc_shlib='-belf' -- ;; -- -- solaris*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Wl,' -- ;; -- -- sunos4*) -- lt_cv_prog_cc_pic='-PIC' -- lt_cv_prog_cc_static='-Bstatic' -- lt_cv_prog_cc_wl='-Qoption ld ' -- ;; -- -- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -- lt_cv_prog_cc_pic='-KPIC' -- lt_cv_prog_cc_static='-Bstatic' -- if test "x$host_vendor" = xsni; then -- lt_cv_prog_cc_wl='-LD' -- else -- lt_cv_prog_cc_wl='-Wl,' -- fi -- ;; -- -- uts4*) -- lt_cv_prog_cc_pic='-pic' -- lt_cv_prog_cc_static='-Bstatic' -- ;; -- -- sysv4*MP*) -- if test -d /usr/nec ;then -- lt_cv_prog_cc_pic='-Kconform_pic' -- lt_cv_prog_cc_static='-Bstatic' -- fi -- ;; -- -- *) -- lt_cv_prog_cc_can_build_shared=no -- ;; -- esac -+ ac_cpp_err= - fi -- --fi -- --if test -z "$lt_cv_prog_cc_pic"; then -- echo "$as_me:$LINENO: result: none" >&5 --echo "${ECHO_T}none" >&6 - else -- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 --echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 -- -- # Check to make sure the pic_flag actually works. -- echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 --echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 -- if test "${lt_cv_prog_cc_pic_works+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ : - else -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext - -- ; -- return 0; --} -+ # OK, works on sane cases. Now check whether non-existent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { ac_try='test -s conftest.$ac_objext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- case $host_os in -- hpux9* | hpux10* | hpux11*) -- # On HP-UX, both CC and GCC only warn that PIC is supported... then -- # they create non-PIC objects. So, if there were any warnings, we -- # assume that PIC is not supported. -- if test -s conftest.err; then -- lt_cv_prog_cc_pic_works=no -- else -- lt_cv_prog_cc_pic_works=yes -- fi -- ;; -- *) -- lt_cv_prog_cc_pic_works=yes -- ;; -- esac -- -+ (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 --cat conftest.$ac_ext >&5 -- lt_cv_prog_cc_pic_works=no -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ # Passes both tests. -+ac_preproc_ok=: -+break - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- CFLAGS="$save_CFLAGS" -+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 - -- if test "X$lt_cv_prog_cc_pic_works" = Xno; then -- lt_cv_prog_cc_pic= -- lt_cv_prog_cc_can_build_shared=no -- else -- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" -- fi -- -- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 --echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 - fi -- --# Check for any special shared library compilation flags. --if test -n "$lt_cv_prog_cc_shlib"; then -- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 --echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} -- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : -- else -- { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 --echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} -- lt_cv_prog_cc_can_build_shared=no -- fi --fi -- --echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 --echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 --if test "${lt_cv_prog_cc_static_works+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ CXXCPP=$ac_cv_prog_CXXCPP - else -- lt_cv_prog_cc_static_works=no -- save_LDFLAGS="$LDFLAGS" -- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" -+ 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 --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include - #endif --int --main () --{ -- -- ; -- return 0; --} -+ Syntax error - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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); } && -- { ac_try='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&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); }; }; then -- lt_cv_prog_cc_static_works=yes -+ (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 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -- LDFLAGS="$save_LDFLAGS" -+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 - --# Belt *and* braces to stop my trousers falling down: --test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= --echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 --echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 - --pic_flag="$lt_cv_prog_cc_pic" --special_shlib_compile_flags="$lt_cv_prog_cc_shlib" --wl="$lt_cv_prog_cc_wl" --link_static_flag="$lt_cv_prog_cc_static" --no_builtin_flag="$lt_cv_prog_cc_no_builtin" --can_build_shared="$lt_cv_prog_cc_can_build_shared" -+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 - --# Check to see if options -o and -c are simultaneously supported by compiler --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_compiler_c_o+set}" = set; then -+ 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 - --$rm -r conftest 2>/dev/null --mkdir conftest --cd conftest --echo "int some_variable = 0;" > conftest.$ac_ext --mkdir out --# According to Tom Tromey, Ian Lance Taylor reported there are C compilers --# that will create temporary files in the current directory regardless of --# the output directory. Thus, making CWD read-only will cause this test --# to fail, enabling locking or at least warning the user not to do parallel --# builds. --chmod -w . --save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" --compiler_c_o=no --if { (eval echo configure:4795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 -- if test -s out/conftest.err; then -- lt_cv_compiler_c_o=no -- else -- lt_cv_compiler_c_o=yes -- fi --else -- # Append any errors to the config.log. -- cat out/conftest.err 1>&5 -- lt_cv_compiler_c_o=no --fi --CFLAGS="$save_CFLAGS" --chmod u+w . --$rm conftest* out/* --rmdir out --cd .. --rmdir conftest --$rm -r conftest 2>/dev/null -+ test -n "$ac_ct_F77" && break -+done - -+ F77=$ac_ct_F77 - fi - --compiler_c_o=$lt_cv_compiler_c_o --echo "$as_me:$LINENO: result: $compiler_c_o" >&5 --echo "${ECHO_T}$compiler_c_o" >&6 -- --if test x"$compiler_c_o" = x"yes"; then -- # Check to see if we can write to a .lo -- echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 --echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 -- if test "${lt_cv_compiler_o_lo+set}" = set; then -+ -+# Provide some information about the compiler. -+echo "$as_me:5311:" \ -+ "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 -- -- lt_cv_compiler_o_lo=no -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -c -o conftest.lo" -- save_objext="$ac_objext" -- ac_objext=lo - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ program main -+#ifndef __GNUC__ -+ choke me - #endif --int --main () --{ --int some_variable = 0; -- ; -- return 0; --} -+ -+ end - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- lt_cv_compiler_o_lo=no -- else -- lt_cv_compiler_o_lo=yes -- fi -- -+ ac_compiler_gnu=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- ac_objext="$save_objext" -- CFLAGS="$save_CFLAGS" -+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 - -- compiler_o_lo=$lt_cv_compiler_o_lo -- echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 --echo "${ECHO_T}$compiler_o_lo" >&6 --else -- compiler_o_lo=no - fi -- --# Check to see if we can do hard links to lock some files if needed --hard_links="nottested" --if test "$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 -+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 -- need_locks=no --fi -- --if test "$GCC" = yes; then -- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler -- 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 -- echo "int some_variable = 0;" > conftest.$ac_ext -- save_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" -- compiler_rtti_exceptions=no -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ FFLAGS=-g -+cat >conftest.$ac_ext <<_ACEOF -+ program main - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --int some_variable = 0; -- ; -- return 0; --} -+ end - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -- # The compiler can only warn and ignore the option if not recognized -- # So say no if there are warnings -- if test -s conftest.err; then -- compiler_rtti_exceptions=no -- else -- compiler_rtti_exceptions=yes -- fi -- -+ ac_cv_prog_f77_g=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_prog_f77_g=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- CFLAGS="$save_CFLAGS" -- echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 --echo "${ECHO_T}$compiler_rtti_exceptions" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -- if test "$compiler_rtti_exceptions" = "yes"; then -- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' -+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 -- no_builtin_flag=' -fno-builtin' -+ FFLAGS= - fi - fi - --# See if the linker supports building shared libraries. --echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 --echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 -+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 - --allow_undefined_flag= --no_undefined_flag= --need_lib_prefix=unknown --need_version=unknown --# when you set need_version to no, make sure it does not cause -set_version --# flags to be left without arguments --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_into_libs=no --hardcode_libdir_flag_spec= --hardcode_libdir_separator= --hardcode_direct=no --hardcode_minus_L=no --hardcode_shlibpath_var=unsupported --runpath_var= --link_all_deplibs=unknown --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 egrep regular expression 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= - --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 -- ;; --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}' - -- # See if GNU ld supports shared libraries. -- case $host_os in -- aix3* | aix4* | aix5*) -- # On AIX, the GNU linker is very broken -- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. -- 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. -+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - --EOF -+# 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 - ;; - -- 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 use -- # them. -- ld_shlibs=no -+ 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; - ;; - -- beos*) -- if $LD --help 2>&1 | egrep ': 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*) -+ # 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; - ;; - -- cygwin* | mingw* | pw32*) -- # 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=yes -- -- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ -- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ -- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ -- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ -- else $CC -o impgen impgen.c ; fi)~ -- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' -- -- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' -- -- # cygwin and mingw dlls have different entry points and sets of symbols -- # to exclude. -- # FIXME: what about values for MSVC? -- dll_entry=__cygwin_dll_entry@12 -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ -- case $host_os in -- mingw*) -- # mingw values -- dll_entry=_DllMainCRTStartup@12 -- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ -- ;; -- esac -- -- # mingw and cygwin differ, and it's simplest to just exclude the union -- # of the two symbol sets. -- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 -- -- # recent cygwin and mingw systems supply a stub DllMain which the user -- # can override, but on older systems we have to supply one (in ltdll.c) -- if test "x$lt_cv_need_dllmain" = "xyes"; then -- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " -- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ -- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' -- else -- ltdll_obj= -- ltdll_cmds= -- fi -- -- # Extract the symbol export list from an `--export-all' def file, -- # then regenerate the def file from the symbol export list, so that -- # the compiled dll only exports the symbol export list. -- # Be careful not to strip the DATA tag left be newer dlltools. -- export_symbols_cmds="$ltdll_cmds"' -- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ -- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' -- -- # If the export-symbols file already is a .def file (1st line -- # is EXPORTS), use it as is. -- # If DATA tags from a recent dlltool are present, honour them! -- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then -- cp $export_symbols $output_objdir/$soname-def; -- else -- echo EXPORTS > $output_objdir/$soname-def; -- _lt_hint=1; -- cat $export_symbols | while read symbol; do -- set dummy \$symbol; -- case \$# in -- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; -- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; -- esac; -- _lt_hint=`expr 1 + \$_lt_hint`; -- done; -- fi~ -- '"$ltdll_cmds"' -- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ -- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ -- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' -+ 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*) -- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -- wlarc= -+ 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 -- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ 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` - ;; -- -- solaris* | sysv5*) -- if $LD -v 2>&1 | egrep '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 | egrep ': 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 -+ 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 - ;; -- -- 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 | egrep ': 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 -+ # 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 "$ld_shlibs" = yes; then -- runpath_var=LD_RUN_PATH -- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' -- export_dynamic_flag_spec='${wl}--export-dynamic' -- case $host_os in -- cygwin* | mingw* | pw32*) -- # dlltool doesn't understand --whole-archive et. al. -- whole_archive_flag_spec= -- ;; -- *) -- # ancient GNU ld didn't support --whole-archive et. al. -- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then -- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -- else -- whole_archive_flag_spec= -- fi -- ;; -- esac -- 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 "$link_static_flag"; 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 -- 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 -+fi - -- exp_sym_flag='-bexport' -- no_entry_flag='-bnoentry' -- 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 - -- # 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. - -- hardcode_direct=yes -- archive_cmds='' -- hardcode_libdir_separator=':' -- if test "$GCC" = yes; then -- case $host_os in aix4.[012]|aix4.[012].*) -- 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' -- else -- # not using gcc -- if test "$host_cpu" = ia64; then -- shared_flag='${wl}-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 can do strange things, 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' -- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' -- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" -- else -- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' -- # Warning - without using the other run time loading flags, -- # -berok will link without error, but may produce a broken library. -- allow_undefined_flag='${wl}-berok' -- # This is a bit strange, but is similar to how AIX traditionally builds -- # it's shared libraries. -- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' -- fi -- 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 - -- 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 -- ;; -+# These are sane defaults that work on at least a few old systems. -+# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -- 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 -- # 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"`' -- ;; -- -- darwin* | rhapsody*) -- case "$host_os" in -- rhapsody* | darwin1.[012]) -- allow_undefined_flag='-undefined suppress' -- ;; -- *) # Darwin 1.3 on -- allow_undefined_flag='-flat_namespace -undefined suppress' -- ;; -- esac -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' -- # We need to add '_' to the symbols in $export_symbols first -- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- whole_archive_flag_spec='-all_load $convenience' -- ;; -- -- 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 -- ;; -+# Character class describing NM global symbol codes. -+symcode='[BCDEGRST]' - -- # 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 -- ;; -+# Regexp to match symbols that can be accessed directly from C. -+sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -- freebsd*) -- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_direct=yes -- hardcode_shlibpath_var=no -- ;; -+# 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'" - -- hpux9* | hpux10* | hpux11*) -- case $host_os in -- hpux9*) 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' ;; -- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; -- esac -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_libdir_separator=: -- hardcode_direct=yes -- hardcode_minus_L=yes # Not in the search PATH, but as the default -- # location of the library. -- export_dynamic_flag_spec='${wl}-E' -- ;; -+# 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'" - -- irix5* | irix6*) -- 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' -- fi -- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -- hardcode_libdir_separator=: -- link_all_deplibs=yes -- ;; -+# 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* | sysv5*) -+ symcode='[BDRT]' -+ ;; -+sysv4) -+ symcode='[DFNSTU]' -+ ;; -+esac - -- 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 -- ;; -+# 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 - -- 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 -- ;; -+# If we're using GNU nm, then use its standard symbol codes. -+case `$NM -V 2>&1` in -+*GNU* | *'with BFD'*) -+ symcode='[ABCDGIRSTW]' ;; -+esac - -- 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 $linker_flags' -- 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 $linker_flags' -- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -- ;; -- esac -- fi -- ;; -+# Try without a prefix undercore, then with it. -+for ac_symprfx in "" "_"; do - -- 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' -- ;; -+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. -+ symxfrm="\\1 $ac_symprfx\\2 \\2" - -- 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=: -- ;; -+ # 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'" - -- 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 "-exported_symbol " >> $lib.exp; echo "\$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 ${objdir}/so_locations -o $lib~$rm $lib.exp' -+ # Check to see that the pipe works correctly. -+ pipe_works=no - -- #Both c and cxx compiler support -rpath directly -- hardcode_libdir_flag_spec='-rpath $libdir' -- fi -- hardcode_libdir_separator=: -- ;; -+ rm -f conftest* -+ cat > conftest.$ac_ext <, C++ libraries end up with a separate -- # (to the application) exception stack for one thing. -- no_undefined_flag=' -z defs' -- if test "$GCC" = yes; then -- case `$CC --version 2>/dev/null` in -- [12].*) -- cat <&2 -+ 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 -+ # 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 - --*** Warning: Releases of GCC earlier than version 3.0 cannot reliably --*** create self contained shared libraries on Solaris systems, without --*** introducing a dependency on libgcc.a. Therefore, libtool is disabling --*** -no-undefined support, which will at least allow you to build shared --*** libraries. However, you may find that when you link such libraries --*** into an application without using GCC, you have to manually add --*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to --*** upgrade to a newer version of GCC. Another option is to rebuild your --*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. -+ # 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 -- no_undefined_flag= -- ;; -- esac -- fi -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec='-R$libdir' -- hardcode_shlibpath_var=no -- case $host_os in -- solaris2.[0-5] | solaris2.[0-5].*) ;; -- *) # Supported since Solaris 2.6 (maybe 2.5.1?) -- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; -- 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) -- if test "x$host_vendor" = xsno; then -- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes # is this really true??? -- else -- 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 -- fi -- 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' -- ;; -- -- sysv5*) -- no_undefined_flag=' -z text' -- # $CC -shared without GNU ld will not create a library from C++ -- # object files and a static libstdc++, better avoid it by now -- 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' -- hardcode_libdir_flag_spec= -- hardcode_shlibpath_var=no -- runpath_var='LD_RUN_PATH' -- ;; -- -- uts4*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -- -- dgux*) -- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -- hardcode_libdir_flag_spec='-L$libdir' -- hardcode_shlibpath_var=no -- ;; -+ # Now generate the symbol file. -+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - -- 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 -- ;; -+ cat <> conftest.$ac_ext -+#if defined (__STDC__) && __STDC__ -+# define lt_ptr_t void * -+#else -+# define lt_ptr_t char * -+# define const -+#endif - -- sysv4.2uw2*) -- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -- hardcode_direct=yes -- hardcode_minus_L=no -- hardcode_shlibpath_var=no -- hardcode_runpath_var=yes -- runpath_var=LD_RUN_PATH -- ;; -+/* 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} -+}; - -- sysv5uw7* | unixware7*) -- no_undefined_flag='${wl}-z ${wl}text' -- if test "$GCC" = yes; then -- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+#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 -- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi -- runpath_var='LD_RUN_PATH' -- 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 -- --# Check hardcoding attributes. --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"; then -+ else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ fi -+ rm -f conftest* conftst* - -- # 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 "$hardcode_shlibpath_var" != no && -- test "$hardcode_minus_L" != no; then -- # Linking always hardcodes the temporary library directory. -- hardcode_action=relink -+ # Do not use the global_symbol_pipe unless it works. -+ if test "$pipe_works" = yes; then -+ break - else -- # We can link without hardcoding, and we can hardcode nonexisting dirs. -- hardcode_action=immediate -+ 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 -- # We cannot hardcode anything, or else we can only hardcode existing -- # directories. -- hardcode_action=unsupported -+ echo "$as_me:$LINENO: result: ok" >&5 -+echo "${ECHO_T}ok" >&6 - fi --echo "$as_me:$LINENO: result: $hardcode_action" >&5 --echo "${ECHO_T}$hardcode_action" >&6 - --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 -+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 -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 - --reload_cmds='$LD$reload_flag -o $output$reload_objs' --test -z "$deplibs_check_method" && deplibs_check_method=unknown - --# PORTME Fill in your ld.so characteristics --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= --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" --sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - --case $host_os in --aix3*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix $libname.a' -- shlibpath_var=LIBPATH - -- # AIX has no versioning support, so we append a major version to the name. -- soname_spec='${libname}${release}.so$major' -- ;; - --aix4* | aix5*) -- version_type=linux -- if test "$host_cpu" = ia64; then -- # AIX 5 supports IA64 -- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' -- 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}.so$versuffix ${libname}${release}.so$major $libname.so' -- 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}.so$major' -- fi -- shlibpath_var=LIBPATH -+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 - --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' -- ;; -+# 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' - --beos*) -- library_names_spec='${libname}.so' -- dynamic_linker="$host_os ld.so" -- shlibpath_var=LIBRARY_PATH -- ;; -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - --bsdi4*) -- version_type=linux -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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" -- export_dynamic_flag_spec=-rdynamic -- # 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 -- ;; -+# Sed substitution to delay expansion of an escaped shell variable in a -+# double_quote_subst'ed string. -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - --cygwin* | mingw* | pw32*) -- version_type=windows -- need_version=no -- need_lib_prefix=no -- case $GCC,$host_os in -- yes,cygwin*) -- library_names_spec='$libname.dll.a' -- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' -- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ -- dldir=$destdir/`dirname \$dlpath`~ -- test -d \$dldir || mkdir -p \$dldir~ -- $install_prog .libs/$dlname \$dldir/$dlname' -- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ -- dlpath=$dir/\$dldll~ -- $rm \$dlpath' -- ;; -- yes,mingw*) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' -- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "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 "$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="\$RANLIB -t \$oldlib~$old_postinstall_cmds" -+ ;; -+ *) -+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" -+ ;; -+ 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=no -+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"} -+ -+# 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' >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' >conftest.err -+_lt_linker_boilerplate=`cat conftest.err` -+$rm conftest* -+ -+ -+# -+# Check for any special shared library compilation flags. -+# -+lt_prog_cc_shlib= -+if test "$GCC" = no; then -+ case $host_os in -+ sco3.2v5*) -+ lt_prog_cc_shlib='-belf' -+ ;; -+ esac -+fi -+if test -n "$lt_prog_cc_shlib"; then -+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 -+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} -+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : -+ else -+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 -+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} -+ lt_cv_prog_cc_can_build_shared=no -+ fi -+fi -+ -+ -+# -+# Check to make sure the static flag actually works. -+# -+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 -+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static 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_prog_compiler_static" -+ 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 > conftest.exp -+ $SED '/^$/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 -+ -+ -+ -+ -+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:6407: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:6411: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ lt_prog_compiler_pic='-Kpic' -+ lt_prog_compiler_static='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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:6669: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:6673: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:6731: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:6735: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ 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 -+ link_all_deplibs=no -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld='+b $libdir' -+ hardcode_libdir_separator=: -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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=: -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var=no -+ export_dynamic_flag_spec='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=yes -+ hardcode_minus_L=no -+ hardcode_shlibpath_var=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ no_undefined_flag='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sysv5*) -+ no_undefined_flag=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ 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' -+ hardcode_libdir_flag_spec= -+ hardcode_shlibpath_var=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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); */ -+ } -+ -+ 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_unknown|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 librarie types wil 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 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC -+ -+# 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=$lt_predep_objects -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects -+ -+# 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=$lt_compiler_lib_search_path -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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 -+ -+ # 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_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"} -+ -+# 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' >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' >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 -+ 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 -+ 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols_CXX=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_CXX=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$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 -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir' -+ hardcode_libdir_separator_CXX=: -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec_CXX='-L$libdir' -+ ;; -+ *) -+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ export_dynamic_flag_spec_CXX='${wl}-E' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*) -+ hardcode_direct_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ ;; -+ ia64*) -+ hardcode_direct_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ hardcode_minus_L_CXX=yes # Not in the search PATH, -+ # but as the default -+ # location of the library. -+ ;; -+ *) -+ 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*|ia64*) -+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ 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 -+ ia64*|hppa*64*) -+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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 -+ ;; -+ sco*) -+ archive_cmds_need_lc_CXX=no -+ case $cc_basename in -+ CC*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ 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 -+ ;; -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ archive_cmds_need_lc_CXX=no -+ ;; -+ 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 -+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= -+ ;; -+ 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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_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="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ lt_prog_compiler_pic_CXX='+Z' -+ ;; -+ esac -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ ;; -+ 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*) -+ ;; -+ sco*) -+ case $cc_basename in -+ CC*) -+ lt_prog_compiler_pic_CXX='-fPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ 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 -+ ;; -+ unixware*) -+ ;; -+ 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:11334: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:11338: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:11396: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:11400: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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' -+ ;; -+ linux*) -+ link_all_deplibs_CXX=no -+ ;; -+ *) -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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 -+ -+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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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_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 -+ 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" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ -+ -+# 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 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_CXX -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_CXX -+ -+# 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=$lt_predep_objects_CXX -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_CXX -+ -+# 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=$lt_compiler_lib_search_path_CXX -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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"} -+ -+# 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' >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' >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 -+ -+test "$ld_shlibs_F77" = no && can_build_shared=no -+ -+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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ lt_prog_compiler_pic_F77='-Kpic' -+ lt_prog_compiler_static_F77='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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:13764: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:13768: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:13826: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:13830: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ 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 -+ link_all_deplibs_F77=no -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols_F77=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_F77=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld_F77='+b $libdir' -+ hardcode_libdir_separator_F77=: -+ hardcode_direct_F77=no -+ hardcode_shlibpath_var_F77=no -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_direct_F77=no -+ hardcode_shlibpath_var_F77=no -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_F77=yes -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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=: -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_F77=no -+ export_dynamic_flag_spec_F77='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_F77=yes -+ hardcode_minus_L_F77=no -+ hardcode_shlibpath_var_F77=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ no_undefined_flag_F77='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ sysv5*) -+ no_undefined_flag_F77=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ 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' -+ hardcode_libdir_flag_spec_F77= -+ hardcode_shlibpath_var_F77=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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 -+ -+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 -+ -+ -+ -+# 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 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_F77 -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_F77 -+ -+# 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=$lt_predep_objects_F77 -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_F77 -+ -+# 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=$lt_compiler_lib_search_path_F77 -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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"} -+ -+# 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' >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' >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:15967: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:15971: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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' -+ ;; -+ -+ 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' -+ ;; -+ -+ sco3.2v5*) -+ lt_prog_compiler_pic_GCJ='-Kpic' -+ lt_prog_compiler_static_GCJ='-dn' -+ ;; -+ -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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:16229: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:16233: \$? = $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 >conftest.exp -+ $SED '/^$/d' conftest.err >conftest.er2 -+ if test ! -s conftest.err || 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 -+ -+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:16291: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:16295: \$? = $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 > out/conftest.exp -+ $SED '/^$/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.err || 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 -+ ;; -+ 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}--image-base=0x10000000 ${wl}--out-implib,$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}--image-base=0x10000000 ${wl}--out-implib,$lib' -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ 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 -+ link_all_deplibs_GCJ=no -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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* | sysv5*) -+ 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 -+ ;; -+ -+ 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 "$link_static_flag"; 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 $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_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' -+ # -bexpall does not export symbols beginning with underscore (_) -+ always_export_symbols_GCJ=yes -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_GCJ=' ' -+ 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 $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${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* | hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*|ia64*) -+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -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*|ia64*) -+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ *) -+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' -+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' -+ hardcode_libdir_separator_GCJ=: -+ hardcode_direct_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ ia64*) -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_direct_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_GCJ=yes -+ ;; -+ *) -+ 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 -+ ;; -+ 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* | netbsdelf*-gnu | knetbsd*-gnu) -+ 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=: -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_GCJ=no -+ export_dynamic_flag_spec_GCJ='${wl}-Bexport' -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ;; -+ -+ 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.2uw2*) -+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_GCJ=yes -+ hardcode_minus_L_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) -+ no_undefined_flag_GCJ='${wl}-z ${wl}text' -+ if test "$GCC" = yes; then -+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ sysv5*) -+ no_undefined_flag_GCJ=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ 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' -+ hardcode_libdir_flag_spec_GCJ= -+ hardcode_shlibpath_var_GCJ=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ -+ 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 -+ -+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 -+ -+# -+# 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 -+ 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 -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ 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' -+ ;; -+ -+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 -+ -+ # 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)); 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 /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+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 -+ 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" -+ ;; -+ -+sco3.2v5*) -+ version_type=osf -+ 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 -+ ;; -+ -+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.2uw2* | sysv4.3* | sysv5*) -+ 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 -+ ;; -+ -+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 -+ -+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 -+ -+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" -+ 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); */ -+ } -+ -+ 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_unknown|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 -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ 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); */ -+ } -+ -+ 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_unknown|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" - ;; -- yes,pw32*) -- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' -+ 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 -+ -+ -+# 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 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"/'` - ;; -- *) -- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' -+ 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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_GCJ -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_GCJ -+ -+# 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=$lt_predep_objects_GCJ -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_GCJ -+ -+# 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=$lt_compiler_lib_search_path_GCJ -+ -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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"} -+ -+# 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' >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' >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 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 -- 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 -- # FIXME: Relying on posixy $() will cause problems for -- # cross-compilation, but unfortunately the echo tests do not -- # yet detect zsh echo's removal of \ escapes. -- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' -- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' -- shlibpath_overrides_runpath=yes -- shlibpath_var=DYLD_LIBRARY_PATH -- ;; -+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 -+ -+# A language-specific compiler. -+CC=$lt_compiler_RC -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_RC -+ -+# 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=$lt_predep_objects_RC -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=$lt_postdep_objects_RC -+ -+# 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=$lt_compiler_lib_search_path_RC -+ -+# 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 - --freebsd1*) -- dynamic_linker=no -- ;; -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var - --freebsd*) -- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` -- version_type=freebsd-$objformat -- case $version_type in -- freebsd-elf*) -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- need_version=no -- need_lib_prefix=no -- ;; -- freebsd-*) -- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' -- need_version=yes -- ;; -- esac -- shlibpath_var=LD_LIBRARY_PATH -- case $host_os in -- freebsd2*) -- shlibpath_overrides_runpath=yes -- ;; -- *) -- shlibpath_overrides_runpath=no -- hardcode_into_libs=yes -- ;; -- esac -- ;; -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var - --gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- hardcode_into_libs=yes -- ;; -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath - --hpux9* | hpux10* | hpux11*) -- # Give a soname corresponding to the major version so that dld.sl refuses to -- # link against other versions. -- dynamic_linker="$host_os dld.sl" -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- shlibpath_var=SHLIB_PATH -- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' -- soname_spec='${libname}${release}.sl$major' -- # HP-UX runs *really* slowly unless shared libraries are mode 555. -- postinstall_cmds='chmod 555 $lib' -- ;; -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action_RC - --irix5* | irix6*) -- version_type=irix -- need_lib_prefix=no -- need_version=no -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' -- case $host_os in -- irix5*) -- libsuff= shlibsuff= -- ;; -- *) -- case $LD in # libtool.m4 will add one of these switches to LD -- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; -- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; -- *-64|*"-64 ") 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}" -- ;; -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs - --# No shared lib support for Linux oldld, aout, or coff. --linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) -- dynamic_linker=no -- ;; -+# 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 - --# This must be Linux ELF. --linux-gnu*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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 -+# 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 - -- # 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' -- ;; -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC - --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}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- dynamic_linker='NetBSD (a.out) ld.so' -- else -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' -- soname_spec='${libname}${release}.so$major' -- dynamic_linker='NetBSD ld.elf_so' -+# 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=$lt_sys_lib_search_path_spec -+ -+# 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 -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- hardcode_into_libs=yes -- ;; -+fi - --newsos6) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- shlibpath_overrides_runpath=yes -- ;; - --openbsd*) -- version_type=sunos -- need_lib_prefix=no -- need_version=no -- 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 -+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 -- shlibpath_overrides_runpath=yes -+ 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 -- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' -- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -+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 - --os2*) -- libname_spec='$name' -- need_lib_prefix=no -- library_names_spec='$libname.dll $libname.a' -- dynamic_linker='OS/2 ld.exe' -- shlibpath_var=LIBPATH -- ;; - --osf3* | osf4* | osf5*) -- version_type=osf -- need_version=no -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -- 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" -- ;; - --sco3.2v5*) -- version_type=osf -- soname_spec='${libname}${release}.so$major' -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- ;; - --solaris*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- case $host_vendor in -- sni) -- shlibpath_overrides_runpath=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 -- ;; - --uts4*) -- version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; - --dgux*) -- version_type=linux -- need_lib_prefix=no -- need_version=no -- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -- soname_spec='${libname}${release}.so$major' -- shlibpath_var=LD_LIBRARY_PATH -- ;; - --sysv4*MP*) -- if test -d /usr/nec ;then -- version_type=linux -- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' -- soname_spec='$libname.so.$major' -- shlibpath_var=LD_LIBRARY_PATH -- fi -- ;; - --*) -- 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 - --# Report the final consequences. --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*) -- 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 - --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 - --variables_saved_for_relink="PATH $shlibpath_var $runpath_var" --if test "$GCC" = yes; then -- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" --fi - --if test "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 -- ;; - -- cygwin* | mingw* | pw32*) -- lt_cv_dlopen="LoadLibrary" -- lt_cv_dlopen_libs= -- ;; - -- *) -- 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 -+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 --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char shl_load (); below. */ --#include --/* 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 (); --char (*f) (); -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --/* 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 -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include - #else --f = shl_load; -+# include - #endif -- -- ; -- return 0; --} -+ Syntax error - _ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_func_shl_load=yes -+ (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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_func_shl_load=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+ ac_cpp_err=yes - 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 --#line $LINENO "configure" --#include "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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --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>&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 -+if test -z "$ac_cpp_err"; then -+ : - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_dld_shl_load=no --fi --rm -f 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 --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char dlopen (); below. */ --#include --/* 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 (); --char (*f) (); -+sed 's/^/| /' conftest.$ac_ext >&5 - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --/* 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 --f = dlopen; --#endif -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext - -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+ # 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); }; }; then -- ac_cv_func_dlopen=yes -+ (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 --cat conftest.$ac_ext >&5 --ac_cv_func_dlopen=no -+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 --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+ -+ done -+ ac_cv_prog_CPP=$CPP -+ - 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 -+ CPP=$ac_cv_prog_CPP - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-ldl $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ 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 --int --main () --{ --dlopen (); -- ; -- return 0; --} -+ Syntax error - _ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_lib_dl_dlopen=yes -+ (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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_dl_dlopen=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+ ac_cpp_err=yes - 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 -+if test -z "$ac_cpp_err"; then -+ : - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lsvld $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --/* 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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --dlopen (); -- ; -- return 0; --} -+ # 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 --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_lib_svld_dlopen=yes -+ (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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_svld_dlopen=no -+ ac_cpp_err=yes - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+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 --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" -+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: 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 "$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 -+ -+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 -- ac_check_lib_save_LIBS=$LIBS --LIBS="-ldld $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "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 (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --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>&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 -+ if test -n "$CXX"; then -+ ac_cv_prog_CXX="$CXX" # Let the user override the test. - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_dld_dld_link=no --fi --rm -f 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 -- -+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 -- -- ;; -- 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" -- 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 -+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 "$cross_compiling" = yes; then : -- lt_cv_dlopen_self=cross -+ if test -n "$ac_ct_CXX"; then -+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. - 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 -+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 - --/* 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 -+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 - --#ifdef __cplusplus --extern "C" void exit (int); --#endif -+ test -n "$ac_ct_CXX" && break -+done -+test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - --void fnord() { int i=42;} --int main () --{ -- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -- int status = $lt_dlunknown; -+ CXX=$ac_ct_CXX -+fi - -- if (self) -- { -- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -- /* dlclose (self); */ -- } - -- exit (status); --} --EOF -- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+# 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); } && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) 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_unknown|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 -+ (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); } - -- if test "x$lt_cv_dlopen_self" = xyes; then -- LDFLAGS="$LDFLAGS $link_static_flag" -- 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 "$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 -- 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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --void fnord() { int i=42;} --int main () -+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); */ -- } -+#ifndef __GNUC__ -+ choke me -+#endif - -- exit (status); -+ ; -+ return 0; - } --EOF -- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+_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); } && test -s conftest${ac_exeext} 2>/dev/null; then -- (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; -- esac -- else : -- # compilation failed -- lt_cv_dlopen_self_static=no -- fi --fi --rm -fr conftest* -+ (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: $lt_cv_dlopen_self_static" >&5 --echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 -- 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. */ - -- CPPFLAGS="$save_CPPFLAGS" -- LDFLAGS="$save_LDFLAGS" -- LIBS="$save_LIBS" -- ;; -- esac -+int -+main () -+{ - -- case $lt_cv_dlopen_self in -- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; -- *) enable_dlopen_self=unknown ;; -- esac -+ ; -+ 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 - -- case $lt_cv_dlopen_self_static in -- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; -- *) enable_dlopen_self_static=unknown ;; -- esac -+ac_cv_prog_cxx_g=no - fi -- -- --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 -- if test "${lt_cv_archive_cmds_need_lc+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+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 -- $rm conftest* -- echo 'static int dummy;' > conftest.$ac_ext -+ 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 - -- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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); }; then -- soname=conftest -- lib=conftest -- libobjs=conftest.$ac_objext -- deplibs= -- wl=$lt_cv_prog_cc_wl -- compiler_flags=-v -- linker_flags=-v -- verstring= -- output_objdir=. -- libname=conftest -- 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 -+ (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); } -- then -- lt_cv_archive_cmds_need_lc=no -+ (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=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 -+ -+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 -- lt_cv_archive_cmds_need_lc=yes -+ 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 -- allow_undefined_flag=$save_allow_undefined_flag -- else -- cat conftest.err 1>&5 - fi --fi -- -- echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 --echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 -- ;; -- esac --fi --need_lc=${lt_cv_archive_cmds_need_lc-yes} -+ done - --# The second 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 -- : -+ cd .. -+ rm -rf conftest.dir - 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. -- test -f Makefile && make "$ltmain" -+ am_cv_CXX_dependencies_compiler_type=none - fi - --if test -f "$ltmain"; then -- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 -- $rm -f "${ofile}T" -- -- echo creating $ofile -- -- # 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 CC LD LN_S NM SHELL \ -- reload_flag reload_cmds wl \ -- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ -- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ -- library_names_spec soname_spec \ -- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ -- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ -- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ -- old_striplib striplib file_magic_cmd export_symbols_cmds \ -- deplibs_check_method allow_undefined_flag no_undefined_flag \ -- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ -- global_symbol_to_c_name_address \ -- hardcode_libdir_flag_spec hardcode_libdir_separator \ -- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do -- -- case $var in -- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ -- old_postinstall_cmds | old_postuninstall_cmds | \ -- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ -- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ -- postinstall_cmds | postuninstall_cmds | \ -- finish_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 -+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 - -- cat <<__EOF__ > "${ofile}T" --#! $SHELL - --# `$echo "$ofile" | 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-2000 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. - --# Sed that helps us avoid accidentally triggering echo(1) options like -n. --Xsed="sed -e s/^X//" -+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 - --# The HP-UX ksh and POSIX shell print the target directory to stdout --# if CDPATH is set. --if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - --# ### BEGIN LIBTOOL CONFIG - --# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+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. */ - --# Shell to use when invoking shell scripts. --SHELL=$lt_SHELL -+#include -+main() -+{ -+#if defined(__GNUC__) && \ -+ ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -+ return 1; -+#endif -+ return 0; -+} - --# Whether or not to build shared libraries. --build_libtool_libs=$enable_shared -+_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 - --# Whether or not to build static libraries. --build_old_libs=$enable_static -+( exit $ac_status ) -+echo "need at least gcc 2.95 to compile correctly" -+exit 1 -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi - --# Whether or not to add -lc for building shared libraries. --build_libtool_need_lc=$need_lc -+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -+# for constant arguments. Useless! -+echo "$as_me:$LINENO: checking for working alloca.h" >&5 -+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 -+if test "${ac_cv_working_alloca_h+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 -+int -+main () -+{ -+char *p = (char *) alloca (2 * sizeof (int)); -+ ; -+ 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_working_alloca_h=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Whether or not to optimize for fast installation. --fast_install=$enable_fast_install -+ac_cv_working_alloca_h=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 -+if test $ac_cv_working_alloca_h = yes; then - --# The host system. --host_alias=$host_alias --host=$host -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_ALLOCA_H 1 -+_ACEOF - --# An echo program that does not interpret backslashes. --echo=$lt_echo -+fi - --# The archiver. --AR=$lt_AR --AR_FLAGS=$lt_AR_FLAGS -+echo "$as_me:$LINENO: checking for alloca" >&5 -+echo $ECHO_N "checking for alloca... $ECHO_C" >&6 -+if test "${ac_cv_func_alloca_works+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. */ -+#ifdef __GNUC__ -+# define alloca __builtin_alloca -+#else -+# ifdef _MSC_VER -+# include -+# define alloca _alloca -+# else -+# if HAVE_ALLOCA_H -+# include -+# else -+# ifdef _AIX -+ #pragma alloca -+# else -+# ifndef alloca /* predefined by HP cc +Olibcalls */ -+char *alloca (); -+# endif -+# endif -+# endif -+# endif -+#endif - --# The default C compiler. --CC=$lt_CC -+int -+main () -+{ -+char *p = (char *) alloca (1); -+ ; -+ 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_alloca_works=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Is the compiler the GNU C compiler? --with_gcc=$GCC -+ac_cv_func_alloca_works=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 - --# The linker used to build libraries. --LD=$lt_LD -+if test $ac_cv_func_alloca_works = yes; then - --# Whether we need hard or soft links. --LN_S=$lt_LN_S -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_ALLOCA 1 -+_ACEOF - --# A BSD-compatible nm program. --NM=$lt_NM -+else -+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions -+# that cause trouble. Some versions do not even contain alloca or -+# contain a buggy version. If you still want to use their alloca, -+# use ar to extract alloca.o from them instead of compiling alloca.c. - --# A symbol stripping program --STRIP=$STRIP -+ALLOCA=alloca.$ac_objext - --# Used to examine libraries when file_magic_cmd begins "file" --MAGIC_CMD=$MAGIC_CMD -+cat >>confdefs.h <<\_ACEOF -+#define C_ALLOCA 1 -+_ACEOF - --# Used on cygwin: DLL creation program. --DLLTOOL="$DLLTOOL" - --# Used on cygwin: object dumper. --OBJDUMP="$OBJDUMP" -+echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 -+if test "${ac_cv_os_cray+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. */ -+#if defined(CRAY) && ! defined(CRAY2) -+webecray -+#else -+wenotbecray -+#endif - --# Used on cygwin: assembler. --AS="$AS" -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "webecray" >/dev/null 2>&1; then -+ ac_cv_os_cray=yes -+else -+ ac_cv_os_cray=no -+fi -+rm -f conftest* - --# The name of the directory that contains temporary libtool files. --objdir=$objdir -+fi -+echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -+echo "${ECHO_T}$ac_cv_os_cray" >&6 -+if test $ac_cv_os_cray = yes; then -+ for ac_func in _getb67 GETB67 getb67; do -+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func - --# How to create reloadable object files. --reload_flag=$lt_reload_flag --reload_cmds=$lt_reload_cmds -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ - --# How to pass a linker flag through the compiler. --wl=$lt_wl -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif - --# Object file suffix (normally "o"). --objext="$ac_objext" -+#undef $ac_func - --# Old archive suffix (normally "a"). --libext="$libext" -+/* 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 $ac_func (); -+/* 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_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+char (*f) () = $ac_func; -+#endif -+#ifdef __cplusplus -+} -+#endif - --# Executable file suffix (normally ""). --exeext="$exeext" -+int -+main () -+{ -+return f != $ac_func; -+ ; -+ 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 -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Additional compiler flags for building library objects. --pic_flag=$lt_pic_flag --pic_mode=$pic_mode -+eval "$as_ac_var=no" -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -+if test `eval echo '${'$as_ac_var'}'` = yes; then - --# Does compiler simultaneously support -c and -o options? --compiler_c_o=$lt_compiler_c_o -+cat >>confdefs.h <<_ACEOF -+#define CRAY_STACKSEG_END $ac_func -+_ACEOF - --# Can we write directly to a .lo ? --compiler_o_lo=$lt_compiler_o_lo -+ break -+fi - --# Must we lock files when doing compilation ? --need_locks=$lt_need_locks -+ done -+fi - --# Do we need the lib prefix for modules? --need_lib_prefix=$need_lib_prefix -+echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 -+if test "${ac_cv_c_stack_direction+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ ac_cv_c_stack_direction=0 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+int -+find_stack_direction () -+{ -+ static char *addr = 0; -+ auto char dummy; -+ if (addr == 0) -+ { -+ addr = &dummy; -+ return find_stack_direction (); -+ } -+ else -+ return (&dummy > addr) ? 1 : -1; -+} - --# Do we need a version for libraries? --need_version=$need_version -+int -+main () -+{ -+ exit (find_stack_direction () < 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_c_stack_direction=1 -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Whether dlopen is supported. --dlopen_support=$enable_dlopen -+( exit $ac_status ) -+ac_cv_c_stack_direction=-1 -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 - --# Whether dlopen of programs is supported. --dlopen_self=$enable_dlopen_self -+cat >>confdefs.h <<_ACEOF -+#define STACK_DIRECTION $ac_cv_c_stack_direction -+_ACEOF - --# 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_link_static_flag -+fi - --# Compiler flag to turn off builtin functions. --no_builtin_flag=$lt_no_builtin_flag - --# Compiler flag to allow reflexive dlopens. --export_dynamic_flag_spec=$lt_export_dynamic_flag_spec -+echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 -+echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 -+if test "${ac_cv_lib_c_getopt_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lc $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --# Compiler flag to generate shared objects directly from archives. --whole_archive_flag_spec=$lt_whole_archive_flag_spec -+/* 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 getopt_long (); -+int -+main () -+{ -+getopt_long (); -+ ; -+ 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_c_getopt_long=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Compiler flag to generate thread-safe objects. --thread_safe_flag_spec=$lt_thread_safe_flag_spec -+ac_cv_lib_c_getopt_long=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_c_getopt_long" >&5 -+echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 -+if test $ac_cv_lib_c_getopt_long = yes; then -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_GETOPT_LONG 1 -+_ACEOF - --# Library versioning type. --version_type=$version_type -+fi - --# 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 -+echo "$as_me:$LINENO: checking for alarm in -lc" >&5 -+echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 -+if test "${ac_cv_lib_c_alarm+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lc $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --# The coded name of the library, if different from the real name. --soname_spec=$lt_soname_spec -+/* 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 alarm (); -+int -+main () -+{ -+alarm (); -+ ; -+ 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_c_alarm=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# 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 -+ac_cv_lib_c_alarm=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_c_alarm" >&5 -+echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 -+if test $ac_cv_lib_c_alarm = yes; then -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_ALARM 1 -+_ACEOF - --# Create an old-style archive from a shared archive. --old_archive_from_new_cmds=$lt_old_archive_from_new_cmds -+fi - --# 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 to strip libraries. --old_striplib=$lt_old_striplib --striplib=$lt_striplib -+for ac_header in netinet/in.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 - --# Method to check whether dependent libraries are shared objects. --deplibs_check_method=$lt_deplibs_check_method -+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 - --# Command to use when deplibs_check_method == file_magic. --file_magic_cmd=$lt_file_magic_cmd -+# 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 - --# Flag that allows shared libraries with undefined symbols to be built. --allow_undefined_flag=$lt_allow_undefined_flag -+ 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 - --# Flag that forces no undefined symbols. --no_undefined_flag=$lt_no_undefined_flag -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 - --# Commands used to finish a libtool library installation in a directory. --finish_cmds=$lt_finish_cmds -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --# Same as above, but a single script fragment to be evaled but not shown. --finish_eval=$lt_finish_eval -+fi - --# Take the output of nm and produce a listing of raw symbols and C names. --global_symbol_pipe=$lt_global_symbol_pipe -+done - --# Transform the output of nm in a proper C declaration --global_symbol_to_cdecl=$lt_global_symbol_to_cdecl - --# Transform the output of nm in a C name address pair --global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address - --# This is the shared library runtime path variable. --runpath_var=$runpath_var -+for ac_header in string.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 - --# This is the shared library path variable. --shlibpath_var=$shlibpath_var -+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 shlibpath searched before the hard-coded library search path? --shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+# 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 - --# How to hardcode a shared library path into an executable. --hardcode_action=$hardcode_action -+ 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 - --# Whether we should hardcode library paths into libraries. --hardcode_into_libs=$hardcode_into_libs -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 - --# 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 -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --# Whether we need a single -rpath flag with a separated argument. --hardcode_libdir_separator=$lt_hardcode_libdir_separator -+fi - --# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the --# resulting binary. --hardcode_direct=$hardcode_direct -+done - --# 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 - --# Variables whose values should be saved in libtool wrapper scripts and --# restored at relink time. --variables_saved_for_relink="$variables_saved_for_relink" -+for ac_header in libintl.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 - --# Whether libtool must link a program against all its dependency libraries. --link_all_deplibs=$link_all_deplibs -+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 - --# Compile-time system search path for libraries --sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -+# 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 - --# Run-time system search path for libraries --sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ 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 - --# Fix the shell variable \$srcfile for the compiler. --fix_srcfile_path="$fix_srcfile_path" -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 - --# Set to yes if exported symbols are required. --always_export_symbols=$always_export_symbols -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF - --# The commands to list exported symbols. --export_symbols_cmds=$lt_export_symbols_cmds -+fi - --# The commands to extract the exported symbol list from a shared archive. --extract_expsyms_cmds=$lt_extract_expsyms_cmds -+done - --# 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 -+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. */ - --# ### END LIBTOOL CONFIG -+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; - --__EOF__ -+ *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 - -- case $host_os in -- aix3*) -- cat <<\EOF >> "${ofile}T" -+ ; -+ 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 - --# 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 -+ac_cv_c_const=no - fi --EOF -- ;; -- esac -- -- case $host_os in -- cygwin* | mingw* | pw32* | os2*) -- cat <<'EOF' >> "${ofile}T" -- # This is a source program that is used to create dlls on Windows -- # Don't remove nor modify the starting and closing comments --# /* 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 */ -- # This is a source program that is used to create import libraries -- # on Windows for dlls which lack them. Don't remove nor modify the -- # starting and closing comments --# /* impgen.c starts here */ --# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. --# --# This file is part of GNU libtool. --# --# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --# */ --# --# #include /* for printf() */ --# #include /* for open(), lseek(), read() */ --# #include /* for O_RDONLY, O_BINARY */ --# #include /* for strdup() */ --# --# /* O_BINARY isn't required (or even defined sometimes) under Unix */ --# #ifndef O_BINARY --# #define O_BINARY 0 --# #endif --# --# static unsigned int --# pe_get16 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[2]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 2); --# return b[0] + (b[1]<<8); --# } --# --# static unsigned int --# pe_get32 (fd, offset) --# int fd; --# int offset; --# { --# unsigned char b[4]; --# lseek (fd, offset, SEEK_SET); --# read (fd, b, 4); --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# static unsigned int --# pe_as32 (ptr) --# void *ptr; --# { --# unsigned char *b = ptr; --# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); --# } --# --# int --# main (argc, argv) --# int argc; --# char *argv[]; --# { --# int dll; --# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; --# unsigned long export_rva, export_size, nsections, secptr, expptr; --# unsigned long name_rvas, nexp; --# unsigned char *expdata, *erva; --# char *filename, *dll_name; --# --# filename = argv[1]; --# --# dll = open(filename, O_RDONLY|O_BINARY); --# if (dll < 1) --# return 1; --# --# dll_name = filename; --# --# for (i=0; filename[i]; i++) --# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') --# dll_name = filename + i +1; --# --# pe_header_offset = pe_get32 (dll, 0x3c); --# opthdr_ofs = pe_header_offset + 4 + 20; --# num_entries = pe_get32 (dll, opthdr_ofs + 92); --# --# if (num_entries < 1) /* no exports */ --# return 1; --# --# export_rva = pe_get32 (dll, opthdr_ofs + 96); --# export_size = pe_get32 (dll, opthdr_ofs + 100); --# nsections = pe_get16 (dll, pe_header_offset + 4 +2); --# secptr = (pe_header_offset + 4 + 20 + --# pe_get16 (dll, pe_header_offset + 4 + 16)); --# --# expptr = 0; --# for (i = 0; i < nsections; i++) --# { --# char sname[8]; --# unsigned long secptr1 = secptr + 40 * i; --# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); --# unsigned long vsize = pe_get32 (dll, secptr1 + 16); --# unsigned long fptr = pe_get32 (dll, secptr1 + 20); --# lseek(dll, secptr1, SEEK_SET); --# read(dll, sname, 8); --# if (vaddr <= export_rva && vaddr+vsize > export_rva) --# { --# expptr = fptr + (export_rva - vaddr); --# if (export_rva + export_size > vaddr + vsize) --# export_size = vsize - (export_rva - vaddr); --# break; --# } --# } --# --# expdata = (unsigned char*)malloc(export_size); --# lseek (dll, expptr, SEEK_SET); --# read (dll, expdata, export_size); --# erva = expdata - export_rva; --# --# nexp = pe_as32 (expdata+24); --# name_rvas = pe_as32 (expdata+32); --# --# printf ("EXPORTS\n"); --# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) -- -- mv -f "${ofile}T" "$ofile" || \ -- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") -- chmod +x "$ofile" -+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 - - -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - --# 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 -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "vsnprintf" >/dev/null 2>&1; then -+ cat >>confdefs.h <<\_ACEOF -+#define HAVE_VSNPRINTF 1 -+_ACEOF - -+fi -+rm -f conftest* - - --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 "$as_me:$LINENO: checking for unsigned short int" >&5 -+echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_short_int+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. -- # 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+/* confdefs.h. */ - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((unsigned short int *) 0) -+ return 0; -+if (sizeof (unsigned short 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- : -+ (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_unsigned_short_int=yes - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- # Broken: fails on valid input. --continue -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_unsigned_short_int=no - fi --rm -f conftest.err conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 - -- # OK, works on sane cases. Now check whether non-existent headers -- # can be detected and how. -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+echo "$as_me:$LINENO: checking size of unsigned short int" >&5 -+echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$ac_cv_type_unsigned_short_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 --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+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 (unsigned short 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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- # Broken: success on invalid input. --continue -+ (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 (unsigned short 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 -- cat conftest.$ac_ext >&5 -- # Passes both tests. --ac_preproc_ok=: --break --fi --rm -f conftest.err conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 - --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 -+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 - -- done -- ac_cv_prog_CPP=$CPP -+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 (unsigned short int))) < 0)]; -+test_array [0] = 0 - --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. -- # 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 --#line $LINENO "configure" --#include "confdefs.h" --#include -- Syntax error -+ ; -+ return 0; -+} - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 - ac_status=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- 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 -- cat conftest.$ac_ext >&5 -- # Broken: fails on valid input. --continue --fi --rm -f conftest.err conftest.$ac_ext -+ (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 (unsigned short int))) >= $ac_mid)]; -+test_array [0] = 0 - -- # OK, works on sane cases. Now check whether non-existent headers -- # can be detected and how. -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+ ; -+ return 0; -+} - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 - ac_status=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- # Broken: success on invalid input. --continue -+ (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 -- cat 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" >&5 --echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&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 -- --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 -+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 --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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - 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 -+ 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 --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 -- -+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 (unsigned short int))) <= $ac_mid)]; -+test_array [0] = 0 - --# 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 -+ ; -+ 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); } --{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 -- (eval $ac_compiler -v &5) 2>&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); } --{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 -- (eval $ac_compiler -V &5) 2>&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); } -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --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 -+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_unsigned_short_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned short 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: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* 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 (unsigned short int)); } -+unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } -+#include -+#include - int - main () - { --#ifndef __GNUC__ -- choke me --#endif -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (unsigned short int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (unsigned short int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (unsigned short int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_compiler_gnu=yes -+ ac_cv_sizeof_unsigned_short_int=`cat conftest.val` - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_compiler_gnu=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext --ac_cv_cxx_compiler_gnu=$ac_compiler_gnu -+ 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 (unsigned short int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned short int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } - 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 -+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_unsigned_short_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int -+_ACEOF -+ -+ -+echo "$as_me:$LINENO: checking for unsigned long int" >&5 -+echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_long_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default - int - main () - { -- -+if ((unsigned long int *) 0) -+ return 0; -+if (sizeof (unsigned long int)) -+ return 0; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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_cxx_g=yes -+ ac_cv_type_unsigned_long_int=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_prog_cxx_g=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_unsigned_long_int=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 -+ -+echo "$as_me:$LINENO: checking size of unsigned long int" >&5 -+echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test "$GXX" = yes; then -- CXXFLAGS="-O2" -- else -- CXXFLAGS= -- fi --fi --for ac_declaration in \ -- ''\ -- '#include ' \ -- '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 --#line $LINENO "configure" --#include "confdefs.h" --#include --$ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ if test "$ac_cv_type_unsigned_long_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 () - { --exit (42); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&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 -s conftest.$ac_objext' -+ { 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 --cat conftest.$ac_ext >&5 --continue --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_declaration --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ 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 () - { --exit (42); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&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 -s conftest.$ac_objext' -+ { 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 -+ ac_hi=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --fi --rm -f 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=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 -- --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 -- -- 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 -- # 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. -- echo '#include "conftest.h"' > conftest.c -- echo 'int i;' > conftest.h -- echo "${am__include} ${am__quote}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=conftest.c object=conftest.o \ -- depfile=conftest.Po tmpdepfile=conftest.TPo \ -- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && -- grep conftest.h conftest.Po > /dev/null 2>&1 && -- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -- am_cv_CXX_dependencies_compiler_type=$depmode -- break -- fi -- done -- -- cd .. -- rm -rf conftest.dir --else -- am_cv_CXX_dependencies_compiler_type=none --fi -+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 --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 "$cross_compiling" = yes; then -- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#include --main() --{ --#if defined(__GNUC__) && \ -- ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -- return 1; --#endif -+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 (unsigned long int))) < 0)]; -+test_array [0] = 0 -+ -+ ; - return 0; - } -- - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --echo "need at least gcc 2.95 to compile correctly" --exit 1 --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi -- --# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works --# for constant arguments. Useless! --echo "$as_me:$LINENO: checking for working alloca.h" >&5 --echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 --if test "${ac_cv_working_alloca_h+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ 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 () - { --char *p = (char *) alloca (2 * sizeof (int)); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) >= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_working_alloca_h=yes -+ ac_lo=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_working_alloca_h=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 --echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 --if test $ac_cv_working_alloca_h = yes; then -- --cat >>confdefs.h <<\_ACEOF --#define HAVE_ALLOCA_H 1 --_ACEOF -+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 -- --echo "$as_me:$LINENO: checking for alloca" >&5 --echo $ECHO_N "checking for alloca... $ECHO_C" >&6 --if test "${ac_cv_func_alloca_works+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#ifdef __GNUC__ --# define alloca __builtin_alloca --#else --# ifdef _MSC_VER --# include --# define alloca _alloca --# else --# if HAVE_ALLOCA_H --# include --# else --# ifdef _AIX -- #pragma alloca --# else --# ifndef alloca /* predefined by HP cc +Olibcalls */ --char *alloca (); --# endif --# endif --# endif --# endif --#endif -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+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 () - { --char *p = (char *) alloca (1); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_func_alloca_works=yes -+ ac_hi=$ac_mid - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_func_alloca_works=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 --echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 -- --if test $ac_cv_func_alloca_works = yes; then -- --cat >>confdefs.h <<\_ACEOF --#define HAVE_ALLOCA 1 --_ACEOF -+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_unsigned_long_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned long int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac - else -- # The SVR3 libPW and SVR4 libucb both contain incompatible functions --# that cause trouble. Some versions do not even contain alloca or --# contain a buggy version. If you still want to use their alloca, --# use ar to extract alloca.o from them instead of compiling alloca.c. -- --ALLOCA=alloca.$ac_objext -- --cat >>confdefs.h <<\_ACEOF --#define C_ALLOCA 1 --_ACEOF -- -- --echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 --echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 --if test "${ac_cv_os_cray+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#if defined(CRAY) && ! defined(CRAY2) --webecray --#else --wenotbecray --#endif -+/* 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 (unsigned long int)); } -+unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (unsigned long int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (unsigned long int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (unsigned long int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - -+ ; -+ return 0; -+} - _ACEOF --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- egrep "webecray" >/dev/null 2>&1; then -- ac_cv_os_cray=yes -+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_unsigned_long_int=`cat conftest.val` - else -- ac_cv_os_cray=no --fi --rm -f conftest* -+ 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 (unsigned long int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned long int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } - fi --echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 --echo "${ECHO_T}$ac_cv_os_cray" >&6 --if test $ac_cv_os_cray = yes; then -- for ac_func in _getb67 GETB67 getb67; do -- as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` --echo "$as_me:$LINENO: checking for $ac_func" >&5 --echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 --if eval "test \"\${$as_ac_var+set}\" = set"; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. */ --#include --/* 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 $ac_func (); --char (*f) (); -+ ac_cv_sizeof_unsigned_long_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int -+_ACEOF - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ -+echo "$as_me:$LINENO: checking for unsigned int" >&5 -+echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_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 () - { --/* 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_$ac_func) || defined (__stub___$ac_func) --choke me --#else --f = $ac_func; --#endif -- -+if ((unsigned int *) 0) -+ return 0; -+if (sizeof (unsigned int)) -+ return 0; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_var=yes" -+ ac_cv_type_unsigned_int=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --eval "$as_ac_var=no" --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 --if test `eval echo '${'$as_ac_var'}'` = yes; then -- --cat >>confdefs.h <<_ACEOF --#define CRAY_STACKSEG_END $ac_func --_ACEOF -+sed 's/^/| /' conftest.$ac_ext >&5 - -- break -+ac_cv_type_unsigned_int=no - fi -- -- done -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 - --echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 --echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 --if test "${ac_cv_c_stack_direction+set}" = set; then -+echo "$as_me:$LINENO: checking size of unsigned int" >&5 -+echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_unsigned_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -+ if test "$ac_cv_type_unsigned_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 -- ac_cv_c_stack_direction=0 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ # 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 --find_stack_direction () -+main () - { -- static char *addr = 0; -- auto char dummy; -- if (addr == 0) -- { -- addr = &dummy; -- return find_stack_direction (); -- } -- else -- return (&dummy > addr) ? 1 : -1; --} -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned 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 () - { -- exit (find_stack_direction () < 0); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_stack_direction=1 -+ ac_hi=$ac_mid; break - else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --ac_cv_c_stack_direction=-1 --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 --echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 -- --cat >>confdefs.h <<_ACEOF --#define STACK_DIRECTION $ac_cv_c_stack_direction --_ACEOF -- -+ 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 -- -- --echo "$as_me:$LINENO: checking for getopt_long in -lc" >&5 --echo $ECHO_N "checking for getopt_long in -lc... $ECHO_C" >&6 --if test "${ac_cv_lib_c_getopt_long+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lc $LIBS" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 (unsigned int))) < 0)]; -+test_array [0] = 0 - --/* 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 getopt_long (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#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_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 () - { --getopt_long (); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_lib_c_getopt_long=yes -+ ac_lo=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_c_getopt_long=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS --fi --echo "$as_me:$LINENO: result: $ac_cv_lib_c_getopt_long" >&5 --echo "${ECHO_T}$ac_cv_lib_c_getopt_long" >&6 --if test $ac_cv_lib_c_getopt_long = yes; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_GETOPT_LONG 1 --_ACEOF -+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 -- -- --echo "$as_me:$LINENO: checking for alarm in -lc" >&5 --echo $ECHO_N "checking for alarm in -lc... $ECHO_C" >&6 --if test "${ac_cv_lib_c_alarm+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lc $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --/* 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 alarm (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+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 () - { --alarm (); -+static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; -+test_array [0] = 0 -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_lib_c_alarm=yes -+ ac_hi=$ac_mid - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_c_alarm=no --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS --fi --echo "$as_me:$LINENO: result: $ac_cv_lib_c_alarm" >&5 --echo "${ECHO_T}$ac_cv_lib_c_alarm" >&6 --if test $ac_cv_lib_c_alarm = yes; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_ALARM 1 --_ACEOF -- --fi -+sed 's/^/| /' conftest.$ac_ext >&5 - -- -- --for ac_header in netinet/in.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 -+ac_lo=`expr '(' $ac_mid ')' + 1` - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_unsigned_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac - 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 --#line $LINENO "configure" --#include "confdefs.h" -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&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 --#include <$ac_header> -+long longval () { return (long) (sizeof (unsigned int)); } -+unsigned long ulongval () { return (long) (sizeof (unsigned int)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (unsigned int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (unsigned int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (unsigned int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ -+ ; -+ return 0; -+} - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_header_compiler=yes -+ ac_cv_sizeof_unsigned_int=`cat conftest.val` - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --echo "${ECHO_T}$ac_header_compiler" >&6 -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# 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 --#line $LINENO "configure" --#include "confdefs.h" --#include <$ac_header> -+( exit $ac_status ) -+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (unsigned 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_unsigned_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -- ac_status=$? -- egrep -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 -- else -- ac_cpp_err= -+ -+ -+ -+GSM_VERSION="1:4:0" -+ -+ -+LINGUAS="de" -+ALL_LINGUAS=$LINGUAS -+ -+ -+ MKINSTALLDIRS= -+ if test -n "$ac_aux_dir"; then -+ case "$ac_aux_dir" in -+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; -+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; -+ esac - fi -+ if test -z "$MKINSTALLDIRS"; then -+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -+ fi -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -+echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 -+ # Check whether --enable-nls or --disable-nls was given. -+if test "${enable_nls+set}" = set; then -+ enableval="$enable_nls" -+ USE_NLS=$enableval - else -- ac_cpp_err=yes -+ USE_NLS=yes -+fi; -+ echo "$as_me:$LINENO: result: $USE_NLS" >&5 -+echo "${ECHO_T}$USE_NLS" >&6 -+ -+ -+ -+ -+ -+ -+# Prepare PATH_SEPARATOR. -+# 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 --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" - else -- echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+ ac_executable_p="test -f" - fi --rm -f conftest.err conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --echo "${ECHO_T}$ac_header_preproc" >&6 -+rm -f conf$$.file - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+# Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; 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_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- eval "$as_ac_Header=$ac_header_preproc" -+ case "$MSGFMT" in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&5 -+ if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && -+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" -+ ;; -+esac - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+MSGFMT="$ac_cv_path_MSGFMT" -+if test "$MSGFMT" != ":"; then -+ echo "$as_me:$LINENO: result: $MSGFMT" >&5 -+echo "${ECHO_T}$MSGFMT" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ # Extract the first word of "gmsgfmt", so it can be a program name with args. -+set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ case $GMSGFMT in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 - -+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" -+ ;; -+esac - fi --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -+GMSGFMT=$ac_cv_path_GMSGFMT - -+if test -n "$GMSGFMT"; then -+ echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -+echo "${ECHO_T}$GMSGFMT" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 - fi - --done - - -+# Prepare PATH_SEPARATOR. -+# 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 - --for ac_header in string.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 -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" -+else -+ ac_executable_p="test -f" - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+rm -f conf$$.file -+ -+# Extract the first word of "xgettext", so it can be a program name with args. -+set dummy xgettext; 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_XGETTEXT+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&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 --#line $LINENO "configure" --#include "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>&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 -+ case "$XGETTEXT" in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&5 -+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && -+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" -+ ;; -+esac -+fi -+XGETTEXT="$ac_cv_path_XGETTEXT" -+if test "$XGETTEXT" != ":"; then -+ echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -+echo "${ECHO_T}$XGETTEXT" >&6 - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 - fi --rm -f 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 --#line $LINENO "configure" --#include "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=$? -- egrep -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 -+ rm -f messages.po -+ -+ -+# Prepare PATH_SEPARATOR. -+# 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 -- ac_cpp_err= -+ PATH_SEPARATOR=: - fi --else -- ac_cpp_err=yes -+ rm -f conf$$.sh - fi --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" - else -- echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+ ac_executable_p="test -f" - fi --rm -f conftest.err conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 --echo "${ECHO_T}$ac_header_preproc" >&6 -+rm -f conf$$.file - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+# Extract the first word of "msgmerge", so it can be a program name with args. -+set dummy msgmerge; 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_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- eval "$as_ac_Header=$ac_header_preproc" -+ case "$MSGMERGE" in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ echo "$as_me: trying $ac_dir/$ac_word..." >&5 -+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then -+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" -+ ;; -+esac - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -- -+MSGMERGE="$ac_cv_path_MSGMERGE" -+if test "$MSGMERGE" != ":"; then -+ echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -+echo "${ECHO_T}$MSGMERGE" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&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 -+ if test "$GMSGFMT" != ":"; then -+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -+ echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -+echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 -+ GMSGFMT=":" -+ fi -+ fi -+ -+ if test "$XGETTEXT" != ":"; then -+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && -+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 -+ XGETTEXT=":" -+ fi -+ rm -f messages.po -+ fi - -+ ac_config_commands="$ac_config_commands default-1" - - --for ac_header in libintl.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 "$as_me:$LINENO: checking whether we are using the GNU C Library 2 or newer" >&5 -+echo $ECHO_N "checking whether we are using the GNU C Library 2 or newer... $ECHO_C" >&6 -+if test "${ac_cv_gnu_library_2+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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#include <$ac_header> -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { 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 -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ >= 2) -+ Lucky GNU user -+ #endif -+#endif -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then -+ ac_cv_gnu_library_2=yes - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no -+ ac_cv_gnu_library_2=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --echo "${ECHO_T}$ac_header_compiler" >&6 -+rm -f conftest* - --# 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 --#line $LINENO "configure" --#include "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=$? -- egrep -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 -- else -- ac_cpp_err= -- fi -+ -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2" >&5 -+echo "${ECHO_T}$ac_cv_gnu_library_2" >&6 -+ -+ GLIBC2="$ac_cv_gnu_library_2" -+ -+ -+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 -- ac_cpp_err=yes -+ 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 --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+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: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 - 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 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+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 -- 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 -+ 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 --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- -+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 - --done -- -+ RANLIB=$ac_ct_RANLIB -+else -+ RANLIB="$ac_cv_prog_RANLIB" -+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 "$as_me:$LINENO: checking for library containing strerror" >&5 -+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 -+if test "${ac_cv_search_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- ac_cv_prog_cc_stdc=no --ac_save_CC=$CC -+ ac_func_search_save_LIBS=$LIBS -+ac_cv_search_strerror=no - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "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; --} --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; --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* 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 strerror (); - int - main () - { --return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -+strerror (); - ; - 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>&5 -+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 -s conftest.$ac_objext' -+ { 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_prog_cc_stdc=$ac_arg --break -+ ac_cv_search_strerror="none required" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --fi --rm -f conftest.$ac_objext --done --rm -f conftest.$ac_ext conftest.$ac_objext --CC=$ac_save_CC -+sed 's/^/| /' conftest.$ac_ext >&5 - - fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test "$ac_cv_search_strerror" = no; then -+ for ac_lib in cposix; do -+ LIBS="-l$ac_lib $ac_func_search_save_LIBS" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - --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 -- --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 --#line $LINENO "configure" --#include "confdefs.h" -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* 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 strerror (); - 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 -+strerror (); -+ ; -+ 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_search_strerror="-l$ac_lib" -+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_exeext conftest.$ac_ext -+ done -+fi -+LIBS=$ac_func_search_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 -+echo "${ECHO_T}$ac_cv_search_strerror" >&6 -+if test "$ac_cv_search_strerror" != no; then -+ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" -+ -+fi -+ -+ -+ echo "$as_me:$LINENO: checking for signed" >&5 -+echo $ECHO_N "checking for signed... $ECHO_C" >&6 -+if test "${bh_cv_c_signed+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 () -+{ -+signed char x; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ bh_cv_c_signed=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_c_const=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+bh_cv_c_signed=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 -+echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5 -+echo "${ECHO_T}$bh_cv_c_signed" >&6 -+ if test $bh_cv_c_signed = no; then - - cat >>confdefs.h <<\_ACEOF --#define const -+#define signed - _ACEOF - --fi -- -- --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include -+ 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 --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- egrep "vsnprintf" >/dev/null 2>&1; then -- cat >>confdefs.h <<\_ACEOF --#define HAVE_VSNPRINTF 1 -+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* -+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 - - --echo "$as_me:$LINENO: checking for unsigned short int" >&5 --echo $ECHO_N "checking for unsigned short int... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_short_int+set}" = set; then -+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 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 --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { --if ((unsigned short int *) 0) -+if ((off_t *) 0) - return 0; --if (sizeof (unsigned short int)) -+if (sizeof (off_t)) - return 0; - ; - return 0; -@@ -9066,136 +23441,198 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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_unsigned_short_int=yes -+ ac_cv_type_off_t=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_short_int=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_off_t=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short_int" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_short_int" >&6 -+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 - --echo "$as_me:$LINENO: checking size of unsigned short int" >&5 --echo $ECHO_N "checking size of unsigned short int... $ECHO_C" >&6 --if test "${ac_cv_sizeof_unsigned_short_int+set}" = set; then -+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 -- if test "$ac_cv_type_unsigned_short_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 --#line $LINENO "configure" --#include "confdefs.h" -+ 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 --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) >= 0)]; --test_array [0] = 0 -- -+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>&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 -s conftest.$ac_objext' -+ { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ 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 long long" >&5 -+echo $ECHO_N "checking for long long... $ECHO_C" >&6 -+if test "${ac_cv_type_long_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. */ -+long long ll = 1LL; int i = 63; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) <= $ac_mid)]; --test_array [0] = 0 -- -+long long llmax = (long long) -1; -+ return ll << i | ll >> i | llmax / ll | llmax % ll; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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_hi=$ac_mid; break -+ ac_cv_type_long_long=yes - else - echo "$as_me: failed program was:" >&5 --cat 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` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_long_long=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -+echo "${ECHO_T}$ac_cv_type_long_long" >&6 -+ if test $ac_cv_type_long_long = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LONG_LONG 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for long double" >&5 -+echo $ECHO_N "checking for long double... $ECHO_C" >&6 -+if test "${gt_cv_c_long_double+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ if test "$GCC" = yes; then -+ gt_cv_c_long_double=yes -+ else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ -+ long double foo = 0.0; -+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ -+ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; -+ - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) < 0)]; --test_array [0] = 0 - - ; - return 0; -@@ -9203,33 +23640,62 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ gt_cv_c_long_double=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_long_double=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ fi -+fi -+echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5 -+echo "${ECHO_T}$gt_cv_c_long_double" >&6 -+ if test $gt_cv_c_long_double = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LONG_DOUBLE 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for wchar_t" >&5 -+echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6 -+if test "${gt_cv_c_wchar_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. */ -+#include -+ wchar_t foo = (wchar_t)'\0'; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) >= $ac_mid)]; --test_array [0] = 0 - - ; - return 0; -@@ -9237,55 +23703,61 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --cat 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.$ac_objext conftest.$ac_ext -- done -+ gt_cv_c_wchar_t=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo= ac_hi= -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_wchar_t=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --rm -f 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` -+echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5 -+echo "${ECHO_T}$gt_cv_c_wchar_t" >&6 -+ if test $gt_cv_c_wchar_t = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_WCHAR_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for wint_t" >&5 -+echo $ECHO_N "checking for wint_t... $ECHO_C" >&6 -+if test "${gt_cv_c_wint_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ wint_t foo = (wchar_t)'\0'; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned short int))) <= $ac_mid)]; --test_array [0] = 0 - - ; - return 0; -@@ -9293,437 +23765,717 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ gt_cv_c_wint_t=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo=`expr '(' $ac_mid ')' + 1` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_wint_t=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in --?*) ac_cv_sizeof_unsigned_short_int=$ac_lo;; --'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned short int), 77" >&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" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5 -+echo "${ECHO_T}$gt_cv_c_wint_t" >&6 -+ if test $gt_cv_c_wint_t = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_WINT_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for inttypes.h" >&5 -+echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 -+if test "${gl_cv_header_inttypes_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --long longval () { return (long) (sizeof (unsigned short int)); } --unsigned long ulongval () { return (long) (sizeof (unsigned short int)); } --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include - int - main () - { -- -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- exit (1); -- if (((long) (sizeof (unsigned short int))) < 0) -- { -- long i = longval (); -- if (i != ((long) (sizeof (unsigned short int)))) -- exit (1); -- fprintf (f, "%ld\n", i); -- } -- else -- { -- unsigned long i = ulongval (); -- if (i != ((long) (sizeof (unsigned short int)))) -- exit (1); -- fprintf (f, "%lu\n", i); -- } -- exit (ferror (f) || fclose (f) != 0); -- -+uintmax_t i = (uintmax_t) -1; - ; - return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_sizeof_unsigned_short_int=`cat conftest.val` --else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned short int), 77" >&2;} -- { (exit 1); exit 1; }; } --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --rm -f conftest.val -+ gl_cv_header_inttypes_h=yes - else -- ac_cv_sizeof_unsigned_short_int=0 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gl_cv_header_inttypes_h=no - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short_int" >&5 --echo "${ECHO_T}$ac_cv_sizeof_unsigned_short_int" >&6 -+echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5 -+echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6 -+ if test $gl_cv_header_inttypes_h = yes; then -+ - cat >>confdefs.h <<_ACEOF --#define SIZEOF_UNSIGNED_SHORT_INT $ac_cv_sizeof_unsigned_short_int -+#define HAVE_INTTYPES_H_WITH_UINTMAX 1 - _ACEOF - -+ fi - --echo "$as_me:$LINENO: checking for unsigned long int" >&5 --echo $ECHO_N "checking for unsigned long int... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_long_int+set}" = set; then -+ -+ echo "$as_me:$LINENO: checking for stdint.h" >&5 -+echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 -+if test "${gl_cv_header_stdint_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include - int - main () - { --if ((unsigned long int *) 0) -- return 0; --if (sizeof (unsigned long int)) -- return 0; -+uintmax_t i = (uintmax_t) -1; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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_unsigned_long_int=yes -+ gl_cv_header_stdint_h=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_long_int=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gl_cv_header_stdint_h=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_int" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_long_int" >&6 -+echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5 -+echo "${ECHO_T}$gl_cv_header_stdint_h" >&6 -+ if test $gl_cv_header_stdint_h = yes; then - --echo "$as_me:$LINENO: checking size of unsigned long int" >&5 --echo $ECHO_N "checking size of unsigned long int... $ECHO_C" >&6 --if test "${ac_cv_sizeof_unsigned_long_int+set}" = set; then -+cat >>confdefs.h <<_ACEOF -+#define HAVE_STDINT_H_WITH_UINTMAX 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking for intmax_t" >&5 -+echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 -+if test "${gt_cv_c_intmax_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test "$ac_cv_type_unsigned_long_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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#include -+#if HAVE_STDINT_H_WITH_UINTMAX -+#include -+#endif -+#if HAVE_INTTYPES_H_WITH_UINTMAX -+#include - #endif -+ - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) >= 0)]; --test_array [0] = 0 -- -+intmax_t x = -1; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+ gt_cv_c_intmax_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_c_intmax_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5 -+echo "${ECHO_T}$gt_cv_c_intmax_t" >&6 -+ if test $gt_cv_c_intmax_t = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_INTMAX_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5 -+echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6 -+if test "${gt_cv_func_printf_posix+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ if test "$cross_compiling" = yes; then -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ -+ notposix - #endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; --test_array [0] = 0 - -- ; -- return 0; -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "notposix" >/dev/null 2>&1; then -+ gt_cv_func_printf_posix="guessing no" -+else -+ gt_cv_func_printf_posix="guessing yes" -+fi -+rm -f conftest* -+ -+ -+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 -+/* The string "%2$d %1$d", with dollar characters protected from the shell's -+ dollar expansion (possibly an autoconf bug). */ -+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -+static char buf[100]; -+int main () -+{ -+ sprintf (buf, format, 33, 55); -+ return (strcmp (buf, "55 33") != 0); - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_hi=$ac_mid; break -+ gt_cv_func_printf_posix=yes - else -- echo "$as_me: failed program was:" >&5 --cat 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` -+ 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 ) -+gt_cv_func_printf_posix=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5 -+echo "${ECHO_T}$gt_cv_func_printf_posix" >&6 -+ case $gt_cv_func_printf_posix in -+ *yes) -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_POSIX_PRINTF 1 -+_ACEOF -+ -+ ;; -+ esac -+ -+ -+ -+for ac_header in stdlib.h unistd.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 -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+ # 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 --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - $ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) < 0)]; --test_array [0] = 0 -- -- ; -- return 0; --} -+#include <$ac_header> - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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); }; }; then -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long 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>&5 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -+ (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 -+ ac_header_compiler=yes - else - echo "$as_me: failed program was:" >&5 --cat 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` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_header_compiler=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+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 --cat conftest.$ac_ext >&5 --ac_lo= ac_hi= -+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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 --rm -f conftest.$ac_objext conftest.$ac_ext -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+ - fi --rm -f 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` -+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 -+ -+ -+for ac_func in getpagesize -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_var+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* 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 $ac_func (); -+/* 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_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+char (*f) () = $ac_func; -+#endif -+#ifdef __cplusplus -+} - #endif -+ - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned long int))) <= $ac_mid)]; --test_array [0] = 0 -- -+return f != $ac_func; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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_hi=$ac_mid -+ eval "$as_ac_var=yes" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo=`expr '(' $ac_mid ')' + 1` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+eval "$as_ac_var=no" -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ - fi --rm -f conftest.$ac_objext conftest.$ac_ext - done --case $ac_lo in --?*) ac_cv_sizeof_unsigned_long_int=$ac_lo;; --'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned long int), 77" >&2;} -- { (exit 1); exit 1; }; } ;; --esac -+ -+echo "$as_me:$LINENO: checking for working mmap" >&5 -+echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 -+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else - if test "$cross_compiling" = yes; then -- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+ ac_cv_func_mmap_fixed_mapped=no - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* 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 (unsigned long int)); } --unsigned long ulongval () { return (long) (sizeof (unsigned long int)); } --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* malloc might have been renamed as rpl_malloc. */ -+#undef malloc -+ -+/* Thanks to Mike Haertel and Jim Avera for this test. -+ Here is a matrix of mmap possibilities: -+ mmap private not fixed -+ mmap private fixed at somewhere currently unmapped -+ mmap private fixed at somewhere already mapped -+ mmap shared not fixed -+ mmap shared fixed at somewhere currently unmapped -+ mmap shared fixed at somewhere already mapped -+ For private mappings, we should verify that changes cannot be read() -+ back from the file, nor mmap's back from the file at a different -+ address. (There have been systems where private was not correctly -+ implemented like the infamous i386 svr4.0, and systems where the -+ VM page cache was not coherent with the file system buffer cache -+ like early versions of FreeBSD and possibly contemporary NetBSD.) -+ For shared mappings, we should conversely verify that changes get -+ propagated back to all the places they're supposed to be. -+ -+ Grep wants private fixed already mapped. -+ The main things grep needs to know about mmap are: -+ * does it exist and is it safe to write into the mmap'd area -+ * how to use it (BSD variants) */ -+ -+#include -+#include -+ -+#if !STDC_HEADERS && !HAVE_STDLIB_H -+char *malloc (); - #endif -+ -+/* This mess was copied from the GNU getpagesize.h. */ -+#if !HAVE_GETPAGESIZE -+/* Assume that all systems that can run configure have sys/param.h. */ -+# if !HAVE_SYS_PARAM_H -+# define HAVE_SYS_PARAM_H 1 -+# endif -+ -+# ifdef _SC_PAGESIZE -+# define getpagesize() sysconf(_SC_PAGESIZE) -+# else /* no _SC_PAGESIZE */ -+# if HAVE_SYS_PARAM_H -+# include -+# ifdef EXEC_PAGESIZE -+# define getpagesize() EXEC_PAGESIZE -+# else /* no EXEC_PAGESIZE */ -+# ifdef NBPG -+# define getpagesize() NBPG * CLSIZE -+# ifndef CLSIZE -+# define CLSIZE 1 -+# endif /* no CLSIZE */ -+# else /* no NBPG */ -+# ifdef NBPC -+# define getpagesize() NBPC -+# else /* no NBPC */ -+# ifdef PAGESIZE -+# define getpagesize() PAGESIZE -+# endif /* PAGESIZE */ -+# endif /* no NBPC */ -+# endif /* no NBPG */ -+# endif /* no EXEC_PAGESIZE */ -+# else /* no HAVE_SYS_PARAM_H */ -+# define getpagesize() 8192 /* punt totally */ -+# endif /* no HAVE_SYS_PARAM_H */ -+# endif /* no _SC_PAGESIZE */ -+ -+#endif /* no HAVE_GETPAGESIZE */ -+ - int - main () - { -+ char *data, *data2, *data3; -+ int i, pagesize; -+ int fd; - -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -+ pagesize = getpagesize (); -+ -+ /* First, make a file with some known garbage in it. */ -+ data = (char *) malloc (pagesize); -+ if (!data) - exit (1); -- if (((long) (sizeof (unsigned long int))) < 0) -- { -- long i = longval (); -- if (i != ((long) (sizeof (unsigned long int)))) -- exit (1); -- fprintf (f, "%ld\n", i); -- } -- else -- { -- unsigned long i = ulongval (); -- if (i != ((long) (sizeof (unsigned long int)))) -- exit (1); -- fprintf (f, "%lu\n", i); -- } -- exit (ferror (f) || fclose (f) != 0); -+ for (i = 0; i < pagesize; ++i) -+ *(data + i) = rand (); -+ umask (0); -+ fd = creat ("conftest.mmap", 0600); -+ if (fd < 0) -+ exit (1); -+ if (write (fd, data, pagesize) != pagesize) -+ exit (1); -+ close (fd); - -- ; -- return 0; -+ /* Next, try to mmap the file at a fixed address which already has -+ something else allocated at it. If we can, also make sure that -+ we see the same garbage. */ -+ fd = open ("conftest.mmap", O_RDWR); -+ if (fd < 0) -+ exit (1); -+ data2 = (char *) malloc (2 * pagesize); -+ if (!data2) -+ exit (1); -+ data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); -+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_FIXED, fd, 0L)) -+ exit (1); -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data2 + i)) -+ exit (1); -+ -+ /* Finally, make sure that changes to the mapped area do not -+ percolate back to the file as seen by read(). (This is a bug on -+ some variants of i386 svr4.0.) */ -+ for (i = 0; i < pagesize; ++i) -+ *(data2 + i) = *(data2 + i) + 1; -+ data3 = (char *) malloc (pagesize); -+ if (!data3) -+ exit (1); -+ if (read (fd, data3, pagesize) != pagesize) -+ exit (1); -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data3 + i)) -+ exit (1); -+ close (fd); -+ exit (0); - } - _ACEOF - rm -f conftest$ac_exeext -@@ -9737,279 +24489,268 @@ - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -- ac_cv_sizeof_unsigned_long_int=`cat conftest.val` -+ ac_cv_func_mmap_fixed_mapped=yes - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ( exit $ac_status ) --{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned long int), 77" >&2;} -- { (exit 1); exit 1; }; } --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi -+ac_cv_func_mmap_fixed_mapped=no - fi --rm -f conftest.val --else -- ac_cv_sizeof_unsigned_long_int=0 -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - fi --echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_int" >&5 --echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_int" >&6 --cat >>confdefs.h <<_ACEOF --#define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int -+echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -+echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 -+if test $ac_cv_func_mmap_fixed_mapped = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_MMAP 1 - _ACEOF - -+fi -+rm -f conftest.mmap - --echo "$as_me:$LINENO: checking for unsigned int" >&5 --echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_int+set}" = set; then -+ -+ echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 -+echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 -+if test "${ac_cv_gnu_library_2_1+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -+ Lucky GNU user -+ #endif - #endif --int --main () --{ --if ((unsigned int *) 0) -- return 0; --if (sizeof (unsigned int)) -- return 0; -- ; -- return 0; --} -+ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { 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_unsigned_int=yes -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then -+ ac_cv_gnu_library_2_1=yes - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_int=no -+ ac_cv_gnu_library_2_1=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest* -+ -+ -+ - fi --echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 -+echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 -+echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 - --echo "$as_me:$LINENO: checking size of unsigned int" >&5 --echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 --if test "${ac_cv_sizeof_unsigned_int+set}" = set; then -+ GLIBC21="$ac_cv_gnu_library_2_1" -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 -+echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 -+if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test "$ac_cv_type_unsigned_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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)]; --test_array [0] = 0 - -- ; -- return 0; --} -+ if test "$cross_compiling" = yes; then -+ -+ # Guess based on the CPU. -+ case "$host_cpu" in -+ alpha* | i3456786 | m68k | s390*) -+ gt_cv_int_divbyzero_sigfpe="guessing yes";; -+ *) -+ gt_cv_int_divbyzero_sigfpe="guessing no";; -+ esac -+ -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext --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); } && -- { 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+#include -+#include -+ -+static void -+#ifdef __cplusplus -+sigfpe_handler (int sig) -+#else -+sigfpe_handler (sig) int sig; - #endif --int --main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; --test_array [0] = 0 -+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -+ exit (sig != SIGFPE); -+} - -- ; -- return 0; -+int x = 1; -+int y = 0; -+int z; -+int nan; -+ -+int main () -+{ -+ signal (SIGFPE, sigfpe_handler); -+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -+ signal (SIGTRAP, sigfpe_handler); -+#endif -+/* Linux/SPARC yields signal SIGILL. */ -+#if defined (__sparc__) && defined (__linux__) -+ signal (SIGILL, sigfpe_handler); -+#endif -+ -+ z = x / y; -+ nan = y / y; -+ exit (1); - } -+ - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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='test -s conftest.$ac_objext' -+ (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_hi=$ac_mid; break -+ gt_cv_int_divbyzero_sigfpe=yes - else -- echo "$as_me: failed program was:" >&5 --cat 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` -+ 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 ) -+gt_cv_int_divbyzero_sigfpe=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -- done -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+fi -+echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 -+echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 -+ case "$gt_cv_int_divbyzero_sigfpe" in -+ *yes) value=1;; -+ *) value=0;; -+ esac -+ -+cat >>confdefs.h <<_ACEOF -+#define INTDIV0_RAISES_SIGFPE $value -+_ACEOF -+ -+ -+ -+ echo "$as_me:$LINENO: checking for unsigned long long" >&5 -+echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 -+if test "${ac_cv_type_unsigned_long_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+unsigned long long ull = 1ULL; int i = 63; - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)]; --test_array [0] = 0 -- -+unsigned long long ullmax = (unsigned long long) -1; -+ return ull << i | ull >> i | ullmax / ull | ullmax % ull; - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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); }; }; then -- ac_hi=-1 ac_mid=-1 -- while :; do -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --static int test_array [1 - 2 * !(((long) (sizeof (unsigned 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>&5 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -+ (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_lo=$ac_mid; break --else -- echo "$as_me: failed program was:" >&5 --cat 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.$ac_objext conftest.$ac_ext -- done -+ ac_cv_type_unsigned_long_long=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo= ac_hi= -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_unsigned_long_long=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --rm -f 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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 -+echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 -+ if test $ac_cv_type_unsigned_long_long = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_UNSIGNED_LONG_LONG 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ -+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then -+ -+ test $ac_cv_type_unsigned_long_long = yes \ -+ && ac_type='unsigned long long' \ -+ || ac_type='unsigned long' -+ -+cat >>confdefs.h <<_ACEOF -+#define uintmax_t $ac_type -+_ACEOF -+ -+ else -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_UINTMAX_T 1 -+_ACEOF -+ -+ fi -+ -+ -+ echo "$as_me:$LINENO: checking for inttypes.h" >&5 -+echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 -+if test "${gt_cv_header_inttypes_h+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 - int - main () - { --static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; --test_array [0] = 0 - - ; - return 0; -@@ -10017,1079 +24758,1229 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ gt_cv_header_inttypes_h=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_lo=`expr '(' $ac_mid ')' + 1` -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_header_inttypes_h=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --done --case $ac_lo in --?*) ac_cv_sizeof_unsigned_int=$ac_lo;; --'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&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" >&5 --echo "$as_me: error: cannot run test program while cross compiling" >&2;} -- { (exit 1); exit 1; }; } -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 -+echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 -+ if test $gt_cv_header_inttypes_h = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_INTTYPES_H 1 -+_ACEOF -+ -+ fi -+ -+ -+ -+ if test $gt_cv_header_inttypes_h = yes; then -+ echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 -+echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 -+if test "${gt_cv_inttypes_pri_broken+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --long longval () { return (long) (sizeof (unsigned int)); } --unsigned long ulongval () { return (long) (sizeof (unsigned int)); } --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ - -- FILE *f = fopen ("conftest.val", "w"); -- if (! f) -- exit (1); -- if (((long) (sizeof (unsigned int))) < 0) -- { -- long i = longval (); -- if (i != ((long) (sizeof (unsigned int)))) -- exit (1); -- fprintf (f, "%ld\n", i); -- } -- else -- { -- unsigned long i = ulongval (); -- if (i != ((long) (sizeof (unsigned int)))) -- exit (1); -- fprintf (f, "%lu\n", i); -- } -- exit (ferror (f) || fclose (f) != 0); -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#ifdef PRId32 -+char *p = PRId32; -+#endif -+ -+int -+main () -+{ - - ; - return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_sizeof_unsigned_int=`cat conftest.val` --else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 --echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&2;} -- { (exit 1); exit 1; }; } --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --rm -f conftest.val -+ gt_cv_inttypes_pri_broken=no - else -- ac_cv_sizeof_unsigned_int=0 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_inttypes_pri_broken=yes - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ - fi --echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 --echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 -+echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 -+echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 -+ fi -+ if test "$gt_cv_inttypes_pri_broken" = yes; then -+ - cat >>confdefs.h <<_ACEOF --#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -+#define PRI_MACROS_BROKEN 1 - _ACEOF - -- -- --GSM_VERSION="1:4:0" -- -- --LINGUAS="de" --ALL_LINGUAS=$LINGUAS -- -- MKINSTALLDIRS= -- if test -n "$ac_aux_dir"; then -- MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" -- fi -- if test -z "$MKINSTALLDIRS"; then -- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - -- -- -- # Extract the first word of "msgfmt", so it can be a program name with args. --set dummy msgfmt; 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_MSGFMT+set}" = set; then -+for ac_header in stdint.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 --else -- case "$MSGFMT" in -- /*) -- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- ac_cv_path_MSGFMT="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" -- ;; --esac - fi --MSGFMT="$ac_cv_path_MSGFMT" --if test "$MSGFMT" != ":"; then -- echo "$as_me:$LINENO: result: $MSGFMT" >&5 --echo "${ECHO_T}$MSGFMT" >&6 -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -- -- # Extract the first word of "gmsgfmt", so it can be a program name with args. --set dummy gmsgfmt; 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_GMSGFMT+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ # 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 -- case $GMSGFMT in -- [\\/]* | ?:[\\/]*) -- ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" -- ;; --esac -+ac_header_compiler=no - fi --GMSGFMT=$ac_cv_path_GMSGFMT -+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 - --if test -n "$GMSGFMT"; then -- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 --echo "${ECHO_T}$GMSGFMT" >&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 -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 - -- # Extract the first word of "xgettext", so it can be a program name with args. --set dummy xgettext; 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_XGETTEXT+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- case "$XGETTEXT" in -- /*) -- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- ac_cv_path_XGETTEXT="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" -- ;; -+# 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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_ASBOX -+ ) | -+ sed "s/^/$as_me: WARNING: /" >&2 -+ ;; - esac --fi --XGETTEXT="$ac_cv_path_XGETTEXT" --if test "$XGETTEXT" != ":"; then -- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 --echo "${ECHO_T}$XGETTEXT" >&6 -+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 -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ 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 - -- rm -f messages.po -- -- # Extract the first word of "msgmerge", so it can be a program name with args. --set dummy msgmerge; 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_MSGMERGE+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- case "$MSGMERGE" in -- /*) -- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. -- ;; -- *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in $PATH; do -- test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/$ac_word; then -- if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then -- ac_cv_path_MSGMERGE="$ac_dir/$ac_word" -- break -- fi -- fi -- done -- IFS="$ac_save_ifs" -- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" -- ;; --esac - fi --MSGMERGE="$ac_cv_path_MSGMERGE" --if test "$MSGMERGE" != ":"; then -- echo "$as_me:$LINENO: result: $MSGMERGE" >&5 --echo "${ECHO_T}$MSGMERGE" >&6 --else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&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 - -- if test "$GMSGFMT" != ":"; then -- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -- echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 --echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 -- GMSGFMT=":" -- fi -- fi -+ echo "$as_me:$LINENO: checking for SIZE_MAX" >&5 -+echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6 -+ result= -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - -- if test "$XGETTEXT" != ":"; then -- if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && -- (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -- : ; -- else -- echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 --echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 -- XGETTEXT=":" -- fi -- rm -f messages.po -- fi -+#include -+#if HAVE_STDINT_H -+#include -+#endif -+#ifdef SIZE_MAX -+Found it -+#endif - -- ac_config_commands="$ac_config_commands default-1" -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "Found it" >/dev/null 2>&1; then -+ result=yes -+fi -+rm -f conftest* - -+ if test -z "$result"; then -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 0)]; -+test_array [0] = 0 - --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 -+ ; -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; -+test_array [0] = 0 - --fi --fi --RANLIB=$ac_cv_prog_RANLIB --if test -n "$RANLIB"; then -- echo "$as_me:$LINENO: result: $RANLIB" >&5 --echo "${ECHO_T}$RANLIB" >&6 -+ ; -+ 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:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+ 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 --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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- if test -n "$ac_ct_RANLIB"; then -- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) < 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $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 --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 -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" --fi -+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 --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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- RANLIB=$ac_ct_RANLIB --else -- RANLIB="$ac_cv_prog_RANLIB" -+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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; -+test_array [0] = 0 - -- -- echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 --echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 --if test "${ac_cv_lib_cposix_strerror+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+ ; -+ 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 -- ac_check_lib_save_LIBS=$LIBS --LIBS="-lcposix $LIBS" --cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --/* 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 strerror (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) res_hi=$ac_lo;; -+'') result=? ;; -+esac -+else -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&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. */ -+#include -+long longval () { return ~(size_t)0 / 10; } -+unsigned long ulongval () { return ~(size_t)0 / 10; } -+#include -+#include - int - main () - { --strerror (); -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if ((~(size_t)0 / 10) < 0) -+ { -+ long i = longval (); -+ if (i != (~(size_t)0 / 10)) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != (~(size_t)0 / 10)) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext -+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='test -s conftest$ac_exeext' -+ (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_lib_cposix_strerror=yes -+ res_hi=`cat conftest.val` - else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_lib_cposix_strerror=no -+ 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 ) -+result=? - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 --echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 --if test $ac_cv_lib_cposix_strerror = yes; then -- LIBS="$LIBS -lcposix" - fi -+rm -f conftest.val -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 0)]; -+test_array [0] = 0 - -- -- --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 --#line $LINENO "configure" --#include "confdefs.h" --#ifndef __cplusplus --static $ac_kw int static_foo () {return 0; } --$ac_kw int foo () {return 0; } --#endif -- -+ ; -+ return 0; -+} - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 --cat conftest.$ac_ext >&5 --fi --rm -f 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) ;; -- no) --cat >>confdefs.h <<\_ACEOF --#define inline --_ACEOF -- ;; -- *) cat >>confdefs.h <<_ACEOF --#define inline $ac_cv_c_inline -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF -- ;; --esac -- --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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --if ((off_t *) 0) -- return 0; --if (sizeof (off_t)) -- return 0; -+static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $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>&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 -s conftest.$ac_objext' -+ { 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 -+ ac_hi=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_cv_type_off_t=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+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 --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 -- : -+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 >>confdefs.h <<_ACEOF --#define off_t long -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --if ((size_t *) 0) -- return 0; --if (sizeof (size_t)) -- return 0; -+static int test_array [1 - 2 * !((~(size_t)0 % 10) < 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>&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 -s conftest.$ac_objext' -+ { 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 --cat conftest.$ac_ext >&5 --ac_cv_type_size_t=no --fi --rm -f 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 -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $ac_mid)]; -+test_array [0] = 0 - --fi -- -- -- --for ac_header in stdlib.h unistd.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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#include <$ac_header> -+ ; -+ return 0; -+} - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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); }; }; then -- ac_header_compiler=yes --else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no --fi --rm -f 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 --#line $LINENO "configure" --#include "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 -+ (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=$? -- egrep -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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ (exit $ac_status); }; }; then -+ ac_lo=$ac_mid; break - else - echo "$as_me: failed program was:" >&5 -- cat 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 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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" -+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 --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+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 --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi -- --done -- -- --for ac_func in getpagesize --do --as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` --echo "$as_me:$LINENO: checking for $ac_func" >&5 --echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 --if eval "test \"\${$as_ac_var+set}\" = set"; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -+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 --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. */ --#include --/* 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 $ac_func (); --char (*f) (); -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --/* 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_$ac_func) || defined (__stub___$ac_func) --choke me --#else --f = $ac_func; --#endif -+static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)]; -+test_array [0] = 0 - - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_var=yes" -+ ac_hi=$ac_mid - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --eval "$as_ac_var=no" --fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext --fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 --if test `eval echo '${'$as_ac_var'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 --_ACEOF -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_lo=`expr '(' $ac_mid ')' + 1` - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -- --echo "$as_me:$LINENO: checking for working mmap" >&5 --echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 --if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+case $ac_lo in -+?*) res_lo=$ac_lo;; -+'') result=? ;; -+esac - else - if test "$cross_compiling" = yes; then -- ac_cv_func_mmap_fixed_mapped=no -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --/* malloc might have been renamed as rpl_malloc. */ --#undef malloc -- --/* Thanks to Mike Haertel and Jim Avera for this test. -- Here is a matrix of mmap possibilities: -- mmap private not fixed -- mmap private fixed at somewhere currently unmapped -- mmap private fixed at somewhere already mapped -- mmap shared not fixed -- mmap shared fixed at somewhere currently unmapped -- mmap shared fixed at somewhere already mapped -- For private mappings, we should verify that changes cannot be read() -- back from the file, nor mmap's back from the file at a different -- address. (There have been systems where private was not correctly -- implemented like the infamous i386 svr4.0, and systems where the -- VM page cache was not coherent with the file system buffer cache -- like early versions of FreeBSD and possibly contemporary NetBSD.) -- For shared mappings, we should conversely verify that changes get -- propagated back to all the places they're supposed to be. -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+long longval () { return ~(size_t)0 % 10; } -+unsigned long ulongval () { return ~(size_t)0 % 10; } -+#include -+#include -+int -+main () -+{ - -- Grep wants private fixed already mapped. -- The main things grep needs to know about mmap are: -- * does it exist and is it safe to write into the mmap'd area -- * how to use it (BSD variants) */ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if ((~(size_t)0 % 10) < 0) -+ { -+ long i = longval (); -+ if (i != (~(size_t)0 % 10)) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != (~(size_t)0 % 10)) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - --#include --#include -+ ; -+ 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 -+ res_lo=`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 - --#if !STDC_HEADERS && !HAVE_STDLIB_H --char *malloc (); --#endif -+( exit $ac_status ) -+result=? -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val -+ 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= 0)]; -+test_array [0] = 0 - --/* This mess was copied from the GNU getpagesize.h. */ --#if !HAVE_GETPAGESIZE --/* Assume that all systems that can run configure have sys/param.h. */ --# if !HAVE_SYS_PARAM_H --# define HAVE_SYS_PARAM_H 1 --# 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_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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; -+test_array [0] = 0 - --# ifdef _SC_PAGESIZE --# define getpagesize() sysconf(_SC_PAGESIZE) --# else /* no _SC_PAGESIZE */ --# if HAVE_SYS_PARAM_H --# include --# ifdef EXEC_PAGESIZE --# define getpagesize() EXEC_PAGESIZE --# else /* no EXEC_PAGESIZE */ --# ifdef NBPG --# define getpagesize() NBPG * CLSIZE --# ifndef CLSIZE --# define CLSIZE 1 --# endif /* no CLSIZE */ --# else /* no NBPG */ --# ifdef NBPC --# define getpagesize() NBPC --# else /* no NBPC */ --# ifdef PAGESIZE --# define getpagesize() PAGESIZE --# endif /* PAGESIZE */ --# endif /* no NBPC */ --# endif /* no NBPG */ --# endif /* no EXEC_PAGESIZE */ --# else /* no HAVE_SYS_PARAM_H */ --# define getpagesize() 8192 /* punt totally */ --# endif /* no HAVE_SYS_PARAM_H */ --# endif /* no _SC_PAGESIZE */ -+ ; -+ 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 - --#endif /* no HAVE_GETPAGESIZE */ -+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. */ -+#include - int - main () - { -- char *data, *data2, *data3; -- int i, pagesize; -- int fd; -- -- pagesize = getpagesize (); -- -- /* First, make a file with some known garbage in it. */ -- data = (char *) malloc (pagesize); -- if (!data) -- exit (1); -- for (i = 0; i < pagesize; ++i) -- *(data + i) = rand (); -- umask (0); -- fd = creat ("conftest.mmap", 0600); -- if (fd < 0) -- exit (1); -- if (write (fd, data, pagesize) != pagesize) -- exit (1); -- close (fd); -- -- /* Next, try to mmap the file at a fixed address which already has -- something else allocated at it. If we can, also make sure that -- we see the same garbage. */ -- fd = open ("conftest.mmap", O_RDWR); -- if (fd < 0) -- exit (1); -- data2 = (char *) malloc (2 * pagesize); -- if (!data2) -- exit (1); -- data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); -- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, -- MAP_PRIVATE | MAP_FIXED, fd, 0L)) -- exit (1); -- for (i = 0; i < pagesize; ++i) -- if (*(data + i) != *(data2 + i)) -- exit (1); -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) < 0)]; -+test_array [0] = 0 - -- /* Finally, make sure that changes to the mapped area do not -- percolate back to the file as seen by read(). (This is a bug on -- some variants of i386 svr4.0.) */ -- for (i = 0; i < pagesize; ++i) -- *(data2 + i) = *(data2 + i) + 1; -- data3 = (char *) malloc (pagesize); -- if (!data3) -- exit (1); -- if (read (fd, data3, pagesize) != pagesize) -- exit (1); -- for (i = 0; i < pagesize; ++i) -- if (*(data + i) != *(data3 + i)) -- exit (1); -- close (fd); -- exit (0); -+ ; -+ return 0; - } - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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='./conftest$ac_exeext' -+ (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_func_mmap_fixed_mapped=yes --else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --( exit $ac_status ) --ac_cv_func_mmap_fixed_mapped=no --fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 --echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 --if test $ac_cv_func_mmap_fixed_mapped = yes; 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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= $ac_mid)]; -+test_array [0] = 0 - --cat >>confdefs.h <<\_ACEOF --#define HAVE_MMAP 1 -+ ; -+ 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.mmap -- -- -- echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 --echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 --if test "${ac_cv_gnu_library_2_1+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done - else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --#include --#ifdef __GNU_LIBRARY__ -- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -- Lucky GNU user -- #endif --#endif -+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. */ -+#include -+int -+main () -+{ -+static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; -+test_array [0] = 0 - -+ ; -+ return 0; -+} - _ACEOF --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- egrep "Lucky GNU user" >/dev/null 2>&1; then -- ac_cv_gnu_library_2_1=yes -+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 -- ac_cv_gnu_library_2_1=no --fi --rm -f conftest* -- -- -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_lo=`expr '(' $ac_mid ')' + 1` - fi --echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 --echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 -- -- GLIBC21="$ac_cv_gnu_library_2_1" -- -- -- -- -- echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 --echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6 --if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) fits_in_uint=$ac_lo;; -+'') result=? ;; -+esac - else -- -- if test "$cross_compiling" = yes; then -- -- # Guess based on the CPU. -- case "$host_cpu" in -- alpha* | i3456786 | m68k | s390*) -- gt_cv_int_divbyzero_sigfpe="guessing yes";; -- *) -- gt_cv_int_divbyzero_sigfpe="guessing no";; -- esac -- -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: internal error: not reached in cross-compile" >&5 -+echo "$as_me: error: internal error: not reached in cross-compile" >&2;} -+ { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -- -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+long longval () { return sizeof (size_t) <= sizeof (unsigned int); } -+unsigned long ulongval () { return sizeof (size_t) <= sizeof (unsigned int); } -+#include - #include --#include -- --static void --#ifdef __cplusplus --sigfpe_handler (int sig) --#else --sigfpe_handler (sig) int sig; --#endif -+int -+main () - { -- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -- exit (sig != SIGFPE); --} -- --int x = 1; --int y = 0; --int z; --int nan; - --int main () --{ -- signal (SIGFPE, sigfpe_handler); --/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ --#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -- signal (SIGTRAP, sigfpe_handler); --#endif --/* Linux/SPARC yields signal SIGILL. */ --#if defined (__sparc__) && defined (__linux__) -- signal (SIGILL, sigfpe_handler); --#endif -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if ((sizeof (size_t) <= sizeof (unsigned int)) < 0) -+ { -+ long i = longval (); -+ if (i != (sizeof (size_t) <= sizeof (unsigned int))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != (sizeof (size_t) <= sizeof (unsigned int))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); - -- z = x / y; -- nan = y / y; -- exit (1); -+ ; -+ return 0; - } -- - _ACEOF - rm -f conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -@@ -11102,329 +25993,378 @@ - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -- gt_cv_int_divbyzero_sigfpe=yes -+ fits_in_uint=`cat conftest.val` - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - ( exit $ac_status ) --gt_cv_int_divbyzero_sigfpe=no -+result=? - fi --rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi -- - fi --echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 --echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6 -- case "$gt_cv_int_divbyzero_sigfpe" in -- *yes) value=1;; -- *) value=0;; -- esac -- --cat >>confdefs.h <<_ACEOF --#define INTDIV0_RAISES_SIGFPE $value --_ACEOF -- -- -+rm -f conftest.val -+ if test "$fits_in_uint" = 1; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ extern size_t foo; -+ extern unsigned long foo; - -- echo "$as_me:$LINENO: checking for inttypes.h" >&5 --echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 --if test "${jm_ac_cv_header_inttypes_h+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { --uintmax_t i = (uintmax_t) -1; -+ - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -- jm_ac_cv_header_inttypes_h=yes -+ fits_in_uint=0 - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --jm_ac_cv_header_inttypes_h=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --echo "$as_me:$LINENO: result: $jm_ac_cv_header_inttypes_h" >&5 --echo "${ECHO_T}$jm_ac_cv_header_inttypes_h" >&6 -- if test $jm_ac_cv_header_inttypes_h = yes; then -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ fi -+ if test -z "$result"; then -+ if test "$fits_in_uint" = 1; then -+ result="$res_hi$res_lo"U -+ else -+ result="$res_hi$res_lo"UL -+ fi -+ else -+ result='~(size_t)0' -+ fi -+ fi -+ echo "$as_me:$LINENO: result: $result" >&5 -+echo "${ECHO_T}$result" >&6 -+ if test "$result" != yes; then - - cat >>confdefs.h <<_ACEOF --#define HAVE_INTTYPES_H_WITH_UINTMAX 1 -+#define SIZE_MAX $result - _ACEOF - - fi - - -- echo "$as_me:$LINENO: checking for stdint.h" >&5 --echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6 --if test "${jm_ac_cv_header_stdint_h+set}" = set; then -+ -+ -+ -+for ac_header in stdint.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 -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --uintmax_t i = (uintmax_t) -1; -- ; -- return 0; --} -+ # 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>&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 -s conftest.$ac_objext' -+ { 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 -- jm_ac_cv_header_stdint_h=yes -+ ac_header_compiler=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --jm_ac_cv_header_stdint_h=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_header_compiler=no - fi --echo "$as_me:$LINENO: result: $jm_ac_cv_header_stdint_h" >&5 --echo "${ECHO_T}$jm_ac_cv_header_stdint_h" >&6 -- if test $jm_ac_cv_header_stdint_h = yes; then -+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 - --cat >>confdefs.h <<_ACEOF --#define HAVE_STDINT_H_WITH_UINTMAX 1 -+# 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 -- -- fi -- -- -- echo "$as_me:$LINENO: checking for unsigned long long" >&5 --echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 --if test "${ac_cv_type_unsigned_long_long+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --unsigned long long ull = 1; int i = 63; --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif --int --main () --{ --unsigned long long ullmax = (unsigned long long) -1; -- return ull << i | ull >> i | ullmax / ull | ullmax % ull; -- ; -- return 0; --} -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$ac_header> - _ACEOF --rm -f conftest.$ac_objext 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='test -s conftest$ac_exeext' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -+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); }; }; then -- ac_cv_type_unsigned_long_long=yes -+ (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 --cat conftest.$ac_ext >&5 --ac_cv_type_unsigned_long_long=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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: $ac_cv_type_unsigned_long_long" >&5 --echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 -- if test $ac_cv_type_unsigned_long_long = yes; then -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - --cat >>confdefs.h <<\_ACEOF --#define HAVE_UNSIGNED_LONG_LONG 1 -+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 -- -- -- -- -- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then -- -- test $ac_cv_type_unsigned_long_long = yes \ -- && ac_type='unsigned long long' \ -- || ac_type='unsigned long' -+fi - --cat >>confdefs.h <<_ACEOF --#define uintmax_t $ac_type --_ACEOF -+done - -- fi - - -- echo "$as_me:$LINENO: checking for inttypes.h" >&5 --echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6 --if test "${gt_cv_header_inttypes_h+set}" = set; then -+ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 -+echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 -+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { -- -+CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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 -- gt_cv_header_inttypes_h=yes -+ gt_cv_func_CFPreferencesCopyAppValue=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --gt_cv_header_inttypes_h=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 - -+gt_cv_func_CFPreferencesCopyAppValue=no - fi --echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 --echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6 -- if test $gt_cv_header_inttypes_h = yes; then -- --cat >>confdefs.h <<_ACEOF --#define HAVE_INTTYPES_H 1 --_ACEOF -- -- fi -- -- -- -- if test $gt_cv_header_inttypes_h = yes; then -- echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 --echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6 --if test "${gt_cv_inttypes_pri_broken+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- -- cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --#include --#ifdef PRId32 --char *p = PRId32; --#endif -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -+echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 -+_ACEOF -+ -+ fi -+ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 -+echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 -+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { -- -+CFLocaleCopyCurrent(); - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -+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 -s conftest.$ac_objext' -+ { 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 -- gt_cv_inttypes_pri_broken=no -+ gt_cv_func_CFLocaleCopyCurrent=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --gt_cv_inttypes_pri_broken=yes --fi --rm -f conftest.$ac_objext conftest.$ac_ext -+sed 's/^/| /' conftest.$ac_ext >&5 - -+gt_cv_func_CFLocaleCopyCurrent=no - fi --echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 --echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6 -- fi -- if test "$gt_cv_inttypes_pri_broken" = yes; then -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -+echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 -+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - --cat >>confdefs.h <<_ACEOF --#define PRI_MACROS_BROKEN 1 -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFLOCALECOPYCURRENT 1 - _ACEOF - - fi -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" -+ fi -+ - - - if test "X$prefix" = "XNONE"; then -@@ -11450,6 +26390,19 @@ - else - with_gnu_ld=no - fi; -+# Prepare PATH_SEPARATOR. -+# 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 - ac_prog=ld - if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. -@@ -11501,11 +26454,12 @@ - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. -- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then -- test "$with_gnu_ld" != no && break -- else -- test "$with_gnu_ld" != yes && break -- fi -+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in -+ *GNU* | *'with BFD'*) -+ test "$with_gnu_ld" != no && break ;; -+ *) -+ test "$with_gnu_ld" != yes && break ;; -+ esac - fi - done - IFS="$ac_save_ifs" -@@ -11531,11 +26485,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. --if $LD -v 2>&1 &5; then -- acl_cv_prog_gnu_ld=yes --else -- acl_cv_prog_gnu_ld=no --fi -+case `$LD -v 2>&1 &5 - echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 -@@ -11543,6 +26498,7 @@ - - - -+ - echo "$as_me:$LINENO: checking for shared library run path origin" >&5 - echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 - if test "${acl_cv_rpath+set}" = set; then -@@ -11565,8 +26521,6 @@ - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" -- sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" -- sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" - # Check whether --enable-rpath or --disable-rpath was given. - if test "${enable_rpath+set}" = set; then - enableval="$enable_rpath" -@@ -11790,7 +26744,7 @@ - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -11834,7 +26788,7 @@ - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -11964,223 +26918,722 @@ - - - -+ echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 -+echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 -+if test "${ac_cv_type_ptrdiff_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 ((ptrdiff_t *) 0) -+ return 0; -+if (sizeof (ptrdiff_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_ptrdiff_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_ptrdiff_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 -+echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 -+if test $ac_cv_type_ptrdiff_t = yes; then -+ : -+else -+ -+cat >>confdefs.h <<\_ACEOF -+#define ptrdiff_t long -+_ACEOF -+ -+ -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -+stdlib.h string.h unistd.h sys/param.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 the AC_PACKAGE_NAME lists. ## -+## ------------------------------------------ ## -+_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 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_func in asprintf fwprintf getcwd getegid geteuid getgid getuid \ -+mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -+strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -+__fsetlocking -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* 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 $ac_func (); -+/* 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_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+char (*f) () = $ac_func; -+#endif -+#ifdef __cplusplus -+} -+#endif -+ -+int -+main () -+{ -+return f != $ac_func; -+ ; -+ 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 -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+eval "$as_ac_var=no" -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether _snprintf is declared" >&5 -+echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl__snprintf+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 -+int -+main () -+{ -+ -+#ifndef _snprintf -+ char *p = (char *) _snprintf; -+#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_have_decl__snprintf=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_cv_have_decl__snprintf=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5 -+echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6 -+ if test $ac_cv_have_decl__snprintf = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL__SNPRINTF $gt_value -+_ACEOF - - - --for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ --stdlib.h string.h unistd.h sys/param.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 "$as_me:$LINENO: checking whether _snwprintf is declared" >&5 -+echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl__snwprintf+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 --#line $LINENO "configure" --#include "confdefs.h" --$ac_includes_default --#include <$ac_header> -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+#ifndef _snwprintf -+ char *p = (char *) _snwprintf; -+#endif -+ -+ ; -+ return 0; -+} - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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 -+ ac_cv_have_decl__snwprintf=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --ac_header_compiler=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_have_decl__snwprintf=no - fi --rm -f conftest.$ac_objext conftest.$ac_ext --echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 --echo "${ECHO_T}$ac_header_compiler" >&6 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5 -+echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6 -+ if test $ac_cv_have_decl__snwprintf = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - --# 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 --#line $LINENO "configure" --#include "confdefs.h" --#include <$ac_header> -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL__SNWPRINTF $gt_value - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 -+echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl_feof_unlocked+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 -+int -+main () -+{ -+ -+#ifndef feof_unlocked -+ char *p = (char *) feof_unlocked; -+#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=$? -- egrep -v '^ *\+' conftest.er1 >conftest.err -+ 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 -- else -- ac_cpp_err= -- fi --else -- ac_cpp_err=yes --fi --if test -z "$ac_cpp_err"; then -- ac_header_preproc=yes -+ (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_have_decl_feof_unlocked=yes - else - echo "$as_me: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_header_preproc=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_have_decl_feof_unlocked=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 -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6 -+ if test $ac_cv_have_decl_feof_unlocked = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - --# So? What about this header? --case $ac_header_compiler:$ac_header_preproc 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 preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; -- 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: proceeding with the preprocessor's result" >&5 --echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&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 -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_FEOF_UNLOCKED $gt_value -+_ACEOF -+ -+ -+ -+ echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 -+echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl_fgets_unlocked+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 -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ - --fi --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+#ifndef fgets_unlocked -+ char *p = (char *) fgets_unlocked; -+#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_have_decl_fgets_unlocked=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+ac_cv_have_decl_fgets_unlocked=no - fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6 -+ if test $ac_cv_have_decl_fgets_unlocked = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi - --done -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_FGETS_UNLOCKED $gt_value -+_ACEOF - - - --for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ --geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ --strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next --do --as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` --echo "$as_me:$LINENO: checking for $ac_func" >&5 --echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 --if eval "test \"\${$as_ac_var+set}\" = set"; then -+ echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 -+echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 -+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" --/* System header to define __stub macros and hopefully few prototypes, -- which can conflict with char $ac_func (); below. */ --#include --/* 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 $ac_func (); --char (*f) (); -- --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include - int - main () - { --/* 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_$ac_func) || defined (__stub___$ac_func) --choke me --#else --f = $ac_func; -+ -+#ifndef getc_unlocked -+ char *p = (char *) getc_unlocked; - #endif - - ; - return 0; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&5 -+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 -s conftest$ac_exeext' -+ { 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_var=yes" -+ ac_cv_have_decl_getc_unlocked=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --eval "$as_ac_var=no" -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_have_decl_getc_unlocked=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 --echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 --if test `eval echo '${'$as_ac_var'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 -+ if test $ac_cv_have_decl_getc_unlocked = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_DECL_GETC_UNLOCKED $gt_value - _ACEOF - --fi --done -+ -+ -+ case $gt_cv_func_printf_posix in -+ *yes) HAVE_POSIX_PRINTF=1 ;; -+ *) HAVE_POSIX_PRINTF=0 ;; -+ esac -+ -+ if test "$ac_cv_func_asprintf" = yes; then -+ HAVE_ASPRINTF=1 -+ else -+ HAVE_ASPRINTF=0 -+ fi -+ -+ if test "$ac_cv_func_snprintf" = yes; then -+ HAVE_SNPRINTF=1 -+ else -+ HAVE_SNPRINTF=0 -+ fi -+ -+ if test "$ac_cv_func_wprintf" = yes; then -+ HAVE_WPRINTF=1 -+ else -+ HAVE_WPRINTF=0 -+ fi - - - -@@ -12222,16 +27675,13 @@ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12244,11 +27694,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12257,23 +27716,22 @@ - am_cv_func_iconv=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12286,11 +27744,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12300,9 +27767,11 @@ - am_cv_func_iconv=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -@@ -12337,8 +27806,11 @@ - else - - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - - #include - #include -@@ -12352,12 +27824,6 @@ - size_t iconv(); - #endif - --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12368,11 +27834,20 @@ - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&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 -s conftest.$ac_objext' -+ { 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=$? -@@ -12381,10 +27856,11 @@ - am_cv_proto_iconv_arg1="" - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - am_cv_proto_iconv_arg1="const" - fi --rm -f conftest.$ac_objext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" - fi - -@@ -12407,15 +27883,12 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12426,11 +27899,20 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12439,10 +27921,12 @@ - am_cv_langinfo_codeset=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - am_cv_langinfo_codeset=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - - fi - echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 -@@ -12459,19 +27943,16 @@ - - echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 - echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 --if test "${am_cv_val_LC_MESSAGES+set}" = set; then -+if test "${gt_cv_val_LC_MESSAGES+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { -@@ -12482,27 +27963,38 @@ - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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 -- am_cv_val_LC_MESSAGES=yes -+ gt_cv_val_LC_MESSAGES=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --am_cv_val_LC_MESSAGES=no -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_val_LC_MESSAGES=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi --echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 --echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 -- if test $am_cv_val_LC_MESSAGES = yes; then -+echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5 -+echo "${ECHO_T}$gt_cv_val_LC_MESSAGES" >&6 -+ if test $gt_cv_val_LC_MESSAGES = yes; then - - cat >>confdefs.h <<\_ACEOF - #define HAVE_LC_MESSAGES 1 -@@ -12512,6 +28004,10 @@ - - fi - -+ if test -n "$INTL_MACOSX_LIBS"; then -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ fi -+ - for ac_prog in bison - do - # Extract the first word of "$ac_prog", so it can be a program name with args. -@@ -12545,46 +28041,187 @@ - echo "$as_me:$LINENO: result: $INTLBISON" >&5 - echo "${ECHO_T}$INTLBISON" >&6 - else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$INTLBISON" && break -+done -+ -+ if test -z "$INTLBISON"; then -+ ac_verc_fail=yes -+ else -+ echo "$as_me:$LINENO: checking version of bison" >&5 -+echo $ECHO_N "checking version of bison... $ECHO_C" >&6 -+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ case $ac_prog_version in -+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -+ esac -+ echo "$as_me:$LINENO: result: $ac_prog_version" >&5 -+echo "${ECHO_T}$ac_prog_version" >&6 -+ fi -+ if test $ac_verc_fail = yes; then -+ INTLBISON=: -+ fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 -+echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 -+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+CFPreferencesCopyAppValue(NULL, NULL) -+ ; -+ 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 -+ gt_cv_func_CFPreferencesCopyAppValue=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_func_CFPreferencesCopyAppValue=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -+echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 -+_ACEOF -+ -+ fi -+ echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 -+echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 -+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS -framework CoreFoundation" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+CFLocaleCopyCurrent(); -+ ; -+ 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 -+ gt_cv_func_CFLocaleCopyCurrent=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+gt_cv_func_CFLocaleCopyCurrent=no - fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS" -+fi -+echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -+echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 -+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -- test -n "$INTLBISON" && break --done -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_CFLOCALECOPYCURRENT 1 -+_ACEOF - -- if test -z "$INTLBISON"; then -- ac_verc_fail=yes -- else -- echo "$as_me:$LINENO: checking version of bison" >&5 --echo $ECHO_N "checking version of bison... $ECHO_C" >&6 -- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -- case $ac_prog_version in -- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -- esac -- echo "$as_me:$LINENO: result: $ac_prog_version" >&5 --echo "${ECHO_T}$ac_prog_version" >&6 - fi -- if test $ac_verc_fail = yes; then -- INTLBISON=: -+ INTL_MACOSX_LIBS= -+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then -+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - -- -- -- -- -- -- -- -- -- -- -- - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 - echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -@@ -12599,6 +28236,7 @@ - - - -+ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - -@@ -12636,33 +28274,39 @@ - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - extern int _nl_msg_cat_cntr; - extern int *_nl_domain_bindings; --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif - int - main () - { - bindtextdomain ("", ""); --return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings -+return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -12671,10 +28315,12 @@ - gt_cv_func_gnugettext1_libc=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - gt_cv_func_gnugettext1_libc=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi - echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 - echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 -@@ -12892,7 +28538,7 @@ - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -12936,7 +28582,7 @@ - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in -- linux*) haveit=yes;; -+ linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi -@@ -13069,37 +28715,43 @@ - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - extern int _nl_msg_cat_cntr; - extern - #ifdef __cplusplus - "C" - #endif --const char *_nl_expand_alias (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+const char *_nl_expand_alias (const char *); - int - main () - { - bindtextdomain ("", ""); --return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) -+return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -13108,44 +28760,52 @@ - gt_cv_func_gnugettext1_libintl=yes - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - gt_cv_func_gnugettext1_libintl=no - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF --#line $LINENO "configure" --#include "confdefs.h" -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ - #include - extern int _nl_msg_cat_cntr; - extern - #ifdef __cplusplus - "C" - #endif --const char *_nl_expand_alias (); --#ifdef F77_DUMMY_MAIN --# ifdef __cplusplus -- extern "C" --# endif -- int F77_DUMMY_MAIN() { return 1; } --#endif -+const char *_nl_expand_alias (const char *); - int - main () - { - bindtextdomain ("", ""); --return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) -+return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>&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 -s conftest$ac_exeext' -+ { 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=$? -@@ -13157,9 +28817,11 @@ - - else - echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ - fi --rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -@@ -13170,7 +28832,8 @@ - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ -- && test "$PACKAGE" != gettext; }; then -+ && test "$PACKAGE" != gettext-runtime \ -+ && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= -@@ -13185,20 +28848,28 @@ - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then -- INTLOBJS="\$(GETTOBJS)" -- BUILD_INCLUDED_LIBINTL=yes -+ BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" - LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - -+ CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - CATOBJEXT=.gmo - fi - - -+ if test -n "$INTL_MACOSX_LIBS"; then -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" -+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" -+ fi -+ fi -+ - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -@@ -13211,6 +28882,26 @@ - fi - fi - -+ echo "$as_me:$LINENO: checking whether to use NLS" >&5 -+echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 -+ echo "$as_me:$LINENO: result: $USE_NLS" >&5 -+echo "${ECHO_T}$USE_NLS" >&6 -+ if test "$USE_NLS" = "yes"; then -+ echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -+echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then -+ gt_source="external libintl" -+ else -+ gt_source="libc" -+ fi -+ else -+ gt_source="included intl directory" -+ fi -+ echo "$as_me:$LINENO: result: $gt_source" >&5 -+echo "${ECHO_T}$gt_source" >&6 -+ fi -+ - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then -@@ -13260,7 +28951,7 @@ - fi - - -- if test "$PACKAGE" = gettext; then -+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - -@@ -13268,7 +28959,6 @@ - - - -- - nls_cv_header_intl= - nls_cv_header_libgt= - -@@ -13281,6 +28971,12 @@ - GENCAT=gencat - - -+ INTLOBJS= -+ if test "$USE_INCLUDED_LIBINTL" = yes; then -+ INTLOBJS="\$(GETTOBJS)" -+ fi -+ -+ - INTL_LIBTOOL_SUFFIX_PREFIX= - - -@@ -13318,8 +29014,8 @@ - fi - - --ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" --ac_config_commands="$ac_config_commands default" -+ ac_config_files="$ac_config_files Makefile gsmlib/Makefile tests/Makefile apps/Makefile win32/Makefile doc/Makefile scripts/Makefile intl/Makefile po/Makefile.in ext/Makefile" -+ ac_config_commands="$ac_config_commands default" - 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 -@@ -13330,7 +29026,7 @@ - # 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 overriden when -+# `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. - -@@ -13348,13 +29044,13 @@ - # `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" -+ "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" -+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; - } | -@@ -13365,7 +29061,7 @@ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache --if cmp -s $cache_file confcache; then :; else -+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 -@@ -13384,18 +29080,33 @@ - # 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[ ]*=/{ -+ ac_vpsub='/^[ ]*VPATH[ ]*=/{ - s/:*\$(srcdir):*/:/; - s/:*\${srcdir}:*/:/; - s/:*@srcdir@:*/:/; --s/^\([^=]*=[ ]*\):*/\1/; -+s/^\([^=]*=[ ]*\):*/\1/; - s/:*$//; --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 -@@ -13403,6 +29114,27 @@ - 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 "${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 "${COMPILE_INTL_TRUE}" && test -z "${COMPILE_INTL_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"COMPILE_INTL\" was never defined. - Usually this means the macro was only invoked conditionally." >&5 -@@ -13424,11 +29156,12 @@ - # 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. ## - ## --------------------- ## -@@ -13437,46 +29170,57 @@ - 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 - --# NLS nuisances. - # Support unset when possible. --if (FOO=FOO; unset FOO) >/dev/null 2>&1; then -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset - else - as_unset=false - fi - --(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && -- { $as_unset LANG || test "${LANG+set}" != set; } || -- { LANG=C; export LANG; } --(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && -- { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || -- { LC_ALL=C; export LC_ALL; } --(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && -- { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || -- { LC_TIME=C; export LC_TIME; } --(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && -- { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || -- { LC_CTYPE=C; export LC_CTYPE; } --(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && -- { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || -- { LANGUAGE=C; export LANGUAGE; } --(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && -- { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || -- { LC_COLLATE=C; export LC_COLLATE; } --(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && -- { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || -- { LC_NUMERIC=C; export LC_NUMERIC; } --(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && -- { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || -- { LC_MESSAGES=C; export LC_MESSAGES; } -+ -+# 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=`(basename "$0") 2>/dev/null || -+as_me=`$as_basename "$0" || - $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ -@@ -13487,6 +29231,7 @@ - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -+ - # PATH needs CR, and LINENO needs CR and PATH. - # Avoid depending upon Character Ranges. - as_cr_letters='abcdefghijklmnopqrstuvwxyz' -@@ -13497,15 +29242,15 @@ - - # The user is always right. - if test "${PATH_SEPARATOR+set}" != set; then -- echo "#! /bin/sh" >conftest.sh -- echo "exit 0" >>conftest.sh -- chmod +x conftest.sh -- if (PATH=".;."; conftest.sh) >/dev/null 2>&1; 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 conftest.sh -+ rm -f conf$$.sh - fi - - -@@ -13554,6 +29299,8 @@ - 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+"$@"} -@@ -13627,13 +29374,20 @@ - 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="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -+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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - # IFS -@@ -13643,7 +29397,7 @@ - IFS=" $as_nl" - - # CDPATH. --$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } -+$as_unset CDPATH - - exec 6>&1 - -@@ -13660,7 +29414,7 @@ - cat >&5 <<_CSEOF - - This file was extended by $as_me, which was --generated by GNU Autoconf 2.53. Invocation command line was -+generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS -@@ -13700,12 +29454,13 @@ - - -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 -+ instantiate the configuration file FILE - --header=FILE[:TEMPLATE] -- instantiate the configuration header FILE -+ instantiate the configuration header FILE - - Configuration files: - $config_files -@@ -13722,11 +29477,10 @@ - cat >>$CONFIG_STATUS <<_ACEOF - ac_cs_version="\\ - config.status --configured by $0, generated by GNU Autoconf 2.53, -+configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - --Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+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 -@@ -13743,25 +29497,25 @@ - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` -- shift -- set dummy "$ac_option" "$ac_optarg" ${1+"$@"} -- shift -+ 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 $1 in -+ case $ac_option in - # Handling of the options. - _ACEOF --cat >>$CONFIG_STATUS <<_ACEOF -- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" -- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; --_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) -@@ -13776,13 +29530,16 @@ - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) -- shift -- CONFIG_FILES="$CONFIG_FILES $1" -+ $ac_shift -+ CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) -- shift -- CONFIG_HEADERS="$CONFIG_HEADERS $1" -+ $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 -@@ -13797,6 +29554,20 @@ - 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 -@@ -13805,10 +29576,10 @@ - # - - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" --# Capture the value of obsolete $ALL_LINGUAS because we need it to compute -- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it -+# Capture the value of obsolete ALL_LINGUAS because we need it to compute -+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. -- eval 'ALL_LINGUAS''="$ALL_LINGUAS"' -+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - -@@ -13852,6 +29623,9 @@ - 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 || - { -@@ -13860,17 +29634,17 @@ - } - - # Create a (secure) tmp directory for tmp files. --: ${TMPDIR=/tmp} -+ - { -- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && -+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" - } || - { -- tmp=$TMPDIR/cs$$-$RANDOM -+ tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) - } || - { -- echo "$me: cannot create a temporary directory in $TMPDIR" >&2 -+ echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } - } - -@@ -13928,6 +29702,7 @@ - s,@ac_ct_CC@,$ac_ct_CC,;t t - s,@EXEEXT@,$EXEEXT,;t t - s,@OBJEXT@,$OBJEXT,;t t -+s,@CYGPATH_W@,$CYGPATH_W,;t t - s,@PACKAGE@,$PACKAGE,;t t - s,@VERSION@,$VERSION,;t t - s,@ACLOCAL@,$ACLOCAL,;t t -@@ -13935,13 +29710,17 @@ - s,@AUTOMAKE@,$AUTOMAKE,;t t - s,@AUTOHEADER@,$AUTOHEADER,;t t - s,@MAKEINFO@,$MAKEINFO,;t t --s,@AMTAR@,$AMTAR,;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,@DEPDIR@,$DEPDIR,;t t - s,@am__include@,$am__include,;t t - s,@am__quote@,$am__quote,;t t -@@ -13949,6 +29728,8 @@ - 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,@build@,$build,;t t - s,@build_cpu@,$build_cpu,;t t - s,@build_vendor@,$build_vendor,;t t -@@ -13957,35 +29738,50 @@ - s,@host_cpu@,$host_cpu,;t t - s,@host_vendor@,$host_vendor,;t t - s,@host_os@,$host_os,;t t -+s,@EGREP@,$EGREP,;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,@RANLIB@,$RANLIB,;t t - s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t - s,@CPP@,$CPP,;t t --s,@LIBTOOL@,$LIBTOOL,;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,@ALLOCA@,$ALLOCA,;t t - s,@GSM_VERSION@,$GSM_VERSION,;t t - s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t -+s,@USE_NLS@,$USE_NLS,;t t - s,@MSGFMT@,$MSGFMT,;t t - s,@GMSGFMT@,$GMSGFMT,;t t - s,@XGETTEXT@,$XGETTEXT,;t t - s,@MSGMERGE@,$MSGMERGE,;t t -+s,@GLIBC2@,$GLIBC2,;t t - s,@GLIBC21@,$GLIBC21,;t t -+s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t -+s,@HAVE_POSIX_PRINTF@,$HAVE_POSIX_PRINTF,;t t -+s,@HAVE_ASPRINTF@,$HAVE_ASPRINTF,;t t -+s,@HAVE_SNPRINTF@,$HAVE_SNPRINTF,;t t -+s,@HAVE_WPRINTF@,$HAVE_WPRINTF,;t t - s,@LIBICONV@,$LIBICONV,;t t - s,@LTLIBICONV@,$LTLIBICONV,;t t - s,@INTLBISON@,$INTLBISON,;t t --s,@USE_NLS@,$USE_NLS,;t t - s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t - s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t - s,@CATOBJEXT@,$CATOBJEXT,;t t --s,@INTLOBJS@,$INTLOBJS,;t t - s,@DATADIRNAME@,$DATADIRNAME,;t t - s,@INSTOBJEXT@,$INSTOBJEXT,;t t - s,@GENCAT@,$GENCAT,;t t -+s,@INTLOBJS@,$INTLOBJS,;t t - s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t - s,@INTLLIBS@,$INTLLIBS,;t t - s,@LIBINTL@,$LIBINTL,;t t -@@ -13993,6 +29789,8 @@ - s,@POSUB@,$POSUB,;t t - s,@COMPILE_INTL_TRUE@,$COMPILE_INTL_TRUE,;t t - s,@COMPILE_INTL_FALSE@,$COMPILE_INTL_FALSE,;t t -+s,@LIBOBJS@,$LIBOBJS,;t t -+s,@LTLIBOBJS@,$LTLIBOBJS,;t t - CEOF - - _ACEOF -@@ -14022,9 +29820,9 @@ - (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" -+ 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" -+ 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 -@@ -14042,46 +29840,51 @@ - # 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,:.*,,'` ;; -+ 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=`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 || -+ 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'` -- { case "$ac_dir" in -- [\\/]* | ?:[\\/]* ) as_incr_dir=;; -- *) as_incr_dir=.;; --esac --as_dummy="$ac_dir" --for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do -- case $as_mkdir_dir in -- # Skip DOS drivespec -- ?:) as_incr_dir=$as_mkdir_dir ;; -- *) -- as_incr_dir=$as_incr_dir/$as_mkdir_dir -- test -d "$as_incr_dir" || -- mkdir "$as_incr_dir" || -- { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 --echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac --done; } -+ { 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=. - -@@ -14108,12 +29911,45 @@ - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac --# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be --# absolute. --ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` --ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` --ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` --ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` -+ -+# 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 -@@ -14121,11 +29957,6 @@ - *) 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. */ -@@ -14135,7 +29966,7 @@ - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | -- sed 's,.*/,,'` by configure." -+ sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. -@@ -14144,26 +29975,32 @@ - 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 -+ # 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;; -+ 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 -+ 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;; -+ fi;; - esac - done` || { (exit 1); exit 1; } -+ -+ 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 - _ACEOF - cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -@@ -14203,12 +30040,12 @@ - # 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_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_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' - ac_uB='$,\1#\2define\3' - ac_uC=' ' - ac_uD=',;t' -@@ -14217,11 +30054,11 @@ - # 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,:.*,,'` ;; -+ 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=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - -@@ -14235,28 +30072,29 @@ - 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 -+ # 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;; -+ # 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 -+ 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;; -+ fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. -- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in -+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - - _ACEOF - -@@ -14279,9 +30117,9 @@ - s,[\\$`],\\&,g - t clear - : clear --s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -+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 -+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 -@@ -14295,13 +30133,13 @@ - # 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]*,/* & */, -+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 egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$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 -@@ -14310,7 +30148,7 @@ - # 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 -+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS -@@ -14325,7 +30163,7 @@ - mv conftest.tail conftest.defines - done - rm -f conftest.defines --echo ' fi # egrep' >>$CONFIG_STATUS -+echo ' fi # grep' >>$CONFIG_STATUS - echo >>$CONFIG_STATUS - - # Break up conftest.undefs because some shells have a limit on the size -@@ -14337,7 +30175,7 @@ - # 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 -+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS -@@ -14365,41 +30203,46 @@ - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then -- if cmp -s $ac_file $tmp/config.h 2>/dev/null; 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 || -+ 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'` -- { case "$ac_dir" in -- [\\/]* | ?:[\\/]* ) as_incr_dir=;; -- *) as_incr_dir=.;; --esac --as_dummy="$ac_dir" --for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do -- case $as_mkdir_dir in -- # Skip DOS drivespec -- ?:) as_incr_dir=$as_mkdir_dir ;; -- *) -- as_incr_dir=$as_incr_dir/$as_mkdir_dir -- test -d "$as_incr_dir" || -- mkdir "$as_incr_dir" || -- { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 --echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac --done; } -+ { 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 -@@ -14408,13 +30251,29 @@ - cat $tmp/config.h - rm -f $tmp/config.h - fi -- # Run the commands associated with the file. -- case $ac_file in -- gsm_config.h ) # update the timestamp --echo 'timestamp for gsm_config.h' >"./stamp-h1" -- ;; -+# 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 - -@@ -14426,16 +30285,41 @@ - 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 || -+ 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 -@@ -14461,12 +30345,45 @@ - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac --# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be --# absolute. --ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` --ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` --ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` --ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` -+ -+# 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 -@@ -14484,10 +30401,10 @@ - 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 || -+ X"$mf" : 'X\(//\)[^/]' \| \ -+ X"$mf" : 'X\(//\)$' \| \ -+ X"$mf" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || - echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } -@@ -14497,61 +30414,60 @@ - else - continue - fi -- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue -- # Extract the definition of DEP_FILES from the Makefile without -- # running `make'. -- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` -+ # 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 -e '/^U = / s///p' < "$mf"` -- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" -- # 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 -e ' -- /^DEP_FILES = .*\\\\$/ { -- s/^DEP_FILES = // -- :loop -- s/\\\\$// -- p -- n -- /\\\\$/ b loop -- p -- } -- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ -+ 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 || -+ 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'` -- { case $dirpart/$fdir in -- [\\/]* | ?:[\\/]* ) as_incr_dir=;; -- *) as_incr_dir=.;; --esac --as_dummy=$dirpart/$fdir --for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do -- case $as_mkdir_dir in -- # Skip DOS drivespec -- ?:) as_incr_dir=$as_mkdir_dir ;; -- *) -- as_incr_dir=$as_incr_dir/$as_mkdir_dir -- test -d "$as_incr_dir" || -- mkdir "$as_incr_dir" || -- { { echo "$as_me:$LINENO: error: cannot create $dirpart/$fdir" >&5 --echo "$as_me: error: cannot create $dirpart/$fdir" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac --done; } -+ { 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" -@@ -14578,35 +30494,51 @@ - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac -+ # Treat a directory as a PO directory if and only if it has a -+ # POTFILES.in file. This allows packages to have multiple PO -+ # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend -+ POMAKEFILEDEPS="POTFILES.in" -+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. -- if test -n "$ALL_LINGUAS"; then -+ if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi -- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` -+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" -+ else -+ # The set of available languages was given in configure.in. -+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi -+ # Compute POFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) -+ # Compute UPDATEPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) -+ # Compute DUMMYPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) -+ # Compute GMOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= -- GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= -+ GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" -- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. -@@ -14641,7 +30573,7 @@ - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in -@@ -14677,8 +30609,11 @@ - # 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_cs_success=false -+ $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. ---- gsmlib-1.10.orig/stamp-h.in -+++ gsmlib-1.10/stamp-h.in -@@ -0,0 +1 @@ -+timestamp ---- gsmlib-1.10.orig/apps/gsmsmsstore.cc -+++ gsmlib-1.10/apps/gsmsmsstore.cc -@@ -292,19 +292,14 @@ - sourceStore = new SortedSMSStore(sourceMeTa->getSMSStore(storeName)); - } - -- // make sure destination file exists -+ // make sure destination file exists if specified -+ // Use isFile() for its exception-throwing properties, and discard -+ // return value cos we don't care (yet) whether it's a device or a -+ // regular file. - if (destination != "") -- { -- try -- { -- ofstream f(destination.c_str(), ios::out | ios::app | ios::binary); -- } -- catch (exception) -- { -- } -- } -+ isFile(destination); - -- // start accessing destination destination store or file -+ // start accessing destination store or file - if (operation == CopyOp || operation == BackupOp || operation == AddOp || - operation == DeleteOp) - if (destination == "-") ---- gsmlib-1.10.orig/apps/gsmsmsd.cc -+++ gsmlib-1.10/apps/gsmsmsd.cc -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - #endif - #if defined(HAVE_GETOPT_LONG) || defined(WIN32) - #include -@@ -39,6 +40,7 @@ - #include - #include - #include -+#include - - using namespace std; - using namespace gsmlib; -@@ -53,6 +55,12 @@ - {"store", required_argument, (int*)NULL, 't'}, - {"device", required_argument, (int*)NULL, 'd'}, - {"spool", required_argument, (int*)NULL, 's'}, -+ {"sent", required_argument, (int*)NULL, 'S'}, -+ {"failed", required_argument, (int*)NULL, 'F'}, -+ {"priorities", required_argument, (int*)NULL, 'P'}, -+#ifndef WIN32 -+ {"syslog", no_argument, (int*)NULL, 'L'}, -+#endif - {"sca", required_argument, (int*)NULL, 'C'}, - {"flush", no_argument, (int*)NULL, 'f'}, - {"concatenate", required_argument, (int*)NULL, 'c'}, -@@ -178,9 +186,21 @@ - - bool requestStatusReport = false; - --void sendSMS(string spoolDir, Ref at) -+void sendSMS(string spoolDirBase, string sentDirBase, string failedDirBase, -+ unsigned int priority, bool enableSyslog, Ref at) - { -- if (spoolDir != "") -+ string spoolDir = spoolDirBase; -+ string sentDir = sentDirBase; -+ string failedDir = failedDirBase; -+ if ( priority >= 1 ) -+ { -+ spoolDir = spoolDirBase + stringPrintf(_("%d"),priority); -+ sentDir = sentDirBase + stringPrintf(_("%d"),priority); -+ failedDir = failedDirBase + stringPrintf(_("%d"),priority); -+ } -+ if ( priority > 1 ) -+ sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); -+ if (spoolDirBase != "") - { - // look into spoolDir for any outgoing SMS that should be sent - #ifdef WIN32 -@@ -211,6 +231,8 @@ - strcmp(entry->d_name, "..") != 0) - #endif - { -+ if ( priority > 1 ) -+ sendSMS(spoolDirBase, sentDirBase, failedDirBase, priority-1, enableSyslog, at); - // read in file - // the first line is interpreted as the phone number - // the rest is the message -@@ -221,11 +243,30 @@ - #endif - ifstream ifs(filename.c_str()); - if (! ifs) -+#ifndef WIN32 -+ if (enableSyslog) -+ { -+ syslog(LOG_WARNING, "Could not open SMS spool file %s", -+ filename.c_str()); -+ if (failedDirBase != "") { -+ string failedfilename = failedDir + "/" + entry->d_name; -+ rename(filename.c_str(),failedfilename.c_str()); -+ } -+ continue; -+ } -+ else -+#endif - throw GsmException( - stringPrintf(_("count not open SMS spool file %s"), - filename.c_str()), ParameterError); - char phoneBuf[1001]; - ifs.getline(phoneBuf, 1000); -+ for(int i=0;i<1000;i++) -+ if(phoneBuf[i]=='\t' || phoneBuf[i]==0) -+ { // ignore everything after a in the phone number -+ phoneBuf[i]=0; -+ break; -+ } - string text; - while (! ifs.eof()) - { -@@ -252,17 +293,51 @@ - submitSMS->setStatusReportRequest(requestStatusReport); - Address destAddr(phoneNumber); - submitSMS->setDestinationAddress(destAddr); -- if (concatenatedMessageId == -1) -- me->sendSMSs(submitSMS, text, true); -- else -+ try - { -- // maximum for concatenatedMessageId is 255 -- if (concatenatedMessageId > 256) -- concatenatedMessageId = 0; -- me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); -+ if (concatenatedMessageId == -1) -+ me->sendSMSs(submitSMS, text, true); -+ else -+ { -+ // maximum for concatenatedMessageId is 255 -+ if (concatenatedMessageId > 256) -+ concatenatedMessageId = 0; -+ me->sendSMSs(submitSMS, text, false, concatenatedMessageId++); -+ } -+#ifndef WIN32 -+ if (enableSyslog) -+ syslog(LOG_NOTICE, "Sent SMS to %s from file %s", phoneBuf, filename.c_str()); -+#endif -+ if (sentDirBase != "") { -+#ifdef WIN32 -+ string sentfilename = sentDir + "\\" + fileInfo.name; -+#else -+ string sentfilename = sentDir + "/" + entry->d_name; -+#endif -+ rename(filename.c_str(),sentfilename.c_str()); -+ } else { -+ unlink(filename.c_str()); -+ } -+ } -+ catch (GsmException &me) -+ { -+#ifndef WIN32 -+ if (enableSyslog) -+ syslog(LOG_WARNING, "Failed sending SMS to %s from file %s: %s", phoneBuf, -+ filename.c_str(), me.what()); -+ else -+#endif -+ cerr << "Failed sending SMS to " << phoneBuf << " from " -+ << filename << ": " << me.what() << endl; -+ if (failedDirBase != "") { -+#ifdef WIN32 -+ string failedfilename = failedDir + "\\" + fileInfo.name; -+#else -+ string failedfilename = failedDir + "/" + entry->d_name; -+#endif -+ rename(filename.c_str(),failedfilename.c_str()); -+ } - } -- -- unlink(filename.c_str()); - #ifdef WIN32 - } - moreFiles = _findnext(fileHandle, &fileInfo) == 0; -@@ -276,10 +351,18 @@ - } - } - -+#ifndef WIN32 -+void syslogExit(int exitcode, int *dummy) -+{ -+ syslog(LOG_NOTICE, "exited (exit %d)",exitcode); -+} -+#endif -+ - // *** main program - - int main(int argc, char *argv[]) - { -+ bool enableSyslog = false; - try - { - string device = "/dev/mobilephone"; -@@ -291,13 +374,16 @@ - bool flushSMS = false; - bool onlyReceptionIndication = true; - string spoolDir; -+ string sentDir = ""; -+ string failedDir = ""; -+ unsigned int priorities = 0; - string initString = DEFAULT_INIT_STRING; - bool swHandshake = false; - string concatenatedMessageIdStr; - - int opt; - int dummy; -- while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:XDr", -+ while((opt = getopt_long(argc, argv, "c:C:I:t:fd:a:b:hvs:S:F:P:LXDr", - longOpts, &dummy)) != -1) - switch (opt) - { -@@ -328,6 +414,18 @@ - case 's': - spoolDir = optarg; - break; -+ case 'L': -+ enableSyslog = true; -+ break; -+ case 'S': -+ sentDir = optarg; -+ break; -+ case 'F': -+ failedDir = optarg; -+ break; -+ case 'P': -+ priorities = abs(atoi(optarg)); -+ break; - case 'f': - flushSMS = true; - break; -@@ -360,11 +458,21 @@ - << _(" -d, --device sets the device to connect to") << endl - << _(" -D, --direct enable direct routing of SMSs") << endl - << _(" -f, --flush flush SMS from store") << endl -+ << _(" -F, --failed directory to move failed SMS to,") << endl -+ << _(" if unset, the SMS will be deleted") << endl - << _(" -h, --help prints this message") << endl - << _(" -I, --init device AT init sequence") << endl -+#ifndef WIN32 -+ << _(" -L, --syslog log errors and information to syslog") -+ << endl -+#endif -+ << _(" -P, --priorities number of priority levels to use,") << endl -+ << _(" (default: none)") << endl - << _(" -r, --requeststat request SMS status report") << endl - << _(" -s, --spool spool directory for outgoing SMS") - << endl -+ << _(" -S, --sent directory to move sent SMS to,") << endl -+ << _(" if unset, the SMS will be deleted") << endl - << _(" -t, --store name of SMS store to use for flush\n" - " and/or temporary SMS storage") << endl - << endl -@@ -380,6 +488,14 @@ - << endl << endl - << _(" default is \"sms cb stat\"") << endl << endl - << _("If no action is given, the SMS is printed to stdout") -+ << endl << endl -+ << _("If -P is given, it activates the priority system and sets the") << endl -+ << _("number or levels to use. For every level, there must be directories") << endl -+ << _("named +.") << endl -+ << _("For example \"-P 2 -s queue -S send -F failed\" needs the following") <getAt()); -+ sendSMS(spoolDir, sentDir, failedDir, priorities, enableSyslog, me->getAt()); - } - } - catch (GsmException &ge) ---- gsmlib-1.10.orig/gsmlib/gsm_unix_serial.cc -+++ gsmlib-1.10/gsmlib/gsm_unix_serial.cc -@@ -20,12 +20,14 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include - #include -+#include - - using namespace std; - using namespace gsmlib; -@@ -131,7 +133,7 @@ - { - int res = read(_fd, &c, 1); - if (res != 1) -- return -1; -+ throwModemException(_("end of file when reading from TA")); - else - readDone = true; - break; -@@ -178,11 +180,15 @@ - - // switch off non-blocking mode - int fdFlags; -- if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) -+ if ((fdFlags = fcntl(_fd, F_GETFL)) == -1) { -+ close(_fd); - throwModemException(_("getting file status flags failed")); -+ } - fdFlags &= ~O_NONBLOCK; -- if (fcntl(_fd, F_SETFL, fdFlags) == -1) -+ if (fcntl(_fd, F_SETFL, fdFlags) == -1) { -+ close(_fd); - throwModemException(_("switching of non-blocking mode failed")); -+ } - - long int saveTimeoutVal = _timeoutVal; - _timeoutVal = 3; -@@ -194,17 +200,22 @@ - - // toggle DTR to reset modem - int mctl = TIOCM_DTR; -- if (ioctl(_fd, TIOCMBIC, &mctl) < 0) -+ if (ioctl(_fd, TIOCMBIC, &mctl) < 0) { -+ close(_fd); - throwModemException(_("clearing DTR failed")); -+ } - // the waiting time for DTR toggling is increased with each loop - usleep(holdoff[initTries]); -- if (ioctl(_fd, TIOCMBIS, &mctl) < 0) -+ if (ioctl(_fd, TIOCMBIS, &mctl) < 0) { -+ close(_fd); - throwModemException(_("setting DTR failed")); -- -+ } - // get line modes -- if (tcgetattr(_fd, &t) < 0) -+ if (tcgetattr(_fd, &t) < 0) { -+ close(_fd); - throwModemException(stringPrintf(_("tcgetattr device '%s'"), - device.c_str())); -+ } - - // set line speed - cfsetispeed(&t, lineSpeed); -@@ -229,9 +240,11 @@ - t.c_cc[VSUSP] = 0; - - // write back -- if(tcsetattr (_fd, TCSANOW, &t) < 0) -+ if(tcsetattr (_fd, TCSANOW, &t) < 0) { -+ close(_fd); - throwModemException(stringPrintf(_("tcsetattr device '%s'"), - device.c_str())); -+ } - // the waiting time for writing to the ME/TA is increased with each loop - usleep(holdoff[initTries]); - -@@ -279,11 +292,14 @@ - catch (GsmException &e) - { - _timeoutVal = saveTimeoutVal; -- if (initTries == 0) -+ if (initTries == 0) { -+ close(_fd); - throw e; -+ } - } - } - // no response after 3 tries -+ close(_fd); - throw GsmException(stringPrintf(_("reset modem failed '%s'"), - device.c_str()), OtherError); - } ---- gsmlib-1.10.orig/gsmlib/gsm_me_ta.cc -+++ gsmlib-1.10/gsmlib/gsm_me_ta.cc -@@ -19,6 +19,8 @@ - #include - #include - -+#include -+ - using namespace std; - using namespace gsmlib; - ---- gsmlib-1.10.orig/gsmlib/gsm_sorted_phonebook.cc -+++ gsmlib-1.10/gsmlib/gsm_sorted_phonebook.cc -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - - const int MAX_LINE_SIZE = 1000; - ---- gsmlib-1.10.orig/gsmlib/gsm_sms_codec.cc -+++ gsmlib-1.10/gsmlib/gsm_sms_codec.cc -@@ -23,6 +23,7 @@ - #ifdef HAVE_STRING_H - #include - #endif -+#include - #include - using namespace std; - using namespace gsmlib; ---- gsmlib-1.10.orig/gsmlib/gsm_at.cc -+++ gsmlib-1.10/gsmlib/gsm_at.cc -@@ -106,11 +106,27 @@ - putLine("AT" + atCommand); - // and gobble up CR/LF (and possibly echoed characters if echo can't be - // switched off) -+ // Also, some mobiles (e.g., Sony Ericsson K800i) respond to commands -+ // like "at+cmgf=0" with "+CMGF: 0" on success as well as the "OK" -+ // status -- so gobble that (but not if that sort of response was expected) -+ // FIXME: this is a gross hack, should be done via capabilities or sth -+ #include -+ string::size_type loc = atCommand.find( "=", 1 ); -+ string expect; -+ if (loc != string::npos) { -+ expect = atCommand; -+ expect.replace(loc, 1, " "); -+ expect.insert(loc, ":"); -+ } else { -+ expect = ""; -+ } - do - { - s = normalize(getLine()); - } -- while (s.length() == 0 || s == "AT" + atCommand); -+ while (s.length() == 0 || s == "AT" + atCommand || -+ ((response.length() == 0 || !matchResponse(s, response)) && -+ (expect.length() > 0 && matchResponse(s, expect)))); - - // handle errors - if (matchResponse(s, "+CME ERROR:") || matchResponse(s, "+CMS ERROR:")) ---- gsmlib-1.10.orig/gsmlib/gsm_map_key.h -+++ gsmlib-1.10/gsmlib/gsm_map_key.h -@@ -27,6 +27,7 @@ - - template class MapKey - { -+ public: - SortedStore &_myStore; // my store - // different type keys - Address _addressKey; -@@ -45,6 +46,7 @@ - MapKey(SortedStore &myStore, string key) : - _myStore(myStore), _strKey(key) {} - -+/* - friend - bool operator< - #ifndef WIN32 -@@ -59,6 +61,7 @@ - #endif - (const MapKey &x, - const MapKey &y); -+*/ - }; - - // compare two keys -@@ -72,7 +75,7 @@ - // MapKey members - - template -- bool gsmlib::operator<(const MapKey &x, -+ bool operator<(const MapKey &x, - const MapKey &y) - { - assert(&x._myStore == &y._myStore); -@@ -97,7 +100,7 @@ - } - - template -- bool gsmlib::operator==(const MapKey &x, -+ bool operator==(const MapKey &x, - const MapKey &y) - { - assert(&x._myStore == &y._myStore); ---- gsmlib-1.10.orig/gsmlib/gsm_me_ta.h -+++ gsmlib-1.10/gsmlib/gsm_me_ta.h -@@ -291,8 +291,8 @@ - // 3 disable phone receive RF circuits only - // 4 disable phone both transmit and receive RF circuits - // 5...127 implementation-defined -- int MeTa::getFunctionalityLevel() throw(GsmException); -- void MeTa::setFunctionalityLevel(int level) throw(GsmException); -+ int getFunctionalityLevel() throw(GsmException); -+ void setFunctionalityLevel(int level) throw(GsmException); - - // return battery charge status (+CBC): - // 0 ME is powered by the battery -@@ -386,13 +386,13 @@ - void setCallWaitingLockStatus(FacilityClass cl, - bool lock)throw(GsmException); - -- void MeTa::setCLIRPresentation(bool enable) throw(GsmException); -+ void setCLIRPresentation(bool enable) throw(GsmException); - //(+CLIR) - - // 0:according to the subscription of the CLIR service - // 1:CLIR invocation - // 2:CLIR suppression -- int MeTa::getCLIRPresentation() throw(GsmException); -+ int getCLIRPresentation() throw(GsmException); - - friend class Phonebook; - friend class SMSStore; ---- gsmlib-1.10.orig/gsmlib/gsm_util.cc -+++ gsmlib-1.10/gsmlib/gsm_util.cc -@@ -35,6 +35,7 @@ - #define __USE_GNU - #define _GNU_SOURCE - #endif -+#include - #include - #include - ---- gsmlib-1.10.orig/intl/Makefile -+++ gsmlib-1.10/intl/Makefile -@@ -0,0 +1,214 @@ -+# Makefile for directory with message catalog handling in GNU NLS Utilities. -+# Copyright (C) 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+PACKAGE = gsmlib -+VERSION = 1.10 -+ -+SHELL = /bin/sh -+ -+srcdir = . -+top_srcdir = .. -+top_builddir = .. -+ -+ -+prefix = /usr -+exec_prefix = ${prefix} -+transform = s,x,x, -+libdir = $(exec_prefix)/lib -+includedir = $(prefix)/include -+datadir = $(prefix)/share -+localedir = $(datadir)/locale -+gnulocaledir = $(prefix)/share/locale -+gettextsrcdir = ${prefix}/share/gettext/intl -+aliaspath = $(localedir):. -+subdir = intl -+ -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+MKINSTALLDIRS = $(top_builddir)/scripts/mkinstalldirs -+ -+l = @l@ -+ -+AR = ar -+CC = i486-linux-gnu-gcc -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+RANLIB = ranlib -+ -+DEFS = -DGNULOCALEDIR=\"$(gnulocaledir)\" \ -+-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" -DHAVE_CONFIG_H -+CPPFLAGS = -+CFLAGS = -D_REENTRANT -g -O2 -+LDFLAGS = -+ -+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) -+ -+HEADERS = $(COMHDRS) libgettext.h loadinfo.h -+COMHDRS = gettext.h gettextP.h hash-string.h -+SOURCES = $(COMSRCS) intl-compat.c cat-compat.c -+COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ -+finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ -+explodename.c -+OBJECTS = bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ -+finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ -+explodename.$lo -+CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo -+GETTOBJS = intl-compat.$lo -+DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ -+xopen-msg.sed $(HEADERS) $(SOURCES) -+DISTFILES.normal = VERSION -+DISTFILES.gettext = libintl.glibc intlh.inst.in -+ -+.SUFFIXES: -+.SUFFIXES: .c .o .lo -+.c.o: -+ $(COMPILE) $< -+.c.lo: -+ $(LIBTOOL) --mode=compile $(COMPILE) $< -+ -+INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib -+ -+all: all-no -+ -+all-yes: libintl.$la intlh.inst -+all-no: -+ -+libintl.a: $(OBJECTS) -+ rm -f $@ -+ $(AR) cru $@ $(OBJECTS) -+ $(RANLIB) $@ -+ -+libintl.la: $(OBJECTS) -+ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ -+ -version-info 1:0 -rpath $(libdir) -+ -+../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot -+ cd ../po && $(MAKE) cat-id-tbl.$lo -+ -+check: all -+ -+# This installation goal is only used in GNU gettext. Packages which -+# only use the library should use install instead. -+ -+# We must not install the libintl.h/libintl.a files if we are on a -+# system which has the gettext() function in its C library or in a -+# separate library or use the catgets interface. A special case is -+# where configure found a previously installed GNU gettext library. -+# If you want to use the one which comes with this version of the -+# package, you have to use `configure --with-included-gettext'. -+install: install-exec install-data -+install-exec: all -+ if test "$(PACKAGE)" = "gettext" \ -+ && test '' = '$(GETTOBJS)'; then \ -+ if test -r $(MKINSTALLDIRS); then \ -+ $(MKINSTALLDIRS) $(libdir) $(includedir); \ -+ else \ -+ $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ -+ fi; \ -+ $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ -+ $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ -+ else \ -+ : ; \ -+ fi -+install-data: all -+ if test "$(PACKAGE)" = "gettext"; then \ -+ if test -r $(MKINSTALLDIRS); then \ -+ $(MKINSTALLDIRS) $(gettextsrcdir); \ -+ else \ -+ $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ -+ fi; \ -+ $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ -+ dists="$(DISTFILES.common)"; \ -+ for file in $$dists; do \ -+ $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ -+ done; \ -+ else \ -+ : ; \ -+ fi -+ -+# Define this as empty until I found a useful application. -+installcheck: -+ -+uninstall: -+ dists="$(DISTFILES.common)"; \ -+ for file in $$dists; do \ -+ rm -f $(gettextsrcdir)/$$file; \ -+ done -+ -+info dvi: -+ -+$(OBJECTS): ../gsm_config.h libgettext.h -+bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -+dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h -+ -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) -+ here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) -+ -+id: ID -+ -+ID: $(HEADERS) $(SOURCES) -+ here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) -+ -+ -+mostlyclean: -+ rm -f *.a *.o *.lo core core.* -+ -+clean: mostlyclean -+ -+distclean: clean -+ rm -f Makefile ID TAGS po2msg.sed po2tbl.sed -+ -+maintainer-clean: distclean -+ @echo "This command is intended for maintainers to use;" -+ @echo "it deletes files that may require special tools to rebuild." -+ -+ -+# GNU gettext needs not contain the file `VERSION' but contains some -+# other files which should not be distributed in other packages. -+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -+dist distdir: Makefile $(DISTFILES) -+ if test "$(PACKAGE)" = gettext; then \ -+ additional="$(DISTFILES.gettext)"; \ -+ else \ -+ additional="$(DISTFILES.normal)"; \ -+ fi; \ -+ for file in $(DISTFILES.common) $$additional; do \ -+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ -+ || cp -p $(srcdir)/$$file $(distdir); \ -+ done -+ -+dist-libc: -+ tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc -+ -+Makefile: Makefile.in ../config.status -+ cd .. \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+# The dependency for intlh.inst is different in gettext and all other -+# packages. Because we cannot you GNU make features we have to solve -+# the problem while rewriting Makefile.in. -+@GT_YES@intlh.inst: intlh.inst.in ../config.status -+@GT_YES@ cd .. \ -+@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ -+@GT_YES@ $(SHELL) ./config.status -+@GT_NO@.PHONY: intlh.inst -+@GT_NO@intlh.inst: -+ -+# Tell versions [3.59,3.63) of GNU make not to export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: ---- gsmlib-1.10.orig/po/cat-id-tbl.c -+++ gsmlib-1.10/po/cat-id-tbl.c -@@ -1,435 +0,0 @@ --/* Automatically generated by po2tbl.sed from gsmlib.pot. */ -- --#if HAVE_CONFIG_H --# include --#endif -- --#include "libgettext.h" -- --const struct _msg_ent _msg_tbl[] = { -- {"", 1}, -- {"could not execute '%s'", 2}, -- {"error writing to '%s'", 3}, -- {"error when calling opendir('%s')(errno: %d/%s)", 4}, -- {"count not open SMS spool file %s", 5}, -- {": version %s [compiled %s]", 6}, -- {"\ --: [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n\ -- [-s spool dir][-t][-v]{sms_type}", 7}, -- {"\ -- -a, --action the action to execute when an SMS arrives\n\ -- (SMS is send to stdin of action)", 8}, -- {" -b, --baudrate baudrate to use for device (default: 38400)", 9}, -- {" -c, --concatenate start ID for concatenated SMS messages", 10}, -- {" -C, --sca SMS service centre address", 11}, -- {" -d, --device sets the device to connect to", 12}, -- {" -D, --direct enable direct routing of SMSs", 13}, -- {" -f, --flush flush SMS from store", 14}, -- {" -h, --help prints this message", 15}, -- {" -I, --init device AT init sequence", 16}, -- {" -r, --requeststat request SMS status report", 17}, -- {" -s, --spool spool directory for outgoing SMS", 18}, -- {"\ -- -t, --store name of SMS store to use for flush\n\ -- and/or temporary SMS storage", 19}, -- {" -v, --version prints version and exits", 20}, -- {" -X, --xonxoff switch on software handshake", 21}, -- {" sms_type may be any combination of", 22}, -- {" sms, no_sms controls reception of normal SMS", 23}, -- {" cb, no_cb controls reception of cell broadcast messages", 24}, -- {" stat, no_stat controls reception of status reports", 25}, -- {" default is \"sms cb stat\"", 26}, -- {"If no action is given, the SMS is printed to stdout", 27}, -- {"unknown option", 28}, -- {"error when calling sigaction() (errno: %d/%s)", 29}, -- {"store name must be given for flush option", 30}, -- {"Type of message: ", 31}, -- {"SMS message\n", 32}, -- {"submit report message\n", 33}, -- {"status report message\n", 34}, -- {"cell broadcast message\n", 35}, -- {"[ERROR]: ", 36}, -- {"(try setting sms_type, please refer to gsmsmsd manpage)", 37}, -- {"\ --: [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]\n\ -- [-t][-v][-X] phonenumber [text]", 38}, -- {" -c, --concatenate ID for concatenated SMS messages", 39}, -- {" -d, --device sets the destination device to connect to", 40}, -- {"\ -- -t, --test convert text to GSM alphabet and vice\n\ -- versa, no SMS message is sent", 41}, -- {" phonenumber recipient's phone number", 42}, -- {"\ -- text optional text of the SMS message\n\ -- if omitted: read from stdin", 43}, -- {"phone number and text missing", 44}, -- {"more than two parameters given", 45}, -- {"text is larger than 160 characters", 46}, -- {"inserting '%s' tel# %s", 47}, -- {" (index #%d)", 48}, -- {"updating '%s' tel# %s to new tel# %s", 49}, -- {"updating '%s' tel# %s to new tel# %s(index %d)", 50}, -- {"deleting '%s' tel# %s", 51}, -- {"\ --: [-b baudrate][-c][-d device or file][-h][-I init string]\n\ -- [-p phonebook name][-s device or file][-t charset][-v][-V][-y][-X]", 52}, -- {" -c, --copy copy source entries to destination", 53}, -- {"\ -- -d, --destination sets the destination device to connect \n\ -- to, or the file to write", 54}, -- {" -D, --destination-backend sets the destination backend", 55}, -- {" -i, --index takes index positions into account", 56}, -- {" -p, --phonebook name of phonebook to use", 57}, -- {"\ -- -s, --source sets the source device to connect to,\n\ -- or the file to read", 58}, -- {"\ -- -t, --charset sets the character set to use for\n\ -- phonebook entries", 59}, -- {" -S, --source-backend sets the source backend", 60}, -- {" -V, --verbose print detailed progress messages", 61}, -- {"\ -- -y, --synchronize synchronize destination with source\n\ -- entries (destination is overwritten)\n\ -- (see gsmpb(1) for details)", 62}, -- {"both source and destination must be given", 63}, -- {"phonebook name must be given", 64}, -- {"\ --text '%s' is too large to fit into destination (maximum size %d characters)", 65}, -- {"\ --phone number '%s' is too large to fit into destination (maximum size %d \ --characters)", 66}, -- {"active ", 67}, -- {"inactive ", 68}, -- {"number: ", 69}, -- {" subaddr: ", 70}, -- {" time: ", 71}, -- {" Manufacturer: ", 72}, -- {" Model: ", 73}, -- {" Revision: ", 74}, -- {" Serial Number: ", 75}, -- {" Functionality Level: ", 76}, -- {"unsupported", 77}, -- {"> Status: ", 78}, -- {"unknown", 79}, -- {"current", 80}, -- {"available", 81}, -- {"forbidden", 82}, -- {" Long name: '", 83}, -- {" Short name: '", 84}, -- {" Numeric name: ", 85}, -- {" Mode: ", 86}, -- {"automatic", 87}, -- {"manual", 88}, -- {"deregister", 89}, -- {"manual/automatic", 90}, -- {" Voice", 91}, -- {" unknown", 92}, -- {" Data", 93}, -- {" Fax", 94}, -- {"on", 95}, -- {"off", 96}, -- {"UnconditionalReason", 97}, -- {"MobileBusyReason", 98}, -- {"NoReplyReason", 99}, -- {"NotReachableReason", 100}, -- {"0 ME is powered by the battery", 101}, -- {"1 ME has a battery connected, but is not powered by it", 102}, -- {"2 ME does not have a battery connected", 103}, -- {"3 Recognized power fault, calls inhibited", 104}, -- {"unknown facility class parameter '%c'", 105}, -- {"not enough parameters, minimum number of parameters is %d", 106}, -- {"too many parameters, maximum number of parameters is %d", 107}, -- {"\ --: [-b baudrate][-d device][-h][-I init string][-o operation]\n\ -- [-v][-X]{parameters}", 108}, -- {"\ -- -o, --operation operation to perform on the mobile \n\ -- phone with the specified parameters", 109}, -- {"\ -- parameters parameters to use for the operation\n\ -- (if an operation is given) or\n\ -- a specification which kind of\n\ -- information to read from the mobile phone", 110}, -- {"\ --Refer to gsmctl(1) for details on the available parameters and operations.", 111}, -- {"unknown information parameter '%s'", 112}, -- {"unknown opmode parameter '%s'", 113}, -- {"unknown forward reason parameter '%s'", 114}, -- {"unknown forward mode parameter '%s'", 115}, -- {"unknown operation '%s'", 116}, -- {"inserting entry #%d from source into destination", 117}, -- {"incompatible options '%c' and '%c'", 118}, -- {"\ --: [-a][-b baudrate][-c][-C sca][-d device or file]\n\ -- [-h][-I init string][-k][-l][-s device or file][-t SMS store name]\n\ -- [-v][-V][-x][-X]{indices}|[phonenumber text]", 119}, -- {"\ -- -a, --add add new SMS submit message\n\ -- (phonenumber and text) to destination", 120}, -- {"\ -- -c, --copy copy source entries to destination\n\ -- (if indices are given, copy only these entries)", 121}, -- {"\ -- -d, --destination sets the destination device to\n\ -- connect to, or the file to write to", 122}, -- {"\ -- -k, --backup backup new entries to destination\n\ -- (if indices are given, copy only these entries)", 123}, -- {" -l, --list list source to stdout", 124}, -- {" -t, --store name of SMS store to use", 125}, -- {" -x, --delete delete entries denoted by indices", 126}, -- {"no operation option given", 127}, -- {"both source and destination required", 128}, -- {"destination must not be given", 129}, -- {"source required", 130}, -- {"source must not be given", 131}, -- {"destination required", 132}, -- {"expected number, got '%s'", 133}, -- {"not enough parameters given", 134}, -- {"unexpected parameters", 135}, -- {"store name must be given", 136}, -- {"no index '%s' in source", 137}, -- {"index #%d", 138}, -- {"inserting new entry into destination", 139}, -- {"deleting entry #%d from destination", 140}, -- {"no index '%s' in destination", 141}, -- {"unspecified ME/TA error", 142}, -- {"ME/TA error '", 143}, -- {"(code %s)", 144}, -- {"ME/TA error '' (code not known)", 145}, -- {"unexpected response '%s' when sending 'AT%s'", 146}, -- {"unexpected character in PDU handshake", 147}, -- {"phone failure", 148}, -- {"no connection to phone", 149}, -- {"phone adaptor link reserved", 150}, -- {"operation not allowed", 151}, -- {"operation not supported", 152}, -- {"ph SIM PIN required", 153}, -- {"SIM not inserted", 154}, -- {"SIM PIN required", 155}, -- {"SIM PUK required", 156}, -- {"SIM failure", 157}, -- {"SIM busy", 158}, -- {"SIM wrong", 159}, -- {"incorrect password", 160}, -- {"SIM PIN2 required", 161}, -- {"SIM PUK2 required", 162}, -- {"memory full", 163}, -- {"invalid index", 164}, -- {"not found", 165}, -- {"memory failure", 166}, -- {"text string too long", 167}, -- {"invalid characters in text string", 168}, -- {"dial string too long", 169}, -- {"invalid characters in dial string", 170}, -- {"no network service", 171}, -- {"network timeout", 172}, -- {"invalid ME error %d", 173}, -- {"Unassigned (unallocated) number", 174}, -- {"Operator determined barring", 175}, -- {"Call barred", 176}, -- {"Network failure", 177}, -- {"Short message transfer rejected", 178}, -- {"Congestion", 179}, -- {"Destination out of service", 180}, -- {"Unidentified subscriber", 181}, -- {"Facility rejected", 182}, -- {"Unknown subscriber", 183}, -- {"Network out of order", 184}, -- {"Temporary failure", 185}, -- {"Resources unavailable, unspecified", 186}, -- {"Requested facility not subscribed", 187}, -- {"Requested facility not implemented", 188}, -- {"Invalid Transaction Identifier", 189}, -- {"Semantically incorrect message", 190}, -- {"Invalid mandatory information", 191}, -- {"Message type non-existent or not implemented", 192}, -- {"Message not compatible with short message protocol state", 193}, -- {"Information element non-existent or not implemented", 194}, -- {"Protocol error, unspecified", 195}, -- {"Interworking, unspecified", 196}, -- {"Telematic interworking not supported", 197}, -- {"Short message Type 0 not supported", 198}, -- {"Cannot replace short message", 199}, -- {"Unspecified TP-PID error", 200}, -- {"Data coding scheme (alphabet) not supported", 201}, -- {"Message class not supported", 202}, -- {"Unspecifiec TP-DCS error", 203}, -- {"Command cannot be actioned", 204}, -- {"Command unsupported", 205}, -- {"Unspecified TP-Command error", 206}, -- {"TPDU not supported", 207}, -- {"SC busy", 208}, -- {"No SC subscription", 209}, -- {"SC system failure", 210}, -- {"Invalid SME address", 211}, -- {"Destination SME barred", 212}, -- {"SM Rejected-Duplicated SM", 213}, -- {"SIM SMS storage full", 214}, -- {"No SMS storage capability in SIM", 215}, -- {"Error in MS", 216}, -- {"Memory Capacity Exceed", 217}, -- {"Unspecified error cause", 218}, -- {"ME failure", 219}, -- {"SMS service of ME reserved", 220}, -- {"invalid PDU mode parameter", 221}, -- {"invalid text mode parameter", 222}, -- {"PH-SIM PIN required", 223}, -- {"invalid memory index", 224}, -- {"SMSC address unknown", 225}, -- {"no +CNMA acknowledgement expected", 226}, -- {"unknown error", 227}, -- {"invalid SMS error %d", 228}, -- {"Short message received by the SME", 229}, -- {"\ --Short message forwarded by the SC to the SME but the SC is unable to confirm \ --delivery", 230}, -- {"Short message replaced by the SC", 231}, -- {"reserved", 232}, -- {"SME busy", 233}, -- {"No response from SME", 234}, -- {"Service rejected", 235}, -- {"Quality of service not available", 236}, -- {"Error in SME", 237}, -- {" (Temporary error, SC is not making any more transfer attempts)", 238}, -- {" (Temporary error, SC still trying to transfer SM)", 239}, -- {"Remote Procedure Error", 240}, -- {"Incompatible destination", 241}, -- {"Connection rejected by SME", 242}, -- {"Not obtainable", 243}, -- {"No interworking available", 244}, -- {"SM validity period expired", 245}, -- {"SM deleted by originating SME", 246}, -- {"SM deleted by SC administration", 247}, -- {"SM does not exit", 248}, -- {" (Permanent Error, SC is not making any more transfer attempts)", 249}, -- {"unexpected number format %d", 250}, -- {"unexpected unsolicited event '%s'", 251}, -- {"unable to set operator", 252}, -- {"call forward time must be in the range 0..30", 253}, -- {"Functionality Level commands not supported by ME", 254}, -- {"Requested Functionality Level out of range", 255}, -- {"unsupported alphabet for SMS", 256}, -- {"SMS text is larger than allowed", 257}, -- {"not more than 255 concatenated SMSs allowed", 258}, -- {"only serviceLevel 0 or 1 supported", 259}, -- {"cannot route SMS messages to TE", 260}, -- {"cannot route cell broadcast messages to TE", 261}, -- {"cannot route status reports messages to TE", 262}, -- {"cannot route status report messages to TE", 263}, -- {"expected parameter", 264}, -- {"expected '\"'", 265}, -- {"expected number", 266}, -- {"unexpected end of string '%s'", 267}, -- {" (at position %d of string '%s')", 268}, -- {"expected '%c'", 269}, -- {"expected ')' or ','", 270}, -- {"expected ')', ',' or '-'", 271}, -- {"range of the form a-b-c not allowed", 272}, -- {"range of the form a- no allowed", 273}, -- {"expected comma", 274}, -- {"expected end of line", 275}, -- {"\ --length of text '%s' exceeds maximum text length (%d characters) of phonebook \ --'%s'", 276}, -- {"\ --length of telephone number '%s' exceeds maximum telephone number length (%d \ --characters) of phonebook '%s'", 277}, -- {"phonebook full", 278}, -- {"attempt to overwrite phonebook entry", 279}, -- {"SIM card changed while accessing phonebook", 280}, -- {"unhandled SMS TPDU type", 281}, -- {"can only send SMS-SUBMIT and SMS-COMMAND TPDUs", 282}, -- {"no device given for sending SMS", 283}, -- {"Message type: SMS-DELIVER", 284}, -- {"SC address: '", 285}, -- {"More messages to send: ", 286}, -- {"Reply path: ", 287}, -- {"User data header indicator: ", 288}, -- {"Status report indication: ", 289}, -- {"Originating address: '", 290}, -- {"Protocol identifier: 0x", 291}, -- {"Data coding scheme: ", 292}, -- {"SC timestamp: ", 293}, -- {"User data length: ", 294}, -- {"User data header: 0x", 295}, -- {"User data: '", 296}, -- {"Message type: SMS-SUBMIT", 297}, -- {"Reject duplicates: ", 298}, -- {"Validity period format: ", 299}, -- {"not present", 300}, -- {"relative", 301}, -- {"absolute", 302}, -- {"Status report request: ", 303}, -- {"Message reference: ", 304}, -- {"Destination address: '", 305}, -- {"Validity period: ", 306}, -- {"Message type: SMS-STATUS-REPORT", 307}, -- {"Status report qualifier: ", 308}, -- {"Recipient address: '", 309}, -- {"Discharge time: ", 310}, -- {"Status: 0x", 311}, -- {"Message type: SMS-COMMAND", 312}, -- {"Command type: 0x", 313}, -- {"Message number: ", 314}, -- {"Command data length: ", 315}, -- {"Command data: '", 316}, -- {"Message type: SMS-DELIVER-REPORT", 317}, -- {"Protocol identifier present: ", 318}, -- {"Data coding scheme present: ", 319}, -- {"User data length present: ", 320}, -- {"Message type: SMS-SUBMIT-REPORT", 321}, -- {" minutes", 322}, -- {" days", 323}, -- {" weeks", 324}, -- {"compressed ", 325}, -- {"voicemail message waiting", 326}, -- {"fax message waiting", 327}, -- {"electronic mail message waiting", 328}, -- {"other message waiting", 329}, -- {"default alphabet", 330}, -- {"8-bit alphabet", 331}, -- {"16-bit alphabet", 332}, -- {"reserved alphabet", 333}, -- {"bad hexadecimal PDU format", 334}, -- {"premature end of PDU", 335}, -- {"unknown time period format", 336}, -- {"interrupted when reading from TA", 337}, -- {"reading from TA", 338}, -- {"timeout when reading from TA", 339}, -- {"opening device '%s'", 340}, -- {"getting file status flags failed", 341}, -- {"switching of non-blocking mode failed", 342}, -- {"clearing DTR failed", 343}, -- {"setting DTR failed", 344}, -- {"tcgetattr device '%s'", 345}, -- {"tcsetattr device '%s'", 346}, -- {"reset modem failed '%s'", 347}, -- {"interrupted when writing to TA", 348}, -- {"writing to TA", 349}, -- {"timeout when writing to TA", 350}, -- {"unknown baudrate '%s'", 351}, -- {"error when calling stat('%s') (errno: %d/%s)", 352}, -- {"file '%s' is neither file nor character device", 353}, -- {"maxmimum number of symbolic links exceeded", 354}, -- {"error renaming '%s' to '%s'", 355}, -- {"text '%s' contains illegal character '\"'", 356}, -- {"illegal character in telephone number '%s'", 357}, -- {"error reading from file '%s", 358}, -- {"entry '%s' lacks index", 359}, -- {"line '%s' has invalid format", 360}, -- {"error opening file '%s' for writing", 361}, -- {"", 362}, -- {"error writing to file '%s'", 363}, -- {"attempt to change phonebook read from ", 364}, -- {"cannot open file '%s'", 365}, -- {"", 366}, -- {"indices must be unique in phonebook", 367}, -- {"error reading from file '%s'", 368}, -- {"file '%s' has wrong version", 369}, -- {"corrupt SMS store file '%s'", 370}, -- {"attempt to change SMS store read from ", 371}, --}; -- --int _msg_tbl_length = 371; ---- gsmlib-1.10.orig/po/de.po -+++ gsmlib-1.10/po/de.po -@@ -233,7 +233,7 @@ - - #: apps/gsmsendsms.cc:171 - msgid " phonenumber recipient's phone number" --msgstr " Telefonummer die Telefonnumer des Empfängers" -+msgstr " Telefonummer die Telefonnummer des Empfängers" - - #: apps/gsmsendsms.cc:172 - msgid "" -@@ -295,7 +295,7 @@ - - #: apps/gsmpb.cc:325 - msgid " -c, --copy copy source entries to destination" --msgstr " -c, --copy kopiere Quell-Enträge zum Zielgerät/-datei" -+msgstr " -c, --copy kopiere Quell-Einträge zum Zielgerät/-datei" - - #: apps/gsmpb.cc:327 - msgid "" -@@ -626,14 +626,14 @@ - msgstr "" - ": [-a][-b Baud-Rate][-c][-C sca][-d Gerät oder Datei]\n" - " [-h][-I Init String][-k][-l][-s Gerät oder Datei][-t SMS Speichername]\n" --" [-v][-V][-x][-X]{Indices}|[Telefonnumer Text]" -+" [-v][-V][-x][-X]{Indices}|[Telefonnummer Text]" - - #: apps/gsmsmsstore.cc:191 - msgid "" - " -a, --add add new SMS submit message\n" - " (phonenumber and text) to destination" - msgstr "" --" -a, --add füge neue SMS-Submit-Nachricht (Telefonnumer und\n" -+" -a, --add füge neue SMS-Submit-Nachricht (Telefonnummer und\n" - " Text) in das Zielgerät/-datei ein" - - #: apps/gsmsmsstore.cc:197 -@@ -1437,7 +1437,7 @@ - - #: gsmlib/gsm_sms.cc:450 gsmlib/gsm_sms.cc:626 - msgid "Destination address: '" --msgstr "Zieladdresse: '" -+msgstr "Zieladresse: '" - - #: gsmlib/gsm_sms.cc:455 - msgid "Validity period: " ---- gsmlib-1.10.orig/po/gsmlib.pot -+++ gsmlib-1.10/po/gsmlib.pot -@@ -7,7 +7,8 @@ - msgid "" - msgstr "" - "Project-Id-Version: PACKAGE VERSION\n" --"POT-Creation-Date: 2002-10-22 22:48+0200\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2008-10-06 14:36+1100\n" - "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" - "Last-Translator: FULL NAME \n" - "Language-Team: LANGUAGE \n" -@@ -15,168 +16,225 @@ - "Content-Type: text/plain; charset=CHARSET\n" - "Content-Transfer-Encoding: 8bit\n" - --#: apps/gsmsmsd.cc:164 -+#: apps/gsmsmsd.cc:172 - #, c-format - msgid "could not execute '%s'" - msgstr "" - --#: apps/gsmsmsd.cc:168 -+#: apps/gsmsmsd.cc:176 - #, c-format - msgid "error writing to '%s'" - msgstr "" - --#: apps/gsmsmsd.cc:196 -+#: apps/gsmsmsd.cc:197 apps/gsmsmsd.cc:198 apps/gsmsmsd.cc:199 -+#, c-format -+msgid "%d" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:216 - #, c-format - msgid "error when calling opendir('%s')(errno: %d/%s)" - msgstr "" - --#: apps/gsmsmsd.cc:225 -+#: apps/gsmsmsd.cc:260 - #, c-format - msgid "count not open SMS spool file %s" - msgstr "" - --#: apps/gsmsmsd.cc:341 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 -+#: apps/gsmsmsd.cc:439 apps/gsmsendsms.cc:144 apps/gsmpb.cc:311 - #: apps/gsmctl.cc:380 apps/gsmsmsstore.cc:179 - #, c-format - msgid ": version %s [compiled %s]" - msgstr "" - --#: apps/gsmsmsd.cc:346 -+#: apps/gsmsmsd.cc:444 - msgid "" - ": [-a action][-b baudrate][-C sca][-d device][-f][-h][-I init string]\n" - " [-s spool dir][-t][-v]{sms_type}" - msgstr "" - --#: apps/gsmsmsd.cc:350 -+#: apps/gsmsmsd.cc:448 - msgid "" - " -a, --action the action to execute when an SMS arrives\n" - " (SMS is send to stdin of action)" - msgstr "" - --#: apps/gsmsmsd.cc:354 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 -+#: apps/gsmsmsd.cc:452 apps/gsmsendsms.cc:153 apps/gsmpb.cc:322 - #: apps/gsmctl.cc:389 apps/gsmsmsstore.cc:194 - msgid " -b, --baudrate baudrate to use for device (default: 38400)" - msgstr "" - --#: apps/gsmsmsd.cc:357 -+#: apps/gsmsmsd.cc:455 - msgid " -c, --concatenate start ID for concatenated SMS messages" - msgstr "" - --#: apps/gsmsmsd.cc:359 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 -+#: apps/gsmsmsd.cc:457 apps/gsmsendsms.cc:158 apps/gsmsmsstore.cc:200 - msgid " -C, --sca SMS service centre address" - msgstr "" - --#: apps/gsmsmsd.cc:360 -+#: apps/gsmsmsd.cc:458 - msgid " -d, --device sets the device to connect to" - msgstr "" - --#: apps/gsmsmsd.cc:361 -+#: apps/gsmsmsd.cc:459 - msgid " -D, --direct enable direct routing of SMSs" - msgstr "" - --#: apps/gsmsmsd.cc:362 -+#: apps/gsmsmsd.cc:460 - msgid " -f, --flush flush SMS from store" - msgstr "" - --#: apps/gsmsmsd.cc:363 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 -+#: apps/gsmsmsd.cc:461 -+msgid " -F, --failed directory to move failed SMS to," -+msgstr "" -+ -+#: apps/gsmsmsd.cc:462 apps/gsmsmsd.cc:475 -+msgid " if unset, the SMS will be deleted" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:463 apps/gsmsendsms.cc:161 apps/gsmpb.cc:332 - #: apps/gsmctl.cc:394 apps/gsmsmsstore.cc:204 - msgid " -h, --help prints this message" - msgstr "" - --#: apps/gsmsmsd.cc:364 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 -+#: apps/gsmsmsd.cc:464 apps/gsmsendsms.cc:162 apps/gsmpb.cc:335 - #: apps/gsmctl.cc:395 apps/gsmsmsstore.cc:205 - msgid " -I, --init device AT init sequence" - msgstr "" - --#: apps/gsmsmsd.cc:365 apps/gsmsendsms.cc:163 -+#: apps/gsmsmsd.cc:466 -+msgid " -L, --syslog log errors and information to syslog" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:469 -+msgid " -P, --priorities number of priority levels to use," -+msgstr "" -+ -+#: apps/gsmsmsd.cc:470 -+msgid " (default: none)" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:471 apps/gsmsendsms.cc:163 - msgid " -r, --requeststat request SMS status report" - msgstr "" - --#: apps/gsmsmsd.cc:366 -+#: apps/gsmsmsd.cc:472 - msgid " -s, --spool spool directory for outgoing SMS" - msgstr "" - --#: apps/gsmsmsd.cc:368 -+#: apps/gsmsmsd.cc:474 -+msgid " -S, --sent directory to move sent SMS to," -+msgstr "" -+ -+#: apps/gsmsmsd.cc:476 - msgid "" - " -t, --store name of SMS store to use for flush\n" - " and/or temporary SMS storage" - msgstr "" - --#: apps/gsmsmsd.cc:371 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 -+#: apps/gsmsmsd.cc:479 apps/gsmsendsms.cc:167 apps/gsmpb.cc:343 - #: apps/gsmctl.cc:399 apps/gsmsmsstore.cc:213 - msgid " -v, --version prints version and exits" - msgstr "" - --#: apps/gsmsmsd.cc:372 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 -+#: apps/gsmsmsd.cc:480 apps/gsmsendsms.cc:169 apps/gsmpb.cc:346 - #: apps/gsmctl.cc:400 apps/gsmsmsstore.cc:218 - msgid " -X, --xonxoff switch on software handshake" - msgstr "" - --#: apps/gsmsmsd.cc:374 -+#: apps/gsmsmsd.cc:482 - msgid " sms_type may be any combination of" - msgstr "" - --#: apps/gsmsmsd.cc:375 -+#: apps/gsmsmsd.cc:483 - msgid " sms, no_sms controls reception of normal SMS" - msgstr "" - --#: apps/gsmsmsd.cc:377 -+#: apps/gsmsmsd.cc:485 - msgid " cb, no_cb controls reception of cell broadcast messages" - msgstr "" - --#: apps/gsmsmsd.cc:379 -+#: apps/gsmsmsd.cc:487 - msgid " stat, no_stat controls reception of status reports" - msgstr "" - --#: apps/gsmsmsd.cc:381 -+#: apps/gsmsmsd.cc:489 - msgid " default is \"sms cb stat\"" - msgstr "" - --#: apps/gsmsmsd.cc:382 -+#: apps/gsmsmsd.cc:490 - msgid "If no action is given, the SMS is printed to stdout" - msgstr "" - --#: apps/gsmsmsd.cc:387 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 -+#: apps/gsmsmsd.cc:492 -+msgid "If -P is given, it activates the priority system and sets the" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:493 -+msgid "number or levels to use. For every level, there must be directories" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:494 -+msgid "named +." -+msgstr "" -+ -+#: apps/gsmsmsd.cc:495 -+msgid "For example \"-P 2 -s queue -S send -F failed\" needs the following" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:496 -+msgid "directories: queue1/ queue2/ send1/ send2/ failed1/ failed2/" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:497 -+msgid "Before sending one SMS from queue2, all pending SMS from queue1" -+msgstr "" -+ -+#: apps/gsmsmsd.cc:498 -+msgid "will be sent." -+msgstr "" -+ -+#: apps/gsmsmsd.cc:503 apps/gsmsendsms.cc:178 apps/gsmpb.cc:354 - #: apps/gsmctl.cc:414 apps/gsmsmsstore.cc:223 - msgid "unknown option" - msgstr "" - --#: apps/gsmsmsd.cc:426 -+#: apps/gsmsmsd.cc:542 - #, c-format - msgid "error when calling sigaction() (errno: %d/%s)" - msgstr "" - --#: apps/gsmsmsd.cc:446 -+#: apps/gsmsmsd.cc:562 - msgid "store name must be given for flush option" - msgstr "" - - #. process the new message --#: apps/gsmsmsd.cc:454 apps/gsmsmsd.cc:522 -+#: apps/gsmsmsd.cc:570 apps/gsmsmsd.cc:638 - msgid "Type of message: " - msgstr "" - --#: apps/gsmsmsd.cc:458 apps/gsmsmsd.cc:526 -+#: apps/gsmsmsd.cc:574 apps/gsmsmsd.cc:642 - msgid "SMS message\n" - msgstr "" - --#: apps/gsmsmsd.cc:461 -+#: apps/gsmsmsd.cc:577 - msgid "submit report message\n" - msgstr "" - --#: apps/gsmsmsd.cc:464 apps/gsmsmsd.cc:532 -+#: apps/gsmsmsd.cc:580 apps/gsmsmsd.cc:648 - msgid "status report message\n" - msgstr "" - --#: apps/gsmsmsd.cc:529 -+#: apps/gsmsmsd.cc:645 - msgid "cell broadcast message\n" - msgstr "" - --#: apps/gsmsmsd.cc:585 apps/gsmsmsd.cc:587 apps/gsmsendsms.cc:253 --#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:435 -+#: apps/gsmsmsd.cc:701 apps/gsmsmsd.cc:703 apps/gsmsendsms.cc:253 -+#: apps/gsmpb.cc:503 apps/gsmctl.cc:631 apps/gsmsmsstore.cc:430 - msgid "[ERROR]: " - msgstr "" - --#: apps/gsmsmsd.cc:588 -+#: apps/gsmsmsd.cc:704 - msgid "(try setting sms_type, please refer to gsmsmsd manpage)" - msgstr "" - -@@ -372,7 +430,7 @@ - msgstr "" - - #: apps/gsmctl.cc:131 gsmlib/gsm_error.cc:104 gsmlib/gsm_sms.cc:441 --#: gsmlib/gsm_sms_codec.cc:204 -+#: gsmlib/gsm_sms_codec.cc:205 - msgid "unknown" - msgstr "" - -@@ -541,7 +599,7 @@ - msgid "unknown operation '%s'" - msgstr "" - --#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:363 apps/gsmsmsstore.cc:380 -+#: apps/gsmsmsstore.cc:91 apps/gsmsmsstore.cc:358 apps/gsmsmsstore.cc:375 - #, c-format - msgid "inserting entry #%d from source into destination" - msgstr "" -@@ -618,7 +676,7 @@ - msgid "destination required" - msgstr "" - --#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:285 -+#: apps/gsmsmsstore.cc:254 gsmlib/gsm_util.cc:286 - #, c-format - msgid "expected number, got '%s'" - msgstr "" -@@ -631,30 +689,30 @@ - msgid "unexpected parameters" - msgstr "" - --#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:317 -+#: apps/gsmsmsstore.cc:280 apps/gsmsmsstore.cc:312 - msgid "store name must be given" - msgstr "" - --#: apps/gsmsmsstore.cc:344 apps/gsmsmsstore.cc:377 -+#: apps/gsmsmsstore.cc:339 apps/gsmsmsstore.cc:372 - #, c-format - msgid "no index '%s' in source" - msgstr "" - --#: apps/gsmsmsstore.cc:392 -+#: apps/gsmsmsstore.cc:387 - #, c-format - msgid "index #%d" - msgstr "" - --#: apps/gsmsmsstore.cc:406 -+#: apps/gsmsmsstore.cc:401 - msgid "inserting new entry into destination" - msgstr "" - --#: apps/gsmsmsstore.cc:421 -+#: apps/gsmsmsstore.cc:416 - #, c-format - msgid "deleting entry #%d from destination" - msgstr "" - --#: apps/gsmsmsstore.cc:426 -+#: apps/gsmsmsstore.cc:421 - #, c-format - msgid "no index '%s' in destination" - msgstr "" -@@ -1107,52 +1165,52 @@ - msgid "unexpected unsolicited event '%s'" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:536 -+#: gsmlib/gsm_me_ta.cc:538 - msgid "unable to set operator" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:663 -+#: gsmlib/gsm_me_ta.cc:665 - msgid "call forward time must be in the range 0..30" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:811 -+#: gsmlib/gsm_me_ta.cc:813 - msgid "Functionality Level commands not supported by ME" - msgstr "" - - #. If the number was just out of range, we get here. --#: gsmlib/gsm_me_ta.cc:830 -+#: gsmlib/gsm_me_ta.cc:832 - msgid "Requested Functionality Level out of range" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:941 -+#: gsmlib/gsm_me_ta.cc:943 - msgid "unsupported alphabet for SMS" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:950 -+#: gsmlib/gsm_me_ta.cc:952 - msgid "SMS text is larger than allowed" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:962 -+#: gsmlib/gsm_me_ta.cc:964 - msgid "not more than 255 concatenated SMSs allowed" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:995 -+#: gsmlib/gsm_me_ta.cc:997 - msgid "only serviceLevel 0 or 1 supported" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1108 gsmlib/gsm_me_ta.cc:1150 -+#: gsmlib/gsm_me_ta.cc:1110 gsmlib/gsm_me_ta.cc:1152 - msgid "cannot route SMS messages to TE" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1122 gsmlib/gsm_me_ta.cc:1164 -+#: gsmlib/gsm_me_ta.cc:1124 gsmlib/gsm_me_ta.cc:1166 - msgid "cannot route cell broadcast messages to TE" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1134 -+#: gsmlib/gsm_me_ta.cc:1136 - msgid "cannot route status reports messages to TE" - msgstr "" - --#: gsmlib/gsm_me_ta.cc:1178 -+#: gsmlib/gsm_me_ta.cc:1180 - msgid "cannot route status report messages to TE" - msgstr "" - -@@ -1314,7 +1372,7 @@ - msgid "Validity period format: " - msgstr "" - --#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:183 -+#: gsmlib/gsm_sms.cc:432 gsmlib/gsm_sms_codec.cc:184 - msgid "not present" - msgstr "" - -@@ -1402,209 +1460,212 @@ - msgid "Message type: SMS-SUBMIT-REPORT" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:188 gsmlib/gsm_sms_codec.cc:190 -+#: gsmlib/gsm_sms_codec.cc:189 gsmlib/gsm_sms_codec.cc:191 - msgid " minutes" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:192 -+#: gsmlib/gsm_sms_codec.cc:193 - msgid " days" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:194 -+#: gsmlib/gsm_sms_codec.cc:195 - msgid " weeks" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:213 -+#: gsmlib/gsm_sms_codec.cc:214 - msgid "compressed " - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:218 -+#: gsmlib/gsm_sms_codec.cc:219 - msgid "voicemail message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:221 -+#: gsmlib/gsm_sms_codec.cc:222 - msgid "fax message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:224 -+#: gsmlib/gsm_sms_codec.cc:225 - msgid "electronic mail message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:227 -+#: gsmlib/gsm_sms_codec.cc:228 - msgid "other message waiting" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:234 -+#: gsmlib/gsm_sms_codec.cc:235 - msgid "default alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:237 -+#: gsmlib/gsm_sms_codec.cc:238 - msgid "8-bit alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:240 -+#: gsmlib/gsm_sms_codec.cc:241 - msgid "16-bit alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:243 -+#: gsmlib/gsm_sms_codec.cc:244 - msgid "reserved alphabet" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:256 -+#: gsmlib/gsm_sms_codec.cc:257 - msgid "bad hexadecimal PDU format" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:285 gsmlib/gsm_sms_codec.cc:295 --#: gsmlib/gsm_sms_codec.cc:310 gsmlib/gsm_sms_codec.cc:318 --#: gsmlib/gsm_sms_codec.cc:339 gsmlib/gsm_sms_codec.cc:347 --#: gsmlib/gsm_sms_codec.cc:368 gsmlib/gsm_sms_codec.cc:382 -+#: gsmlib/gsm_sms_codec.cc:286 gsmlib/gsm_sms_codec.cc:296 -+#: gsmlib/gsm_sms_codec.cc:311 gsmlib/gsm_sms_codec.cc:319 -+#: gsmlib/gsm_sms_codec.cc:340 gsmlib/gsm_sms_codec.cc:348 -+#: gsmlib/gsm_sms_codec.cc:369 gsmlib/gsm_sms_codec.cc:383 - msgid "premature end of PDU" - msgstr "" - --#: gsmlib/gsm_sms_codec.cc:473 -+#: gsmlib/gsm_sms_codec.cc:474 - msgid "unknown time period format" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:119 -+#: gsmlib/gsm_unix_serial.cc:121 - msgid "interrupted when reading from TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:144 -+#: gsmlib/gsm_unix_serial.cc:136 -+msgid "end of file when reading from TA" -+msgstr "" -+ -+#: gsmlib/gsm_unix_serial.cc:146 - msgid "reading from TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:149 -+#: gsmlib/gsm_unix_serial.cc:151 - msgid "timeout when reading from TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:176 -+#: gsmlib/gsm_unix_serial.cc:178 - #, c-format - msgid "opening device '%s'" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:182 -+#: gsmlib/gsm_unix_serial.cc:185 - msgid "getting file status flags failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:185 -+#: gsmlib/gsm_unix_serial.cc:190 - msgid "switching of non-blocking mode failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:198 -+#: gsmlib/gsm_unix_serial.cc:205 - msgid "clearing DTR failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:202 -+#: gsmlib/gsm_unix_serial.cc:211 - msgid "setting DTR failed" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:206 -+#: gsmlib/gsm_unix_serial.cc:216 - #, c-format - msgid "tcgetattr device '%s'" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:233 -+#: gsmlib/gsm_unix_serial.cc:245 - #, c-format - msgid "tcsetattr device '%s'" - msgstr "" - --#. no response after 3 tries --#: gsmlib/gsm_unix_serial.cc:287 -+#: gsmlib/gsm_unix_serial.cc:303 - #, c-format - msgid "reset modem failed '%s'" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:332 gsmlib/gsm_unix_serial.cc:364 -+#: gsmlib/gsm_unix_serial.cc:348 gsmlib/gsm_unix_serial.cc:380 - msgid "interrupted when writing to TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:347 gsmlib/gsm_unix_serial.cc:356 -+#: gsmlib/gsm_unix_serial.cc:363 gsmlib/gsm_unix_serial.cc:372 - msgid "writing to TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:377 -+#: gsmlib/gsm_unix_serial.cc:393 - msgid "timeout when writing to TA" - msgstr "" - --#: gsmlib/gsm_unix_serial.cc:438 -+#: gsmlib/gsm_unix_serial.cc:454 - #, c-format - msgid "unknown baudrate '%s'" - msgstr "" - --#: gsmlib/gsm_util.cc:205 -+#: gsmlib/gsm_util.cc:206 - #, c-format - msgid "error when calling stat('%s') (errno: %d/%s)" - msgstr "" - --#: gsmlib/gsm_util.cc:236 -+#: gsmlib/gsm_util.cc:237 - #, c-format - msgid "file '%s' is neither file nor character device" - msgstr "" - --#: gsmlib/gsm_util.cc:240 -+#: gsmlib/gsm_util.cc:241 - msgid "maxmimum number of symbolic links exceeded" - msgstr "" - --#: gsmlib/gsm_util.cc:250 -+#: gsmlib/gsm_util.cc:251 - #, c-format - msgid "error renaming '%s' to '%s'" - msgstr "" - --#: gsmlib/gsm_util.cc:348 -+#: gsmlib/gsm_util.cc:349 - #, c-format - msgid "text '%s' contains illegal character '\"'" - msgstr "" - --#: gsmlib/gsm_util.cc:358 -+#: gsmlib/gsm_util.cc:359 - #, c-format - msgid "illegal character in telephone number '%s'" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:95 -+#: gsmlib/gsm_sorted_phonebook.cc:96 - #, c-format - msgid "error reading from file '%s" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:109 -+#: gsmlib/gsm_sorted_phonebook.cc:110 - #, c-format - msgid "entry '%s' lacks index" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:118 gsmlib/gsm_sorted_phonebook.cc:124 -+#: gsmlib/gsm_sorted_phonebook.cc:119 gsmlib/gsm_sorted_phonebook.cc:125 - #, c-format - msgid "line '%s' has invalid format" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:173 gsmlib/gsm_sorted_sms_store.cc:159 -+#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_sms_store.cc:159 - #, c-format - msgid "error opening file '%s' for writing" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:174 gsmlib/gsm_sorted_phonebook.cc:193 -+#: gsmlib/gsm_sorted_phonebook.cc:175 gsmlib/gsm_sorted_phonebook.cc:194 - #: gsmlib/gsm_sorted_sms_store.cc:67 gsmlib/gsm_sorted_sms_store.cc:160 - msgid "" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:192 gsmlib/gsm_sorted_sms_store.cc:66 -+#: gsmlib/gsm_sorted_phonebook.cc:193 gsmlib/gsm_sorted_sms_store.cc:66 - #, c-format - msgid "error writing to file '%s'" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:216 -+#: gsmlib/gsm_sorted_phonebook.cc:217 - msgid "attempt to change phonebook read from " - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:229 gsmlib/gsm_sorted_sms_store.cc:215 -+#: gsmlib/gsm_sorted_phonebook.cc:230 gsmlib/gsm_sorted_sms_store.cc:215 - #, c-format - msgid "cannot open file '%s'" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:244 gsmlib/gsm_sorted_sms_store.cc:55 -+#: gsmlib/gsm_sorted_phonebook.cc:245 gsmlib/gsm_sorted_sms_store.cc:55 - #: gsmlib/gsm_sorted_sms_store.cc:228 - msgid "" - msgstr "" - --#: gsmlib/gsm_sorted_phonebook.cc:361 -+#: gsmlib/gsm_sorted_phonebook.cc:362 - msgid "indices must be unique in phonebook" - msgstr "" - ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.dirs -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.dirs -@@ -0,0 +1,11 @@ -+var/spool/sms/queue1 -+var/spool/sms/queue2 -+var/spool/sms/queue3 -+var/spool/sms/sent1 -+var/spool/sms/sent2 -+var/spool/sms/sent3 -+var/spool/sms/failed1 -+var/spool/sms/failed2 -+var/spool/sms/failed3 -+var/spool/sms/tmp -+var/run/gsm-utils ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.postinst -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.postinst -@@ -0,0 +1,28 @@ -+#!/bin/sh -e -+ -+# create gsmsms group if necessary. -+if ! grep -q ^gsmsms: /etc/group; then -+# echo Adding system group: gsmsms. -+ addgroup gsmsms -+fi -+ -+# create gsmsms user if necessary. -+if ! grep -q ^gsmsms: /etc/passwd; then -+# echo Adding system user: gsmsms. -+ adduser --system --ingroup gsmsms \ -+ --no-create-home --home /var/spool/sms gsmsms -+fi -+ -+# allow gsmsms to use serial lines -+if ! groups gsmsms | grep -q dialout ; then -+ adduser gsmsms dialout -+fi -+ -+# echo Updating spool directory structure: /var/spool/sms -+chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils -+chmod 700 /var/spool/sms/* -+chmod 750 /var/spool/sms -+chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp -+ -+# Add the rest automatically.. -+#DEBHELPER# ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.undocumented -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.undocumented -@@ -0,0 +1,2 @@ -+gsmsmsspool.1 -+gsmsmsrequeue.8 ---- gsmlib-1.10.orig/gsmlib-1.10.debmg/debian/gsm-utils.prerm -+++ gsmlib-1.10/gsmlib-1.10.debmg/debian/gsm-utils.prerm -@@ -0,0 +1,7 @@ -+#!/bin/sh -e -+ -+deluser gsmsms || true -+delgroup gsmsms || true -+ -+# Add the rest automatically.. -+#DEBHELPER# ---- gsmlib-1.10.orig/scripts/config.sub -+++ gsmlib-1.10/scripts/config.sub -@@ -1,9 +1,10 @@ - #! /bin/sh - # Configuration validation subroutine script. --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - # Free Software Foundation, Inc. - --timestamp='2001-09-07' -+timestamp='2008-01-16' - - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software -@@ -21,15 +22,17 @@ - # - # 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., 59 Temple Place - Suite 330, --# Boston, MA 02111-1307, USA. -- -+# 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 . -+ -+# 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. -@@ -69,8 +72,8 @@ - version="\ - GNU config.sub ($timestamp) - --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+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." -@@ -82,11 +85,11 @@ - while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) -- echo "$timestamp" ; exit 0 ;; -+ echo "$timestamp" ; exit ;; - --version | -v ) -- echo "$version" ; exit 0 ;; -+ echo "$version" ; exit ;; - --help | --h* | -h ) -- echo "$usage"; exit 0 ;; -+ echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. -@@ -98,7 +101,7 @@ - *local*) - # First pass through any local machine types. - echo $1 -- exit 0;; -+ exit ;; - - * ) - break ;; -@@ -117,7 +120,9 @@ - # 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* | storm-chaos* | os2-emx* | windows32-*) -+ 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/'` - ;; -@@ -143,7 +148,7 @@ - -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) -+ -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; -@@ -168,6 +173,10 @@ - -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/'` -@@ -184,6 +193,10 @@ - # 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/'` -@@ -226,32 +239,53 @@ - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ -+ | 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 | dsp16xx \ -- | fr30 \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ -- | m32r | m68000 | m68k | m88k | mcore \ -- | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ -- | mips64vr4100 | mips64vr4100el | mips64vr4300 \ -- | mips64vr4300el | mips64vr5000 | mips64vr5000el \ -- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ -- | mipsisa32 \ -+ | ip2k | iq2000 \ -+ | m32c | m32r | m32rle | m68000 | m68k | m88k \ -+ | maxq | mb | microblaze | mcore | mep \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64vr | mips64vrel \ -+ | mips64orion | mips64orionel \ -+ | 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 \ -- | openrisc \ -+ | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ -- | s390 | s390x \ -- | sh | sh[34] | sh[34]eb | shbe | shle \ -- | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ -- | stormy16 | strongarm \ -- | tahoe | thumb | tic80 | tron \ -- | v850 \ -+ | score \ -+ | sh | sh[1234] | sh[24]a | 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 | xscale \ -+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; -@@ -262,6 +296,9 @@ - ;; - 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 -@@ -278,41 +315,68 @@ - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -- | alphapca5[67]-* | arc-* \ -- | arm-* | armbe-* | armle-* | armv*-* \ -- | bs2000-* \ -- | c[123]* | c30-* | [cjt]90-* | c54x-* \ -- | clipper-* | cray2-* | cydra-* \ -- | d10v-* | d30v-* \ -+ | 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-* | fr30-* | fx80-* \ -+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ -- | m32r-* \ -- | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ -- | m88110-* | m88k-* | mcore-* \ -- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ -- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ -- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ -- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ -+ | ip2k-* | iq2000-* \ -+ | m32c-* | m32r-* | m32rle-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | maxq-* | mcore-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64vr-* | mips64vrel-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | 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-* \ -- | s390-* | s390x-* \ -- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ -- | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ -- | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ -- | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ -- | v850-* | vax-* \ -+ | sh-* | sh[1234]-* | sh[24]a-* | 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-* \ -+ | tron-* \ -+ | v850-* | v850e-* | vax-* \ - | we32k-* \ -- | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -+ | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-*) - ;; -+ # 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) -@@ -329,6 +393,9 @@ - basic_machine=a29k-amd - os=-udi - ;; -+ abacus) -+ basic_machine=abacus-unknown -+ ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout -@@ -343,6 +410,12 @@ - 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 -@@ -374,6 +447,18 @@ - 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 -+ ;; - convex-c1) - basic_machine=c1-convex - os=-bsd -@@ -394,30 +479,45 @@ - basic_machine=c38-convex - os=-bsd - ;; -- cray | ymp) -- basic_machine=ymp-cray -+ cray | j90) -+ basic_machine=j90-cray - os=-unicos - ;; -- cray2) -- basic_machine=cray2-cray -- os=-unicos -+ craynv) -+ basic_machine=craynv-cray -+ os=-unicosmp - ;; -- [cjt]90) -- basic_machine=${basic_machine}-cray -- os=-unicos -+ 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 -@@ -426,6 +526,10 @@ - basic_machine=m88k-motorola - os=-sysv3 - ;; -+ djgpp) -+ basic_machine=i586-pc -+ os=-msdosdjgpp -+ ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx -@@ -576,6 +680,14 @@ - 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 - ;; -@@ -591,6 +703,10 @@ - basic_machine=i386-pc - os=-mingw32 - ;; -+ mingw32ce) -+ basic_machine=arm-unknown -+ os=-mingw32ce -+ ;; - miniframe) - basic_machine=m68000-convergent - ;; -@@ -598,32 +714,27 @@ - basic_machine=m68k-atari - os=-mint - ;; -- mipsel*-linux*) -- basic_machine=mipsel-unknown -- os=-linux-gnu -- ;; -- mips*-linux*) -- basic_machine=mips-unknown -- os=-linux-gnu -- ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; -- mmix*) -- basic_machine=mmix-knuth -- os=-mmixware -- ;; - 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 -@@ -699,6 +810,13 @@ - 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 -@@ -715,55 +833,75 @@ - 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-*) -+ pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; -- pentium | p5 | k5 | k6 | nexgen) -+ 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) -+ pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; -- pentiumii | pentium2) -+ pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; -- pentium-* | p5-* | k5-* | k6-* | nexgen-*) -+ 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-*) -+ 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/^[^-]*-//'` - ;; -@@ -774,6 +912,10 @@ - basic_machine=i586-unknown - os=-pw32 - ;; -+ rdos) -+ basic_machine=i386-pc -+ os=-rdos -+ ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff -@@ -784,10 +926,30 @@ - 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 - ;; -@@ -795,7 +957,13 @@ - basic_machine=sh-hitachi - os=-hms - ;; -- sparclite-wrs) -+ sh5el) -+ basic_machine=sh5le-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; -@@ -862,22 +1030,46 @@ - os=-dynix - ;; - t3e) -- basic_machine=t3e-cray -+ 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 -@@ -899,8 +1091,8 @@ - os=-vms - ;; - vpp*|vx|vx-*) -- basic_machine=f301-fujitsu -- ;; -+ basic_machine=f301-fujitsu -+ ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks -@@ -921,17 +1113,17 @@ - basic_machine=hppa1.1-winbond - os=-proelf - ;; -- windows32) -- basic_machine=i386-pc -- os=-windows32-msvcrt -- ;; -- xmp) -- basic_machine=xmp-cray -- os=-unicos -+ xbox) -+ basic_machine=i686-pc -+ os=-mingw32 - ;; -- xps | xps100) -+ xps | xps100) - basic_machine=xps100-honeywell - ;; -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim -@@ -952,16 +1144,12 @@ - op60c) - basic_machine=hppa1.1-oki - ;; -- mips) -- if [ x$os = x-linux-gnu ]; then -- basic_machine=mips-unknown -- else -- basic_machine=mips-mips -- fi -- ;; - romp) - basic_machine=romp-ibm - ;; -+ mmix) -+ basic_machine=mmix-knuth -+ ;; - rs6000) - basic_machine=rs6000-ibm - ;; -@@ -978,13 +1166,13 @@ - we32k) - basic_machine=we32k-att - ;; -- sh3 | sh4 | sh3eb | sh4eb) -+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; -- sparc | sparcv9 | sparcv9b) -+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; -- cydra) -+ cydra) - basic_machine=cydra-cydrome - ;; - orion) -@@ -999,10 +1187,6 @@ - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; -- c4x*) -- basic_machine=c4x-none -- os=-coff -- ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; -@@ -1058,17 +1242,23 @@ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ -- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -+ | -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* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ -+ | -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*) -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) -@@ -1080,16 +1270,21 @@ - ;; - esac - ;; -+ -nto-qnx*) -+ ;; - -nto*) -- os=-nto-qnx -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ -+ | -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|'` - ;; -@@ -1102,6 +1297,9 @@ - -opened*) - os=-openedition - ;; -+ -os400*) -+ os=-os400 -+ ;; - -wince*) - os=-wince - ;; -@@ -1120,14 +1318,23 @@ - -acis*) - os=-aos - ;; -+ -atheos*) -+ os=-atheos -+ ;; -+ -syllable*) -+ os=-syllable -+ ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; - -ns2 ) -- os=-nextstep2 -+ os=-nextstep2 - ;; - -nsk*) - os=-nsk -@@ -1139,6 +1346,9 @@ - -sinix*) - os=-sysv4 - ;; -+ -tpf*) -+ os=-tpf -+ ;; - -triton*) - os=-sysv3 - ;; -@@ -1166,8 +1376,17 @@ - -xenix) - os=-xenix - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -- os=-mint -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ os=-mint -+ ;; -+ -aros*) -+ os=-aros -+ ;; -+ -kaos*) -+ os=-kaos -+ ;; -+ -zvmoe) -+ os=-zvmoe - ;; - -none) - ;; -@@ -1191,6 +1410,12 @@ - # system, and we'll never get to this point. - - case $basic_machine in -+ score-*) -+ os=-elf -+ ;; -+ spu-*) -+ os=-elf -+ ;; - *-acorn) - os=-riscix1.2 - ;; -@@ -1200,10 +1425,14 @@ - arm*-semi) - os=-aout - ;; -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; -- pdp11-*) -+ pdp11-*) - os=-none - ;; - *-dec | vax-*) -@@ -1224,12 +1453,18 @@ - 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 - ;; -@@ -1239,9 +1474,15 @@ - *-be) - os=-beos - ;; -+ *-haiku) -+ os=-haiku -+ ;; - *-ibm) - os=-aix - ;; -+ *-knuth) -+ os=-mmixware -+ ;; - *-wec) - os=-proelf - ;; -@@ -1293,19 +1534,19 @@ - *-next) - os=-nextstep3 - ;; -- *-gould) -+ *-gould) - os=-sysv - ;; -- *-highlevel) -+ *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; -- *-sgi) -+ *-sgi) - os=-irix - ;; -- *-siemens) -+ *-siemens) - os=-sysv4 - ;; - *-masscomp) -@@ -1374,10 +1615,16 @@ - -mvs* | -opened*) - vendor=ibm - ;; -+ -os400*) -+ vendor=ibm -+ ;; - -ptx*) - vendor=sequent - ;; -- -vxsim* | -vxworks*) -+ -tpf*) -+ vendor=ibm -+ ;; -+ -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) -@@ -1401,7 +1648,7 @@ - esac - - echo $basic_machine$os --exit 0 -+exit - - # Local variables: - # eval: (add-hook 'write-file-hooks 'time-stamp) ---- gsmlib-1.10.orig/scripts/ltconfig -+++ gsmlib-1.10/scripts/ltconfig -@@ -1,8 +1,8 @@ - #! /bin/sh - - # ltconfig - Create a system-specific libtool. --# Copyright (C) 1996-1998 Free Software Foundation, Inc. --# Gordon Matzigkeit , 1996 -+# Copyright (C) 1996-1999 Free Software Foundation, Inc. -+# Originally by Gordon Matzigkeit , 1996 - # - # 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 -@@ -32,12 +32,8 @@ - # Discard the --no-reexec flag, and continue. - shift - elif test "X$1" = X--fallback-echo; then -- # used as fallback echo -- shift -- cat </dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -@@ -46,11 +42,30 @@ - exec "$SHELL" "$0" --no-reexec ${1+"$@"} - fi - -+if test "X$1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat </dev/null`} -+ case X$UNAME in -+ *-DOS) PATH_SEPARATOR=';' ;; -+ *) PATH_SEPARATOR=':' ;; -+ esac -+fi -+ - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi -+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - --if test "X${echo_test_string+set}" != "Xset"; 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, ... -@@ -70,9 +85,9 @@ - # - # So, first we look for a working echo in the user's PATH. - -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH /usr/ucb; do -- if test -f $dir/echo && -+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then - echo="$dir/echo" -@@ -87,7 +102,8 @@ - test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 "X$CONFIG_SHELL" != X/bin/ksh; then -+ 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 ltconfig again with it. - ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" - export ORIGINAL_CONFIG_SHELL -@@ -96,10 +112,10 @@ - exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} - else - # Try using printf. -- echo='printf %s\n' -+ echo='printf "%s\n"' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && -- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -- # Cool, printf works -+ test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -+ # Cool, printf works - : - elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -@@ -110,9 +126,9 @@ - echo="$CONFIG_SHELL $0 --fallback-echo" - elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && - test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then -- echo="$CONFIG_SHELL $0 --fallback-echo" -+ echo="$CONFIG_SHELL $0 --fallback-echo" - else -- # maybe with a smaller string... -+ # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do -@@ -143,15 +159,20 @@ - # 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' -+ - # The name of this program. - progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - - # Constants: - PROGRAM=ltconfig - PACKAGE=libtool --VERSION=1.2d --ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' --ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' -+VERSION=1.3.5 -+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)" -+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' - rm="rm -f" - - help="Try \`$progname --help' for more information." -@@ -160,8 +181,12 @@ - default_ofile=libtool - can_build_shared=yes - enable_shared=yes --# All known linkers require a `.a' archive for static linking. -+# All known linkers require a `.a' archive for static linking (except M$VC, -+# which needs '.lib'). - enable_static=yes -+enable_fast_install=yes -+enable_dlopen=unknown -+enable_win32_dll=no - ltmain= - silent= - srcdir= -@@ -174,18 +199,24 @@ - with_gcc=no - with_gnu_ld=no - need_locks=yes -+ac_ext=c - objext=o - libext=a -+exeext= -+cache_file= - - old_AR="$AR" - old_CC="$CC" - old_CFLAGS="$CFLAGS" - old_CPPFLAGS="$CPPFLAGS" -+old_LDFLAGS="$LDFLAGS" - old_LD="$LD" - old_LN_S="$LN_S" -+old_LIBS="$LIBS" - old_NM="$NM" - old_RANLIB="$RANLIB" - old_DLLTOOL="$DLLTOOL" -+old_OBJDUMP="$OBJDUMP" - old_AS="$AS" - - # Parse the command line options. -@@ -214,6 +245,9 @@ - --debug enable verbose shell tracing - --disable-shared do not build shared libraries - --disable-static do not build static libraries -+ --disable-fast-install do not optimize for fast installation -+ --enable-dlopen enable dlopen support -+ --enable-win32-dll enable building dlls on win32 hosts - --help display this help and exit - --no-verify do not verify that HOST is a valid host type - -o, --output=FILE specify the output file [default=$default_ofile] -@@ -224,6 +258,7 @@ - --with-gcc assume that the GNU C compiler will be used - --with-gnu-ld assume that the C compiler uses the GNU linker - --disable-lock disable file locking -+ --cache-file=FILE configure cache file - - LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program - that provides basic libtool functionality. -@@ -242,6 +277,12 @@ - - --disable-static) enable_static=no ;; - -+ --disable-fast-install) enable_fast_install=no ;; -+ -+ --enable-dlopen) enable_dlopen=yes ;; -+ -+ --enable-win32-dll) enable_win32_dll=yes ;; -+ - --quiet | --silent) silent=yes ;; - - --srcdir) prev=srcdir ;; -@@ -252,13 +293,15 @@ - --output | -o) prev=ofile ;; - --output=*) ofile="$optarg" ;; - -- --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;; -+ --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;; - - --with-gcc) with_gcc=yes ;; - --with-gnu-ld) with_gnu_ld=yes ;; - - --disable-lock) need_locks=no ;; - -+ --cache-file=*) cache_file="$optarg" ;; -+ - -*) - echo "$progname: unrecognized option \`$option'" 1>&2 - echo "$help" 1>&2 -@@ -326,8 +369,13 @@ - # Only set LANG and LC_ALL to C if already set. - # These must not be set unconditionally because not all systems understand - # e.g. LANG=C (notably SCO). --if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi --if test "${LANG+set}" = set; then LANG=C; export LANG; fi -+if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi -+if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi -+ -+if test -n "$cache_file" && test -r "$cache_file"; then -+ echo "loading cache $cache_file within ltconfig" -+ . $cache_file -+fi - - if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. -@@ -343,7 +391,7 @@ - - if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to LTMAIN. -- srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'` -+ srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. - fi - -@@ -414,7 +462,7 @@ - # 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 "${COLLECT_NAMES+set}" != set; then -+ if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi -@@ -429,15 +477,18 @@ - # Set a sane default for `AR'. - test -z "$AR" && AR=ar - -+# Set a sane default for `OBJDUMP'. -+test -z "$OBJDUMP" && OBJDUMP=objdump -+ - # If RANLIB is not set, then run the test. - if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do - test -z "$dir" && dir=. -- if test -f $dir/ranlib; then -+ if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then - RANLIB="ranlib" - result="ranlib" - break -@@ -453,8 +504,9 @@ - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - fi - --# Set sane defaults for `DLLTOOL' and `AS', used on cygwin32. -+# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. - test -z "$DLLTOOL" && DLLTOOL=dlltool -+test -z "$OBJDUMP" && OBJDUMP=objdump - test -z "$AS" && AS=as - - # Check to see if we are using GCC. -@@ -462,11 +514,10 @@ - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for dir in $PATH; do -- IFS="$save_ifs" - test -z "$dir" && dir=. -- if test -f $dir/gcc; then -+ if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then - CC="gcc" - break - fi -@@ -483,11 +534,11 @@ - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 -- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. -- if test -f $dir/cc; then -+ if test -f $dir/cc || test -f $dir/cc$ac_exeext; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue -@@ -527,7 +578,7 @@ - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 -- echo "$progname:530: checking whether we are using GNU C" >&5 -+ echo "$progname:581: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then -+ if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c -@@ -549,8 +600,8 @@ - echo $ac_n "checking for object suffix... $ac_c" 1>&6 - $rm conftest* - echo 'int i = 1;' > conftest.c --echo "$progname:552: checking for object suffix" >& 5 --if { (eval echo $progname:553: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then -+echo "$progname:603: checking for object suffix" >& 5 -+if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - -@@ -568,6 +619,38 @@ - $rm conftest* - echo "$ac_t$objext" 1>&6 - -+echo $ac_n "checking for executable suffix... $ac_c" 1>&6 -+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_cv_exeext="no" -+ $rm conftest* -+ echo 'main () { return 0; }' > conftest.c -+ echo "$progname:629: checking for executable suffix" >& 5 -+ if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then -+ # Append any warnings to the config.log. -+ cat conftest.err 1>&5 -+ -+ for ac_file in conftest.*; do -+ case $ac_file in -+ *.c | *.err | *.$objext ) ;; -+ *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; -+ esac -+ done -+ else -+ cat conftest.err 1>&5 -+ echo "$progname: failed program was:" >&5 -+ cat conftest.c >&5 -+ fi -+ $rm conftest* -+fi -+if test "X$ac_cv_exeext" = Xno; then -+ exeext="" -+else -+ exeext="$ac_cv_exeext" -+fi -+echo "$ac_t$ac_cv_exeext" 1>&6 -+ - echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 - pic_flag= - special_shlib_compile_flags= -@@ -580,10 +663,19 @@ - link_static_flag='-static' - - case "$host_os" in -- aix3* | aix4* | irix5* | irix6* | osf3* | osf4*) -+ beos* | irix5* | irix6* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; -- cygwin32* | mingw32* | os2*) -+ aix*) -+ # Below there is a dirty hack to force normal static linking with -ldl -+ # The problem is because libdl dynamically linked with both libc and -+ # libC (AIX C++ library), which obviously doesn't included in libraries -+ # list by gcc. This cause undefined symbols with -static flags. -+ # This hack allows C programs to be linked with "-static -ldl", but -+ # we not sure about C++ programs. -+ link_static_flag="$link_static_flag ${wl}-lC" -+ ;; -+ cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) -@@ -592,6 +684,11 @@ - # like `-m68040'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ pic_flag=-Kconform_pic -+ fi -+ ;; - *) - pic_flag='-fPIC' - ;; -@@ -617,11 +714,11 @@ - # PIC (with -KPIC) is the default. - ;; - -- cygwin32* | mingw32* | os2*) -+ cygwin* | mingw* | os2*) - # We can build DLLs from non-PIC. - ;; - -- osf3* | osf4*) -+ osf3* | osf4* | osf5*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' -@@ -645,7 +742,7 @@ - wl='-Qoption ld ' - ;; - -- sysv4.2uw2* | sysv5*) -+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' -@@ -655,7 +752,12 @@ - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; -- -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ pic_flag='-Kconform_pic' -+ link_static_flag='-Bstatic' -+ fi -+ ;; - *) - can_build_shared=no - ;; -@@ -671,22 +773,30 @@ - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" -- echo "$progname:674: checking if $compiler PIC flag $pic_flag works" >&5 -- if { (eval echo $progname:675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then -+ echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 -+ if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 -- -- # On HP-UX, both CC and GCC only warn that PIC is supported... then they -- # create non-PIC objects. So, if there were any warnings, we assume that -- # PIC is not supported. -- if test -s conftest.err; then -- echo "$ac_t"no 1>&6 -- can_build_shared=no -- pic_flag= -- else -+ -+ case "$host_os" in -+ hpux9* | hpux10* | hpux11*) -+ # On HP-UX, both CC and GCC only warn that PIC is supported... then they -+ # create non-PIC objects. So, if there were any warnings, we assume that -+ # PIC is not supported. -+ if test -s conftest.err; then -+ echo "$ac_t"no 1>&6 -+ can_build_shared=no -+ pic_flag= -+ else -+ echo "$ac_t"yes 1>&6 -+ pic_flag=" $pic_flag" -+ fi -+ ;; -+ *) - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" -- fi -+ ;; -+ esac - else - # Append any errors to the config.log. - cat conftest.err 1>&5 -@@ -702,16 +812,26 @@ - - # Check to see if options -o and -c are simultaneously supported by compiler - echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 -+$rm -r conftest 2>/dev/null -+mkdir conftest -+cd conftest - $rm conftest* - echo "int some_variable = 0;" > conftest.c -+mkdir out -+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -+# that will create temporary files in the current directory regardless of -+# the output directory. Thus, making CWD read-only will cause this test -+# to fail, enabling locking or at least warning the user not to do parallel -+# builds. -+chmod -w . - save_CFLAGS="$CFLAGS" --CFLAGS="$CFLAGS -c -o conftest2.o" --echo "$progname:709: checking if $compiler supports -c -o file.o" >&5 --if { (eval echo $progname:710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest2.o; then -+CFLAGS="$CFLAGS -o out/conftest2.o" -+echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 -+if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -- if test -s conftest.err; then -+ if test -s out/conftest.err; then - echo "$ac_t"no 1>&6 - compiler_c_o=no - else -@@ -720,12 +840,17 @@ - fi - else - # Append any errors to the config.log. -- cat conftest.err 1>&5 -+ cat out/conftest.err 1>&5 - compiler_c_o=no - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" --$rm conftest* -+chmod u+w . -+$rm conftest* out/* -+rmdir out -+cd .. -+rmdir conftest -+$rm -r conftest 2>/dev/null - - if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo -@@ -734,8 +859,8 @@ - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" -- echo "$progname:737: checking if $compiler supports -c -o file.lo" >&5 --if { (eval echo $progname:738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then -+ echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 -+if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings -@@ -743,8 +868,8 @@ - echo "$ac_t"no 1>&6 - compiler_o_lo=no - else -- echo "$ac_t"yes 1>&6 -- compiler_o_lo=yes -+ echo "$ac_t"yes 1>&6 -+ compiler_o_lo=yes - fi - else - # Append any errors to the config.log. -@@ -786,17 +911,17 @@ - echo "int some_variable = 0;" > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" -- echo "$progname:789: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -- if { (eval echo $progname:790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then -+ echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -+ if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then -- echo "$ac_t"no 1>&6 -- compiler_rtti_exceptions=no -+ echo "$ac_t"no 1>&6 -+ compiler_rtti_exceptions=no - else -- echo "$ac_t"yes 1>&6 -- compiler_rtti_exceptions=yes -+ echo "$ac_t"yes 1>&6 -+ compiler_rtti_exceptions=yes - fi - else - # Append any errors to the config.log. -@@ -830,8 +955,8 @@ - echo 'main(){return(0);}' > conftest.c - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $link_static_flag" --echo "$progname:833: checking if $compiler static flag $link_static_flag works" >&5 --if { (eval echo $progname:834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then -+echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 -+if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 - else - echo "$ac_t"none 1>&6 -@@ -843,9 +968,9 @@ - if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 -- $rm conftestdata -- if ln -s X conftestdata 2>/dev/null; then -- $rm conftestdata -+ $rm conftest.dat -+ if ln -s X conftest.dat 2>/dev/null; then -+ $rm conftest.dat - LN_S="ln -s" - else - LN_S=ln -@@ -863,48 +988,18 @@ - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 -- echo "$progname:866: checking for ld used by GCC" >&5 -+ echo "$progname:991: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. -- /* | [A-Za-z]:/*) -+ [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' -- sub_uncdrive='s%^\([A-Za-z]\):/%//\1/%' -- # Canonicalize the path of ld -- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do -- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` -- done -- case "$host_os" in -- cygwin*) -- # Convert to a UNC path for cygwin -- test -z "$LD" && LD=`echo X$ac_prog | $Xsed -e "$sub_uncdrive"` -- ;; -- *) -- test -z "$LD" && LD="$ac_prog" -- ;; -- esac -- ;; -- ## -- ## FIXME: The code fails later on if we try to use an $LD with -- ## '\\' path separators. -- ## -- [A-Za-z]:[\\]*) -- re_direlt='\\[^\\][^\\]*\\\.\.\(\\\)' -- sub_uncdrive='s%^\([A-Za-z]\):\\%//\1/%' -- sub_uncdir='s%\\%/%g' - # Canonicalize the path 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%\1%"` -+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done -- case "$host_os" in -- cygwin*) -- # Convert to a UNC path for cygwin -- test -z "$LD" && LD=`echo X$ac_prog | $Xsed -e "$sub_uncdrive" -e "$sub_uncdir"` -- ;; -- *) -- test -z "$LD" && LD="$ac_prog" -- ;; -- esac -+ test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we are not using GCC. -@@ -917,17 +1012,17 @@ - esac - elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 -- echo "$progname:920: checking for GNU ld" >&5 -+ echo "$progname:1015: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -- echo "$progname:923: checking for non-GNU ld" >&5 -+ echo "$progname:1018: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. -- if test -f "$ac_dir/$ac_prog"; then -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. -@@ -969,130 +1064,208 @@ - - allow_undefined_flag= - no_undefined_flag= -+need_lib_prefix=unknown -+need_version=unknown -+# when you set need_version to no, make sure it does not cause -set_version -+# flags to be left without arguments - archive_cmds= --archive_sym_cmds= -+archive_expsym_cmds= - old_archive_from_new_cmds= - export_dynamic_flag_spec= - whole_archive_flag_spec= -+thread_safe_flag_spec= - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_direct=no - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - runpath_var= -+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 egrep regular expression 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. - - case "$host_os" in --aix3* | aix4*) -- # On AIX, the GNU linker works like the native linker. -- with_gnu_ld=no -+cygwin* | mingw*) -+ # 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 "$with_gcc" != yes; then -+ with_gnu_ld=no -+ fi - ;; -+ - esac - - ld_shlibs=yes - if test "$with_gnu_ld" = yes; then -+ # If archive_cmds runs LD, not CC, wlarc should be empty -+ wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case "$host_os" in -+ aix3* | aix4*) -+ # On AIX, the GNU linker is very broken -+ 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 -+ ;; -+ - amigaos*) -- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib$libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' -+ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes -- ;; - -- sunos4*) -- archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs$deplibs' -- hardcode_direct=yes -- hardcode_minus_L=yes -- hardcode_shlibpath_var=no -+ # 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 use -+ # them. -+ ld_shlibs=no - ;; - -- cygwin32* | mingw32*) -- if test "$with_gcc" = yes; then -- # hardcode_libdir_flag_spec is actually meaningless, as there is -- # no search path for DLLs. -- hardcode_libdir_flag_spec='-L$libdir' -+ beos*) -+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported -- # Very, very bogus. -- echo ' --#define WIN32_LEAN_AND_MEAN --#include --#undef WIN32_LEAN_AND_MEAN --#include -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; - --BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -+ cygwin* | mingw*) -+ # 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=yes - --#include --DECLARE_CYGWIN_DLL( DllMain ); --HINSTANCE __hDllInstance_base; -+ # Extract the symbol export list from an `--export-all' def file, -+ # then regenerate the def file from the symbol export list, so that -+ # the compiled dll only exports the symbol export list. -+ # Be careful not to strip the DATA tag left by newer dlltools. -+ export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ -+ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ -+ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ -+ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' -+ -+ # If DATA tags from a recent dlltool are present, honour them! -+ archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ -+ _lt_hint=1; -+ cat $export_symbols | while read symbol; do -+ set dummy \$symbol; -+ case \$# in -+ 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; -+ *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; -+ esac; -+ _lt_hint=`expr 1 + \$_lt_hint`; -+ done~ -+ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ -+ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ -+ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ -+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ -+ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ -+ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ -+ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' - --BOOL APIENTRY --DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) --{ -- __hDllInstance_base = hInst; -- return TRUE; --} --' > ltdll.c -- archive_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- $DLLTOOL --export-all --output-def $lib-def $libobjs ltdll.$objext~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- archive_sym_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- cat "$export_symbols" >> $lib-def~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $lib-def --output-lib $objdir/$libname.a~$rm $lib.exp' -- else -- # When not using gcc, we currently assume that we are using -- # Microsoft Visual C++. -- with_gnu_ld=no -- # 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 -- # FIXME: Setting linknames here is a bad hack. -- archive_cmds='$CC -o $lib$libobjs`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' -- fix_srcfile_path='`cygpath -w $srcfile`' -+ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' -+ # can we support soname and/or expsyms with a.out? -oliva - fi - ;; - -+ solaris* | sysv5*) -+ if $LD -v 2>&1 | egrep '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 | egrep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ sunos4*) -+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' -+ wlarc= -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then -- archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs$deplibs' -- archive_sym_cmds='$CC -shared ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib$libobjs$deplibs' -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - -- if test "$ld_shlibs" = yes && test "$with_gnu_ld" = yes; then -+ if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' -- whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ case $host_os in -+ cygwin* | mingw*) -+ # dlltool doesn't understand --whole-archive et. al. -+ whole_archive_flag_spec= -+ ;; -+ *) -+ # ancient GNU ld didn't support --whole-archive et. al. -+ if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then -+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec= -+ fi -+ ;; -+ esac - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in - aix3*) - allow_undefined_flag=unsupported -- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq' > $lib.exp~ -- $LD -o $objdir/$soname$libobjs$deplibs -bE:$lib.exp -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' -- archive_sym_cmds='$LD -o $objdir/$soname$libobjs$deplibs -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' -+ always_export_symbols=yes -+ archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes -@@ -1104,80 +1277,67 @@ - ;; - - aix4*) -- allow_undefined_flag=unsupported -- archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\' | sort | uniq' > $lib.exp else cat $export_symbols > $lib.exp~ -- $CC -o $objdir/$soname$libobjs$deplibs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry~$AR cru $lib $objdir/$soname' -- archive_sym_cmds='$CC -o $objdir/$soname$libobjs$deplibs ${wl}-bE:$export_symbols ${wl}-bM:SRE ${wl}-bnoentry~$AR cru $lib $objdir/$soname' -- hardcode_direct=yes -- hardcode_minus_L=yes -- ;; -+ hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' -+ hardcode_libdir_separator=':' -+ if test "$with_gcc" = yes; then -+ 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 -+ shared_flag='-shared' -+ else -+ shared_flag='${wl}-bM:SRE' -+ hardcode_direct=yes -+ fi -+ allow_undefined_flag=' ${wl}-berok' -+ archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' -+ archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' -+ case "$host_os" in aix4.[01]|aix4.[01].*) -+ # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on -+ always_export_symbols=yes ;; -+ esac -+ ;; - - amigaos*) -- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib$libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' -+ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $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 - ;; - -- cygwin32* | mingw32*) -- if test "$with_gcc" = yes; then -- # 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 -- # Very, very bogus. -- echo ' --#define WIN32_LEAN_AND_MEAN --#include --#undef WIN32_LEAN_AND_MEAN --#include -- --BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -- --#include --DECLARE_CYGWIN_DLL( DllMain ); --HINSTANCE __hDllInstance_base; -+ cygwin* | mingw*) -+ # 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 -+ # FIXME: Setting linknames here is a bad hack. -+ archive_cmds='$CC -o $lib $libobjs $linkopts `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' -+ fix_srcfile_path='`cygpath -w $srcfile`' -+ ;; - --BOOL APIENTRY --DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) --{ -- __hDllInstance_base = hInst; -- return TRUE; --} --' > ltdll.c -- archive_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- $DLLTOOL --export-all --output-def $lib-def $libobjs ltdll.$objext~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- archive_sym_cmds='$CC -c '"`pwd`"'/ltdll.c~echo EXPORTS > $lib-def~ -- cat "$export_symbols" >> $lib-def~ -- $CC -Wl,--base-file,$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 $libobjs ltdll.$objext~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC -Wl,--base-file,$soname-base $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $DLLTOOL --as=$AS --dllname $soname --exclude-symbol=_cygwin_dll_entry@12 --def $lib-def --base-file $soname-base --output-exp $soname-exp~ -- $CC $soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $libobjs ltdll.$objext$deplibs~ -- $rm ltdll.$objext $soname-base $soname-exp' -- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $lib-def --output-lib $objdir/$libname.a~$rm $lib.exp' -- else -- # 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 -- # FIXME: Setting linknames here is a bad hack. -- archive_cmds='$CC -o $lib$libobjs`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' -- fix_srcfile_path='`cygpath -w $srcfile`' -- fi -+ freebsd1*) -+ ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor -@@ -1185,65 +1345,64 @@ - # 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 /usr/lib/c++rt0.o' -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes -- hardcode_minus_L=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' -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - -- # FreeBSD 3, at last, uses gcc -shared to do shared libraries. -- freebsd3*) -- archive_cmds='$CC -shared -o $lib$libobjs$deplibs' -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd*) -+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes -- hardcode_minus_L=no - hardcode_shlibpath_var=no - ;; - -- hpux9*) -- archive_cmds='$rm $objdir/$soname~$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs$deplibs~test $objdir/$soname = $lib || mv $objdir/$soname $lib' -- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -- hardcode_direct=yes -- hardcode_minus_L=yes -- export_dynamic_flag_spec='${wl}-E' -- ;; -- -- hpux10* | hpux11*) -- archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs$deplibs' -+ hpux9* | hpux10* | hpux11*) -+ case "$host_os" in -+ hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; -+ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; -+ esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: - hardcode_direct=yes -- hardcode_minus_L=yes -+ hardcode_minus_L=yes # Not in the search PATH, but as the default -+ # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - if test "$with_gcc" = yes; then -- archive_cmds='$CC -shared -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs$deplibs' -+ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else -- archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' -+ archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: - ;; - - netbsd*) -- # Tested with NetBSD 1.2 ld -- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' -- hardcode_libdir_flag_spec='-R$libdir' -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out -+ else -+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF -+ fi -+ hardcode_libdir_flag_spec='${wl}-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) -- archive_cmds='$LD -Bshareable -o $lib$libobjs$deplibs' -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no -@@ -1253,102 +1412,169 @@ - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported -- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp$libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib$libobjs$deplibs $objdir/$libname.def' -+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - -- osf3* | osf4*) -+ osf3*) - if test "$with_gcc" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -- archive_cmds='$CC -shared${allow_undefined_flag} -o $lib ${wl}-soname ${wl}$soname ${wl}-set_version ${wl}$verstring$libobjs$deplibs' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' -- archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' -+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - -- sco3.2v5*) -- archive_cmds='$LD -G -o $lib$libobjs$deplibs' -+ osf4* | osf5*) # As osf3* with the addition of the -msym flag -+ if test "$with_gcc" = yes; then -+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' -+ else -+ allow_undefined_flag=' -expect_unresolved \*' -+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' -+ fi -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ ;; -+ rhapsody*) -+ archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' -+ hardcode_libdir_flags_spec='-L$libdir' - hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sco3.2v5*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ hardcode_shlibpath_var=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now -- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs$deplibs' -- archive_sym_cmds='$echo "{ global:" > $lib.exp~sed $export_symbols -e "s/.*/\1;/" >> $lib.exp~$echo "local: * }" >> $lib.exp~ -- $LD -G${allow_undefined_flag} -M $export_symbols -h $soname -o $lib$libobjs$deplibs~$rm $lib.exp' -+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' -+ 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 $linkopts~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no -- -- # Solaris 2 before 2.5 hardcodes -L paths. - case "$host_os" in -- solaris2.[0-4]*) -- hardcode_minus_L=yes -- ;; -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) # Supported since Solaris 2.6 (maybe 2.5.1?) -+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - ;; - - sunos4*) -- # Why do we need -Bstatic? To avoid inter-library dependencies, maybe... -- if test "$with_gcc" = yes; then -- archive_cmds='$CC -shared ${wl}-Bstatic -o $lib$libobjs$deplibs' -- else -- archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs$deplibs' -- fi -+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - -+ sysv4) -+ 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 $linkopts' -+ else -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ fi -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no -+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ -+ sysv4.3*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ hardcode_shlibpath_var=no -+ export_dynamic_flag_spec='-Bexport' -+ ;; -+ -+ sysv5*) -+ no_undefined_flag=' -z text' -+ # $CC -shared without GNU ld will not create a library from C++ -+ # object files and a static libstdc++, better avoid it by now -+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' -+ 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 $linkopts~$rm $lib.exp' -+ hardcode_libdir_flag_spec= -+ hardcode_shlibpath_var=no -+ runpath_var='LD_RUN_PATH' -+ ;; -+ - uts4*) -- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' -- hardcode_direct=no -- hardcode_minus_L=no - hardcode_shlibpath_var=no - ;; - - dgux*) -- archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flag_spec='-L$libdir' -- hardcode_direct=no -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ hardcode_shlibpath_var=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ld_shlibs=yes -+ fi -+ ;; -+ -+ sysv4.2uw2*) -+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' -+ hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no -+ hardcode_runpath_var=yes -+ runpath_var=LD_RUN_PATH -+ ;; -+ -+ unixware7*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no -- can_build_shared=no - ;; - esac - fi - echo "$ac_t$ld_shlibs" 1>&6 -+test "$ld_shlibs" = no && can_build_shared=no - - if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in -- /* | [A-Za-z]:[/\\]*) ;; # Let the user override the test with a path. -+ [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. - *) -- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" -- for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" -+ for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do - test -z "$ac_dir" && ac_dir=. -- if test -f $ac_dir/nm; 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 -- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- NM="$ac_dir/nm -B" -- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -- NM="$ac_dir/nm -p" -+ if test -f $ac_dir/nm || test -f $ac_dir/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 -+ if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -+ NM="$ac_dir/nm -B" -+ break -+ elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then -+ NM="$ac_dir/nm -p" -+ break - else -- NM="$ac_dir/nm" -+ NM=${NM="$ac_dir/nm"} # keep the first match, but -+ continue # so that we can try to find one that supports BSD flags - fi -- break - fi - done - IFS="$ac_save_ifs" -@@ -1365,52 +1591,54 @@ - # [They come from Ultrix. What could be older than Ultrix?!! ;)] - - # Character class describing NM global symbol codes. --symcode='[BCDEGRSTU]' -+symcode='[BCDEGRST]' - - # Regexp to match symbols that can be accessed directly from C. - sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - - # Transform the above into a raw symbol and a C symbol. --symxfrm='\1 \1' -+symxfrm='\1 \2\3 \3' -+ -+# Transform an extracted symbol line into a proper C declaration -+global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - - # Define system-specific variables. - case "$host_os" in - aix*) -- symcode='[BCDTU]' -+ symcode='[BCDT]' -+ ;; -+cygwin* | mingw*) -+ symcode='[ABCDGISTW]' - ;; --sunos* | cygwin32* | mingw32*) -- sympat='_\([_A-Za-z][_A-Za-z0-9]*\)' -- symxfrm='_\1 \1' -+hpux*) # Its linker distinguishes data from code symbols -+ global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" - ;; - irix*) -- # Cannot use undefined symbols on IRIX because inlined functions mess us up. - symcode='[BCDEGRST]' - ;; - solaris*) -- symcode='[BDTU]' -+ symcode='[BDT]' -+ ;; -+sysv4) -+ symcode='[DFNSTU]' - ;; - esac - - # If we're using GNU nm, then use its standard symbol codes. - if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then -- symcode='[ABCDGISTUW]' -+ symcode='[ABCDGISTW]' - fi - --case "$host_os" in --cygwin32* | mingw32*) -- # We do not want undefined symbols on cygwin32. The user must -- # arrange to define them via -l arguments. -- symcode='[ABCDGISTW]' -- ;; --esac -+# Try without a prefix undercore, then with it. -+for ac_symprfx in "" "_"; do - --# Write the raw and C identifiers. --global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'" -+ # Write the raw and C identifiers. -+ global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" - --# Check to see that the pipe works correctly. --pipe_works=no --$rm conftest* --cat > conftest.c < conftest.c <&5 --if { (eval echo $progname:1426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then -- # Now try to grab the symbols. -- nlist=conftest.nm -- if { echo "$progname:1429: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then -- -- # Try sorting and uniquifying the output. -- if sort "$nlist" | uniq > "$nlist"T; then -- mv -f "$nlist"T "$nlist" -- wcout=`wc "$nlist" 2>/dev/null` -- count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` -- (test "$count" -ge 0) 2>/dev/null || count=-1 -- else -- rm -f "$nlist"T -- count=-1 -- fi -+ echo "$progname:1653: checking if global_symbol_pipe works" >&5 -+ if { (eval echo $progname:1654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then -+ # Now try to grab the symbols. -+ nlist=conftest.nm -+ if { echo "$progname:1657: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then -- if egrep ' nm_test_func$' "$nlist" >/dev/null; then -- cat < conftest.c -+ # Make sure that we snagged all the symbols we need. -+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then -+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then -+ cat < conftest.c - #ifdef __cplusplus - extern "C" { - #endif - - EOF -- # Now generate the symbol file. -- sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c -+ # Now generate the symbol file. -+ eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' - -- cat <> conftest.c -+ cat <> conftest.c - #if defined (__STDC__) && __STDC__ --# define __ptr_t void * -+# define lt_ptr_t void * - #else --# define __ptr_t char * -+# define lt_ptr_t char * -+# define const - #endif - --/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ --int dld_preloaded_symbol_count = $count; -- - /* The mapping between symbol names and symbols. */ --struct { -- char *name; -- __ptr_t address; -+const struct { -+ const char *name; -+ lt_ptr_t address; - } --dld_preloaded_symbols[] = -+lt_preloaded_symbols[] = - { - EOF -- sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c -- cat <<\EOF >> conftest.c -- {0, (__ptr_t) 0} -+ sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c -+ cat <<\EOF >> conftest.c -+ {0, (lt_ptr_t) 0} - }; - - #ifdef __cplusplus - } - #endif - EOF -- # Now try linking the two files. -- mv conftest.$objext conftestm.$objext -- save_LIBS="$LIBS" -- save_CFLAGS="$CFLAGS" -- LIBS="conftestm.$objext" -- CFLAGS="$CFLAGS$no_builtin_flag" -- if { (eval echo $progname:1487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then -- pipe_works=yes -- else -- echo "$progname: failed program was:" >&5 -- cat conftest.c >&5 -- fi -- LIBS="$save_LIBS" -+ # Now try linking the two files. -+ mv conftest.$objext conftstm.$objext -+ save_LIBS="$LIBS" -+ save_CFLAGS="$CFLAGS" -+ LIBS="conftstm.$objext" -+ CFLAGS="$CFLAGS$no_builtin_flag" -+ if { (eval echo $progname:1709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then -+ pipe_works=yes -+ else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.c >&5 -+ fi -+ LIBS="$save_LIBS" -+ else -+ echo "cannot find nm_test_func in $nlist" >&5 -+ fi - else -- echo "cannot find nm_test_func in $nlist" >&5 -+ echo "cannot find nm_test_var in $nlist" >&5 - fi - else -- echo "cannot find nm_test_var in $nlist" >&5 -+ echo "cannot run $global_symbol_pipe" >&5 - fi - else -- echo "cannot run $global_symbol_pipe" >&5 -+ echo "$progname: failed program was:" >&5 -+ cat conftest.c >&5 - fi -+ $rm conftest* conftst* -+ -+ # Do not use the global_symbol_pipe unless it works. -+ if test "$pipe_works" = yes; then -+ break -+ else -+ global_symbol_pipe= -+ fi -+done -+if test "$pipe_works" = yes; then -+ echo "${ac_t}ok" 1>&6 - else -- echo "$progname: failed program was:" >&5 -- cat conftest.c >&5 -+ echo "${ac_t}failed" 1>&6 - fi --$rm conftest* - --# Do not use the global_symbol_pipe unless it works. --echo "$ac_t$pipe_works" 1>&6 --test "$pipe_works" = yes || global_symbol_pipe= -+if test -z "$global_symbol_pipe"; then -+ global_symbol_to_cdecl= -+fi - - # Check hardcoding attributes. - echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -@@ -1517,10 +1752,12 @@ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. -- if test "$hardcode_direct" != no && \ -- test "$hardcode_minus_L" != no && \ -- test "$hardcode_shlibpath_var" != no; then -- -+ 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 "$hardcode_shlibpath_var" != no && -+ test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else -@@ -1552,26 +1789,27 @@ - finish_cmds= - finish_eval= - shlibpath_var= -+shlibpath_overrides_runpath=unknown - version_type=none - dynamic_linker="$host_os ld.so" --sys_lib_search_path="/lib /usr/lib /usr/local/lib" --check_shared_deplibs_method='none' -+sys_lib_dlsearch_path_spec="/lib /usr/lib" -+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+file_magic_cmd= -+file_magic_test_file= -+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_regex' -- check by looking for filenames that look like the shared --# library in the library path. --# 'file_magic [regex]' -- check by looking for files in library path which --# responds to the "file" command with a given regex. This is actually a --# superset of the file_regex command. If you have file on your system, you'll --# want to use this instead. --# Notes: regexes are run through expr. -- -+# 'file_magic [regex]' -- check by looking for files in library path -+# which responds to the $file_magic_cmd with a given egrep 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. - echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 - case "$host_os" in --aix3* | aix4*) -+aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH -@@ -1580,44 +1818,111 @@ - soname_spec='${libname}${release}.so$major' - ;; - -+aix4*) -+ version_type=linux -+ # AIX 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. -+ # We preserve .a as extension for shared libraries though AIX4.2 -+ # and later linker supports .so -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' -+ shlibpath_var=LIBPATH -+ deplibs_check_method=pass_all -+ ;; -+ - 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}.so' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ deplibs_check_method=pass_all -+ lt_cv_dlopen="load_add_on" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ ;; -+ - bsdi4*) - version_type=linux -- library_names_spec='${libname}.so.$major ${libname}.so' -- soname_spec='${libname}.so' -- finish_cmds='PATH="$PATH:/sbin" ldconfig $libdir' -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/shlib/libc.so -+ 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" -+ export_dynamic_flag_spec=-rdynamic -+ # 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 - ;; - --cygwin32* | mingw32*) -+cygwin* | mingw*) - version_type=windows -+ need_version=no -+ need_lib_prefix=no - if test "$with_gcc" = yes; then - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' - else - library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' - fi - dynamic_linker='Win32 ld.exe' -- libname_spec='$name' -+ deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -+ file_magic_cmd='${OBJDUMP} -f' -+ # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH -+ lt_cv_dlopen="LoadLibrary" -+ lt_cv_dlopen_libs= - ;; - --freebsd2* | freebsd3*) -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -- finish_cmds='PATH="$PATH:/sbin" OBJFORMAT="$objformat" ldconfig -m $libdir' -+ case "$version_type" in -+ freebsd-elf*) -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /usr/lib/libc.so*` -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' -+ need_version=no -+ need_lib_prefix=no -+ ;; -+ freebsd-*) -+ deplibs_check_method=unknown -+ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' -+ need_version=yes -+ ;; -+ esac - shlibpath_var=LD_LIBRARY_PATH -+ case "$host_os" in -+ freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) -+ shlibpath_overrides_runpath=yes -+ ;; -+ *) # from 3.2 on -+ shlibpath_overrides_runpath=no -+ ;; -+ esac - ;; - - gnu*) - version_type=linux -- library_names_spec='${libname}${release}.so$versuffix ${libname}.so' -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' -+ soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH -+ deplibs_check_method=pass_all - ;; - - hpux9* | hpux10* | hpux11*) -@@ -1625,25 +1930,52 @@ - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos -+ need_lib_prefix=no -+ need_version=no - shlibpath_var=SHLIB_PATH -+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' -+ case "$host_os" in -+ hpux10.20*) -+ # TODO: Does this work for hpux-11 too? -+ deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/usr/lib/libc.sl -+ ;; -+ esac - ;; - --irix5*) -- version_type=osf -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -- shlibpath_var=LD_LIBRARY_PATH -- ;; -- --irix6*) -- version_type=osf -- soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -- shlibpath_var=LD_LIBRARYN32_PATH -+irix5* | irix6*) -+ version_type=irix -+ need_lib_prefix=no -+ need_version=no -+ soname_spec='${libname}${release}.so.$major' -+ library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' -+ case "$host_os" in -+ irix5*) -+ libsuff= shlibsuff= -+ # this will be overridden with pass_all, but let us keep it just in case -+ deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" -+ ;; -+ *) -+ case "$LD" in # libtool.m4 will add one of these switches to LD -+ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; -+ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; -+ *-64|*"-64 ") 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}" -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /lib${libsuff}/libc.so*` -+ deplibs_check_method='pass_all' - ;; - - # No shared lib support for Linux oldld, aout, or coff. -@@ -1654,12 +1986,14 @@ - # This must be Linux ELF. - linux-gnu*) - version_type=linux -+ need_lib_prefix=no -+ need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH -- check_shared_deplibs_method='file_magic ELF 32-bit LSB shared object' -- sys_lib_search_path="/lib /usr/lib /usr/local/lib `echo $LD_LIBRARY_PATH | sed -e 's/:/ /g'`" -+ shlibpath_overrides_runpath=no -+ deplibs_check_method=pass_all - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' -@@ -1672,26 +2006,60 @@ - fi - ;; - --netbsd* | openbsd*) -+netbsd*) -+ version_type=sunos -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -+ dynamic_linker='NetBSD (a.out) ld.so' -+ else -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' -+ soname_spec='${libname}${release}.so$major' -+ dynamic_linker='NetBSD ld.elf_so' -+ fi -+ shlibpath_var=LD_LIBRARY_PATH -+ ;; -+ -+openbsd*) - version_type=sunos -- library_names_spec='${libname}${release}.so$versuffix' -+ if test "$with_gnu_ld" = yes; then -+ need_lib_prefix=no -+ need_version=no -+ fi -+ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - - os2*) - libname_spec='$name' -+ need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - --osf3* | osf4*) -+osf3* | osf4* | osf5*) - version_type=osf -+ need_version=no - soname_spec='${libname}${release}.so' -- library_names_spec='${libname}${release}.so$versuffix $libname.so' -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH -- check_shared_deplibs_method='pass_all' -+ # this will be overridden with pass_all, but let us keep it just in case -+ deplibs_check_method='file_magic COFF format alpha shared library' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/shlib/libc.so -+ deplibs_check_method='pass_all' -+ 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" -+ ;; -+ -+rhapsody*) -+ version_type=sunos -+ library_names_spec='${libname}.so' -+ soname_spec='${libname}.so' -+ shlibpath_var=DYLD_LIBRARY_PATH -+ deplibs_check_method=pass_all - ;; - - sco3.2v5*) -@@ -1703,11 +2071,17 @@ - - solaris*) - version_type=linux -+ need_lib_prefix=no -+ need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' -+ deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=/lib/libc.so - ;; - - sunos4*) -@@ -1715,29 +2089,63 @@ - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2*) -+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH -+ case "$host_vendor" in -+ sequent) -+ file_magic_cmd='/bin/file' -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ ;; -+ ncr) -+ deplibs_check_method='pass_all' -+ ;; -+ motorola) -+ need_lib_prefix=no -+ need_version=no -+ shlibpath_overrides_runpath=no -+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' -+ 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]' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /usr/lib/libc.so*` -+ ;; -+ esac - ;; - - uts4*) - version_type=linux -- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' -- soname_spec='${libname}${release}.so.$major' -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - - dgux*) - version_type=linux -+ need_lib_prefix=no -+ need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -+sysv4*MP*) -+ if test -d /usr/nec ;then -+ version_type=linux -+ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' -+ soname_spec='$libname.so.$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ fi -+ ;; -+ - *) - dynamic_linker=no - ;; -@@ -1748,19 +2156,58 @@ - # Report the final consequences. - echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -+# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in -+# configure.in, otherwise build static only libraries. -+case "$host_os" in -+cygwin* | mingw* | os2*) -+ if test x$can_build_shared = xyes; then -+ test x$enable_win32_dll = xno && can_build_shared=no -+ echo "checking if package supports dlls... $can_build_shared" 1>&6 -+ fi -+;; -+esac -+ -+if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then -+ case "$deplibs_check_method" in -+ "file_magic "*) -+ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" -+ 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 -+ - echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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 --aix*) -+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*) -+ test "$enable_shared" = yes && enable_static=no -+ ;; - esac - - echo "$ac_t$enable_shared" 1>&6 -@@ -1770,6 +2217,15 @@ - - echo "checking whether to build static libraries... $enable_static" 1>&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 -+ - echo $ac_n "checking for objdir... $ac_c" 1>&6 - rm -f .libs 2>/dev/null - mkdir .libs 2>/dev/null -@@ -1782,6 +2238,449 @@ - rmdir .libs 2>/dev/null - echo "$ac_t$objdir" 1>&6 - -+if test "x$enable_dlopen" != xyes; then -+ enable_dlopen=unknown -+ enable_dlopen_self=unknown -+ enable_dlopen_self_static=unknown -+else -+if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then -+ lt_cv_dlopen=no lt_cv_dlopen_libs= -+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -+echo "$progname:2248: checking for dlopen in -ldl" >&5 -+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldl $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -+echo "$progname:2288: checking for dlopen" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen(); -+ -+int main() { -+ -+/* 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 -+dlopen(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo $progname:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_dlopen=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_dlopen=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="dlopen" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -+echo "$progname:2335: checking for dld_link in -ldld" >&5 -+ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldld $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -+echo "$progname:2375: checking for shl_load" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char shl_load(); -+ -+int main() { -+ -+/* 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 -+shl_load(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo $progname:2405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_shl_load=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_shl_load=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="shl_load" -+else -+ echo "$ac_t""no" 1>&6 -+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -+echo "$progname:2423: checking for shl_load in -ldld" >&5 -+ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-ldld $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+fi -+ -+ if test "x$lt_cv_dlopen" != xno; then -+ enable_dlopen=yes -+ fi -+ -+ case "$lt_cv_dlopen" in -+ dlopen) -+for ac_hdr in dlfcn.h; do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "$progname:2488: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+int fnord = 0; -+EOF -+ac_try="$ac_compile >/dev/null 2>conftest.out" -+{ (eval echo $progname:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+else -+ echo "$ac_t""no" 1>&6 -+fi -+done -+ -+ if test "x$ac_cv_header_dlfcn_h" = xyes; then -+ CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -+ fi -+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" -+ LIBS="$lt_cv_dlopen_libs $LIBS" -+ -+ echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -+echo "$progname:2526: checking whether a program can dlopen itself" >&5 -+if test "${lt_cv_dlopen_self+set}" = set; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ if test "$cross_compiling" = yes; then -+ lt_cv_dlopen_self=cross -+ else -+ cat > conftest.c < -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LTDL_GLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LTDL_GLOBAL DL_GLOBAL -+# else -+# define LTDL_GLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LTDL_LAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LTDL_LAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LTDL_LAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LTDL_LAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LTDL_LAZY_OR_NOW DL_NOW -+# else -+# define LTDL_LAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+fnord() { int i=42;} -+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); -+ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); -+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } -+ -+EOF -+if { (eval echo $progname:2580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -+then -+ lt_cv_dlopen_self=yes -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -fr conftest* -+ lt_cv_dlopen_self=no -+fi -+rm -fr conftest* -+fi -+ -+fi -+ -+echo "$ac_t""$lt_cv_dlopen_self" 1>&6 -+ -+ if test "$lt_cv_dlopen_self" = yes; then -+ LDFLAGS="$LDFLAGS $link_static_flag" -+ echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 -+echo "$progname:2599: checking whether a statically linked program can dlopen itself" >&5 -+if test "${lt_cv_dlopen_self_static+set}" = set; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ if test "$cross_compiling" = yes; then -+ lt_cv_dlopen_self_static=cross -+ else -+ cat > conftest.c < -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LTDL_GLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LTDL_GLOBAL DL_GLOBAL -+# else -+# define LTDL_GLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LTDL_LAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LTDL_LAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LTDL_LAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LTDL_LAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LTDL_LAZY_OR_NOW DL_NOW -+# else -+# define LTDL_LAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+fnord() { int i=42;} -+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); -+ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); -+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } -+ -+EOF -+if { (eval echo $progname:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -+then -+ lt_cv_dlopen_self_static=yes -+else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -fr conftest* -+ lt_cv_dlopen_self_static=no -+fi -+rm -fr conftest* -+fi -+ -+fi -+ -+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 -+fi -+ ;; -+ 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 -+ - # Copy echo and quote the copy, instead of the original, because it is - # used later. - ltecho="$echo" -@@ -1790,30 +2689,36 @@ - fi - LTSHELL="$SHELL" - -+LTCONFIG_VERSION="$VERSION" -+ - # Only quote variables if we're using ltmain.sh. - case "$ltmain" in - *.sh) - # Now quote all the things that may contain metacharacters. -- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ -- old_LN_S old_DLLTOOL old_AS AR CC LD LN_S NM LTSHELL VERSION \ -+ for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ -+ old_LD old_LDFLAGS old_LIBS \ -+ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ -+ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ -- whole_archive_flag_spec libname_spec library_names_spec soname_spec \ -+ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ -+ library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ -- old_postuninstall_cmds archive_cmds archive_sym_cmds postinstall_cmds postuninstall_cmds \ -- check_shared_deplibs_method allow_undefined_flag no_undefined_flag \ -- finish_cmds finish_eval global_symbol_pipe \ -- hardcode_libdir_flag_spec hardcode_libdir_separator sys_lib_search_path \ -- compiler_c_o compiler_o_lo need_locks; do -+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ -+ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ -+ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ -+ hardcode_libdir_flag_spec hardcode_libdir_separator \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ -- archive_cmds | archive_sym_cmds | \ -+ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - postinstall_cmds | postuninstall_cmds | \ -- finish_cmds | sys_lib_search_path) -+ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. -- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`\\\"" -+ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -@@ -1823,8 +2728,7 @@ - - case "$ltecho" in - *'\$0 --fallback-echo"') -- ltecho=`$echo "X$ltecho" | -- $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -@@ -1835,11 +2739,11 @@ - #! $SHELL - - # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. --# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION) -+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) - # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. - # --# Copyright (C) 1996-1998 Free Software Foundation, Inc. --# Gordon Matzigkeit , 1996 -+# Copyright (C) 1996-1999 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 -@@ -1865,7 +2769,7 @@ - - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi -+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - - ### BEGIN LIBTOOL CONFIG - EOF -@@ -1874,8 +2778,9 @@ - - *) - # Double-quote the variables that need it (for aesthetics). -- for var in old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ -- old_LN_S old_DLLTOOL old_AS; do -+ for var in old_CC old_CFLAGS old_CPPFLAGS \ -+ old_LD old_LDFLAGS old_LIBS \ -+ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do - eval "$var=\\\"\$var\\\"" - done - -@@ -1886,7 +2791,7 @@ - $rm "$cfgfile" - cat < "$cfgfile" - # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. --# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION) -+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) - EOF - ;; - esac -@@ -1895,15 +2800,16 @@ - # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - # - # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ --# LD=$old_LD NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ --# DLLTOOL="$old_DLLTOOL" AS="$old_AS" \\ -+# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ -+# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ -+# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ - # $0$ltconfig_args - # - # Compiler and other test output produced by $progname, useful for - # debugging $progname, is in ./config.log if it exists. - - # The version of $progname that generated this script. --LTCONFIG_VERSION=$VERSION -+LTCONFIG_VERSION=$LTCONFIG_VERSION - - # Shell to use when invoking shell scripts. - SHELL=$LTSHELL -@@ -1914,6 +2820,9 @@ - # Whether or not to build static libraries. - build_old_libs=$enable_static - -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ - # The host system. - host_alias=$host_alias - host=$host -@@ -1936,10 +2845,13 @@ - # A BSD-compatible nm program. - NM=$NM - --# Used on cygwin32: DLL creation program. -+# Used on cygwin: DLL creation program. - DLLTOOL="$DLLTOOL" - --# Used on cygwin32: assembler. -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. - AS="$AS" - - # The name of the directory that contains temporary libtool files. -@@ -1958,10 +2870,13 @@ - # Old archive suffix (normally "a"). - libext="$libext" - -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ - # Additional compiler flags for building library objects. - pic_flag=$pic_flag - --# Does compiler simultaneously support -c and -o options -+# Does compiler simultaneously support -c and -o options? - compiler_c_o=$compiler_c_o - - # Can we write directly to a .lo ? -@@ -1970,6 +2885,21 @@ - # Must we lock files when doing compilation ? - need_locks=$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=$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=$link_static_flag - -@@ -1982,6 +2912,9 @@ - # Compiler flag to generate shared objects directly from archives. - whole_archive_flag_spec=$whole_archive_flag_spec - -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$thread_safe_flag_spec -+ - # Library versioning type. - version_type=$version_type - -@@ -2006,12 +2939,15 @@ - - # Commands used to build and install a shared archive. - archive_cmds=$archive_cmds --archive_sym_cmds=$archive_sym_cmds -+archive_expsym_cmds=$archive_expsym_cmds - postinstall_cmds=$postinstall_cmds - postuninstall_cmds=$postuninstall_cmds - - # Method to check whether dependent libraries are shared objects. --check_shared_deplibs_method=$check_shared_deplibs_method -+deplibs_check_method=$deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$file_magic_cmd - - # Flag that allows shared libraries with undefined symbols to be built. - allow_undefined_flag=$allow_undefined_flag -@@ -2028,12 +2964,18 @@ - # Take the output of nm and produce a listing of raw symbols and C names. - global_symbol_pipe=$global_symbol_pipe - -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$global_symbol_to_cdecl -+ - # 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 - -@@ -2056,11 +2998,27 @@ - # the resulting binary. - hardcode_shlibpath_var=$hardcode_shlibpath_var - --# System search path for libraries --sys_lib_search_path=$sys_lib_search_path -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=$sys_lib_search_path_spec -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$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=$export_symbols_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$exclude_expsyms -+ -+# Symbols that must always be exported. -+include_expsyms=$include_expsyms -+ - EOF - - case "$ltmain" in -@@ -2074,7 +3032,7 @@ - # 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 "${COLLECT_NAMES+set}" != set; then -+if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi -@@ -2083,7 +3041,11 @@ - esac - - # Append the ltmain.sh script. -- cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) -+ sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) -+ # 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? - - chmod +x "$ofile" - ;; -@@ -2093,6 +3055,58 @@ - echo "FIXME: would compile $ltmain" - ;; - esac -+ -+test -n "$cache_file" || exit 0 -+ -+# AC_CACHE_SAVE -+trap '' 1 2 15 -+cat > confcache <<\EOF -+# 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. It is not useful on other systems. -+# If it contains results you don't want to keep, you may remove or edit it. -+# -+# By default, configure uses ./config.cache as the cache file, -+# creating it if it does not exist already. You can give configure -+# the --cache-file=FILE option to use a different cache file; that is -+# what configure does when it calls configure scripts in -+# subdirectories, so they share the cache. -+# Giving --cache-file=/dev/null disables caching, for debugging configure. -+# config.status only pays attention to the cache file if you give it the -+# --recheck option to rerun configure. -+# -+EOF -+# 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 \ -+ -e "s/'/'\\\\''/g" \ -+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" -+ ;; -+ *) -+ # `set' quotes correctly as required by POSIX, so do not add quotes. -+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' -+ ;; -+ esac >> confcache -+if cmp -s $cache_file confcache; then -+ : -+else -+ if test -w $cache_file; then -+ echo "updating cache $cache_file" -+ cat confcache > $cache_file -+ else -+ echo "not updating unwritable cache $cache_file" -+ fi -+fi -+rm -f confcache -+ - exit 0 - - # Local Variables: ---- gsmlib-1.10.orig/scripts/config.guess -+++ gsmlib-1.10/scripts/config.guess -@@ -1,9 +1,10 @@ - #! /bin/sh - # Attempt to guess a canonical system name. --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - # Free Software Foundation, Inc. - --timestamp='2001-09-04' -+timestamp='2008-01-23' - - # 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 -@@ -17,15 +18,18 @@ - # - # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# 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. - --# Written by Per Bothner . --# Please send patches to . -+ -+# 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 -@@ -52,8 +56,8 @@ - GNU config.guess ($timestamp) - - Originally written by Per Bothner. --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+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." -@@ -65,11 +69,11 @@ - while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) -- echo "$timestamp" ; exit 0 ;; -+ echo "$timestamp" ; exit ;; - --version | -v ) -- echo "$version" ; exit 0 ;; -+ echo "$version" ; exit ;; - --help | --h* | -h ) -- echo "$usage"; exit 0 ;; -+ echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. -@@ -87,30 +91,42 @@ - exit 1 - fi - -+trap 'exit 1' 1 2 15 - --dummy=dummy-$$ --trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; 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. - --# CC_FOR_BUILD -- compiler used by this script. - # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still - # use `HOST_CC' if defined, but it is deprecated. - --set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in -- ,,) echo "int dummy(){}" > $dummy.c ; -- for c in cc gcc c89 ; do -- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; -- if test $? = 0 ; then -+# 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 ; -- rm -f $dummy.c $dummy.o $dummy.rel ; - 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' -+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) -@@ -127,29 +143,31 @@ - - case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) -- # Netbsd (nbsd) targets should (where applicable) match one or -+ # 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. -- # Determine the machine/vendor (is the vendor relevant). -- case "${UNAME_MACHINE}" in -- amiga) machine=m68k-unknown ;; -- arm32) machine=arm-unknown ;; -- atari*) machine=m68k-atari ;; -- sun3*) machine=m68k-sun ;; -- mac68k) machine=m68k-apple ;; -- macppc) machine=powerpc-apple ;; -- hp3[0-9][05]) machine=m68k-hp ;; -- ibmrt|romp-ibm) machine=romp-ibm ;; -- *) machine=${UNAME_MACHINE}-unknown ;; -+ # -+ # 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}" in -- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) -+ 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 -@@ -166,120 +184,128 @@ - ;; - esac - # The OS release -- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -+ # 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 0 ;; -+ 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:*:*) -- if test $UNAME_RELEASE = "V4.0"; then -+ case $UNAME_RELEASE in -+ *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` -- fi -+ ;; -+ *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. -- cat <$dummy.s -- .data --\$Lformat: -- .byte 37,100,45,37,120,10,0 # "%d-%x\n" -- -- .text -- .globl main -- .align 4 -- .ent main --main: -- .frame \$30,16,\$26,0 -- ldgp \$29,0(\$27) -- .prologue 1 -- .long 0x47e03d80 # implver \$0 -- lda \$2,-1 -- .long 0x47e20c21 # amask \$2,\$1 -- lda \$16,\$Lformat -- mov \$0,\$17 -- not \$1,\$18 -- jsr \$26,printf -- ldgp \$29,0(\$26) -- mov 0,\$16 -- jsr \$26,exit -- .end main --EOF -- eval $set_cc_for_build -- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null -- if test "$?" = 0 ; then -- case `./$dummy` in -- 0-0) -- UNAME_MACHINE="alpha" -- ;; -- 1-0) -- UNAME_MACHINE="alphaev5" -- ;; -- 1-1) -- UNAME_MACHINE="alphaev56" -- ;; -- 1-101) -- UNAME_MACHINE="alphapca56" -- ;; -- 2-303) -- UNAME_MACHINE="alphaev6" -- ;; -- 2-307) -- UNAME_MACHINE="alphaev67" -- ;; -- 2-1307) -- UNAME_MACHINE="alphaev68" -- ;; -- esac -- fi -- rm -f $dummy.s $dummy -- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 -- exit 0 ;; -+ exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 -- exit 0;; -- amiga:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos -- exit 0 ;; -- arc64:OpenBSD:*:*) -- echo mips64el-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- arc:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- hkmips:OpenBSD:*:*) -- echo mips-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- pmax:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- sgi:OpenBSD:*:*) -- echo mips-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- wgrisc:OpenBSD:*:*) -- echo mipsel-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ *:[Mm]orph[Oo][Ss]:*:*) -+ echo ${UNAME_MACHINE}-unknown-morphos -+ exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition -- exit 0 ;; -+ 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 0;; -+ 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 0;; -+ 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 -@@ -287,25 +313,32 @@ - else - echo pyramid-pyramid-bsd - fi -- exit 0 ;; -+ exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -- i86pc:SunOS:5.*:*) -+ exit ;; -+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) -@@ -314,12 +347,12 @@ - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -- exit 0 ;; -+ exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - sun*:*:4.2BSD:*) -- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` -+ 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) -@@ -329,16 +362,10 @@ - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac -- exit 0 ;; -+ exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} -- exit 0 ;; -- sparc*:NetBSD:*) -- echo `uname -p`-unknown-netbsd${UNAME_RELEASE} -- exit 0 ;; -- atari*:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ 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 -@@ -349,49 +376,40 @@ - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} -- exit 0 ;; -- sun3*:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mac68k:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvme68k:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -- mvme88k:OpenBSD:*:*) -- echo m88k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; -+ m68k:machten:*:*) -+ echo m68k-apple-machten${UNAME_RELEASE} -+ exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 -- exit 0 ;; -+ exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -@@ -415,27 +433,33 @@ - exit (-1); - } - EOF -- $CC_FOR_BUILD $dummy.c -o $dummy \ -- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ -- && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -+ $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 0 ;; -+ exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 -- exit 0 ;; -+ exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 -- exit 0 ;; -+ exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 -- exit 0 ;; -+ exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` -@@ -451,29 +475,29 @@ - else - echo i586-dg-dgux${UNAME_RELEASE} - fi -- exit 0 ;; -+ exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 -- exit 0 ;; -+ exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 -- exit 0 ;; -+ exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 -- exit 0 ;; -+ exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd -- exit 0 ;; -+ exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -- exit 0 ;; -+ 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;; -+ exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` -@@ -481,7 +505,7 @@ - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} -- exit 0 ;; -+ exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build -@@ -496,17 +520,20 @@ - exit(0); - } - EOF -- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -- echo rs6000-ibm-aix3.2.5 -+ 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 0 ;; -- *:AIX:*:[45]) -- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` -+ 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 -@@ -518,38 +545,36 @@ - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} -- exit 0 ;; -+ exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix -- exit 0 ;; -+ exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 -- exit 0 ;; -+ exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to -- exit 0 ;; # report: romp-ibm BSD 4.3 -+ exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx -- exit 0 ;; -+ exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 -- exit 0 ;; -+ exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd -- exit 0 ;; -+ exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 -- exit 0 ;; -+ 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]) -- case "${HPUX_REV}" in -- 11.[0-9][0-9]) -- if [ -x /usr/bin/getconf ]; then -- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -+ 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 -@@ -558,13 +583,13 @@ - 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 ;; -- esac -- if [ "${HP_ARCH}" = "" ]; then -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -+ fi -+ if [ "${HP_ARCH}" = "" ]; then -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include -@@ -597,17 +622,37 @@ - exit (0); - } - EOF -- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` -- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi -- rm -f $dummy.c $dummy -- fi ;; -+ (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 0 ;; -+ exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} -- exit 0 ;; -+ exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -@@ -635,158 +680,247 @@ - exit (0); - } - EOF -- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 -- exit 0 ;; -+ exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd -- exit 0 ;; -+ exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd -- exit 0 ;; -+ exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix -- exit 0 ;; -+ exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf -- exit 0 ;; -+ exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf -- exit 0 ;; -+ exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi -- exit 0 ;; -+ exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites -- exit 0 ;; -- hppa*:OpenBSD:*:*) -- echo hppa-unknown-openbsd -- exit 0 ;; -+ exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd -- exit 0 ;; -+ exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit 0 ;; -+ exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd -- exit 0 ;; -+ exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd -- exit 0 ;; -+ exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd -- exit 0 ;; -- CRAY*X-MP:*:*:*) -- echo xmp-cray-unicos -- exit 0 ;; -+ exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -- CRAY*T3D:*:*:*) -- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -+ exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -- exit 0 ;; -- CRAY-2:*:*:*) -- echo cray2-cray-unicos -- exit 0 ;; -+ 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 0 ;; -- hp300:OpenBSD:*:*) -- echo m68k-unknown-openbsd${UNAME_RELEASE} -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:FreeBSD:*:*) -- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -- exit 0 ;; -- *:OpenBSD:*:*) -- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -- exit 0 ;; -+ 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 0 ;; -- i*:MINGW*:*) -+ exit ;; -+ *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 -- exit 0 ;; -+ exit ;; -+ i*:windows32*:*) -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 -+ exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 -- exit 0 ;; -+ exit ;; -+ *:Interix*:[3456]*) -+ case ${UNAME_MACHINE} in -+ x86) -+ echo i586-pc-interix${UNAME_RELEASE} -+ exit ;; -+ EM64T | authenticamd) -+ 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 i386-pc-interix -- exit 0 ;; -+ echo i586-pc-interix -+ exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin -- exit 0 ;; -+ exit ;; -+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) -+ echo x86_64-unknown-cygwin -+ exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin -- exit 0 ;; -+ exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -- exit 0 ;; -+ exit ;; - *:GNU:*:*) -+ # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -- exit 0 ;; -+ 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 0 ;; -+ 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-gnu -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ fi -+ exit ;; -+ avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ cris:Linux:*:*) -+ echo cris-axis-linux-gnu -+ exit ;; -+ crisv32:Linux:*:*) -+ echo crisv32-axis-linux-gnu -+ exit ;; -+ frv:Linux:*:*) -+ echo frv-unknown-linux-gnu -+ exit ;; - ia64:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux -- exit 0 ;; -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ m32r*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - mips:Linux:*:*) -- case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in -- big) echo mips-unknown-linux-gnu && exit 0 ;; -- little) echo mipsel-unknown-linux-gnu && exit 0 ;; -- esac -+ 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-gnu"; 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-gnu"; exit; } -+ ;; -+ or32:Linux:*:*) -+ echo or32-unknown-linux-gnu -+ exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; -@@ -800,7 +934,7 @@ - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -- exit 0 ;; -+ exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in -@@ -808,27 +942,37 @@ - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac -- exit 0 ;; -+ exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux -- exit 0 ;; -+ exit ;; -+ sh64*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ vax:Linux:*:*) -+ echo ${UNAME_MACHINE}-dec-linux-gnu -+ exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu -- exit 0 ;; -+ exit ;; -+ xtensa*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ 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. -- ld_supported_targets=`cd /; ld --help 2>&1 \ -+ # 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: *// -@@ -840,52 +984,58 @@ - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" -- exit 0 ;; -+ exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" -- exit 0 ;; -+ exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" -- exit 0 ;; -+ exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build -- cat >$dummy.c < --#ifdef __cplusplus --#include /* for printf() prototype */ -- int main (int argc, char *argv[]) { --#else -- int main (argc, argv) int argc; char *argv[]; { --#endif --#ifdef __ELF__ --# ifdef __GLIBC__ --# if __GLIBC__ >= 2 -- printf ("%s-pc-linux-gnu\n", argv[1]); --# else -- printf ("%s-pc-linux-gnulibc1\n", argv[1]); --# endif --# else -- printf ("%s-pc-linux-gnulibc1\n", argv[1]); --# endif --#else -- printf ("%s-pc-linux-gnuaout\n", argv[1]); --#endif -- return 0; --} -+ 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 -- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 -- rm -f $dummy.c $dummy -- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 -+ 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 0 ;; -+ 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... -@@ -893,7 +1043,27 @@ - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -- exit 0 ;; -+ 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 -@@ -901,99 +1071,100 @@ - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi -- exit 0 ;; -- i*86:*:5:[78]*) -+ 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 0 ;; -+ 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|egrep Release|sed -e 's/.*= //')` -- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 -- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ -+ 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|egrep '^Machine.*Pent ?II' >/dev/null) \ -+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 -- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ -+ (/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 0 ;; -- i*86:*DOS:*:*) -- echo ${UNAME_MACHINE}-pc-msdosdjgpp -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 -- exit 0 ;; -+ exit ;; - paragon:*:*:*) - echo i860-intel-osf1 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv -- exit 0 ;; -- M68*:*:R3V[567]*:*) -- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; -- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) -+ 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 0 -+ && { 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 0 ;; -+ && { 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 0 ;; -+ && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 -- exit 0 ;; -- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) -- echo i386-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 -- exit 0 ;; -+ exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 -- exit 0 ;; -+ exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` -@@ -1001,82 +1172,107 @@ - else - echo ns32k-sni-sysv - fi -- exit 0 ;; -+ exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 -- exit 0 ;; -+ exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 -- exit 0 ;; -+ exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos -- exit 0 ;; -+ exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos -- exit 0 ;; -+ exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos -- exit 0 ;; -+ exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} -- exit 0 ;; -+ 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 0 ;; -+ exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Darwin:*:*) -- echo `uname -p`-apple-darwin${UNAME_RELEASE} -- exit 0 ;; -+ 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]*:*) -- if test "${UNAME_MACHINE}" = "x86pc"; then -+ UNAME_PROCESSOR=`uname -p` -+ if test "$UNAME_PROCESSOR" = "x86"; then -+ UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi -- echo `uname -p`-${UNAME_MACHINE}-nto-qnx -- exit 0 ;; -+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -+ exit ;; - *:QNX:*:4*) - echo i386-pc-qnx -- exit 0 ;; -- NSR-[KW]:NONSTOP_KERNEL:*:*) -+ exit ;; -+ NSE-?:NONSTOP_KERNEL:*:*) -+ echo nse-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux -- exit 0 ;; -+ exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv -- exit 0 ;; -+ exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -- exit 0 ;; -+ exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 -@@ -1087,36 +1283,47 @@ - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 -- exit 0 ;; -- 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 0 ;; -+ exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 -- exit 0 ;; -+ exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex -- exit 0 ;; -+ exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 -- exit 0 ;; -+ exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 -- exit 0 ;; -+ exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 -- exit 0 ;; -+ exit ;; - *:ITS:*:*) - echo pdp10-unknown-its -- exit 0 ;; -- i*86:XTS-300:*:STOP) -- echo ${UNAME_MACHINE}-unknown-stop -- exit 0 ;; -- i*86:atheos:*:*) -- echo ${UNAME_MACHINE}-unknown-atheos -- exit 0 ;; -+ 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 -@@ -1148,7 +1355,7 @@ - #endif - - #if defined (__arm) && defined (__acorn) && defined (__unix) -- printf ("arm-acorn-riscix"); exit (0); -+ printf ("arm-acorn-riscix\n"); exit (0); - #endif - - #if defined (hp300) && !defined (hpux) -@@ -1237,12 +1444,12 @@ - } - EOF - --$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 --rm -f $dummy.c $dummy -+$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 0; } -+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - - # Convex versions that predate uname can use getsysinfo(1) - -@@ -1251,22 +1458,22 @@ - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd -- exit 0 ;; -+ exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit 0 ;; -+ exit ;; - c34*) - echo c34-convex-bsd -- exit 0 ;; -+ exit ;; - c38*) - echo c38-convex-bsd -- exit 0 ;; -+ exit ;; - c4*) - echo c4-convex-bsd -- exit 0 ;; -+ exit ;; - esac - fi - -@@ -1277,7 +1484,9 @@ - the operating system you are using. It is advised that you - download the most up to date version of the config scripts from - -- ftp://ftp.gnu.org/pub/gnu/config/ -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -+and -+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - - If the version you run ($0) is already up to date, please - send the following data and any information you think might be ---- gsmlib-1.10.orig/scripts/ltmain.sh -+++ gsmlib-1.10/scripts/ltmain.sh -@@ -1,7 +1,7 @@ - # 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 -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 - # Free Software Foundation, Inc. - # Originally by Gordon Matzigkeit , 1996 - # -@@ -17,13 +17,41 @@ - # - # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# 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.20 Debian 1.5.20-2" -+TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" -+ -+# 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 -+ - # Check that we have a working $echo. - if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. -@@ -36,7 +64,7 @@ - : - else - # Restart under the correct shell, and then maybe $echo will work. -- exec $SHELL "$0" --no-reexec ${1+"$@"} -+ exec $SHELL "$progpath" --no-reexec ${1+"$@"} - fi - - if test "X$1" = X--fallback-echo; then -@@ -45,19 +73,9 @@ - cat <&2 -- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -- exit 1 -+ $echo "$modename: not configured to build any kind of library" 1>&2 -+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -+ exit $EXIT_FAILURE - fi - - # Global variables. -@@ -105,8 +135,225 @@ - lo2o="s/\\.lo\$/.${objext}/" - o2lo="s/\\.${objext}\$/.lo/" - -+##################################### -+# Shell function definitions: -+# This seems to be the best place for them -+ -+# 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 /{x;/import/!{s/^/import/;h;p;};x;};}'` -+ if test "X$win32_nmres" = "Ximport" ; then -+ win32_libid_type="x86 archive import" -+ else -+ win32_libid_type="x86 archive static" -+ fi -+ 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_xdir="$my_gentop/$my_xlib" -+ -+ $show "${rm}r $my_xdir" -+ $run ${rm}r "$my_xdir" -+ $show "$mkdir $my_xdir" -+ $run $mkdir "$my_xdir" -+ status=$? -+ if test "$status" -ne 0 && test ! -d "$my_xdir"; then -+ 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\" -+ - # Parse our command line options once, thoroughly. --while test $# -gt 0 -+while test "$#" -gt 0 - do - arg="$1" - shift -@@ -122,6 +369,34 @@ - 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" - ;; -@@ -139,18 +414,27 @@ - ;; - - --version) -- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" -- exit 0 -+ $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' $0 -- exit 0 -+ ${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" -+ $echo "$progname: enabling shell trace mode" - set -x -+ preserve_args="$preserve_args $arg" - ;; - - --dry-run | -n) -@@ -158,18 +442,18 @@ - ;; - - --features) -- echo "host: $host" -+ $echo "host: $host" - if test "$build_libtool_libs" = yes; then -- echo "enable shared libraries" -+ $echo "enable shared libraries" - else -- echo "disable shared libraries" -+ $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then -- echo "enable static libraries" -+ $echo "enable static libraries" - else -- echo "disable static libraries" -+ $echo "disable static libraries" - fi -- exit 0 -+ exit $? - ;; - - --finish) mode="finish" ;; -@@ -181,6 +465,15 @@ - - --quiet | --silent) - show=: -+ preserve_args="$preserve_args $arg" -+ ;; -+ -+ --tag) prevopt="--tag" prev=tag ;; -+ --tag=*) -+ set tag "$optarg" ${1+"$@"} -+ shift -+ prev=tag -+ preserve_args="$preserve_args --tag" - ;; - - -dlopen) -@@ -191,7 +484,7 @@ - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - - *) -@@ -204,7 +497,7 @@ - if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # If this variable is set in any of the actions, the command in it -@@ -216,8 +509,10 @@ - - # 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 | *++ | gcc* | *-gcc*) -+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do -@@ -258,7 +553,7 @@ - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. -@@ -272,158 +567,127 @@ - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= -- prev= -- lastarg= -- srcfile="$nonopt" -+ srcfile="$nonopt" # always keep a non-empty value in "srcfile" -+ suppress_opt=yes - suppress_output= -+ arg_mode=normal -+ libobj= -+ later= - -- user_target=no - for arg - do -- case $prev in -- "") ;; -- xcompiler) -- # Aesthetically quote the previous argument. -- prev= -- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -- -- case $arg in -- # Double-quote args containing other shell metacharacters. -- # Many Bourne shells cannot handle close brackets correctly -- # in scan sets, so we specify it separately. -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -- arg="\"$arg\"" -- ;; -- esac -- -- # Add the previous argument to base_compile. -- if test -z "$base_compile"; then -- base_compile="$lastarg" -- else -- base_compile="$base_compile $lastarg" -- fi -- continue -+ case $arg_mode in -+ arg ) -+ # do not "continue". Instead, add this to base_compile -+ lastarg="$arg" -+ arg_mode=normal - ;; -- esac - -- # Accept any command-line options. -- case $arg in -- -o) -- if test "$user_target" != "no"; then -- $echo "$modename: you cannot specify \`-o' more than once" 1>&2 -- exit 1 -- fi -- user_target=next -- ;; -- -- -static) -- build_old_libs=yes -+ target ) -+ libobj="$arg" -+ arg_mode=normal - continue - ;; - -- -prefer-pic) -- pic_mode=yes -- 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 -+ ;; - -- -prefer-non-pic) -- pic_mode=no -- continue -- ;; -+ -static | -prefer-pic | -prefer-non-pic) -+ later="$later $arg" -+ continue -+ ;; - -- -Xcompiler) -- prev=xcompiler -- continue -- ;; -+ -no-suppress) -+ suppress_opt=no -+ continue -+ ;; - -- -Wc,*) -- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` -- lastarg= -- save_ifs="$IFS"; IFS=',' -- for arg in $args; do -- IFS="$save_ifs" -+ -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/^ //"` -+ # 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. -- if test -z "$base_compile"; then -- base_compile="$lastarg" -- else -+ # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" -- fi -- continue -- ;; -- esac -+ continue -+ ;; - -- case $user_target in -- next) -- # The next one is the -o target name -- user_target=yes -- continue -- ;; -- yes) -- # We got the output file -- user_target=set -- libobj="$arg" -- continue -+ * ) -+ # Accept the current argument as the source file. -+ # The previous "srcfile" becomes the current argument. -+ # -+ lastarg="$srcfile" -+ srcfile="$arg" -+ ;; -+ esac # case $arg - ;; -- esac -- -- # Accept the current argument as the source file. -- lastarg="$srcfile" -- srcfile="$arg" -+ esac # case $arg_mode - - # Aesthetically quote the previous argument. -- -- # Backslashify any backslashes, double quotes, and dollar signs. -- # These are the only characters that are still specially -- # interpreted inside of double-quoted scrings. - 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, so we specify it separately. -- case $lastarg in -+ # 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 - -- # Add the previous argument to base_compile. -- if test -z "$base_compile"; then -- base_compile="$lastarg" -- else -- base_compile="$base_compile $lastarg" -- fi -- done -+ base_compile="$base_compile $lastarg" -+ done # for arg - -- case $user_target in -- set) -+ case $arg_mode in -+ arg) -+ $echo "$modename: you must specify an argument for -Xcompile" -+ exit $EXIT_FAILURE - ;; -- no) -- # Get the name of the library object. -- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` -+ target) -+ $echo "$modename: you must specify a target with \`-o'" 1>&2 -+ exit $EXIT_FAILURE - ;; - *) -- $echo "$modename: you must specify a target with \`-o'" 1>&2 -- exit 1 -+ # 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='[cCFSfmso]' -+ xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; -@@ -431,10 +695,13 @@ - *.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 ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` -@@ -443,25 +710,63 @@ - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 -- exit 1 -+ 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 1 -+ exit $EXIT_FAILURE - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then -- removelist="$obj $libobj" -+ removelist="$obj $lobj $libobj ${libobj}T" - else -- removelist="$libobj" -+ removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist -- trap "$run $rm $removelist; exit 1" 1 2 15 -+ 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 -@@ -480,8 +785,9 @@ - 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 1" 1 2 15 -+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - else -+ output_obj= - need_locks=no - lockfile= - fi -@@ -489,13 +795,13 @@ - # 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 "$0" "$lockfile" 2>/dev/null; do -+ 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 "\ -+ $echo "\ - *** ERROR, $lockfile exists and contains: - `cat $lockfile 2>/dev/null` - -@@ -507,14 +813,33 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi -- echo $srcfile > "$lockfile" -+ $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 "\ -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $echo "\ - *** ERROR, $lockfile contains: - `cat $lockfile 2>/dev/null` - -@@ -583,13 +893,13 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one -- if test x"$output_obj" != x"$libobj"; then -- $show "$mv $output_obj $libobj" -- if $run $mv $output_obj $libobj; then : -+ 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 -@@ -597,77 +907,50 @@ - fi - fi - -- # If we have no pic_flag, then copy the object into place and finish. -- if (test -z "$pic_flag" || test "$pic_mode" != default) && -- test "$build_old_libs" = yes; then -- # Rename the .lo from within objdir to obj -- if test -f $obj; then -- $show $rm $obj -- $run $rm $obj -- 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 "\ -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $echo "\ - *** ERROR, $lockfile contains: - `cat $lockfile 2>/dev/null` - -@@ -682,11 +965,11 @@ - compiler." - - $run $rm $removelist -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Just move the object if needed -- if test x"$output_obj" != x"$obj"; then -+ 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 -@@ -696,29 +979,31 @@ - fi - fi - -- # Create an invalid libtool object if no PIC, so that we do not -- # accidentally link it into a program. -- if test "$build_libtool_libs" != yes; then -- $show "echo timestamp > $libobj" -- $run eval "echo timestamp > \$libobj" || exit $? -- else -- # Move the .lo from within objdir -- $show "$mv $libobj $lo_libobj" -- if $run $mv $libobj $lo_libobj; 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 </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 -+ 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 1 -+ exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then -@@ -938,13 +1341,33 @@ - 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) -+ 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 -+ fi # test -n "$prev" - - prevarg="$arg" - -@@ -986,7 +1409,7 @@ - -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 1 -+ exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms -@@ -996,6 +1419,14 @@ - continue - ;; - -+ -framework|-arch) -+ prev=darwin_framework -+ compiler_flags="$compiler_flags $arg" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ continue -+ ;; -+ - -inst-prefix-dir) - prev=inst_prefix - continue -@@ -1005,7 +1436,7 @@ - # 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*) -+ no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; -@@ -1022,7 +1453,7 @@ - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - dir="$absdir" - ;; -@@ -1056,25 +1487,75 @@ - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; -- *-*-openbsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; -- esac -- elif test "X$arg" = "X-lc_r"; then -- case $host in -- *-*-openbsd*) -- # Do not include libc_r directly, use -pthread flag. -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C and math libraries are in the System framework -+ deplibs="$deplibs -framework System" - 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 - ;; - -- -module) -- module=yes -+ # 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 -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) -+ -+ # 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" -+ if test "$with_gcc" = "yes" ; then -+ compiler_flags="$compiler_flags $arg" -+ fi -+ continue -+ ;; -+ -+ -shrext) -+ prev=shrext - continue - ;; - -@@ -1102,8 +1583,18 @@ - continue - ;; - -+ -objectlist) -+ prev=objectlist -+ continue -+ ;; -+ - -o) prev=output ;; - -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ - -release) - prev=release - continue -@@ -1126,7 +1617,7 @@ - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in -@@ -1154,6 +1645,11 @@ - prev=vinfo - continue - ;; -+ -version-number) -+ prev=vinfo -+ vinfo_number=yes -+ continue -+ ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` -@@ -1202,6 +1698,11 @@ - continue - ;; - -+ -XCClinker) -+ prev=xcclinker -+ continue -+ ;; -+ - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need -@@ -1214,29 +1715,101 @@ - esac - ;; - -- *.lo | *.$objext) -- # A library or standard object. -- if test "$prev" = dlfiles; then -- # This file was specified with -dlopen. -- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -- dlfiles="$dlfiles $arg" -- prev= -- continue -- else -- # If libtool objects are unsupported, then we need to preload. -- prev=dlprefiles -- fi -- fi -+ *.$objext) -+ # A standard object. -+ objs="$objs $arg" -+ ;; - -- if test "$prev" = dlprefiles; then -- # Preload the old-style object. -- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` -- prev= -- else -+ *.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 -- *.lo) libobjs="$libobjs $arg" ;; -- *) objs="$objs $arg" ;; -+ */* | *\\*) . $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 -+ 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 - ;; - -@@ -1287,7 +1860,7 @@ - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -@@ -1296,6 +1869,7 @@ - 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" -@@ -1330,7 +1904,7 @@ - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; -@@ -1338,7 +1912,17 @@ - *) 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) -@@ -1358,7 +1942,7 @@ - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= -- if test "X$duplicate_deps" = "Xyes" ; then -+ 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" ;; -@@ -1383,7 +1967,7 @@ - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - done -@@ -1400,39 +1984,58 @@ - ;; - 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 -- # Determine which files to process - case $pass in -- dlopen) -- libs="$dlfiles" -- save_deplibs="$deplibs" # Collect dlpreopened libraries -- deplibs= -- ;; -+ dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; -- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; -+ link) -+ libs="$deplibs %DEPLIBS%" -+ test "X$link_all_deplibs" != Xno && libs="$libs $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 -- -l*) -- if test "$linkmode" = oldlib && test "$linkmode" = obj; then -- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 -- continue -+ -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 -- if test "$pass" = conv; then -- deplibs="$deplib $deplibs" -+ 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 -- # Search the libtool library -- lib="$searchdir/lib${name}.la" -- if test -f "$lib"; then -- found=yes -- break -- fi -+ 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 -@@ -1444,6 +2047,42 @@ - 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*) -@@ -1461,14 +2100,14 @@ - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" -- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - 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: $deplib" 1>&2 -+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue -@@ -1493,16 +2132,33 @@ - fi - case $linkmode in - lib) -- if test "$deplibs_check_method" != pass_all; then -- echo -- echo "*** Warning: This library needs some functionality provided by $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." -+ 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!" -+ $echo -+ $echo "*** Warning: Linking the shared library $output against the" -+ $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue -@@ -1519,14 +2175,18 @@ - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) -- 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" -+ 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 - ;; -@@ -1538,14 +2198,14 @@ - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Check to see that this really is a libtool archive. -- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ 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 1 -+ exit $EXIT_FAILURE - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` -@@ -1558,8 +2218,11 @@ - library_names= - old_library= - # If the library was installed with an old release of libtool, -- # it will not redefine variable installed. -+ # it will not redefine variables installed, or shouldnotlink - installed=yes -+ shouldnotlink=no -+ avoidtemprpath= -+ - - # Read the .la file - case $lib in -@@ -1569,8 +2232,7 @@ - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || -- { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then -- # Add dl[pre]opened files of deplib -+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi -@@ -1581,7 +2243,7 @@ - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" -@@ -1598,11 +2260,12 @@ - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 -- exit 1 -+ 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 -@@ -1610,19 +2273,23 @@ - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -- exit 1 -+ 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 1 -+ exit $EXIT_FAILURE - fi -- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ 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. -- dlprefiles="$dlprefiles $lib" -+ # 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 -@@ -1654,11 +2321,19 @@ - dir="$libdir" - absdir="$libdir" - fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else -- dir="$ladir/$objdir" -- absdir="$abs_ladir/$objdir" -- # Remove this search path later -- notinst_path="$notinst_path $abs_ladir" -+ 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//'` - -@@ -1666,7 +2341,7 @@ - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). -@@ -1688,11 +2363,12 @@ - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else -- deplibs="$lib $deplibs" -+ 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" -@@ -1726,13 +2402,19 @@ - continue - fi # $linkmode = prog... - -- link_static=no # Whether the deplib will be linked statically -- if test -n "$library_names" && -- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then -- # Link against this shared library -+ if test "$linkmode,$pass" = "prog,link"; then -+ if test -n "$library_names" && -+ { test "$prefer_static_libs" = no || 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 - -- if test "$linkmode,$pass" = "prog,link" || -- { 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. -@@ -1754,17 +2436,6 @@ - esac - ;; - esac -- if test "$linkmode" = prog; then -- # We need to hardcode the library path -- if test -n "$shlibpath_var"; then -- # Make sure the rpath contains only unique directories. -- case "$temp_rpath " in -- *" $dir "*) ;; -- *" $absdir "*) ;; -- *) temp_rpath="$temp_rpath $dir" ;; -- esac -- fi -- fi - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && -@@ -1774,11 +2445,52 @@ - # We only need to search for static libraries - continue - fi -+ fi - -+ link_static=no # Whether the deplib will be linked statically -+ if test -n "$library_names" && -+ { test "$prefer_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 -@@ -1792,7 +2504,7 @@ - elif test -n "$soname_spec"; then - # bleh windows - case $host in -- *cygwin*) -+ *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; -@@ -1804,17 +2516,18 @@ - - # 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" -+ 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='~' -- eval cmds=\"$extract_expsyms_cmds\" -+ cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -1825,9 +2538,10 @@ - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' -- eval cmds=\"$old_archive_from_expsyms_cmds\" -+ cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done -@@ -1847,6 +2561,22 @@ - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" -+ case $host in -+ *-*-sco3.2v5* ) 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" ;; -@@ -1865,6 +2595,14 @@ - 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" -@@ -1878,7 +2616,7 @@ - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$add_shlibpath"; then -@@ -1912,16 +2650,7 @@ - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then -- # Try looking first in the location we're being installed to. -- add_dir= -- if test -n "$inst_prefix_dir"; then -- case "$libdir" in -- [\\/]*) -- add_dir="-L$inst_prefix_dir$libdir" -- ;; -- esac -- fi -- add_dir="$add_dir -L$libdir" -+ add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in -@@ -1929,18 +2658,24 @@ - *) 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. -- add_dir= - if test -n "$inst_prefix_dir"; then -- case "$libdir" in -- [\\/]*) -- add_dir="-L$inst_prefix_dir$libdir" -- ;; -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; - esac - fi -- add_dir="$add_dir -L$libdir" - add="-l$name" - fi - -@@ -1953,15 +2688,6 @@ - fi - fi - elif test "$linkmode" = prog; then -- 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 -- -- # Try to link the static library - # 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. -@@ -1981,20 +2707,21 @@ - - # 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 library needs some functionality provided by $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." -+ $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 "*** Therefore, libtool will create a static module, that should work " -- echo "*** as long as the dlopening application is linked with the -dlopen flag." -+ $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." -+ $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 -@@ -2004,8 +2731,6 @@ - fi - fi - else -- convenience="$convenience $dir/$old_library" -- old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi -@@ -2013,7 +2738,8 @@ - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && -- { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= -@@ -2065,29 +2791,75 @@ - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then -- path="-L$absdir/$objdir" -+ path="$absdir/$objdir" - else -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ 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 1 -+ exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi -- path="-L$absdir" -+ 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="$deplibs $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 -@@ -2095,7 +2867,6 @@ - done - fi - if test "$pass" != dlopen; then -- test "$pass" != scan && dependency_libs="$newdependency_libs" - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= -@@ -2118,9 +2889,30 @@ - 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" ;; - *) -@@ -2148,11 +2940,20 @@ - eval $var=\"$tmp_libs\" - done # for var - fi -- if test "$pass" = "conv" && -- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then -- libs="$deplibs" # reset libs -- deplibs= -- 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" -@@ -2161,6 +2962,10 @@ - - 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 -@@ -2174,7 +2979,7 @@ - fi - - if test -n "$vinfo"; then -- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 -+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then -@@ -2196,17 +3001,19 @@ - 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 1 -+ 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$//'` -@@ -2217,11 +3024,11 @@ - 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 1 -+ exit $EXIT_FAILURE - else -- echo -- echo "*** Warning: Linking the shared library $output against the non-libtool" -- echo "*** objects $objs is not portable!" -+ $echo -+ $echo "*** Warning: Linking the shared library $output against the non-libtool" -+ $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi -@@ -2240,14 +3047,16 @@ - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. -- libext=al -+ # 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' is ignored for convenience libraries" 1>&2 -+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then -@@ -2263,45 +3072,87 @@ - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - -- current="$2" -- revision="$3" -- age="$4" -+ # 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) -+ 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" -+ ;; -+ *) -+ $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 -+ ;; -+ no) -+ current="$2" -+ revision="$3" -+ age="$4" -+ ;; -+ esac - - # Check that each of the things are valid numbers. - case $current in -- [0-9]*) ;; -+ 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' is not a nonnegative integer" 1>&2 -+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - case $revision in -- [0-9]*) ;; -+ 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' is not a nonnegative integer" 1>&2 -+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - case $age in -- [0-9]*) ;; -+ 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' is not a nonnegative integer" 1>&2 -+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -- exit 1 -+ 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 1 -+ exit $EXIT_FAILURE - fi - - # Calculate the version variables. -@@ -2318,7 +3169,7 @@ - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` -- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" -+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - ;; - - freebsd-aout) -@@ -2331,16 +3182,21 @@ - versuffix=".$current"; - ;; - -- irix) -+ irix | nonstopux) - major=`expr $current - $age + 1` -- verstring="sgi$major.$revision" -+ -+ 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="sgi$major.$iface:$verstring" -+ verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. -@@ -2354,7 +3210,7 @@ - ;; - - osf) -- major=`expr $current - $age` -+ major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - -@@ -2384,20 +3240,19 @@ - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 -- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -- exit 1 -+ $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= -- verstring="0.0" - 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= - ;; - *) - verstring="0.0" -@@ -2431,9 +3286,30 @@ - fi - - if test "$mode" != relink; then -- # Remove our outputs. -- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" -- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* -+ # 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. -@@ -2446,9 +3322,9 @@ - - # 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'` -+ 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 -@@ -2499,10 +3375,11 @@ - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; -- *-*-openbsd*) -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. -+ test "X$arg" = "X-lc" && continue - ;; -- *) -+ *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" -@@ -2531,7 +3408,7 @@ - # 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 behaviour. -+ # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) -@@ -2544,64 +3421,88 @@ - int main() { return 0; } - EOF - $rm conftest -- $CC -o conftest conftest.c $deplibs -+ $LTCC -o conftest conftest.c $deplibs - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` - for i in $deplibs; do -- name="`expr $i : '-l\(.*\)'`" -+ name=`expr $i : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. -- if test -n "$name" && test "$name" != "0"; then -- libname=`eval \\$echo \"$libname_spec\"` -- deplib_matches=`eval \\$echo \"$library_names_spec\"` -- set dummy $deplib_matches -- deplib_match=$2 -- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -- newdeplibs="$newdeplibs $i" -- else -- droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $i." -- 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 "$name" != "" && test "$name" -ne "0"; then -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $i "*) -+ newdeplibs="$newdeplibs $i" -+ i="" -+ ;; -+ esac -+ fi -+ if test -n "$i" ; then -+ libname=`eval \\$echo \"$libname_spec\"` -+ deplib_matches=`eval \\$echo \"$library_names_spec\"` -+ set dummy $deplib_matches -+ deplib_match=$2 -+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -+ newdeplibs="$newdeplibs $i" -+ else -+ droppeddeps=yes -+ $echo -+ $echo "*** Warning: dynamic linker does not accept needed library $i." -+ $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 I believe you do not have" -+ $echo "*** because a test_compile did reveal that the linker did not use it for" -+ $echo "*** its dynamic dependency list that programs get resolved with at runtime." -+ fi - fi - else - newdeplibs="$newdeplibs $i" - fi - done - else -- # Error occured in the first compile. Let's try to salvage the situation: -- # Compile a seperate program for each library. -+ # Error occurred in the first compile. Let's try to salvage -+ # the situation: Compile a separate program for each library. - for i in $deplibs; do -- name="`expr $i : '-l\(.*\)'`" -- # If $name is empty we are operating on a -L argument. -- if test -n "$name" && test "$name" != "0"; then -+ name=`expr $i : '-l\(.*\)'` -+ # If $name is empty we are operating on a -L argument. -+ if test "$name" != "" && test "$name" != "0"; then - $rm conftest -- $CC -o conftest conftest.c $i -+ $LTCC -o conftest conftest.c $i - # Did it work? - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` -- libname=`eval \\$echo \"$libname_spec\"` -- deplib_matches=`eval \\$echo \"$library_names_spec\"` -- set dummy $deplib_matches -- deplib_match=$2 -- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -- newdeplibs="$newdeplibs $i" -- else -- droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $i." -- 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $i "*) -+ newdeplibs="$newdeplibs $i" -+ i="" -+ ;; -+ esac -+ fi -+ if test -n "$i" ; then -+ libname=`eval \\$echo \"$libname_spec\"` -+ deplib_matches=`eval \\$echo \"$library_names_spec\"` -+ set dummy $deplib_matches -+ deplib_match=$2 -+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then -+ newdeplibs="$newdeplibs $i" -+ else -+ droppeddeps=yes -+ $echo -+ $echo "*** Warning: dynamic linker does not accept needed library $i." -+ $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 a test_compile did reveal that the linker did not use this one" -+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime." -+ fi - fi - else - droppeddeps=yes -- echo -- echo "*** Warning! Library $i is needed by this library but I was not able to" -- echo "*** make it link in! You will probably need to install it or some" -- echo "*** library that it depends on before this library will be fully" -- echo "*** functional. Installing it before continuing would be even better." -+ $echo -+ $echo "*** Warning! Library $i is needed by this library but I was not able to" -+ $echo "*** make it link in! You will probably need to install it or some" -+ $echo "*** library that it depends on before this library will be fully" -+ $echo "*** functional. Installing it before continuing would be even better." - fi - else - newdeplibs="$newdeplibs $i" -@@ -2613,13 +3514,22 @@ - set dummy $deplibs_check_method - file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do -- name="`expr $a_deplib : '-l\(.*\)'`" -+ name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. -- if test -n "$name" && test "$name" != "0"; 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 -+ if test "$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 - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then -@@ -2632,28 +3542,36 @@ - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do -- potliblink=`ls -ld $potlib | sed 's/.* -> //'` -+ 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 -+ | ${SED} 10q \ -+ | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi -- done -- done -+ done -+ done -+ fi - if test -n "$a_deplib" ; then - droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $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 -+ $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. -@@ -2665,29 +3583,47 @@ - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do -- name="`expr $a_deplib : '-l\(.*\)'`" -+ name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; 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 -- 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 -+ 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 -- done -+ fi - if test -n "$a_deplib" ; then - droppeddeps=yes -- echo -- echo "*** Warning: This library needs some functionality provided by $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 -+ $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. -@@ -2697,16 +3633,23 @@ - ;; - none | unknown | *) - newdeplibs="" -- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | -- grep . >/dev/null; then -- echo -+ 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." -+ $echo "*** Warning: inter-library dependencies are not supported in this platform." - else -- echo "*** Warning: inter-library dependencies are not known to be supported." -+ $echo "*** Warning: inter-library dependencies are not known to be supported." - fi -- echo "*** All declared inter-library dependencies are being dropped." -+ $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; -@@ -2726,17 +3669,17 @@ - - 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." -+ $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." -+ $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" -@@ -2746,16 +3689,16 @@ - 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." -+ $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." -+ $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 -@@ -2813,7 +3756,11 @@ - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" -- eval dep_rpath=\"$hardcode_libdir_flag_spec\" -+ 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. -@@ -2833,6 +3780,7 @@ - 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" -@@ -2843,7 +3791,9 @@ - else - soname="$realname" - fi -- test -z "$dlname" && dlname=$soname -+ if test -z "$dlname"; then -+ dlname=$soname -+ fi - - lib="$output_objdir/$realname" - for link -@@ -2851,23 +3801,6 @@ - linknames="$linknames $link" - done - -- # Ensure that we have .o objects for linkers which dislike .lo -- # (e.g. aix) in case we are running --disable-static -- for obj in $libobjs; do -- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` -- if test "X$xdir" = "X$obj"; then -- xdir="." -- else -- xdir="$xdir" -- fi -- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` -- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` -- if test ! -f $xdir/$oldobj; then -- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" -- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? -- fi -- done -- - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - -@@ -2877,17 +3810,29 @@ - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols -- eval cmds=\"$export_symbols_cmds\" -+ cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -- $show "$cmd" -- $run eval "$cmd" || exit $? -+ 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 "$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 -@@ -2898,46 +3843,30 @@ - $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" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "mkdir $gentop" -- $run mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- for xlib in $convenience; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "mkdir $xdir" -- $run mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- -- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` -- done -+ 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" -@@ -2949,23 +3878,175 @@ - 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 cmds=\"$archive_expsym_cmds\" -+ 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 -- eval cmds=\"$archive_cmds\" -+ # 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" || exit $? -+ $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 $? -- exit 0 -+ -+ 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. -@@ -3013,7 +4094,7 @@ - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` -@@ -3042,38 +4123,10 @@ - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "mkdir $gentop" -- $run mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- for xlib in $convenience; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "mkdir $xdir" -- $run mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- -- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` -- done -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - -@@ -3081,10 +4134,11 @@ - 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" -- eval cmds=\"$reload_cmds\" -+ 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 -@@ -3097,7 +4151,7 @@ - $run ${rm}r $gentop - fi - -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then -@@ -3108,37 +4162,24 @@ - - # 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 0 -+ # $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" -- eval cmds=\"$reload_cmds\" -+ 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" -- else -- # Just create a symlink. -- $show $rm $libobj -- $run $rm $libobj -- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` -- if test "X$xdir" = "X$libobj"; then -- xdir="." -- else -- xdir="$xdir" -- fi -- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` -- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` -- $show "(cd $xdir && $LN_S $oldobj $baseobj)" -- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? - fi - - if test -n "$gentop"; then -@@ -3146,12 +4187,12 @@ - $run ${rm}r $gentop - fi - -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - prog) - case $host in -- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; -+ *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 -@@ -3176,6 +4217,16 @@ - ;; - 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 -+ - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - -@@ -3326,31 +4377,31 @@ - done - - if test -n "$exclude_expsyms"; then -- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' -+ $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 '$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/$output.exp" -+ export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols -- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else -- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' -- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' -+ $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"' - 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"' -+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` -+ $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - -@@ -3359,12 +4410,18 @@ - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then -- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. -- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then -+ 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 -@@ -3373,7 +4430,7 @@ - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else -- echo '/* NONE */' >> "$output_objdir/$dlsyms" -+ $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ -@@ -3388,7 +4445,26 @@ - #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; - } -@@ -3425,18 +4501,18 @@ - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; -- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; -+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; -- *) pic_flag_for_symtable=" $pic_flag -DPIC";; -+ *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. -- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? -+ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -+ $run eval '(cd $output_objdir && $LTCC -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" -@@ -3448,7 +4524,7 @@ - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - else -@@ -3536,7 +4612,7 @@ - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? -- exit 0 -+ exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then -@@ -3591,10 +4667,10 @@ - fi - - # Quote $echo for shipping. -- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then -- case $0 in -- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; -- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; -+ 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 -@@ -3606,15 +4682,231 @@ - # 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$,,'` ;; -+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in -- *cygwin*) exeext=.exe ;; -+ *cygwin*) -+ exeext=.exe -+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac -+ case $host in -+ *cygwin* | *mingw* ) -+ cwrappersource=`$echo ${objdir}/lt-${outputname}.c` -+ cwrapper=`$echo ${output}.exe` -+ $rm $cwrappersource $cwrapper -+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 -+ -+ cat > $cwrappersource <> $cwrappersource<<"EOF" -+#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 '/' -+#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 -+#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 */ -+ -+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -+#define XFREE(stale) do { \ -+ if (stale) { free ((void *) stale); stale = 0; } \ -+} while (0) -+ -+const char *program_name = NULL; -+ -+void * xmalloc (size_t num); -+char * xstrdup (const char *string); -+char * basename (const char *name); -+char * fnqualify(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 ((char *) basename (argv[0])); -+ newargz = XMALLOC(char *, argc+2); -+EOF -+ -+ cat >> $cwrappersource <> $cwrappersource <<"EOF" -+ newargz[1] = fnqualify(argv[0]); -+ /* 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; -+EOF -+ -+ cat >> $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 -+; -+} -+ -+char * -+basename (const char *name) -+{ -+ const char *base; -+ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ /* Skip over the disk name in MSDOS pathnames. */ -+ if (isalpha (name[0]) && name[1] == ':') -+ name += 2; -+#endif -+ -+ for (base = name; *name; name++) -+ if (IS_DIR_SEPARATOR (*name)) -+ base = name + 1; -+ return (char *) base; -+} -+ -+char * -+fnqualify(const char *path) -+{ -+ size_t size; -+ char *p; -+ char tmp[LT_PATHMAX + 1]; -+ -+ assert(path != NULL); -+ -+ /* Is it qualified already? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha (path[0]) && path[1] == ':') -+ return xstrdup (path); -+#endif -+ if (IS_DIR_SEPARATOR (path[0])) -+ return xstrdup (path); -+ -+ /* prepend the current directory */ -+ /* doesn't handle '~' */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ -+ p = XMALLOC(char, size); -+ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); -+ return p; -+} -+ -+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 -s -o $cwrapper $cwrappersource -+ ;; -+ esac - $rm $output -- trap "$rm $output; exit 1" 1 2 15 -+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ - #! $SHELL -@@ -3630,12 +4922,12 @@ - - # Sed substitution that helps us do robust quoting. It backslashifies - # metacharacters that are still active within double-quoted strings. --Xsed='sed -e 1s/^X//' -+Xsed='${SED} -e 1s/^X//' - sed_quote_subst='$sed_quote_subst' - - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. --if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - relink_command=\"$relink_command\" - -@@ -3668,7 +4960,7 @@ - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. -- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` -+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - -@@ -3681,7 +4973,7 @@ - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. -@@ -3690,12 +4982,12 @@ - " - - if test "$fast_install" = yes; then -- echo >> $output "\ -+ $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\`; \\ -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" -@@ -3706,7 +4998,7 @@ - $rm \"\$progdir/\$file\" - fi" - -- echo >> $output "\ -+ $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then -@@ -3714,7 +5006,7 @@ - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - -@@ -3724,13 +5016,13 @@ - $rm \"\$progdir/\$file\" - fi" - else -- echo >> $output "\ -+ $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" - " - fi - -- echo >> $output "\ -+ $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - -@@ -3761,47 +5053,35 @@ - # Run the actual program with our arguments. - " - case $host in -- # win32 systems need to use the prog path for dll -- # lookup to work -- *-*-cygwin* | *-*-pw32*) -- $echo >> $output "\ -- exec \$progdir/\$program \${1+\"\$@\"} --" -- ;; -- - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ -- exec \$progdir\\\\\$program \${1+\"\$@\"} -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} - " - ;; - - *) - $echo >> $output "\ -- # Export the path to the program. -- PATH=\"\$progdir:\$PATH\" -- export PATH -- -- exec \$program \${1+\"\$@\"} -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} - " - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" -- exit 1 -+ exit $EXIT_FAILURE - fi - else - # The program doesn't exist. -- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 -+ \$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 1 -+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit $EXIT_FAILURE - fi - fi\ - " - chmod +x $output - fi -- exit 0 -+ exit $EXIT_SUCCESS - ;; - esac - -@@ -3817,74 +5097,130 @@ - oldobjs="$libobjs_save" - build_libtool_libs=no - else -- oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` -+ oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" -- $show "${rm}r $gentop" -- $run ${rm}r "$gentop" -- $show "mkdir $gentop" -- $run mkdir "$gentop" -- status=$? -- if test "$status" -ne 0 && test ! -d "$gentop"; then -- exit $status -- fi - generated="$generated $gentop" - -- # Add in members from convenience archives. -- for xlib in $addlibs; do -- # Extract the objects. -- case $xlib in -- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; -- *) xabs=`pwd`"/$xlib" ;; -- esac -- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` -- xdir="$gentop/$xlib" -- -- $show "${rm}r $xdir" -- $run ${rm}r "$xdir" -- $show "mkdir $xdir" -- $run mkdir "$xdir" -- status=$? -- if test "$status" -ne 0 && test ! -d "$xdir"; then -- exit $status -- fi -- $show "(cd $xdir && $AR x $xabs)" -- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? -- -- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` -- done -+ 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 -- eval cmds=\"$old_archive_from_new_cmds\" -+ cmds=$old_archive_from_new_cmds - else -- # Ensure that we have .o objects in place in case we decided -- # not to build a shared library, and have fallen back to building -- # static libs even though --disable-static was passed! -- for oldobj in $oldobjs; do -- if test ! -f $oldobj; then -- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` -- if test "X$xdir" = "X$oldobj"; then -- xdir="." -- else -- xdir="$xdir" -+ # 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" -+ status=$? -+ if test "$status" -ne 0 && test ! -d "$gentop"; then -+ exit $status - fi -- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` -- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` -- $show "(cd $xdir && ${LN_S} $obj $baseobj)" -- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? - fi -- done -+ -+ 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 $? -@@ -3916,8 +5252,12 @@ - fi - done - # Quote the link command for shipping. -- relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ if test "$hardcode_automatic" = yes ; then -+ relink_command= -+ fi -+ - - # Only create the output if not a dry run. - if test -z "$run"; then -@@ -3933,10 +5273,10 @@ - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ 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 1 -+ exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; -@@ -3947,10 +5287,10 @@ - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ 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 1 -+ exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done -@@ -3958,20 +5298,39 @@ - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ 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 1 -+ 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) tdlname=../bin/$dlname ;; -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ - # $outputname - a libtool library file -@@ -4000,6 +5359,9 @@ - # 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' -@@ -4019,7 +5381,7 @@ - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - # libtool install mode -@@ -4030,11 +5392,11 @@ - # 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" | $Xsed | grep shtool > /dev/null; then -+ $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 -@@ -4043,14 +5405,14 @@ - shift - else - install_prog= -- arg="$nonopt" -+ 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 -@@ -4068,28 +5430,31 @@ - do - if test -n "$dest"; then - files="$files $dest" -- dest="$arg" -+ dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; -- -f) prev="-f" ;; -- -g) prev="-g" ;; -- -m) prev="-m" ;; -- -o) prev="-o" ;; -+ -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" -+ dest=$arg - continue - fi - ;; -@@ -4098,7 +5463,7 @@ - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in -- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac -@@ -4108,13 +5473,13 @@ - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - if test -z "$files"; then -@@ -4124,7 +5489,7 @@ - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. -@@ -4145,7 +5510,7 @@ - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - case $destdir in -@@ -4157,7 +5522,7 @@ - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - done -@@ -4182,11 +5547,11 @@ - - *.la) - # Check to see that this really is a libtool archive. -- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ 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 1 -+ exit $EXIT_FAILURE - fi - - library_names= -@@ -4218,21 +5583,24 @@ - - 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\$%%"` -+ 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 1 -+ 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" | sed "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else -- relink_command=`$echo "$relink_command" | sed "s%@inst_prefix_dir@%%"` -+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 -@@ -4240,7 +5608,7 @@ - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi - -@@ -4264,23 +5632,36 @@ - - 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 && $rm $linkname && $LN_S $realname $linkname)" -- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" -+ $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" -- eval cmds=\"$postinstall_cmds\" -+ cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" -+ eval cmd=\"$cmd\" - $show "$cmd" -- $run eval "$cmd" || exit $? -+ $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 -@@ -4318,7 +5699,7 @@ - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - -@@ -4336,7 +5717,7 @@ - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi -- exit 0 -+ exit $EXIT_SUCCESS - ;; - - *) -@@ -4348,21 +5729,47 @@ - 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. -- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ 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 $file in -- */* | *\\*) . $file ;; -- *) . ./$file ;; -+ 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 \`$file'" 1>&2 -- exit 1 -+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 -+ exit $EXIT_FAILURE - fi - - finalize=yes -@@ -4384,10 +5791,15 @@ - 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 $file in -- */* | *\\*) . $file ;; -- *) . ./$file ;; -+ case $wrapper in -+ */* | *\\*) . ${wrapper} ;; -+ *) . ./${wrapper} ;; - esac - - outputname= -@@ -4395,17 +5807,17 @@ - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" -- tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` -- if test $? = 0 ; then : -- else -- tmpdir="$tmpdir/libtool-$$" -- fi -- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : -+ tmpdir="$tmpdir/libtool-$$" -+ save_umask=`umask` -+ umask 0077 -+ if $mkdir "$tmpdir"; then -+ umask $save_umask - else -+ umask $save_umask - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi -- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` -@@ -4423,14 +5835,14 @@ - fi - else - # Install the binary that we compiled earlier. -- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` -+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another -- # one anyways -+ # one anyway - case $install_prog,$host in -- /usr/bin/install*,*cygwin*) -+ */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok -@@ -4439,7 +5851,7 @@ - destfile=$destfile.exe - ;; - *:*.exe) -- destfile=`echo $destfile | sed -e 's,.exe$,,'` -+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; -@@ -4460,16 +5872,17 @@ - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - -- if test -n "$stripme" && test -n "$striplib"; then -+ 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. -- eval cmds=\"$old_postinstall_cmds\" -+ 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 -@@ -4483,9 +5896,9 @@ - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" -- exec_cmd='$SHELL $0 --finish$current_libdirs' -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else -- exit 0 -+ exit $EXIT_SUCCESS - fi - ;; - -@@ -4504,10 +5917,11 @@ - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. -- eval cmds=\"$finish_cmds\" -+ 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" -@@ -4524,43 +5938,43 @@ - fi - - # Exit here if they wanted silent mode. -- test "$show" = : && exit 0 -+ test "$show" = : && exit $EXIT_SUCCESS - -- echo "----------------------------------------------------------------------" -- echo "Libraries have been installed in:" -+ $echo "----------------------------------------------------------------------" -+ $echo "Libraries have been installed in:" - for libdir in $libdirs; do -- echo " $libdir" -+ $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:" -+ $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" -+ $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" -+ $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" -+ $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then -- echo " - have your system administrator run these commands:$admincmds" -+ $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'" -+ $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 "----------------------------------------------------------------------" -- exit 0 -+ $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 "----------------------------------------------------------------------" -+ exit $EXIT_SUCCESS - ;; - - # libtool execute mode -@@ -4572,7 +5986,7 @@ - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" -- exit 1 -+ exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. -@@ -4580,18 +5994,18 @@ - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. -- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ 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 1 -+ exit $EXIT_FAILURE - fi - - # Read the libtool library. -@@ -4618,7 +6032,7 @@ - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - ;; - -@@ -4658,7 +6072,7 @@ - -*) ;; - *) - # Do a test to see if this is really a libtool program. -- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ 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 ;; -@@ -4681,7 +6095,7 @@ - eval "export $shlibpath_var" - fi - -- # Restore saved enviroment variables -+ # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi -@@ -4698,7 +6112,7 @@ - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" -- exit 0 -+ exit $EXIT_SUCCESS - fi - ;; - -@@ -4726,18 +6140,19 @@ - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ 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="$objdir" -+ objdir="$origobjdir" - else -- objdir="$dir/$objdir" -+ objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" -@@ -4767,7 +6182,7 @@ - case $name in - *.la) - # Possibly a libtool archive, so verify it. -- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. -@@ -4780,10 +6195,11 @@ - if test "$mode" = uninstall; then - if test -n "$library_names"; then - # Do each command in the postuninstall commands. -- eval cmds=\"$postuninstall_cmds\" -+ 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 -@@ -4795,10 +6211,11 @@ - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. -- eval cmds=\"$old_postuninstall_cmds\" -+ 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 -@@ -4813,22 +6230,52 @@ - ;; - - *.lo) -- if test "$build_old_libs" = yes; then -- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` -- rmfiles="$rmfiles $dir/$oldobj" -+ # 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 - ;; - - *) -- # Do a test to see if this is a libtool program. -- if test "$mode" = clean && -- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -- relink_command= -- . $dir/$file -+ 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 - -- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" -- if test "$fast_install" = yes && test -n "$relink_command"; then -- rmfiles="$rmfiles $objdir/lt-$name" -+ # 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 - ;; -@@ -4836,6 +6283,7 @@ - $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 -@@ -4851,20 +6299,20 @@ - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - fi - fi # test -z "$show_help" - - if test -n "$exec_cmd"; then - eval exec $exec_cmd -- exit 1 -+ exit $EXIT_FAILURE - fi - - # We need to display help for each of the modes. -@@ -4883,6 +6331,7 @@ - --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: -@@ -4896,8 +6345,10 @@ - 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." -- exit 0 -+a more detailed description of MODE. -+ -+Report bugs to ." -+ exit $EXIT_SUCCESS - ;; - - clean) -@@ -5008,6 +6459,9 @@ - -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 -@@ -5049,14 +6503,34 @@ - *) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 -- exit 1 -+ exit $EXIT_FAILURE - ;; - esac - --echo -+$echo - $echo "Try \`$modename --help' for more information about other modes." - --exit 0 -+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 -+build_libtool_libs=no -+build_old_libs=yes -+# ### END LIBTOOL TAG CONFIG: disable-shared -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static -+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -+# ### END LIBTOOL TAG CONFIG: disable-static - - # Local Variables: - # mode:shell-script ---- gsmlib-1.10.orig/doc/gsmsmsstore.man -+++ gsmlib-1.10/doc/gsmsmsstore.man -@@ -15,36 +15,36 @@ - gsmsmsstore \- SMS store manipulation program - .SH SYNOPSIS - .B gsmsmsstore --[ \fB-a\fP ] --[ \fB--add\fP ] --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP ] --[ \fB--copy\fP ] --[ \fB-C\fP \fIservice centre address\fP ] --[ \fB--sca\fP \fIservice centre address\fP ] --[ \fB-d\fP \fIdestination device or file\fP ] --[ \fB--destination\fP \fIdestination device or file\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-k\fP ] --[ \fB--backup\fP ] --[ \fB-l\fP ] --[ \fB--list\fP ] --[ \fB-s\fP \fIsource device or file\fP ] --[ \fB--source\fP \fIsource device or file\fP ] --[ \fB-t\fP \fISMS store name\fP ] --[ \fB--store\fP \fISMS store name\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-V\fP ] --[ \fB--verbose\fP ] --[ \fB-x\fP ] --[ \fB--delete\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] -+[ \fB\-a\fP ] -+[ \fB\-\-add\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP ] -+[ \fB\-\-copy\fP ] -+[ \fB\-C\fP \fIservice centre address\fP ] -+[ \fB\-\-sca\fP \fIservice centre address\fP ] -+[ \fB\-d\fP \fIdestination device or file\fP ] -+[ \fB\-\-destination\fP \fIdestination device or file\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-k\fP ] -+[ \fB\-\-backup\fP ] -+[ \fB\-l\fP ] -+[ \fB\-\-list\fP ] -+[ \fB\-s\fP \fIsource device or file\fP ] -+[ \fB\-\-source\fP \fIsource device or file\fP ] -+[ \fB\-t\fP \fISMS store name\fP ] -+[ \fB\-\-store\fP \fISMS store name\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-V\fP ] -+[ \fB\-\-verbose\fP ] -+[ \fB\-x\fP ] -+[ \fB\-\-delete\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] - { \fIindices\fP } - [ \fIphonenumber\fP \fItext\fP ] - .PP -@@ -57,19 +57,19 @@ - \fIgsmsmsstore\fP reads entries from the source which can be a mobile - phone (if a serial device file is given) or a file (if a file name is - given). The source is never modified. \fIgsmsmsstore\fP writes SMS --messages to a destination file or device in the case of \fB--copy\fP, --\fB--backup\fP, and \fB--add\fP. -+messages to a destination file or device in the case of \fB\-\-copy\fP, -+\fB\-\-backup\fP, and \fB\-\-add\fP. - .PP --The \fB--list\fP option does not change any file but just lists the -+The \fB\-\-list\fP option does not change any file but just lists the - contents to standard output. - .PP --The \fB--backup\fP and \fB--copy\fP options require both source and --destination files or devices. The \fB--list\fP option requires a --source. The \fB--add\fP and \fB--delete\fP options require a -+The \fB\-\-backup\fP and \fB\-\-copy\fP options require both source and -+destination files or devices. The \fB\-\-list\fP option requires a -+source. The \fB\-\-add\fP and \fB\-\-delete\fP options require a - destination file or device. - .PP --If "-" is given as the parameter for the \fB--source\fP or --\fB--destination\fP options, the SMS store is read from standard input -+If "\-" is given as the parameter for the \fB\-\-source\fP or -+\fB\-\-destination\fP options, the SMS store is read from standard input - and/or written to standard output, respectively. - .PP - SMS message files are not human-readable. -@@ -79,61 +79,61 @@ - .PP - .SH OPTIONS - .TP --\fB-a\fP, \fB--add\fP -+\fB\-a\fP, \fB\-\-add\fP - Adds an SMS submit message with recipient address \fIphonenumber\fP and - text \fItext\fP to the destination. - .TP --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. The default baudrate is 38400. - .TP --\fB-c\fP, \fB--copy\fP -+\fB\-c\fP, \fB\-\-copy\fP - This causes the contents of the source to be copied to the - destination. After this operation the destination has exactly the same - contents as the source. If \fIindices\fP are given on the command - line only those SMS messages denoted by the indices are copied to the - destination. - .TP --\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP -+\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP - Sets the service centre address to use for all SUBMIT SMSs (may not - work with some phones). - .TP --\fB-d\fP \fIdestination\fP, \fB--destination\fP \fIdestination\fP -+\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP - The destination device or file. - .TP --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP --\fB-k\fP, \fB--backup\fP -+\fB\-k\fP, \fB\-\-backup\fP - This causes those entries to be added from the source to the - destination that are not already present in the destination. If - \fIindices\fP are given on the command line only those SMS messages - denoted by the indices are backed up (ie. added) to the destination. - .TP --\fB-l\fP, \fB--list\fP -+\fB\-l\fP, \fB\-\-list\fP - Prints out the entire contents of the source in human-readable form. - .TP --\fB-s\fP \fIsource\fP, \fB--source\fP \fIsource\fP -+\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP - The source device or file. - .TP --\fB-t\fP \fISMS store name\fP, \fB--store\fP \fISMS store name\fP -+\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP - The name of the SMS store to read from or write to. This information is - only used for device sources and destinations. A commonly available message - store is "SM" (SIM card). - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP --\fB-V\fP, \fB--verbose\fP -+\fB\-V\fP, \fB\-\-verbose\fP - Prints out a detailed progress report. - .TP --\fB-x\fP, \fB--delete\fP -+\fB\-x\fP, \fB\-\-delete\fP - Delete the SMS messages as denoted by the \fIindices\fP from the destination. - .TP --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .PP - .SH EXAMPLES -@@ -141,15 +141,15 @@ - to \fI/dev/mobilephone\fP to the standard output: - .PP - .nf --gsmsmsstore -b 19200 -s /dev/mobilephone -t SM -l -+gsmsmsstore \-b 19200 \-s /dev/mobilephone \-t SM \-l - .fi - .PP - The following adds entries 4, 7, and 10 from the device - \fI/dev/mobilephone\fP to the file \fIsmsstore\fP: - .PP - .nf --gsmsmsstore -s /dev/mobilephone -d /home/fred/smsstore -- -t SM -b 4 7 10 -+gsmsmsstore \-s /dev/mobilephone \-d /home/fred/smsstore -+ \-t SM \-b 4 7 10 - .fi - .PP - .SH AUTHOR ---- gsmlib-1.10.orig/doc/gsmsmsd.man -+++ gsmlib-1.10/doc/gsmsmsd.man -@@ -17,34 +17,34 @@ - .PP - .SH SYNOPSIS - .B gsmsmsd --[ \fB-a\fP \fIaction\fP ] --[ \fB--action\fP \fIaction\fP ] --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP \fIconcatenatedID\fP ] --[ \fB--concatenate\fP \fIconcatenatedID\fP ] --[ \fB-C\fP \fIservice centre address\fP ] --[ \fB--sca\fP \fIservice centre address\fP ] --[ \fB-d\fP \fIdevice\fP ] --[ \fB--device\fP \fIdevice\fP ] --[ \fB-D\fP ] --[ \fB--direct\fP ] --[ \fB-f\fP ] --[ \fB--flush\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-r\fP ] --[ \fB--requeststat\fP ] --[ \fB-s\fP \fIspool directory\fP ] --[ \fB--spool\fP \fIspool directory\fP ] --[ \fB-t\fP \fISMS store name\fP ] --[ \fB--store\fP \fISMS store name\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] -+[ \fB\-a\fP \fIaction\fP ] -+[ \fB\-\-action\fP \fIaction\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP \fIconcatenatedID\fP ] -+[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] -+[ \fB\-C\fP \fIservice centre address\fP ] -+[ \fB\-\-sca\fP \fIservice centre address\fP ] -+[ \fB\-d\fP \fIdevice\fP ] -+[ \fB\-\-device\fP \fIdevice\fP ] -+[ \fB\-D\fP ] -+[ \fB\-\-direct\fP ] -+[ \fB\-f\fP ] -+[ \fB\-\-flush\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-r\fP ] -+[ \fB\-\-requeststat\fP ] -+[ \fB\-s\fP \fIspool directory\fP ] -+[ \fB\-\-spool\fP \fIspool directory\fP ] -+[ \fB\-t\fP \fISMS store name\fP ] -+[ \fB\-\-store\fP \fISMS store name\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] - { \fIsms_type\fP } - .PP - .SH DESCRIPTION -@@ -65,10 +65,10 @@ - \fIgsmsmsd\fP needs one empty storage slot for SMS messages in the - mobile phone, otherwise SMS reception will not work. The SMS store to - use for temporary storage of incoming SMS can be selected using the --\fB--store\fP option, otherwise the ME default store is used. -+\fB\-\-store\fP option, otherwise the ME default store is used. - .PP - To terminate \fIgsmsmsd\fP cleanly (without losing SMS messages) one --should send either SIGINT (CTRL-C on the command line) or SIGTERM to -+should send either SIGINT (CTRL\-C on the command line) or SIGTERM to - the process. - .PP - Error messages are printed to the standard error output. If the program -@@ -89,14 +89,14 @@ - .PP - .SH OPTIONS - .TP --\fB-a\fP \fIaction\fP, \fB--action\fP \fIaction\fP -+\fB\-a\fP \fIaction\fP, \fB\-\-action\fP \fIaction\fP - The action to execute for each incoming SMS message. If no action - is given the SMS is written to the standard output. - .TP --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. - .TP --\fB-c\fP \fIconcatenatedID\fP, \fB--concatenate\fP \fIconcatenatedID\fP -+\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP - If an ID is given, large SMSs are split into several, concatenated - SMSs. All SMSs have the same ID and are numbered consecutively so that - the receiving phone can assemble them in the correct order. IDs must -@@ -108,43 +108,43 @@ - carried in the user data header element at the beginning of the SMS - user data. This information may show up as garbage in such phones. - .TP --\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP -+\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP - Sets the service centre address to use for all SUBMIT SMSs (may not - work with some phones). - .TP --\fB-d\fP \fIdevice\fP, \fB--device\fP \fIdevice\fP -+\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP - The device to which the GSM modem is connected. The default is - \fI/dev/mobilephone\fP. - .TP --\fB-D\fP, \fB--direct\fP -+\fB\-D\fP, \fB\-\-direct\fP - Enables direct routing of incoming SMS messages to the TE. This is not - supported by many mobile phone/GSM modem combinations. Therefore, the - default is to store incoming SMS temporarily before processing them in - the indicated store. - .TP --\fB-f\fP, \fB--flush\fP -+\fB\-f\fP, \fB\-\-flush\fP - This option causes \fIgsmsmsd\fP to flush (ie. read and erase) - existing SMS messages from --the SMS store selected by the \fB--store\fP option. The action given --by the \fB--action\fP option is executed on each of the flushed -+the SMS store selected by the \fB\-\-store\fP option. The action given -+by the \fB\-\-action\fP option is executed on each of the flushed - SMS. This option should be used to ensure that enough space is - available in the SMS store for temporary storage of incoming SMS, - otherwise incoming SMS might be ignored silently by the ME. - .TP --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP --\fB-r\fP, \fB--requeststat\fP -+\fB\-r\fP, \fB\-\-requeststat\fP - Request status reports for sent SMS. Note: This option only makes - sense if the phone supports routing of status reports to the - TE. Otherwise the status reports might show on the phone's display or - get lost. - .TP --\fB-s\fP \fIspool directory\fP, \fB--spool\fP \fIspool directory\fP -+\fB\-s\fP \fIspool directory\fP, \fB\-\-spool\fP \fIspool directory\fP - This option sets the spool directory where \fIgsmsmsd\fP expects SMS - messages to send. The format of SMS files is very simple: The first - line contains the phone number of the recipient. Everything else after -@@ -154,18 +154,18 @@ - \fIgsmsmsd\fP polls the spool directory every 5 seconds. Sent - SMS message files are removed. - .TP --\fB-t\fP \fISMS store name\fP, \fB--store\fP \fISMS store name\fP --The name of the SMS store to read from (for the \fB--flush\fP option) -+\fB\-t\fP \fISMS store name\fP, \fB\-\-store\fP \fISMS store name\fP -+The name of the SMS store to read from (for the \fB\-\-flush\fP option) - or write to (for temporary SMS storage). This option must --be must be used in conjunction with the \fB--flush\fP option. If this -+be must be used in conjunction with the \fB\-\-flush\fP option. If this - option is omitted the ME uses it's default SMS store for temporary - storage of incoming SMS. A commonly available message - store is "SM" (SIM card). - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .PP - .SH EXAMPLES -@@ -173,14 +173,14 @@ - as a mail to the user "smsadmin": - .PP - .nf --gsmsmsd -d /dev/ttyS2 -b 19200 -a "mail smsadmin" -+gsmsmsd \-d /dev/ttyS2 \-b 19200 \-a "mail smsadmin" - .fi - .PP - This is the format of SMS deliver messages as output from \fIgsmsmsd\fP: - .PP - .nf - ---------------------------------------------------------------- --Message type: SMS-DELIVER -+Message type: SMS\-DELIVER - SC address: '491710762100' - More messages to send: 1 - Reply path: 0 -@@ -202,7 +202,7 @@ - .PP - .nf - ---------------------------------------------------------------- --Message type: SMS-STATUS-REPORT -+Message type: SMS\-STATUS\-REPORT - SC address: '' - More messages to send: 0 - Status report qualifier: 0 -@@ -219,8 +219,8 @@ - directory for SMS to send: - .PP - .nf --gsmsmsd -d /dev/ttyS2 --spool /tmp/spooldir -f --store sm \\ ----action 'mail smsadmin' -+gsmsmsd \-d /dev/ttyS2 \-\-spool /tmp/spooldir \-f \-\-store sm \\ -+\-\-action 'mail smsadmin' - .fi - .PP - .SH FILES ---- gsmlib-1.10.orig/doc/gsmctl.man -+++ gsmlib-1.10/doc/gsmctl.man -@@ -1,6 +1,6 @@ - .TH GSMCTL 8 "##DATE##" "gsmctl v##VERSION##" - .SH NAME --gsmctl \- GSM mobile phone control program -+gsmctl, gsmsiectl \- GSM mobile phone control program - .SH SYNOPSIS - .B gsmctl - .RB [\| \-b -@@ -25,6 +25,30 @@ - .RB | \ \-\-operation - .IR operation \ | - .I parameters -+.PP -+.B gsmsiectl -+.RB [\| \-b -+.IR baudrate \|] -+.RB [\| \-\-baudrate -+.IR baudrate\| ] -+.RB [ \|\-d -+.IR device\| ] -+.RB [ \|\-\-device -+.IR device\fP ] -+.RB [ \|\-h\| ] -+.RB [ \|\-\-help\| ] -+.RB [ \|\-I -+.IR "init string" \|] -+.RB [ \|\-\-init -+.IR "init string" \|] -+.RB [ \|\-v\| ] -+.RB [ \|\-\-version\| ] -+.RB [ \|\-X\| ] -+.RB [ \|\-\-xonxoff\| ] -+.BI \-o \ operation -+.RB | \ \-\-operation -+.IR operation \ | -+.I parameters - .SH DESCRIPTION - .B gsmctl - can request information from or perform operations on an GSM mobile -@@ -38,7 +62,7 @@ - If no - .I device - is given, the device --.I/dev/mobilephone -+.I /dev/mobilephone - is used. If no - .I baudrate - is given, a default baud rate of 38400 is used. -@@ -61,6 +85,12 @@ - .B OPERATIONS - for more details. - .PP -+.B gsmsiectl -+is the same program with some extension for Siemens mobile phones. -+Some extra -+.B OPERATIONS -+are available in this case. -+.PP - Error messages are printed to the standard error output. If the - program terminates on error the error code 1 is returned. - .SH OPTIONS -@@ -252,14 +282,14 @@ - .I SIM PUK - ME is waiting SIM PUK to be given. - .TP --.I PH-SIM PIN --ME is waiting phone-to-SIM card password to be given. -+.I PH\-SIM PIN -+ME is waiting phone/-to/-SIM card password to be given. - .TP --.I PH-FSIM PIN --ME is waiting phone-to-very first SIM card password to be given. -+.I PH/-FSIM PIN -+ME is waiting phone/-to/-very first SIM card password to be given. - .TP --.I PH-FSIM PUK --ME is waiting phone-to-very first SIM card unblocking password to be -+.I PH/-FSIM PUK -+ME is waiting phone/-to/-very first SIM card unblocking password to be - given. - .TP - .I SIM PIN2 -@@ -268,13 +298,13 @@ - .I SIM PUK2 - ME is waiting SIM PUK2 to be given. - .TP --.I PH-NET PIN -+.I PH/-NET PIN - ME is waiting network personalisation password to be given. - .TP --.I PH-NET PUK -+.I PH/-NET PUK - ME is waiting network personalisation unblocking password to be given. - .TP --.I PH-NETSUB PIN -+.I PH/-NETSUB PIN - ME is waiting network subset personalisation password to be given. - .RE - .TP 7 -@@ -458,6 +488,33 @@ - This is the reverse operation to \fBlock\fP. See above for a - description of the parameters. - .RE -+.PP -+.B Extra operators for gsmsiectl: -+.PP -+.B cset -+.RS -+Charset info. -+.RE -+.PP -+.B pbook -+.RS -+Phone book info. -+.RE -+.PP -+.B signal -+.RS -+Signal tone info. -+.RE -+.PP -+.B ring -+.RS -+Ringing tone info. -+.RE -+.PP -+.B binary -+.RS -+Binary info. -+.RE - .SH EXAMPLES - The following invocation of - .I gsmctl -@@ -482,11 +539,11 @@ - .HP - Serial Number: 448058511817585 - .HP -- Status: available Long name: 'D1-TELEKOM' Short name: '' Numeric name: 26201 -+ Status: available Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 - .HP - Status: forbidden Long name: 'D2 PRIVAT' Short name: '' Numeric name: 26202 - .HP -- Long name: 'D1-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic -+ Long name: 'D1/-TELEKOM' Short name: '' Numeric name: 26201 Mode: automatic - .HP - 'CS' - .HP ---- gsmlib-1.10.orig/doc/gsmsendsms.man -+++ gsmlib-1.10/doc/gsmsendsms.man -@@ -17,26 +17,26 @@ - .PP - .SH SYNOPSIS - .B gsmsendsms --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP \fIconcatenatedID\fP ] --[ \fB--concatenate\fP \fIconcatenatedID\fP ] --[ \fB-C\fP \fIservice centre address\fP ] --[ \fB--sca\fP \fIservice centre address\fP ] --[ \fB-d\fP \fIdevice\fP ] --[ \fB--device\fP \fIdevice\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-r\fP ] --[ \fB--requeststat\fP ] --[ \fB-t\fP ] --[ \fB--test\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP \fIconcatenatedID\fP ] -+[ \fB\-\-concatenate\fP \fIconcatenatedID\fP ] -+[ \fB\-C\fP \fIservice centre address\fP ] -+[ \fB\-\-sca\fP \fIservice centre address\fP ] -+[ \fB\-d\fP \fIdevice\fP ] -+[ \fB\-\-device\fP \fIdevice\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-r\fP ] -+[ \fB\-\-requeststat\fP ] -+[ \fB\-t\fP ] -+[ \fB\-\-test\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] - \fIphonenumber\fP - [ \fItext\fP ] - .PP -@@ -51,7 +51,7 @@ - \fIgsmsendsms\fP accepts a phone number (recipient address) and the - short message text as parameters. The text may have a maximum length - of 160 characters which is the maximum SMS message length. The GSM --default alphabet is used for encoding. ASCII and Latin-1 characters -+default alphabet is used for encoding. ASCII and Latin\-1 characters - that can not be encoded using the GSM default alphabet are converted - to the GSM delta character (GSM code 16). - .PP -@@ -60,10 +60,10 @@ - .PP - .SH OPTIONS - .TP --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. - .TP --\fB-c\fP \fIconcatenatedID\fP, \fB--concatenate\fP \fIconcatenatedID\fP -+\fB\-c\fP \fIconcatenatedID\fP, \fB\-\-concatenate\fP \fIconcatenatedID\fP - If an ID is given, large SMSs are split into several, concatenated - SMSs. All SMSs have the same ID and are numbered consecutively so that - the receiving phone can assemble them in the correct order. IDs must -@@ -73,37 +73,37 @@ - carried in the user data header element at the beginning of the SMS - user data. This information may show up as garbage in such phones. - .TP --\fB-C\fP \fIservice centre address\fP, \fB--sca\fP \fIservice centre address\fP -+\fB\-C\fP \fIservice centre address\fP, \fB\-\-sca\fP \fIservice centre address\fP - Sets the service centre address to use for all SUBMIT SMSs (may not - work with some phones). - .TP --\fB-d\fP \fIdevice\fP, \fB--device\fP \fIdevice\fP -+\fB\-d\fP \fIdevice\fP, \fB\-\-device\fP \fIdevice\fP - The device to which the GSM modem is connected. The default is - \fI/dev/mobilephone\fP. - .TP --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP --\fB-r\fP, \fB--requeststat\fP -+\fB\-r\fP, \fB\-\-requeststat\fP - Request status reports for sent SMS. - .TP --\fB-t\fP, \fB--test\fP -+\fB\-t\fP, \fB\-\-test\fP - If this option is given the text is converted --to the GSM default alphabet and back to Latin-1. This option can be --used to find out how ASCII or Latin-1 texts are converted to the GSM -+to the GSM default alphabet and back to Latin\-1. This option can be -+used to find out how ASCII or Latin\-1 texts are converted to the GSM - default alphabet. Characters that can not be converted to the GSM default --alphabet are reported as ASCII code 172 (Latin-1 boolean "not") -+alphabet are reported as ASCII code 172 (Latin\-1 boolean "not") - after this double conversion. No SMS messages are sent, a connection - to a mobile phone is not established. - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .PP - .SH EXAMPLES -@@ -111,8 +111,8 @@ - SMS message to the number "1234": - .PP - .nf --gsmsendsms -d /dev/ttyS2 -b 19200 1234 "This is a test." --echo "This is a test." | gsmsendsms -d /dev/ttyS2 -b 19200 1234 -+gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 "This is a test." -+echo "This is a test." | gsmsendsms \-d /dev/ttyS2 \-b 19200 1234 - .fi - .PP - .SH FILES ---- gsmlib-1.10.orig/doc/gsmpb.man -+++ gsmlib-1.10/doc/gsmpb.man -@@ -15,32 +15,32 @@ - gsmpb \- GSM mobile phone phonebook manipulation program - .SH SYNOPSIS - .B gsmpb --[ \fB-b\fP \fIbaudrate\fP ] --[ \fB--baudrate\fP \fIbaudrate\fP ] --[ \fB-c\fP ] --[ \fB--copy\fP ] --[ \fB-d\fP \fIdestination device or file\fP ] --[ \fB--destination\fP \fIdestination device or file\fP ] --[ \fB-h\fP ] --[ \fB--help\fP ] --[ \fB-i\fP ] --[ \fB--index\fP ] --[ \fB-I\fP \fIinit string\fP ] --[ \fB--init\fP \fIinit string\fP ] --[ \fB-p\fP \fIphonebook name\fP ] --[ \fB--phonebook\fP \fIphonebook name\fP ] --[ \fB-s\fP \fIsource device or file\fP ] --[ \fB--source\fP \fIsource device or file\fP ] --[ \fB-t\fP \fIcharacter set\fP ] --[ \fB--charset\fP \fIcharacter set\fP ] --[ \fB-v\fP ] --[ \fB--version\fP ] --[ \fB-V\fP ] --[ \fB--verbose\fP ] --[ \fB-X\fP ] --[ \fB--xonxoff\fP ] --[ \fB-y\fP ] --[ \fB--synchronize\fP ] -+[ \fB\-b\fP \fIbaudrate\fP ] -+[ \fB\-\-baudrate\fP \fIbaudrate\fP ] -+[ \fB\-c\fP ] -+[ \fB\-\-copy\fP ] -+[ \fB\-d\fP \fIdestination device or file\fP ] -+[ \fB\-\-destination\fP \fIdestination device or file\fP ] -+[ \fB\-h\fP ] -+[ \fB\-\-help\fP ] -+[ \fB\-i\fP ] -+[ \fB\-\-index\fP ] -+[ \fB\-I\fP \fIinit string\fP ] -+[ \fB\-\-init\fP \fIinit string\fP ] -+[ \fB\-p\fP \fIphonebook name\fP ] -+[ \fB\-\-phonebook\fP \fIphonebook name\fP ] -+[ \fB\-s\fP \fIsource device or file\fP ] -+[ \fB\-\-source\fP \fIsource device or file\fP ] -+[ \fB\-t\fP \fIcharacter set\fP ] -+[ \fB\-\-charset\fP \fIcharacter set\fP ] -+[ \fB\-v\fP ] -+[ \fB\-\-version\fP ] -+[ \fB\-V\fP ] -+[ \fB\-\-verbose\fP ] -+[ \fB\-X\fP ] -+[ \fB\-\-xonxoff\fP ] -+[ \fB\-y\fP ] -+[ \fB\-\-synchronize\fP ] - .PP - .SH DESCRIPTION - \fIgsmpb\fP can store or retrieve phonebook entries residing in a GSM -@@ -55,45 +55,45 @@ - destination, or the destination is synchronized with regard to the - source which is the default (details see below). - .PP --If "-" is given as the parameter for the \fB--source\fP or --\fB--destination\fP options, the phonebook is read from standard input -+If "\-" is given as the parameter for the \fB\-\-source\fP or -+\fB\-\-destination\fP options, the phonebook is read from standard input - and/or written to standard output, respectively. - .PP - Phonebook entries names are encoded using the GSM default alphabet in --the mobile phone, whereas they are stored using the Latin-1 encoding -+the mobile phone, whereas they are stored using the Latin\-1 encoding - in phonebook files. When reading phonebook entries from a mobile phone --entry names are converted from the GSM default to Latin-1. Characters --that can not be converted to Latin-1 are encoded as character code --172 (Latin-1 boolean "not"). When writing file-based phonebook entries -+entry names are converted from the GSM default to Latin\-1. Characters -+that can not be converted to Latin\-1 are encoded as character code -+172 (Latin\-1 boolean "not"). When writing file-based phonebook entries - to a mobile phone a conversion to the GSM default alphabet takes - place. Characters that can not be converted are encoded as GSM delta - (code 16). If the default character set has been changed using the --\fB--charset\fP option no conversion takes place. -+\fB\-\-charset\fP option no conversion takes place. - .PP - Error messages are printed to the standard error output. If the program - terminates on error the error code 1 is returned. - .PP - .SH OPTIONS - .TP .7i --\fB-b\fP \fIbaudrate\fP, \fB--baudrate\fP \fIbaudrate\fP -+\fB\-b\fP \fIbaudrate\fP, \fB\-\-baudrate\fP \fIbaudrate\fP - The baud rate to use. The default baudrate is 38400. - .TP .7i --\fB-c\fP, \fB--copy\fP -+\fB\-c\fP, \fB\-\-copy\fP - This causes the contents of the source to be copied to the - destination. After this operation the destination has exactly the same - contents as the source. - .TP .7i --\fB-d\fP \fIdestination\fP, \fB--destination\fP \fIdestination\fP -+\fB\-d\fP \fIdestination\fP, \fB\-\-destination\fP \fIdestination\fP - The destination device or file. - .TP .7i --\fB-h\fP, \fB--help\fP -+\fB\-h\fP, \fB\-\-help\fP - Prints an option summary. - .TP .7i --\fB-I\fP \fIinit string\fP, \fB--init\fP \fIinit string\fP -+\fB\-I\fP \fIinit string\fP, \fB\-\-init\fP \fIinit string\fP - Initialization string to send to the TA (default: "E0"). Note that the - sequence "ATZ" is sent first. - .TP .7i --\fB-i\fP, \fB--index\fP -+\fB\-i\fP, \fB\-\-index\fP - If the index position is given, \fIgsmpb\fP preserves the assignment - of entries to memory slots in the mobile phone's phonebook. This can - be used to backup phonebook entries with their position into a -@@ -104,7 +104,7 @@ - be unique, ie. it is not allowed to assign one entry twice to a - specific position in the mobile phone's phonebook. - .TP .7i --\fB-p\fP \fIphonebook\fP, \fB--phonebook\fP \fIphonebook\fP -+\fB\-p\fP \fIphonebook\fP, \fB\-\-phonebook\fP \fIphonebook\fP - The name of the phonebook to read from or write to. This is only used - for device sources and destinations. Commonly available phonebooks - are: -@@ -112,10 +112,10 @@ - .po +0.7i - .ll 5.8i - \fIFD\fP --SIM fixdialling-phonebook -+SIM fixdialling\-phonebook - .TP .3i - \fILD\fP --SIM last-dialling-phonebook -+SIM last\-dialling\-phonebook - .TP .3i - \fIME\fP - ME phonebook -@@ -131,23 +131,23 @@ - .TP .7i - .po -0.7i - .ll 6.5i --\fB-s\fP \fIsource\fP, \fB--source\fP \fIsource\fP -+\fB\-s\fP \fIsource\fP, \fB\-\-source\fP \fIsource\fP - The source device or file. - .TP --\fB-t\fP \fIcharacter set\fP, \fB--charset\fP \fIcharacter set\fP -+\fB\-t\fP \fIcharacter set\fP, \fB\-\-charset\fP \fIcharacter set\fP - Set the character set to use for phonebook operations (default is the - GSM default alphabet). - .TP --\fB-v\fP, \fB--version\fP -+\fB\-v\fP, \fB\-\-version\fP - Prints the program version. - .TP .7i --\fB-V\fP, \fB--verbose\fP -+\fB\-V\fP, \fB\-\-verbose\fP - Prints out a detailed progress report. - .TP .7i --\fB-X\fP, \fB--xonxoff\fP -+\fB\-X\fP, \fB\-\-xonxoff\fP - Uses software handshaking (XON/XOFF) for accessing the device. - .TP .7i --\fB-y\fP, \fB--synchronize\fP -+\fB\-y\fP, \fB\-\-synchronize\fP - This causes the contents of the source to be synchronized with the - destination (default). Synchronization in this context means: - .TP .2i -@@ -188,7 +188,7 @@ - \fIindex\fP - The index of the entry which must be a positive number. The index may - also be empty. Indices can be used in conjunction with the --\fB--index\fP option to store the entry into a specific position in -+\fB\-\-index\fP option to store the entry into a specific position in - the mobile phone. - .TP .7i - \fItext\fP -@@ -199,7 +199,7 @@ - encoded using the GSM default alphabet (see comments above). - .TP .7i - \fIphone number\fP --Phone numbers can only contains the digits 0-9 and the '+' sign. A '+' -+Phone numbers can only contains the digits 0\-9 and the '+' sign. A '+' - sign denotes an international number. - .PP - .SH EXAMPLES -@@ -207,8 +207,8 @@ - SIM phonebook with the file $HOME/.phonebook: - .PP - .nf --gsmpb --synchronize -b 19200 -d /dev/mobilephone \\ -- -s $HOME/.phonebook -p "SM" -+gsmpb \-\-synchronize \-b 19200 \-d /dev/mobilephone \\ -+ \-s $HOME/.phonebook \-p "SM" - .fi - .PP - .SH AUTHOR ---- gsmlib-1.10.orig/debian/compat -+++ gsmlib-1.10/debian/compat -@@ -0,0 +1 @@ -+4 ---- gsmlib-1.10.orig/debian/gsm-utils.cron.d -+++ gsmlib-1.10/debian/gsm-utils.cron.d -@@ -0,0 +1,3 @@ -+# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils -+ -+*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi ---- gsmlib-1.10.orig/debian/copyright -+++ gsmlib-1.10/debian/copyright -@@ -0,0 +1,34 @@ -+This package was debianized by Mikael Hedin on -+Thu, 14 Dec 2000 01:06:40 +0100. -+ -+It was downloaded from http://www.pxh.de/fs/gsmlib/index.html -+ -+Upstream Author: Peter Hofmann -+ -+ext/gsmsiexfer.cc:// * Author: Christian W. Zuckschwerdt -+ -+Copyright: -+ -+ Copyright (C) 1999-2002 Peter Hofmann -+ -+License: -+ -+ This package is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This package 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this package; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+On Debian systems, the complete text of the GNU Lesser General -+Public License can be found in `/usr/share/common-licenses/LGPL'. -+ -+The Debian packaging is (C) 2000, Mikael Hedin and -+is licensed under the GPL, see `/usr/share/common-licenses/GPL'. ---- gsmlib-1.10.orig/debian/gsm-utils.dirs -+++ gsmlib-1.10/debian/gsm-utils.dirs -@@ -0,0 +1,11 @@ -+var/spool/sms/queue1 -+var/spool/sms/queue2 -+var/spool/sms/queue3 -+var/spool/sms/sent1 -+var/spool/sms/sent2 -+var/spool/sms/sent3 -+var/spool/sms/failed1 -+var/spool/sms/failed2 -+var/spool/sms/failed3 -+var/spool/sms/tmp -+var/run/gsm-utils ---- gsmlib-1.10.orig/debian/gsm-utils.default -+++ gsmlib-1.10/debian/gsm-utils.default -@@ -0,0 +1,18 @@ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+ -+# RUNGSMSMS: If set to anything other that 'yes', the asterisk init.d script -+# will not run. The default is 'yes'. -+# You should probaly also install the crontab from /usr/share/doc/gsm-utils/examples -+RUNGSMSMS=no -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+ -+SMSADMIN=root -+SUBJECT="SMS delivery report:" -+ -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+ -+do_accounting () { true; } # it's your turn ---- gsmlib-1.10.orig/debian/watch -+++ gsmlib-1.10/debian/watch -@@ -0,0 +1,2 @@ -+version=2 -+http://www.pxh.de/fs/gsmlib/download/content.html gsmlib-(.*)\.tar\.gz ---- gsmlib-1.10.orig/debian/gsm-utils.postinst -+++ gsmlib-1.10/debian/gsm-utils.postinst -@@ -0,0 +1,28 @@ -+#!/bin/sh -e -+ -+# create gsmsms group if necessary. -+if ! grep -q ^gsmsms: /etc/group; then -+# echo Adding system group: gsmsms. -+ addgroup --system gsmsms -+fi -+ -+# create gsmsms user if necessary. -+if ! grep -q ^gsmsms: /etc/passwd; then -+# echo Adding system user: gsmsms. -+ adduser --system --ingroup gsmsms \ -+ --no-create-home --home /var/spool/sms gsmsms -+fi -+ -+# allow gsmsms to use serial lines -+if ! groups gsmsms | grep -q dialout ; then -+ adduser gsmsms dialout -+fi -+ -+# echo Updating spool directory structure: /var/spool/sms -+chown -R gsmsms:gsmsms /var/spool/sms /var/run/gsm-utils -+chmod 700 /var/spool/sms/* -+chmod 750 /var/spool/sms -+chmod 730 /var/spool/sms/queue* /var/spool/sms/tmp -+ -+# Add the rest automatically.. -+#DEBHELPER# ---- gsmlib-1.10.orig/debian/control -+++ gsmlib-1.10/debian/control -@@ -0,0 +1,45 @@ -+Source: gsmlib -+Section: comm -+Priority: extra -+Maintainer: Mark Purcell -+Build-Depends: debhelper (>= 3.0.0), chrpath -+Standards-Version: 3.7.3 -+Homepage: http://www.pxh.de/fs/gsmlib/ -+ -+Package: libgsmme-dev -+Section: libdevel -+Architecture: any -+Depends: libgsmme1c2a (= ${binary:Version}), libc6-dev -+Description: Header files and static libraries for gsmlib -+ Headers and static libraries for use when compiling programs with -+ gsmlib. -+ . -+ gsmlib is a library for access to a GSM mobile phone using the -+ standards ETSI GSM 07.07, ETSI GSM 07.05, and others. -+ -+Package: libgsmme1c2a -+Conflicts: libgsmme1, libgsmme1c102, libgsmme1c2 -+Replaces: libgsmme1c102, libgsmme1c2 -+Section: libs -+Architecture: any -+Depends: ${shlibs:Depends} -+Description: GSM mobile phone access library -+ Library to access GSM mobile phones through GSM modems or IrDA devices. -+ Features include: -+ . -+ * modification of phone books stored in the mobile phone or on the -+ SIM card -+ * reading and writing of SMS messages stored in the mobile phone -+ * sending and reception of SMS messages -+ . -+ gsmlib uses standard ETSI GSM 07.07, ETSI GSM 07.05, and others. -+ -+Package: gsm-utils -+Section: comm -+Architecture: any -+Depends: ${shlibs:Depends}, adduser -+Description: GSM mobile phone access applications -+ Some simple command line programs to access a GSM mobile phone via -+ GSM modem or IrDA. Functions include: modification of phone books and -+ reading, writing, sending and receiving SMS messages. Uses the GSM -+ standards ETSI GSM 07.07, ETSI GSM 07.05, and others. ---- gsmlib-1.10.orig/debian/gsm-utils.postrm -+++ gsmlib-1.10/debian/gsm-utils.postrm -@@ -0,0 +1,43 @@ -+#!/bin/sh -+# postrm script for #PACKAGE# -+# -+# see: dh_installdeb(1) -+ -+set -e -+ -+# summary of how this script can be called: -+# * `remove' -+# * `purge' -+# * `upgrade' -+# * `failed-upgrade' -+# * `abort-install' -+# * `abort-install' -+# * `abort-upgrade' -+# * `disappear' -+# -+# for details, see http://www.debian.org/doc/debian-policy/ or -+# the debian-policy package -+ -+ -+case "$1" in -+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) -+ ;; -+ -+ purge) -+ deluser gsmsms -+ ;; -+ -+ *) -+ echo "postrm called with unknown argument \`$1'" >&2 -+ exit 1 -+ ;; -+esac -+ -+# dh_installdeb will replace this with shell code automatically -+# generated by other debhelper scripts. -+ -+#DEBHELPER# -+ -+exit 0 -+ -+ ---- gsmlib-1.10.orig/debian/gsmsiexfer.1 -+++ gsmlib-1.10/debian/gsmsiexfer.1 -@@ -0,0 +1,29 @@ -+.\" -*- eval: (nroff-mode) -*- -+.de TQ -+.br -+.ns -+.TP \\$1 -+.. -+.\" Like TP, but if specified indent is more than half -+.\" the current line-length - indent, use the default indent. -+.de Tp -+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -+.el .TP "\\$1" -+.. -+.TH GSMSIEXFER 1 "" "gsmsiexfer" -+.SH NAME -+gsmsiexfer \- Siemens ME file transfer program for Siemens phones S25, S35, S45, ME45, SL45 -+.SH SYNOPSIS -+.B gsmsiexfer \-\-help -+.PP -+.SH DESCRIPTION -+\fIgsmsiexer\fP comes with no man page. Try gsmsiexfer \-\-help, or -+read the source. -+.PP -+.SH "SEE ALSO" -+.BR gsminfo(7), -+.BR gsmctl(1), -+.BR gsmsendsms(1), -+.BR gsmsmsd(8), -+.BR gsmsmsstore(1). -+ ---- gsmlib-1.10.orig/debian/gsm-utils.examples -+++ gsmlib-1.10/debian/gsm-utils.examples -@@ -0,0 +1,2 @@ -+contrib/gsm-utils.cron.d -+contrib/gsm-utils.init ---- gsmlib-1.10.orig/debian/dirs -+++ gsmlib-1.10/debian/dirs -@@ -0,0 +1 @@ -+/var/run/gsm-utils ---- gsmlib-1.10.orig/debian/libgsmme-dev.docs -+++ gsmlib-1.10/debian/libgsmme-dev.docs -@@ -0,0 +1,2 @@ -+doc/README.developers -+doc/README.NLS ---- gsmlib-1.10.orig/debian/gsm-utils.init -+++ gsmlib-1.10/debian/gsm-utils.init -@@ -0,0 +1,87 @@ -+#! /bin/sh -+### BEGIN INIT INFO -+# Provides: gsm-utils -+# Required-Start: $remote_fs $syslog -+# Required-Stop: $remote_fs $syslog -+# Default-Start: 2 3 4 5 -+# Default-Stop: 0 1 6 -+# Short-Description: Start daemon at boot time -+# Description: Enable service provided by daemon. -+### END INIT INFO -+# -+# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon -+# -+# written by Matthias Goebl -+ -+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -+DAEMON=/usr/bin/gsmsmsd -+NAME=gsmsmsd -+DESC="GSM SMS send daemon" -+ -+test -x $DAEMON || exit 0 -+ -+if [ "$RUNGSMSMS" != "yes" ];then -+ echo "GSM SMS deamon not yet configured. Edit /etc/default/gsm-utils first." -+ exit 0 -+fi -+ -+ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+STARTOPTS="" -+SMSUSER="gsmsms:gsmsms" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters -+ -+OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" -+OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" -+test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" -+test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS -+ -+case "$1" in -+ start) -+ echo -n "Starting $DESC: " -+ if [ -n "$PIN" ];then -+ echo -n "entering PIN.. " -+ ( -+ # This is ugly.. But if the PIN is already entered, the ME returns -+ # "ERROR" and makes gsmctl retrying.. -+ /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & -+ PID=$! -+ sleep 3 -+ kill $PID 2>/dev/null -+ ) >/dev/null 2>&1 -+ fi -+ echo -n "$NAME" -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ stop) -+ echo -n "Stopping $DESC: $NAME " -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --exec $DAEMON -+ sleep 5 -+ echo "." -+ ;; -+ restart|force-reload) -+ echo -n "Restarting $DESC: $NAME" -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background --exec $DAEMON -- $OPTIONS -+ sleep 5 -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ *) -+ N=/etc/init.d/gsm-utils -+ echo "Usage: $N {start|stop|restart|force-reload}" >&2 -+ exit 1 -+ ;; -+esac -+ -+exit 0 ---- gsmlib-1.10.orig/debian/changelog -+++ gsmlib-1.10/debian/changelog -@@ -0,0 +1,284 @@ -+gsmlib (1.10-13) unstable; urgency=low -+ -+ * Ack NMU, Thanks Michael, Christoph & Petter -+ * debian/control add Homepage: -+ * Update debian/copyright; gsm-lib/COPYING actually specifies LGPL: -+ - fixes lintian:copyright-without-copyright-notice -+ * Update manpages fixes lintian:hyphen-used-as-minus-sign -+ * Update debian/gsm-utils.init -+ - fixes lintian:init.d-script-missing-lsb-short-description -+ * Bug fixes from ubuntu -+ - Don't install contrib/gsm-utils.init dh_installinit debian/gsm-utils.init -+ - Create /var/run/gsm-utils -+ * Add case 'L' to apps/gsmsmsd.cc - thks to Andrew Suffield -+ - syslog support does not work (Closes: #346240) -+ * gsm-utils.init really call restart with --stop first -+ - init script calls --start twice (Closes: #377448) -+ * Explictly set /bin/bash: gsmsmsspool & gsmsmsrequeue -+ - bashism in /bin/sh script (Closes: #464981) -+ - gsmsmsrequeue contains bashism or function error (Closes: #459396) -+ * Patch apps/gsmsmsstore.cc - thks Isaac Wilcox -+ - gsmsmsstore device existence check causes problems with RFCOMM -+ devices (Closes: #340179) -+ * Only start gsmsmsd if set in /etc/default/gsm-utils. crontab -> examples -+ - gsmsmsd should be optional / start only if told so in -+ /etc/default/gsm-utils (Closes: #474093) -+ * Apply patch from Stefan Katerkamp & Jacob Nevins -+ - Gsmsendsms fails with SonyEricsson W880 (fix included) (Closes: -+ #413341) -+ -+ -- Mark Purcell Mon, 06 Oct 2008 15:01:49 +1100 -+ -+gsmlib (1.10-12.5) unstable; urgency=low -+ -+ * Non-maintainer upload. -+ * Yet another bashism that was later on reported on the old bug report, thus -+ again closes: #464981 -+ * Also found a shell related problem in debian/rules and fixed it. -+ * Bumped standard to 3.7.3. -+ -+ -- Michael Meskes Mon, 14 Apr 2008 10:48:19 +0200 -+ -+gsmlib (1.10-12.4) unstable; urgency=low -+ -+ * Non-maintainer upload. -+ * Argh, somehow I mananged to upload without fixing the bug completely, -+ sorry. Added those missing braces, closes: #464981. -+ -+ -- Michael Meskes Wed, 09 Apr 2008 14:46:08 +0200 -+ -+gsmlib (1.10-12.3) unstable; urgency=high -+ -+ * Non-maintainer upload. -+ * Removed bashism in contrib/gsmsmsrequeue (Closes: #464981). -+ -+ -- Michael Meskes Sun, 06 Apr 2008 15:37:35 +0200 -+ -+gsmlib (1.10-12.2) unstable; urgency=low -+ -+ * Non-maintainer upload. -+ * Fix FTBFS with GCC 4.3: 'strerror' was not declared in this scope, thanks -+ to Cyril Brulebois for the patch (Closes: #455402). -+ -+ -- Christoph Berg Fri, 04 Apr 2008 18:01:05 +0200 -+ -+gsmlib (1.10-12.1) unstable; urgency=low -+ -+ * Non-maintainer upload to solve release goal. -+ * Add LSB dependency header to init.d scripts (Closes: #464061). -+ -+ -- Petter Reinholdtsen Fri, 28 Mar 2008 11:39:20 +0100 -+ -+gsmlib (1.10-12) unstable; urgency=low -+ -+ * addgroup --system gsmsms works better. Thanks Jon -+ * only delete gsmsms on purge -+ - gsm-utils: deletes and recreates the gsmsms user on each upgrade -+ (Closes: #346238) -+ - gsm-utils fails installation / addgroup: The user gsmsms; does -+ not exist (Closes: #445404) -+ * lintian cleanup: debian-rules-ignores-make-clean-error substvar- -+ source-version-is-deprecated -+ * Scripts are installed +x -+ - gsm-utils: uselessly installs non-executable scripts into /usr/bin -+ (Closes: #346230) -+ * Remove bogus symlink -+ - gsm-utils: wrong symlink for manpage gsmsiectl.1 (Closes: #322382) -+ - gsm-utils: gsmsiectl.1 dangling symlink (Closes: #399582) -+ * debian/gsm-utils.init reload/restart was not calling --stop. Thanks -+ Barry -+ - init script calls --start twice (Closes: #377448) -+ -+ -- Mark Purcell Mon, 08 Oct 2007 21:44:00 +0100 -+ -+gsmlib (1.10-11) unstable; urgency=low -+ -+ * Create system group gsmsms - Thanks Emmanuel -+ - gsm-utils: creates group in non-system gid range (Closes: #353967) -+ - gsm-utils: postinst should create system grp gsmsms (Closes: -+ #390266) -+ * Upgrade to compat 4 -+ * Apply gcc-4.3 patch from Martin -+ - FTBFS with GCC 4.3: missing #includes (Closes: #417222) -+ -+ -- Mark Purcell Sat, 29 Sep 2007 18:22:56 +0100 -+ -+gsmlib (1.10-10) unstable; urgency=low -+ -+ * FTBFS with G++ 4.1: extra qualifications (Closes: #356109) -+ -+ -- Mark Purcell Sat, 20 May 2006 21:54:42 +0100 -+ -+gsmlib (1.10-9) unstable; urgency=low -+ -+ * library package needs to be renamed (libstdc++ allocator change) -+ (Closes: #339179) -+ -+ -- Mark Purcell Mon, 21 Nov 2005 21:19:51 +0000 -+ -+gsmlib (1.10-8) unstable; urgency=low -+ -+ * removal of automake1.6 (Closes: #335123) -+ * fails with dash [bashisms in scripts] (Closes: #309834) -+ * Update libtool Fixes: gsmlib(GNU/k*BSD): FTBFS: out of date libtool scripts (Closes: -+ #319688) -+ * [INTL:de] German PO file corrections (Closes: #314060) -+ * Fix: old-fsf-address-in-copyright-file -+ -+ -- Mark Purcell Thu, 3 Nov 2005 22:40:19 +0000 -+ -+gsmlib (1.10-7) unstable; urgency=low -+ -+ * C++ 4.0 transition -+ * Closes: #315864: Missing manpages -+ * gsm-utils: maintainer-script-needs-depends-on-adduser postinst -+ -+ -- Mark Purcell Sat, 23 Jul 2005 00:46:31 +1000 -+ -+gsmlib (1.10-6) unstable; urgency=low -+ -+ * Rebuild for invalid dependancies -+ * Closes: #258056: libgsmme 99% cpu usage -+ - Patch from Emard -+ * Closes: #274382: FTBFS with gcc-3.4: template-id `operator< -+ <>' for `bool gsmlib::operator<(const -+ gsmlib::MapKey<gsmlib::SortedPhonebookBase>&, const -+ gsmlib::MapKey<gsmlib::SortedPhonebookBase>&)' does not -+ match any template declaration -+ - Patch from Andreas Jochens -+ * Closes: #294251: FTBFS (amd64/gcc-4.0): explicit qualification in -+ declaration of `bool gsmlib::operator<(const -+ gsmlib::MapKey<SortedStore>&, const -+ gsmlib::MapKey<SortedStore>&)' -+ - Patch from Andreas Jochens -+ * Closes: #200189: Patch and contribution -+ + Added multi-queue-priority-system and syslog patch (Matthias Goebl) -+ + Included init, spool and requeue scripts for gsmsmsd (Matthias Goebl) -+ + gsmsmsd runs with own user and group (gsmsms:gsmsms) (Matthias Goebl) -+ -+ -- Mark Purcell Tue, 17 May 2005 11:34:45 +0100 -+ -+gsmlib (1.10-5) unstable; urgency=low -+ -+ * Change Section: libdevel -+ * gsm_unix_serial.cc patch from Daniel Schepler to fix g++-3.3 -+ compliation. Thanks. (Closes: Bug#195151) -+ -+ -- Mark Purcell Sat, 19 Jul 2003 15:57:28 +1000 -+ -+gsmlib (1.10-4) unstable; urgency=low -+ -+ * Include file descriptor leak patch from Edd Dumbill (Closes: -+ Bug#168475) -+ * lintian cleanup: description-synopsis-might-not-be-phrased-properly -+ * lintian cleanup: configure-generated-file-in-source -+ -+ -- Mark Purcell Sun, 9 Feb 2003 14:04:54 +1100 -+ -+gsmlib (1.10-3) unstable; urgency=low -+ -+ * New Maintainer (Closes: Bug#180061). Thanks Mikael for your work. -+ -+ -- Mark Purcell Sat, 8 Feb 2003 16:55:26 +1100 -+ -+gsmlib (1.10-2) unstable; urgency=low -+ -+ * Rebuild to use the new c++ ABI (GCC 3.2) -+ -+ -- Mikael Hedin Thu, 23 Jan 2003 20:57:50 +0100 -+ -+gsmlib (1.10-1) unstable; urgency=low -+ -+ * New upstrem release. -+ -+ -- Mikael Hedin Wed, 6 Nov 2002 17:44:17 +0100 -+ -+gsmlib (1.9-2) unstable; urgency=low -+ -+ * Made new rules for the config.guess/sub update thing (closes: #146865, -+ #146867). -+ -+ -- Mikael Hedin Tue, 14 May 2002 09:28:03 +0200 -+ -+gsmlib (1.9-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Use chrpath to get rid of rpaths. -+ * Add mini-manpage for gsmsiexfer. -+ * Remove b-d on auto-stuff, we don't use them. -+ -+ -- Mikael Hedin Mon, 13 May 2002 22:10:28 +0200 -+ -+gsmlib (1.8-2) unstable; urgency=low -+ -+ * Removed b-d on gcc 3.0, as they are no longer nessecary. -+ -+ -- Mikael Hedin Thu, 24 Jan 2002 12:59:07 +0100 -+ -+gsmlib (1.8-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Revert the arch hack, now it should compile with either g++. -+ * Include the new lib in libgsmme1. Run dh_makeshlibs -V because of this. -+ * Added info for gsmsiectl in gsmctl(1). -+ -+ -- Mikael Hedin Wed, 9 Jan 2002 22:38:45 +0100 -+ -+gsmlib (1.7-2) unstable; urgency=low -+ -+ * gsm-utils: Added shlibs:Depends (closes: #126127). -+ * Spelling correction (closes: #124705, #124972) -+ * Rm libgsmme1.postins, and let dh_makeshlibs take care of ldconfig. -+ * Made explicit arch list without sparc and arm, they cannot use g++-3.0 -+ right now. -+ -+ -- Mikael Hedin Sat, 22 Dec 2001 20:27:54 +0100 -+ -+gsmlib (1.7-1) unstable; urgency=low -+ -+ * New upstream -+ * Use gcc-3.0 and g++-3.0, 2.95 doesn't compile. -+ -+ -- Mikael Hedin Thu, 1 Nov 2001 10:24:33 +0100 -+ -+gsmlib (1.6-5) unstable; urgency=low -+ -+ * Updated manpage (closes: #110973) -+ * Corrected problem with OP status (closes: #110970) -+ -+ -- Mikael Hedin Sat, 8 Sep 2001 18:12:17 +0200 -+ -+gsmlib (1.6-4) unstable; urgency=low -+ -+ * Support DEB_BUILD_OPTIONS -+ * Changed libgsmme-dev to section devel. -+ * Reran libtoolize. -+ * Lots of small patches to compile with g++-3.0. (Closes: #104411) -+ * Removed dh_testversion. -+ -+ -- Mikael Hedin Thu, 12 Jul 2001 16:06:23 +0200 -+ -+gsmlib (1.6-3) unstable; urgency=low -+ -+ * Various minor corrections. -+ -+ -- Mikael Hedin Thu, 8 Mar 2001 16:24:07 +0100 -+ -+gsmlib (1.6-2) unstable; urgency=low -+ -+ * Dont install INSTALL. Correct indentation for libgsmme1 description. -+ -+ -- Mikael Hedin Tue, 6 Mar 2001 14:55:05 +0100 -+ -+gsmlib (1.6-1) unstable; urgency=low -+ -+ * New upstream version. -+ -+ -- Mikael Hedin Mon, 29 Jan 2001 17:57:21 +0100 -+ -+gsmlib (1.5-1) unstable; urgency=low -+ -+ * Initial Release. -+ -+ -- Mikael Hedin Thu, 14 Dec 2000 01:06:40 +0100 -+ ---- gsmlib-1.10.orig/debian/gsm-utils.docs -+++ gsmlib-1.10/debian/gsm-utils.docs -@@ -0,0 +1,4 @@ -+NEWS -+README -+TODO -+doc/FAQ ---- gsmlib-1.10.orig/debian/rules -+++ gsmlib-1.10/debian/rules -@@ -0,0 +1,129 @@ -+#!/usr/bin/make -f -+ -+# Uncomment this to turn on verbose mode. -+#export DH_VERBOSE=1 -+ -+# shared library versions, option 1 -+#version=2.0.5 -+#major=2 -+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so -+me_version=`ls gsmlib/.libs/libgsmme*.so.* | \ -+ awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -+me_major=`ls gsmlib/.libs/libgsmme*.so.* | \ -+ awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` -+ex_version=`ls ext/.libs/libgsmext*.so.* | \ -+ awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -+ex_major=`ls ext/.libs/libgsmext*.so.* | \ -+ awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` -+ -+ -+export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -+export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) -+ -+ -+# FOR AUTOCONF 2.13 ONLY -+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) -+ confflags += $(DEB_HOST_GNU_TYPE) -+else -+ confflags += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE) -+endif -+ -+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) -+CFLAGS += -g -+CXXFLAGS += -g -+endif -+ -+configure: configure-stamp -+configure-stamp: -+ dh_testdir -+ # Add here commands to configure the package. -+ CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" INSTALL_PROGRAM=$(INSTALL_PROGRAM) \ -+ ./configure $(confflags) --prefix=/usr --mandir=\$${prefix}/share/man \ -+ --infodir=\$${prefix}/share/info -+ -+ touch configure-stamp -+ -+build: configure-stamp build-stamp -+build-stamp: -+ dh_testdir -+ -+ # Add here commands to compile the package. -+ $(MAKE) -+ -+ touch build-stamp -+ -+clean: -+ dh_testdir -+ dh_testroot -+ -+ # Add here commands to clean up after the build process. -+ [ ! -f Makefile ] || $(MAKE) distclean -+ rm -f build-stamp configure-stamp config.log config.status po/de.gmo -+ -+ -test -r /usr/share/misc/config.sub && \ -+ cp -f /usr/share/misc/config.sub scripts/config.sub -+ -test -r /usr/share/misc/config.guess && \ -+ cp -f /usr/share/misc/config.guess scripts/config.guess -+ -+ dh_clean -+ -+install: build -+ dh_testdir -+ dh_testroot -+ dh_clean -k -+ dh_installdirs -+ dh_installdirs -pgsm-utils -+ -+ # Add here commands to install the package into debian/gsmlib. -+ $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp -+ chrpath -d debian/tmp/usr/bin/* -+ cp contrib/gsmsmsspool contrib/gsmsmsrequeue debian/tmp/usr/bin -+ -+ -+# Build architecture-independent files here. -+binary-indep: build install -+# We have nothing to do by default. -+ -+# Build architecture-dependent files here. -+binary-arch: build install -+ dh_testdir -+ dh_testroot -+ # -+ # build libgsmlib${major} package by moving files from gsmlib-dev -+ # -+ dh_movefiles -plibgsmme$(me_major)c2a \ -+ usr/lib/libgsmme.so.$(me_major) \ -+ usr/lib/libgsmme.so.$(me_version) \ -+ usr/lib/libgsmext.so.$(ex_major) \ -+ usr/lib/libgsmext.so.$(ex_version) \ -+ usr/share/locale -+ -+ dh_movefiles -plibgsmme-dev \ -+ usr/include \ -+ usr/lib -+ -+ dh_movefiles -pgsm-utils \ -+ usr/bin -+ -+ -+ dh_installdocs -+ dh_installexamples -+ dh_installmenu -+ dh_installinit -+ dh_installcron -+ dh_installman -pgsm-utils debian/*.1 debian/tmp/usr/share/man/man*/* -+ dh_installinfo -+ dh_installchangelogs ChangeLog -+ dh_link -+ dh_strip -+ dh_compress -+ dh_fixperms -+ dh_makeshlibs -V -+ dh_installdeb -+ dh_shlibdeps -ldebian/libgsmme1c2a/usr/lib -+ dh_gencontrol -+ dh_md5sums -+ dh_builddeb -+ -+binary: binary-indep binary-arch -+.PHONY: build clean binary-indep binary-arch binary install configure ---- gsmlib-1.10.orig/contrib/gsmsmsrequeue -+++ gsmlib-1.10/contrib/gsmsmsrequeue -@@ -0,0 +1,48 @@ -+#! /bin/bash -+# -+# /usr/bin/gsmsmsrequeue: Re-queues failed SMS -+# -+# written by Matthias Goebl -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+SMSADMIN=root -+SUBJECT="SMS delivery report:" -+ -+send_notify() -+{ -+ tmpfile="$SPOOLDIR/tmp/"`basename "$1"` -+ status="$2" -+ if mv "$1" "$tmpfile" 2>/dev/null; then -+ # extract the first tab-separated field after the phone number as -+ # email-address to send the notification to -+ mailto=` cat "$tmpfile" | sed -ne '1s/^[^ ]* \([^ ]*\).*/\1/p' ` -+ test -z "$mailto" && mailto="$SMSADMIN" -+ cat "$tmpfile" | mail -s "$SUBJECT $status" "$mailto" -+ rm "$tmpfile" -+ fi -+} -+do_accounting() -+{ -+ true; -+} -+ -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils -+ -+for p in `seq 1 $PRIORITIES`; do -+ ls "$SPOOLDIR/failed$p" | while read file; do -+ if expr "$file" : ".*rrrrrrrrrrrr" >/dev/null; then -+ send_notify "$SPOOLDIR/failed$p/$file" "failed" -+ else -+ # re-queue SMS -+ mv "$SPOOLDIR/failed$p/$file" "$SPOOLDIR/queue$p/${file}r" 2>/dev/null -+ fi -+ done -+done -+ -+for p in `seq 1 $PRIORITIES`; do -+ ls "$SPOOLDIR/sent$p" | while read file; do -+ do_accounting "$SPOOLDIR/sent$p/$file" "sent" -+ send_notify "$SPOOLDIR/sent$p/$file" "sent" -+ done -+done ---- gsmlib-1.10.orig/contrib/gsm-utils.cron.d -+++ gsmlib-1.10/contrib/gsm-utils.cron.d -@@ -0,0 +1,3 @@ -+# /etc/cron.d/gsm-utils: crontab fragment for gsm-utils -+ -+*/5 * * * * root if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi ---- gsmlib-1.10.orig/contrib/gsm-utils.default -+++ gsmlib-1.10/contrib/gsm-utils.default -@@ -0,0 +1,13 @@ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+ -+SMSADMIN=root -+SUBJECT="SMS delivery report:" -+ -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+ -+do_accounting () { true; } # it's your turn ---- gsmlib-1.10.orig/contrib/gsmsmsspool -+++ gsmlib-1.10/contrib/gsmsmsspool -@@ -0,0 +1,34 @@ -+#! /bin/bash -+# -+# /usr/bin/gsmsmsspool: Queues SMS for sending -+# -+# written by Matthias Goebl -+ -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils -+ -+if [ -z "$1" ]; then -+ echo "Usage: gsmsmsspool NUMBER [MESSAGE]" -+ exit 1 -+fi -+ -+priority=$PRIORITIES # default priority -+test -n "$GSMSMS_PRIORITY" && priority="$GSMSMS_PRIORITY" -+mailto=`id -un` -+test -n "$GSMSMS_NOTIFY" && mailto="$GSMSMS_NOTIFY" -+ -+tmpfile="$SPOOLDIR/tmp/`date +%s`.$$" -+umask 022 -+echo "$1 $mailto" > "$tmpfile" -+if [ -n "$2" ]; then -+ echo "$2" | head -c 160 >> "$tmpfile" -+else -+ head -c 160 >> "$tmpfile" -+fi -+ -+if [ "`id -un`" = "root" ]; then -+ chown gsmsms:gsmsms "$tmpfile" -+fi -+ -+mv "$tmpfile" "$SPOOLDIR/queue$priority/" ---- gsmlib-1.10.orig/contrib/gsm-utils.init -+++ gsmlib-1.10/contrib/gsm-utils.init -@@ -0,0 +1,81 @@ -+#! /bin/sh -+### BEGIN INIT INFO -+# Provides: gsm-utils -+# Required-Start: $remote_fs $syslog -+# Required-Stop: $remote_fs $syslog -+# Default-Start: 2 3 4 5 -+# Default-Stop: 0 1 6 -+# Short-Description: Start daemon at boot time -+# Description: Enable service provided by daemon. -+### END INIT INFO -+# -+# /etc/init.d/gsm-utils: Controls the GSM SMS send daemon -+# -+# written by Matthias Goebl -+ -+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -+DAEMON=/usr/bin/gsmsmsd -+NAME=gsmsmsd -+DESC="GSM SMS send daemon" -+ -+test -x $DAEMON || exit 0 -+ -+PHONEDEV=/dev/mobilephone # or /dev/ttyS0 or /dev/ircomm0 -+BAUDRATE=9600 -+PIN="" # or 1234 -+SMSPROCESSOR="" # or /usr/bin/gsmsmsprocessor -+SPOOLDIR=/var/spool/sms -+PRIORITIES=3 -+STARTOPTS="" -+SMSUSER="gsmsms:gsmsms" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting some parameters -+ -+OPTIONS="-d $PHONEDEV -b $BAUDRATE -L -P $PRIORITIES" -+OPTIONS="$OPTIONS -s $SPOOLDIR/queue -S $SPOOLDIR/sent -F $SPOOLDIR/failed" -+test -n "$SMSPROCESSOR" && OPTIONS="$OPTIONS -a $SMSPROCESSOR" -+test -n "$SMSUSER" && STARTOPTS="$STARTOPTS --chuid $SMSUSER" -+test -r /etc/default/gsm-utils && . /etc/default/gsm-utils # for overwriting OPTIONS -+ -+case "$1" in -+ start) -+ echo -n "Starting $DESC: " -+ if [ -n "$PIN" ];then -+ echo -n "entering PIN.. " -+ ( -+ # This is ugly.. But if the PIN is already entered, the ME returns -+ # "ERROR" and makes gsmctl retrying.. -+ /usr/bin/gsmctl -d $PHONEDEV -b $BAUDRATE -I "+cpin=$PIN" & -+ PID=$! -+ sleep 3 -+ kill $PID 2>/dev/null -+ ) >/dev/null 2>&1 -+ fi -+ echo -n "$NAME" -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ stop) -+ echo -n "Stopping $DESC: $NAME " -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --exec $DAEMON -+ sleep 5 -+ echo "." -+ ;; -+ restart|force-reload) -+ echo -n "Restarting $DESC: $NAME" -+ start-stop-daemon --stop --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background $STARTOPTS --exec $DAEMON -- $OPTIONS -+ sleep 5 -+ start-stop-daemon --start --quiet --pidfile /var/run/gsm-utils/$NAME.pid \ -+ --make-pidfile --background --exec $DAEMON -- $OPTIONS -+ echo "." -+ ;; -+ *) -+ N=/etc/init.d/gsm-utils -+ echo "Usage: $N {start|stop|restart|force-reload}" >&2 -+ exit 1 -+ ;; -+esac -+ -+exit 0 diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib_1.10.orig.tar.gz deleted file mode 100644 index c3e2c3bb743da9a3ff5fd23c22226e7e9c20d6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474591 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

y?NWl|-xxOBP>;aWs+( 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�tXTZ`Nv+9T#Ymn-Q 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‰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�$k_J@TZ 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 From d642c2c1a6a30b1298d29cbd0be39be7aed3f418 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 23 Apr 2012 12:16:53 -0500 Subject: [PATCH 235/630] add loopback_initial_codec variable to specifiy the codec of a one legeded loopback channel --- src/include/switch_loadable_module.h | 2 ++ src/mod/endpoints/mod_loopback/mod_loopback.c | 13 +++++++++++-- src/switch_loadable_module.c | 6 +++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/include/switch_loadable_module.h b/src/include/switch_loadable_module.h index 62fcac2343..f1fde8d7d6 100644 --- a/src/include/switch_loadable_module.h +++ b/src/include/switch_loadable_module.h @@ -115,6 +115,8 @@ SWITCH_DECLARE(switch_endpoint_interface_t *) switch_loadable_module_get_endpoin */ SWITCH_DECLARE(switch_codec_interface_t *) switch_loadable_module_get_codec_interface(const char *name); +SWITCH_DECLARE(char *) switch_parse_codec_buf(char *buf, uint32_t *interval, uint32_t *rate, uint32_t *bit); + /*! \brief Retrieve the dialplan interface by it's registered name \param name the name of the dialplan diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index b333cebda9..9ad780f838 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -122,8 +122,8 @@ static void clear_queue(private_t *tech_pvt) static switch_status_t tech_init(private_t *tech_pvt, switch_core_session_t *session, switch_codec_t *codec) { const char *iananame = "L16"; - int rate = 8000; - int interval = 20; + uint32_t rate = 8000; + uint32_t interval = 20; switch_status_t status = SWITCH_STATUS_SUCCESS; switch_channel_t *channel = switch_core_session_get_channel(session); const switch_codec_implementation_t *read_impl; @@ -132,6 +132,15 @@ static switch_status_t tech_init(private_t *tech_pvt, switch_core_session_t *ses iananame = codec->implementation->iananame; rate = codec->implementation->samples_per_second; interval = codec->implementation->microseconds_per_packet / 1000; + } else { + const char *var; + + if ((var = switch_channel_get_variable(channel, "loopback_initial_codec"))) { + char *dup = switch_core_session_strdup(session, var); + uint32_t bit; + iananame = switch_parse_codec_buf(dup, &interval, &rate, &bit); + } + } if (switch_core_codec_ready(&tech_pvt->read_codec)) { diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c index 812afe785b..51f343a70e 100644 --- a/src/switch_loadable_module.c +++ b/src/switch_loadable_module.c @@ -2075,7 +2075,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs(const switch_codec_impleme } -char *parse_codec_buf(char *buf, uint32_t *interval, uint32_t *rate, uint32_t *bit) +SWITCH_DECLARE(char *) switch_parse_codec_buf(char *buf, uint32_t *interval, uint32_t *rate, uint32_t *bit) { char *cur, *next = NULL, *name, *p; @@ -2119,7 +2119,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_ uint32_t interval = 0, rate = 0, bit = 0; switch_copy_string(buf, prefs[x], sizeof(buf)); - name = parse_codec_buf(buf, &interval, &rate, &bit); + name = switch_parse_codec_buf(buf, &interval, &rate, &bit); for(j = 0; j < x; j++) { char *jname; @@ -2135,7 +2135,7 @@ SWITCH_DECLARE(int) switch_loadable_module_get_codecs_sorted(const switch_codec_ } switch_copy_string(jbuf, prefs[j], sizeof(jbuf)); - jname = parse_codec_buf(jbuf, &jinterval, &jrate, &jbit); + jname = switch_parse_codec_buf(jbuf, &jinterval, &jrate, &jbit); if (jinterval == 0) { jinterval = switch_default_ptime(jname, 0); From d5766ceaa05b4cd4583b248133886951e8b76f67 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 23 Apr 2012 13:25:21 -0500 Subject: [PATCH 236/630] FS-4115 --resolve this should fix it in all circumstances --- src/switch_core_media_bug.c | 37 +++++++++++++++++++++++++------------ src/switch_core_session.c | 5 +++++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 52151b9681..f5d14137b7 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -129,7 +129,6 @@ SWITCH_DECLARE(void) switch_core_media_bug_flush(switch_media_bug_t *bug) bug->record_frame_size = 0; bug->record_pre_buffer_count = 0; - } SWITCH_DECLARE(void) switch_core_media_bug_inuse(switch_media_bug_t *bug, switch_size_t *readp, switch_size_t *writep) @@ -207,7 +206,31 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b bug->record_pre_buffer_count++; return SWITCH_STATUS_FALSE; } - + + if (!bug->record_frame_size) { + if (do_read && do_write) { + switch_size_t frame_size; + switch_codec_implementation_t read_impl = { 0 }; + switch_codec_implementation_t other_read_impl = { 0 }; + switch_core_session_t *other_session; + + switch_core_session_get_read_impl(bug->session, &read_impl); + frame_size = read_impl.decoded_bytes_per_packet; + + if (switch_core_session_get_partner(bug->session, &other_session) == SWITCH_STATUS_SUCCESS) { + switch_core_session_get_read_impl(other_session, &other_read_impl); + switch_core_session_rwunlock(other_session); + + if (read_impl.decoded_bytes_per_packet < other_read_impl.decoded_bytes_per_packet) { + frame_size = other_read_impl.decoded_bytes_per_packet; + } + } + + bug->record_frame_size = frame_size; + } + } + + if (bug->record_frame_size) { if ((do_read && do_read < bug->record_frame_size) || (do_write && do_write < bug->record_frame_size)) { return SWITCH_STATUS_FALSE; @@ -220,16 +243,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b if (do_write && do_write > bug->record_frame_size) { do_write = bug->record_frame_size; } - } else { - if (do_read && do_write) { - if (do_read > do_write) { - do_read = do_write; - } else if (do_write > do_read) { - do_write = do_read; - } - - bug->record_frame_size = do_read; - } } fill_read = !do_read; diff --git a/src/switch_core_session.c b/src/switch_core_session.c index f42104bdc3..6551158522 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -724,11 +724,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_perform_receive_message(swit } } + message->_file = NULL; message->_func = NULL; message->_line = 0; if (switch_channel_up_nosig(session->channel)) { + if (message->message_id == SWITCH_MESSAGE_INDICATE_BRIDGE || message->message_id == SWITCH_MESSAGE_INDICATE_UNBRIDGE) { + switch_core_media_bug_flush_all(session); + } + switch (message->message_id) { case SWITCH_MESSAGE_REDIRECT_AUDIO: case SWITCH_MESSAGE_INDICATE_ANSWER: From 0ec4e826641a05405303342f836d86b9258c919e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 24 Apr 2012 04:00:43 +0000 Subject: [PATCH 237/630] getsounds.sh: look for a locally-cached copy first This lets you specify a FS_SOUNDS_DIR in which to look for the sound tarballs. This makes it easier to use git clean -fdx without downloading the sounds every time. --- build/getsounds.sh.in | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/build/getsounds.sh.in b/build/getsounds.sh.in index 09105fd280..c4a434ad28 100755 --- a/build/getsounds.sh.in +++ b/build/getsounds.sh.in @@ -23,10 +23,15 @@ pwd echo "# $0 $1 $2" if [ ! -f $tarfile ] ; then - $DOWNLOAD_CMD $base$tarfile - if [ ! -f $tarfile ] ; then - echo cannot find $tarfile - exit 1 + if [ -f $FS_SOUNDS_DIR/$tarfile ]; then + test ! cp -l $FS_SOUNDS_DIR/$tarfile . \ + || cp $FS_SOUNDS_DIR/$tarfile . + else + $DOWNLOAD_CMD $base$tarfile + if [ ! -f $tarfile ] ; then + echo cannot find $tarfile + exit 1 + fi fi fi From a3367b2da2672bf07eb7924c4704019eff88d23b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 24 Apr 2012 04:42:36 +0000 Subject: [PATCH 238/630] getsounds.sh: adjust last commit --- build/getsounds.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/getsounds.sh.in b/build/getsounds.sh.in index c4a434ad28..f25922c7ef 100755 --- a/build/getsounds.sh.in +++ b/build/getsounds.sh.in @@ -24,7 +24,7 @@ echo "# $0 $1 $2" if [ ! -f $tarfile ] ; then if [ -f $FS_SOUNDS_DIR/$tarfile ]; then - test ! cp -l $FS_SOUNDS_DIR/$tarfile . \ + cp -l $FS_SOUNDS_DIR/$tarfile . \ || cp $FS_SOUNDS_DIR/$tarfile . else $DOWNLOAD_CMD $base$tarfile From fbbbd06e28afc1a2008802abf7664cc8052ab433 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 24 Apr 2012 14:31:39 +0200 Subject: [PATCH 239/630] gsmopen: send out those pesky DTMFs --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 2 +- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index e422c9570b..2b90706d8c 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2660,7 +2660,7 @@ int gsmopen_senddigit(private_t *tech_pvt, char digit) char at_command[256]; memset(at_command, '\0', 256); - sprintf(at_command, "%s=\"%c\"", tech_pvt->at_send_dtmf, digit); + sprintf(at_command, "%s=1,%c", tech_pvt->at_send_dtmf, digit); res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); if (res) { ERRORA("senddigit command failed, command used: '%s=\"%c\"', giving up\n", GSMOPEN_P_LOG, tech_pvt->at_send_dtmf, digit); diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 8ccfeda0ae..d9a5668e80 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1190,7 +1190,7 @@ static switch_status_t load_config(int reload_type) const char *at_hangup_expect = "OK"; const char *at_answer = "ATA"; const char *at_answer_expect = "OK"; - const char *at_send_dtmf = "AT+VTS"; + const char *at_send_dtmf = "AT^DTMF"; const char *at_preinit_1 = ""; const char *at_preinit_1_expect = ""; const char *at_preinit_2 = ""; From 273aa89423e84fd59008965c2c55d64ec0c7969e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 24 Apr 2012 07:46:06 -0500 Subject: [PATCH 240/630] set uniq header flag --- src/mod/applications/mod_httapi/mod_httapi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c index bc1731d21e..9d5b8003a5 100644 --- a/src/mod/applications/mod_httapi/mod_httapi.c +++ b/src/mod/applications/mod_httapi/mod_httapi.c @@ -2161,6 +2161,7 @@ SWITCH_STANDARD_APP(httapi_function) if (!zstr(url) && switch_stristr("://", url)) { if (!params) { switch_event_create(¶ms, SWITCH_EVENT_CLONE); + params->flags |= EF_UNIQ_HEADERS; } switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "url", url); } From 2a25c4f2e70208a4e76df3e9f3668a7b1742ea30 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Tue, 24 Apr 2012 16:30:12 +0200 Subject: [PATCH 241/630] gsmopen: AT commands cosmetics --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 2b90706d8c..b59860356d 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -2218,7 +2218,7 @@ int gsmopen_serial_hangup_AT(private_t *tech_pvt) res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CHUP"); if (res) { - ERRORA("at_hangup command failed, command used: 'AT+CHUP'\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("at_hangup command timeout, command used: 'AT+CHUP'\n", GSMOPEN_P_LOG); //return -1; } @@ -2663,7 +2663,7 @@ int gsmopen_senddigit(private_t *tech_pvt, char digit) sprintf(at_command, "%s=1,%c", tech_pvt->at_send_dtmf, digit); res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); if (res) { - ERRORA("senddigit command failed, command used: '%s=\"%c\"', giving up\n", GSMOPEN_P_LOG, tech_pvt->at_send_dtmf, digit); + DEBUGA_GSMOPEN("XXX answer (OK) takes long to come, goes into timeout. command used: '%s=1,%c'\n", GSMOPEN_P_LOG, tech_pvt->at_send_dtmf, digit); } } From d79982e72cc8070fc53ee2b95eadbc3344ebb2a8 Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Wed, 25 Apr 2012 00:18:56 +0000 Subject: [PATCH 242/630] added SSL support to mod_http_cache --- .../conf/autoload_configs/http_cache.conf.xml | 3 + .../mod_http_cache/conf/cacert.pem | 3366 +++++++++++++++++ .../mod_http_cache/mod_http_cache.c | 62 +- 3 files changed, 3422 insertions(+), 9 deletions(-) create mode 100644 src/mod/applications/mod_http_cache/conf/cacert.pem diff --git a/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml b/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml index 4150d6472e..d4b5475ec9 100644 --- a/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml +++ b/src/mod/applications/mod_http_cache/conf/autoload_configs/http_cache.conf.xml @@ -3,6 +3,9 @@ + + + diff --git a/src/mod/applications/mod_http_cache/conf/cacert.pem b/src/mod/applications/mod_http_cache/conf/cacert.pem new file mode 100644 index 0000000000..72e14177c9 --- /dev/null +++ b/src/mod/applications/mod_http_cache/conf/cacert.pem @@ -0,0 +1,3366 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Sun Feb 19 04:03:37 2012 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Netscape security libraries. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1994-2000 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** +# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.82 $ $Date: 2012/02/18 21:41:46 $ + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 1 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy +MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE +NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i +o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq +kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 +RbyhkwS7hp86W0N6w4pl +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 3 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy +MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD +VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS +xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi +up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 +mPnHfxsb1gYgAlihw6ID +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC +AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER +gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B +AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS +o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z +2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX +OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE +ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y +MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT +DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn +2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 +BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx +JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e +uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 +jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia +78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm +V+GRMOrN +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +TDC OCES Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE +ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 +MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH +nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 +zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV +iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde +dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO +3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB +5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k +ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm +cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp +Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x +LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM +MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm +aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy +MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 ++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 +NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 +A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc +A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 +AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 +AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Firmaprofesional Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT +GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp +Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA +ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL +MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT +OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 +ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V +j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH +lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf +3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 +NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww +KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG +AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD +ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq +u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf +wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm +7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG +VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= +-----END CERTIFICATE----- + +Wells Fargo Root CA +=================== +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl +bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv +MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX +x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 +E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 +OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j +sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj +YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF +BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD +ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv +m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R +OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx +x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 +tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +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 +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) FÅ‘tanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +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 +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +TC TrustCenter Universal CA III +=============================== +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe +Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU +QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex +KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt +QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO +juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut +CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 +M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G +A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA +g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ +KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK +BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq +woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- diff --git a/src/mod/applications/mod_http_cache/mod_http_cache.c b/src/mod/applications/mod_http_cache/mod_http_cache.c index 452eadc656..9ea3435ea1 100644 --- a/src/mod/applications/mod_http_cache/mod_http_cache.c +++ b/src/mod/applications/mod_http_cache/mod_http_cache.c @@ -96,12 +96,12 @@ struct http_get_data { }; typedef struct http_get_data http_get_data_t; -static switch_status_t http_get(cached_url_t *url, switch_core_session_t *session); +static switch_status_t http_get(url_cache_t *cache, cached_url_t *url, switch_core_session_t *session); static size_t get_file_callback(void *ptr, size_t size, size_t nmemb, void *get); static size_t get_header_callback(void *ptr, size_t size, size_t nmemb, void *url); static void process_cache_control_header(cached_url_t *url, char *data); -static switch_status_t http_put(switch_core_session_t *session, const char *url, const char *filename); +static switch_status_t http_put(url_cache_t *cache, switch_core_session_t *session, const char *url, const char *filename); /** * Queue used for clock cache replacement algorithm. This @@ -159,6 +159,12 @@ struct url_cache { int shutdown; /** Synchronizes shutdown of cache */ switch_thread_rwlock_t *shutdown_lock; + /** SSL cert filename */ + char *ssl_cacert; + /** Verify certificate */ + int ssl_verifypeer; + /** Verify that hostname matches certificate */ + int ssl_verifyhost; }; static url_cache_t gcache; @@ -173,12 +179,13 @@ static void url_cache_clear(url_cache_t *cache, switch_core_session_t *session); /** * Put a file to the URL + * @param cache the cache * @param session the (optional) session uploading the file * @param url The URL * @param filename The file to upload * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t http_put(switch_core_session_t *session, const char *url, const char *filename) +static switch_status_t http_put(url_cache_t *cache, switch_core_session_t *session, const char *url, const char *filename) { switch_status_t status = SWITCH_STATUS_SUCCESS; CURL *curl_handle = NULL; @@ -223,6 +230,18 @@ static switch_status_t http_put(switch_core_session_t *session, const char *url, switch_curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1); switch_curl_easy_setopt(curl_handle, CURLOPT_MAXREDIRS, 10); switch_curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "freeswitch-http-cache/1.0"); + if (!cache->ssl_verifypeer) { + switch_curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L); + } else { + /* this is the file with all the trusted certificate authorities */ + if (!zstr(cache->ssl_cacert)) { + switch_curl_easy_setopt(curl_handle, CURLOPT_CAINFO, cache->ssl_cacert); + } + /* verify that the host name matches the cert */ + if (!cache->ssl_verifyhost) { + switch_curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0L); + } + } switch_curl_easy_perform(curl_handle); switch_curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &httpRes); switch_curl_easy_cleanup(curl_handle); @@ -485,7 +504,7 @@ static char *url_cache_get(url_cache_t *cache, switch_core_session_t *session, c /* download the file */ url_cache_unlock(cache, session); - if (http_get(u, session) == SWITCH_STATUS_SUCCESS) { + if (http_get(cache, u, session) == SWITCH_STATUS_SUCCESS) { /* Got the file, let the waiters know it is available */ url_cache_lock(cache, session); u->status = CACHED_URL_AVAILABLE; @@ -708,11 +727,12 @@ static void cached_url_destroy(cached_url_t *url, switch_memory_pool_t *pool) /** * Fetch a file via HTTP + * @param cache the cache * @param url The cached URL entry * @param session the (optional) session * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t http_get(cached_url_t *url, switch_core_session_t *session) +static switch_status_t http_get(url_cache_t *cache, cached_url_t *url, switch_core_session_t *session) { switch_status_t status = SWITCH_STATUS_SUCCESS; switch_CURL *curl_handle = NULL; @@ -734,7 +754,19 @@ static switch_status_t http_get(cached_url_t *url, switch_core_session_t *sessio switch_curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *) &get_data); switch_curl_easy_setopt(curl_handle, CURLOPT_HEADERFUNCTION, get_header_callback); switch_curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER, (void *) url); - switch_curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "freeswitch-http-cache/1.0"); + switch_curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "freeswitch-http-cache/1.0"); + if (!cache->ssl_verifypeer) { + switch_curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L); + } else { + /* this is the file with all the trusted certificate authorities */ + if (!zstr(cache->ssl_cacert)) { + switch_curl_easy_setopt(curl_handle, CURLOPT_CAINFO, cache->ssl_cacert); + } + /* verify that the host name matches the cert */ + if (!cache->ssl_verifyhost) { + switch_curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0L); + } + } switch_curl_easy_perform(curl_handle); switch_curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &httpRes); switch_curl_easy_cleanup(curl_handle); @@ -791,7 +823,7 @@ static void setup_dir(url_cache_t *cache) static int isUrl(const char *filename) { - return !zstr(filename) && !strncmp("http://", filename, strlen("http://")); + return !zstr(filename) && (!strncmp("http://", filename, strlen("http://")) || !strncmp("https://", filename, strlen("https://"))); } #define HTTP_PREFETCH_SYNTAX "" @@ -910,7 +942,7 @@ SWITCH_STANDARD_API(http_cache_put) char *argv[10] = { 0 }; int argc = 0; - if (zstr(cmd) || strncmp("http://", cmd, strlen("http://"))) { + if (zstr(cmd) || (strncmp("http://", cmd, strlen("http://")) && strncmp("https://", cmd, strlen("https://")))) { stream->write_function(stream, "USAGE: %s\n", HTTP_PUT_SYNTAX); status = SWITCH_STATUS_SUCCESS; goto done; @@ -924,7 +956,7 @@ SWITCH_STANDARD_API(http_cache_put) goto done; } - status = http_put(session, argv[0], argv[1]); + status = http_put(&gcache, session, argv[0], argv[1]); if (status == SWITCH_STATUS_SUCCESS) { stream->write_function(stream, "+OK\n"); } else { @@ -1013,6 +1045,9 @@ static switch_status_t do_config(url_cache_t *cache) cache->location = SWITCH_PREFIX_DIR "/http_cache"; cache->prefetch_queue_size = 100; cache->prefetch_thread_count = 8; + cache->ssl_cacert = SWITCH_PREFIX_DIR "/conf/cacert.pem"; + cache->ssl_verifyhost = 1; + cache->ssl_verifypeer = 1; /* get params */ settings = switch_xml_child(cfg, "settings"); @@ -1035,6 +1070,15 @@ static switch_status_t do_config(url_cache_t *cache) } else if (!strcasecmp(var, "prefetch-thread-count")) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Setting prefetch-thread-count to %s\n", val); cache->prefetch_thread_count = atoi(val); + } else if (!strcasecmp(var, "ssl-cacert")) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Setting ssl-cacert to %s\n", val); + cache->ssl_cacert = switch_core_strdup(cache->pool, val); + } else if (!strcasecmp(var, "ssl-verifyhost")) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Setting ssl-verifyhost to %s\n", val); + cache->ssl_verifyhost = !switch_false(val); /* only disable if explicitly set to false */ + } else if (!strcasecmp(var, "ssl-verifypeer")) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Setting ssl-verifypeer to %s\n", val); + cache->ssl_verifypeer = !switch_false(val); /* only disable if explicitly set to false */ } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unsupported param: %s\n", var); } From 4178393a73dc3ed2137491e1da0dfcf92fcd9fbf Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Wed, 25 Apr 2012 01:30:47 +0000 Subject: [PATCH 243/630] fix bug with max-age --- src/mod/applications/mod_http_cache/mod_http_cache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_http_cache/mod_http_cache.c b/src/mod/applications/mod_http_cache/mod_http_cache.c index 9ea3435ea1..1e40ce2e15 100644 --- a/src/mod/applications/mod_http_cache/mod_http_cache.c +++ b/src/mod/applications/mod_http_cache/mod_http_cache.c @@ -365,7 +365,7 @@ static void process_cache_control_header(cached_url_t *url, char *data) return; } - url->max_age = switch_time_now() + (max_age * 1000 * 1000); + url->max_age = max_age * 1000 * 1000; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "setting max age to %u seconds from now\n", (int)max_age); } From 0e4fa9e23bd0bc2f3c639e47ee764552f6384755 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 25 Apr 2012 09:11:27 +0200 Subject: [PATCH 244/630] gsmopen: AT+CREG erratic behavior does no more give errors or warnings when badly formatted unsolicited signaling --- .../mod_gsmopen/gsmopen_protocol.cpp | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index b59860356d..33afb72e29 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -949,28 +949,29 @@ read: if (option_debug > 1) DEBUGA_GSMOPEN("|%s| +CREG: Display: %d, Registration=%d\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], n, stat); if (err < 2) { - WARNINGA("|%s| is not formatted as: |+CREG: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - } - if (stat == 0) { - ERRORA - ("|%s| CELLPHONE is not registered to network, consider to move it or additional antenna\n", - GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->not_registered = 1; - tech_pvt->home_network_registered = 0; - tech_pvt->roaming_registered = 0; - alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, + DEBUGA_GSMOPEN("|%s| is not formatted as: |+CREG: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + }else{ + if (stat == 0) { + ERRORA + ("|%s| CELLPHONE is not registered to network, consider to move it or additional antenna\n", + GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->not_registered = 1; + tech_pvt->home_network_registered = 0; + tech_pvt->roaming_registered = 0; + alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, "CELLPHONE is not registered to network, consider to move it or additional antenna"); - } else if (stat == 1) { - DEBUGA_GSMOPEN("|%s| CELLPHONE is registered to the HOME network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->not_registered = 0; - tech_pvt->home_network_registered = 1; - tech_pvt->roaming_registered = 0; - } else { - ERRORA("|%s| CELLPHONE is registered to a ROAMING network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - tech_pvt->not_registered = 0; - tech_pvt->home_network_registered = 0; - tech_pvt->roaming_registered = 1; - alarm_event(tech_pvt, ALARM_ROAMING_NETWORK_REGISTRATION, "CELLPHONE is registered to a ROAMING network"); + } else if (stat == 1) { + DEBUGA_GSMOPEN("|%s| CELLPHONE is registered to the HOME network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->not_registered = 0; + tech_pvt->home_network_registered = 1; + tech_pvt->roaming_registered = 0; + } else { + ERRORA("|%s| CELLPHONE is registered to a ROAMING network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + tech_pvt->not_registered = 0; + tech_pvt->home_network_registered = 0; + tech_pvt->roaming_registered = 1; + alarm_event(tech_pvt, ALARM_ROAMING_NETWORK_REGISTRATION, "CELLPHONE is registered to a ROAMING network"); + } } } From 7821e8ad9d4df05a6ade4f25b5305636c41458b3 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 25 Apr 2012 08:03:10 +0000 Subject: [PATCH 245/630] getsounds.sh: avoid copying sound files --- build/getsounds.sh.in | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/build/getsounds.sh.in b/build/getsounds.sh.in index f25922c7ef..de6cc72947 100755 --- a/build/getsounds.sh.in +++ b/build/getsounds.sh.in @@ -22,17 +22,17 @@ echo -n "#" pwd echo "# $0 $1 $2" -if [ ! -f $tarfile ] ; then - if [ -f $FS_SOUNDS_DIR/$tarfile ]; then - cp -l $FS_SOUNDS_DIR/$tarfile . \ - || cp $FS_SOUNDS_DIR/$tarfile . - else - $DOWNLOAD_CMD $base$tarfile - if [ ! -f $tarfile ] ; then - echo cannot find $tarfile - exit 1 - fi - fi +if [ -n "$FS_SOUNDS_DIR" ] ; then + [ -d $FS_SOUNDS_DIR ] || mkdir -p $FS_SOUNDS_DIR + DIR=$FS_SOUNDS_DIR +fi + +if [ ! -f $DIR/$tarfile ] ; then + (cd $DIR && $DOWNLOAD_CMD $base$tarfile) + if [ ! -f $DIR/$tarfile ] ; then + echo cannot find $tarfile + exit 1 + fi fi if [ ! -z $install ] ; then From 9a2b82dace36c4db2821820dd01fc6cc76946318 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 25 Apr 2012 08:04:00 +0000 Subject: [PATCH 246/630] getsounds.sh: add mode-line and reindent --- build/getsounds.sh.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/build/getsounds.sh.in b/build/getsounds.sh.in index de6cc72947..1e3c760a3c 100755 --- a/build/getsounds.sh.in +++ b/build/getsounds.sh.in @@ -1,4 +1,5 @@ #!/bin/sh +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- TAR=@TAR@ ZCAT=@ZCAT@ @@ -8,10 +9,10 @@ CURL=@CURL@ DIR=`pwd` if [ -x "$WGET" ] ; then - DOWNLOAD_CMD=$WGET + DOWNLOAD_CMD=$WGET fi if [ "x${DOWNLOAD_CMD}" = "x" -a -x "$CURL" ] ; then - DOWNLOAD_CMD="$CURL -O" + DOWNLOAD_CMD="$CURL -O" fi base=http://files.freeswitch.org/ @@ -23,8 +24,8 @@ pwd echo "# $0 $1 $2" if [ -n "$FS_SOUNDS_DIR" ] ; then - [ -d $FS_SOUNDS_DIR ] || mkdir -p $FS_SOUNDS_DIR - DIR=$FS_SOUNDS_DIR + [ -d $FS_SOUNDS_DIR ] || mkdir -p $FS_SOUNDS_DIR + DIR=$FS_SOUNDS_DIR fi if [ ! -f $DIR/$tarfile ] ; then @@ -36,8 +37,8 @@ if [ ! -f $DIR/$tarfile ] ; then fi if [ ! -z $install ] ; then - test -d $install || mkdir $install - cd $install && $ZCAT -c -d $DIR/$tarfile | $TAR xf - + test -d $install || mkdir $install + cd $install && $ZCAT -c -d $DIR/$tarfile | $TAR xf - fi exit 0 From 59d08bd033f05aacc89fb13029b4a99a89fcd768 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 25 Apr 2012 08:05:42 +0000 Subject: [PATCH 247/630] getsounds.sh: style tweaks --- build/getsounds.sh.in | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/build/getsounds.sh.in b/build/getsounds.sh.in index 1e3c760a3c..3f14eab822 100755 --- a/build/getsounds.sh.in +++ b/build/getsounds.sh.in @@ -8,7 +8,7 @@ CURL=@CURL@ DIR=`pwd` -if [ -x "$WGET" ] ; then +if [ -x "$WGET" ]; then DOWNLOAD_CMD=$WGET fi if [ "x${DOWNLOAD_CMD}" = "x" -a -x "$CURL" ] ; then @@ -23,22 +23,22 @@ echo -n "#" pwd echo "# $0 $1 $2" -if [ -n "$FS_SOUNDS_DIR" ] ; then +if [ -n "$FS_SOUNDS_DIR" ]; then [ -d $FS_SOUNDS_DIR ] || mkdir -p $FS_SOUNDS_DIR DIR=$FS_SOUNDS_DIR fi -if [ ! -f $DIR/$tarfile ] ; then +if [ ! -f $DIR/$tarfile ]; then (cd $DIR && $DOWNLOAD_CMD $base$tarfile) - if [ ! -f $DIR/$tarfile ] ; then - echo cannot find $tarfile + if [ ! -f $DIR/$tarfile ]; then + echo "cannot find $tarfile" exit 1 fi fi -if [ ! -z $install ] ; then +if [ ! -z "$install" ]; then test -d $install || mkdir $install - cd $install && $ZCAT -c -d $DIR/$tarfile | $TAR xf - + (cd $install && $ZCAT -c -d $DIR/$tarfile | $TAR xf -) fi exit 0 From 893d7eff9d112a7392152668abec772626b253e2 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 25 Apr 2012 11:21:55 +0200 Subject: [PATCH 248/630] gsmopen: correct sequence of callflow when got CEND: (nocarrier)->(hangup)->(idle) --- .../mod_gsmopen/gsmopen_protocol.cpp | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 33afb72e29..33b06c82d6 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -988,16 +988,6 @@ read: } if ((strncmp(tech_pvt->line_array.result[i], "^CEND:1", 7) == 0)) { - tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; - if (option_debug > 1) - DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_IDLE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { - DEBUGA_GSMOPEN("just received a remote HANGUP\n", GSMOPEN_P_LOG); - tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_NORMAL; - gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - DEBUGA_GSMOPEN("just sent GSMOPEN_CONTROL_HANGUP\n", GSMOPEN_P_LOG); - } - tech_pvt->phone_callflow = CALLFLOW_CALL_NOCARRIER; if (option_debug > 1) DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_NOCARRIER\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); @@ -1015,6 +1005,17 @@ read: switch_core_session_rwunlock(session); switch_channel_hangup(channel, SWITCH_CAUSE_NONE); } + tech_pvt->phone_callflow = CALLFLOW_CALL_IDLE; + if (option_debug > 1) + DEBUGA_GSMOPEN("|%s| CALLFLOW_CALL_IDLE\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + if (tech_pvt->interface_state != GSMOPEN_STATE_DOWN && tech_pvt->owner) { + DEBUGA_GSMOPEN("just received a remote HANGUP\n", GSMOPEN_P_LOG); + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_NORMAL; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + DEBUGA_GSMOPEN("just sent GSMOPEN_CONTROL_HANGUP\n", GSMOPEN_P_LOG); + } + + // //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); From 65c4f76f407670a506998228c87580d3fdda7293 Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Wed, 25 Apr 2012 17:58:41 +0000 Subject: [PATCH 249/630] allow space after filename in play_and_detect_speech --- src/mod/applications/mod_dptools/mod_dptools.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index d40e74d017..3331226e9d 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -464,6 +464,7 @@ SWITCH_STANDARD_APP(play_and_detect_speech_function) char *lbuf = NULL; const char *response = "DONE"; char *detect = NULL; + char *s; switch_channel_set_variable(channel, "detect_speech_result", ""); @@ -474,6 +475,12 @@ SWITCH_STANDARD_APP(play_and_detect_speech_function) goto done; } + /* trim any trailing space */ + s = detect; + while (--s >= lbuf && switch_isspace(*s)) { + *s = '\0'; + } + /* split input at "detect:" */ detect[0] = '\0'; detect += 7; From ba4280e61f3bf2f033e3c483d207083a31fcdf65 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 25 Apr 2012 15:15:15 -0400 Subject: [PATCH 250/630] try to add a tag to disable timer autorequire NUTAG_TIMER_AUTOREQUIRE(0) --- .../libsofia-sip-ua/nua/nua_params.c | 6 ++++++ .../libsofia-sip-ua/nua/nua_params.h | 3 +++ .../libsofia-sip-ua/nua/nua_session.c | 21 ++++++++++++------- libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c | 2 ++ .../libsofia-sip-ua/nua/sofia-sip/nua_tag.h | 5 +++++ 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c index 58b480440a..0f6a491dff 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c @@ -139,6 +139,7 @@ int nua_stack_set_defaults(nua_handle_t *nh, NHP_SET(nhp, only183_100rel, 0); NHP_SET(nhp, auto_answer, 0); NHP_SET(nhp, auto_ack, 1); + NHP_SET(nhp, timer_autorequire, 1); NHP_SET(nhp, invite_timeout, 120); nhp->nhp_session_timer = 1800; @@ -741,6 +742,10 @@ static int nhp_set_tags(su_home_t *home, else if (tag == nutag_autoack) { NHP_SET(nhp, auto_ack, value != 0); } + /* NUTAG_TIMER_AUTOREQUIRE(timer_autorequire) */ + else if (tag == nutag_timer_autorequire) { + NHP_SET(nhp, timer_autorequire, value != 0); + } /* NUTAG_INVITE_TIMER(invite_timeout) */ else if (tag == nutag_invite_timer) { NHP_SET(nhp, invite_timeout, (unsigned)value); @@ -1647,6 +1652,7 @@ int nua_stack_get_params(nua_t *nua, nua_handle_t *nh, nua_event_t e, TIF(NUTAG_ONLY183_100REL, only183_100rel), TIF(NUTAG_AUTOANSWER, auto_answer), TIF(NUTAG_AUTOACK, auto_ack), + TIF(NUTAG_TIMER_AUTOREQUIRE, timer_autorequire), TIF(NUTAG_INVITE_TIMER, invite_timeout), TIFD(NUTAG_SESSION_TIMER, session_timer), diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h b/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h index 1904a080c5..9fe4a98652 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h @@ -109,6 +109,8 @@ struct nua_handle_preferences /** Always include id with Event: refer */ unsigned nhp_refer_with_id:1; + + unsigned nhp_timer_autorequire:1; unsigned:0; /* Default lifetime for implicit subscriptions created by REFER */ @@ -207,6 +209,7 @@ struct nua_handle_preferences unsigned nhb_appl_method:1; unsigned nhb_initial_route:1; unsigned nhb_proxy:1; + unsigned nhb_timer_autorequire:1; unsigned :0; } set_bits; unsigned set_unsigned[2]; diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c index 1958b5645a..25ec7c9460 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c @@ -370,7 +370,8 @@ static int session_timer_check_min_se(msg_t *msg, sip_t *sip, static int session_timer_add_headers(struct session_timer *t, int initial, - msg_t *msg, sip_t *sip); + msg_t *msg, sip_t *sip, + nua_handle_t *nh); static void session_timer_negotiate(struct session_timer *t, int uas); @@ -791,7 +792,7 @@ static int nua_invite_client_request(nua_client_request_t *cr, /* Add session timer headers */ if (session_timer_is_supported(ss->ss_timer)) session_timer_add_headers(ss->ss_timer, ss->ss_state == nua_callstate_init, - msg, sip); + msg, sip, nh); ss->ss_100rel = NH_PGET(nh, early_media); ss->ss_precondition = sip_has_feature(sip->sip_require, "precondition"); @@ -2436,7 +2437,7 @@ int nua_invite_server_respond(nua_server_request_t *sr, tagi_t const *tags) NH_PGET(nh, min_se)); if (session_timer_is_supported(ss->ss_timer)) - session_timer_add_headers(ss->ss_timer, 0, msg, sip); + session_timer_add_headers(ss->ss_timer, 0, msg, sip, nh); } return nua_base_server_respond(sr, tags); @@ -3354,7 +3355,7 @@ static int nua_update_client_request(nua_client_request_t *cr, if (session_timer_is_supported(ss->ss_timer)) session_timer_add_headers(ss->ss_timer, ss->ss_state < nua_callstate_ready, - msg, sip); + msg, sip, nh); retval = nua_base_client_request(cr, msg, sip, NULL); @@ -3610,7 +3611,7 @@ int nua_update_server_respond(nua_server_request_t *sr, tagi_t const *tags) nua_server_request_t *sr0; int uas; - session_timer_add_headers(ss->ss_timer, 0, msg, sip); + session_timer_add_headers(ss->ss_timer, 0, msg, sip, nh); for (sr0 = nh->nh_ds->ds_sr; sr0; sr0 = sr0->sr_next) if (sr0->sr_method == sip_method_invite) @@ -4426,18 +4427,24 @@ static int session_timer_add_headers(struct session_timer *t, int initial, msg_t *msg, - sip_t *sip) + sip_t *sip, + nua_handle_t *nh) { unsigned long expires, min; sip_min_se_t min_se[1]; sip_session_expires_t x[1]; int uas; + int autorequire = 1; enum nua_session_refresher refresher = nua_any_refresher; static sip_param_t const x_params_uac[] = {"refresher=uac", NULL}; static sip_param_t const x_params_uas[] = {"refresher=uas", NULL}; + if ( !NH_PGET(nh, timer_autorequire) && NH_PISSET(nh, timer_autorequire)) { + autorequire = 0; + } + if (!t->local.supported) return 0; @@ -4491,7 +4498,7 @@ session_timer_add_headers(struct session_timer *t, /* Min-SE: 0 is optional with initial INVITE */ || !initial, SIPTAG_MIN_SE(min_se)), - //TAG_IF(refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")), + //TAG_IF(autorequire && refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")), TAG_END()); return 1; diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c index 96ca20baee..491d485731 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c @@ -1329,6 +1329,8 @@ tag_typedef_t nutag_autoanswer = BOOLTAG_TYPEDEF(autoAnswer); */ tag_typedef_t nutag_autoack = BOOLTAG_TYPEDEF(autoACK); +tag_typedef_t nutag_timer_autorequire = BOOLTAG_TYPEDEF(timerAutorequire); + /**@def NUTAG_AUTOACK_REF(x) * Reference tag for NUTAG_AUTOACK(). */ diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h b/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h index 9e710d052d..813e0d757a 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h +++ b/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h @@ -199,6 +199,11 @@ SOFIAPUBVAR tag_typedef_t nutag_autoack; #define NUTAG_AUTOACK_REF(x) nutag_autoack_ref, tag_bool_vr(&(x)) SOFIAPUBVAR tag_typedef_t nutag_autoack_ref; +#define NUTAG_TIMER_AUTOREQUIRE(x) nutag_timer_autorequire, tag_bool_v(x) +SOFIAPUBVAR tag_typedef_t nutag_timer_autorequire; +#define NUTAG_TIMER_AUTOREQUIRE_REF(x) nutag_timer_autorequire_ref, tag_bool_vr(&(x)) +SOFIAPUBVAR tag_typedef_t nutag_timer_autorequire_ref; + #define NUTAG_AUTOANSWER(x) nutag_autoanswer, tag_bool_v(x) SOFIAPUBVAR tag_typedef_t nutag_autoanswer; #define NUTAG_AUTOANSWER_REF(x) nutag_autoanswer_ref, tag_bool_vr(&(x)) From 7d3816dbea4af4f9e764eef8eb489896e1c76081 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 25 Apr 2012 15:19:47 -0400 Subject: [PATCH 251/630] silence set but not used --- libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c index 25ec7c9460..cc857a3716 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c @@ -4498,7 +4498,7 @@ session_timer_add_headers(struct session_timer *t, /* Min-SE: 0 is optional with initial INVITE */ || !initial, SIPTAG_MIN_SE(min_se)), - //TAG_IF(autorequire && refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")), + TAG_IF(0 && autorequire && refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")), TAG_END()); return 1; From 7a147e47629b00a9b544e2eb6ed721b39d56661b Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Wed, 25 Apr 2012 17:14:55 -0500 Subject: [PATCH 252/630] Update a ton of copyright statements to make sure the dates are proper --- build/ignore_helper.pl | 2 +- freeswitch.spec | 6 +++--- fscomm/call.cpp | 2 +- fscomm/call.h | 2 +- fscomm/debugtools/sortfilterproxymodel.h | 2 +- fscomm/fshost.cpp | 2 +- fscomm/fshost.h | 2 +- fscomm/main.cpp | 2 +- fscomm/mainwindow.cpp | 2 +- fscomm/mainwindow.h | 2 +- libs/esl/ivrd.c | 2 +- libs/esl/src/esl.c | 2 +- libs/esl/src/esl_buffer.c | 2 +- libs/esl/src/esl_config.c | 2 +- libs/esl/src/esl_event.c | 2 +- libs/esl/src/include/esl.h | 2 +- libs/esl/src/include/esl_buffer.h | 2 +- libs/esl/src/include/esl_config.h | 2 +- libs/esl/src/include/esl_event.h | 2 +- libs/esl/src/include/esl_oop.h | 2 +- libs/freetdm/Makefile.am | 2 +- libs/freetdm/src/ftdm_buffer.c | 2 +- libs/freetdm/src/ftdm_config.c | 2 +- libs/freetdm/src/ftdm_io.c | 2 +- libs/freetdm/src/ftmod/ftmod_analog/ftdm_analog.h | 2 +- libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c | 2 +- libs/freetdm/src/ftmod/ftmod_analog_em/ftdm_analog_em.h | 2 +- libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.c | 2 +- libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c | 2 +- libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h | 2 +- libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c | 2 +- libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.h | 2 +- libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c | 2 +- libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.h | 2 +- libs/freetdm/src/ftmod/ftmod_pika/ftdm_pika.h | 2 +- libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.c | 2 +- libs/freetdm/src/ftmod/ftmod_skel/ftmod_skel.c | 2 +- libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c | 2 +- libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c | 2 +- libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.h | 2 +- libs/freetdm/src/include/freetdm.h | 2 +- libs/freetdm/src/include/private/ftdm_buffer.h | 2 +- libs/freetdm/src/include/private/ftdm_config.h | 2 +- libs/freetdm/src/include/private/ftdm_types.h | 2 +- libs/freetdm/src/include/private/libteletone.h | 2 +- libs/freetdm/src/include/private/libteletone_detect.h | 2 +- libs/freetdm/src/include/private/libteletone_generate.h | 2 +- libs/freetdm/src/priserver.c | 2 +- libs/freetdm/src/sangoma_pri.c | 2 +- libs/freetdm/src/sangoma_pri.h | 2 +- libs/libdingaling/src/ldl_compat.h | 2 +- libs/libdingaling/src/libdingaling.h | 2 +- libs/libteletone/src/libteletone.h | 2 +- libs/libteletone/src/libteletone_detect.h | 2 +- libs/libteletone/src/libteletone_generate.h | 2 +- libs/openzap/Makefile.am | 2 +- libs/openzap/src/include/libteletone.h | 4 ++-- libs/openzap/src/include/libteletone_detect.h | 2 +- libs/openzap/src/include/libteletone_generate.h | 4 +--- libs/openzap/src/include/openzap.h | 2 +- libs/openzap/src/include/zap_buffer.h | 2 +- libs/openzap/src/include/zap_config.h | 2 +- libs/openzap/src/include/zap_types.h | 2 +- libs/openzap/src/libteletone_detect.c | 2 +- libs/openzap/src/libteletone_generate.c | 2 +- libs/openzap/src/m3ua_client.h | 2 +- libs/openzap/src/ozmod/ozmod_analog/ozmod_analog.c | 2 +- libs/openzap/src/ozmod/ozmod_analog/zap_analog.h | 2 +- libs/openzap/src/ozmod/ozmod_analog_em/ozmod_analog_em.c | 2 +- libs/openzap/src/ozmod/ozmod_analog_em/zap_analog_em.h | 2 +- libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c | 2 +- libs/openzap/src/ozmod/ozmod_isdn/zap_isdn.h | 2 +- libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.c | 2 +- libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.h | 2 +- libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c | 2 +- libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.h | 2 +- libs/openzap/src/ozmod/ozmod_pika/ozmod_pika.c | 2 +- libs/openzap/src/ozmod/ozmod_pika/zap_pika.h | 2 +- .../src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c | 2 +- .../src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.c | 2 +- .../src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.h | 2 +- .../src/ozmod/ozmod_sangoma_boost/zap_sangoma_boost.h | 2 +- libs/openzap/src/ozmod/ozmod_skel/ozmod_skel.c | 2 +- libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c | 2 +- libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c | 2 +- libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.h | 2 +- libs/openzap/src/priserver.c | 2 +- libs/openzap/src/sangoma_pri.c | 2 +- libs/openzap/src/sangoma_pri.h | 2 +- libs/openzap/src/zap_buffer.c | 2 +- libs/openzap/src/zap_config.c | 2 +- libs/openzap/src/zap_io.c | 2 +- libs/openzap/src/zap_m3ua.c | 2 +- libs/stfu/stfu.c | 2 +- libs/stfu/stfu.h | 2 +- scripts/c/socket2me/socket2me.c | 2 +- scripts/javascript/api.js | 2 +- scripts/javascript/js_modules/SpeechTools.jm | 2 +- scripts/javascript/pizza.js | 2 +- scripts/javascript/ps_pizza.js | 2 +- scripts/python/freepy/__init__.py | 2 +- scripts/python/freepy/fseventlistener.py | 2 +- scripts/python/freepy/fshelper.py | 2 +- scripts/python/freepy/models.py | 2 +- scripts/python/freepy/request.py | 2 +- scripts/rss/rss2ivr.pl | 2 +- src/include/private/switch_core_pvt.h | 2 +- src/include/switch.h | 2 +- src/include/switch_apr.h | 2 +- src/include/switch_bitpack.h | 2 +- src/include/switch_buffer.h | 2 +- src/include/switch_caller.h | 2 +- src/include/switch_channel.h | 2 +- src/include/switch_config.h | 2 +- src/include/switch_console.h | 2 +- src/include/switch_core.h | 2 +- src/include/switch_core_db.h | 2 +- src/include/switch_core_event_hook.h | 2 +- src/include/switch_curl.h | 2 +- src/include/switch_event.h | 2 +- src/include/switch_frame.h | 2 +- src/include/switch_ivr.h | 2 +- src/include/switch_limit.h | 2 +- src/include/switch_loadable_module.h | 2 +- src/include/switch_log.h | 2 +- src/include/switch_module_interfaces.h | 2 +- src/include/switch_nat.h | 2 +- src/include/switch_odbc.h | 2 +- src/include/switch_platform.h | 2 +- src/include/switch_regex.h | 2 +- src/include/switch_resample.h | 2 +- src/include/switch_rtcp_frame.h | 2 +- src/include/switch_rtp.h | 2 +- src/include/switch_scheduler.h | 2 +- src/include/switch_ssl.h | 2 +- src/include/switch_stun.h | 2 +- src/include/switch_types.h | 2 +- src/include/switch_utils.h | 2 +- src/include/switch_version.h.cmake | 2 +- src/include/switch_version.h.template | 2 +- src/include/switch_xml.h | 2 +- src/include/switch_xml_config.h | 2 +- src/include/timerfd_wrap.h | 2 +- src/mod/applications/mod_fsk/fsk_callerid.h | 2 +- src/mod/applications/mod_mongo/mod_mongo.cpp | 2 +- src/mod/applications/mod_mongo/mod_mongo.h | 2 +- src/mod/applications/mod_mongo/mongo_conn.cpp | 2 +- src/mod/applications/mod_mp4/mod_mp4.cpp | 2 +- src/mod/applications/mod_osp/mod_osp.c | 2 +- src/mod/applications/mod_soundtouch/mod_soundtouch.cpp | 2 +- src/mod/applications/mod_spandsp/mod_spandsp.h | 2 +- src/mod/applications/mod_spandsp/mod_spandsp_modem.h | 2 +- src/mod/applications/mod_stress/mod_stress.cpp | 2 +- src/mod/applications/mod_voicemail_ivr/config.h | 2 +- src/mod/applications/mod_voicemail_ivr/ivr.h | 2 +- src/mod/applications/mod_voicemail_ivr/menu.h | 2 +- src/mod/applications/mod_voicemail_ivr/utils.h | 2 +- src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 2 +- src/mod/codecs/mod_silk/mod_silk.c | 2 +- .../alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h | 2 +- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 +- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 2 +- src/mod/endpoints/mod_khomp/mod_khomp.cpp | 2 +- src/mod/endpoints/mod_skypopen/skypopen.h | 2 +- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 +- src/mod/endpoints/mod_unicall/mod_unicall.c | 2 +- src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h | 2 +- src/mod/event_handlers/mod_snmp/FREESWITCH-MIB | 2 +- src/mod/event_handlers/mod_snmp/subagent.h | 2 +- src/mod/languages/mod_lua/mod_lua.cpp | 2 +- src/mod/languages/mod_spidermonkey/mod_spidermonkey.h | 2 +- src/mod/say/mod_say_de/mod_say_de.c | 2 +- src/mod/say/mod_say_en/mod_say_en.c | 2 +- src/mod/say/mod_say_es/mod_say_es.c | 2 +- src/mod/say/mod_say_fr/mod_say_fr.c | 2 +- src/mod/say/mod_say_hr/mod_say_hr.c | 2 +- src/mod/say/mod_say_hu/mod_say_hu.c | 2 +- src/mod/say/mod_say_it/mod_say_it.c | 2 +- src/mod/say/mod_say_ja/mod_say_ja.c | 2 +- src/mod/say/mod_say_nl/mod_say_nl.c | 2 +- src/mod/say/mod_say_pt/mod_say_pt.c | 2 +- src/mod/say/mod_say_ru/mod_say_ru.c | 2 +- src/mod/say/mod_say_th/mod_say_th.c | 2 +- src/mod/say/mod_say_zh/mod_say_zh.c | 2 +- src/switch_cpp.cpp | 2 +- src/switch_limit.c | 2 +- src/switch_nat.c | 2 +- 187 files changed, 190 insertions(+), 192 deletions(-) diff --git a/build/ignore_helper.pl b/build/ignore_helper.pl index cc89c6814c..154afc7d4c 100644 --- a/build/ignore_helper.pl +++ b/build/ignore_helper.pl @@ -1,6 +1,6 @@ ################################################################################ # ignore_helper.pl -# Copyright (c) 2007-2009 Anthony Minessale II +# Copyright (c) 2007-2012 Anthony Minessale II # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation diff --git a/freeswitch.spec b/freeswitch.spec index 6fd9ad706e..de2bc65ebe 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -1,4 +1,4 @@ -###################################################################################################################### +2012 ###################################################################################################################### # # spec file for package freeswitch @@ -11,7 +11,7 @@ # # This file is part of: # FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -# Copyright (C) 2005-2010, Anthony Minessale II +# Copyright (C) 2005-2012, Anthony Minessale II # # This file and all modifications and additions to the pristine package are under the same license as the package itself. # @@ -24,7 +24,7 @@ # Anthony Minessale II # # -# Maintainer(s): Michal Bielicki # ###################################################################################################################### # Module build settings diff --git a/fscomm/call.cpp b/fscomm/call.cpp index 3b91d7ee90..d60084d483 100644 --- a/fscomm/call.cpp +++ b/fscomm/call.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/fscomm/call.h b/fscomm/call.h index d2626f35af..72ea93f6de 100644 --- a/fscomm/call.h +++ b/fscomm/call.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/fscomm/debugtools/sortfilterproxymodel.h b/fscomm/debugtools/sortfilterproxymodel.h index c0b1c53890..d157856bfc 100644 --- a/fscomm/debugtools/sortfilterproxymodel.h +++ b/fscomm/debugtools/sortfilterproxymodel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/fscomm/fshost.cpp b/fscomm/fshost.cpp index 2bb5b36cd6..a113b33958 100644 --- a/fscomm/fshost.cpp +++ b/fscomm/fshost.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/fscomm/fshost.h b/fscomm/fshost.h index ce4371191d..59cf2024e9 100644 --- a/fscomm/fshost.h +++ b/fscomm/fshost.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/fscomm/main.cpp b/fscomm/main.cpp index c1069eded1..18a97e2757 100644 --- a/fscomm/main.cpp +++ b/fscomm/main.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/fscomm/mainwindow.cpp b/fscomm/mainwindow.cpp index 30450e1215..8f1323b374 100644 --- a/fscomm/mainwindow.cpp +++ b/fscomm/mainwindow.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/fscomm/mainwindow.h b/fscomm/mainwindow.h index 84f4103b3e..33f36b87ba 100644 --- a/fscomm/mainwindow.h +++ b/fscomm/mainwindow.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/esl/ivrd.c b/libs/esl/ivrd.c index c71e392117..3032a81cd3 100644 --- a/libs/esl/ivrd.c +++ b/libs/esl/ivrd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index f6caeca0b3..fb50c6d0da 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/esl_buffer.c b/libs/esl/src/esl_buffer.c index 173c9cb76c..97f6b5813b 100644 --- a/libs/esl/src/esl_buffer.c +++ b/libs/esl/src/esl_buffer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Anthony Minessale II + * Copyright (c) 2010-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/esl_config.c b/libs/esl/src/esl_config.c index 2e24007799..8954c874a1 100644 --- a/libs/esl/src/esl_config.c +++ b/libs/esl/src/esl_config.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/esl_event.c b/libs/esl/src/esl_event.c index 1271e46e4f..6ebd6669b6 100644 --- a/libs/esl/src/esl_event.c +++ b/libs/esl/src/esl_event.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/include/esl.h b/libs/esl/src/include/esl.h index 2f1a50949a..7ba705359e 100644 --- a/libs/esl/src/include/esl.h +++ b/libs/esl/src/include/esl.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/include/esl_buffer.h b/libs/esl/src/include/esl_buffer.h index c7901e4ede..9be62110d9 100644 --- a/libs/esl/src/include/esl_buffer.h +++ b/libs/esl/src/include/esl_buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Anthony Minessale II + * Copyright (c) 2010-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/include/esl_config.h b/libs/esl/src/include/esl_config.h index 44fb23c911..515fd73cdb 100644 --- a/libs/esl/src/include/esl_config.h +++ b/libs/esl/src/include/esl_config.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/include/esl_event.h b/libs/esl/src/include/esl_event.h index 1cc6134e42..b7dea736c9 100644 --- a/libs/esl/src/include/esl_event.h +++ b/libs/esl/src/include/esl_event.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/esl/src/include/esl_oop.h b/libs/esl/src/include/esl_oop.h index 0ea1e5da89..9ffdae73a7 100644 --- a/libs/esl/src/include/esl_oop.h +++ b/libs/esl/src/include/esl_oop.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/Makefile.am b/libs/freetdm/Makefile.am index 35f1cecd1e..ab7bbff2b2 100644 --- a/libs/freetdm/Makefile.am +++ b/libs/freetdm/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (c) 2007, Anthony Minessale II +# Copyright (c) 2007-2012, Anthony Minessale II # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftdm_buffer.c b/libs/freetdm/src/ftdm_buffer.c index 000cddd3f9..015402556f 100644 --- a/libs/freetdm/src/ftdm_buffer.c +++ b/libs/freetdm/src/ftdm_buffer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftdm_config.c b/libs/freetdm/src/ftdm_config.c index 4dfc395e06..42b93cd78e 100644 --- a/libs/freetdm/src/ftdm_config.c +++ b/libs/freetdm/src/ftdm_config.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index caab35143a..252cbdb06c 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_analog/ftdm_analog.h b/libs/freetdm/src/ftmod/ftmod_analog/ftdm_analog.h index a2339120c5..47a7a43491 100644 --- a/libs/freetdm/src/ftmod/ftmod_analog/ftdm_analog.h +++ b/libs/freetdm/src/ftmod/ftmod_analog/ftdm_analog.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c b/libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c index 85da471739..25e2a5ac77 100644 --- a/libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c +++ b/libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_analog_em/ftdm_analog_em.h b/libs/freetdm/src/ftmod/ftmod_analog_em/ftdm_analog_em.h index 83d5bb31d9..22a1c25132 100644 --- a/libs/freetdm/src/ftmod/ftmod_analog_em/ftdm_analog_em.h +++ b/libs/freetdm/src/ftmod/ftmod_analog_em/ftdm_analog_em.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Anthony Minessale II + * Copyright (c) 2008-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.c b/libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.c index 907a8cb034..f7f0683673 100644 --- a/libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.c +++ b/libs/freetdm/src/ftmod/ftmod_analog_em/ftmod_analog_em.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Anthony Minessale II + * Copyright (c) 2008-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c b/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c index 4abddf16e1..be5ab50965 100644 --- a/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c +++ b/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h b/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h index 6b17f2cbef..dff3d21276 100644 --- a/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h +++ b/libs/freetdm/src/ftmod/ftmod_isdn/ftmod_isdn.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c index 2e11f52f26..aef0d0ddff 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c +++ b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * Copyright (c) 2010, Stefan Knoblich * All rights reserved. * diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.h b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.h index 27b1763fec..b54d0b1dcf 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.h +++ b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c b/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c index bfb67e4c78..facbc27033 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c +++ b/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.h b/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.h index b62e5fb176..052f3b080d 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.h +++ b/libs/freetdm/src/ftmod/ftmod_libpri/lpwrap_pri.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_pika/ftdm_pika.h b/libs/freetdm/src/ftmod/ftmod_pika/ftdm_pika.h index 882eaba411..1bcf82e285 100644 --- a/libs/freetdm/src/ftmod/ftmod_pika/ftdm_pika.h +++ b/libs/freetdm/src/ftmod/ftmod_pika/ftdm_pika.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.c b/libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.c index aaafdb33cc..0e1ed24afe 100644 --- a/libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.c +++ b/libs/freetdm/src/ftmod/ftmod_pika/ftmod_pika.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_skel/ftmod_skel.c b/libs/freetdm/src/ftmod/ftmod_skel/ftmod_skel.c index ee06a0716d..96475f58d9 100644 --- a/libs/freetdm/src/ftmod/ftmod_skel/ftmod_skel.c +++ b/libs/freetdm/src/ftmod/ftmod_skel/ftmod_skel.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c index a6c6e8cd5a..19d5e14f69 100644 --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c index 5be2e79872..2569ea49fd 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.h b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.h index 40b5a4e71d..c9bb171b55 100644 --- a/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.h +++ b/libs/freetdm/src/ftmod/ftmod_zt/ftmod_zt.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index 0fbc4bf29b..7009d171e1 100755 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/include/private/ftdm_buffer.h b/libs/freetdm/src/include/private/ftdm_buffer.h index e069e2d44b..0ad969b721 100644 --- a/libs/freetdm/src/include/private/ftdm_buffer.h +++ b/libs/freetdm/src/include/private/ftdm_buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/include/private/ftdm_config.h b/libs/freetdm/src/include/private/ftdm_config.h index 0f96a8f872..91b0ca5a15 100644 --- a/libs/freetdm/src/include/private/ftdm_config.h +++ b/libs/freetdm/src/include/private/ftdm_config.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/include/private/ftdm_types.h b/libs/freetdm/src/include/private/ftdm_types.h index 2ed9fd04c5..7e2b946486 100755 --- a/libs/freetdm/src/include/private/ftdm_types.h +++ b/libs/freetdm/src/include/private/ftdm_types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/freetdm/src/include/private/libteletone.h b/libs/freetdm/src/include/private/libteletone.h index b039f1f078..54537562bf 100644 --- a/libs/freetdm/src/include/private/libteletone.h +++ b/libs/freetdm/src/include/private/libteletone.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/freetdm/src/include/private/libteletone_detect.h b/libs/freetdm/src/include/private/libteletone_detect.h index 28ae2f5492..3ecac062bd 100644 --- a/libs/freetdm/src/include/private/libteletone_detect.h +++ b/libs/freetdm/src/include/private/libteletone_detect.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/freetdm/src/include/private/libteletone_generate.h b/libs/freetdm/src/include/private/libteletone_generate.h index 8e49afaabe..853f9da81b 100644 --- a/libs/freetdm/src/include/private/libteletone_generate.h +++ b/libs/freetdm/src/include/private/libteletone_generate.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/freetdm/src/priserver.c b/libs/freetdm/src/priserver.c index 4e5ec8706d..033934c32e 100644 --- a/libs/freetdm/src/priserver.c +++ b/libs/freetdm/src/priserver.c @@ -4,7 +4,7 @@ * Author(s): Anthony Minessale II * Nenad Corbic * - * Copyright: (c) 2005 Anthony Minessale II + * Copyright: (c) 2005-2012 Anthony Minessale II * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/libs/freetdm/src/sangoma_pri.c b/libs/freetdm/src/sangoma_pri.c index 4adcf017cf..60d0154a39 100644 --- a/libs/freetdm/src/sangoma_pri.c +++ b/libs/freetdm/src/sangoma_pri.c @@ -4,7 +4,7 @@ * Author(s): Anthony Minessale II * Nenad Corbic * - * Copyright: (c) 2005 Anthony Minessale II + * Copyright: (c) 2005-2012 Anthony Minessale II * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/libs/freetdm/src/sangoma_pri.h b/libs/freetdm/src/sangoma_pri.h index d37622a6da..2072c8b08a 100644 --- a/libs/freetdm/src/sangoma_pri.h +++ b/libs/freetdm/src/sangoma_pri.h @@ -4,7 +4,7 @@ * Author(s): Anthony Minessale II * Nenad Corbic * - * Copyright: (c) 2005 Anthony Minessale II + * Copyright: (c) 2005-2012 Anthony Minessale II * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/libs/libdingaling/src/ldl_compat.h b/libs/libdingaling/src/ldl_compat.h index 26ae586632..2507cd5957 100644 --- a/libs/libdingaling/src/ldl_compat.h +++ b/libs/libdingaling/src/ldl_compat.h @@ -1,6 +1,6 @@ /* * libDingaLing XMPP Jingle Library - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libdingaling/src/libdingaling.h b/libs/libdingaling/src/libdingaling.h index 1f43167dab..6cf8bd846b 100644 --- a/libs/libdingaling/src/libdingaling.h +++ b/libs/libdingaling/src/libdingaling.h @@ -1,6 +1,6 @@ /* * libDingaLing XMPP Jingle Library - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libteletone/src/libteletone.h b/libs/libteletone/src/libteletone.h index 61078b4984..026f10141b 100644 --- a/libs/libteletone/src/libteletone.h +++ b/libs/libteletone/src/libteletone.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libteletone/src/libteletone_detect.h b/libs/libteletone/src/libteletone_detect.h index 4da368969c..b4b70fcd92 100644 --- a/libs/libteletone/src/libteletone_detect.h +++ b/libs/libteletone/src/libteletone_detect.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/libteletone/src/libteletone_generate.h b/libs/libteletone/src/libteletone_generate.h index 0ff39e0dfa..a49e45a658 100644 --- a/libs/libteletone/src/libteletone_generate.h +++ b/libs/libteletone/src/libteletone_generate.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/libs/openzap/Makefile.am b/libs/openzap/Makefile.am index e8c9fbf3db..52af5e3082 100644 --- a/libs/openzap/Makefile.am +++ b/libs/openzap/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (c) 2007, Anthony Minessale II +# Copyright (c) 2007-2012, Anthony Minessale II # All rights reserved. # # Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/include/libteletone.h b/libs/openzap/src/include/libteletone.h index b54098c8ee..4fb3d9975d 100644 --- a/libs/openzap/src/include/libteletone.h +++ b/libs/openzap/src/include/libteletone.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * @@ -37,7 +37,7 @@ * source code outside the scope of the openzap library will nullify the * following license and reinact the MPL 1.1 as stated above. * - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2005-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/include/libteletone_detect.h b/libs/openzap/src/include/libteletone_detect.h index c8c667d282..173f2b563b 100644 --- a/libs/openzap/src/include/libteletone_detect.h +++ b/libs/openzap/src/include/libteletone_detect.h @@ -1,6 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * libteletone_detect.c Tone Detection Code * diff --git a/libs/openzap/src/include/libteletone_generate.h b/libs/openzap/src/include/libteletone_generate.h index 1b774206ff..212dbbb19b 100644 --- a/libs/openzap/src/include/libteletone_generate.h +++ b/libs/openzap/src/include/libteletone_generate.h @@ -1,8 +1,6 @@ /* * libteletone - * Copyright (C) 2005-2011, Anthony Minessale II - * - * Copyright (c) 2007, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/include/openzap.h b/libs/openzap/src/include/openzap.h index 32cce92c69..ab33b00bf4 100644 --- a/libs/openzap/src/include/openzap.h +++ b/libs/openzap/src/include/openzap.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/include/zap_buffer.h b/libs/openzap/src/include/zap_buffer.h index 9a05420979..ed23ce4dd7 100644 --- a/libs/openzap/src/include/zap_buffer.h +++ b/libs/openzap/src/include/zap_buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/include/zap_config.h b/libs/openzap/src/include/zap_config.h index f2f2e374bf..6345750821 100644 --- a/libs/openzap/src/include/zap_config.h +++ b/libs/openzap/src/include/zap_config.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/include/zap_types.h b/libs/openzap/src/include/zap_types.h index 165533ff22..0b65ea865a 100644 --- a/libs/openzap/src/include/zap_types.h +++ b/libs/openzap/src/include/zap_types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/libteletone_detect.c b/libs/openzap/src/libteletone_detect.c index 2c4253b314..758142f53e 100644 --- a/libs/openzap/src/libteletone_detect.c +++ b/libs/openzap/src/libteletone_detect.c @@ -10,7 +10,7 @@ * * libteletone_detect.c Tone Detection Code * - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/libteletone_generate.c b/libs/openzap/src/libteletone_generate.c index 1d5d696af2..e40c8f5729 100644 --- a/libs/openzap/src/libteletone_generate.c +++ b/libs/openzap/src/libteletone_generate.c @@ -1,7 +1,7 @@ /* * libteletone_generate.c -- Tone Generator * - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/m3ua_client.h b/libs/openzap/src/m3ua_client.h index b80309017c..7d9834f1b4 100644 --- a/libs/openzap/src/m3ua_client.h +++ b/libs/openzap/src/m3ua_client.h @@ -5,7 +5,7 @@ * Created by Shane Burrell on 4/3/08. * Copyright 2008 Shane Burrell. All rights reserved. * - * Copyright (c) 2007, Anthony Minessale II, Nenad Corbic + * Copyright (c) 2007-2012, Anthony Minessale II, Nenad Corbic * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/libs/openzap/src/ozmod/ozmod_analog/ozmod_analog.c b/libs/openzap/src/ozmod/ozmod_analog/ozmod_analog.c index d878b9195e..5a36a23359 100644 --- a/libs/openzap/src/ozmod/ozmod_analog/ozmod_analog.c +++ b/libs/openzap/src/ozmod/ozmod_analog/ozmod_analog.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_analog/zap_analog.h b/libs/openzap/src/ozmod/ozmod_analog/zap_analog.h index 3ffa422ead..f1ae31cc14 100644 --- a/libs/openzap/src/ozmod/ozmod_analog/zap_analog.h +++ b/libs/openzap/src/ozmod/ozmod_analog/zap_analog.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_analog_em/ozmod_analog_em.c b/libs/openzap/src/ozmod/ozmod_analog_em/ozmod_analog_em.c index 581c6dd45a..9d4573f3a6 100644 --- a/libs/openzap/src/ozmod/ozmod_analog_em/ozmod_analog_em.c +++ b/libs/openzap/src/ozmod/ozmod_analog_em/ozmod_analog_em.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Anthony Minessale II + * Copyright (c) 2008-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_analog_em/zap_analog_em.h b/libs/openzap/src/ozmod/ozmod_analog_em/zap_analog_em.h index eb9f9f3d20..1a0e355106 100644 --- a/libs/openzap/src/ozmod/ozmod_analog_em/zap_analog_em.h +++ b/libs/openzap/src/ozmod/ozmod_analog_em/zap_analog_em.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Anthony Minessale II + * Copyright (c) 2008-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c b/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c index fc998b126f..529e87d10d 100644 --- a/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c +++ b/libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_isdn/zap_isdn.h b/libs/openzap/src/ozmod/ozmod_isdn/zap_isdn.h index c5e0e5a711..3542a550ab 100644 --- a/libs/openzap/src/ozmod/ozmod_isdn/zap_isdn.h +++ b/libs/openzap/src/ozmod/ozmod_isdn/zap_isdn.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.c b/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.c index 3df1d54d89..bd8f72202d 100644 --- a/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.c +++ b/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.h b/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.h index 4c79526b9e..bd63db15c2 100644 --- a/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.h +++ b/libs/openzap/src/ozmod/ozmod_libpri/lpwrap_pri.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c b/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c index f18aa1fc54..511746afa8 100644 --- a/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c +++ b/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.h b/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.h index 8c929516ba..f31671735c 100644 --- a/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.h +++ b/libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Anthony Minessale II + * Copyright (c) 2009-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_pika/ozmod_pika.c b/libs/openzap/src/ozmod/ozmod_pika/ozmod_pika.c index 154c1618ff..2084848235 100644 --- a/libs/openzap/src/ozmod/ozmod_pika/ozmod_pika.c +++ b/libs/openzap/src/ozmod/ozmod_pika/ozmod_pika.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_pika/zap_pika.h b/libs/openzap/src/ozmod/ozmod_pika/zap_pika.h index 27c455a429..758ea32763 100644 --- a/libs/openzap/src/ozmod/ozmod_pika/zap_pika.h +++ b/libs/openzap/src/ozmod/ozmod_pika/zap_pika.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c b/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c index dc2218012e..a1bdaa77b1 100644 --- a/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c +++ b/libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.c b/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.c index 5b3e5b87ad..96e2ae72ec 100644 --- a/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.c +++ b/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II, Nenad Corbic + * Copyright (c) 2007-2012, Anthony Minessale II, Nenad Corbic * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.h b/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.h index 861f941ceb..8ae6e74101 100644 --- a/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.h +++ b/libs/openzap/src/ozmod/ozmod_sangoma_boost/sangoma_boost_client.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II, Nenad Corbic + * Copyright (c) 2007-2012, Anthony Minessale II, Nenad Corbic * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_sangoma_boost/zap_sangoma_boost.h b/libs/openzap/src/ozmod/ozmod_sangoma_boost/zap_sangoma_boost.h index a48060812b..10ac69d63d 100644 --- a/libs/openzap/src/ozmod/ozmod_sangoma_boost/zap_sangoma_boost.h +++ b/libs/openzap/src/ozmod/ozmod_sangoma_boost/zap_sangoma_boost.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_skel/ozmod_skel.c b/libs/openzap/src/ozmod/ozmod_skel/ozmod_skel.c index 949e0fbf31..b4bc8676ee 100644 --- a/libs/openzap/src/ozmod/ozmod_skel/ozmod_skel.c +++ b/libs/openzap/src/ozmod/ozmod_skel/ozmod_skel.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c b/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c index 8423aac34b..109e34cd9c 100644 --- a/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c +++ b/libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c b/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c index ca42c2c578..4b2836d5b2 100644 --- a/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c +++ b/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.h b/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.h index 687269a983..c496df9bae 100644 --- a/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.h +++ b/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/priserver.c b/libs/openzap/src/priserver.c index 080e5d4cef..fddec03e5b 100644 --- a/libs/openzap/src/priserver.c +++ b/libs/openzap/src/priserver.c @@ -4,7 +4,7 @@ * Author(s): Anthony Minessale II * Nenad Corbic * - * Copyright: (c) 2005 Anthony Minessale II + * Copyright: (c) 2005-2012 Anthony Minessale II * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/libs/openzap/src/sangoma_pri.c b/libs/openzap/src/sangoma_pri.c index c160eedd28..9da5c951af 100644 --- a/libs/openzap/src/sangoma_pri.c +++ b/libs/openzap/src/sangoma_pri.c @@ -4,7 +4,7 @@ * Author(s): Anthony Minessale II * Nenad Corbic * - * Copyright: (c) 2005 Anthony Minessale II + * Copyright: (c) 2005-2012 Anthony Minessale II * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/libs/openzap/src/sangoma_pri.h b/libs/openzap/src/sangoma_pri.h index 880fc85cea..5829a699ea 100644 --- a/libs/openzap/src/sangoma_pri.h +++ b/libs/openzap/src/sangoma_pri.h @@ -4,7 +4,7 @@ * Author(s): Anthony Minessale II * Nenad Corbic * - * Copyright: (c) 2005 Anthony Minessale II + * Copyright: (c) 2005-2012 Anthony Minessale II * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/libs/openzap/src/zap_buffer.c b/libs/openzap/src/zap_buffer.c index 0e2279d7e3..1a3b6a8311 100644 --- a/libs/openzap/src/zap_buffer.c +++ b/libs/openzap/src/zap_buffer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/zap_config.c b/libs/openzap/src/zap_config.c index ca0315594b..54119e1e8c 100644 --- a/libs/openzap/src/zap_config.c +++ b/libs/openzap/src/zap_config.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/zap_io.c b/libs/openzap/src/zap_io.c index 283a9fe332..6235f92392 100644 --- a/libs/openzap/src/zap_io.c +++ b/libs/openzap/src/zap_io.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/libs/openzap/src/zap_m3ua.c b/libs/openzap/src/zap_m3ua.c index 50736b75e4..e5bc4cdd38 100644 --- a/libs/openzap/src/zap_m3ua.c +++ b/libs/openzap/src/zap_m3ua.c @@ -6,7 +6,7 @@ * Copyright 2008 Shane Burrell. All rights reserved. * * - * Copyright (c) 2007, Anthony Minessale II, Nenad Corbic * + * Copyright (c) 2007-2012, Anthony Minessale II, Nenad Corbic * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/libs/stfu/stfu.c b/libs/stfu/stfu.c index 0bd42a7d4a..5c31133aa8 100644 --- a/libs/stfu/stfu.c +++ b/libs/stfu/stfu.c @@ -1,6 +1,6 @@ /* * STFU (S)ort (T)ransportable (F)ramed (U)tterances - * Copyright (c) 2007 Anthony Minessale II + * Copyright (c) 2007-2012 Anthony Minessale II * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation diff --git a/libs/stfu/stfu.h b/libs/stfu/stfu.h index 3e989b0a97..2b21419118 100644 --- a/libs/stfu/stfu.h +++ b/libs/stfu/stfu.h @@ -1,6 +1,6 @@ /* * STFU (S)ort (T)ransportable (F)ramed (U)tterances - * Copyright (c) 2007 Anthony Minessale II + * Copyright (c) 2007-2012 Anthony Minessale II * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation diff --git a/scripts/c/socket2me/socket2me.c b/scripts/c/socket2me/socket2me.c index 1b3aa0c6f2..9bb9551742 100644 --- a/scripts/c/socket2me/socket2me.c +++ b/scripts/c/socket2me/socket2me.c @@ -29,7 +29,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * - * Copyright (C) 2007, Anthony Minessale II + * Copyright (C) 2007-2012, Anthony Minessale II */ #include diff --git a/scripts/javascript/api.js b/scripts/javascript/api.js index 47c5770353..56a37a5cd8 100644 --- a/scripts/javascript/api.js +++ b/scripts/javascript/api.js @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/scripts/javascript/js_modules/SpeechTools.jm b/scripts/javascript/js_modules/SpeechTools.jm index 4e9628b2f5..84e6363743 100644 --- a/scripts/javascript/js_modules/SpeechTools.jm +++ b/scripts/javascript/js_modules/SpeechTools.jm @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2006, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/scripts/javascript/pizza.js b/scripts/javascript/pizza.js index 9807f5bc8d..57c8f2b116 100644 --- a/scripts/javascript/pizza.js +++ b/scripts/javascript/pizza.js @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/scripts/javascript/ps_pizza.js b/scripts/javascript/ps_pizza.js index 7fd405e009..646128e308 100644 --- a/scripts/javascript/ps_pizza.js +++ b/scripts/javascript/ps_pizza.js @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/scripts/python/freepy/__init__.py b/scripts/python/freepy/__init__.py index cebe48a0ab..2274cdc474 100644 --- a/scripts/python/freepy/__init__.py +++ b/scripts/python/freepy/__init__.py @@ -1,6 +1,6 @@ """ FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -Copyright (C) 2005-2011, Anthony Minessale II +Copyright (C) 2005-2012, Anthony Minessale II Version: MPL 1.1 diff --git a/scripts/python/freepy/fseventlistener.py b/scripts/python/freepy/fseventlistener.py index 6e3455f62f..fb1b430f5d 100644 --- a/scripts/python/freepy/fseventlistener.py +++ b/scripts/python/freepy/fseventlistener.py @@ -1,6 +1,6 @@ """ FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -Copyright (C) 2005-2011, Anthony Minessale II +Copyright (C) 2005-2012, Anthony Minessale II Version: MPL 1.1 diff --git a/scripts/python/freepy/fshelper.py b/scripts/python/freepy/fshelper.py index 090abce9d6..d258461629 100644 --- a/scripts/python/freepy/fshelper.py +++ b/scripts/python/freepy/fshelper.py @@ -2,7 +2,7 @@ """ FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -Copyright (C) 2005-2011, Anthony Minessale II +Copyright (C) 2005-2012, Anthony Minessale II Version: MPL 1.1 diff --git a/scripts/python/freepy/models.py b/scripts/python/freepy/models.py index 3dfb105424..37e595946f 100644 --- a/scripts/python/freepy/models.py +++ b/scripts/python/freepy/models.py @@ -1,6 +1,6 @@ """ FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -Copyright (C) 2005-2011, Anthony Minessale II +Copyright (C) 2005-2012, Anthony Minessale II Version: MPL 1.1 diff --git a/scripts/python/freepy/request.py b/scripts/python/freepy/request.py index d76fe2942c..787482be3a 100644 --- a/scripts/python/freepy/request.py +++ b/scripts/python/freepy/request.py @@ -1,6 +1,6 @@ """ FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application -Copyright (C) 2005-2011, Anthony Minessale II +Copyright (C) 2005-2012, Anthony Minessale II Version: MPL 1.1 diff --git a/scripts/rss/rss2ivr.pl b/scripts/rss/rss2ivr.pl index ed5aabd3a3..489fc1609f 100755 --- a/scripts/rss/rss2ivr.pl +++ b/scripts/rss/rss2ivr.pl @@ -2,7 +2,7 @@ ########################################################################## # rss2ivr.pl -- A Script to turn an RSS feed into audio files. # -# Copyright (C) 2006, Anthony Minessale +# Copyright (C) 2006-2012, Anthony Minessale # # Anthony Minessale # diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 68376c273c..196f10e4f2 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch.h b/src/include/switch.h index de099f1b94..3e1bfbb77f 100644 --- a/src/include/switch.h +++ b/src/include/switch.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_apr.h b/src/include/switch_apr.h index a49487c5e2..e7a41d03d9 100644 --- a/src/include/switch_apr.h +++ b/src/include/switch_apr.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_bitpack.h b/src/include/switch_bitpack.h index 3209cbc282..af32b9025d 100644 --- a/src/include/switch_bitpack.h +++ b/src/include/switch_bitpack.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_buffer.h b/src/include/switch_buffer.h index 751439d1ad..920d3965fe 100644 --- a/src/include/switch_buffer.h +++ b/src/include/switch_buffer.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_caller.h b/src/include/switch_caller.h index 09ff57beb6..3618858819 100644 --- a/src/include/switch_caller.h +++ b/src/include/switch_caller.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_channel.h b/src/include/switch_channel.h index 37bb6f1102..9bf89d5796 100644 --- a/src/include/switch_channel.h +++ b/src/include/switch_channel.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_config.h b/src/include/switch_config.h index b0ef805b52..fab6832e20 100644 --- a/src/include/switch_config.h +++ b/src/include/switch_config.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_console.h b/src/include/switch_console.h index 5585a041c1..9a88f3c229 100644 --- a/src/include/switch_console.h +++ b/src/include/switch_console.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 1e3bfcba76..0011652475 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_core_db.h b/src/include/switch_core_db.h index f72c3c5f45..e5fbf76a95 100644 --- a/src/include/switch_core_db.h +++ b/src/include/switch_core_db.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_core_event_hook.h b/src/include/switch_core_event_hook.h index ff836b3978..8f16706dd6 100644 --- a/src/include/switch_core_event_hook.h +++ b/src/include/switch_core_event_hook.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_curl.h b/src/include/switch_curl.h index a404bffb34..73cfef7474 100644 --- a/src/include/switch_curl.h +++ b/src/include/switch_curl.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2010, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_event.h b/src/include/switch_event.h index 13debb4b6b..dd5991bf07 100644 --- a/src/include/switch_event.h +++ b/src/include/switch_event.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_frame.h b/src/include/switch_frame.h index edc4f8be6c..91910f85dd 100644 --- a/src/include/switch_frame.h +++ b/src/include/switch_frame.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 0fb3c83e7f..8f553b957e 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_limit.h b/src/include/switch_limit.h index 4488b8caf0..fa9d1181fc 100644 --- a/src/include/switch_limit.h +++ b/src/include/switch_limit.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_loadable_module.h b/src/include/switch_loadable_module.h index f1fde8d7d6..3edc4dc8a7 100644 --- a/src/include/switch_loadable_module.h +++ b/src/include/switch_loadable_module.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_log.h b/src/include/switch_log.h index 170425a2a4..a44aa29a01 100644 --- a/src/include/switch_log.h +++ b/src/include/switch_log.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index acb85407c7..af85e3ed7c 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_nat.h b/src/include/switch_nat.h index 492dbfb29d..dae74073ff 100644 --- a/src/include/switch_nat.h +++ b/src/include/switch_nat.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_odbc.h b/src/include/switch_odbc.h index 103fe0f0d7..fd3ff888ef 100644 --- a/src/include/switch_odbc.h +++ b/src/include/switch_odbc.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_platform.h b/src/include/switch_platform.h index 17c972c989..3d1efe425d 100644 --- a/src/include/switch_platform.h +++ b/src/include/switch_platform.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_regex.h b/src/include/switch_regex.h index 6558299b53..393341fd43 100644 --- a/src/include/switch_regex.h +++ b/src/include/switch_regex.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_resample.h b/src/include/switch_resample.h index 3dff620c4b..7ae37669c7 100644 --- a/src/include/switch_resample.h +++ b/src/include/switch_resample.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_rtcp_frame.h b/src/include/switch_rtcp_frame.h index 5d06294304..7e034169e1 100644 --- a/src/include/switch_rtcp_frame.h +++ b/src/include/switch_rtcp_frame.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_rtp.h b/src/include/switch_rtp.h index 0951498c37..9d1de7a193 100644 --- a/src/include/switch_rtp.h +++ b/src/include/switch_rtp.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_scheduler.h b/src/include/switch_scheduler.h index 8db9696f4a..6a69371d59 100644 --- a/src/include/switch_scheduler.h +++ b/src/include/switch_scheduler.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_ssl.h b/src/include/switch_ssl.h index 46cdd5cbbe..70d675e16b 100644 --- a/src/include/switch_ssl.h +++ b/src/include/switch_ssl.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2010, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_stun.h b/src/include/switch_stun.h index 426eb49628..7159cf1f3b 100644 --- a/src/include/switch_stun.h +++ b/src/include/switch_stun.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 185fdb64af..3c1cb1cf7c 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_utils.h b/src/include/switch_utils.h index cce5abfa2d..40560a0434 100644 --- a/src/include/switch_utils.h +++ b/src/include/switch_utils.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_version.h.cmake b/src/include/switch_version.h.cmake index 6510dba154..6e36b0b1da 100644 --- a/src/include/switch_version.h.cmake +++ b/src/include/switch_version.h.cmake @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2006, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_version.h.template b/src/include/switch_version.h.template index c0e75b526e..2f75d75266 100644 --- a/src/include/switch_version.h.template +++ b/src/include/switch_version.h.template @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2006, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_xml.h b/src/include/switch_xml.h index 558b8522f4..f2a6eb3220 100644 --- a/src/include/switch_xml.h +++ b/src/include/switch_xml.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/switch_xml_config.h b/src/include/switch_xml_config.h index 49986c9211..fc669e4fc1 100644 --- a/src/include/switch_xml_config.h +++ b/src/include/switch_xml_config.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/include/timerfd_wrap.h b/src/include/timerfd_wrap.h index bb751c93a2..7196a6c1e0 100644 --- a/src/include/timerfd_wrap.h +++ b/src/include/timerfd_wrap.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_fsk/fsk_callerid.h b/src/mod/applications/mod_fsk/fsk_callerid.h index 9018201ce5..59f6cc5e52 100644 --- a/src/mod/applications/mod_fsk/fsk_callerid.h +++ b/src/mod/applications/mod_fsk/fsk_callerid.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_mongo/mod_mongo.cpp b/src/mod/applications/mod_mongo/mod_mongo.cpp index 85bbd0ee4a..27723af13d 100644 --- a/src/mod/applications/mod_mongo/mod_mongo.cpp +++ b/src/mod/applications/mod_mongo/mod_mongo.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_mongo/mod_mongo.h b/src/mod/applications/mod_mongo/mod_mongo.h index a1c8322bd7..b336443225 100644 --- a/src/mod/applications/mod_mongo/mod_mongo.h +++ b/src/mod/applications/mod_mongo/mod_mongo.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_mongo/mongo_conn.cpp b/src/mod/applications/mod_mongo/mongo_conn.cpp index 075b8f85d6..673e1be768 100644 --- a/src/mod/applications/mod_mongo/mongo_conn.cpp +++ b/src/mod/applications/mod_mongo/mongo_conn.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_mp4/mod_mp4.cpp b/src/mod/applications/mod_mp4/mod_mp4.cpp index 0d9eac113f..56cbf53877 100644 --- a/src/mod/applications/mod_mp4/mod_mp4.cpp +++ b/src/mod/applications/mod_mp4/mod_mp4.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_osp/mod_osp.c b/src/mod/applications/mod_osp/mod_osp.c index 1775421560..6f312386f4 100644 --- a/src/mod/applications/mod_osp/mod_osp.c +++ b/src/mod/applications/mod_osp/mod_osp.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp b/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp index 37f88baf99..e991728d1a 100644 --- a/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp +++ b/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp.h b/src/mod/applications/mod_spandsp/mod_spandsp.h index 3ba14bcd14..d4f388dd36 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp.h +++ b/src/mod/applications/mod_spandsp/mod_spandsp.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_modem.h b/src/mod/applications/mod_spandsp/mod_spandsp_modem.h index ae9d64e71b..f04797e017 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_modem.h +++ b/src/mod/applications/mod_spandsp/mod_spandsp_modem.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_stress/mod_stress.cpp b/src/mod/applications/mod_stress/mod_stress.cpp index d96739da0a..4fae808c40 100644 --- a/src/mod/applications/mod_stress/mod_stress.cpp +++ b/src/mod/applications/mod_stress/mod_stress.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/config.h b/src/mod/applications/mod_voicemail_ivr/config.h index f94fdb6f54..9d3b63d584 100644 --- a/src/mod/applications/mod_voicemail_ivr/config.h +++ b/src/mod/applications/mod_voicemail_ivr/config.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/ivr.h b/src/mod/applications/mod_voicemail_ivr/ivr.h index a277140985..31f95732b5 100644 --- a/src/mod/applications/mod_voicemail_ivr/ivr.h +++ b/src/mod/applications/mod_voicemail_ivr/ivr.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/menu.h b/src/mod/applications/mod_voicemail_ivr/menu.h index 6a49dedcba..1f91b658f6 100644 --- a/src/mod/applications/mod_voicemail_ivr/menu.h +++ b/src/mod/applications/mod_voicemail_ivr/menu.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/applications/mod_voicemail_ivr/utils.h b/src/mod/applications/mod_voicemail_ivr/utils.h index a20dfe806d..c8e9ca0868 100644 --- a/src/mod/applications/mod_voicemail_ivr/utils.h +++ b/src/mod/applications/mod_voicemail_ivr/utils.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c index a4dde5189d..80fa3f2001 100644 --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2009-2010, Anthony Minessale II + * Copyright (C) 2009-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/codecs/mod_silk/mod_silk.c b/src/mod/codecs/mod_silk/mod_silk.c index 6a090bef0d..5c32b72969 100644 --- a/src/mod/codecs/mod_silk/mod_silk.c +++ b/src/mod/codecs/mod_silk/mod_silk.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h index 37eb15741c..03c14283b4 100644 --- a/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/alsa_nogsmlib_nocplusplus/mod_gsmopen/gsmopen.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index c2e450147f..30ed934f68 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index d9a5668e80..98a85765e5 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_khomp/mod_khomp.cpp b/src/mod/endpoints/mod_khomp/mod_khomp.cpp index 5e7375b0e9..557cfb46f5 100644 --- a/src/mod/endpoints/mod_khomp/mod_khomp.cpp +++ b/src/mod/endpoints/mod_khomp/mod_khomp.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_skypopen/skypopen.h b/src/mod/endpoints/mod_skypopen/skypopen.h index 2be11bf4fc..960d960f82 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen.h +++ b/src/mod/endpoints/mod_skypopen/skypopen.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2011, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 730b592187..795f96186d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/endpoints/mod_unicall/mod_unicall.c b/src/mod/endpoints/mod_unicall/mod_unicall.c index e835647385..75680bd243 100644 --- a/src/mod/endpoints/mod_unicall/mod_unicall.c +++ b/src/mod/endpoints/mod_unicall/mod_unicall.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2008, Anthony Minessale II + * Copyright (C) 2005/2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h index 121e7b4f95..b6adcdafe5 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB index 68d83fe433..3cf8b2718f 100644 --- a/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB +++ b/src/mod/event_handlers/mod_snmp/FREESWITCH-MIB @@ -1,6 +1,6 @@ -- FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application --- Copyright (C) 2005-2011, Anthony Minessale II +-- Copyright (C) 2005-2012, Anthony Minessale II -- -- Version: MPL 1.1 -- diff --git a/src/mod/event_handlers/mod_snmp/subagent.h b/src/mod/event_handlers/mod_snmp/subagent.h index ba3c523d49..45519a844a 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.h +++ b/src/mod/event_handlers/mod_snmp/subagent.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp index 4886ae567e..adb13a43dd 100644 --- a/src/mod/languages/mod_lua/mod_lua.cpp +++ b/src/mod/languages/mod_lua/mod_lua.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h index aeb0245f11..bca61c69ea 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/mod/say/mod_say_de/mod_say_de.c b/src/mod/say/mod_say_de/mod_say_de.c index 542e4e6da4..b4ae2d83b4 100644 --- a/src/mod/say/mod_say_de/mod_say_de.c +++ b/src/mod/say/mod_say_de/mod_say_de.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_en/mod_say_en.c b/src/mod/say/mod_say_en/mod_say_en.c index 4e6b21abdf..82a6837478 100644 --- a/src/mod/say/mod_say_en/mod_say_en.c +++ b/src/mod/say/mod_say_en/mod_say_en.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_es/mod_say_es.c b/src/mod/say/mod_say_es/mod_say_es.c index 91675aa872..14d853a016 100644 --- a/src/mod/say/mod_say_es/mod_say_es.c +++ b/src/mod/say/mod_say_es/mod_say_es.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_fr/mod_say_fr.c b/src/mod/say/mod_say_fr/mod_say_fr.c index 37e126ecb2..952e0c595e 100644 --- a/src/mod/say/mod_say_fr/mod_say_fr.c +++ b/src/mod/say/mod_say_fr/mod_say_fr.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_hr/mod_say_hr.c b/src/mod/say/mod_say_hr/mod_say_hr.c index f08a0de0a2..e7241bd80f 100644 --- a/src/mod/say/mod_say_hr/mod_say_hr.c +++ b/src/mod/say/mod_say_hr/mod_say_hr.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_hu/mod_say_hu.c b/src/mod/say/mod_say_hu/mod_say_hu.c index 847d6f811d..33d07b1b65 100644 --- a/src/mod/say/mod_say_hu/mod_say_hu.c +++ b/src/mod/say/mod_say_hu/mod_say_hu.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_it/mod_say_it.c b/src/mod/say/mod_say_it/mod_say_it.c index ef4b3d2bda..1cbe1d8488 100644 --- a/src/mod/say/mod_say_it/mod_say_it.c +++ b/src/mod/say/mod_say_it/mod_say_it.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_ja/mod_say_ja.c b/src/mod/say/mod_say_ja/mod_say_ja.c index aa11a87ebf..0da0101ea7 100644 --- a/src/mod/say/mod_say_ja/mod_say_ja.c +++ b/src/mod/say/mod_say_ja/mod_say_ja.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_nl/mod_say_nl.c b/src/mod/say/mod_say_nl/mod_say_nl.c index e1e822b2f6..e823a32b12 100644 --- a/src/mod/say/mod_say_nl/mod_say_nl.c +++ b/src/mod/say/mod_say_nl/mod_say_nl.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_pt/mod_say_pt.c b/src/mod/say/mod_say_pt/mod_say_pt.c index e3e7280c45..e1cc3084e1 100644 --- a/src/mod/say/mod_say_pt/mod_say_pt.c +++ b/src/mod/say/mod_say_pt/mod_say_pt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_ru/mod_say_ru.c b/src/mod/say/mod_say_ru/mod_say_ru.c index 8c413c956b..68daf19f12 100644 --- a/src/mod/say/mod_say_ru/mod_say_ru.c +++ b/src/mod/say/mod_say_ru/mod_say_ru.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_th/mod_say_th.c b/src/mod/say/mod_say_th/mod_say_th.c index 675c1a44e6..77b62c647a 100644 --- a/src/mod/say/mod_say_th/mod_say_th.c +++ b/src/mod/say/mod_say_th/mod_say_th.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/mod/say/mod_say_zh/mod_say_zh.c b/src/mod/say/mod_say_zh/mod_say_zh.c index 0dc566289a..33fb7d2f95 100644 --- a/src/mod/say/mod_say_zh/mod_say_zh.c +++ b/src/mod/say/mod_say_zh/mod_say_zh.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Anthony Minessale II + * Copyright (c) 2007-2012, Anthony Minessale II * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/switch_cpp.cpp b/src/switch_cpp.cpp index 91d0980444..5408edb828 100644 --- a/src/switch_cpp.cpp +++ b/src/switch_cpp.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2011, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_limit.c b/src/switch_limit.c index 9313ecf5cf..6e792ca53d 100644 --- a/src/switch_limit.c +++ b/src/switch_limit.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * diff --git a/src/switch_nat.c b/src/switch_nat.c index dd73cd8be7..b992c19fc5 100644 --- a/src/switch_nat.c +++ b/src/switch_nat.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2009, Anthony Minessale II + * Copyright (C) 2005-2012, Anthony Minessale II * * Version: MPL 1.1 * From 5e99d34fd8a9a810256031af977987507e313d7a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 26 Apr 2012 08:10:30 -0500 Subject: [PATCH 253/630] FS-4146 --resolve --- src/mod/endpoints/mod_sofia/sofia_glue.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 0d7f0b526a..37f840cddd 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -3139,10 +3139,6 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f sofia_set_flag_locked(tech_pvt, TFLAG_SECURE); } - if ((var = switch_channel_get_variable(tech_pvt->channel, "sip_liberal_dtmf")) && switch_true(var)) { - sofia_set_flag_locked(tech_pvt, TFLAG_LIBERAL_DTMF); - } - if (switch_channel_test_flag(tech_pvt->channel, CF_PROXY_MODE)) { status = SWITCH_STATUS_SUCCESS; goto end; @@ -4486,6 +4482,10 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s } } + if ((val = switch_channel_get_variable(tech_pvt->channel, "sip_liberal_dtmf")) && switch_true(val)) { + sofia_set_flag_locked(tech_pvt, TFLAG_LIBERAL_DTMF); + } + if ((m = sdp->sdp_media) && (m->m_mode == sdp_sendonly || m->m_mode == sdp_inactive || (m->m_connections && m->m_connections->c_address && !strcmp(m->m_connections->c_address, "0.0.0.0")))) { From 820347556363f9ee88ad38473649e3027c902295 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 26 Apr 2012 08:52:29 -0500 Subject: [PATCH 254/630] FS-4148 --resolve note: see switch_core_session_get_partner --- src/mod/endpoints/mod_sofia/mod_sofia.c | 1 + src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 53 +++++++++++++++++-------- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 7e031f1f26..5533ae146c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2399,6 +2399,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi char *sdp = (char *) msg->pointer_arg; switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Responding with %d [%s]\n", code, reason); + sofia_clear_flag(tech_pvt, TFLAG_REINVITED); if (!zstr((sdp))) { if (!strcasecmp(sdp, "t38")) { diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 795f96186d..8052d94539 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -331,6 +331,7 @@ typedef enum { TFLAG_LIBERAL_DTMF, TFLAG_GOT_ACK, TFLAG_CAPTURE, + TFLAG_REINVITED, /* No new flags below this line */ TFLAG_MAX } TFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 9614b1cba0..7ec6969a92 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5521,7 +5521,6 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_channel_t *channel = NULL; private_object_t *tech_pvt = NULL; const char *replaces_str = NULL; - const char *uuid; switch_core_session_t *other_session = NULL; switch_channel_t *other_channel = NULL; //private_object_t *other_tech_pvt = NULL; @@ -5713,8 +5712,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, goto done; } } - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { other_channel = switch_core_session_get_channel(other_session); if (!switch_channel_get_variable(other_channel, SWITCH_B_SDP_VARIABLE)) { switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, r_sdp); @@ -5745,9 +5743,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, if (r_sdp && sofia_test_flag(tech_pvt, TFLAG_3PCC_INVITE) && !sofia_test_flag(tech_pvt, TFLAG_SDP)) { sofia_set_flag(tech_pvt, TFLAG_SDP); - - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { other_channel = switch_core_session_get_channel(other_session); //other_tech_pvt = switch_core_session_get_private(other_session); @@ -5785,6 +5781,23 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, goto done; case nua_callstate_received: if (!sofia_test_flag(tech_pvt, TFLAG_SDP)) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { + private_object_t *other_tech_pvt = switch_core_session_get_private(other_session); + + if(sofia_test_flag(other_tech_pvt, TFLAG_REINVITED)) { + + /* Due to a race between simultaneous reinvites to both legs of a bridge, + an earlier call to nua_invite silently failed. + So we reject the incoming invite with a 491 and redo the failed outgoing invite. */ + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Other leg already handling a reinvite, so responding with 491\n"); + nua_respond(tech_pvt->nh, SIP_491_REQUEST_PENDING, TAG_END()); + switch_core_session_rwunlock(other_session); + sofia_glue_do_invite(session); + goto done; + } + } + if (r_sdp && !sofia_test_flag(tech_pvt, TFLAG_SDP)) { if (switch_channel_test_flag(channel, CF_PROXY_MODE)) { switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RECEIVED_NOMEDIA"); @@ -5930,8 +5943,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, sofia_set_flag_locked(tech_pvt, TFLAG_NOSDP_REINVITE); if ((switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) && sofia_test_pflag(profile, PFLAG_3PCC_PROXY)) { sofia_set_flag_locked(tech_pvt, TFLAG_3PCC); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { switch_core_session_message_t *msg; msg = switch_core_session_alloc(other_session, sizeof(*msg)); msg->message_id = SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT; @@ -5972,11 +5984,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, if (switch_stristr("m=image", r_sdp)) { is_t38 = 1; } - + if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { switch_core_session_message_t *msg; + private_object_t *other_tech_pvt; if (switch_channel_test_flag(channel, CF_PROXY_MODE) && !is_t38 && profile->media_options & MEDIA_OPT_MEDIA_ON_HOLD) { if (switch_stristr("sendonly", r_sdp) || switch_stristr("0.0.0.0", r_sdp)) { @@ -6040,6 +6052,16 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } } + other_tech_pvt = switch_core_session_get_private(other_session); + if(sofia_test_flag(other_tech_pvt, TFLAG_REINVITED)) { + /* The other leg won the reinvite race */ + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Other leg already handling reinvite, so responding with 491\n"); + nua_respond(tech_pvt->nh, SIP_491_REQUEST_PENDING, TAG_END()); + switch_core_session_rwunlock(other_session); + goto done; + } + sofia_set_flag(tech_pvt, TFLAG_REINVITED); + msg = switch_core_session_alloc(other_session, sizeof(*msg)); msg->message_id = SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT; msg->from = __FILE__; @@ -6185,8 +6207,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } } - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { other_channel = switch_core_session_get_channel(other_session); if (!switch_channel_get_variable(other_channel, SWITCH_B_SDP_VARIABLE)) { switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, r_sdp); @@ -6255,8 +6276,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_channel_mark_answered(channel); if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { //other_channel = switch_core_session_get_channel(other_session); //switch_channel_answer(other_channel); switch_core_session_queue_indication(other_session, SWITCH_MESSAGE_INDICATE_ANSWER); @@ -6282,8 +6302,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } } - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { other_channel = switch_core_session_get_channel(other_session); if (!switch_channel_get_variable(other_channel, SWITCH_B_SDP_VARIABLE)) { switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, r_sdp); From 37e726b7e79c3528d2a3ac10ce1aa848b5946acc Mon Sep 17 00:00:00 2001 From: William King Date: Thu, 26 Apr 2012 09:05:56 -0700 Subject: [PATCH 255/630] Confirm we can open the file successfully before trying to add it to a libvlc media player --- src/mod/formats/mod_vlc/mod_vlc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c index 98a40f77ad..b19abd81dc 100644 --- a/src/mod/formats/mod_vlc/mod_vlc.c +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -123,6 +123,11 @@ static switch_status_t vlc_file_open(switch_file_handle_t *handle, const char *p context->m = libvlc_media_new_location(read_inst, context->path); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is unknown type %s\n", context->path); } + + if ( context-m == NULL ) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VLC error opening %s for reading\n", path); + return SWITCH_STATUS_GENERR; + } context->playing = 0; context->err = 0; From b123214eff0d880770b803f0f95e517b059007c0 Mon Sep 17 00:00:00 2001 From: William King Date: Thu, 26 Apr 2012 10:13:07 -0700 Subject: [PATCH 256/630] typo fixed --- src/mod/formats/mod_vlc/mod_vlc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/formats/mod_vlc/mod_vlc.c b/src/mod/formats/mod_vlc/mod_vlc.c index b19abd81dc..15dd6c1d95 100644 --- a/src/mod/formats/mod_vlc/mod_vlc.c +++ b/src/mod/formats/mod_vlc/mod_vlc.c @@ -124,7 +124,7 @@ static switch_status_t vlc_file_open(switch_file_handle_t *handle, const char *p switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "VLC Path is unknown type %s\n", context->path); } - if ( context-m == NULL ) { + if ( context->m == NULL ) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VLC error opening %s for reading\n", path); return SWITCH_STATUS_GENERR; } From b553d62fbd99e41778fc4ff9f59fc756ccaab72b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 26 Apr 2012 10:35:02 -0500 Subject: [PATCH 257/630] add sip_require_timer=true variable to enable require timer on session refresh that breaks finicky endpoints --- libs/sofia-sip/.update | 2 +- libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c | 2 +- src/mod/endpoints/mod_sofia/sofia_glue.c | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index cf78cb49ef..a02df03209 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Tue Apr 10 16:19:10 CDT 2012 +Thu Apr 26 10:23:33 CDT 2012 diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c index cc857a3716..751b1cfff8 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c @@ -4498,7 +4498,7 @@ session_timer_add_headers(struct session_timer *t, /* Min-SE: 0 is optional with initial INVITE */ || !initial, SIPTAG_MIN_SE(min_se)), - TAG_IF(0 && autorequire && refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")), + TAG_IF(autorequire && refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")), TAG_END()); return 1; diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 37f840cddd..09b599cfbb 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2057,6 +2057,8 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) char *mp = NULL, *mp_type = NULL; char *record_route = NULL; const char *recover_via = NULL; + int require_timer = 0; + if (sofia_test_flag(tech_pvt, TFLAG_RECOVERING)) { const char *recover_contact = switch_channel_get_variable(tech_pvt->channel, "sip_recover_contact"); @@ -2087,6 +2089,11 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) } + if ((val = switch_channel_get_variable(channel, "sip_require_timer")) && switch_true(val)) { + require_timer = 1; + } + + cid_name = caller_profile->caller_id_name; cid_num = caller_profile->caller_id_number; sofia_glue_tech_prepare_codecs(tech_pvt); @@ -2607,6 +2614,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) TAG_IF(!zstr(tech_pvt->local_sdp_str), SOATAG_RTP_SORT(SOA_RTP_SORT_REMOTE)), TAG_IF(!zstr(tech_pvt->local_sdp_str), SOATAG_RTP_SELECT(SOA_RTP_SELECT_ALL)), TAG_IF(rep, SIPTAG_REPLACES_STR(rep)), + TAG_IF(!require_timer, NUTAG_TIMER_AUTOREQUIRE(0)), TAG_IF(!zstr(tech_pvt->local_sdp_str), SOATAG_HOLD(holdstr)), TAG_END()); } else { nua_invite(tech_pvt->nh, @@ -2632,6 +2640,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) TAG_IF(!zstr(route), SIPTAG_ROUTE_STR(route)), TAG_IF(!zstr(invite_route_uri), NUTAG_INITIAL_ROUTE_STR(invite_route_uri)), TAG_IF(tech_pvt->profile->minimum_session_expires, NUTAG_MIN_SE(tech_pvt->profile->minimum_session_expires)), + TAG_IF(!require_timer, NUTAG_TIMER_AUTOREQUIRE(0)), TAG_IF(cseq, SIPTAG_CSEQ(cseq)), NUTAG_MEDIA_ENABLE(0), SIPTAG_CONTENT_TYPE_STR(mp_type ? mp_type : "application/sdp"), From 8a4f273fd83ea8071026c4e2053bc2e4de27900a Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 26 Apr 2012 12:44:36 -0500 Subject: [PATCH 258/630] FS-4019 -- resolve --- Freeswitch.2010.sln | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln index 5079f1f987..3a8469c327 100644 --- a/Freeswitch.2010.sln +++ b/Freeswitch.2010.sln @@ -3453,7 +3453,7 @@ Global {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64.ActiveCfg = Release|x64 {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64.Build.0 = Release|x64 {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x64 Setup.ActiveCfg = Release|x64 - {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x86 Setup.ActiveCfg = Release|x64 + {7C22BDFF-CC09-400C-8A09-660733980028}.Release|x86 Setup.ActiveCfg = Release|Win32 {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|Win32.ActiveCfg = Release|x64 {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.ActiveCfg = Release|x64 {23B4D303-79FC-49E0-89E2-2280E7E28940}.All|x64.Build.0 = Release|x64 @@ -3470,7 +3470,7 @@ Global {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.ActiveCfg = Release|x64 {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64.Build.0 = Release|x64 {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x64 Setup.ActiveCfg = Release|x64 - {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x86 Setup.ActiveCfg = Release|x64 + {23B4D303-79FC-49E0-89E2-2280E7E28940}.Release|x86 Setup.ActiveCfg = Release|Win32 {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|Win32.ActiveCfg = Release|x64 {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64.ActiveCfg = Release|x64 {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.All|x64.Build.0 = Release|x64 @@ -3483,7 +3483,7 @@ Global {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|Win32.ActiveCfg = Release|Win32 {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64.ActiveCfg = Release|x64 {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64 Setup.ActiveCfg = Release|x64 - {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x86 Setup.ActiveCfg = Release|x64 + {47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x86 Setup.ActiveCfg = Release|Win32 {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|Win32.ActiveCfg = Release|x64 {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.ActiveCfg = Release|x64 {50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.Build.0 = Release|x64 @@ -3496,7 +3496,7 @@ Global {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|Win32.ActiveCfg = Release|Win32 {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64.ActiveCfg = Release|x64 {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64 Setup.ActiveCfg = Release|x64 - {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x86 Setup.ActiveCfg = Release|x64 + {50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x86 Setup.ActiveCfg = Release|Win32 {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|Win32.ActiveCfg = Release|x64 {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64.ActiveCfg = Release|x64 {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.All|x64.Build.0 = Release|x64 @@ -3513,7 +3513,7 @@ Global {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.ActiveCfg = Release|x64 {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64.Build.0 = Release|x64 {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x64 Setup.ActiveCfg = Release|x64 - {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x86 Setup.ActiveCfg = Release|x64 + {4748FF56-CA85-4809-97D6-A94C0FAC1D77}.Release|x86 Setup.ActiveCfg = Release|Win32 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|Win32.ActiveCfg = Release|x64 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.ActiveCfg = Release|x64 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.All|x64.Build.0 = Release|x64 @@ -3530,7 +3530,7 @@ Global {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.ActiveCfg = Release|x64 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64.Build.0 = Release|x64 {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x64 Setup.ActiveCfg = Release|x64 - {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x86 Setup.ActiveCfg = Release|x64 + {60C542EE-6882-4EA2-8C21-5AB6DB1BA73F}.Release|x86 Setup.ActiveCfg = Release|Win32 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|Win32.ActiveCfg = Release|x64 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.ActiveCfg = Release|x64 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.All|x64.Build.0 = Release|x64 @@ -3543,7 +3543,7 @@ Global {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.ActiveCfg = Release|Win32 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64 Setup.ActiveCfg = Release|x64 - {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x86 Setup.ActiveCfg = Release|x64 + {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x86 Setup.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 21b1ffbf257ff381f909495b9d0cb2db2ad01fce Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 26 Apr 2012 11:12:11 -0500 Subject: [PATCH 259/630] add core-db-pre-trans-execute and core-db-post-trans-execute to switch.conf.xml to wrap sql stmts around the core transactions --- src/include/private/switch_core_pvt.h | 2 ++ src/switch_core.c | 4 ++++ src/switch_core_sqldb.c | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 196f10e4f2..f1d58688e4 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -261,6 +261,8 @@ struct switch_runtime { uint32_t db_handle_timeout; int cpu_count; uint32_t time_sync; + char *core_db_pre_trans_execute; + char *core_db_post_trans_execute; }; extern struct switch_runtime runtime; diff --git a/src/switch_core.c b/src/switch_core.c index a7259ce18d..5f47c68f0e 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1723,6 +1723,10 @@ static void switch_load_core_config(const char *file) switch_set_flag((&runtime), SCF_EARLY_HANGUP); } else if (!strcasecmp(var, "colorize-console") && switch_true(val)) { runtime.colorize_console = SWITCH_TRUE; + } else if (!strcasecmp(var, "core-db-pre-trans-execute") && !zstr(val)) { + runtime.core_db_pre_trans_execute = switch_core_strdup(runtime.memory_pool, val); + } else if (!strcasecmp(var, "core-db-post-trans-execute") && !zstr(val)) { + runtime.core_db_post_trans_execute = switch_core_strdup(runtime.memory_pool, val); } else if (!strcasecmp(var, "mailer-app") && !zstr(val)) { runtime.mailer_app = switch_core_strdup(runtime.memory_pool, val); } else if (!strcasecmp(var, "mailer-app-args") && val) { diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index d436c60596..eed753b840 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -731,6 +731,14 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ if (io_mutex) switch_mutex_lock(io_mutex); + if (!zstr(runtime.core_db_pre_trans_execute)) { + switch_cache_db_execute_sql_real(dbh, runtime.core_db_pre_trans_execute, &errmsg); + if (errmsg) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL PRE TRANS EXEC [%s]\n", errmsg); + free(errmsg); + } + } + again: while (begin_retries > 0) { @@ -810,6 +818,14 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ switch_odbc_SQLSetAutoCommitAttr(dbh->native_handle.odbc_dbh, 1); } + if (!zstr(runtime.core_db_post_trans_execute)) { + switch_cache_db_execute_sql_real(dbh, runtime.core_db_post_trans_execute, &errmsg); + if (errmsg) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL POST TRANS EXEC [%s]\n", errmsg); + free(errmsg); + } + } + if (io_mutex) switch_mutex_unlock(io_mutex); return status; From f1b504402b419fc54d7310c672cbe4ecb26f8ac7 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 26 Apr 2012 11:28:47 -0500 Subject: [PATCH 260/630] add core-db-inner-pre-trans-execute and core-db-inner-post-trans-execute to switch.conf.xml to wrap sql stmts inside the meat of the core transactions --- src/include/private/switch_core_pvt.h | 2 ++ src/switch_core.c | 4 ++++ src/switch_core_sqldb.c | 21 +++++++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index f1d58688e4..781f0e4d06 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -263,6 +263,8 @@ struct switch_runtime { uint32_t time_sync; char *core_db_pre_trans_execute; char *core_db_post_trans_execute; + char *core_db_inner_pre_trans_execute; + char *core_db_inner_post_trans_execute; }; extern struct switch_runtime runtime; diff --git a/src/switch_core.c b/src/switch_core.c index 5f47c68f0e..adb9338f68 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1727,6 +1727,10 @@ static void switch_load_core_config(const char *file) runtime.core_db_pre_trans_execute = switch_core_strdup(runtime.memory_pool, val); } else if (!strcasecmp(var, "core-db-post-trans-execute") && !zstr(val)) { runtime.core_db_post_trans_execute = switch_core_strdup(runtime.memory_pool, val); + } else if (!strcasecmp(var, "core-db-inner-pre-trans-execute") && !zstr(val)) { + runtime.core_db_inner_pre_trans_execute = switch_core_strdup(runtime.memory_pool, val); + } else if (!strcasecmp(var, "core-db-inner-post-trans-execute") && !zstr(val)) { + runtime.core_db_inner_post_trans_execute = switch_core_strdup(runtime.memory_pool, val); } else if (!strcasecmp(var, "mailer-app") && !zstr(val)) { runtime.mailer_app = switch_core_strdup(runtime.memory_pool, val); } else if (!strcasecmp(var, "mailer-app-args") && val) { diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index eed753b840..d6c64758aa 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -734,7 +734,7 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ if (!zstr(runtime.core_db_pre_trans_execute)) { switch_cache_db_execute_sql_real(dbh, runtime.core_db_pre_trans_execute, &errmsg); if (errmsg) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL PRE TRANS EXEC [%s]\n", errmsg); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL PRE TRANS EXEC %s [%s]\n", runtime.core_db_pre_trans_execute, errmsg); free(errmsg); } } @@ -789,6 +789,15 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ break; } + + if (!zstr(runtime.core_db_inner_pre_trans_execute)) { + switch_cache_db_execute_sql_real(dbh, runtime.core_db_inner_pre_trans_execute, &errmsg); + if (errmsg) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL PRE TRANS EXEC %s [%s]\n", runtime.core_db_inner_pre_trans_execute, errmsg); + free(errmsg); + } + } + while (retries > 0) { switch_cache_db_execute_sql(dbh, sql, &errmsg); @@ -809,6 +818,14 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ } } + if (!zstr(runtime.core_db_inner_post_trans_execute)) { + switch_cache_db_execute_sql_real(dbh, runtime.core_db_inner_post_trans_execute, &errmsg); + if (errmsg) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL POST TRANS EXEC %s [%s]\n", runtime.core_db_inner_post_trans_execute, errmsg); + free(errmsg); + } + } + done: if (runtime.odbc_dbtype == DBTYPE_DEFAULT) { @@ -821,7 +838,7 @@ SWITCH_DECLARE(switch_status_t) switch_cache_db_persistant_execute_trans(switch_ if (!zstr(runtime.core_db_post_trans_execute)) { switch_cache_db_execute_sql_real(dbh, runtime.core_db_post_trans_execute, &errmsg); if (errmsg) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL POST TRANS EXEC [%s]\n", errmsg); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL POST TRANS EXEC %s [%s]\n", runtime.core_db_post_trans_execute, errmsg); free(errmsg); } } From 4630e3b9274743b1b1f6ab08789d90fb54131f0c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 27 Apr 2012 11:37:21 -0500 Subject: [PATCH 261/630] FS-4160 try this --- src/switch_ivr_bridge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 206bd8787d..ab7136b9a3 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -813,7 +813,7 @@ static switch_status_t uuid_bridge_on_soft_execute(switch_core_session_t *sessio switch_core_session_rwunlock(other_session); if (switch_true(switch_channel_get_variable(channel, "uuid_bridge_continue_on_cancel"))) { switch_channel_set_state(channel, CS_EXECUTE); - } else { + } else if (!switch_channel_test_flag(channel, CF_TRANSFER)) { switch_channel_hangup(channel, SWITCH_CAUSE_ORIGINATOR_CANCEL); } goto done; From 481df053aca32e9623b338e3636cc77772c92df2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 27 Apr 2012 14:41:32 -0500 Subject: [PATCH 262/630] require timer by default unless its t.38 re-invite --- src/mod/endpoints/mod_sofia/mod_sofia.c | 1 + src/mod/endpoints/mod_sofia/sofia_glue.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 5533ae146c..3780886287 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1924,6 +1924,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi switch_channel_set_flag(channel, CF_REQ_MEDIA); } sofia_set_flag_locked(tech_pvt, TFLAG_SENT_UPDATE); + switch_channel_set_variable(channel, "sip_require_timer", "false"); sofia_glue_do_invite(session); } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Request to send IMAGE on channel with not t38 options.\n", diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 09b599cfbb..e2607a5e5a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2057,7 +2057,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) char *mp = NULL, *mp_type = NULL; char *record_route = NULL; const char *recover_via = NULL; - int require_timer = 0; + int require_timer = 1; if (sofia_test_flag(tech_pvt, TFLAG_RECOVERING)) { @@ -2089,8 +2089,8 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) } - if ((val = switch_channel_get_variable(channel, "sip_require_timer")) && switch_true(val)) { - require_timer = 1; + if ((val = switch_channel_get_variable_dup(channel, "sip_require_timer", SWITCH_FALSE, -1)) && switch_false(val)) { + require_timer = 0; } From 2a0ca295cc5b88341de224d7ee2156d1739e839b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 27 Apr 2012 15:28:17 -0500 Subject: [PATCH 263/630] FS-4144 --resolve --- .../applications/mod_commands/mod_commands.c | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 289f6d3b02..9baa7ce0f1 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -1559,27 +1559,22 @@ SWITCH_STANDARD_API(regex_function) goto error; } - if ((proceed = switch_regex_perform(argv[0], argv[1], &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) { - if (argc > 2) { - len = (strlen(argv[0]) + strlen(argv[2]) + 10) * proceed; - substituted = malloc(len); - switch_assert(substituted); - memset(substituted, 0, len); - switch_replace_char(argv[2], '%', '$', SWITCH_FALSE); - switch_perform_substitution(re, proceed, argv[2], argv[0], substituted, len, ovector); + proceed = switch_regex_perform(argv[0], argv[1], &re, ovector, sizeof(ovector) / sizeof(ovector[0])); - stream->write_function(stream, "%s", substituted); - free(substituted); - } else { - stream->write_function(stream, "true"); - } + if (argc > 2) { + len = (strlen(argv[0]) + strlen(argv[2]) + 10) * proceed; + substituted = malloc(len); + switch_assert(substituted); + memset(substituted, 0, len); + switch_replace_char(argv[2], '%', '$', SWITCH_FALSE); + switch_perform_substitution(re, proceed, argv[2], argv[0], substituted, len, ovector); + + stream->write_function(stream, "%s", substituted); + free(substituted); } else { - if (argc > 2) { - stream->write_function(stream, "%s", argv[0]); - } else { - stream->write_function(stream, "false"); - } + stream->write_function(stream, proceed ? "true" : "false"); } + goto ok; error: From 017843a8cff10685a0a4ceafb1ada25a43864938 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Sat, 28 Apr 2012 09:37:56 -0500 Subject: [PATCH 264/630] DOH! --- freeswitch.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/freeswitch.spec b/freeswitch.spec index de2bc65ebe..a56dd90035 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -1,4 +1,3 @@ -2012 ###################################################################################################################### # # spec file for package freeswitch From 428340830b13673de0407a2ec8d99a8a69a5b69d Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Sun, 29 Apr 2012 11:33:24 -0400 Subject: [PATCH 265/630] Fix for not handling T302 timeout in NET mode --- .../ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c index 0a34068359..75575ca732 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_stack_hndl.c @@ -953,6 +953,12 @@ void sngisdn_process_sta_cfm (sngisdn_event_data_t *sngisdn_event) break; case 2: /* overlap sending */ switch (ftdmchan->state) { + case FTDM_CHANNEL_STATE_COLLECT: + /* T302 Timeout reached */ + /* Send the call to user, and see if they accept it */ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "T302 Timer expired, proceeding with call\n"); + ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_RING); + break; case FTDM_CHANNEL_STATE_PROCEED: case FTDM_CHANNEL_STATE_PROGRESS: case FTDM_CHANNEL_STATE_RINGING: From acd36896662b64b109032eaaac92273bb29d4cab Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Mon, 30 Apr 2012 17:36:15 +0000 Subject: [PATCH 266/630] FS-4064 mod_posix_timer workaround of CentOS 5 glibc problem --- .../timers/mod_posix_timer/mod_posix_timer.c | 401 ++++++++++++--- src/mod/timers/mod_posix_timer/test/Makefile | 2 +- src/mod/timers/mod_posix_timer/test/main.c | 475 ++++++++++++++++-- src/mod/timers/mod_posix_timer/test/switch.c | 16 +- src/mod/timers/mod_posix_timer/test/switch.h | 5 +- 5 files changed, 782 insertions(+), 117 deletions(-) diff --git a/src/mod/timers/mod_posix_timer/mod_posix_timer.c b/src/mod/timers/mod_posix_timer/mod_posix_timer.c index 425e98c93d..04d694b5f7 100644 --- a/src/mod/timers/mod_posix_timer/mod_posix_timer.c +++ b/src/mod/timers/mod_posix_timer/mod_posix_timer.c @@ -1,5 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2012, Anthony Minessale II * * Version: MPL 1.1 * @@ -28,91 +29,153 @@ * */ #include -#include -#include +#include /* timer_* */ +#include /* sigaction(), timer_*, etc. */ +#include /* pipe() */ +#include /* fcntl() */ +#include /* strerror() */ +#include /* uint8_t */ +#include /* errno */ +#include /* select() */ +#include /* pthread_sigmask() */ SWITCH_MODULE_LOAD_FUNCTION(mod_posix_timer_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_posix_timer_shutdown); -SWITCH_MODULE_DEFINITION(mod_posix_timer, mod_posix_timer_load, mod_posix_timer_shutdown, NULL); +SWITCH_MODULE_RUNTIME_FUNCTION(mod_posix_timer_runtime); +SWITCH_MODULE_DEFINITION(mod_posix_timer, mod_posix_timer_load, mod_posix_timer_shutdown, mod_posix_timer_runtime); +#define SIG SIGRTMAX #define MAX_INTERVAL 2000 /* ms */ #define TIMERS_PER_INTERVAL 4 - -typedef struct { - int users; - timer_t timer; - switch_size_t tick; - switch_mutex_t *mutex; - switch_thread_cond_t *cond; - int interval; - int id; -} interval_timer_t; - -static struct { - switch_memory_pool_t *pool; - int shutdown; - interval_timer_t interval_timers[MAX_INTERVAL + 1][TIMERS_PER_INTERVAL]; - int next_interval_timer_id[MAX_INTERVAL + 1]; - switch_mutex_t *interval_timers_mutex; -} globals; +#define MAX_ACTIVE_TIMERS 256 /* one byte */ /** - * Notified by POSIX timer of a tick + * Module's internal timer data. + * Keeps track of how many users are using the timer + * and the condvar to signal threads waiting on the timer. */ -static void posix_timer_notify(union sigval data) -{ - interval_timer_t *it = (interval_timer_t *)data.sival_ptr; - switch_mutex_lock(it->mutex); - if (it->users) { - it->tick += 1 + timer_getoverrun(it->timer); - switch_thread_cond_broadcast(it->cond); - } - switch_mutex_unlock(it->mutex); +typedef struct { + /** Number of users of this timer */ + int users; + /** The POSIX timer handle */ + timer_t timer; + /** Number of ticks */ + switch_size_t tick; + /** synchronizes access to condvar, users */ + switch_mutex_t *mutex; + /** condvar for threads waiting on timer */ + switch_thread_cond_t *cond; + /** The timer period in ms */ + int interval; + /** Which timer for this interval */ + int num; + /** The timer's index into the active_interval_timers array */ + int active_id; +} interval_timer_t; - if (globals.shutdown) { - switch_mutex_lock(globals.interval_timers_mutex); - if (it->users) { - timer_delete(it->timer); - memset(&it->timer, 0, sizeof(it->timer)); - it->users = 0; +/** + * Module global data + */ +static struct { + /** Module memory pool */ + switch_memory_pool_t *pool; + /** True if module is shutting down */ + int shutdown; + /** Maps intervals to timers */ + interval_timer_t interval_timers[MAX_INTERVAL + 1][TIMERS_PER_INTERVAL]; + /** Maps IDs to timers */ + interval_timer_t *active_interval_timers[MAX_ACTIVE_TIMERS]; + /** Next timer to assign for a particular interval */ + int next_interval_timer_num[MAX_INTERVAL + 1]; + /** Synchronizes access to timer creation / deletion */ + switch_mutex_t *interval_timers_mutex; + /** Synchronizes access to active timers array */ + switch_mutex_t *active_timers_mutex; + /** number of active timers */ + int active_timers_count; + /** self-pipe to notify thread of tick from a signal handler */ + int timer_tick_pipe[2]; +} globals; + + +/** + * Handle timer signal + * @param sig the signal + * @param si the signal information + * @param cu unused + */ +static void timer_signal_handler(int sig, siginfo_t *si, void *cu) +{ + if (sig == SIG && si->si_code == SI_TIMER) { + int val = si->si_value.sival_int; + if (val >= 0 && val <= MAX_ACTIVE_TIMERS) { + uint8_t active_id = (uint8_t)val; + /* notify runtime thread that timer identified by active_id has ticked */ + write(globals.timer_tick_pipe[1], &active_id, 1); } - switch_mutex_unlock(globals.interval_timers_mutex); } } /** - * Start a new timer + * Start a new interval timer + * @param it the timer + * @param interval the timer interval + * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t posix_timer_start_interval(interval_timer_t *it, int interval) +static switch_status_t interval_timer_start(interval_timer_t *it, int interval) { - struct sigevent sigev; - struct itimerspec val; - if (globals.shutdown) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "module is shutting down, ignoring request\n"); return SWITCH_STATUS_GENERR; } if (it->users <= 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "starting %d ms timer #%d\n", it->interval, it->id + 1); - /* reset */ + struct sigevent sigev; + struct itimerspec val; + int active_id = -1; + int i; + + /* find an available id for this timer */ + for (i = 0; i < MAX_ACTIVE_TIMERS && active_id == -1; i++) { + switch_mutex_lock(globals.active_timers_mutex); + if(globals.active_interval_timers[i] == NULL) { + active_id = i; + } + switch_mutex_unlock(globals.active_timers_mutex); + } + if (active_id == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "no more timers can be created!\n"); + return SWITCH_STATUS_GENERR; + } + it->active_id = active_id; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "starting %d ms timer #%d (%d)\n", it->interval, it->num + 1, it->active_id); + + /* reset timer data */ it->tick = 0; it->users = 0; - /* reuse, if possible */ + /* reuse mutex/condvar */ if (it->mutex == NULL) { switch_mutex_init(&it->mutex, SWITCH_MUTEX_NESTED, globals.pool); switch_thread_cond_create(&it->cond, globals.pool); } - /* create the POSIX timer. Will notify the posix_timer_notify thread on ticks. */ + /* create the POSIX timer. Will send SIG on each tick. */ memset(&sigev, 0, sizeof(sigev)); - sigev.sigev_notify = SIGEV_THREAD; - sigev.sigev_notify_function = posix_timer_notify; - sigev.sigev_value.sival_ptr = (void *)it; + sigev.sigev_notify = SIGEV_SIGNAL; + sigev.sigev_signo = SIG; + sigev.sigev_value.sival_int = active_id; if (timer_create(CLOCK_MONOTONIC, &sigev, &it->timer) == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "failed to create timer: %s\n", strerror(errno)); return SWITCH_STATUS_GENERR; } + switch_mutex_lock(globals.active_timers_mutex); + globals.active_interval_timers[it->active_id] = it; + globals.active_timers_count++; + switch_mutex_unlock(globals.active_timers_mutex); + /* start the timer to tick at interval */ memset(&val, 0, sizeof(val)); val.it_interval.tv_sec = interval / 1000; @@ -120,6 +183,11 @@ static switch_status_t posix_timer_start_interval(interval_timer_t *it, int inte val.it_value.tv_sec = 0; val.it_value.tv_nsec = 100000; if (timer_settime(it->timer, 0, &val, NULL) == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "failed to start timer: %s\n", strerror(errno)); + switch_mutex_lock(globals.active_timers_mutex); + globals.active_interval_timers[it->active_id] = NULL; + globals.active_timers_count--; + switch_mutex_unlock(globals.active_timers_mutex); return SWITCH_STATUS_GENERR; } } @@ -129,18 +197,39 @@ static switch_status_t posix_timer_start_interval(interval_timer_t *it, int inte } /** - * Stop a timer + * Delete an interval timer + * @param it the interval timer */ -static switch_status_t posix_timer_stop_interval(interval_timer_t *it) +static void interval_timer_delete(interval_timer_t *it) +{ + /* remove from active timers */ + switch_mutex_lock(globals.active_timers_mutex); + if (globals.active_interval_timers[it->active_id]) { + globals.active_interval_timers[it->active_id] = NULL; + globals.active_timers_count--; + } + switch_mutex_unlock(globals.active_timers_mutex); + + /* delete the POSIX timer and mark interval timer as destroyed (users == 0) */ + switch_mutex_lock(it->mutex); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "deleting %d ms timer #%d (%d)\n", it->interval, it->num + 1, it->active_id); + timer_delete(it->timer); + memset(&it->timer, 0, sizeof(it->timer)); + it->users = 0; + switch_mutex_unlock(it->mutex); +} + +/** + * Remove a user from interval timer. Delete if no more users remain. + * @param it the interval timer + * @return SWITCH_STATUS_SUCCESS + */ +static switch_status_t interval_timer_stop(interval_timer_t *it) { if (it->users > 0) { it->users--; if (it->users == 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "stopping %d ms timer #%d\n", it->interval, it->id + 1); - switch_mutex_lock(it->mutex); - timer_delete(it->timer); - memset(&it->timer, 0, sizeof(it->timer)); - switch_mutex_unlock(it->mutex); + interval_timer_delete(it); } } return SWITCH_STATUS_SUCCESS; @@ -151,26 +240,27 @@ static switch_status_t posix_timer_stop_interval(interval_timer_t *it) * @param timer the timer * @return SWITCH_STATUS_SUCCESS if successful otherwise SWITCH_STATUS_GENERR */ -static switch_status_t posix_timer_init(switch_timer_t *timer) +static switch_status_t mod_posix_timer_init(switch_timer_t *timer) { interval_timer_t *it; switch_status_t status; - int interval_timer_id; + int interval_timer_num; if (timer->interval < 1 || timer->interval > MAX_INTERVAL) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad interval: %d\n", timer->interval); return SWITCH_STATUS_GENERR; } switch_mutex_lock(globals.interval_timers_mutex); - interval_timer_id = globals.next_interval_timer_id[timer->interval]++; - if (globals.next_interval_timer_id[timer->interval] >= TIMERS_PER_INTERVAL) { - globals.next_interval_timer_id[timer->interval] = 0; + interval_timer_num = globals.next_interval_timer_num[timer->interval]++; + if (globals.next_interval_timer_num[timer->interval] >= TIMERS_PER_INTERVAL) { + globals.next_interval_timer_num[timer->interval] = 0; } - it = &globals.interval_timers[timer->interval][interval_timer_id]; - it->id = interval_timer_id; + it = &globals.interval_timers[timer->interval][interval_timer_num]; + it->num = interval_timer_num; it->interval = timer->interval; - status = posix_timer_start_interval(it, timer->interval); + status = interval_timer_start(it, timer->interval); timer->private_info = it; switch_mutex_unlock(globals.interval_timers_mutex); @@ -182,7 +272,7 @@ static switch_status_t posix_timer_init(switch_timer_t *timer) * @param timer the timer * @return SWITCH_STATUS_SUCCESS */ -static switch_status_t posix_timer_step(switch_timer_t *timer) +static switch_status_t mod_posix_timer_step(switch_timer_t *timer) { timer->tick++; timer->samplecount += timer->samples; @@ -193,16 +283,16 @@ static switch_status_t posix_timer_step(switch_timer_t *timer) /** * Timer module interface: wait for next tick * @param timer the timer - * @return SWITCH_STATUS_SUCCESS if successful + * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t posix_timer_next(switch_timer_t *timer) +static switch_status_t mod_posix_timer_next(switch_timer_t *timer) { interval_timer_t *it = timer->private_info; if ((int)(timer->tick - it->tick) < -1) { timer->tick = it->tick; } - posix_timer_step(timer); + mod_posix_timer_step(timer); switch_mutex_lock(it->mutex); while ((int)(timer->tick - it->tick) > 0 && !globals.shutdown) { @@ -218,7 +308,7 @@ static switch_status_t posix_timer_next(switch_timer_t *timer) * @param timer the timer * @return SWITCH_STATUS_SUCCESS */ -static switch_status_t posix_timer_sync(switch_timer_t *timer) +static switch_status_t mod_posix_timer_sync(switch_timer_t *timer) { interval_timer_t *it = timer->private_info; timer->tick = it->tick; @@ -232,7 +322,7 @@ static switch_status_t posix_timer_sync(switch_timer_t *timer) * @param step true if timer should be stepped * @return SWITCH_STATUS_SUCCESS if synched, SWITCH_STATUS_FALSE otherwise */ -static switch_status_t posix_timer_check(switch_timer_t *timer, switch_bool_t step) +static switch_status_t mod_posix_timer_check(switch_timer_t *timer, switch_bool_t step) { interval_timer_t *it = timer->private_info; int diff = (int)(timer->tick - it->tick); @@ -245,7 +335,7 @@ static switch_status_t posix_timer_check(switch_timer_t *timer, switch_bool_t st /* timer pending */ timer->diff = 0; if (step) { - posix_timer_step(timer); + mod_posix_timer_step(timer); } return SWITCH_STATUS_SUCCESS; } @@ -255,44 +345,195 @@ static switch_status_t posix_timer_check(switch_timer_t *timer, switch_bool_t st * @param timer the timer * @return SWITCH_STATUS_SUCCESS if successful */ -static switch_status_t posix_timer_destroy(switch_timer_t *timer) +static switch_status_t mod_posix_timer_destroy(switch_timer_t *timer) { interval_timer_t *it = timer->private_info; switch_status_t status; switch_mutex_lock(globals.interval_timers_mutex); - status = posix_timer_stop_interval(it); + status = interval_timer_stop(it); switch_mutex_unlock(globals.interval_timers_mutex); return status; } +/** + * Load the module + */ SWITCH_MODULE_LOAD_FUNCTION(mod_posix_timer_load) { switch_timer_interface_t *timer_interface; memset(&globals, 0, sizeof(globals)); + globals.timer_tick_pipe[0] = -1; + globals.timer_tick_pipe[1] = -1; globals.pool = pool; switch_mutex_init(&globals.interval_timers_mutex, SWITCH_MUTEX_NESTED, globals.pool); + switch_mutex_init(&globals.active_timers_mutex, SWITCH_MUTEX_NESTED, globals.pool); /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(globals.pool, modname); timer_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_TIMER_INTERFACE); timer_interface->interface_name = "posix"; - timer_interface->timer_init = posix_timer_init; - timer_interface->timer_next = posix_timer_next; - timer_interface->timer_step = posix_timer_step; - timer_interface->timer_sync = posix_timer_sync; - timer_interface->timer_check = posix_timer_check; - timer_interface->timer_destroy = posix_timer_destroy; + timer_interface->timer_init = mod_posix_timer_init; + timer_interface->timer_next = mod_posix_timer_next; + timer_interface->timer_step = mod_posix_timer_step; + timer_interface->timer_sync = mod_posix_timer_sync; + timer_interface->timer_check = mod_posix_timer_check; + timer_interface->timer_destroy = mod_posix_timer_destroy; + + /* the pipe allows a signal handler to notify the runtime thread in a async-signal-safe manner */ + if (pipe(globals.timer_tick_pipe) == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create pipe\n"); + globals.shutdown = 1; + return SWITCH_STATUS_GENERR; + } + fcntl(globals.timer_tick_pipe[0], F_SETFL, O_NONBLOCK); + fcntl(globals.timer_tick_pipe[1], F_SETFL, O_NONBLOCK); + + { + struct sigaction sa; + sigset_t sigmask; + + /* Prevent SIG from annoying FS process. It will be unblocked in the runtime thread. */ + sigemptyset(&sigmask); + sigaddset(&sigmask, SIG); + sigprocmask(SIG_BLOCK, &sigmask, NULL); + + /* set up signal handler */ + memset(&sa, 0, sizeof(sa)); + sa.sa_flags = SA_SIGINFO | SA_RESTART; + sa.sa_sigaction = timer_signal_handler; + sigfillset(&sa.sa_mask); + if (sigaction(SIG, &sa, NULL) == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to set up signal handler: %s\n", strerror(errno)); + globals.shutdown = 1; + return SWITCH_STATUS_GENERR; + } + } return SWITCH_STATUS_SUCCESS; } +/** + * Runtime thread watches for timer ticks sent by signal handler over pipe. Broadcasts + * ticks to session threads waiting on timer. + */ +SWITCH_MODULE_RUNTIME_FUNCTION(mod_posix_timer_runtime) +{ + uint8_t active_ids[32]; + sigset_t sigmask; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "runtime thread starting\n"); + + /* allow SIG to be delivered to this thread. */ + sigemptyset(&sigmask); + sigaddset(&sigmask, SIG); + pthread_sigmask(SIG_UNBLOCK, &sigmask, NULL); + + /* run until module shutdown */ + while (!globals.shutdown) { + int retval, i; + fd_set read_fds; + struct timeval timeout = { 0, 200 * 1000 }; /* 200 ms */ + + /* wait for timer tick */ + FD_ZERO(&read_fds); + FD_SET(globals.timer_tick_pipe[0], &read_fds); + retval = select(globals.timer_tick_pipe[0] + 1, &read_fds, NULL, NULL, &timeout); + if (retval == -1) { + if (errno == EINTR) { + /* retry */ + continue; + } + if (errno == EBADF) { + /* done */ + break; + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error waiting on pipe: %s. Timer thread exiting\n", strerror(errno)); + break; + } else if (retval == 0) { + /* retry */ + continue; + } + if (!FD_ISSET(globals.timer_tick_pipe[0], &read_fds)) { + /* retry */ + continue; + } + + /* which timer ticked? */ + retval = read(globals.timer_tick_pipe[0], &active_ids, 32); + if (retval == -1) { + if (errno == EINTR || errno == EAGAIN) { + /* retry */ + continue; + } + if (errno == EBADF) { + /* done */ + break; + } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error reading from pipe: %s. Timer thread exiting\n", strerror(errno)); + break; + } else if (retval == 0) { + /* retry */ + continue; + } + + /* notify threads of timer tick */ + for (i = 0; i < retval; i++) { + interval_timer_t *it = NULL; + + /* find interval timer */ + switch_mutex_lock(globals.active_timers_mutex); + it = globals.active_interval_timers[(int)active_ids[i]]; + switch_mutex_unlock(globals.active_timers_mutex); + if (it == NULL) { + continue; + } + + /* send notification */ + switch_mutex_lock(it->mutex); + if (it->users) { + it->tick += 1 + timer_getoverrun(it->timer); + switch_thread_cond_broadcast(it->cond); + } + switch_mutex_unlock(it->mutex); + } + } + + globals.shutdown = 1; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "runtime thread finished\n"); + return SWITCH_STATUS_TERM; +} + +/** + * Module shutdown + */ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_posix_timer_shutdown) { + int i; globals.shutdown = 1; + + if (globals.timer_tick_pipe[0] > 0) { + close(globals.timer_tick_pipe[0]); + } + if (globals.timer_tick_pipe[1] > 0) { + close(globals.timer_tick_pipe[1]); + } + + /* Delete all active timers */ + switch_mutex_lock(globals.interval_timers_mutex); + for (i = 0; i < MAX_ACTIVE_TIMERS; i++) { + interval_timer_t *it; + switch_mutex_lock(globals.active_timers_mutex); + it = globals.active_interval_timers[i]; + switch_mutex_unlock(globals.active_timers_mutex); + if (it) { + interval_timer_delete(it); + } + } + switch_mutex_unlock(globals.interval_timers_mutex); + return SWITCH_STATUS_SUCCESS; } diff --git a/src/mod/timers/mod_posix_timer/test/Makefile b/src/mod/timers/mod_posix_timer/test/Makefile index 856345298b..eda0799146 100644 --- a/src/mod/timers/mod_posix_timer/test/Makefile +++ b/src/mod/timers/mod_posix_timer/test/Makefile @@ -1,5 +1,5 @@ all: - gcc ../mod_posix_timer.c main.c switch.c -I. -o timer_test -lpthread -lrt -g -DLOG_LEVEL=-1 + gcc ../mod_posix_timer.c main.c switch.c -I. -o timer_test -lpthread -lrt -lm -g -DLOG_LEVEL=-1 clean: -rm timer_test diff --git a/src/mod/timers/mod_posix_timer/test/main.c b/src/mod/timers/mod_posix_timer/test/main.c index 1df054566d..44f3a34aea 100644 --- a/src/mod/timers/mod_posix_timer/test/main.c +++ b/src/mod/timers/mod_posix_timer/test/main.c @@ -1,44 +1,461 @@ #include #include +#include +#include +#include +#include +#include +#include extern SWITCH_MODULE_LOAD_FUNCTION(mod_posix_timer_load); extern SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_posix_timer_shutdown); +extern SWITCH_MODULE_RUNTIME_FUNCTION(mod_posix_timer_runtime); switch_loadable_module_interface_t *mod = NULL; switch_memory_pool_t pool = { 0 }; +switch_timer_interface_t *timer_if; +pthread_t module_runtime_thread_id; -int main (int argc, char **argv) +pthread_mutex_t session_mutex = PTHREAD_MUTEX_INITIALIZER; +int pass_count; +int warn_count; +int fail_count; +int total_sessions; +int session_count; +int last_reported_session_count; +int shutdown; + + +/** + * Return a random sample from a normal distrubtion centered at mean with + * the specified standard deviation. + * + * THIS FUNCTION IS NOT REENTRANT!!! + */ +double randnorm(double mean, double std_dev) { + static double z1 = -1.0f; + double u1, u2, z0; + + /* random numbers are generated in pairs. See if new pair needs to be calculated */ + if (z1 >= 0.0f) { + z0 = z1; + z1 = -1.0f; + } else { + /* use box-muller transform to generate random number pair over normal distribution */ + u1 = drand48(); + u2 = drand48(); + z0 = sqrt(-2.0f * log(u1)) * cos(2.0f * M_PI * u2); + z1 = sqrt(-2.0f * log(u1)) * sin(2.0f * M_PI * u2); + } + + return (z0 * std_dev) + mean; +} + +/** + * Pick a random sample according the the weights + * @param weights array of weights + * @param num_weights + */ +static int sample(int *weights, int num_weights) +{ + int total_weight = weights[num_weights - 1]; + int s = floor(drand48() * total_weight); int i; - switch_timer_interface_t *timer_if; - switch_timer_t *timer[1000]; - - mod_posix_timer_load(&mod, &pool); - timer_if = mod->timer; - - - // TODO create multi-threaded test - - // create 10 ms timers - for (i = 0; i < 1000; i++) { - timer[i] = malloc(sizeof(switch_timer_t)); - memset(timer[i], 0, sizeof(switch_timer_t)); - timer[i]->interval = 1; - timer[i]->samples = 8; - timer_if->timer_init(timer[i]); + for (i = 0; i < num_weights; i++) { + if (s < weights[i]) { + return i; + } } - - for (i = 0; i < 50000; i++) { - timer_if->timer_next(timer[0]); - } - - // destroy timers - for (i = 0; i < 1000; i++) { - timer_if->timer_destroy(timer[i]); - free(timer[i]); - } - - mod_posix_timer_shutdown(); + printf ("DOH! s = %f\n", s); return 0; } + +/* + * Calculate x - y + * @return 0 if x is before y, the difference otherwise. + */ +double timespec_subtract(struct timespec *x, struct timespec *y) +{ + struct timespec result; + + /* Perform the carry for the later subtraction by updating y. */ + if (x->tv_nsec < y->tv_nsec) { + int nsec = (y->tv_nsec - x->tv_nsec) / 1000000000 + 1; + y->tv_nsec -= 1000000000 * nsec; + y->tv_sec += nsec; + } + if (x->tv_nsec - y->tv_nsec > 1000000000) { + int nsec = (x->tv_nsec - y->tv_nsec) / 1000000000; + y->tv_nsec += 1000000000 * nsec; + y->tv_sec -= nsec; + } + + /* Return 0 if result is negative. */ + if(x->tv_sec < y->tv_sec) { + return 0.0f; + } + + /* Return the difference */ + result.tv_sec = x->tv_sec - y->tv_sec; + result.tv_nsec = x->tv_nsec - y->tv_nsec; + return (double)result.tv_sec + (double)(result.tv_nsec / 1e9); +} + +/** + * Entry point for the runtime thread + */ +static void *module_thread(void *dummy) +{ + mod_posix_timer_runtime(); + return NULL; +} + +/** + * Load mod_posix_timer and start the runtime thread + */ +static void load_module() +{ + fail_count = 0; + warn_count = 0; + pass_count = 0; + total_sessions = 0; + session_count = 0; + last_reported_session_count = 0; + shutdown = 0; + mod_posix_timer_load(&mod, &pool); + timer_if = mod->timer; + pthread_create(&module_runtime_thread_id, NULL, module_thread, NULL); +} + +/** + * Shutdown mod_posix_timer + */ +static void shutdown_module() +{ + shutdown = 1; + mod_posix_timer_shutdown(); + pthread_join(module_runtime_thread_id, NULL); +} + +/** + * Test rapidly creating and destroying timers + */ +static void test_create_destroy() +{ + switch_timer_t *timers[3000] = { 0 }; + int intervals[4] = { 10, 20, 30, 40 }; + int interval_weights[4] = { 25, 50, 75, 100 }; + int interval_counts[4] = { 0, 0, 0, 0 }; + int toggle[2] = { 75, 100 }; + int timer_count = 0; + + int i = 0; + printf("test_create_destroy()\n"); + for(i = 0; i < 100000000; i++) { + int clear = i % 100000 == 0; + int j; + for (j = 0; j < 3000; j++) { + if (sample(toggle, 2) || clear) { + if (timers[j]) { + interval_counts[timers[j]->interval / 10 - 1]--; + timer_if->timer_destroy(timers[j]); + free(timers[j]); + timers[j] = NULL; + timer_count--; + } else if (!clear) { + int interval = intervals[sample(interval_weights, 4)]; + timers[j] = malloc(sizeof(switch_timer_t)); + memset(timers[j], 0, sizeof(switch_timer_t)); + timers[j]->interval = interval; + timers[j]->samples = interval * 8; + timer_if->timer_init(timers[j]); + timer_count++; + interval_counts[interval / 10 - 1]++; + } + } + } + if (i % 1000 == 0) { + printf("timers = %d, 10ms = %d, 20ms = %d, 30ms = %d, 40ms = %d\n", timer_count, interval_counts[0], interval_counts[1], interval_counts[2], interval_counts[3]); + } + } +} + +/** + * Session thread + */ +typedef struct session_thread_data +{ + int id; + int interval; + double duration; + double actual_duration; + int failed; + int detached; +} session_thread_data_t; + +/** + * Check the result of the session thread's test + * Log a message on failure. Save the result. + */ +static void check_result(session_thread_data_t *sd) +{ + double threshold = sd->interval / 1000.0f; + double diff = sd->actual_duration - sd->duration; + if (diff < 0) { + diff = diff * -1.0f; + } + if (diff > threshold * 2.0) { + sd->failed = 2; + } else if (diff > threshold) { + sd->failed = 1; + } else { + sd->failed = 0; + } + if (sd->failed > 1) { + printf("thread #%d FAILED : expected duration = %f, actual duration = %f, diff = %f, threshold = %f\n", sd->id, sd->duration, sd->actual_duration, diff, threshold); + } else { + //printf("thread #%d PASSED : expected duration = %f, actual duration = %f, diff = %f, threshold = %f\n", sd->id, sd->duration, sd->actual_duration, diff, threshold); + + } +} + +/** + * Creates a timer and advances it until duration expires + */ +void *session_thread(void *arg) +{ + int *pass = 0; + session_thread_data_t *d = (session_thread_data_t *)arg; + switch_timer_t timer = { 0 }; + + /* start the timer */ + timer.interval = d->interval; + timer.samples = d->interval * 8; + if (timer_if->timer_init(&timer) != SWITCH_STATUS_SUCCESS) { + printf("WTF!\n"); + goto done; + } + //timer_if->timer_sync(&timer); + + /* tick for duration */ + { + int i; + struct timespec start, end; + int ticks = floor(d->duration * 1000 / d->interval); + clock_gettime(CLOCK_MONOTONIC, &start); + for (i = 0; i < ticks && !shutdown; i++) { + timer_if->timer_next(&timer); + } + clock_gettime(CLOCK_MONOTONIC, &end); + d->actual_duration = timespec_subtract(&end, &start); + } + + /* stop the timer */ + timer_if->timer_destroy(&timer); + + if (!shutdown) { + check_result(d); + } + + pthread_mutex_lock(&session_mutex); + if (d->failed > 1) { + fail_count++; + } else if (d->failed > 0) { + warn_count++; + } else { + pass_count++; + } + session_count--; + if (session_count % 100 == 0 && last_reported_session_count != session_count) { + printf("sessions = %d\n", session_count); + last_reported_session_count = session_count; + } + pthread_mutex_unlock(&session_mutex); + +done: + if (d->detached) { + free(d); + return NULL; + } + + /* return result */ + return d; +} + + +/** + * @param thread the thread + * @param id for logging + * @param interval the timer period in ms + * @param duration_mean the mean duration for this thread to execute + * @param duration_std_dev the standard deviation from the mean duration + * @param detached if true this thread is detached + */ +static void create_session_thread(pthread_t *thread, int id, int interval, double duration_mean, double duration_std_dev, int detached) +{ + session_thread_data_t *d = malloc(sizeof(session_thread_data_t)); + pthread_mutex_lock(&session_mutex); + total_sessions++; + session_count++; + if (total_sessions % 100 == 0) { + printf("total sessions = %d, sessions = %d, pass = %d, warn = %d, fail = %d\n", total_sessions, session_count, pass_count, warn_count, fail_count); + } + if (session_count % 100 == 0 && last_reported_session_count != session_count) { + printf("sessions = %d\n", session_count); + last_reported_session_count = session_count; + } + pthread_mutex_unlock(&session_mutex); + if (interval == 0) { + printf("WTF WTF WTF!!\n"); + printf("id = %d, interval = %d, duration_mean = %f, duration_std_dev = %f, detached = %d\n", id, interval, duration_mean, duration_std_dev, detached); + } + d->id = id; + d->interval = interval; + d->duration = randnorm(duration_mean, duration_std_dev); + /* truncate duration to interval tick */ + d->duration = ceil(d->duration * 1000 / interval) * interval / 1000.0f; + d->detached = detached; + d->failed = 0; + pthread_create(thread, NULL, session_thread, d); + if (detached) { + pthread_detach(*thread); + } +} + + + +/** + * Create timers at a rate of CPS for test_duration. + * + * @param interval array of timer intervals in ms + * @param interval_weights array of timer intervals weights + * @param num_intervals size of interval array + * @param test_duration how long to run this test, in seconds + * @param cps the "calls per second". This is the rate at which session threads are created + * @param duration_mean mean duration for each thread + * @param duration_std_dev standard deviation from the mean duration + * @param num_timers number of threads to create + */ +static void test_timer_session(int *interval, int *interval_weights, int num_intervals, double test_duration, int cps, int max_sessions, double duration_mean, double duration_std_dev) +{ + int i = 0; + struct timespec start, now, period; + double elapsed = 0.0f; + + printf("test_timer_session(%d, %f, %d, %d, %f, %f)\n", interval[0], test_duration, cps, max_sessions, duration_mean, duration_std_dev); + + + /* create new call threads at CPS for test_duration */ + if (cps == 1) { + period.tv_sec = 1; + period.tv_nsec = 0; + } else { + period.tv_sec = 0; + period.tv_nsec = 1000000000 / cps; + } + + clock_gettime(CLOCK_MONOTONIC, &start); + while (elapsed < test_duration) { + pthread_t thread; + int retval = clock_nanosleep(CLOCK_MONOTONIC, 0, &period, NULL); + if (retval == -1) { + if (errno == EINTR) { + /* retry */ + continue; + } + printf("clock_nanosleep() error: %s\n", strerror(errno)); + break; + } + pthread_mutex_lock(&session_mutex); + if (session_count < max_sessions) { + pthread_mutex_unlock(&session_mutex); + create_session_thread(&thread, ++i, interval[sample(interval_weights, 4)], duration_mean, duration_std_dev, 1); + } else { + pthread_mutex_unlock(&session_mutex); + } + clock_gettime(CLOCK_MONOTONIC, &now); + elapsed = timespec_subtract(&now, &start); + } + + pthread_mutex_lock(&session_mutex); + while (session_count) { + struct timespec t; + t.tv_sec = 0; + t.tv_nsec = 200 * 1000; + pthread_mutex_unlock(&session_mutex); + clock_nanosleep(CLOCK_MONOTONIC, 0, &t, NULL); + pthread_mutex_lock(&session_mutex); + } + pthread_mutex_unlock(&session_mutex); + + + printf("test_timer_session(%d, %f, %d, %d, %f, %f) done\n", interval[0], test_duration, cps, max_sessions, duration_mean, duration_std_dev); +} + +/** + * Create num_timers in threads and tick until duration_mean elapses. + * + * @param interval timer interval in ms + * @param duration_mean mean duration for each thread + * @param duration_std_dev standard deviation from the mean duration + * @param num_timers number of threads to create + */ +static void test_timer(int interval, double duration_mean, double duration_std_dev, int num_timers) +{ + int i; + int pass = 1; + pthread_t *threads = malloc(sizeof(pthread_t) * num_timers); + printf("test_timer(%d, %f, %f, %d)\n", interval, duration_mean, duration_std_dev, num_timers); + + + /* create threads */ + for (i = 0; i < num_timers; i++) { + create_session_thread(&threads[i], i, interval, duration_mean, duration_std_dev, 0); + } + + /* wait for thread results */ + for (i = 0; i < num_timers; i++) { + void *d = NULL; + pthread_join(threads[i], &d); + if (d) { + int result; + session_thread_data_t *sd = (session_thread_data_t *)d; + pass = pass & (sd->failed < 2); + free(sd); + } + } + + printf("test_timer(%d, %f, %f, %d) : %s\n", interval, duration_mean, duration_std_dev, num_timers, pass ? "PASS" : "FAIL"); + free(threads); +} + +/** + * Main program + * + */ +int main (int argc, char **argv) +{ + //int intervals[4] = { 10, 20, 30, 40 }; + //int interval_weights[4] = { 2, 95, 97, 100 }; + int intervals[1] = { 20 }; + int interval_weights[1] = { 100 }; + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + srand48(ts.tv_nsec); + load_module(); + //test_timer(20, 5.0f, .2f, 1000); + //test_timer_session(intervals, interval_weights, 4, 2 * 86400.0f, 90, 2000, 30.0, 5.0f); + while(1) { + /* stop periodically to trigger timer shutdown */ + test_timer_session(intervals, interval_weights, 1, 60, 150, 3000, 30.0, 5.0f); + } + //test_timer(1000, 5.0f, 1); + //test_timer(20, 5.0f, .2f, 1000); + //test_timer(30, 5.0f, 1000); + //test_create_destroy(); + shutdown_module(); + return 0; +} + diff --git a/src/mod/timers/mod_posix_timer/test/switch.c b/src/mod/timers/mod_posix_timer/test/switch.c index 7ac7a3a97c..e58b017d35 100644 --- a/src/mod/timers/mod_posix_timer/test/switch.c +++ b/src/mod/timers/mod_posix_timer/test/switch.c @@ -42,13 +42,17 @@ switch_status_t switch_thread_cond_create(switch_thread_cond_t **cond, switch_me return pthread_cond_init(*cond, NULL); } -switch_status_t switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, int wait) +switch_status_t switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, long wait) { - struct timespec dur = { 0, 0 }; - clock_gettime(CLOCK_REALTIME, &dur); - dur.tv_sec = wait / 1000000000; - dur.tv_nsec = wait % 1000000000; - return pthread_cond_timedwait(cond, mutex, &dur); + struct timespec abs_time = { 0, 0 }; + /* add wait duration to current time (wait is in microseconds, pthreads wants nanosecond resolution) */ + clock_gettime(CLOCK_REALTIME, &abs_time); + abs_time.tv_sec += wait / 1000000; + abs_time.tv_nsec += (wait % 1000000) * 1000; + /* handle overflow of tv_nsec */ + abs_time.tv_sec += abs_time.tv_nsec / 1000000000; + abs_time.tv_nsec = abs_time.tv_nsec % 1000000000; + return pthread_cond_timedwait(cond, mutex, &abs_time); } switch_status_t switch_thread_cond_broadcast(switch_thread_cond_t *cond) diff --git a/src/mod/timers/mod_posix_timer/test/switch.h b/src/mod/timers/mod_posix_timer/test/switch.h index 25391943fb..7305b8b237 100644 --- a/src/mod/timers/mod_posix_timer/test/switch.h +++ b/src/mod/timers/mod_posix_timer/test/switch.h @@ -9,12 +9,15 @@ #define SWITCH_STATUS_SUCCESS 0 #define SWITCH_STATUS_GENERR 1 #define SWITCH_STATUS_FALSE 2 +#define SWITCH_STATUS_TERM 3 #define SWITCH_MUTEX_NESTED 1 #define SWITCH_CHANNEL_LOG 0 +#define SWITCH_LOG_DEBUG 0 #define SWITCH_LOG_INFO 0 +#define SWITCH_LOG_ERROR 1 typedef int switch_status_t; typedef size_t switch_size_t; @@ -113,7 +116,7 @@ switch_status_t switch_mutex_init(switch_mutex_t **mutex, int flags, switch_memo switch_status_t switch_thread_cond_create(switch_thread_cond_t **cond, switch_memory_pool_t *pool); -switch_status_t switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, int wait); +switch_status_t switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, long wait); switch_status_t switch_thread_cond_broadcast(switch_thread_cond_t *cond); From 940636588caf9e6335d6156343f28c1834f42d4c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 30 Apr 2012 17:51:31 -0500 Subject: [PATCH 267/630] FS-4166 --- src/switch_ivr_originate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 3cad2e343a..4a3067afc2 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -3128,7 +3128,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_ivr_uuid_bridge(holding, switch_core_session_get_uuid(peer_session)); holding = NULL; oglobals.idx = IDX_NADA; - if (caller_channel && switch_channel_up_nosig(caller_channel)) { + if (caller_channel && switch_channel_up_nosig(caller_channel) && !switch_channel_test_flag(caller_channel, CF_INTERCEPTED)) { switch_channel_hangup(caller_channel, SWITCH_CAUSE_ATTENDED_TRANSFER); } caller_channel = NULL; From b571952909cd9c3624baee618e7f15f6aa183979 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 30 Apr 2012 18:06:20 -0500 Subject: [PATCH 268/630] FS-4166 --- src/switch_ivr_bridge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index ab7136b9a3..45155744ff 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -660,7 +660,7 @@ static switch_status_t audio_bridge_on_exchange_media(switch_core_session_t *ses if (!switch_channel_test_flag(channel, CF_TRANSFER) && !switch_channel_test_flag(channel, CF_REDIRECT) && !switch_channel_test_flag(channel, CF_XFER_ZOMBIE) && bd && !bd->clean_exit && state != CS_PARK && state != CS_ROUTING && state == CS_EXCHANGE_MEDIA && !switch_channel_test_flag(channel, CF_INNER_BRIDGE)) { - if (switch_channel_test_flag(channel, CF_INTERCEPT)) { + if (switch_channel_test_flag(channel, CF_INTERCEPT) && !switch_channel_test_flag(channel, CF_INTERCEPTED)) { switch_channel_hangup(channel, SWITCH_CAUSE_PICKED_OFF); } else { if (!switch_channel_test_flag(channel, CF_ANSWERED)) { From e71b238e9e30d5681f0f5c0546e4a9a6be7bead3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 30 Apr 2012 18:13:32 -0500 Subject: [PATCH 269/630] FS-4166 --- src/switch_ivr_bridge.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 45155744ff..dc95a43114 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -660,13 +660,15 @@ static switch_status_t audio_bridge_on_exchange_media(switch_core_session_t *ses if (!switch_channel_test_flag(channel, CF_TRANSFER) && !switch_channel_test_flag(channel, CF_REDIRECT) && !switch_channel_test_flag(channel, CF_XFER_ZOMBIE) && bd && !bd->clean_exit && state != CS_PARK && state != CS_ROUTING && state == CS_EXCHANGE_MEDIA && !switch_channel_test_flag(channel, CF_INNER_BRIDGE)) { - if (switch_channel_test_flag(channel, CF_INTERCEPT) && !switch_channel_test_flag(channel, CF_INTERCEPTED)) { - switch_channel_hangup(channel, SWITCH_CAUSE_PICKED_OFF); - } else { - if (!switch_channel_test_flag(channel, CF_ANSWERED)) { - switch_channel_hangup(channel, SWITCH_CAUSE_ORIGINATOR_CANCEL); + if (!switch_channel_test_flag(channel, CF_INTERCEPTED)) { + if (switch_channel_test_flag(channel, CF_INTERCEPT)) { + switch_channel_hangup(channel, SWITCH_CAUSE_PICKED_OFF); } else { - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + if (!switch_channel_test_flag(channel, CF_ANSWERED)) { + switch_channel_hangup(channel, SWITCH_CAUSE_ORIGINATOR_CANCEL); + } else { + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + } } } } From df8696293d9bd240852cdd92295856e911c9e556 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 30 Apr 2012 18:25:59 -0500 Subject: [PATCH 270/630] FS-4166 --- src/switch_ivr_bridge.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index dc95a43114..abc006f566 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -660,7 +660,9 @@ static switch_status_t audio_bridge_on_exchange_media(switch_core_session_t *ses if (!switch_channel_test_flag(channel, CF_TRANSFER) && !switch_channel_test_flag(channel, CF_REDIRECT) && !switch_channel_test_flag(channel, CF_XFER_ZOMBIE) && bd && !bd->clean_exit && state != CS_PARK && state != CS_ROUTING && state == CS_EXCHANGE_MEDIA && !switch_channel_test_flag(channel, CF_INNER_BRIDGE)) { - if (!switch_channel_test_flag(channel, CF_INTERCEPTED)) { + if (switch_channel_test_flag(channel, CF_INTERCEPTED)) { + return SWITCH_STATUS_FALSE; + } else { if (switch_channel_test_flag(channel, CF_INTERCEPT)) { switch_channel_hangup(channel, SWITCH_CAUSE_PICKED_OFF); } else { From 1c6d7ce68f24b0bb4ddd57c7a4fc80e85aaaee92 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 30 Apr 2012 19:37:59 -0500 Subject: [PATCH 271/630] FS-4166 --- src/switch_ivr_bridge.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index abc006f566..8025c9d01c 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -661,6 +661,8 @@ static switch_status_t audio_bridge_on_exchange_media(switch_core_session_t *ses !switch_channel_test_flag(channel, CF_XFER_ZOMBIE) && bd && !bd->clean_exit && state != CS_PARK && state != CS_ROUTING && state == CS_EXCHANGE_MEDIA && !switch_channel_test_flag(channel, CF_INNER_BRIDGE)) { if (switch_channel_test_flag(channel, CF_INTERCEPTED)) { + switch_channel_clear_flag(channel, CF_INTERCEPT); + switch_channel_clear_flag(channel, CF_INTERCEPTED); return SWITCH_STATUS_FALSE; } else { if (switch_channel_test_flag(channel, CF_INTERCEPT)) { @@ -1654,7 +1656,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_find_bridged_uuid(const char *uuid, c switch_channel_t *rchannel = switch_core_session_get_channel(rsession); const char *brto; - if ((brto = switch_channel_get_variable(rchannel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((brto = switch_channel_get_variable(rchannel, "orignate_signal_bond")) || + (brto = switch_channel_get_variable(rchannel, SWITCH_SIGNAL_BOND_VARIABLE))) { switch_copy_string(b_uuid, brto, blen); status = SWITCH_STATUS_SUCCESS; } From 3cdb00a525ac34a445740902f106f73ffc0d6853 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 2 May 2012 00:04:23 -0500 Subject: [PATCH 272/630] reduce events on many to many sla --- src/mod/endpoints/mod_sofia/sofia_presence.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 72cca73d71..8dc58d1320 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1168,6 +1168,11 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } #endif + if (hup && dh.hits > 0) { + goto done; + } + + if (zstr(call_id) && (dh.hits && presence_source && (!strcasecmp(presence_source, "register") || switch_stristr("register", status)))) { goto done; } @@ -1284,10 +1289,10 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } - if (hup) { + if (hup && dh.hits < 1) { /* so many phones get confused when whe hangup we have to reprobe to get them all to reset to absolute states so the lights stay correct */ switch_event_t *s_event; - + if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "login", profile->name); @@ -1299,6 +1304,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } } + if (!zstr((char *) helper.stream.data)) { char *this_sql = (char *) helper.stream.data; char *next = NULL; From 40fff624dfa88e4fea415055bd8f1dc2790b5aa2 Mon Sep 17 00:00:00 2001 From: William King Date: Wed, 2 May 2012 12:55:34 -0700 Subject: [PATCH 273/630] Some sip notify events don't have a content type, such as notifies that only update the caller id info of a call. --- src/mod/endpoints/mod_sofia/sofia.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 7ec6969a92..1dd6646a32 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -469,7 +469,8 @@ void sofia_handle_sip_i_notify(switch_core_session_t *session, int status, if (switch_event_create(&s_event, SWITCH_EVENT_NOTIFY_IN) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "event", sip->sip_event->o_type); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "pl_data", sip->sip_payload ? sip->sip_payload->pl_data : ""); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "sip_content_type", sip->sip_content_type->c_type); + if ( sip->sip_content_type != NULL ) + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "sip_content_type", sip->sip_content_type->c_type); switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "port", "%d", sofia_private->gateway->profile->sip_port); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "module_name", "mod_sofia"); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "profile_name", sofia_private->gateway->profile->name); From f28ba547dfbf3d603e09ba6947227e2056e852bd Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 3 May 2012 10:56:37 +0200 Subject: [PATCH 274/630] gsmopen: fix FS-4150 , deleted a spurious new_inbound_channel(), checked all gsmopen->fs->sip machinery, then I got problems with audio(only in gsmopen->fs->sip not the reverse): I was baffled by a snom bug for a week, then I tested with Xlite and worked, so I grow suspicious, I updated snom320 firmware and worked. Hate those things --- .../mod_gsmopen/gsmopen_protocol.cpp | 16 ++-- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 89 ++++++++++++++----- 2 files changed, 70 insertions(+), 35 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 33b06c82d6..2838bb1388 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1093,9 +1093,9 @@ read: DEBUGA_PBX("just sent GSMOPEN_CONTROL_ANSWER\n", GSMOPEN_P_LOG); } } else { + tech_pvt->interface_state = GSMOPEN_STATE_UP; + DEBUGA_PBX("just interface_state UP\n", GSMOPEN_P_LOG); } - //tech_pvt->interface_state = GSMOPEN_STATE_UP; - //DEBUGA_PBX("just interface_state UP\n", GSMOPEN_P_LOG); } if ((strcmp(tech_pvt->line_array.result[i], tech_pvt->at_call_calling) == 0)) { @@ -2528,7 +2528,6 @@ int gsmopen_answer(private_t *tech_pvt) DEBUGA_PBX("call answered\n", GSMOPEN_P_LOG); res = 0; - new_inbound_channel(tech_pvt); if (tech_pvt->owner) { DEBUGA_PBX("going to send GSMOPEN_STATE_UP\n", GSMOPEN_P_LOG); ast_setstate(tech_pvt->owner, GSMOPEN_STATE_UP); @@ -2549,13 +2548,10 @@ int gsmopen_ring(private_t *tech_pvt) switch_core_session_t *session = NULL; switch_channel_t *channel = NULL; - if (option_debug) { - //DEBUGA_PBX("ENTERING FUNC\n", GSMOPEN_P_LOG); - } - session = switch_core_session_locate(tech_pvt->session_uuid_str); if (session) { switch_core_session_rwunlock(session); + //DEBUGA_PBX("got session, let's exit\n", GSMOPEN_P_LOG); return 0; } @@ -2570,8 +2566,9 @@ int gsmopen_ring(private_t *tech_pvt) switch_core_session_queue_indication(session, SWITCH_MESSAGE_INDICATE_RINGING); if (channel) { switch_channel_mark_ring_ready(channel); + DEBUGA_GSMOPEN("switch_channel_mark_ring_ready(channel);\n", GSMOPEN_P_LOG); } else { - ERRORA("no session\n", GSMOPEN_P_LOG); + ERRORA("no channel\n", GSMOPEN_P_LOG); } switch_core_session_rwunlock(session); } else { @@ -2579,9 +2576,6 @@ int gsmopen_ring(private_t *tech_pvt) } - if (option_debug) { - DEBUGA_PBX("EXITING FUNC\n", GSMOPEN_P_LOG); - } return res; } diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 98a85765e5..2e7d950436 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -296,7 +296,9 @@ switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *se switch_core_timer_sync(&tech_pvt->timer_write); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_HANGUP); + switch_mutex_unlock(tech_pvt->flag_mutex); DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; } @@ -474,7 +476,9 @@ static switch_status_t channel_on_init(switch_core_session_t *session) channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_IO); + switch_mutex_unlock(tech_pvt->flag_mutex); /* Move channel's state machine to ROUTING. This means the call is trying to get from the initial start where the call because, to the point @@ -549,9 +553,11 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session) } DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_IO); switch_clear_flag(tech_pvt, TFLAG_VOICE); switch_set_flag(tech_pvt, TFLAG_HANGUP); + switch_mutex_unlock(tech_pvt->flag_mutex); gsmopen_hangup(tech_pvt); @@ -621,18 +627,18 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int switch (sig) { case SWITCH_SIG_KILL: DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_KILL\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - //switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_IO); switch_clear_flag(tech_pvt, TFLAG_VOICE); switch_set_flag(tech_pvt, TFLAG_HANGUP); - //switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); break; case SWITCH_SIG_BREAK: DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_SIG_BREAK\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); //switch_set_flag(tech_pvt, TFLAG_BREAK); - //switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_BREAK); - //switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); break; default: break; @@ -728,7 +734,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch samples = 320; memcpy(tech_pvt->read_frame.data, buffer2, 320); } else { - DEBUGA_GSMOPEN("read less than 320, samples=%d\n", GSMOPEN_P_LOG, samples); + if (samples != 0) { + DEBUGA_GSMOPEN("read less than 320, samples=%d\n", GSMOPEN_P_LOG, samples); + } if (tech_pvt->buffer2_full) { memcpy(tech_pvt->read_frame.data, tech_pvt->buffer2, 320); tech_pvt->buffer2_full = 0; @@ -744,10 +752,14 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_VOICE); + switch_mutex_unlock(tech_pvt->flag_mutex); if (samples != 320) { - DEBUGA_GSMOPEN("samples=%d, goto cng\n", GSMOPEN_P_LOG, samples); + if (samples != 0) { + DEBUGA_GSMOPEN("samples=%d, goto cng\n", GSMOPEN_P_LOG, samples); + } goto cng; } @@ -770,15 +782,17 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_channel_queue_dtmf(channel, &dtmf); p++; } - NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, + DEBUGA_GSMOPEN("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; } } while (switch_test_flag(tech_pvt, TFLAG_IO)) { if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_BREAK); - DEBUGA_GSMOPEN("CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG); + switch_mutex_unlock(tech_pvt->flag_mutex); + DEBUGA_GSMOPEN("BREAK: CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG); goto cng; } @@ -788,7 +802,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch } if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) { + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_VOICE); + switch_mutex_unlock(tech_pvt->flag_mutex); if (!tech_pvt->read_frame.datalen) { DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG); continue; @@ -799,11 +815,10 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_swap_linear((int16_t *) (*frame)->data, (int) (*frame)->datalen / 2); } #endif - //WARNINGA("HERE\n", GSMOPEN_P_LOG); + //DEBUGA_GSMOPEN("HERE\n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; } - WARNINGA("HERE\n", GSMOPEN_P_LOG); DEBUGA_GSMOPEN("CHANNEL READ no TFLAG_VOICE\n", GSMOPEN_P_LOG); return SWITCH_STATUS_FALSE; @@ -874,20 +889,23 @@ static switch_status_t channel_answer_channel(switch_core_session_t *session) switch_assert(tech_pvt != NULL); //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_IO); + switch_mutex_unlock(tech_pvt->flag_mutex); + gsmopen_serial_answer(tech_pvt); - /* Move channel's state machine to ROUTING. This means the call is trying - to get from the initial start where the call because, to the point - where a destination has been identified. If the channel is simply - left in the initial state, nothing will happen. */ - switch_channel_set_state(channel, CS_ROUTING); switch_mutex_lock(globals.mutex); globals.calls++; switch_mutex_unlock(globals.mutex); DEBUGA_GSMOPEN("%s CHANNEL ANSWER %s\n", GSMOPEN_P_LOG, tech_pvt->name, switch_core_session_get_uuid(session)); + + if (channel) { + switch_channel_mark_answered(channel); + } + DEBUGA_GSMOPEN("ANSWERED! \n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; @@ -907,8 +925,21 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s switch (msg->message_id) { case SWITCH_MESSAGE_INDICATE_ANSWER: { - DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); - channel_answer_channel(session); + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_ANSWER\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + if(tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE){ + DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); + channel_answer_channel(session); + } + } + break; + + case SWITCH_MESSAGE_INDICATE_PROGRESS: + { + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_PROGRESS\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + if(tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE){ + DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); + channel_answer_channel(session); + } } break; case SWITCH_MESSAGE_INDICATE_AUDIO_SYNC: @@ -919,9 +950,20 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s break; + case SWITCH_MESSAGE_INDICATE_TRANSFER: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_TRANSFER\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + break; + case SWITCH_MESSAGE_INDICATE_BRIDGE: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_BRIDGE\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + break; + case SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY: + DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_TRANSCODING_NECESSARY\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); + break; default: { - DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); + if(msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC && msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC_COMPLETE){ + DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); + } } break; } @@ -1089,7 +1131,9 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi caller_profile = tech_pvt->caller_profile; caller_profile->destination_number = rdest; + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_OUTBOUND); + switch_mutex_unlock(tech_pvt->flag_mutex); switch_channel_set_state(channel, CS_INIT); gsmopen_call(tech_pvt, rdest, 30); switch_mutex_unlock(globals.mutex); @@ -2029,11 +2073,8 @@ int new_inbound_channel(private_t *tech_pvt) return 0; } } - if (channel) { - //switch_channel_mark_answered(channel); - } - DEBUGA_GSMOPEN("new_inbound_channel\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("EXITING new_inbound_channel\n", GSMOPEN_P_LOG); return 0; } @@ -2727,7 +2768,7 @@ void *gsmopen_do_gsmopenapi_thread_func(void *obj) //FIXME } } else if (tech_pvt->controldevprotocol != PROTOCOL_NO_SERIAL && tech_pvt->interface_state == GSMOPEN_STATE_DIALING) { - WARNINGA("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("WE'RE DIALING, let's take the earlymedia\n", GSMOPEN_P_LOG); tech_pvt->interface_state = CALLFLOW_STATUS_EARLYMEDIA; remote_party_is_early_media(tech_pvt); //new_inbound_channel(tech_pvt); @@ -2736,7 +2777,7 @@ void *gsmopen_do_gsmopenapi_thread_func(void *obj) //FIXME } } else if (tech_pvt->interface_state == CALLFLOW_CALL_REMOTEANSWER) { - WARNINGA("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("REMOTE PARTY ANSWERED\n", GSMOPEN_P_LOG); outbound_channel_answered(tech_pvt); //new_inbound_channel(tech_pvt); //FIXME if (!gsmopen_new(p, AST_STATE_RING, tech_pvt->context)) { From 2431e0f235df4ecda5979b62b22914840d10429e Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 3 May 2012 10:58:37 +0200 Subject: [PATCH 275/630] gsmopen: indented --- .../mod_gsmopen/gsmopen_protocol.cpp | 350 +++++++++--------- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 40 +- 2 files changed, 188 insertions(+), 202 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 2838bb1388..a586c7658f 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,7 +1,7 @@ #include "gsmopen.h" #ifdef WIN32 #include "win_iconv.c" -#endif// WIN32 +#endif // WIN32 #define WANT_GSMLIB #ifdef WANT_GSMLIB @@ -17,7 +17,7 @@ using namespace std; using namespace gsmlib; -#endif// WANT_GSMLIB +#endif // WANT_GSMLIB extern int running; //FIXME @@ -154,7 +154,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) char trash[4096]; res = tech_pvt->serialPort_serial_control->Read(trash, 4096); - if (res){ + if (res) { DEBUGA_GSMOPEN("READ %d on serialport init\n", GSMOPEN_P_LOG, res); } @@ -402,8 +402,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } } - -#else// WANT_GSMLIB +#else // WANT_GSMLIB res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); if (res) { @@ -422,11 +421,11 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } } -#endif// WANT_GSMLIB +#endif // WANT_GSMLIB #ifdef NOTDEF //GSMLIB? XXX - else { + else { //res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,20"); //"flash", class 0 sms 16 bit unicode res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSMP=17,167,0,8"); //unicode, 16 bit message if (res) { @@ -566,7 +565,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us int at_ack = -1; int la_read = 0; int timeout_in_msec; - int msecs_passed=0; + int msecs_passed = 0; timeout_in_msec = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0); @@ -585,16 +584,16 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us PUSHA_UNLOCKA(tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); - while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec){ + while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec) { char *token_ptr; timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it -read: + read: switch_sleep(20000); msecs_passed += 20; - if (timeout_in_msec != 100){ + if (timeout_in_msec != 100) { //ERRORA("TIMEOUT=%d, PASSED=%d\n", GSMOPEN_P_LOG, timeout_in_msec, msecs_passed); } //read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)); @@ -603,8 +602,8 @@ read: //cicopet read_count = read(tech_pvt->controldevfd, tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); if (read_count == 0) { - if(msecs_passed <= timeout_in_msec){ - goto read; + if (msecs_passed <= timeout_in_msec) { + goto read; } } if (read_count == -1) { @@ -950,7 +949,7 @@ read: DEBUGA_GSMOPEN("|%s| +CREG: Display: %d, Registration=%d\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i], n, stat); if (err < 2) { DEBUGA_GSMOPEN("|%s| is not formatted as: |+CREG: xx,yy|\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); - }else{ + } else { if (stat == 0) { ERRORA ("|%s| CELLPHONE is not registered to network, consider to move it or additional antenna\n", @@ -959,7 +958,7 @@ read: tech_pvt->home_network_registered = 0; tech_pvt->roaming_registered = 0; alarm_event(tech_pvt, ALARM_NO_NETWORK_REGISTRATION, - "CELLPHONE is not registered to network, consider to move it or additional antenna"); + "CELLPHONE is not registered to network, consider to move it or additional antenna"); } else if (stat == 1) { DEBUGA_GSMOPEN("|%s| CELLPHONE is registered to the HOME network\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); tech_pvt->not_registered = 0; @@ -1015,7 +1014,6 @@ read: DEBUGA_GSMOPEN("just sent GSMOPEN_CONTROL_HANGUP\n", GSMOPEN_P_LOG); } - // //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); @@ -1660,7 +1658,7 @@ read: iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); + sizeof(content2)); } else { ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); @@ -1691,7 +1689,7 @@ read: -#endif// WANT_GSMLIB +#endif // WANT_GSMLIB @@ -1874,23 +1872,23 @@ int gsmopen_serial_write_AT(private_t *tech_pvt, const char *data) if (res != 1) { ERRORA("Error RE-sending (carriage return): %d %d (%s)\n", GSMOPEN_P_LOG, count, res, strerror(errno)); - ERRORA - ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", - GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->controldev_dead = 1; - //cicopet close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running = 0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active = 0; - tech_pvt->name[0] = '\0'; + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; - UNLOCKA(tech_pvt->controldev_lock); - if (tech_pvt->owner) { - tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; - gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - } - switch_sleep(1000000); + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); return -1; @@ -1978,23 +1976,23 @@ int gsmopen_serial_write_AT_noack(private_t *tech_pvt, const char *data) ERRORA("Error sending data... (%s)\n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); - ERRORA - ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", - GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->controldev_dead = 1; - //cicopet close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running = 0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active = 0; - tech_pvt->name[0] = '\0'; + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; - UNLOCKA(tech_pvt->controldev_lock); - if (tech_pvt->owner) { - tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; - gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - } - switch_sleep(1000000); + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); return -1; @@ -2017,23 +2015,23 @@ int gsmopen_serial_write_AT_ack(private_t *tech_pvt, const char *data) ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); - ERRORA - ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", - GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->controldev_dead = 1; - //cicopet close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running = 0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active = 0; - tech_pvt->name[0] = '\0'; + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; - UNLOCKA(tech_pvt->controldev_lock); - if (tech_pvt->owner) { - tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; - gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - } - switch_sleep(1000000); + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); return -1; @@ -2059,23 +2057,23 @@ int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *d ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); - ERRORA - ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", - GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->controldev_dead = 1; - //cicopet close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running = 0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active = 0; - tech_pvt->name[0] = '\0'; + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; - UNLOCKA(tech_pvt->controldev_lock); - if (tech_pvt->owner) { - tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; - gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - } - switch_sleep(1000000); + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); return -1; @@ -2101,23 +2099,23 @@ int gsmopen_serial_write_AT_expect1(private_t *tech_pvt, const char *data, const ERRORA("Error sending data... (%s) \n", GSMOPEN_P_LOG, strerror(errno)); UNLOCKA(tech_pvt->controldev_lock); - ERRORA - ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", - GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->controldev_dead = 1; - //cicopet close(tech_pvt->controldevfd); - ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); - tech_pvt->running = 0; - alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); - tech_pvt->active = 0; - tech_pvt->name[0] = '\0'; + ERRORA + ("wrote -1 bytes!!! Nenormalno! Marking this gsmopen_serial_device %s as dead, andif it is owned by a channel, hanging up. Maybe the phone is stuck, switched off, power down or battery exhausted\n", + GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->controldev_dead = 1; + //cicopet close(tech_pvt->controldevfd); + ERRORA("gsmopen_serial_monitor failed, declaring %s dead\n", GSMOPEN_P_LOG, tech_pvt->controldevice_name); + tech_pvt->running = 0; + alarm_event(tech_pvt, ALARM_FAILED_INTERFACE, "gsmopen_serial_monitor failed, declaring interface dead"); + tech_pvt->active = 0; + tech_pvt->name[0] = '\0'; - UNLOCKA(tech_pvt->controldev_lock); - if (tech_pvt->owner) { - tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; - gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); - } - switch_sleep(1000000); + UNLOCKA(tech_pvt->controldev_lock); + if (tech_pvt->owner) { + tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; + gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); + } + switch_sleep(1000000); return -1; @@ -2324,10 +2322,10 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); #ifdef WIN32 - iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); -#else// WIN32 + iconv_res = iconv(iconv_format, (const char **) &inbuf, &inbytesleft, &outbuf, &outbytesleft); +#else // WIN32 iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); -#endif// WIN32 +#endif // WIN32 if (iconv_res == (size_t) -1) { DEBUGA_GSMOPEN("2 ciao in=%s, inleft=%d, out=%s, outleft=%d, converted=%s, utf8_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, converted, utf8_out); @@ -2343,6 +2341,7 @@ int ucs2_to_utf8(private_t *tech_pvt, char *ucs2_in, char *utf8_out, size_t outb //#endif //WIN32 return 0; } + int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *iso_8859_1_out, size_t outbytesleft) { /* cicopet */ @@ -2365,10 +2364,10 @@ int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, c DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, iso_8859_1_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, iso_8859_1_out); #ifdef WIN32 - iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); -#else// WIN32 + iconv_res = iconv(iconv_format, (const char **) &inbuf, &inbytesleft, &outbuf, &outbytesleft); +#else // WIN32 iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); -#endif// WIN32 +#endif // WIN32 if (iconv_res == (size_t) -1) { ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); return -1; @@ -2420,10 +2419,10 @@ int iso_8859_1_to_utf8(private_t *tech_pvt, char *iso_8859_1_in, char *utf8_out, inbytesleft = strlen(iso_8859_1_in) * 2; #ifdef WIN32 - iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); -#else// WIN32 + iconv_res = iconv(iconv_format, (const char **) &inbuf, &inbytesleft, &outbuf, &outbytesleft); +#else // WIN32 iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); -#endif// WIN32 +#endif // WIN32 if (iconv_res == (size_t) -1) { DEBUGA_GSMOPEN("ciao in=%s, inleft=%d, out=%s, outleft=%d, utf8_out=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_out); @@ -2468,10 +2467,10 @@ int utf8_to_ucs2(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, char *u DEBUGA_GSMOPEN("in=%s, inleft=%d, out=%s, outleft=%d, utf8_in=%s, converted=%s\n", GSMOPEN_P_LOG, inbuf, (int) inbytesleft, outbuf, (int) outbytesleft, utf8_in, converted); #ifdef WIN32 - iconv_res = iconv(iconv_format, (const char **)&inbuf, &inbytesleft, &outbuf, &outbytesleft); -#else// WIN32 + iconv_res = iconv(iconv_format, (const char **) &inbuf, &inbytesleft, &outbuf, &outbytesleft); +#else // WIN32 iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); -#endif// WIN32 +#endif // WIN32 if (iconv_res == (size_t) -1) { ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); return -1; @@ -2659,7 +2658,8 @@ int gsmopen_senddigit(private_t *tech_pvt, char digit) sprintf(at_command, "%s=1,%c", tech_pvt->at_send_dtmf, digit); res = gsmopen_serial_write_AT_ack(tech_pvt, at_command); if (res) { - DEBUGA_GSMOPEN("XXX answer (OK) takes long to come, goes into timeout. command used: '%s=1,%c'\n", GSMOPEN_P_LOG, tech_pvt->at_send_dtmf, digit); + DEBUGA_GSMOPEN("XXX answer (OK) takes long to come, goes into timeout. command used: '%s=1,%c'\n", GSMOPEN_P_LOG, tech_pvt->at_send_dtmf, + digit); } } @@ -2707,12 +2707,12 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) if (err) { ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); } -#else// WANT_GSMLIB +#else // WANT_GSMLIB err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); if (err) { ERRORA("AT+CMGF=0 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); } -#endif// WANT_GSMLIB +#endif // WANT_GSMLIB if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { @@ -2720,94 +2720,81 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) SMSMessageRef smsMessage; memset(mesg_test, '\0', sizeof(mesg_test)); - sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 //sprintf(mesg_test,":) ciao belè èéàòìù"); //text=mesg_test; utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); smsMessage = new SMSSubmitMessage(smscommand, dest); string pdu = smsMessage->encode(); - strncpy(pdu2, pdu.c_str(), sizeof(pdu2)-1); + strncpy(pdu2, pdu.c_str(), sizeof(pdu2) - 1); memset(smscommand, '\0', sizeof(smscommand)); pdulenght = pdu.length() / 2 - 1; - sprintf(smscommand, "AT+CMGS=%d", pdulenght); + sprintf(smscommand, "AT+CMGS=%d", pdulenght); #ifdef NOTDEF -*** 9. How to support unicode? + ***9. How to support unicode ? You need 6 steps : 1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET 2. set your locale correctly, for example + , my locale, china.setlocale(LC_ALL, "chs"); -You need 6 steps: + 3. translate MBCS(multiple byte character set) string to unicode string.wchar_t wstr[1000]; + memset(wstr, 0, 2000); + mbstowcs(wstr, data.c_str(), data.length()); -1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET + 4. get unicode string length. int wcs_len = wcslen(wstr); -2. set your locale correctly, for example, my locale, china. - setlocale(LC_ALL, "chs"); + 5. change unicode string to net order. for (int i = 0; i < wcs_len; i++) + wstr[i] = htons(wstr[i]); -3. translate MBCS(multiple byte character set) string to unicode string. - wchar_t wstr[ 1000 ]; - memset(wstr, 0, 2000); - mbstowcs(wstr, data.c_str(), data.length()); + 6. put unicode string into pdu.char content2[1000]; + SMSMessageRef sms; + //MessageType messagetype; + //Address servicecentreaddress; + //Timestamp servicecentretimestamp; + //Address sender_recipient_address; -4. get unicode string length. - int wcs_len = wcslen(wstr); + sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 -5. change unicode string to net order. - for (int i = 0; i < wcs_len; i++) - wstr[ i ] = htons(wstr[ i ]); + DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); -6. put unicode string into pdu. - + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - char content2[1000]; - SMSMessageRef sms; - //MessageType messagetype; - //Address servicecentreaddress; - //Timestamp servicecentretimestamp; - //Address sender_recipient_address; - - sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - - DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); - } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - - } - DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); - DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); - DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); - DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); + } + DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); + DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); + DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); + DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); - memset(sms_body, '\0', sizeof(sms_body)); - strncpy(sms_body, content2, sizeof(sms_body)); - DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); - strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); - strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); - strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); - strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); - strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), - sizeof(tech_pvt->sms_servicecentreaddress)); - tech_pvt->sms_messagetype = sms->messageType(); - //messagetype = sms->messageType(); - //servicecentreaddress = sms->serviceCentreAddress(); - //servicecentretimestamp = sms->serviceCentreTimestamp(); - //sender_recipient_address = sms->address(); -#endif// NOTDEF + memset(sms_body, '\0', sizeof(sms_body)); + strncpy(sms_body, content2, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); + strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); + strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); + strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), sizeof(tech_pvt->sms_servicecentreaddress)); + tech_pvt->sms_messagetype = sms->messageType(); + //messagetype = sms->messageType(); + //servicecentreaddress = sms->serviceCentreAddress(); + //servicecentretimestamp = sms->serviceCentreTimestamp(); + //sender_recipient_address = sms->address(); +#endif // NOTDEF -#else// WANT_GSMLIB +#else // WANT_GSMLIB ERRORA("tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0 && no WANT_GSMLIB\n", GSMOPEN_P_LOG); return RESULT_FAILURE; -#endif// WANT_GSMLIB +#endif // WANT_GSMLIB } else { char dest2[1048]; @@ -2857,9 +2844,9 @@ You need 6 steps: #ifndef WANT_GSMLIB memset(mesg_test, '\0', sizeof(mesg_test)); - sprintf(mesg_test,":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 //text=mesg_test; - + memset(smscommand, '\0', sizeof(smscommand)); if (tech_pvt->no_ucs2) { sprintf(smscommand, "%s", text); @@ -2869,7 +2856,7 @@ You need 6 steps: #else // WANT_GSMLIB memset(smscommand, '\0', sizeof(smscommand)); - sprintf(smscommand, "%s", pdu2); + sprintf(smscommand, "%s", pdu2); #endif // WANT_GSMLIB smscommand[strlen(smscommand)] = 0x1A; DEBUGA_GSMOPEN("smscommand len is: %d, text is:|||%s|||\n", GSMOPEN_P_LOG, (int) strlen(smscommand), smscommand); @@ -2922,13 +2909,12 @@ You need 6 steps: UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(&tech_pvt->controldev_lock); } - #ifdef NOTDEF err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); if (err) { DEBUGA_GSMOPEN("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } -#endif// NOTDEF +#endif // NOTDEF DEBUGA_GSMOPEN("FINISH\n", GSMOPEN_P_LOG); if (failed) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 2e7d950436..917f3fccc9 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -296,9 +296,9 @@ switch_status_t gsmopen_tech_init(private_t *tech_pvt, switch_core_session_t *se switch_core_timer_sync(&tech_pvt->timer_write); - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_HANGUP); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); DEBUGA_GSMOPEN("gsmopen_codec SUCCESS\n", GSMOPEN_P_LOG); return SWITCH_STATUS_SUCCESS; } @@ -476,9 +476,9 @@ static switch_status_t channel_on_init(switch_core_session_t *session) channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_IO); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); /* Move channel's state machine to ROUTING. This means the call is trying to get from the initial start where the call because, to the point @@ -553,11 +553,11 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session) } DEBUGA_GSMOPEN("%s CHANNEL HANGUP\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_IO); switch_clear_flag(tech_pvt, TFLAG_VOICE); switch_set_flag(tech_pvt, TFLAG_HANGUP); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); gsmopen_hangup(tech_pvt); @@ -752,9 +752,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch *frame = &tech_pvt->read_frame; - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_VOICE); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); if (samples != 320) { if (samples != 0) { @@ -783,15 +783,15 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch p++; } DEBUGA_GSMOPEN("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", GSMOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, - (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); + (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; } } while (switch_test_flag(tech_pvt, TFLAG_IO)) { if (switch_test_flag(tech_pvt, TFLAG_BREAK)) { - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_BREAK); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); DEBUGA_GSMOPEN("BREAK: CHANNEL READ FRAME goto CNG\n", GSMOPEN_P_LOG); goto cng; } @@ -802,9 +802,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch } if (switch_test_flag(tech_pvt, TFLAG_IO) && switch_test_flag(tech_pvt, TFLAG_VOICE)) { - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_VOICE); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); if (!tech_pvt->read_frame.datalen) { DEBUGA_GSMOPEN("CHANNEL READ CONTINUE\n", GSMOPEN_P_LOG); continue; @@ -867,7 +867,7 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc //switch_core_timer_next(&tech_pvt->timer_write); gsmopen_sound_boost(frame->data, frame->samples, tech_pvt->playback_boost); - if(!tech_pvt->no_sound){ + if (!tech_pvt->no_sound) { sent = tech_pvt->serialPort_serial_audio->Write((char *) frame->data, (int) (frame->datalen)); if (sent && sent != frame->datalen && sent != -1) { @@ -889,9 +889,9 @@ static switch_status_t channel_answer_channel(switch_core_session_t *session) switch_assert(tech_pvt != NULL); //ERRORA("%s CHANNEL INIT\n", GSMOPEN_P_LOG, tech_pvt->name); - switch_mutex_lock(tech_pvt->flag_mutex); + switch_mutex_lock(tech_pvt->flag_mutex); switch_set_flag(tech_pvt, TFLAG_IO); - switch_mutex_unlock(tech_pvt->flag_mutex); + switch_mutex_unlock(tech_pvt->flag_mutex); gsmopen_serial_answer(tech_pvt); @@ -926,7 +926,7 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s case SWITCH_MESSAGE_INDICATE_ANSWER: { DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_ANSWER\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - if(tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE){ + if (tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE) { DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); channel_answer_channel(session); } @@ -936,7 +936,7 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s case SWITCH_MESSAGE_INDICATE_PROGRESS: { DEBUGA_GSMOPEN("%s CHANNEL got SWITCH_MESSAGE_INDICATE_PROGRESS\n", GSMOPEN_P_LOG, switch_channel_get_name(channel)); - if(tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE){ + if (tech_pvt->interface_state != GSMOPEN_STATE_UP && tech_pvt->phone_callflow != CALLFLOW_CALL_ACTIVE) { DEBUGA_GSMOPEN("MSG_ID=%d, TO BE ANSWERED!\n", GSMOPEN_P_LOG, msg->message_id); channel_answer_channel(session); } @@ -961,7 +961,7 @@ static switch_status_t channel_receive_message(switch_core_session_t *session, s break; default: { - if(msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC && msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC_COMPLETE){ + if (msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC && msg->message_id != SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC_COMPLETE) { DEBUGA_GSMOPEN("MSG_ID=%d\n", GSMOPEN_P_LOG, msg->message_id); } } @@ -1163,7 +1163,7 @@ static switch_status_t load_config(int reload_type) SetConsoleOutputCP(65001); DEBUGA_GSMOPEN("Windows CODEPAGE Output =%d\n", GSMOPEN_P_LOG, GetConsoleOutputCP()); //let's hope to have unicode in console now. You need to use Lucida Console or, much better, Courier New font for the command prompt to show unicode -#endif// WIN32 +#endif // WIN32 NOTICA("GSMOPEN Charset Output Test 0 %s\n", GSMOPEN_P_LOG, "èéòàù"); NOTICA("GSMOPEN Charset Output Test 1 %s\n", GSMOPEN_P_LOG, "ç°§^£"); NOTICA("GSMOPEN Charset Output Test 2 %s\n", GSMOPEN_P_LOG, "новоÑти"); From e589efb17fd68d388a771108f9c1bd117bf69d97 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 3 May 2012 14:13:44 +0200 Subject: [PATCH 276/630] gsmopen: fix FS-4149 --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 2 +- .../mod_gsmopen/gsmopen_protocol.cpp | 49 ++++++++++++++----- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 30ed934f68..2b4c619783 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -99,9 +99,9 @@ #define PROTOCOL_FBUS2 1 #define PROTOCOL_NO_SERIAL 3 -#define AT_BUFSIZ 8192 //FIXME FIXME FIXME #define AT_MESG_MAX_LENGTH 2048 /* much more than 10 SMSs */ #define AT_MESG_MAX_LENGTH 2048 /* much more than 10 SMSs */ +#define AT_BUFSIZ AT_MESG_MAX_LENGTH //FIXME FIXME FIXME #define AT_MESG_MAX_LINES 256 /* 256 lines, so it can contains the results of AT+CLAC, that gives all the AT commands the phone supports */ #define AT_MESG_MAX_LINES 20 /* 256 lines, so it can contains the results of AT+CLAC, that gives all the AT commands the phone supports */ diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index a586c7658f..5ac4edc25a 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -557,6 +557,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us struct timeval timeout; char tmp_answer[AT_BUFSIZ]; char tmp_answer2[AT_BUFSIZ]; + char tmp_answer3[AT_BUFSIZ]; char *tmp_answer_ptr; char *last_line_ptr; int i = 0; @@ -578,13 +579,15 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us tmp_answer_ptr = tmp_answer; memset(tmp_answer, 0, sizeof(char) * AT_BUFSIZ); + memset(tmp_answer2, 0, sizeof(char) * AT_BUFSIZ); + memset(tmp_answer3, 0, sizeof(char) * AT_BUFSIZ); timeout.tv_sec = timeout_sec; timeout.tv_usec = timeout_usec; PUSHA_UNLOCKA(tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); - while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec) { + while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec ) { char *token_ptr; timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it @@ -598,6 +601,8 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } //read_count = tech_pvt->serialPort_serial_control->Readv(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer), (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0)); read_count = tech_pvt->serialPort_serial_control->Read(tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); + memset(tmp_answer3, 0, sizeof(char) * AT_BUFSIZ); + strcpy(tmp_answer3, tmp_answer_ptr); //cicopet read_count = read(tech_pvt->controldevfd, tmp_answer_ptr, AT_BUFSIZ - (tmp_answer_ptr - tmp_answer)); @@ -627,10 +632,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us return -1; } - if (option_debug > 90) { - //DEBUGA_GSMOPEN("1 read %d bytes, --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer_ptr); - //DEBUGA_GSMOPEN("2 read %d bytes, --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer); - } tmp_answer_ptr = tmp_answer_ptr + read_count; la_counter = 0; @@ -645,6 +646,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us GSMOPEN_P_LOG, token_ptr, tech_pvt->line_array.result[la_counter]); } la_counter++; + while ((token_ptr = strtok(NULL, "\n\r"))) { last_line_ptr = token_ptr; strncpy(tech_pvt->line_array.result[la_counter], token_ptr, AT_MESG_MAX_LENGTH); @@ -654,6 +656,14 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us GSMOPEN_P_LOG, token_ptr, tech_pvt->line_array.result[la_counter]); } la_counter++; + + if (la_counter == AT_MESG_MAX_LINES) { + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); + at_ack = AT_ERROR; + break; + } + } } else { last_line_ptr = tmp_answer; @@ -666,22 +676,34 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } if (expected_string && !expect_crlf && !memcmp(last_line_ptr, expected_string, strlen(expected_string)) - ) { + ) { strncpy(tech_pvt->line_array.result[la_counter], last_line_ptr, AT_MESG_MAX_LENGTH); // match expected string -> accept it withtout CRLF la_counter++; - + if (la_counter == AT_MESG_MAX_LINES) { + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); + at_ack = AT_ERROR; + break; + } } /* if the last line read was not a complete line, we'll read the rest in the future */ else if (tmp_answer[strlen(tmp_answer) - 1] != '\r' && tmp_answer[strlen(tmp_answer) - 1] != '\n') la_counter--; /* let's list the complete lines read so far, without re-listing the lines that has yet been listed */ - if (option_debug > 1) { - for (i = la_read; i < la_counter; i++) - DEBUGA_GSMOPEN("Read line %d: |%s|\n", GSMOPEN_P_LOG, i, tech_pvt->line_array.result[i]); + for (i = la_read; i < la_counter; i++){ + DEBUGA_GSMOPEN("Read line %d: |%s| la_counter=%d\n", GSMOPEN_P_LOG, i, tech_pvt->line_array.result[i], la_counter); } + if (la_counter == AT_MESG_MAX_LINES) { + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); + at_ack = AT_ERROR; + break; + } + + /* let's interpret the complete lines read so far (WITHOUT looking for OK, ERROR, and EXPECTED_STRING), without re-interpreting the lines that has been yet interpreted, so we're sure we don't miss anything */ for (i = la_read; i < la_counter; i++) { @@ -1544,6 +1566,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us strncpy(tech_pvt->imsi, tech_pvt->line_array.result[i], sizeof(tech_pvt->imsi)); } } + /* if we are reading an sms message from memory, put the line into the sms buffer if the line is not "OK" or "ERROR" */ if (tech_pvt->reading_sms_msg > 1 && at_ack == -1) { int c; @@ -1706,11 +1729,13 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us if (look_for_ack && at_ack > -1) break; - if (la_counter > AT_MESG_MAX_LINES) { - ERRORA("Too many lines in result (>%d). Stopping reader.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES); + if (la_counter == AT_MESG_MAX_LINES) { + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); at_ack = AT_ERROR; break; } + } UNLOCKA(tech_pvt->controldev_lock); From a10f01f10c794c82e59470dae858a9513d4310fb Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 3 May 2012 14:15:10 +0200 Subject: [PATCH 277/630] gsmopen: indented --- .../mod_gsmopen/gsmopen_protocol.cpp | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 5ac4edc25a..63d2d1cad5 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -587,7 +587,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us PUSHA_UNLOCKA(tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); - while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec ) { + while ((!tech_pvt->controldev_dead) && msecs_passed <= timeout_in_msec) { char *token_ptr; timeout.tv_sec = timeout_sec; //reset the timeout, linux modify it timeout.tv_usec = timeout_usec; //reset the timeout, linux modify it @@ -658,7 +658,8 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us la_counter++; if (la_counter == AT_MESG_MAX_LINES) { - ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, + AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); at_ack = AT_ERROR; break; @@ -676,12 +677,13 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } if (expected_string && !expect_crlf && !memcmp(last_line_ptr, expected_string, strlen(expected_string)) - ) { + ) { strncpy(tech_pvt->line_array.result[la_counter], last_line_ptr, AT_MESG_MAX_LENGTH); // match expected string -> accept it withtout CRLF la_counter++; if (la_counter == AT_MESG_MAX_LINES) { - ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, + AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); at_ack = AT_ERROR; break; @@ -692,12 +694,13 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us la_counter--; /* let's list the complete lines read so far, without re-listing the lines that has yet been listed */ - for (i = la_read; i < la_counter; i++){ + for (i = la_read; i < la_counter; i++) { DEBUGA_GSMOPEN("Read line %d: |%s| la_counter=%d\n", GSMOPEN_P_LOG, i, tech_pvt->line_array.result[i], la_counter); } if (la_counter == AT_MESG_MAX_LINES) { - ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, + AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); at_ack = AT_ERROR; break; @@ -1035,7 +1038,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); DEBUGA_GSMOPEN("just sent GSMOPEN_CONTROL_HANGUP\n", GSMOPEN_P_LOG); } - // //tech_pvt->owner->hangupcause = GSMOPEN_CAUSE_FAILURE; //gsmopen_queue_control(tech_pvt->owner, GSMOPEN_CONTROL_HANGUP); @@ -1730,7 +1732,8 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us break; if (la_counter == AT_MESG_MAX_LINES) { - ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); + ERRORA("Too many lines in result (>%d). la_counter=%d. tech_pvt->reading_sms_msg=%d. Stop accumulating lines.\n", GSMOPEN_P_LOG, + AT_MESG_MAX_LINES, la_counter, tech_pvt->reading_sms_msg); WARNINGA("read was %d bytes, tmp_answer3= --|%s|--\n", GSMOPEN_P_LOG, read_count, tmp_answer3); at_ack = AT_ERROR; break; @@ -2766,9 +2769,9 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) memset(wstr, 0, 2000); mbstowcs(wstr, data.c_str(), data.length()); - 4. get unicode string length. int wcs_len = wcslen(wstr); + 4. get unicode string length.int wcs_len = wcslen(wstr); - 5. change unicode string to net order. for (int i = 0; i < wcs_len; i++) + 5. change unicode string to net order.for (int i = 0; i < wcs_len; i++) wstr[i] = htons(wstr[i]); 6. put unicode string into pdu.char content2[1000]; From 16662920251ace00a4c84f5c36c88992fdfe9aff Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 3 May 2012 15:22:15 +0200 Subject: [PATCH 278/630] gsmopen: fix FS-4181 , catch gsmlib exceptions --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 63d2d1cad5..40d782e7ad 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1569,6 +1569,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } } + /* if we are reading an sms message from memory, put the line into the sms buffer if the line is not "OK" or "ERROR" */ if (tech_pvt->reading_sms_msg > 1 && at_ack == -1) { int c; @@ -1667,6 +1668,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us #ifdef WANT_GSMLIB +try{ char content2[1000]; SMSMessageRef sms; //MessageType messagetype; @@ -1712,6 +1714,10 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us //servicecentretimestamp = sms->serviceCentreTimestamp(); //sender_recipient_address = sms->address(); +} catch (GsmException &ge) + { + ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); + } #endif // WANT_GSMLIB @@ -2745,6 +2751,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { #ifdef WANT_GSMLIB +try{ SMSMessageRef smsMessage; memset(mesg_test, '\0', sizeof(mesg_test)); @@ -2818,6 +2825,11 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) //servicecentretimestamp = sms->serviceCentreTimestamp(); //sender_recipient_address = sms->address(); #endif // NOTDEF +} catch (GsmException &ge) + { + ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); + } + #else // WANT_GSMLIB ERRORA("tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0 && no WANT_GSMLIB\n", GSMOPEN_P_LOG); From de019abd21738ac806d4325358eec217ca8078b6 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 3 May 2012 15:23:57 +0200 Subject: [PATCH 279/630] gsmopen: indented --- .../mod_gsmopen/gsmopen_protocol.cpp | 214 +++++++++--------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 40d782e7ad..53975b2cc1 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1668,56 +1668,56 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us #ifdef WANT_GSMLIB -try{ - char content2[1000]; - SMSMessageRef sms; - //MessageType messagetype; - //Address servicecentreaddress; - //Timestamp servicecentretimestamp; - //Address sender_recipient_address; + try { + char content2[1000]; + SMSMessageRef sms; + //MessageType messagetype; + //Address servicecentreaddress; + //Timestamp servicecentretimestamp; + //Address sender_recipient_address; - sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); - } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), + content2, sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + + } + DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); + DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); + DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); + DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); + + + memset(sms_body, '\0', sizeof(sms_body)); + strncpy(sms_body, content2, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); + strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); + strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); + strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), + sizeof(tech_pvt->sms_servicecentreaddress)); + tech_pvt->sms_messagetype = sms->messageType(); + //messagetype = sms->messageType(); + //servicecentreaddress = sms->serviceCentreAddress(); + //servicecentretimestamp = sms->serviceCentreTimestamp(); + //sender_recipient_address = sms->address(); } - DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); - DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); - DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); - DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); - - - memset(sms_body, '\0', sizeof(sms_body)); - strncpy(sms_body, content2, sizeof(sms_body)); - DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); - strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); - strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); - strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); - strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); - strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), - sizeof(tech_pvt->sms_servicecentreaddress)); - tech_pvt->sms_messagetype = sms->messageType(); - //messagetype = sms->messageType(); - //servicecentreaddress = sms->serviceCentreAddress(); - //servicecentretimestamp = sms->serviceCentreTimestamp(); - //sender_recipient_address = sms->address(); - -} catch (GsmException &ge) - { - ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); - } + catch(GsmException & ge) { + ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); + } #endif // WANT_GSMLIB @@ -2751,84 +2751,84 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { #ifdef WANT_GSMLIB -try{ - SMSMessageRef smsMessage; + try { + SMSMessageRef smsMessage; - memset(mesg_test, '\0', sizeof(mesg_test)); - sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 - //sprintf(mesg_test,":) ciao belè èéàòìù"); - //text=mesg_test; + memset(mesg_test, '\0', sizeof(mesg_test)); + sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + //sprintf(mesg_test,":) ciao belè èéàòìù"); + //text=mesg_test; - utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); - smsMessage = new SMSSubmitMessage(smscommand, dest); - string pdu = smsMessage->encode(); - strncpy(pdu2, pdu.c_str(), sizeof(pdu2) - 1); - memset(smscommand, '\0', sizeof(smscommand)); - pdulenght = pdu.length() / 2 - 1; - sprintf(smscommand, "AT+CMGS=%d", pdulenght); + utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); + smsMessage = new SMSSubmitMessage(smscommand, dest); + string pdu = smsMessage->encode(); + strncpy(pdu2, pdu.c_str(), sizeof(pdu2) - 1); + memset(smscommand, '\0', sizeof(smscommand)); + pdulenght = pdu.length() / 2 - 1; + sprintf(smscommand, "AT+CMGS=%d", pdulenght); #ifdef NOTDEF - ***9. How to support unicode ? You need 6 steps : 1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET 2. set your locale correctly, for example - , my locale, china.setlocale(LC_ALL, "chs"); + ***9. How to support unicode ? You need 6 steps : 1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET 2. set your locale correctly, for example + , my locale, china.setlocale(LC_ALL, "chs"); - 3. translate MBCS(multiple byte character set) string to unicode string.wchar_t wstr[1000]; - memset(wstr, 0, 2000); - mbstowcs(wstr, data.c_str(), data.length()); + 3. translate MBCS(multiple byte character set) string to unicode string.wchar_t wstr[1000]; + memset(wstr, 0, 2000); + mbstowcs(wstr, data.c_str(), data.length()); - 4. get unicode string length.int wcs_len = wcslen(wstr); + 4. get unicode string length.int wcs_len = wcslen(wstr); - 5. change unicode string to net order.for (int i = 0; i < wcs_len; i++) - wstr[i] = htons(wstr[i]); + 5. change unicode string to net order.for (int i = 0; i < wcs_len; i++) + wstr[i] = htons(wstr[i]); - 6. put unicode string into pdu.char content2[1000]; - SMSMessageRef sms; - //MessageType messagetype; - //Address servicecentreaddress; - //Timestamp servicecentretimestamp; - //Address sender_recipient_address; + 6. put unicode string into pdu.char content2[1000]; + SMSMessageRef sms; + //MessageType messagetype; + //Address servicecentreaddress; + //Timestamp servicecentretimestamp; + //Address sender_recipient_address; - sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 + sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); + DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); - } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + memset(content2, '\0', sizeof(content2)); + if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { + iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); + } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { + ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, + sizeof(content2)); + } else { + ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - } - DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); - DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); - DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); - DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); + } + DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); + DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); + DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); + DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); + DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); - memset(sms_body, '\0', sizeof(sms_body)); - strncpy(sms_body, content2, sizeof(sms_body)); - DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); - strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); - strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); - strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); - strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); - strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), sizeof(tech_pvt->sms_servicecentreaddress)); - tech_pvt->sms_messagetype = sms->messageType(); - //messagetype = sms->messageType(); - //servicecentreaddress = sms->serviceCentreAddress(); - //servicecentretimestamp = sms->serviceCentreTimestamp(); - //sender_recipient_address = sms->address(); + memset(sms_body, '\0', sizeof(sms_body)); + strncpy(sms_body, content2, sizeof(sms_body)); + DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); + strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); + strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); + strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); + strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); + strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), sizeof(tech_pvt->sms_servicecentreaddress)); + tech_pvt->sms_messagetype = sms->messageType(); + //messagetype = sms->messageType(); + //servicecentreaddress = sms->serviceCentreAddress(); + //servicecentretimestamp = sms->serviceCentreTimestamp(); + //sender_recipient_address = sms->address(); #endif // NOTDEF -} catch (GsmException &ge) - { - ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); - } + } + catch(GsmException & ge) { + ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); + } #else // WANT_GSMLIB From 086cbf1bfcd00cccb5d0b9e53390eb490d0c78d0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 3 May 2012 13:17:05 -0500 Subject: [PATCH 280/630] FS-4176 --resolve --- .../mod_conference/mod_conference.c | 93 ++++++++++++++++++- 1 file changed, 89 insertions(+), 4 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 89182fa6de..a46437aab3 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -335,6 +335,7 @@ typedef struct conference_obj { switch_time_t end_time; char *log_dir; struct vid_helper vh[2]; + struct vid_helper mh; } conference_obj_t; /* Relationship with another member */ @@ -477,7 +478,8 @@ static switch_status_t chat_send(switch_event_t *message_event); static void launch_conference_record_thread(conference_obj_t *conference, char *path); -static void launch_conference_video_bridge_thread(conference_member_t *member_a, conference_member_t *member_b); +static int launch_conference_video_bridge_thread(conference_member_t *member_a, conference_member_t *member_b); +static void launch_conference_video_mirror_thread(conference_member_t *member_a); typedef switch_status_t (*conf_api_args_cmd_t) (conference_obj_t *, switch_stream_handle_t *, int, char **); typedef switch_status_t (*conf_api_member_cmd_t) (conference_member_t *, switch_stream_handle_t *, void *); @@ -1221,6 +1223,56 @@ static void *SWITCH_THREAD_FUNC conference_video_bridge_thread_run(switch_thread } + +static void *SWITCH_THREAD_FUNC conference_video_mirror_thread_run(switch_thread_t *thread, void *obj) +{ + struct vid_helper *vh = obj; + switch_core_session_t *session_a = vh->member_a->session; + switch_channel_t *channel_a = switch_core_session_get_channel(session_a); + switch_status_t status; + switch_frame_t *read_frame; + conference_obj_t *conference = vh->member_a->conference; + + switch_thread_rwlock_rdlock(conference->rwlock); + switch_thread_rwlock_rdlock(vh->member_a->rwlock); + + /* Acquire locks for both sessions so the helper object and member structures don't get destroyed before we exit */ + switch_core_session_read_lock(session_a); + + vh->up = 1; + while (vh->up > 0 && switch_test_flag(vh->member_a, MFLAG_RUNNING) && + switch_channel_ready(channel_a)) { + + if (vh->up == 1) { + status = switch_core_session_read_video_frame(session_a, &read_frame, SWITCH_IO_FLAG_NONE, 0); + if (!SWITCH_READ_ACCEPTABLE(status)) { + break; + } + + if (!switch_test_flag(read_frame, SFF_CNG)) { + if (switch_core_session_write_video_frame(session_a, read_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { + break; + } + } + } else { + switch_yield(100000); + } + } + + + switch_thread_rwlock_unlock(vh->member_a->rwlock); + + switch_core_session_rwunlock(session_a); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s video mirror thread ended.\n", switch_channel_get_name(channel_a)); + + switch_thread_rwlock_unlock(conference->rwlock); + + vh->up = 0; + return NULL; +} + + /* Main video monitor thread (1 per distinct conference room) */ static void *SWITCH_THREAD_FUNC conference_video_thread_run(switch_thread_t *thread, void *obj) { @@ -1523,8 +1575,22 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v switch_channel_ready(switch_core_session_get_channel(video_bridge_members[0]->session)) && switch_channel_ready(switch_core_session_get_channel(video_bridge_members[1]->session)) ) { + conference->mh.up = 2; + if (launch_conference_video_bridge_thread(video_bridge_members[0], video_bridge_members[1])) { + conference->mh.up = 1; + } else { + conference->mh.up = -1; + } + } else if (conference->vh[0].up == 0 && + conference->vh[1].up == 0 && + conference->mh.up == 0 && + video_bridge_members[0] && + !video_bridge_members[1] && + switch_test_flag(video_bridge_members[0], MFLAG_RUNNING) && + switch_channel_ready(switch_core_session_get_channel(video_bridge_members[0]->session)) + ) { - launch_conference_video_bridge_thread(video_bridge_members[0], video_bridge_members[1]); + launch_conference_video_mirror_thread(video_bridge_members[0]); } } @@ -6764,11 +6830,11 @@ static void launch_conference_video_thread(conference_obj_t *conference) } /* Create a video thread for the conference and launch it */ -static void launch_conference_video_bridge_thread(conference_member_t *member_a, conference_member_t *member_b) +static int launch_conference_video_bridge_thread(conference_member_t *member_a, conference_member_t *member_b) { conference_obj_t *conference = member_a->conference; switch_memory_pool_t *pool = conference->pool; - int sanity = 10000; + int sanity = 10000, r = 0; memset(conference->vh, 0, sizeof(conference->vh)); @@ -6787,14 +6853,33 @@ static void launch_conference_video_bridge_thread(conference_member_t *member_a, if (conference->vh[0].up == 1 && conference->vh[1].up != 1) { conference->vh[0].up = -1; + r = -1; } if (conference->vh[1].up == 1 && conference->vh[0].up != 1) { conference->vh[1].up = -1; + r = -1; } + + return r; } + + +/* Create a video thread for the conference and launch it */ +static void launch_conference_video_mirror_thread(conference_member_t *member_a) +{ + conference_obj_t *conference = member_a->conference; + switch_memory_pool_t *pool = conference->pool; + + memset(&conference->mh, 0, sizeof(conference->mh)); + + conference->mh.member_a = member_a; + + launch_thread_detached(conference_video_mirror_thread_run, pool, &conference->mh); +} + static void launch_conference_record_thread(conference_obj_t *conference, char *path) { switch_thread_t *thread; From 163fffb3e8c25e650047d4e914f92a516ed9b84f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 3 May 2012 13:13:48 -0500 Subject: [PATCH 281/630] fix issue with threaded ivrd, forking is back by default but threaded can be chosen with -t; in both modes the fd number is not passed as the first arg to the program but in threaded mode the stdin will no longer be mapped to the socket you will have to get the first command line arg instead of fileno stdin --- libs/esl/ivrd.c | 97 +++++++++++++++++++++++++++++++------- libs/esl/src/esl.c | 59 ++++++++++++++++++++++- libs/esl/src/include/esl.h | 4 +- libs/esl/testserver.c | 2 +- 4 files changed, 141 insertions(+), 21 deletions(-) diff --git a/libs/esl/ivrd.c b/libs/esl/ivrd.c index 3032a81cd3..2e2e6b2fa4 100644 --- a/libs/esl/ivrd.c +++ b/libs/esl/ivrd.c @@ -36,11 +36,56 @@ #include #include +static void my_forking_callback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr) +{ + esl_handle_t handle = {{0}}; + char path_buffer[1024] = { 0 }; + const char *path; + char arg[64] = { 0 }; + + if (fork()) { + close(client_sock); + return; + } + + if (esl_attach_handle(&handle, client_sock, addr) != ESL_SUCCESS || !handle.info_event) { + esl_log(ESL_LOG_ERROR, "Socket Error\n"); + exit(0); + } + + if (!(path = esl_event_get_header(handle.info_event, "variable_ivr_path"))) { + esl_disconnect(&handle); + esl_log(ESL_LOG_ERROR, "Missing ivr_path param!\n"); + exit(0); + } + + snprintf(arg, sizeof(arg), "%d", client_sock); + + strncpy(path_buffer, path, sizeof(path_buffer) - 1); + + /* hotwire the socket to STDIN/STDOUT */ + /* hotwire the socket to STDIN/STDOUT */ + if (!(dup2(client_sock, STDIN_FILENO)) && !(dup2(client_sock, STDOUT_FILENO))){ + esl_disconnect(&handle); + esl_log(ESL_LOG_ERROR, "Socket Error hotwiring socket to STDIN/STDOUT!\n"); + return; + } + + /* close the handle but leak the socket on purpose cos the child will need it open */ + handle.sock = -1; + esl_disconnect(&handle); + + execl(path_buffer, path_buffer, arg, (char *)NULL); + close(client_sock); + exit(0); +} + static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr) { esl_handle_t handle = {{0}}; const char *path; - + char path_buffer[1024] = { 0 }; + if (esl_attach_handle(&handle, client_sock, addr) != ESL_SUCCESS || !handle.info_event) { close(client_sock); esl_log(ESL_LOG_ERROR, "Socket Error\n"); @@ -53,16 +98,13 @@ static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struc return; } - /* hotwire the socket to STDIN/STDOUT */ - if (!(dup2(client_sock, STDIN_FILENO)) && !(dup2(client_sock, STDOUT_FILENO))){ - esl_disconnect(&handle); - esl_log(ESL_LOG_ERROR, "Socket Error hotwiring socket to STDIN/STDOUT!\n"); - return; - } + snprintf(path_buffer, sizeof(path_buffer), "%s %d", path, client_sock); - if(system(path)) { + + if (system(path_buffer)) { esl_log(ESL_LOG_ERROR, "System Call Failed! [%s]\n", strerror(errno)); } + esl_disconnect(&handle); } @@ -71,24 +113,43 @@ int main(int argc, char *argv[]) { int i; char *ip = NULL; - int port = 0; + int port = 0, thread = 0; - for (i = 1; i + 1 < argc; ) { - if (!strcasecmp(argv[i], "-h")) { - ip = argv[++i]; - } else if (!strcasecmp(argv[i], "-p")) { - port = atoi(argv[++i]); - } else { - i++; + for (i = 1; i < argc; ) { + int cont = 0; + + if (i + 1 < argc) { + if (!strcasecmp(argv[i], "-h")) { + ip = argv[++i]; cont++; + } else if (!strcasecmp(argv[i], "-p")) { + port = atoi(argv[++i]); cont++; + } } + + if (cont) { + i++; + continue; + } + + if (!strcasecmp(argv[i], "-t")) { + thread++; + } + + i++; } if (!(ip && port)) { - fprintf(stderr, "Usage %s -h -p \n", argv[0]); + fprintf(stderr, "Usage %s [-t] -h -p \n", argv[0]); return -1; } - esl_listen(ip, port, mycallback, 100000); + if (thread) { + printf("Starting threaded listener.\n"); + esl_listen_threaded(ip, port, mycallback, 100000); + } else { + printf("Starting forking listener.\n"); + esl_listen(ip, port, my_forking_callback); + } return 0; } diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index fb50c6d0da..22b27836fd 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -649,7 +649,64 @@ static void *client_thread(esl_thread_t *me, void *obj) } -ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, int max) +ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback) +{ + esl_socket_t server_sock = ESL_SOCK_INVALID; + struct sockaddr_in addr; + esl_status_t status = ESL_SUCCESS; + + if ((server_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + return ESL_FAIL; + } + + esl_socket_reuseaddr(server_sock); + + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(INADDR_ANY); + addr.sin_port = htons(port); + + if (bind(server_sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) { + status = ESL_FAIL; + goto end; + } + + if (listen(server_sock, 10000) < 0) { + status = ESL_FAIL; + goto end; + } + + for (;;) { + int client_sock; + struct sockaddr_in echoClntAddr; +#ifdef WIN32 + int clntLen; +#else + unsigned int clntLen; +#endif + + clntLen = sizeof(echoClntAddr); + + if ((client_sock = accept(server_sock, (struct sockaddr *) &echoClntAddr, &clntLen)) == ESL_SOCK_INVALID) { + status = ESL_FAIL; + goto end; + } + + callback(server_sock, client_sock, &echoClntAddr); + } + + end: + + if (server_sock != ESL_SOCK_INVALID) { + closesocket(server_sock); + server_sock = ESL_SOCK_INVALID; + } + + return status; + +} + +ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, esl_listen_callback_t callback, int max) { esl_socket_t server_sock = ESL_SOCK_INVALID; struct sockaddr_in addr; diff --git a/libs/esl/src/include/esl.h b/libs/esl/src/include/esl.h index 7ba705359e..4296175f3a 100644 --- a/libs/esl/src/include/esl.h +++ b/libs/esl/src/include/esl.h @@ -391,7 +391,9 @@ ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t s \param port Port to bind to \param callback Callback that will be called upon data received */ -ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, int max); + +ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback); +ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, esl_listen_callback_t callback, int max); /*! \brief Executes application with sendmsg to a specific UUID. Used for outbound socket. \param handle Handle that the msg will be sent diff --git a/libs/esl/testserver.c b/libs/esl/testserver.c index cf60313fe7..1477d8d71e 100644 --- a/libs/esl/testserver.c +++ b/libs/esl/testserver.c @@ -48,7 +48,7 @@ static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struc int main(void) { esl_global_set_default_logger(7); - esl_listen("localhost", 8084, mycallback, 100000); + esl_listen_threaded("localhost", 8084, mycallback, 100000); return 0; } From 2368f556ac556d07f1b1fe59c726a664780c0847 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 3 May 2012 14:23:09 -0500 Subject: [PATCH 282/630] FS-4180 --resolve --- .../mod_event_socket/mod_event_socket.c | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index 518583a25d..a965780f8d 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -1354,31 +1354,26 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event, if (channel && switch_channel_down(channel) && !switch_test_flag(listener, LFLAG_HANDLE_DISCO)) { switch_set_flag_locked(listener, LFLAG_HANDLE_DISCO); if (switch_test_flag(listener, LFLAG_LINGER)) { - char message[128] = ""; char disco_buf[512] = ""; + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %"SWITCH_TIME_T_FMT"\n", + switch_channel_get_name(channel), listener->linger_timeout); + + switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n" + "Controlled-Session-UUID: %s\n" + "Content-Disposition: linger\n" + "Channel-Name: %s\n" + "Linger-Time: %"SWITCH_TIME_T_FMT"\n" + "Content-Length: 0\n\n", + switch_core_session_get_uuid(listener->session), switch_channel_get_name(channel), listener->linger_timeout); + if (listener->linger_timeout != (time_t) -1) { listener->linger_timeout += switch_epoch_time_now(NULL); - switch_snprintf(message, sizeof(message), - "Channel %s has disconnected, lingering %d seconds by request from remote.\n", - switch_channel_get_name(channel), listener->linger_timeout); - } else { - switch_snprintf(message, sizeof(message), - "Channel %s has disconnected, lingering by request from remote.\n", - switch_channel_get_name(channel)); } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s", message); - - mlen = strlen(message); - - switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n" - "Controlled-Session-UUID: %s\n" - "Content-Disposition: linger\n" "Content-Length: %d\n\n", switch_core_session_get_uuid(listener->session), (int) mlen); - + len = strlen(disco_buf); switch_socket_send(listener->sock, disco_buf, &len); - len = mlen; - switch_socket_send(listener->sock, message, &len); } else { status = SWITCH_STATUS_FALSE; break; From 8664dc6d5a62460c2420bd5ff0b1096806efeba5 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 3 May 2012 16:31:21 -0500 Subject: [PATCH 283/630] some perfomance tweaks --- libs/sofia-sip/.update | 2 +- libs/sofia-sip/libsofia-sip-ua/nta/nta.c | 10 +- .../libsofia-sip-ua/nua/nua_common.c | 4 +- .../libsofia-sip-ua/nua/nua_server.c | 9 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 18 ++- src/mod/endpoints/mod_sofia/mod_sofia.h | 6 +- src/mod/endpoints/mod_sofia/sofia.c | 74 ++++++----- src/switch_core.c | 2 +- src/switch_event.c | 117 ++++++++++-------- src/switch_time.c | 4 +- 10 files changed, 141 insertions(+), 105 deletions(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index a02df03209..ade22984f2 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Thu Apr 26 10:23:33 CDT 2012 +Thu May 3 16:30:20 CDT 2012 diff --git a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c index 5dd574b88f..bebe74262f 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c +++ b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c @@ -4165,7 +4165,7 @@ nta_leg_t *nta_leg_tcreate(nta_agent_t *agent, if (i == NONE) /* Magic value, used for compatibility */ no_dialog = 1; - if (!(leg = su_home_clone(agent->sa_home, sizeof(*leg)))) + if (!(leg = su_home_clone(NULL, sizeof(*leg)))) return NULL; home = leg->leg_home; @@ -4394,7 +4394,8 @@ void nta_leg_destroy(nta_leg_t *leg) static void leg_free(nta_agent_t *sa, nta_leg_t *leg) { - su_free(sa->sa_home, leg); + //su_free(sa->sa_home, leg); + su_home_unref((su_home_t *)leg); } /** Return application context for the leg */ @@ -5327,7 +5328,7 @@ nta_incoming_t *incoming_create(nta_agent_t *agent, } irq->irq_branch = sip->sip_via->v_branch; irq->irq_reliable_tp = tport_is_reliable(tport); - irq->irq_extra_100 = 1; /* Sending extra 100 trying true by default */ + irq->irq_extra_100 = 0; /* Sending extra 100 trying false by default */ if (sip->sip_timestamp) irq->irq_timestamp = sip_timestamp_copy(home, sip->sip_timestamp); @@ -6068,7 +6069,7 @@ incoming_recv(nta_incoming_t *irq, msg_t *msg, sip_t *sip, tport_t *tport) if (irq->irq_status >= 100) { SU_DEBUG_5(("nta: re-received %s request, retransmitting %u reply\n", sip->sip_request->rq_method_name, irq->irq_status)); - incoming_retransmit_reply(irq, tport); + incoming_retransmit_reply(irq, tport); } else if (irq->irq_agent->sa_extra_100 && irq->irq_extra_100) { @@ -6910,6 +6911,7 @@ _nta_incoming_timer(nta_agent_t *sa) incoming_reset_timer(irq); if(irq->irq_extra_100) { + printf("COCK FACE\n"); SU_DEBUG_5(("nta: timer N1 fired, sending %u %s\n", SIP_100_TRYING)); nta_incoming_treply(irq, SIP_100_TRYING, TAG_END()); } diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_common.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_common.c index bc842c242d..661a18b1d2 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_common.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_common.c @@ -109,8 +109,8 @@ nua_handle_t *nh_create_handle(nua_t *nua, assert(nua->nua_home); - if ((nh = su_home_clone(nua->nua_home, sizeof(*nh)))) { - //if ((nh = su_home_new(sizeof(*nh)))) { + //if ((nh = su_home_clone(nua->nua_home, sizeof(*nh)))) { + if ((nh = su_home_new(sizeof(*nh)))) { nh->nh_valid = nua_valid_handle_cookie; nh->nh_nua = nua; nh->nh_magic = hmagic; diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/nua_server.c b/libs/sofia-sip/libsofia-sip-ua/nua/nua_server.c index 50150a3a42..f27c83fb92 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/nua_server.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/nua_server.c @@ -261,11 +261,12 @@ int nua_stack_process_request(nua_handle_t *nh, } if (sr->sr_status <= 100) { - SR_STATUS1(sr, SIP_100_TRYING); + SR_STATUS1(sr, SIP_100_TRYING); if (method == sip_method_invite || sip->sip_timestamp) { - nta_incoming_treply(irq, SIP_100_TRYING, - SIPTAG_USER_AGENT_STR(user_agent), - TAG_END()); + nta_incoming_treply(irq, SIP_100_TRYING, + SIPTAG_USER_AGENT_STR(user_agent), + TAG_END()); + } } else { diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 3780886287..ea2ba7ce4d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -91,6 +91,10 @@ static switch_status_t sofia_on_init(switch_core_session_t *session) sofia_set_flag(tech_pvt, TFLAG_RECOVERED); } + if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { + nua_respond(tech_pvt->nh, 101, "Dialing", TAG_END()); + } + if (sofia_test_flag(tech_pvt, TFLAG_OUTBOUND) || sofia_test_flag(tech_pvt, TFLAG_RECOVERING)) { const char *var; @@ -5343,7 +5347,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) switch_chat_interface_t *chat_interface; switch_api_interface_t *api_interface; switch_management_interface_t *management_interface; - uint32_t cpus = switch_core_cpu_count(); struct in_addr in; memset(&mod_sofia_globals, 0, sizeof(mod_sofia_globals)); @@ -5381,9 +5384,16 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Waiting for profiles to start\n"); switch_yield(1500000); - /* start one message thread per cpu */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Starting %u message threads.\n", cpus); - sofia_msg_thread_start(cpus); + mod_sofia_globals.cpu_count = switch_core_cpu_count(); + mod_sofia_globals.max_msg_queues = mod_sofia_globals.cpu_count + 1; + + if (mod_sofia_globals.max_msg_queues > SOFIA_MAX_MSG_QUEUE) { + mod_sofia_globals.max_msg_queues = SOFIA_MAX_MSG_QUEUE; + } + + /* start one message thread */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Starting initial message thread.\n"); + sofia_msg_thread_start(0); if (switch_event_bind_removable(modname, SWITCH_EVENT_CUSTOM, MULTICAST_EVENT, event_handler, NULL, &mod_sofia_globals.custom_node) != SWITCH_STATUS_SUCCESS) { diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 8052d94539..64dfc48c8c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -336,8 +336,8 @@ typedef enum { TFLAG_MAX } TFLAGS; -#define SOFIA_MAX_MSG_QUEUE 101 -#define SOFIA_MSG_QUEUE_SIZE 5000 +#define SOFIA_MAX_MSG_QUEUE 64 +#define SOFIA_MSG_QUEUE_SIZE 100 struct mod_sofia_globals { switch_memory_pool_t *pool; @@ -347,6 +347,8 @@ struct mod_sofia_globals { uint32_t callid; int32_t running; int32_t threads; + int cpu_count; + int max_msg_queues; switch_mutex_t *mutex; char guess_ip[80]; char hostname[512]; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 1dd6646a32..eb50fda2f2 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1236,8 +1236,25 @@ void *SWITCH_THREAD_FUNC sofia_msg_thread_run(switch_thread_t *thread, void *obj { void *pop; switch_queue_t *q = (switch_queue_t *) obj; + int my_id; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "MSG Thread Started\n"); + for (my_id = 0; my_id < mod_sofia_globals.msg_queue_len; my_id++) { + if (mod_sofia_globals.msg_queue[my_id] == q) { + break; + } + } + + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "MSG Thread %d Started\n", my_id); + +#ifdef HAVE_CPU_SET_MACROS + { + cpu_set_t set; + CPU_ZERO(&set); + CPU_SET(my_id, &set); + sched_setaffinity(0, sizeof(set), &set); + } +#endif while(switch_queue_pop(q, &pop) == SWITCH_STATUS_SUCCESS && pop) { @@ -1251,12 +1268,11 @@ void *SWITCH_THREAD_FUNC sofia_msg_thread_run(switch_thread_t *thread, void *obj return NULL; } -static int IDX = 0; - void sofia_msg_thread_start(int idx) { - if (idx >= SOFIA_MAX_MSG_QUEUE || (idx < mod_sofia_globals.msg_queue_len && mod_sofia_globals.msg_queue_thread[idx])) { + if (idx >= mod_sofia_globals.max_msg_queues || + idx >= SOFIA_MAX_MSG_QUEUE || (idx < mod_sofia_globals.msg_queue_len && mod_sofia_globals.msg_queue_thread[idx])) { return; } @@ -1274,7 +1290,7 @@ void sofia_msg_thread_start(int idx) switch_threadattr_create(&thd_attr, mod_sofia_globals.pool); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - //switch_threadattr_priority_increase(thd_attr); + switch_threadattr_priority_increase(thd_attr); switch_thread_create(&mod_sofia_globals.msg_queue_thread[i], thd_attr, sofia_msg_thread_run, @@ -1290,31 +1306,32 @@ void sofia_msg_thread_start(int idx) static void sofia_queue_message(sofia_dispatch_event_t *de) { - int idx = 0; + int idx = 0, queued = 0; - if (mod_sofia_globals.running == 0) { + if (mod_sofia_globals.running == 0 || !mod_sofia_globals.msg_queue[0]) { sofia_process_dispatch_event(&de); return; } again: - switch_mutex_lock(mod_sofia_globals.mutex); - idx = IDX; - IDX++; - if (IDX >= mod_sofia_globals.msg_queue_len) IDX = 0; - switch_mutex_unlock(mod_sofia_globals.mutex); - - sofia_msg_thread_start(idx); - - if (switch_queue_trypush(mod_sofia_globals.msg_queue[idx], de) != SWITCH_STATUS_SUCCESS) { - if (mod_sofia_globals.msg_queue_len < SOFIA_MAX_MSG_QUEUE) { - sofia_msg_thread_start(idx + 1); - goto again; - } else { - switch_queue_push(mod_sofia_globals.msg_queue[idx], de); + for (idx = 0; idx < mod_sofia_globals.msg_queue_len; idx++) { + if (switch_queue_trypush(mod_sofia_globals.msg_queue[idx], de) == SWITCH_STATUS_SUCCESS) { + queued++; + break; } } + + if (!queued) { + + if (mod_sofia_globals.msg_queue_len < mod_sofia_globals.max_msg_queues) { + sofia_msg_thread_start(mod_sofia_globals.msg_queue_len + 1); + goto again; + } + + switch_queue_push(mod_sofia_globals.msg_queue[0], de); + } + } @@ -1959,6 +1976,7 @@ void *SWITCH_THREAD_FUNC sofia_profile_thread_run(switch_thread_t *thread, void NUTAG_AUTOACK(0), NUTAG_AUTOALERT(0), NUTAG_ENABLEMESSENGER(1), + NTATAG_EXTRA_100(0), TAG_IF((profile->mflags & MFLAG_REGISTER), NUTAG_ALLOW("REGISTER")), TAG_IF((profile->mflags & MFLAG_REFER), NUTAG_ALLOW("REFER")), TAG_IF(!sofia_test_pflag(profile, PFLAG_DISABLE_100REL), NUTAG_ALLOW("PRACK")), @@ -3652,18 +3670,6 @@ switch_status_t config_sofia(int reload, char *profile_name) mod_sofia_globals.debug_sla = atoi(val); } else if (!strcasecmp(var, "auto-restart")) { mod_sofia_globals.auto_restart = switch_true(val); - } else if (!strcasecmp(var, "message-threads")) { - int num = atoi(val); - - if (num < 1 || num > SOFIA_MAX_MSG_QUEUE - 1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "message-threads must be between 1 and %d", SOFIA_MAX_MSG_QUEUE -1); - } - - if (num < 1) num = 1; - if (num > SOFIA_MAX_MSG_QUEUE - 1) num = SOFIA_MAX_MSG_QUEUE -1; - - sofia_msg_thread_start(num); - } else if (!strcasecmp(var, "reg-deny-binding-fetch-and-no-lookup")) { /* backwards compatibility */ mod_sofia_globals.reg_deny_binding_fetch_and_no_lookup = switch_true(val); /* remove when noone complains about the extra lookup */ if (switch_true(val)) { @@ -7521,7 +7527,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ nua_respond(nh, 400, "Missing Contact Header", TAG_END()); goto fail; } - + sofia_glue_get_addr(de->data->e_msg, network_ip, sizeof(network_ip), &network_port); if (sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION)) { diff --git a/src/switch_core.c b/src/switch_core.c index adb9338f68..8b93c84301 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1684,7 +1684,7 @@ static void switch_load_core_config(const char *file) } else if (end_of(val) == 'm') { tmp *= (1024 * 1024); } - + if (tmp >= 32000 && tmp < 10500000) { runtime.sql_buffer_len = tmp; } else { diff --git a/src/switch_event.c b/src/switch_event.c index 6595f61191..2203313191 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -63,7 +63,7 @@ struct switch_event_subclass { int bind; }; -#define MAX_DISPATCH_VAL 20 +#define MAX_DISPATCH_VAL 64 static unsigned int MAX_DISPATCH = MAX_DISPATCH_VAL; static unsigned int SOFT_MAX_DISPATCH = 0; static char guess_ip_v4[80] = ""; @@ -254,6 +254,16 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th EVENT_DISPATCH_QUEUE_RUNNING[my_id] = 1; switch_mutex_unlock(EVENT_QUEUE_MUTEX); +#ifdef HAVE_CPU_SET_MACROS + { + cpu_set_t set; + CPU_ZERO(&set); + CPU_SET(my_id, &set); + sched_setaffinity(0, sizeof(set), &set); + } +#endif + + for (;;) { void *pop = NULL; switch_event_t *event = NULL; @@ -291,7 +301,6 @@ static void *SWITCH_THREAD_FUNC switch_event_thread(switch_thread_t *thread, voi switch_queue_t *queue = (switch_queue_t *) obj; uint32_t index = 0; int my_id = 0; - int auto_pause = 0; switch_mutex_lock(EVENT_QUEUE_MUTEX); THREAD_COUNT++; @@ -306,15 +315,6 @@ static void *SWITCH_THREAD_FUNC switch_event_thread(switch_thread_t *thread, voi for (;;) { void *pop = NULL; switch_event_t *event = NULL; - int loops = 0; - - if (auto_pause) { - if (!--auto_pause) { - switch_core_session_ctl(SCSC_PAUSE_INBOUND, &auto_pause); - } else { - switch_cond_next(); - } - } if (switch_queue_pop(queue, &pop) != SWITCH_STATUS_SUCCESS) { break; @@ -332,19 +332,6 @@ static void *SWITCH_THREAD_FUNC switch_event_thread(switch_thread_t *thread, voi while (event) { - - if (++loops > 2) { - if (auto_pause) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Event system *still* overloading.\n"); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, - "Event system overloading. Taking a 10 second break\n"); - auto_pause = 10; - switch_core_session_ctl(SCSC_PAUSE_INBOUND, &auto_pause); - } - switch_yield(1000000); - } - for (index = 0; index < SOFT_MAX_DISPATCH; index++) { if (switch_queue_trypush(EVENT_DISPATCH_QUEUE[index], event) == SWITCH_STATUS_SUCCESS) { event = NULL; @@ -358,8 +345,8 @@ static void *SWITCH_THREAD_FUNC switch_event_thread(switch_thread_t *thread, voi launch_dispatch_threads(SOFT_MAX_DISPATCH + 1, DISPATCH_QUEUE_LEN, RUNTIME_POOL); switch_mutex_unlock(EVENT_QUEUE_MUTEX); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Out of event dispatch threads! Slowing things down.\n"); - switch_yield(1000000); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Out of event dispatch threads! Resorting to a blocking push.... Look for laggy event consumers or event_socket connections!\n"); + switch_queue_push(EVENT_DISPATCH_QUEUE[0], event); } } } @@ -484,6 +471,15 @@ SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const cha SWITCH_DECLARE(void) switch_core_memory_reclaim_events(void) { + int index; + + for (index = 0; index < SOFT_MAX_DISPATCH; index++) { + if (EVENT_DISPATCH_QUEUE[index]) { + printf("%d size: %u\n", index, switch_queue_size(EVENT_DISPATCH_QUEUE[index])); + } + } + + #ifdef SWITCH_EVENT_RECYCLE void *pop; @@ -520,9 +516,11 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) switch_mutex_unlock(EVENT_QUEUE_MUTEX); for (x = 0; x < 3; x++) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping event queue %d\n", x); - switch_queue_trypush(EVENT_QUEUE[x], NULL); - switch_queue_interrupt_all(EVENT_QUEUE[x]); + if (EVENT_QUEUE[x]) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping event queue %d\n", x); + switch_queue_trypush(EVENT_QUEUE[x], NULL); + switch_queue_interrupt_all(EVENT_QUEUE[x]); + } } for (x = 0; x < SOFT_MAX_DISPATCH; x++) { @@ -558,12 +556,15 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) switch_event_t *event = NULL; switch_status_t st; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping queue thread %d\n", x); - switch_thread_join(&st, EVENT_QUEUE_THREADS[x]); + if (EVENT_QUEUE_THREADS[x]) { - while (switch_queue_trypop(EVENT_QUEUE[x], &pop) == SWITCH_STATUS_SUCCESS && pop) { - event = (switch_event_t *) pop; - switch_event_destroy(&event); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping queue thread %d\n", x); + switch_thread_join(&st, EVENT_QUEUE_THREADS[x]); + + while (switch_queue_trypop(EVENT_QUEUE[x], &pop) == SWITCH_STATUS_SUCCESS && pop) { + event = (switch_event_t *) pop; + switch_event_destroy(&event); + } } } @@ -608,7 +609,11 @@ static void launch_dispatch_threads(uint32_t max, int len, switch_memory_pool_t switch_threadattr_priority_increase(thd_attr); switch_thread_create(&EVENT_DISPATCH_QUEUE_THREADS[index], thd_attr, switch_event_dispatch_thread, EVENT_DISPATCH_QUEUE[index], pool); while(--sanity && !EVENT_DISPATCH_QUEUE_RUNNING[index]) switch_yield(10000); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Create event dispatch thread %d\n", index); + if (index == 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Create event dispatch thread %d\n", index); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Create additional event dispatch thread %d\n", index); + } launched++; break; } @@ -618,7 +623,7 @@ static void launch_dispatch_threads(uint32_t max, int len, switch_memory_pool_t SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) { - switch_threadattr_t *thd_attr;; + //switch_threadattr_t *thd_attr; /* This statement doesn't do anything commenting it out for now. @@ -626,6 +631,9 @@ SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) switch_assert(switch_arraylen(EVENT_NAMES) == SWITCH_EVENT_ALL + 1); */ + /* don't need any more dispatch threads than we have CPU's*/ + MAX_DISPATCH = switch_core_cpu_count(); + switch_assert(pool != NULL); THRUNTIME_POOL = RUNTIME_POOL = pool; @@ -640,26 +648,26 @@ SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) SYSTEM_RUNNING = -1; switch_mutex_unlock(EVENT_QUEUE_MUTEX); - switch_threadattr_create(&thd_attr, pool); + //switch_threadattr_create(&thd_attr, pool); switch_find_local_ip(guess_ip_v4, sizeof(guess_ip_v4), NULL, AF_INET); switch_find_local_ip(guess_ip_v6, sizeof(guess_ip_v6), NULL, AF_INET6); - switch_queue_create(&EVENT_QUEUE[0], POOL_COUNT_MAX + 10, THRUNTIME_POOL); - switch_queue_create(&EVENT_QUEUE[1], POOL_COUNT_MAX + 10, THRUNTIME_POOL); - switch_queue_create(&EVENT_QUEUE[2], POOL_COUNT_MAX + 10, THRUNTIME_POOL); + //switch_queue_create(&EVENT_QUEUE[0], POOL_COUNT_MAX + 10, THRUNTIME_POOL); + //switch_queue_create(&EVENT_QUEUE[1], POOL_COUNT_MAX + 10, THRUNTIME_POOL); + //switch_queue_create(&EVENT_QUEUE[2], POOL_COUNT_MAX + 10, THRUNTIME_POOL); #ifdef SWITCH_EVENT_RECYCLE switch_queue_create(&EVENT_RECYCLE_QUEUE, 250000, THRUNTIME_POOL); switch_queue_create(&EVENT_HEADER_RECYCLE_QUEUE, 250000, THRUNTIME_POOL); #endif - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_threadattr_priority_increase(thd_attr); + //switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + //switch_threadattr_priority_increase(thd_attr); launch_dispatch_threads(1, DISPATCH_QUEUE_LEN, RUNTIME_POOL); - switch_thread_create(&EVENT_QUEUE_THREADS[0], thd_attr, switch_event_thread, EVENT_QUEUE[0], RUNTIME_POOL); - switch_thread_create(&EVENT_QUEUE_THREADS[1], thd_attr, switch_event_thread, EVENT_QUEUE[1], RUNTIME_POOL); - switch_thread_create(&EVENT_QUEUE_THREADS[2], thd_attr, switch_event_thread, EVENT_QUEUE[2], RUNTIME_POOL); + //switch_thread_create(&EVENT_QUEUE_THREADS[0], thd_attr, switch_event_thread, EVENT_QUEUE[0], RUNTIME_POOL); + //switch_thread_create(&EVENT_QUEUE_THREADS[1], thd_attr, switch_event_thread, EVENT_QUEUE[1], RUNTIME_POOL); + //switch_thread_create(&EVENT_QUEUE_THREADS[2], thd_attr, switch_event_thread, EVENT_QUEUE[2], RUNTIME_POOL); while (!THREAD_COUNT) { switch_cond_next(); @@ -1775,8 +1783,6 @@ SWITCH_DECLARE(void) switch_event_prep_for_delivery_detailed(const char *file, c SWITCH_DECLARE(switch_status_t) switch_event_fire_detailed(const char *file, const char *func, int line, switch_event_t **event, void *user_data) { - int index; - switch_assert(BLOCK != NULL); switch_assert(RUNTIME_POOL != NULL); switch_assert(EVENT_QUEUE_MUTEX != NULL); @@ -1792,13 +1798,22 @@ SWITCH_DECLARE(switch_status_t) switch_event_fire_detailed(const char *file, con (*event)->event_user_data = user_data; } + if (!EVENT_QUEUE_THREADS[(*event)->priority] && (*event)->priority < 3) { + switch_threadattr_t *thd_attr; + + switch_queue_create(&EVENT_QUEUE[(*event)->priority], POOL_COUNT_MAX + 10, THRUNTIME_POOL); + switch_threadattr_create(&thd_attr, THRUNTIME_POOL); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_threadattr_priority_increase(thd_attr); + switch_thread_create(&EVENT_QUEUE_THREADS[(*event)->priority], thd_attr, switch_event_thread, EVENT_QUEUE[(*event)->priority], RUNTIME_POOL); + } + for (;;) { - for (index = (*event)->priority; index < 3; index++) { - if (switch_queue_trypush(EVENT_QUEUE[index], *event) == SWITCH_STATUS_SUCCESS) { - goto end; - } + if (switch_queue_trypush(EVENT_QUEUE[(*event)->priority], *event) == SWITCH_STATUS_SUCCESS) { + goto end; } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Event queue is full!\n"); switch_yield(100000); } diff --git a/src/switch_time.c b/src/switch_time.c index 9c9ce509ec..17a0a50675 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -799,8 +799,8 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) if (runtime.timer_affinity > -1) { cpu_set_t set; CPU_ZERO(&set); - CPU_SET(0, &set); - sched_setaffinity(runtime.timer_affinity, sizeof(set), &set); + CPU_SET(runtime.timer_affinity, &set); + sched_setaffinity(0, sizeof(set), &set); } #endif From 0eca328f48aaba7e876faf421d46d4441473bc8a Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 3 May 2012 18:55:06 -0500 Subject: [PATCH 284/630] white space cleanup --- libs/sofia-sip/libsofia-sip-ua/nta/nta.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c index bebe74262f..e690b424e7 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c +++ b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c @@ -6911,7 +6911,6 @@ _nta_incoming_timer(nta_agent_t *sa) incoming_reset_timer(irq); if(irq->irq_extra_100) { - printf("COCK FACE\n"); SU_DEBUG_5(("nta: timer N1 fired, sending %u %s\n", SIP_100_TRYING)); nta_incoming_treply(irq, SIP_100_TRYING, TAG_END()); } From f3f954bdb43cc3d330e0cbdf3d43734fb8241286 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 02:30:58 +0000 Subject: [PATCH 285/630] whitespace --- src/mod/asr_tts/mod_pocketsphinx/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/asr_tts/mod_pocketsphinx/Makefile b/src/mod/asr_tts/mod_pocketsphinx/Makefile index ca72c6b0a4..c7269bd36d 100644 --- a/src/mod/asr_tts/mod_pocketsphinx/Makefile +++ b/src/mod/asr_tts/mod_pocketsphinx/Makefile @@ -12,7 +12,7 @@ POCKETSPHINX_LA=$(POCKETSPHINX_BUILDDIR)/src/libpocketsphinx/libpocketsphinx.la SPHINXMODEL=communicator_semi_6000_20080321 LOCAL_CFLAGS=-I$(SPHINXBASE_DIR)/include -I$(POCKETSPHINX_DIR)/include -LOCAL_LIBADD=$(POCKETSPHINX_LA) $(SPHINXBASE_LA) $(SPHINXBASE_LA2) +LOCAL_LIBADD=$(POCKETSPHINX_LA) $(SPHINXBASE_LA) $(SPHINXBASE_LA2) BASE=../../../.. include $(BASE)/build/modmake.rules @@ -55,3 +55,4 @@ dictionary: @cp -f $(POCKETSPHINX_DIR)/model/lm/en_US/cmu07a.dic $(DESTDIR)$(grammardir)/default.dic local_install: $(DESTDIR)$(grammardir)/model $(DESTDIR)$(grammardir)/model/communicator dictionary + From 6a9572fca95bae923fc8e233d9e83117578280d4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 02:36:29 +0000 Subject: [PATCH 286/630] fix mod_pocketsphinx build under make -j --- src/mod/asr_tts/mod_pocketsphinx/Makefile | 26 +++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/mod/asr_tts/mod_pocketsphinx/Makefile b/src/mod/asr_tts/mod_pocketsphinx/Makefile index c7269bd36d..9b2c6b28e4 100644 --- a/src/mod/asr_tts/mod_pocketsphinx/Makefile +++ b/src/mod/asr_tts/mod_pocketsphinx/Makefile @@ -16,31 +16,39 @@ LOCAL_LIBADD=$(POCKETSPHINX_LA) $(SPHINXBASE_LA) $(SPHINXBASE_LA2) BASE=../../../.. include $(BASE)/build/modmake.rules +mod_pocketsphinx.lo: $(POCKETSPHINX_LA) $(SPHINXBASE_LA) $(SPHINXBASE_LA2) + $(SPHINXBASE_DIR): $(GETLIB) $(SPHINXBASE).tar.gz -$(SPHINXBASE_BUILDDIR)/buildstamp: $(SPHINXBASE_DIR) +$(SPHINXBASE_BUILDDIR)/Makefile: $(SPHINXBASE_DIR) mkdir -p $(SPHINXBASE_BUILDDIR) - test -f $(SPHINXBASE_BUILDDIR)/Makefile || (cd $(SPHINXBASE_BUILDDIR) && $(DEFAULT_VARS) $(SPHINXBASE_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(SPHINXBASE_DIR) --without-python CFLAGS=) - test -f $(SPHINXBASE_BUILDDIR)/buildstamp || (touch $(SPHINXBASE_BUILDDIR)/buildstamp) + (cd $(SPHINXBASE_BUILDDIR) && $(DEFAULT_VARS) $(SPHINXBASE_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(SPHINXBASE_DIR) --without-python CFLAGS=) + $(TOUCH_TARGET) + +$(SPHINXBASE_BUILDDIR)/buildstamp: $(SPHINXBASE_BUILDDIR)/Makefile + (cd $(SPHINXBASE_BUILDDIR) && $(MAKE)) + touch $@ $(SPHINXBASE_LA): $(SPHINXBASE_BUILDDIR)/buildstamp - cd $(SPHINXBASE_BUILDDIR) && $(MAKE) + $(TOUCH_TARGET) + +$(SPHINXBASE_LA2): $(SPHINXBASE_BUILDDIR)/buildstamp $(TOUCH_TARGET) $(POCKETSPHINX_DIR): $(GETLIB) $(POCKETSPHINX).tar.gz -$(POCKETSPHINX_BUILDDIR)/Makefile: $(POCKETSPHINX_DIR) $(SPHINXBASE_LA) +$(POCKETSPHINX_BUILDDIR)/Makefile: $(POCKETSPHINX_DIR) $(SPHINXBASE_LA) $(SPHINXBASE_LA2) mkdir -p $(POCKETSPHINX_BUILDDIR) - cd $(POCKETSPHINX_BUILDDIR) && $(DEFAULT_VARS) $(POCKETSPHINX_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(POCKETSPHINX_DIR) --without-python --with-sphinxbase=$(SPHINXBASE_DIR) --with-sphinxbase-build=$(SPHINXBASE_BUILDDIR) CFLAGS= + (cd $(POCKETSPHINX_BUILDDIR) && $(DEFAULT_VARS) $(POCKETSPHINX_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(POCKETSPHINX_DIR) --without-python --with-sphinxbase=$(SPHINXBASE_DIR) --with-sphinxbase-build=$(SPHINXBASE_BUILDDIR) CFLAGS=) $(TOUCH_TARGET) $(POCKETSPHINX_BUILDDIR)/buildstamp: $(POCKETSPHINX_BUILDDIR)/Makefile - test -f $(POCKETSPHINX_BUILDDIR)/buildstamp || touch $(POCKETSPHINX_BUILDDIR)/buildstamp + (cd $(POCKETSPHINX_BUILDDIR) && $(MAKE)) + touch $@ -$(POCKETSPHINX_LA): $(POCKETSPHINX_BUILDDIR)/Makefile - cd $(POCKETSPHINX_BUILDDIR) && $(MAKE) +$(POCKETSPHINX_LA): $(POCKETSPHINX_BUILDDIR)/buildstamp $(TOUCH_TARGET) $(DESTDIR)$(grammardir)/model: From d174c2ee3c35e77546c2f8995dcabaf8fda14bf4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 02:39:22 +0000 Subject: [PATCH 287/630] gitignore the noreg file This file is used to squelch the advertisement for ClueCon in configure. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 55e1e9856b..b8bd5c7edf 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ core.* /Makefile.in /modules.conf /NEWS +/noreg /Path /quiet_libtool /README From 1b399d3cf2b01179322abd7a614cd12786e6410a Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Fri, 4 May 2012 08:44:38 -0500 Subject: [PATCH 288/630] FS-4184 --resolve --- src/switch_event.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_event.c b/src/switch_event.c index 2203313191..e63ae74b3f 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -471,7 +471,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const cha SWITCH_DECLARE(void) switch_core_memory_reclaim_events(void) { - int index; + unsigned int index; for (index = 0; index < SOFT_MAX_DISPATCH; index++) { if (EVENT_DISPATCH_QUEUE[index]) { From 1ad0d0af362869893cfd81c579d68474f3780a2d Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 4 May 2012 14:46:14 +0200 Subject: [PATCH 289/630] gsmopen: FS-4155, mod_sms hookup --- .../endpoints/mod_gsmopen/gsmopen_protocol.cpp | 11 +++++------ src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 53975b2cc1..2294ee4aee 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -571,7 +571,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us timeout_in_msec = (timeout_sec * 1000) + (timeout_usec ? (timeout_usec / 1000) : 0); if (timeout_in_msec != 100) - ERRORA("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout_in_msec); + DEBUGA_GSMOPEN("TIMEOUT=%d\n", GSMOPEN_P_LOG, timeout_in_msec); if (!running || !tech_pvt->running) { return -1; @@ -828,11 +828,10 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us tech_pvt->line_array.result[i], tech_pvt->callid_name, tech_pvt->callid_number); } - if ((strncmp(tech_pvt->line_array.result[i], "+CMS ERROR:", 11) == 0)) { - ERRORA("Received: \"%s\", what was this error about?\n", GSMOPEN_P_LOG); - } if ((strcmp(tech_pvt->line_array.result[i], "+CMS ERROR: 500") == 0)) { - ERRORA("Received: \"%s\", maybe this account ran OUT OF CREDIT?\n", GSMOPEN_P_LOG); + ERRORA("Received: \"%s\", generic error, maybe this account ran OUT OF CREDIT?\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); + } else if ((strncmp(tech_pvt->line_array.result[i], "+CMS ERROR:", 11) == 0)) { + ERRORA("Received: \"%s\", what was this error about?\n", GSMOPEN_P_LOG, tech_pvt->line_array.result[i]); } if ((strcmp(tech_pvt->line_array.result[i], "BUSY") == 0)) { tech_pvt->phone_callflow = CALLFLOW_CALL_LINEBUSY; @@ -2113,7 +2112,7 @@ int gsmopen_serial_write_AT_ack_nocr_longtime(private_t *tech_pvt, const char *d return -1; } - at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 5, NULL, 1); // 5.5 sec timeout + at_result = gsmopen_serial_read_AT(tech_pvt, 1, 500000, 20, NULL, 1); // 20.5 sec timeout UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(tech_pvt->controldev_lock); diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 917f3fccc9..51564e0f5f 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1795,6 +1795,9 @@ static switch_status_t chat_send(switch_event_t *message_event) if (hint == NULL || !strlen(hint)) { //FIXME FIXME FIXME hint = from; } + if (subject == NULL || !strlen(subject)) { //FIXME FIXME FIXME + subject = "SIMPLE MESSAGE"; + } if (to && (user = strdup(to))) { if ((host = strchr(user, '@'))) { *host++ = '\0'; @@ -2981,7 +2984,19 @@ int sms_incoming(private_t *tech_pvt) //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); +/* mod_sms begin */ + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->sms_sender); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); +/* mod_sms end */ switch_event_add_body(event, "%s\n", tech_pvt->sms_body); + //switch_core_chat_send(GSMOPEN_CHAT_PROTO, event); /* mod_sms */ + switch_core_chat_send("GLOBAL", event); /* mod_sms */ if (session) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { From fd9486f0ed21e50efebc1b3ebea5d1f0c9da56af Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 07:42:49 -0500 Subject: [PATCH 290/630] remove --- src/switch_event.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/switch_event.c b/src/switch_event.c index e63ae74b3f..c4d118e3d2 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -471,15 +471,6 @@ SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const cha SWITCH_DECLARE(void) switch_core_memory_reclaim_events(void) { - unsigned int index; - - for (index = 0; index < SOFT_MAX_DISPATCH; index++) { - if (EVENT_DISPATCH_QUEUE[index]) { - printf("%d size: %u\n", index, switch_queue_size(EVENT_DISPATCH_QUEUE[index])); - } - } - - #ifdef SWITCH_EVENT_RECYCLE void *pop; From 5190bd08491ff9c1e9b62230ddc9b9bbb54cb1e9 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 08:25:48 -0500 Subject: [PATCH 291/630] FS-4186 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 +- src/switch_core.c | 5 +++++ src/switch_event.c | 7 ++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 64dfc48c8c..5a51f68a2d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -337,7 +337,7 @@ typedef enum { } TFLAGS; #define SOFIA_MAX_MSG_QUEUE 64 -#define SOFIA_MSG_QUEUE_SIZE 100 +#define SOFIA_MSG_QUEUE_SIZE 250 struct mod_sofia_globals { switch_memory_pool_t *pool; diff --git a/src/switch_core.c b/src/switch_core.c index 8b93c84301..f957a7ae5e 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -744,6 +744,8 @@ SWITCH_DECLARE(int32_t) set_auto_priority(void) runtime.cpu_count = sysinfo.dwNumberOfProcessors; #endif + if (!runtime.cpu_count) runtime.cpu_count = 1; + /* If we have more than 1 cpu, we should use realtime priority so we can have priority threads */ if (runtime.cpu_count > 1) { return set_realtime_priority(); @@ -1421,6 +1423,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc } #endif + if (!runtime.cpu_count) runtime.cpu_count = 1; + + /* INIT APR and Create the pool context */ if (apr_initialize() != SWITCH_STATUS_SUCCESS) { *err = "FATAL ERROR! Could not initialize APR\n"; diff --git a/src/switch_event.c b/src/switch_event.c index c4d118e3d2..bce57b79ee 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -35,7 +35,7 @@ #include #include //#define SWITCH_EVENT_RECYCLE -#define DISPATCH_QUEUE_LEN 10000 +#define DISPATCH_QUEUE_LEN 1000 //#define DEBUG_DISPATCH_QUEUES /*! \brief A node to store binded events */ @@ -345,8 +345,9 @@ static void *SWITCH_THREAD_FUNC switch_event_thread(switch_thread_t *thread, voi launch_dispatch_threads(SOFT_MAX_DISPATCH + 1, DISPATCH_QUEUE_LEN, RUNTIME_POOL); switch_mutex_unlock(EVENT_QUEUE_MUTEX); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Out of event dispatch threads! Resorting to a blocking push.... Look for laggy event consumers or event_socket connections!\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Event Thread %d is blocking\n", my_id); switch_queue_push(EVENT_DISPATCH_QUEUE[0], event); + event = NULL; } } } @@ -623,7 +624,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) */ /* don't need any more dispatch threads than we have CPU's*/ - MAX_DISPATCH = switch_core_cpu_count(); + MAX_DISPATCH = switch_core_cpu_count() + 1; switch_assert(pool != NULL); From 29f23c1c677f7d5110d7775d9a4e2337a704e860 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 08:32:32 -0500 Subject: [PATCH 292/630] FS-4185 --resolve --- src/switch_ivr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index b9ef71f2bf..432bb9edc6 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -2946,6 +2946,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *ses } return SWITCH_STATUS_SUCCESS; } else if (!strcasecmp(cmd, "stop")) { + switch_set_flag(fhp, SWITCH_FILE_DONE); return SWITCH_STATUS_FALSE; } else if (!strcasecmp(cmd, "truncate")) { switch_core_file_truncate(fhp, 0); From c64813f4fde4f5b99d8ee7cd22a3b1e17206babe Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 4 May 2012 16:31:17 +0200 Subject: [PATCH 293/630] skypopen: mod_sms hookup, is flawed, because it needs to CHAT CREATE, then read back the DIALOG. It will have to be spun as a separate thread, but is here as a proof of concept. I disable it right now --- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 159840f5e4..4e6fec15f7 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -1957,6 +1957,7 @@ static switch_status_t chat_send(switch_event_t *message_event) while (!found) { for (i = 0; i < MAX_CHATS; i++) { + //DEBUGA_SKYPE("tech_pvt->chats[i].dialog_partner='%s' to='%s'\n", SKYPOPEN_P_LOG, tech_pvt->chats[i].dialog_partner, to); if (!strcmp(tech_pvt->chats[i].dialog_partner, to)) { snprintf(skype_msg, sizeof(skype_msg), "CHATMESSAGE %s %s", tech_pvt->chats[i].chatname, body); skypopen_signaling_write(tech_pvt, skype_msg); @@ -1969,7 +1970,7 @@ static switch_status_t chat_send(switch_event_t *message_event) } tried++; if (tried > 20) { - ERRORA("No chat with dialog_partner='%s' was found\n", SKYPOPEN_P_LOG, to); + ERRORA("No chat with dialog_partner='%s' was found. (If you're using mod_sms this is a bug of mod_skypopen when using mod_sms, from next incoming message it will probably work...)\n", SKYPOPEN_P_LOG, to); break; } switch_sleep(50000); @@ -2966,12 +2967,24 @@ int incoming_chatmessage(private_t *tech_pvt, int which) if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", SKYPE_CHAT_PROTO); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->chatmessages[which].from_handle); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); +/* mod_sms begin */ + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->skype_user); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", SKYPE_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->chatmessages[which].from_handle); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); +/* mod_sms end */ + switch_event_add_body(event, "%s", tech_pvt->chatmessages[which].body); + switch_core_chat_send("GLOBAL", event); /* mod_sms */ if (session) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { From 67240d29056bea783488099a877250b0dea5e338 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 4 May 2012 16:32:38 +0200 Subject: [PATCH 294/630] skypopen: DISABLED (for the time being) mod_sms hookup needs to CHAT CREATE, then read back the DIALOG. It will have to be spun as a separate thread, but is here as a proof of concept. I disable it right now --- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 4e6fec15f7..76ac991449 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -2984,7 +2984,7 @@ int incoming_chatmessage(private_t *tech_pvt, int which) /* mod_sms end */ switch_event_add_body(event, "%s", tech_pvt->chatmessages[which].body); - switch_core_chat_send("GLOBAL", event); /* mod_sms */ + //switch_core_chat_send("GLOBAL", event); /* mod_sms */ if (session) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { From e8098c060d62240a9e266b8de88e5e060432fe9d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 08:47:18 -0500 Subject: [PATCH 295/630] FS-4184 --resolve --- src/mod/event_handlers/mod_event_socket/mod_event_socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index a965780f8d..b56c094872 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -1356,14 +1356,14 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event, if (switch_test_flag(listener, LFLAG_LINGER)) { char disco_buf[512] = ""; - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %"SWITCH_TIME_T_FMT"\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %"TIME_T_FMT"\n", switch_channel_get_name(channel), listener->linger_timeout); switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n" "Controlled-Session-UUID: %s\n" "Content-Disposition: linger\n" "Channel-Name: %s\n" - "Linger-Time: %"SWITCH_TIME_T_FMT"\n" + "Linger-Time: %"TIME_T_FMT"\n" "Content-Length: 0\n\n", switch_core_session_get_uuid(listener->session), switch_channel_get_name(channel), listener->linger_timeout); From ca39f15aa92dcf04eefb63f8fd130bfa122f3d6a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 11:41:54 -0500 Subject: [PATCH 296/630] let the var take precedence over the profile setting --- src/mod/endpoints/mod_sofia/sofia_glue.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index e2607a5e5a..6610895927 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -3131,6 +3131,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f uint32_t rtp_hold_timeout_sec = tech_pvt->profile->rtp_hold_timeout_sec; char *timer_name = NULL; const char *var; + uint32_t delay = tech_pvt->profile->rtp_digit_delay; switch_assert(tech_pvt != NULL); @@ -3528,15 +3529,14 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f tech_pvt->cng_pt = 0; } - if (tech_pvt->profile->rtp_digit_delay || ((val = switch_channel_get_variable(tech_pvt->channel, "rtp_digit_delay")))) { - uint32_t delay = tech_pvt->profile->rtp_digit_delay; + if (((val = switch_channel_get_variable(tech_pvt->channel, "rtp_digit_delay")))) { + int delayi = atoi(val); + if (delayi < 0) delayi = 0; + delay = (uint32_t) delay; + } - if (!delay) { - int delayi = atoi(val); - if (delayi < 0) delayi = 0; - delay = (uint32_t) delay; - } + if (delay) { switch_rtp_set_interdigit_delay(tech_pvt->rtp_session, delay); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "%s Set rtp dtmf delay to %u\n", switch_channel_get_name(tech_pvt->channel), delay); From 6ac20ed54d546323498a845e87bb8a79de360b82 Mon Sep 17 00:00:00 2001 From: William King Date: Fri, 4 May 2012 10:07:08 -0700 Subject: [PATCH 297/630] If the notify event contains call-info headers, then process the call-info linked list into comma separated values and add them to a header on the event. --- src/mod/endpoints/mod_sofia/sofia.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index eb50fda2f2..7ae868ef62 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -476,6 +476,26 @@ void sofia_handle_sip_i_notify(switch_core_session_t *session, int status, switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "profile_name", sofia_private->gateway->profile->name); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "profile_uri", sofia_private->gateway->profile->url); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "gateway_name", sofia_private->gateway->name); + if ( sip->sip_call_info != NULL ) { + sip_call_info_t *call_info = sip->sip_call_info; + int cur_len = 0; + char *tmp = NULL; + char *hold = strdup(sip_header_as_string(nua_handle_home(nh), (void *) call_info)); + cur_len = strlen(hold); + + while ( call_info->ci_next != NULL) { + call_info = call_info->ci_next; + tmp = strdup(sip_header_as_string(nua_handle_home(nh), (void *) call_info)); + cur_len = cur_len + strlen(tmp) +2; + hold = realloc(hold, cur_len); + switch_assert(hold); + strcat(hold,","); + strcat(hold, tmp); + free(tmp); + } + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Call-Info", hold); + free(hold); + } switch_event_fire(&s_event); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "dispatched freeswitch event for message-summary NOTIFY\n"); } else { From fb04149a8238edd291eda25e837f4bb2d0171ae9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 19:01:24 +0000 Subject: [PATCH 298/630] bootstrap.sh: remove broken and useless check_awk ...and replace with a TODO explaining why the function stub is there. --- bootstrap.sh | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 93c96f4088..77640722f6 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -209,24 +209,10 @@ check_make() { check_awk() { - # - # Check to make sure we have GNU Make installed - # - - awk=`which awk` - if [ -x "$awk" ]; then - awk_version=`$awk --version | head -n 1 |grep GNU` - if [ $? -ne 0 ]; then - awk=`which gawk` - if [ -x "$awk" ]; then - awk_version=`$awk --version | head -n 1 |grep GNU` - if [ $? -ne 0 ]; then - echo "GNU awk does not exist or is not executable" - exit 1; - fi - fi - fi - fi + # TODO: Building with mawk on at least Debian squeeze is know to + # work, but mawk is believed to fail on some systems. If we can + # replicate this, we need a particular behavior that we can test + # here to verify whether we have an acceptable awk. } From adfe4626918ff5a7210261715d41e6a24e779cbd Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 19:10:51 +0000 Subject: [PATCH 299/630] bootstrap.sh: fix syntax error ...it's always the seemingly trivial changes. --- bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bootstrap.sh b/bootstrap.sh index 77640722f6..0e0ac56fc4 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -213,6 +213,7 @@ check_awk() { # work, but mawk is believed to fail on some systems. If we can # replicate this, we need a particular behavior that we can test # here to verify whether we have an acceptable awk. + : } From 56e4a5fc5d66a8f1485c82b93370e8074ee7a976 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 20:31:48 +0000 Subject: [PATCH 300/630] mod_mongo: let mongo build with ccache --- src/mod/applications/mod_mongo/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_mongo/Makefile b/src/mod/applications/mod_mongo/Makefile index 26687b5ac6..7c79fb291b 100644 --- a/src/mod/applications/mod_mongo/Makefile +++ b/src/mod/applications/mod_mongo/Makefile @@ -24,6 +24,9 @@ $(MONGO_CXX_DRIVER_SRC): $(LIBMONGOCLIENT_A): $(MONGO_CXX_DRIVER_SRC) - cd $(MONGO_CXX_DRIVER_SRC) && scons + (cd $(MONGO_CXX_DRIVER_SRC) && \ + sed -i SConstruct -e "s/Environment()/Environment(ENV = {'PATH' : os.environ['PATH'],'CFLAGS' : os.environ['CFLAGS']})/" && \ + echo "env.Append(PATH=os.environ['PATH'])" >> SConstruct && \ + scons) $(TOUCH_TARGET) From e278c0facd4b3f12363aeb3d1b2ee152b84fcb4d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 4 May 2012 22:15:47 +0000 Subject: [PATCH 301/630] mod_mongo: pass CXXFLAGS to mongo build --- src/mod/applications/mod_mongo/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_mongo/Makefile b/src/mod/applications/mod_mongo/Makefile index 7c79fb291b..cdab0466be 100644 --- a/src/mod/applications/mod_mongo/Makefile +++ b/src/mod/applications/mod_mongo/Makefile @@ -25,7 +25,7 @@ $(MONGO_CXX_DRIVER_SRC): $(LIBMONGOCLIENT_A): $(MONGO_CXX_DRIVER_SRC) (cd $(MONGO_CXX_DRIVER_SRC) && \ - sed -i SConstruct -e "s/Environment()/Environment(ENV = {'PATH' : os.environ['PATH'],'CFLAGS' : os.environ['CFLAGS']})/" && \ + sed -i SConstruct -e "s/Environment()/Environment(ENV = {'PATH' : os.environ['PATH'],'CFLAGS' : os.environ['CFLAGS'],'CXXFLAGS' : os.environ['CXXFLAGS']})/" && \ echo "env.Append(PATH=os.environ['PATH'])" >> SConstruct && \ scons) $(TOUCH_TARGET) From 5c66ab479329155180cbf4e35e5be44bfb10870d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 14:07:12 -0500 Subject: [PATCH 302/630] fix xml object leak in conference cdrs --- src/mod/applications/mod_conference/mod_conference.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index a46437aab3..3112a781f4 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -660,9 +660,10 @@ static void conference_cdr_render(conference_obj_t *conference) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", path, ebuf); } - + switch_safe_free(path); switch_safe_free(xml_text); + switch_xml_free(cdr); } From 64d4d9ea574eb0e11a7dd1d1c0088293e97c31ff Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 18:59:25 -0500 Subject: [PATCH 303/630] add pickup endpoint and app to dptools add pickup/keyname to forked dial, then route a call to call app pickup(keyname) to have your channel return from originate. sub to pickup+keyname or presence map the pickup proto to use on blf --- src/include/switch_types.h | 1 + .../applications/mod_dptools/mod_dptools.c | 504 +++++++++++++++++- src/mod/endpoints/mod_sofia/sofia_presence.c | 26 + src/switch_ivr_originate.c | 19 + 4 files changed, 549 insertions(+), 1 deletion(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 3c1cb1cf7c..47336a800a 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -1211,6 +1211,7 @@ typedef enum { CF_SERVICE_VIDEO, CF_ZRTP_HASH, CF_ZRTP_PASS, + CF_CHANNEL_SWAP, /* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */ /* IF YOU ADD NEW ONES CHECK IF THEY SHOULD PERSIST OR ZERO THEM IN switch_core_session.c switch_core_session_request_xml() */ CF_FLAG_MAX diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 3331226e9d..4adfca6611 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -38,7 +38,8 @@ #include SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load); -SWITCH_MODULE_DEFINITION(mod_dptools, mod_dptools_load, NULL, NULL); +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_dptools_shutdown); +SWITCH_MODULE_DEFINITION(mod_dptools, mod_dptools_load, mod_dptools_shutdown, NULL); SWITCH_STANDARD_DIALPLAN(inline_dialplan_hunt) { @@ -3094,6 +3095,484 @@ SWITCH_STANDARD_APP(audio_bridge_function) } } +static struct { + switch_memory_pool_t *pool; + switch_hash_t *pickup_hash; + switch_mutex_t *pickup_mutex; +} globals; + +/* pickup channel */ + + + +typedef struct pickup_node_s { + char *key; + char *uuid; + struct pickup_node_s *next; +} pickup_node_t; + + +#define PICKUP_PROTO "pickup" +static int EC = 0; + +static int pickup_count(const char *key_name) +{ + int count = 0; + pickup_node_t *head, *np; + + switch_mutex_lock(globals.pickup_mutex); + if ((head = switch_core_hash_find(globals.pickup_hash, key_name))) { + for (np = head; np; np = np->next) count++; + } + switch_mutex_unlock(globals.pickup_mutex); + + return count; + +} + +static void pickup_send_presence(const char *key_name) +{ + + char *domain_name, *dup_key_name = NULL, *dup_domain_name = NULL, *dup_id = NULL; + switch_event_t *event; + int count; + + + dup_key_name = strdup(key_name); + key_name = dup_key_name; + + if ((domain_name = strchr(dup_key_name, '@'))) { + *domain_name++ = '\0'; + } + + if (zstr(domain_name)) { + dup_domain_name = switch_core_get_variable_dup("domain"); + domain_name = dup_domain_name; + } + + if (zstr(domain_name)) { + domain_name = "cluecon.com"; + } + + dup_id = switch_mprintf("%s@%s", key_name, domain_name); + + count = pickup_count(dup_id); + + if (count > 0) { + if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", PICKUP_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", dup_id); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", dup_id); + + + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "force-status", "Active (%d call%s)", count, count == 1 ? "" : "s"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "active"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "event_type", "presence"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "unique-id", key_name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "channel-state", "CS_ROUTING"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "confirmed"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-direction", "inbound"); + switch_event_fire(&event); + } + } else { + if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", PICKUP_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", dup_id); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", dup_id); + + + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "force-status", "Idle"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "unknown"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "event_type", "presence"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "unique-id", dup_id); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "channel-state", "CS_HANGUP"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "terminated"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-direction", "inbound"); + switch_event_fire(&event); + } + } + + switch_safe_free(dup_domain_name); + switch_safe_free(dup_key_name); + switch_safe_free(dup_id); + +} + +static void pickup_pres_event_handler(switch_event_t *event) +{ + char *to = switch_event_get_header(event, "to"); + char *dup_to = NULL, *key_name, *dup_key_name = NULL, *domain_name, *dup_domain_name = NULL; + int count = 0; + + if (!to || strncasecmp(to, "pickup+", 7) || !strchr(to, '@')) { + return; + } + + if (!(dup_to = strdup(to))) { + return; + } + + key_name = dup_to + 7; + + if ((domain_name = strchr(key_name, '@'))) { + *domain_name++ = '\0'; + } else { + dup_domain_name = switch_core_get_variable_dup("domain"); + domain_name = dup_domain_name; + } + + if (zstr(domain_name)) { + switch_safe_free(dup_to); + return; + } + + dup_key_name = switch_mprintf("%q@%q", key_name, domain_name); + count = pickup_count(dup_key_name); + + switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN); + + if (count) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", PICKUP_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", key_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "from", "%s@%s", key_name, domain_name); + + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "force-status", "Active (%d call%s)", count, count == 1 ? "" : "s"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "active"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "event_type", "presence"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "unique-id", key_name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "channel-state", "CS_ROUTING"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "confirmed"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-direction", "inbound"); + } else { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", PICKUP_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", key_name); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "from", "%s@%s", key_name, domain_name); + + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "force-status", "Idle"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "unknown"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "event_type", "presence"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "unique-id", key_name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "channel-state", "CS_HANGUP"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "answer-state", "terminated"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-direction", "inbound"); + + } + + switch_event_fire(&event); + switch_safe_free(dup_to); + switch_safe_free(dup_key_name); + switch_safe_free(dup_domain_name); +} + + + +static void pickup_add_session(switch_core_session_t *session, const char *key) +{ + pickup_node_t *head, *node, *np; + char *dup_key = NULL; + + if (!strchr(key, '@')) { + dup_key = switch_mprintf("%s@%s", key, switch_core_get_variable("domain")); + key = dup_key; + } + + node = malloc(sizeof(*node)); + node->key = strdup(key); + node->uuid = strdup(switch_core_session_get_uuid(session)); + node->next = NULL; + + switch_mutex_lock(globals.pickup_mutex); + head = switch_core_hash_find(globals.pickup_hash, key); + + if (head) { + for (np = head; np && np->next; np = np->next); + np->next = node; + } else { + head = node; + switch_core_hash_insert(globals.pickup_hash, key, head); + } + + switch_mutex_unlock(globals.pickup_mutex); + + pickup_send_presence(key); + + switch_safe_free(dup_key); +} + +static char *pickup_pop_uuid(const char *key, const char *uuid) +{ + pickup_node_t *node = NULL, *head; + char *r = NULL; + char *dup_key = NULL; + + if (!strchr(key, '@')) { + dup_key = switch_mprintf("%s@%s", key, switch_core_get_variable("domain")); + key = dup_key; + } + + switch_mutex_lock(globals.pickup_mutex); + + if ((head = switch_core_hash_find(globals.pickup_hash, key))) { + + switch_core_hash_delete(globals.pickup_hash, key); + + if (uuid) { + pickup_node_t *np, *lp = NULL; + + for(np = head; np; np = np->next) { + if (!strcmp(np->uuid, uuid)) { + if (lp) { + lp->next = np->next; + } else { + head = np->next; + } + + node = np; + break; + } + + lp = np; + } + + } else { + node = head; + head = head->next; + } + + + if (head) { + switch_core_hash_insert(globals.pickup_hash, key, head); + } + } + + if (node) { + r = node->uuid; + free(node->key); + free(node); + } + + switch_mutex_unlock(globals.pickup_mutex); + + if (r) pickup_send_presence(key); + + switch_safe_free(dup_key); + + return r; +} + + +typedef struct pickup_pvt_s { + char *key; + switch_event_t *vars; +} pickup_pvt_t; + +switch_endpoint_interface_t *pickup_endpoint_interface; +static switch_call_cause_t pickup_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause); +switch_io_routines_t pickup_io_routines = { + /*.outgoing_channel */ pickup_outgoing_channel +}; + +static switch_status_t pickup_event_handler(switch_core_session_t *session) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_channel_state_t state = switch_channel_get_running_state(channel); + pickup_pvt_t *tech_pvt = switch_core_session_get_private(session); + + switch(state) { + case CS_DESTROY: + if (tech_pvt->vars) { + switch_event_destroy(&tech_pvt->vars); + } + break; + case CS_REPORTING: + return SWITCH_STATUS_FALSE; + case CS_HANGUP: + { + + if (switch_channel_test_flag(channel, CF_CHANNEL_SWAP)) { + const char *key = switch_channel_get_variable(channel, "channel_swap_uuid"); + switch_core_session_t *swap_session; + + if ((swap_session = switch_core_session_locate(key))) { + switch_channel_t *swap_channel = switch_core_session_get_channel(swap_session); + switch_channel_hangup(swap_channel, SWITCH_CAUSE_PICKED_OFF); + switch_core_session_rwunlock(swap_session); + } + switch_channel_clear_flag(channel, CF_CHANNEL_SWAP); + } + + pickup_pop_uuid(tech_pvt->key, switch_core_session_get_uuid(session)); + } + break; + default: + break; + } + + + return SWITCH_STATUS_SUCCESS; +} + +switch_state_handler_table_t pickup_event_handlers = { + /*.on_init */ pickup_event_handler, + /*.on_routing */ pickup_event_handler, + /*.on_execute */ pickup_event_handler, + /*.on_hangup */ pickup_event_handler, + /*.on_exchange_media */ pickup_event_handler, + /*.on_soft_execute */ pickup_event_handler, + /*.on_consume_media */ pickup_event_handler, + /*.on_hibernate */ pickup_event_handler, + /*.on_reset */ pickup_event_handler, + /*.on_park */ pickup_event_handler, + /*.on_reporting */ pickup_event_handler, + /*.on_destroy */ pickup_event_handler +}; + +static switch_call_cause_t pickup_outgoing_channel(switch_core_session_t *session, + switch_event_t *var_event, + switch_caller_profile_t *outbound_profile, + switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, + switch_call_cause_t *cancel_cause) +{ + char *pickup; + switch_call_cause_t cause = SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + switch_core_session_t *nsession; + switch_channel_t *nchannel; + char *name; + pickup_pvt_t *tech_pvt; + switch_caller_profile_t *caller_profile; + + if (zstr(outbound_profile->destination_number)) { + goto done; + } + + pickup = outbound_profile->destination_number; + + + if (!(nsession = switch_core_session_request(pickup_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, flags, pool))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Error Creating Session\n"); + goto error; + } + + tech_pvt = switch_core_session_alloc(nsession, sizeof(*tech_pvt)); + tech_pvt->key = switch_core_session_strdup(nsession, pickup); + switch_event_dup(&tech_pvt->vars, var_event); + + switch_core_session_set_private(nsession, tech_pvt); + + nchannel = switch_core_session_get_channel(nsession); + caller_profile = switch_caller_profile_clone(nsession, outbound_profile); + switch_channel_set_caller_profile(nchannel, caller_profile); + + switch_channel_set_state(nchannel, CS_ROUTING); + + + + *new_session = nsession; + cause = SWITCH_CAUSE_SUCCESS; + name = switch_core_session_sprintf(nsession, "pickup/%s", pickup); + switch_channel_set_name(nchannel, name); + switch_channel_set_variable(nchannel, "process_cdr", "false"); + pickup_add_session(nsession, pickup); + + goto done; + + error: + + if (nsession) { + switch_core_session_destroy(&nsession); + } + + if (pool) { + *pool = NULL; + } + + done: + + + return cause; +} + +#define PICKUP_SYNTAX "[]" +SWITCH_STANDARD_APP(pickup_function) +{ + char *uuid = NULL; + switch_core_session_t *pickup_session; + switch_channel_t *channel = switch_core_session_get_channel(session); + + if (zstr(data)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Missing data. Usage: pickup %s\n", PICKUP_SYNTAX); + return; + } + + if ((uuid = pickup_pop_uuid((char *)data, NULL))) { + if ((pickup_session = switch_core_session_locate(uuid))) { + switch_channel_t *pickup_channel = switch_core_session_get_channel(pickup_session); + switch_caller_profile_t *pickup_caller_profile = switch_channel_get_caller_profile(pickup_channel), + *caller_profile = switch_channel_get_caller_profile(channel); + const char *name, *num; + switch_event_t *event; + switch_event_header_t *hp; + pickup_pvt_t *tech_pvt = switch_core_session_get_private(pickup_session); + + for(hp = tech_pvt->vars->headers; hp; hp = hp->next) { + switch_channel_set_variable(channel, hp->name, hp->value); + } + + + switch_channel_set_flag(pickup_channel, CF_CHANNEL_SWAP); + switch_channel_set_variable(pickup_channel, "channel_swap_uuid", switch_core_session_get_uuid(session)); + + name = caller_profile->caller_id_name; + num = caller_profile->caller_id_number; + + caller_profile->caller_id_name = switch_core_strdup(caller_profile->pool, pickup_caller_profile->caller_id_name); + caller_profile->caller_id_number = switch_core_strdup(caller_profile->pool, pickup_caller_profile->caller_id_number); + + caller_profile->callee_id_name = name; + caller_profile->callee_id_number = num; + + if (switch_event_create(&event, SWITCH_EVENT_CALL_UPDATE) == SWITCH_STATUS_SUCCESS) { + const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Direction", "RECV"); + + if (!uuid) { + uuid = switch_channel_get_variable(channel, "originate_signal_bond"); + } + + + if (uuid) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridged-To", uuid); + } + switch_channel_event_set_data(channel, event); + switch_event_fire(&event); + } + + + switch_channel_set_state(channel, CS_HIBERNATE); + + switch_channel_mark_answered(pickup_channel); + switch_core_session_rwunlock(pickup_session); + } + free(uuid); + } +} + + + + + /* fake chan_error */ switch_endpoint_interface_t *error_endpoint_interface; static switch_call_cause_t error_outgoing_channel(switch_core_session_t *session, @@ -3985,6 +4464,14 @@ static char *file_string_supported_formats[SWITCH_MAX_CODECS] = { 0 }; #define LOG_LONG_DESC "Logs a channel variable for the channel calling the application." #define TRANSFER_LONG_DESC "Immediately transfer the calling channel to a new extension" #define SLEEP_LONG_DESC "Pause the channel for a given number of milliseconds, consuming the audio for that period of time." + +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_dptools_shutdown) +{ + switch_event_unbind_callback(pickup_pres_event_handler); + + return SWITCH_STATUS_SUCCESS; +} + SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) { switch_api_interface_t *api_interface; @@ -3993,9 +4480,16 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) switch_chat_interface_t *chat_interface; switch_file_interface_t *file_interface; + globals.pool = pool; + switch_core_hash_init(&globals.pickup_hash, NULL); + switch_mutex_init(&globals.pickup_mutex, SWITCH_MUTEX_NESTED, globals.pool); + /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); + switch_event_bind(modname, SWITCH_EVENT_PRESENCE_PROBE, SWITCH_EVENT_SUBCLASS_ANY, pickup_pres_event_handler, NULL); + + file_string_supported_formats[0] = "file_string"; file_interface = (switch_file_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_FILE_INTERFACE); @@ -4019,6 +4513,11 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) user_endpoint_interface->interface_name = "user"; user_endpoint_interface->io_routines = &user_io_routines; + pickup_endpoint_interface = (switch_endpoint_interface_t *) switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE); + pickup_endpoint_interface->interface_name = "pickup"; + pickup_endpoint_interface->io_routines = &pickup_io_routines; + pickup_endpoint_interface->state_handler = &pickup_event_handlers; + SWITCH_ADD_CHAT(chat_interface, "event", event_chat_send); SWITCH_ADD_CHAT(chat_interface, "api", api_chat_send); @@ -4193,6 +4692,9 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) SWITCH_ADD_APP(app_interface, "limit_execute", "Limit", LIMITEXECUTE_DESC, limit_execute_function, LIMITEXECUTE_USAGE, SAF_SUPPORT_NOMEDIA); SWITCH_ADD_APP(app_interface, "limit_hash_execute", "Limit", LIMITHASHEXECUTE_DESC, limit_hash_execute_function, LIMITHASHEXECUTE_USAGE, SAF_SUPPORT_NOMEDIA); + SWITCH_ADD_APP(app_interface, "pickup", "Pickup", "Pickup a call", pickup_function, PICKUP_SYNTAX, SAF_SUPPORT_NOMEDIA); + + SWITCH_ADD_DIALPLAN(dp_interface, "inline", inline_dialplan_hunt); /* indicate that the module should continue to be loaded */ diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 8dc58d1320..6befca3439 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1761,6 +1761,20 @@ static int sofia_dialog_probe_callback(void *pArg, int argc, char **argv, char * remote_user = to_user; remote_host = local_host; } + else if (proto && !strcasecmp(proto, "pickup")) { + local_user = to_user; + local_user_param = switch_mprintf(";proto=%s", proto); + event_status = "hold"; + if (skip_proto) { + buf_to_free = switch_mprintf("sip:%s", to_user); + } else { + buf_to_free = switch_mprintf("sip:pickup+%s", to_user); + } + remote_uri = buf_to_free; + strcpy(remote_display_buf, "pickup"); + remote_user = to_user; + remote_host = local_host; + } else if (proto && !strcasecmp(proto, "conf")) { local_user = to_user; local_user_param = switch_mprintf(";proto=%s", proto); @@ -2626,6 +2640,18 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * stream.write_function(&stream, "\n", uuid); } stream.write_function(&stream, "\n"); + } else if (!strcasecmp(proto, "pickup")) { + stream.write_function(&stream, "\nsip:%s@%s;proto=pickup\n", + !zstr(clean_to_user) ? clean_to_user : "unknown", host); + stream.write_function(&stream, "\n", !zstr(clean_to_user) ? clean_to_user : "unknown", host); + stream.write_function(&stream, "\n\n\n"); + stream.write_function(&stream, "\nsip:%s\n", uuid); + if (skip_proto) { + stream.write_function(&stream, "\n", uuid); + } else { + stream.write_function(&stream, "\n", uuid); + } + stream.write_function(&stream, "\n"); } else if (!strcasecmp(proto, "conf")) { stream.write_function(&stream, "\nsip:%s@%s;proto=conference\n", !zstr(clean_to_user) ? clean_to_user : "unknown", host); diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 4a3067afc2..c3da16f072 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -3541,6 +3541,25 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (*bleg) { switch_channel_t *bchan = switch_core_session_get_channel(*bleg); + + if (switch_channel_test_flag(bchan, CF_CHANNEL_SWAP)) { + const char *key = switch_channel_get_variable(bchan, "channel_swap_uuid"); + switch_core_session_t *swap_session, *old_session; + + if ((swap_session = switch_core_session_locate(key))) { + switch_channel_clear_flag(bchan, CF_CHANNEL_SWAP); + switch_channel_hangup(bchan, SWITCH_CAUSE_PICKED_OFF); + + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(bchan), SWITCH_LOG_DEBUG, "Swapping %s for %s\n", + switch_core_session_get_name(swap_session), switch_channel_get_name(bchan)); + + old_session = *bleg; + *bleg = swap_session; + bchan = switch_core_session_get_channel(*bleg); + switch_channel_answer(bchan); + switch_core_session_rwunlock(old_session); + } + } if (session && caller_channel) { From 1374f98645f2a6f92ac2288c8d890a46712f4b19 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 19:44:29 -0500 Subject: [PATCH 304/630] make sched_hangup +0 the same as uuid_kill --- src/mod/applications/mod_commands/mod_commands.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 9baa7ce0f1..a812c8b994 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -2644,9 +2644,10 @@ SWITCH_STANDARD_API(sched_hangup_function) char *cause_str = argv[2]; time_t when; switch_call_cause_t cause = SWITCH_CAUSE_ALLOTTED_TIMEOUT; + int sec = atol(argv[0] + 1); if (*argv[0] == '+') { - when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + sec; } else { when = atol(argv[0]); } @@ -2656,7 +2657,13 @@ SWITCH_STANDARD_API(sched_hangup_function) } if ((hsession = switch_core_session_locate(uuid))) { - switch_ivr_schedule_hangup(when, uuid, cause, SWITCH_FALSE); + if (sec == 0) { + switch_channel_t *hchannel = switch_core_session_get_channel(hsession); + switch_channel_hangup(hchannel, cause); + } else { + switch_ivr_schedule_hangup(when, uuid, cause, SWITCH_FALSE); + } + stream->write_function(stream, "+OK\n"); switch_core_session_rwunlock(hsession); } else { From 073e4056422ab82efd23fa18362a230609bcfa47 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 4 May 2012 19:48:31 -0500 Subject: [PATCH 305/630] do same as last patch with sched_hangup app --- src/mod/applications/mod_dptools/mod_dptools.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 4adfca6611..d5430cf1df 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -1029,9 +1029,10 @@ SWITCH_STANDARD_APP(sched_hangup_function) time_t when; switch_call_cause_t cause = SWITCH_CAUSE_ALLOTTED_TIMEOUT; switch_bool_t bleg = SWITCH_FALSE; + int sec = atol(argv[0] + 1); if (*argv[0] == '+') { - when = switch_epoch_time_now(NULL) + atol(argv[0] + 1); + when = switch_epoch_time_now(NULL) + sec; } else { when = atol(argv[0]); } @@ -1044,7 +1045,11 @@ SWITCH_STANDARD_APP(sched_hangup_function) bleg = SWITCH_TRUE; } - switch_ivr_schedule_hangup(when, switch_core_session_get_uuid(session), cause, bleg); + if (sec == 0) { + switch_channel_hangup(switch_core_session_get_channel(session), cause); + } else { + switch_ivr_schedule_hangup(when, switch_core_session_get_uuid(session), cause, bleg); + } } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No time specified.\n"); } From 9181e8e51b2ffad4e8d7be6cb38afb4ea00eeda8 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 16 Feb 2012 05:57:21 +0000 Subject: [PATCH 306/630] debian: start over --- debian/changelog | 875 ------------------ debian/compat | 1 - debian/control | 279 ------ debian/copyright | 538 ----------- debian/dirs | 5 - debian/freeswitch-codec-passthru-amr.install | 1 - .../freeswitch-codec-passthru-amrwb.install | 1 - .../freeswitch-codec-passthru-g7231.install | 1 - debian/freeswitch-codec-passthru-g729.install | 1 - debian/freeswitch-dev.install | 5 - debian/freeswitch-freetdm.conffiles | 6 - debian/freeswitch-freetdm.install | 10 - debian/freeswitch-lang-de.conffiles | 4 - debian/freeswitch-lang-de.install | 5 - debian/freeswitch-lang-en.conffiles | 7 - debian/freeswitch-lang-en.install | 8 - debian/freeswitch-lang-es.install | 1 - debian/freeswitch-lang-fr.conffiles | 5 - debian/freeswitch-lang-fr.install | 6 - debian/freeswitch-lang-he.conffiles | 5 - debian/freeswitch-lang-he.install | 6 - debian/freeswitch-lang-it.install | 1 - debian/freeswitch-lang-nl.install | 1 - debian/freeswitch-lang-ru.conffiles | 7 - debian/freeswitch-lang-ru.install | 8 - debian/freeswitch-lua.conffiles | 1 - debian/freeswitch-lua.install | 2 - debian/freeswitch-perl.conffiles | 1 - debian/freeswitch-perl.install | 3 - debian/freeswitch-python.conffiles | 1 - debian/freeswitch-python.install | 5 - debian/freeswitch-spidermonkey.conffiles | 1 - debian/freeswitch-spidermonkey.install | 6 - debian/freeswitch.conffiles | 98 -- debian/freeswitch.default | 11 - debian/freeswitch.init | 184 ---- debian/freeswitch.install | 171 ---- debian/man/man1/freeswitch.1 | 22 - debian/monit/freeswitch.monitrc | 25 - debian/postinst | 60 -- debian/postrm | 44 - debian/rules | 236 ----- .../debian/buildsounds.sh | 15 - .../debian/changelog | 20 - .../debian/control | 66 -- .../debian/copyright | 1 - ...eeswitch-sounds-en-us-callie-16000.install | 2 - ...eeswitch-sounds-en-us-callie-32000.install | 2 - ...eeswitch-sounds-en-us-callie-48000.install | 2 - ...reeswitch-sounds-en-us-callie-8000.install | 2 - .../debian/rules | 39 - .../debian/buildsounds.sh | 12 - .../freeswitch-sounds-music/debian/changelog | 26 - .../freeswitch-sounds-music/debian/control | 66 -- .../freeswitch-sounds-music/debian/copyright | 13 - .../freeswitch-sounds-music-16000.install | 2 - .../freeswitch-sounds-music-32000.install | 2 - .../freeswitch-sounds-music-48000.install | 2 - .../freeswitch-sounds-music-8000.install | 2 - .../freeswitch-sounds-music/debian/rules | 39 - .../debian/buildsounds.sh | 15 - .../debian/changelog | 35 - .../debian/control | 61 -- .../debian/copyright | 1 - ...reeswitch-sounds-ru-ru-elena-16000.install | 2 - ...reeswitch-sounds-ru-ru-elena-32000.install | 2 - ...reeswitch-sounds-ru-ru-elena-48000.install | 2 - ...freeswitch-sounds-ru-ru-elena-8000.install | 2 - .../debian/rules | 39 - debian/sounds/getsounds.sh | 30 - debian/source/format | 1 - 71 files changed, 3161 deletions(-) delete mode 100644 debian/changelog delete mode 100644 debian/compat delete mode 100644 debian/control delete mode 100644 debian/copyright delete mode 100644 debian/dirs delete mode 100644 debian/freeswitch-codec-passthru-amr.install delete mode 100644 debian/freeswitch-codec-passthru-amrwb.install delete mode 100644 debian/freeswitch-codec-passthru-g7231.install delete mode 100644 debian/freeswitch-codec-passthru-g729.install delete mode 100644 debian/freeswitch-dev.install delete mode 100644 debian/freeswitch-freetdm.conffiles delete mode 100644 debian/freeswitch-freetdm.install delete mode 100644 debian/freeswitch-lang-de.conffiles delete mode 100644 debian/freeswitch-lang-de.install delete mode 100644 debian/freeswitch-lang-en.conffiles delete mode 100644 debian/freeswitch-lang-en.install delete mode 100644 debian/freeswitch-lang-es.install delete mode 100644 debian/freeswitch-lang-fr.conffiles delete mode 100644 debian/freeswitch-lang-fr.install delete mode 100644 debian/freeswitch-lang-he.conffiles delete mode 100644 debian/freeswitch-lang-he.install delete mode 100644 debian/freeswitch-lang-it.install delete mode 100644 debian/freeswitch-lang-nl.install delete mode 100644 debian/freeswitch-lang-ru.conffiles delete mode 100644 debian/freeswitch-lang-ru.install delete mode 100644 debian/freeswitch-lua.conffiles delete mode 100644 debian/freeswitch-lua.install delete mode 100644 debian/freeswitch-perl.conffiles delete mode 100644 debian/freeswitch-perl.install delete mode 100644 debian/freeswitch-python.conffiles delete mode 100644 debian/freeswitch-python.install delete mode 100644 debian/freeswitch-spidermonkey.conffiles delete mode 100644 debian/freeswitch-spidermonkey.install delete mode 100644 debian/freeswitch.conffiles delete mode 100644 debian/freeswitch.default delete mode 100755 debian/freeswitch.init delete mode 100644 debian/freeswitch.install delete mode 100644 debian/man/man1/freeswitch.1 delete mode 100644 debian/monit/freeswitch.monitrc delete mode 100755 debian/postinst delete mode 100755 debian/postrm delete mode 100755 debian/rules delete mode 100755 debian/sounds/freeswitch-sounds-en-us-callie/debian/buildsounds.sh delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/changelog delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/control delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/copyright delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-16000.install delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-32000.install delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-48000.install delete mode 100644 debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-8000.install delete mode 100755 debian/sounds/freeswitch-sounds-en-us-callie/debian/rules delete mode 100755 debian/sounds/freeswitch-sounds-music/debian/buildsounds.sh delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/changelog delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/control delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/copyright delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-16000.install delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-32000.install delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-48000.install delete mode 100644 debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-8000.install delete mode 100755 debian/sounds/freeswitch-sounds-music/debian/rules delete mode 100755 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/buildsounds.sh delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/changelog delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/control delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/copyright delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-16000.install delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-32000.install delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-48000.install delete mode 100644 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-8000.install delete mode 100755 debian/sounds/freeswitch-sounds-ru-RU-elena/debian/rules delete mode 100755 debian/sounds/getsounds.sh delete mode 100644 debian/source/format diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index 8e1558363a..0000000000 --- a/debian/changelog +++ /dev/null @@ -1,875 +0,0 @@ -freeswitch (1.1.beta2.1-1) unstable; urgency=low - - * Fixing FS-3449 as well as a bit of cleanup in prep for 1.2 release - packaging. Also a handful of lintian errors/warnings are now fixed. - - -- William King Thu, 19 Apr 2012 19:23:18 -0700 - -freeswitch (1.0.head-git.master.20110530.1-1) unstable; urgency=low - - * added mod_cdr_sqlite - - -- Michal Bielicki Mon, 30 May 2011 16:02:02 +0200 - -freeswitch (1.0.head-git.master.20110402.1-1) unstable; urgency=low - - * Added Hebrew lang package - - -- Michal Bielicki Sat, 02 Apr 2011 03:12:02 +0200 - -freeswitch (1.0.head-git.master.20110330.1-1) unstable; urgency=low - - * removed mod_file_string since it has been merged into dptoolsa - - -- Michal Bielicki Wed, 30 Mar 2011 11:39:02 +0200 - -freeswitch (1.0.head~git.master.20101222.1-1) unstable; urgency=low - - * cleaning work - - -- Michal Bielicki Wed, 22 Dec 2010 22:48:02 +0200 - -freeswitch (1.0.head~git.master.20101015.1-1) unstable; urgency=low - - * reintroduced mod_flite - * disabled the patching stuff introduced by Julien ... needs an overwork - * reintroduced mod_tts_commandline - * cleaned up rules file and module make rules - * more trivial changes and updates :) - - -- Michal Bielicki Fri, 15 Oct 2010 13:14:02 +0200 - -freeswitch (1.0.head~git.master.20101014.1-1) unstable; urgency=low - - * replaced mod_openzap with mod_freetdm - * added mod_theora - * added mod_codec2 - * added mod_amrwb - * added mod_portaudio_stream - * cleaned up rules file and module make rules - * added patches from Julien Duqene (FS-369) - * Various trivial changes and updates :) - - -- Michal Bielicki Fri, 15 Oct 2010 05:05:02 +0200 - -freeswitch (1.0.head~git.master.20100601.2-1) unstable; urgency=low - - * Various trivial changes and updates. - * Change upstream package version numbering scheme for unreleased versions: - new format is major.minor.micro~git.branch.date.commits-1 - * Change source format to 3.0 (quilt). - * Upgrade debhelper compatibility to version 7. - * Update maintainer data and copyright file; now includes the full text - of the MPL since it is not (yet?) available in /usr/share/common-licenses/ - - * Build and install mod_file_string.so (FSBUILD-247) - * Work around build failure caused by clean rules for openzap. - - * Remove several libraries from explicit dependencies, there were no special - version requirements and they should be picked up by dh_shlibdeps. - * Add dh_makeshlibs and make dh_shlibsdeps work again. - * Move openssl to Suggests: as it is not a required package to install or - run freeswitch. - - * Add upstream-convert rule to apply patches, generate orig tarball - and set package version. - * Add check to ensure debian patches are applied before attempting build. - * Fix clean rule to avoid unwanted tree change before building orig.tar - archives with git-buildpackage. - - -- Julien Plissonneau Duquene Tue, 01 Jun 2010 09:53:44 -0400 - -freeswitch (1.0.6-1ubuntu1) maverick; urgency=low - - [ Gabriel Gunderson ] - * upgrade: Added mod_callcenter and pulled out Python into its own - package. - - [ Mathieu Parent ] - * Updated Uploaders list - * Updated Standards-Version to 3.9.1 - - -- Mathieu Parent Thu, 23 Sep 2010 15:34:00 +0200 - -freeswitch (1.0.4-1ubuntu2) karmic; urgency=low - - * upgrade: Add more verbosity when building to make it easier to find build - errors. - * upgrade: Remove the requirement for EXACTLY automake1.9 and change it to - need at least automake 1.9 - * upgrade: Add the modules (directory, cluechoo, and valet_parking) to the - build files. These are in the standard build, so they should be here too. - - -- William King Fri, 18 Dec 2009 14:27:42 -0800 - -freeswitch (1.0.4-1ubuntu1) karmic; urgency=low - - * upgrade: Pulling out the sounds into separate source files for easier management. - - -- William King Sun, 15 Nov 2009 16:38:13 -0800 - -freeswitch (1.0.4-1) unstable; urgency=low - - * new - - -- Mike Jerris Mon, 18 Feb 2009 17:39:00 -0500 - -freeswitch (1.0.3-1) unstable; urgency=low - - * build: add targets cd-sounds[-install] and cd-moh[-install] for 48k sounds (r:11151) - * build: autoconf detect odbc library (FSBUILD-8) - * build: fix sound install on windows build (r:11635,11638) - * build: fix configure --sysconfdir (FSBUILD-84) - * build: fix uclibc build (MODLANG-99) - * build: fix adduser in debian (FSBUILD-122, FSBUILD-102) - * core: fix buffering issues (r:11101,11145,11152-11157,11162,11191,11200) - * core: fix c leg no hangup when converting attended to blind transfer before b leg answers (MODENDP-165/r:11061) - * core: fix codec and media handling issues (r:11104) - * core: fix double close of file handles and add recording of native files (r:11108-11113,11482,11483) - * core: fix file resampling issue (r:11090) - * core: fix incorrect call progress timestamps in timetable (r:11186-11187/FSCORE-268) - * core: fix media handling issues (r:11079-11082) - * core: fix multiple 2833 dtmf handling issues (r:11149,11261,11262,11266,11293,11294,11338/FSCORE-266,FSCORE-273) - * core: send more event types verbos bridge,unbridge,park,unpark (r:11097-11098) - * core: Prevent media setup on failed originates (r:11462/FSCORE-279) - * core: fix recorded soundfiles had random data at end of file (r:11491/MODAPP-205) - * core: fix user for windows service (r:11538/FSCORE-277) - * core: modify variable expansion code to expand in more places and to fix potential security issue from injecting variables (r:11569,11570) - * core: look for soundfiles in more locations based on rate (r:11601/MODFORM-23) - * core: state machine veto behavior changed (r:11610) - * core: add enable_file_write_buffering variable (r:11677) - * core: fix garbled audio on media bug during bridge using stateful codecs (FSCORE-288) - * core: fix tone detect running multiple bugs when detecting multiple tones - * core: add {instant_ringback=true} to make ringback not wait for indication to generate ringback - * core: fix segfault from race condition on multiple reloadxml calls (MOODAPP-211) - * core: modify xml locking so phrases do not lock the xml for the duration of playing them - * core: replace resampler with the speexdsp resampler - * core: fix windows calling convention on threads launched that return a value to fix shutdown segfault (FSCORE-298) - * core: do not auto-export origination_caller_id_* to avoid confusion (r:12052) - * core: API visibility support (GCC/SUNCC) (FSCORE-264) - * core: fix leak in exposed event class serialize method (r:12068) - * core: add volume as possible return value from input callback on embedded languages (r:12114) - * core: add resampler to seech handles (r:12141) - * core: add api.getTime to embedded languages (r:12149) - * freeswitch: allow you to specify -htdocs dir at runtime. (r:11614) - * fs_cli: add "debug" command to change the esl debug level at runtime (r:11057) - * iksemel: update to 1.3 (r:11645) - * libesl: fix disconnect failure (r:11078,11083) - * libesl: fix solaris build (r:11067,11068) - * libesl: add c++ wrapper and swigged wrappers for multiple scripting languages - * libg722_1: fix dct4.h code generator to include the "f" (r:11188-11189,11367) - * libilbc: update to new library from Steve Underwood - * mod_amrwb: add amr wideband passthrough codec (r:11971) - * mod_cepstral: fix failure return code handling (MODASRTTS-9) - * mod_conference: add 'conference xml_list' and 'conference [conf_name] xml_list' (r:11062-11063) - * mod_conference: make conference verbose-events param to control if events have all the channel data or not (r:11073-11077) - * mod_conference: add MINTWO flag to end conference when down to 1 participant (r:11523) - * mod_conference: refactor conference record function (r:11626) - * mod_conference: add conference list summary command (MODAPP-197) - * mod_conference: fix Deadlock or coredump on conference commands play, transfer (MODAPP-209) - * mod_dahdi_codec: added (MODCODEC-7) - * mod_dialplan_xml: make previous auto hunt feature optional and off by defaule use auto_hunt=true session or global variable to enable (r:12144) - * mod_dptools: Add failure_causes channel variable (r:12058) - * mod_easyroute: add configuration file example for custom-query (r:11055) - * mod_easyroute: add custom-query configuration option (r:11054) - * mod_easyroute: fix build error when not configured for odbc (r:11478) - * mod_easyroute: fix memory leak (r:11611) - * mod_erlang_event: add ability to spawn a process (module/function) outbound on a specified node. (r:11460,11477) - * mod_erlang_event: Fix some issues with standing up a new outbound listener and cleaning up after a failed session (r:11479) - * mod_erlang_event: Fix setting up a listener for an outbound session if one doesn't already exist (r:11488) - * mod_erlang_event: add "erlang" fscli command (r:11488) - * mod_erlang_event: Monitor spawned outbound processes for premature exits (r:11489) - * mod_erlang_event: Allow the event encoding strategy to be configurable; choices are string or binary (r:11495) - * mod_erlang_event: Allow certain tuple elements to be binaries or strings, to reduce conversion requirements on the erlang side (r:11496) - * mod_erlang_event: Support sending a message to a registered process to request a pid (when spawning won't cut it) (r:11499) - * mod_erlang_event: Ensure events received while a pid session is being created aren't discarded but are queued instead (r:11500) - * mod_erlang_event: Add freeswitch.erl - An erlang module to make talking to mod_erlang_event more painless (r:11525) - * mod_erlang_event: use rpc:call instead of spawn and to make the registered process argument to handlecall optional (r:11542) - * mod_event_socket: add ability to use a comma sep list of events on event-sink create-listener (r:11056) - * mod_event_socket: add debug logging to event-sink (r:11060) - * mod_event_socket: fix race condition (r:11680,12146) - * mod_dptools: add all modifier to break command (r:11557,11558) - * mod_dptools: add sound_test application (r:11658) - * mod_fax: Dont hangup after sending/receiving faxes - * mod_fifo: pause media bugs while not in a bridge (r:11466,11490) - * mod_fifo: allow unpark during chime list playing (r:11555/MODAPP-206) - * mod_fifo: fix outbound fifos doesn't check if the consumer is in the fifo in question. (r:11561/MODAPP-207) - * mod_fifo: Fix segfault when no argument were supplied to fifo_member call (MODAPP-210) - * mod_lcr: added (r:11180,11184,11532,11609) - * mod_limit: fix memory corruption caused by race condition when using limit hash (r:11070-11071) - * mod_limit: Fix transfer bug, fix leak and make the channel hangup if the extension is \!hangup_cause (r:11604,11932) - * mod_limit: add write different channel variables per realm_id (r:11608) - * mod_limit: Make max argument optional on the limit app, set the limit_usage variable to current count after inserting call in the db (r:11955) - * mod_lua: Create empty argv table when no args are passed to a Lua script (r:11559) - * mod_lua: use dll for lua windows build (FSCORE-299) - * mod_openmrcp: removed (r:11176-11179) - * mod_opal: added - * mod_pocketsphinx: fix leak (r:11974) - * mod_portaudio: fix stuck channels on outbound calls (r:11160,11470,11471,11472,11475,11476,11485) - * mod_python: fix build when site dir is not /usr/lib/python2.4 (r:12070) - * mod_say_en: add short form date/time (MODAPP-180) - * mod_sofia: add auto-rtp-bugs profile option to make rtp bug compensation configurable (r :11146-11147) - * mod_sofia: add support in sdp for a=maxptime (r:11103) - * mod_sofia: fix codec change race condition (r:11143) - * mod_sofia: fix notify event wasn't allowing content-length 0 (r:11106/MODENDP-167) - * mod_sofia: fix sending extra sdp in 200 OK when using 100rel in violation of sdp o/a protocol draft-ietf-sipping-sip-offeranswer-10 (r:11088) - * mod_sofia: fix sip_auto_answer=true (r:11069) - * mod_sofia: improve outbound registration error message (r:11059) - * mod_sofia: reset media timeout on re-invite (r:11161) - * mod_sofia: fix segfault due to missing contact header in invite (r:11463/MODENDP-177) - * mod_sofia: allow tag in gateways as well as with direction inbound/outbound (default both) and call counter (r:11468) - * mod_sofia: add support or SLA, works with Polycom and Snom(Sylantro mode). (r:11562/MODENDP-179) - * mod_sofia: tolerate missing user in the request uri (r:11636) - * mod_sofia: Add purpose=gateways and profile=[name] so xml_curl requests make sense (MDXMLINT-46) - * mod_sofia: Add disable-srv and disable-naptr params to sip profiles (default false) (MODENDP-183) - * mod_sofia: add outbound-proxy param (MODENDP-184) - * mod_sofia: fix segfault with stun-enabled=false (SFSIP-120) - * mod_sofia: Profile Name in Expire Event is incorrect (MODENDP-185) - * mod_sofia: add "scrooge" mode to "inbound-codec-negotiation" (r:11881) - * mod_sofia: Add context to reconfig_sofia (r:12080) - * mod_sofia: fix segfault when calling from a Cisco 7940 using bypass_media (FSCORE-301) - * mod_sofia: ilbc to default to 30 if no mode= fmtp is defined on the inbound (r:12110) - * mod_sofia: fix challenge-realm (r:12113) - * mod_sofia: Segmentation fault when running killgw command on sofia profile without specifying a gateway (MODENDP-189) - * mod_sofia: gateways will inherit the context from its parent unless manually provided (r:12138) - * mod_sndfile: Add IMA ADPCM support (MODFORM-22) - * mod_spidermonkey: fix loading of spidermonkey modules (r:11084-11085) - * mod_spidermonkey: block some unwanted behaviours in session.originate - * mod_spidermonkey_socket: fix gc blocking (MODLANG-97) - * mod_xml_rpc: fixed authentication using @domain syntax (r:11064) - * mod_xml_rpc: fix http content types sent in responses (r:11099,11148,11150) - * mod_voicemail: voicemail insert into the proper fields (MODAPP-190) - * mod_voipcodecs: add G.726 24k (r:12083) - * sofia-sip: update to current sofia-sip repository - * spandsp: sync to latest snapshot and fix windows build - * speex: updated to 1.2rc1 - * sqlite: fix random assert on windows (FSCORE-292) - - -- Mike Jerris Mon, 18 Feb 2009 17:39:00 -0500 - -freeswitch (1.0.2-1) unstable; urgency=low - - * all: don't add module interfaces before returning from error conditions in module load functions (MDXMLINT-36) - * all: fixed multiple memory leaks - * all: improved module unloading/reloading support - * build: add support for --switchconfdir (FSBUILD-84) - * build: fixed netbsd build - * build: make freeswitch stop graceflly with /etc/init.d/freeswitch stop on debian add working dir to start-stop-dir so freeswitch dumps core in workdir - * build: multiple packaging fixes - * build: user freeswitch not added to audio group on deb install (FSBUILD-95) - * Configuration: many updates to default configuration - * core: Add ability to choose uuid from originate string, originate_uuid var (use at your own risk) - * core: add bridge_generate_comfort_noise option for bridge to generate comfort noise to the A leg when there is no audio on the B leg - * core: add chan vars to param event during hangup hook - * core: add exec directive to xml preprocessor (not available on windows) - * core: add force_transfer_dialplan and force_transfer_context variables - * core: add hashing to event header lookup - * core: add hits to tone_detect - * core: add last_dtmf_duration variable - * core: add msleep function to swigged languages - * core: add park_after_bridge variable - * core: add per leg timeouts and specific cause codes in reject_on_single_fail - * core: add runtime selection of the module dir (FSCORE-198) - * core: add scheduler support for heartbeat - * core: add session heartbeat feature - * core: add session.destroy psuedo method to sort of destroy a session at least for the sake of FS - * core: add session.unsetInputCallback - * core: add strftime format string validation for user supplied values - * core: add vars param to switch_ivr_originate for recursion (MODAPP-175) - * core: added a "group" concept to the user directory - * core: added ability to do dns lookup to find ip with host: like stun: (FSCORE-219) - * core: added better locking for codec changes during a call - * core: added current_application and current_application_data variables - * core: added error/ magic endpoint so modules can return error causes in situations like sofia_contact - * core: added read_result channel variable - * core: added support for "F" to indicate flash in dtmf (FSCORE-213) - * core: allow calls to be stolen from originate - * core: allow you to get the privacy bits in the caller_profile - * core: change dso code to load symbols local - * core: changes core flags to be array based so we have more - * core: eavesdrop causes the people being eavesdropped on to not hear ach other (MODAPP-140) - * core: expose time table to variable interface via caller field lookup - * core: fix 100% cpu when sending parked call to moh (FSCORE-234) - * core: fix bridge app to make sure both channels are ready for media when one is only in ringing state - * core: fix buffer overflow (FSCORE-188) - * core: fix conference dial by allowing multiple braces in originate, fix bad pointer op (FSCORE-208) - * core: fix double detection of DTMF in IVR (FSCORE-221) - * core: fix hangup_after_bridge is false on a bridge started with the intercept app - * core: fix issue where pid file is accidentally truncated - * core: fix ivr timeout (FSCORE-181) - * core: fix memory leak in alias tab completion code - * core: fix min digits in read app - * core: fix out-of-bounds pointer in variable expansion (FSCORE-171) - * core: fix segfault in media bugs when in bypass media (FSCORE-193) - * core: fix segfault on gtalk to sip calls (FSCORE-212) - * core: fix segfault on reloadxml (FSCORE-176) - * core: fix segfault on trasfering eavesdopping party (FSCORE-210) - * core: fix segfault using switch_system function (FSCORE-196) - * core: fix session.bridge - * core: fix setting effective_caller_id_name / effective_caller_id_number on bridge dialstring (MODAPP-122) - * core: fix stream_raw_write (MODAPP-145) - * core: fix using resampling on ringback file - * core: fixed performance bottleneck in sqlite db's - * core: fixed race in reloadxml - * core: increment app before execute in case it returns to execute it will go to the next item in the list and not the same - * core: ivr menu max_failures and max_timeouts now default to 3 if not specified or invalid (less than 1) values are specified (FSCORE-244) - * core: ivr_menu max-timeouts option, result in ivr_menu_status var (FSCORE-183) - * core: let b legs use park_after_bridge too - * core: make events less verbose unless verbose_events is set - * core: parse private events during originate - * core: pass pdd data to a leg on oubound calls using bridge - * core: prevent crash in crazy situation with xml interface lookup failures (FSCORE-169) - * core: reduce cpu requirement for generated comfort noise - * core: remove interface names from core db on unload - * core: reworked timing resulting in significant performance increase and better rtp timing - * core: rewrite switch_play_and_get_digits (MODAPP-166) - * core: session.recordFile never terminates (MODLANG-79) - * core: session.transfer make dialplan and context optional - * core: set_user app now sets domain vars as well as user vars - * core: tone_detect not triggering app after tone detection (MODAPP-182) - * core: unprivileged user setting bigger stack for switch_system thread failure (FSCORE-197) - * core: user_exists returns false when fetching a user from XML Curl or other xml interfaces - * libesl: added c event socket library and fs_cli - * libsndfile: fix autoconf 2.62 support (LBSNDF-5) - * mod commands: add "all" modifier to "break" command - * mod_celt: added new module - * mod_commands: Add support for more than 2 variables to uuid_setvar_multi (MODAPP-171) - * mod_commands: Add support for passing the cause of hangup to the uuid_kill command (FSCORE-217) - * mod_commands: add attr lookup to user_data - * mod_commands: add domain_exists fsapi command - * mod_commands: add eval fsapi command - * mod_commands: add flush_dtmf app and uuid_flush_dtmf api command - * mod_commands: add fsctl send_sighup, fsctl shutdown asap, unsched_api commands - * mod_commands: add fsctl shutdown [elegant|restart|cancel] - * mod_commands: add new syntax to uuid_setvar to allow you to unset a var. [value] (MODAPP-167) - * mod_commands: add reload fsapi command to reload a module - * mod_commands: add system fsapi and application (MODAPP-138) - * mod_commands: added hupall fsapi command - * mod_commands: added strftime_tz api command - * mod_commands: break all now stops broadcast too - * mod_commands: fix api command sent through sched_api was getting the last char lopped off - * mod_commands: fix race on transfer with -both - * mod_commands: fix system dialplan app problems (MODAPP-86) - * mod_commands: only send content-type on status when it really is http. - * mod_conference: add fsapi to stop async playback too - * mod_conference: add video caps to mod_conference with video follow audio - * mod_conference: better sound prefix handling when using say: and allow say: on kick sounds. - * mod_conference: fix race in record - * mod_conference: fix runaway thread when floor holder has no video and other people do have video - * mod_conference: fix seg when kicking many members quickly (MODAPP-129) - * mod_conference: fix segfault on invalid chat event - * mod_conference: perpetual sound does not auto-mute, you can do that yourself if you want it - * mod_dialplan_xml: add Hunt- vars in dialplan lookup after transfer - * mod_dialplan_xml: fail call on extensions with nested conditions - * mod_dingaling: (LBDING-7) fix segfault on os x - * mod_dingaling: end call on ice timeout - * mod_dingaling: fix presence on jabber to be less protocol ambiguous - * mod_dingaling: fix segfault (LBDING-10) - * mod_dingaling: update to support latest client from google - * mod_dptools: add a mechanism to tell if a file played from sendmsg over event socket - * mod_dptools: add playback_terminator support to phrase and say app - * mod_dptools: add playback_terminator_used variable (MODAPP-132) - * mod_dptools: add presence application - * mod_dptools: fix originate api not parsing users properly (FSCORE-246) - * mod_dptools: fix record and record_session to create directory if it does not exist (FSCORE-250) - * mod_dptools: fixed limit and + parsing bug in record_session app (MODAPP-148) - * mod_dptools: remove_bugs added to remove all media bugs on a session - * mod_erlang_event: add new module - * mod_event_socket: missing : after Content-Length in event socket (MODEVENT-33) - * mod_event_socket: add event socket listener filters - * mod_event_socket: add stateful listener fsapi commands for ajax-y type event interface over http - * mod_event_socket: fix arg parsing errors (MODEVENT-34) - * mod_event_socket: fix shutdown segfault race (MODEVENT-32) - * mod_event_socket: inbound connection to event_socket can now take over an existing channel with 'myevents ' to take on the behaviour of an outbound socket - * mod_event_socket: let any channel get messages - * mod_event_socket: make event socket wait for hangup on outbound mode and send disconnect message - * mod_expr: fix endless loop - * mod_fax: new module - * mod_fifo: add fifo_consumer_wrapup_time var (MODAPP-117) - * mod_fifo: added callback agents - * mod_fifo: honor keyword silence (MODAPP-118) - * mod_flite: added windows build - * mod_fsv: fix in a windows enviroment opening the record file in text mode. (MODAPP-169) - * mod_http: added new module - * mod_java: updated to new module api to support read/write locks on interface - * mod_limit: accept dialplan context for transfer (MODAPP-161) - * mod_limit: added hashtable based limit functions - * mod_limit: prevent empty error log message (MODAPP-134) - * mod_local_stream: add start_local_stream and stop_local_stream fsapi commands to start/stop dynamically (MODFORM-13) - * mod_local_stream: fix leak and improve error checking - * mod_local_stream: fix seg when no timer name specified in config file. (MODFORM-16) - * mod_loopback: add new module - * mod_lua: add local scripts directory support (MODLANG-86) - * mod_lua: don't eval blank string - * mod_lua: fix originate - * mod_lua: fix segfault (MODLANG-77) - * mod_lua: update to lua 5.1.4 (MODLANG-87) - * mod_lumenvox: removed - * mod_managed: new module replaces mod_mono now supports native .net runtime on windows as well - * mod_opal: added to trunk (still very beta) - * mod_perl: fix segfault (MODLANG-77) - * mod_pocketsphinx: fix rpm build - * mod_portaudio: fix cpu race on inbound call to pa when no ring file is set - * mod_radius_cdr: dictionary update for cause code changes (MODEVENT-27) - * mod_radius_cdr: fix unload (MODEVENT-29) - * mod_shout: add stereo recording broadcast support - * mod_shout: added windows build - * mod_shout: fix segfault when recording mp3's (MODFORM-12) - * mod_shout: improved stability of mp3 decoding - * mod_siren: added new module - * mod_sndfile added support to record 16bit for the various rates including 48kHz - * mod_sofia: Add filter to "sofia status profile XXX" (MODENDP-138) - * mod_sofia: Add force-register-db-domain which works in conjunction with force-register-domain. - * mod_sofia: Add optional and tag to tag. - * mod_sofia: Challenge the right realm when to_host is outside the users domain. (MODENDP-136) - * mod_sofia: Improve notify messages through a proxy (MODENDP-147) - * mod_sofia: MWI for multiple domains (MODAPP-126) - * mod_sofia: Move "a=sendrecv" from session to media section of SDP (MODENDP-148) - * mod_sofia: add 200 OK re-invite without sdp - * mod_sofia: add custom sofia::gateway_state event (MODENDP-112) - * mod_sofia: add fire events for the refer SIP NOTIFY event package (MODENDP-152) - * mod_sofia: add more params for xml_curl directory lookup - * mod_sofia: add new auto vals for challenge-realm param - * mod_sofia: add option to turn of auto_restart of sofia profiles on ip change - * mod_sofia: add params to use sip callid as uuid on inbound calls and uuid as sip callid on outbound calls - * mod_sofia: add parsing of Privacy header for privacy info (MODENDP-133) - * mod_sofia: add proto_specific_hangup_cause to both legs - * mod_sofia: add proxy 3pcc mode - * mod_sofia: add redirect variable to channel as well as partner channe (MODENDP-135) - * mod_sofia: add sip-forbid-register to user params to refuse to let a certian user register - * mod_sofia: add sip: into register-proxy when it's not specified - * mod_sofia: add sip_history_info var for inbound invites. - * mod_sofia: add sip_via_protocol variable - * mod_sofia: add sofia xmlstatus (MODENDP-156) - * mod_sofia: add support for params other than Replaces in Refer-To (MODENDP-143) - * mod_sofia: add support for profiles sharing databases so that you can have a domain that uses multiple profiles for split dns type setups - * mod_sofia: add support for refer transfer involving multiple machines - * mod_sofia: add support to send a notify in the invite dialog by specifying the uuid of the call. (SFSIP-92) - * mod_sofia: add suppress_from_cidname var to not have display name in from header (MODENDP-153) - * mod_sofia: added sip_hangup_disposition variable - * mod_sofia: allow send_message and notify events to send a message/notify without a body if needed. - * mod_sofia: append -1 .. -N postfix after any X-headers as vars that have the same name - * mod_sofia: cache auth_gateway_name in sofia for challenged bye - * mod_sofia: cancel proxy or no-media mode if you purposely answer or pre_answer - * mod_sofia: correct result code mapping for Unallocated Number (MODENDP-124) - * mod_sofia: disable 100rel by default - * mod_sofia: don't accept crypto in the RTP/AVP (MODENDP-126) - * mod_sofia: don't put CN in sdp answer if it was not in the offer. - * mod_sofia: fix Incorrect IP address shows up in SDP "o" field when multiple external IPs available and FS not bound to first (MODENDP-132) - * mod_sofia: fix Wrong RTP media port destination after reinvite/UNHOLD (SFSIP-82) - * mod_sofia: fix bug on linksys where they lie about the ptime and handle linksys transfer problem - * mod_sofia: fix chat (send an IM) assumes that the user's profile is the same as their domain, which isn't necessarily so (SFSIP-83) - * mod_sofia: fix dtmf handling of broken info dtmf endpoints - * mod_sofia: fix eyebeam presence to be RFC compliant (MODENDP-144) - * mod_sofia: fix ip change detection when in proxy mode - * mod_sofia: fix register_proxy ignoring the paramaters (MODENDP-121) - * mod_sofia: fix remote session refresh triggers request glare (MODENDP-131) - * mod_sofia: fix rtp auto adjust running when it should not - * mod_sofia: fix rtp sent to wrong port after some re-INVITE scenarios (MODENDP-141) - * mod_sofia: fix sending of cn packets across bridge when we shouldn't - * mod_sofia: fix sqlite issue with select of the sip contact - * mod_sofia: fixed segfault on invalid presence payload - * mod_sofia: gateway ping needs to look for 501 (SFSIP-78) - * mod_sofia: handle multi contact register responses and register timeout better - * mod_sofia: improve gateway resilience - * mod_sofia: log ip and port you get reply to invite from - * mod_sofia: make multiple-registations=true use the contact method and call-id option to do it the old way - * mod_sofia: make proxy mode pull the port from m=image as well - * mod_sofia: make register-proxy preserve the url composed from proxy but target the packets to desired address (MODENDP-121) - * mod_sofia: many fixes for sonus rtp issues silence_when_idle=400 chanvar to send generated silence duing sleeps etc - * mod_sofia: many fixes in presence handling - * mod_sofia: passthrough t.38 fixes - * mod_sofia: pick ipv4 or ipv6 based on sipip instead of having mixed in sdp - * mod_sofia: send NOTIFY on TCP/UDP depending on the SUBSCRIBE (SFSIP-104) - * mod_sofia: setting profile option multiple-registrations=contact key multi reg off the contact string - * mod_sofia: wait for a reply on refer - * mod_soundtouch: fixes and improvements, many options changed (MODAPP-149) - * mod_soundtouch: updated to new module api - * mod_spidermonkey: Segmentation fault in check_hangup_hook at mod_spidermonkey.c:1589 (MODLANG-74) - * mod_spidermonkey: fix bug in apiExecute - * mod_spidermonkey: fix memory pool handling and leaks - * mod_spidermonkey: limit recursion busting through the stack (FSCORE-202) - * mod_spidermonkey: make session.getVariable return blank string not the word false - * mod_spidermonkey_curl: add optional content-type arg - * mod_spidermonkey_odbc: fix numRows and add numCols - * mod_spidermonkey_odbc: fix segfault (MODLANG-75) - * mod_stress: new module for voice stress analysis - * mod_syslog: don't log blank lines (FSCORE-163) - * mod_tone_stream: let silence_stream://0 indicate perpetual silence - * mod_vmd: add new module to detect voicemail "beep" - * mod_voicemail: Add vm_alternate_greet_id param to directory entry (MODAPP-174) - * mod_voicemail: Patch to add voicemail preference controlling date announcement new param 'play-date-announcement' to values 'first' 'last' or 'never' defaults to first to retain previous behavior (MODAPP-121) - * mod_voicemail: Update mwi light after delete vm via web. (MODAPP-124) - * mod_voicemail: add ability to get to options without listening to every saved message (MODAPP-115) - * mod_voicemail: add ability to skip greeting when leaving a voicemail. (MODAPP-181) - * mod_voicemail: add change-pass-key config file option - * mod_voicemail: add forwarding support - * mod_voicemail: add local dtmf driven alternat vm pass - * mod_voicemail: add proper notification of a vm message being too short - * mod_voicemail: add support for auth via a1-hash - * mod_voicemail: add the "storage-dir" parameter to be set on a per-user basis (MODAPP-133) - * mod_voicemail: add voicemail_greeting_path variable - * mod_voicemail: added voicemail_alternate_greet_id variable - * mod_voicemail: allow changing of password from voicemail to update user directory if using non-static config (MODAPP-156) - * mod_voicemail: created email date (int overflow) (MODAPP-125) - * mod_voicemail: don't try to deliver vm when no file was recorded. (MODAPP-133) - * mod_voicemail: fix MWI with xml_curl used for directory (MODAPP-176) - * mod_voicemail: fix Voicemail messages occasionally lost / stranded (MODAPP-178) - * mod_voicemail: fix invalid event after message deleted (MODAPP-170) - * mod_voicemail: fix mwi for phones with multiple registrations problem (MODAPP-153) - * mod_voicemail: fix voicemail segfault on incorrect password (FSCORE-187) - * mod_voicemail: fix voicemail_inject error handling (MODAPP-133) - * mod_voicemail: fix voicemail_inject usage api call - * mod_voicemail: improve error checking (MODAPP-142) - * mod_voicemail: localize notification emails (MODAPP-139) - * mod_voicemail: make more multi-domain friendly (MODAPP-162) - * mod_voicemail: make playback created file macros optional (MODAPP-150) - * mod_voicemail: recognize operator key in more places (MODAPP-159) - * mod_voicemail: web interface displays incorrect created / last heard dates (MODAPP-123) - * mod_wanpipe: removed - * mod_xml_cdr: add https support - * mod_xml_cdr: add optional a-leg prefix to xml cdr filenames (MDXMLINT-39) - * mod_xml_cdr: add support for fallback webserver for cdr posting (FSCORE-238) - * mod_xml_curl: Allow specification of HTTP method, and dynamic expansion of variables in URI. (MDXMLINT-41) - * mod_xml_curl: added redirect following (max 10) - * mod_xml_ldap: almost a complete rewrite of this module - * mod_xml_rpc: allow setting of global realm without a global user (MDXMLINT-45) - * mod_xml_rpc: fix multiple segfaults - * mod_xml_rpc: fix segfault on originate via http - * sofia-sip: updated to 1.12.10 (plus a few patches) - - -- Mike Jerris Mon, 29 Dec 2008 14:46:00 -0500 - -freeswitch (1.0.1-1) unstable; urgency=low - - * FIX: prevent intercept race condition that can also be solved with continue_on_fail=originator_cancel - * FIX: NULL dereference detected by klockwork (www.klockwork.com) - * FIX: don't open failed local stream (MODFORM-9) - * FIX: instability in mod_local_stream in failure scenarios - * FIX: xmlrpc-c build on OS X 10.4 (FSBUILD-47) - * ENHANCEMENT: Added tab completion on many api commands in console - * ENHANCEMENT: polycom BLF support - * FIX: many sip NAT related fixes in mod_sofia - * FIX: support sip unregister with Contact: * - * FIX: multiple segfaults in xmlrpc-c - * FIX: sip unregister event being skipped - * FIX: hangup properly on malformed sip 3pcc calls being used as a way to ping - * ADD: enable-3pcc sofia profile param, it is now disabled by default. - * ADD: presence events to sip proxy mode - * ADD: legs param to cdr_csv - * ADD: support for perl as an embedded lanugage - * ENHANCEMENT: many new api's and functions to the embedded languages including api support, xml interface support, auto start scripts, and many new objects - * CHANGE: python embedded language api changed to match perl, lua, java - * FIX: many stability fixes in embedded langauges perl, lua, java, python - * ADD: failed_xml_cdr magic channel variable - * FIX: access free memory error in mod_sofia when using respond app - * ENHNACEMENT: make global_setvar only have 2 fields so you can set foo=bar=blah w/o quotes - * FIX: mod_spidermonkey keep hangup hook in the session thread - * ENHANCEMENT: mod_ldap added sasl support and search filters - * ADD: answered, waitForAnswer and mediaReady methods to embedded language Session object - * ENHANCEMENT: mod_voicemail param change to allow notification emails using templates - * ADD: per user acl in sofia - * FIX: deadlock in mod_portaudio - * ENHANCEMENT: blank username in sip will trigger a lookup for the user "nobody" - * ADD: import variable to import variables from a peer channel at time of originate - * FIX: api type fix for c++ modules when incorrectly using enums - * FIX: eliminate need for escaped , in [] on originate - * ADD: NDLB-force-rport option to force behavior as if rport was sent in the via - * ENHANCEMENT: honor execute_on_answer on outbound legs too - * ADD: execute_on_ring variable - * FIX: Seg fault in CoreSession() class destructor - * ADD: per channel caller id in originate - * ADD: sip_outgoing_call_id variable - * FIX: multiple memory leaks in mod_sofia - * FIX: find_local_ip IPv6 support - * ADD: variable expansion to on execute vars.(FSCORE-114) - * ADD: count optional arg to show calls and show channels (MODAPP-103) - * FIX: MODEVENT-25 (WSAWOULDBLOCK error on socket send in windows) in event socket - * FIX: multiple fixes to the logic in mod_say_zh - * ADD: inter digit timeout to swigged embedded languages getDigits method. (MODLANG-65) - * ADD: Linksys P-RTP-Stat SIP header values (SFSIP-66) - * FIX: small leak in core - * ADD: progress_timeout var to originate - * UPDATE: portaudio library - * FIX: added timeout to iax read - * ADD: 'pa rescan' to portaudio to look for new devices - * FIX: wait for broadcast to start when starting async hold to avoid race - * FIX: mod_rss, don't always play the first news feed - * FIX: mod_rss inverval to use the session inteval (audio problems on 30ms channels) - * ADD: Path: support in mod_sofia on register - * FIX: mod_shout record stream - * ENHANCEMENT: mod_voicemail support for effective_caller_id_name/number - * ADD: url encode/decode api calls - * FIX: "nua()" in debug information in sofia instead of the real function name - * FIX: better handling of sips: uris - * FIX: don't seg when using more than SWITCH_MAX_CODECS and bump SWITCH_MAX_CODECS to 50 (we have more than 30 in tree) (MODFORM-10) - * ADD: mod_yaml - * FIX: segfault on freeswitch startup if installed directories are removed - * FIX: segfault when intercept with inbound_late_negotiation=true set - * FIX: dont flood logs with eavesdrop messages (MODAPP-101) - * FIX: don't destroy a codec that has not been created (MODAPP-101) - * ENHANCEMENT: allows the "eavesdrop_group" variable to contain several groups, comma separated. (MODAPP-101) - * FIX: cross compile (FSBUILD-53) - * FIX: add header that Nuaunce considers mandatory (MODASRTTS-5) - * ADD: write locks to the core and a function to unregister event bindings (adds better ability to unload modules) - * ENHANCEMENT: make modules unbind events and un-reserve subclasses on module unload - * ADD: removable xml hook bindings - * ADD: EventConsumer object to embedded languages so you can make event handlers - * FIX: sending CN with supress-cng true - * FIX: segfault in the event system when trying to remove NULL event - * ADD: flags to turn off srtp auth and rtp auto adj (FSCORE-149 && MODENDP-115) - * FIX: use lighter math and avoid infinite loop in port allocator (FSCORE-148) - * ENHANCEMENT: let conference pin entry start during prompt (MODAPP-111) - * ADD: mod_pocketsphinx - * FIX: Misuse of SQLRowCount, issues with MSSQL (MODAPP-105) - * FIX: segfaults in mod_python with dtmf callback - * ENHANCEMENT: mod_conference auto-record parameter (MODAPP-112) - * ENHANCEMENT: reload support to many modules - * FIX: mod_sofia add replaces to supported header - * ENHANCEMENT: add args callback to sleep so you can process dtmf and events while "sleeping" - * ADD: mod_flite - * ENHANCEMENT: switch_xml converted back to c code and support double globs on windows - * ENHANCEMENT: mod_sofia support for adding and removing gateways without restarting profiles - * ADD: extract contact header info into A channel when unhandled 3xx response is received (MODENDP-116) - * FIX: outbound event_socket + late negotiation - * ADD: copy_xml_cdr variable - * ADD: silence_stream (like tone_stream but silent) - * ADD: module_exists api call - * ADD: emailer implementation for windows - * ADD: wait_for_silence application - * FIX: no error message generated if OS is unable to load a module ( due to dependency/installation issues ) - * FIX: segfault in media bugs - * FIX: acl lists not correctly matching all ip adresses - * FIX: mod_spidermonkey exit() does not stop script when called from the hangup callback (return "exit" from the callback) - * FIX: mod_syslog works again - * FIX: crash on terminal resize - * FIX: audio problems on big endian - * ENHANCEMENT: Disable multiple registrations on a per-device basis (MODENDP-117) - * ADD: fifo_consumer_exit_key variable (MODAPP-100) - * ADD: cidr based user auth in mod_sofia - * ADD: uuid_send_dtmf fsapi command (MODAPP-114) - * ADD: server registration fiels to sip_registration database (MODENDP-118) - * FIX: use a variable, realm or to host to find gateway when it's not obvious (handles challenged REFER) - * ADD: timeout to curl run in javascript - * ADD: voicemail_inject fsapi command - * ADD: reboot option for sip phones to flush_inboud_reg sofia profile api command - * FIX: add small padding to end of mp3 to avoid cut off mp3 recording - * FIX: patch multiple SDP connection lines in sdp for proxy media mode (MODENDP-109) - * FIX: don't parse ringback variable in proxy situations - * ADD: per call vm recording ext with vm_message_ext variable - * ADD: sip_bye_h prefix to add headers to bye - * ENHANCEMENT: more interfaces available in show fsapi command - * FIX: don't leak in buffers on realloc fail - * FIX: fail out of a conference call if write fails - * ADD: auto ip-change detection - * ADD: mod_snom - * FIX: mod_sofia don't send sipfrag on transfer to cisco so they don't hang up the call - - -- Mike Jerris Thu, 24 Jul 2008 07:00:00 -0500 - -freeswitch (1.0.1~trunk) unstable; urgency=low - - * Updated revision number - * Fixed init problem reported by Jay Binks (FSSCRIPTS-1) - * Added a patch to the debian build system add more features (thanks to Hadley Rich) (FSBUILD-45) - - Added en-us-callie sounds and music on hold packages - - Added recommends and suggests - - Added mod_say_es and mod_say_nl - - Updated descriptions - - Added mod_cdr_csv - * Fixed typos and some errors in the previous patch. - * Modified monit script. Now it should work. - * The debian build system now bootstrap automagically if it's necessary and all scripts are in place. - - -- Massimo Cetra Sun, 6 Jul 2008 16:30:00 +0100 - -freeswitch (1.0.0-1) unstable; urgency=low - - * Enhanced sofia sip nat handling - * Many fixes found by Klockwork (www.klocwork.com) - * Added disable_app_log variable - * Fixed mod_local_stream with rates on windows - * Fixed finding of files in rate dirs on windows - * Fixed memory corruption from sofia_contact function - * Added sofia profile param NDLB-received-in-nat-reg-contact - * Added sofia profile param aggressive-nat-detection - * Fixed video sip calls in proxy media mode - * Added bridge_terminate_key var - * Update xmlrpc-c lib to trunk revision from upstream, fix windows xmlrpc - * Enhanced nat handling in proxy media mode in sip - * Add progress media to timetable so you can calculate pdd - * Fixed seg when using unicast on socket when call has no read_codec - * Fixed missed log events on busy box - * Added -bleg to intercept - * Enhance configure detection of python - * Fixed build on solaris and freebsd for several modules - * Added param "vm-email-only" to make voicemail sent by email only (previously default behavior) - * Added param "vm-mailto-notify" to allow sending a notification email - * Fixed mod_java build - * Fixed mwi failures for some devices that don't subscribe - * Removed fsapi functions (killchan, transfer, session_displace, reject) - * Removed fsapi functions (session_record, broadcast, hold, media) - * Many updates to sofia-sip library including over 100 fixes - - -- Michael Jerris Tue, 27 May 2008 01:30:00 -0400 - -freeswitch (1.0~rc6-1) unstable; urgency=low - - * Changed to not allow pass_2833 on transcoded calls - (it never worked, now it will tell you) - * Enhanced sofia sip nat handling - * Fix libedit build on solaris - * Fix session timers in mod_sofia - * Fix conference fire-call - * Change: add var_event down into the endpoints so chans - with no parents can still pass options - * Added enable-post-var param to xml_rpc - * Fix mod_lua build on solaris - * Many fixes found by Klockwork (www.klocwork.com) - * Add unregister event in mod_sofia - * Enhance python configure detection - * Add vm_boxcount api func - * Fixed att_xfer issue - * Fix sip now includes the Allow-Events header in more places - - -- Michael Jerris Tue, 13 May 2008 02:01:00 -0400 - -freeswitch (1.0~rc5-1) unstable; urgency=low - - * Changed internal state names to avoid confusion - Fixed video negotiation - Enhanced accuracy of windows timer - Fixed mod_ldap build - Added dialplan and context to sql table for channels - Multiple fixes to mod_lua and mod_perl - Fixed logic bug in fifo causing segfault - internal changes to sip stack so we can remove a hash redundant to the stack - Fixed multiple memory leaks in mod_sofia - Fixed event fetch segfault on sip subscribe - Fixed segfault on timer rollover in sofia on 64bit - Fixed audio timing issues in mod_portaudio - Changed names of sip profiles in default config to avoid confusion - Fixed memory usage leak-like behavior when playing files requiring resampling - Removed some unused api's - Fix rtp timeout when playing moh - Removed some un-needed libraries and files from tree - Fixed multiple issues in sip stack including multiple segfaults - Added support for sip transfers on bypass_media and proxy_media calls - Added say application - Fixed --disable-debug configure option - Enhanced switch_cpp wrapper (and perl, python, lua, java) - Fixed segfault on inavalid stun response - Fixed configure help output - Fixed segfault on mp3 playback - Fixed assert on invalid sdp (missing m= line) - Added configurable windows service name - Fixed proxy mode call transition to non proxy call - Fixed solaris build of voipcodecs - Fixed sofia seg when call failure edge case - - -- Michael Jerris Tue, 13 May 2008 02:01:00 -0400 - -freeswitch (1.0~8327) unstable; urgency=low - - * Adding perl and lua separate packages - * Adding mod_voipcodecs - - -- root Tue, 6 May 2008 09:46:26 +0000 - -freeswitch (1.0~rc4-1) unstable; urgency=low - * Add tab completion in cli - Add "inline" dialplan - Fixed segfault in enum - Enhance enum to fork dial equal priority entries - Added auto-reload to enum - Fixed odbc bug is mod_sofia presence handling - Add presence for conference and dial an eavesdrop - Fix stack overflow segfault when recursively parking calls - Fixed race is sofia registration handling - Enhance sofia registration, unregister on keep-alive OPTIONS failure - Added internal routing loop detection/avoidance - Fixed race in bgapi in event socket - Fixed vars to execute apps before bridge "bridge_pre_execute_aleg_app" and "bridge_pre_execute_bleg_app" - Fixed re-setting sound prefix to no prefix after a pharse - Enhanced setting of bracket vars from originate so they show in the CHANNEL_ORIGINATE event - Add "enable-timer" and "enable-100rel" options to turn off default behaviors in sofia - Add originate_timeout to originate vars - Fixed hanging channels in mod_portaudio - Added auto time sync on vps migration to different hardware - Fixed seg on transfer when both legs are not sip - Added configurable dtmf duration defaults - Enhanced voicemail, allow interruption of hello message - Fixed voicemail to not light up light on saved messages - Enhance mod_amr honor disable dtx in fmtp (MODCODEC-3) - Fixed bootstrap to install automake dependencies so you can use tarball without same version of automake installed - Fixed MODLANG-56 (bad audio on originate and javascript streamFile) - Added hold/unhold dialplan apps - Enhanced sofia error checking to outlaw 0.0.0.0 in sofia ip params - Backport fixes from sofia-sip tree - Fixed MSVC build - Fixed segfault on sip SUBSCRIBE with Expires: 0 - Added mod_say_zh - Added --with-pyton and --with-pyton-config configure options - Added mod_lua - Enhanced switch_cpp wrapper in core and normalized interfaces for perl, python, lua, and java - Fixed multiple issues in cpp wrapper and the languages perl, python, lua and java - Added back mod_perl - Added sofia gateway option ping to adjust options ping frequency - Added .net event socket lib to contrib - Fixed passing of exact response codes of sip across a bridge - Added mod_reference, reference endpoint module - Enhanced build so you can now make commented out modules using "make mod_name" - - -- Michael Jerris Wed, 23 Apr 2008 12:58:00 -0400 - -freeswitch (1.0~rc3-1) unstable; urgency=low - * Enhance xml menu system - fixes upstream from sofia-sip library - Enhance mod_fifo - added close method to ODBC spidermonkey class - Fix multiple bugs in the cpp wrapper used in mod_java and mod_python - Fix hung sip channel issue using respond app or on re-invite with bypass media after 1xx or 2xx responses - - -- Michael Jerris Wed, 9 Apr 2008 12:58:22 -0400 - -freeswitch (1.0~rc2-1) unstable; urgency=low - * Fixed speex protocol negotiation issues (8k vs 16k) - Fixed mod_iax race conditions - Fixed ptime negotiation issues when re-packetizing - Added ip based acl lists - * - -- Michael Jerris Wed, 9 Apr 2008 12:58:22 -0400 - -freeswitch (1.0~rc1-1) unstable; urgency=low - * loads of fixes - new cdr-csv module - new spidermonkey-curl module - - -- Michal Bielicki Mon, 14 Jan 2008 23:37:04 +0100 - -freeswitch (1.0~beta3-1) unstable; urgency=low - - * Additional scripts for changing the user to freeswitch - Added Startup Scripts - Monit integration - Settings file for integration into init - init.d file - added user freeswitch to own and run all off freeswitch - cleaned up config file control - new upstream release - split off codec pakcages - split off spidermonkey packages - - -- Michal Bielicki Tue, 27 Nov 2007 13:20:21 +0100 - -freeswitch (1.0~beta2-1) unstable; urgency=low - - * New upstream release - - -- Paul van Genderen Wed, 17 Oct 2007 19:32:09 +0200 - -freeswitch (1.0~beta1-1) unstable; urgency=low - - * New packages. - - -- Robert McQueen Sun, 12 Nov 2006 17:32:23 -0500 diff --git a/debian/compat b/debian/compat deleted file mode 100644 index 7f8f011eb7..0000000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/debian/control b/debian/control deleted file mode 100644 index 7b1f3e2a78..0000000000 --- a/debian/control +++ /dev/null @@ -1,279 +0,0 @@ -Source: freeswitch -Section: comm -Priority: extra -Maintainer: FreeSWITCH developers -Uploaders: Michal Bielicki , Gabriel Gunderson , William King , Mathieu Parent -Build-Depends: debhelper (>= 7), wget, automake (>=1.9), autoconf, libtool, - unixodbc-dev, libasound2-dev, libcurl3-openssl-dev|libcurl4-openssl-dev, - libssl-dev, ncurses-dev, libogg-dev, libvorbis-dev, libperl-dev, libgdbm-dev, - libdb-dev, libgnutls-dev, libtiff4-dev, python-dev, libx11-dev, uuid-dev, - libc6-dev (>= 2), bison, gawk -Homepage: http://freeswitch.org/ -Standards-Version: 3.9.3 -Vcs-Git: git://git.freeswitch.org/freeswitch.git -Vcs-Browser: http://fisheye.freeswitch.org/browse/freeswitch.git - -Package: freeswitch -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Recommends: freeswitch-lang-en -Suggests: freeswitch-spidermonkey, freeswitch-lua, freeswitch-perl, - freeswitch-sounds-music-8000, monit, openssl -Description: open source telephony platform - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This is the main package that includes the FreeSWITCH daemon and most modules. - -Package: freeswitch-dbg -Section: debug -Architecture: any -Depends: ${misc:Depends}, freeswitch (= ${binary:Version}) -Description: debugging symbols for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package includes the debugging symbols useful for debugging FreeSWITCH. - The debugging symbols are used for execution tracing and core dump analysis. - -Package: freeswitch-dev -Section: libdevel -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: development libraries and header files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the include files used if you wish to compile a package - which require FreeSWITCH's source file headers. - -Package: freeswitch-spidermonkey -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Javascript engine for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_spidermonkey language module. - -Package: freeswitch-perl -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Perl engine for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_perl language module. - -Package: freeswitch-lua -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Lua engine for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_lua language module. - -Package: freeswitch-python -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Python engine for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_python language module. - -Package: freeswitch-codec-passthru-g7231 -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: pass through g723.1 codec support for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_g723_1 codec module. - -Package: freeswitch-codec-passthru-amr -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: pass through AMR codec support for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_amr codec module. - -Package: freeswitch-codec-passthru-amrwb -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: pass through AMRWB codec support for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_amrwb codec module. - - -Package: freeswitch-codec-passthru-g729 -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: pass through g729 codec support for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_g729 codec module. - -Package: freeswitch-lang-en -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Recommends: freeswitch-sounds-en-us-callie-8000 -Suggests: freeswitch-sounds-en-us-callie-16000, freeswitch-sounds-en-us-callie-32000, - freeswitch-sounds-en-us-callie-48000 -Description: English language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_en module and available language - configuration files. - -Package: freeswitch-lang-de -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: German language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_de module and available language - configuration files. - -Package: freeswitch-lang-fr -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: French language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_fr module and available language - configuration files. - -Package: freeswitch-lang-it -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Italian language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_it module and available language - configuration files. - -Package: freeswitch-lang-es -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Spanish language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_es module and available language - configuration files. - -Package: freeswitch-lang-nl -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Dutch language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_nl module and available language - configuration files. - -Package: freeswitch-lang-ru -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Recommends: freeswitch-sounds-ru-ru-elena-8000 -Suggests: freeswitch-sounds-ru-ru-elena-16000, freeswitch-sounds-ru-ru-elena-32000, - freeswitch-sounds-ru-ru-elena-48000 -Description: Russian language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_ru module and available language - configuration files. - -Package: freeswitch-lang-he -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Hebrew language files for FreeSWITCH - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to a - soft-switch. It can be used as a simple switching engine, a PBX, a media - gateway or a media server to host IVR applications using simple scripts or XML - to control the callflow. - . - This package contains the mod_say_he module and available language - configuration files. - -Package: freeswitch-freetdm -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: FreeTDM is a signaling and board API abstraction used mainly by the - FreeSWITCH project to place calls in TDM and analog telephony circuits. The library - was previously named "OpenZAP". Sangoma has worked along with the FreeSWITCH - developers in this library so Sangoma's customers can also use it to do custom - development. The library is still under heavy development but the overall API - does not change often. The intention of the library is to present a consistent - API for different telephony signaling stacks and board I/O APIs. FreeTDM can - either be used as a standalone API or along with FreeSWITCH as an endpoint - (mod_freetdm). If you want to use it as a part of FreeSWITCH remember following - the FreeSWITCH configuration section. - This package contains all the freetdm modules and libs and submodules diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index f95b7df2e0..0000000000 --- a/debian/copyright +++ /dev/null @@ -1,538 +0,0 @@ -This package was debianized by Michal Bielicki - on Nov 25, 2007. - -The source was downloaded from http://www.freewitch.org/ - -Upstream maintainers: - Current: Michal Bielicki - Past: Nicholas Amorim -See changelog.Debian.gz for a full list of contributors. - -The Initial Developer of the Original Code is -Anthony Minessale II -Portions created by the Initial Developer are Copyright (C) - the Initial Developer. All Rights Reserved. - - The PRIMARY AUTHORS are (and/or have been): - - Anthony Minessale II - Primary developer of all core - components and many of the included modules. Much of freeswitch is based - on his work. - - Michael Jerris - Windows porter and responsible for the - windows\msvc build system. - -And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- -people who have submitted patches, reported bugs, and generally made Freeswitch -that much better: - - Brian K. West - For countless hours of work on BSD and Mac support, finding - countless bugs, and moral support. Xcode project files. - Joshua Colp - For his help making mod_exosip possible (which we are now - getting rid of but oh well), and for just being a swell guy! - Michal "cypromis" Bielicki (michal.bielicki AT voiceworks.pl) - Solaris - porting, and autotools enhancements, debian, rpm and solaris packaging. - James Martelletti - All around cool guy (mod_syslog) - Johny Kadarisman - Yossi Neiman of Cartis Solutions, Inc. - - implementation of mod_cdr (perldd, mysql, csv) - Stefan Knoblich - Sofia TLS, various patches and support. Thanks. - Justin Unger - Lots of help with patches and - SIP testing. Thanks! - Paul D. Tinsley - Various patches and support. - Ken Rice - - xmlcdr, sofia improvements, load - testing, 1 liners here and there. - Neal Horman - conference improvements, switch_ivr - menu additions and other tweaks. - Johny Kadarisman - mod_python fixups. - Michael Murdock - testing, documentation, bug - finding and usability enhancements. - Matt Klein - Jonas Gauffin - mod_cdr_odbc, - mod_spidermonkey_socket, Bugfixes and additions in mod_spidermonkey_odbc and - mod_spidermonkey, .net event socket library. - Damjan Jovanovic - mod_java - Juan Jose Comellas - Patch to switch_utils for arg - parsing. - Dale Thatcher - Additions to - mod_conference. - Simon Perreault & Marc Blanchet from Viagenie.ca - IPv6 Support. - -A big THANK YOU goes to: - - Justin Cassidy - Build related cleanups and automatic build setup. - Bret McDanel - Javascript Documentation, constant feedback and input, many - other things I am sure I am forgetting. - - - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - - diff --git a/debian/dirs b/debian/dirs deleted file mode 100644 index e2957b06b5..0000000000 --- a/debian/dirs +++ /dev/null @@ -1,5 +0,0 @@ -opt/freeswitch/log -opt/freeswitch/db -opt/freeswitch/bin/scripts -etc/monit - diff --git a/debian/freeswitch-codec-passthru-amr.install b/debian/freeswitch-codec-passthru-amr.install deleted file mode 100644 index c66668b30f..0000000000 --- a/debian/freeswitch-codec-passthru-amr.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_amr.so* diff --git a/debian/freeswitch-codec-passthru-amrwb.install b/debian/freeswitch-codec-passthru-amrwb.install deleted file mode 100644 index 022462d001..0000000000 --- a/debian/freeswitch-codec-passthru-amrwb.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_amrwb.so* diff --git a/debian/freeswitch-codec-passthru-g7231.install b/debian/freeswitch-codec-passthru-g7231.install deleted file mode 100644 index 4a0ab0c2c9..0000000000 --- a/debian/freeswitch-codec-passthru-g7231.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_g723_1.so* diff --git a/debian/freeswitch-codec-passthru-g729.install b/debian/freeswitch-codec-passthru-g729.install deleted file mode 100644 index 0f94112f39..0000000000 --- a/debian/freeswitch-codec-passthru-g729.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_g729.so* diff --git a/debian/freeswitch-dev.install b/debian/freeswitch-dev.install deleted file mode 100644 index 9fcb97c816..0000000000 --- a/debian/freeswitch-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -opt/freeswitch/include/* -opt/freeswitch/lib/*.a -opt/freeswitch/lib/*.la -opt/freeswitch/mod/*.a -opt/freeswitch/mod/*.la diff --git a/debian/freeswitch-freetdm.conffiles b/debian/freeswitch-freetdm.conffiles deleted file mode 100644 index f14e37f3db..0000000000 --- a/debian/freeswitch-freetdm.conffiles +++ /dev/null @@ -1,6 +0,0 @@ -opt/freeswitch/conf/tones.conf -opt/freeswitch/conf/autoload_configs/freetdm.conf.xml -opt/freeswitch/conf/pika.conf -opt/freeswitch/conf/freetdm.conf -opt/freeswitch/conf/wanpipe.conf -opt/freeswitch/conf/zt.conf diff --git a/debian/freeswitch-freetdm.install b/debian/freeswitch-freetdm.install deleted file mode 100644 index cdca887dd3..0000000000 --- a/debian/freeswitch-freetdm.install +++ /dev/null @@ -1,10 +0,0 @@ -opt/freeswitch/conf/tones.conf -opt/freeswitch/conf/autoload_configs/freetdm.conf.xml -opt/freeswitch/conf/pika.conf -opt/freeswitch/conf/freetdm.conf -opt/freeswitch/conf/wanpipe.conf -opt/freeswitch/conf/zt.conf -opt/freeswitch/lib/libfreetdm.so* -opt/freeswitch/mod/mod_freetdm.so* -opt/freeswitch/mod/ftm*.so* - diff --git a/debian/freeswitch-lang-de.conffiles b/debian/freeswitch-lang-de.conffiles deleted file mode 100644 index 5c1dded24e..0000000000 --- a/debian/freeswitch-lang-de.conffiles +++ /dev/null @@ -1,4 +0,0 @@ -/opt/freeswitch/conf/lang/de/demo/demo.xml -/opt/freeswitch/conf/lang/de/de.xml -/opt/freeswitch/conf/lang/de/vm/tts.xml -/opt/freeswitch/conf/lang/de/vm/sounds.xml diff --git a/debian/freeswitch-lang-de.install b/debian/freeswitch-lang-de.install deleted file mode 100644 index 1b33ebec72..0000000000 --- a/debian/freeswitch-lang-de.install +++ /dev/null @@ -1,5 +0,0 @@ -opt/freeswitch/conf/lang/de/demo/demo.xml -opt/freeswitch/conf/lang/de/de.xml -opt/freeswitch/conf/lang/de/vm/tts.xml -/opt/freeswitch/conf/lang/de/vm/sounds.xml -opt/freeswitch/mod/mod_say_de.so* diff --git a/debian/freeswitch-lang-en.conffiles b/debian/freeswitch-lang-en.conffiles deleted file mode 100644 index 10d6078517..0000000000 --- a/debian/freeswitch-lang-en.conffiles +++ /dev/null @@ -1,7 +0,0 @@ -/opt/freeswitch/conf/lang/en/demo/demo-ivr.xml -/opt/freeswitch/conf/lang/en/demo/demo.xml -/opt/freeswitch/conf/lang/en/dir/sounds.xml -/opt/freeswitch/conf/lang/en/dir/tts.xml -/opt/freeswitch/conf/lang/en/en.xml -/opt/freeswitch/conf/lang/en/vm/sounds.xml -/opt/freeswitch/conf/lang/en/vm/tts.xml diff --git a/debian/freeswitch-lang-en.install b/debian/freeswitch-lang-en.install deleted file mode 100644 index 73b86280b5..0000000000 --- a/debian/freeswitch-lang-en.install +++ /dev/null @@ -1,8 +0,0 @@ -opt/freeswitch/conf/lang/en/demo/demo-ivr.xml -opt/freeswitch/conf/lang/en/demo/demo.xml -opt/freeswitch/conf/lang/en/dir/sounds.xml -opt/freeswitch/conf/lang/en/dir/tts.xml -opt/freeswitch/conf/lang/en/en.xml -opt/freeswitch/conf/lang/en/vm/sounds.xml -opt/freeswitch/conf/lang/en/vm/tts.xml -opt/freeswitch/mod/mod_say_en.so* diff --git a/debian/freeswitch-lang-es.install b/debian/freeswitch-lang-es.install deleted file mode 100644 index fc91c7985e..0000000000 --- a/debian/freeswitch-lang-es.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_say_es.so* diff --git a/debian/freeswitch-lang-fr.conffiles b/debian/freeswitch-lang-fr.conffiles deleted file mode 100644 index 75055617e5..0000000000 --- a/debian/freeswitch-lang-fr.conffiles +++ /dev/null @@ -1,5 +0,0 @@ -/opt/freeswitch/conf/lang/fr/fr.xml -/opt/freeswitch/conf/lang/fr/demo/demo.xml -/opt/freeswitch/conf/lang/fr/dir/sounds.xml -/opt/freeswitch/conf/lang/fr/dir/tts.xml -/opt/freeswitch/conf/lang/fr/vm/sounds.xml diff --git a/debian/freeswitch-lang-fr.install b/debian/freeswitch-lang-fr.install deleted file mode 100644 index 141084eac3..0000000000 --- a/debian/freeswitch-lang-fr.install +++ /dev/null @@ -1,6 +0,0 @@ -opt/freeswitch/conf/lang/fr/fr.xml -opt/freeswitch/conf/lang/fr/demo/demo.xml -opt/freeswitch/conf/lang/fr/dir/sounds.xml -opt/freeswitch/conf/lang/fr/dir/tts.xml -opt/freeswitch/conf/lang/fr/vm/sounds.xml -opt/freeswitch/mod/mod_say_fr.so* diff --git a/debian/freeswitch-lang-he.conffiles b/debian/freeswitch-lang-he.conffiles deleted file mode 100644 index 37ec6015db..0000000000 --- a/debian/freeswitch-lang-he.conffiles +++ /dev/null @@ -1,5 +0,0 @@ -/opt/freeswitch/conf/lang/he/demo/demo-ivr.xml -/opt/freeswitch/conf/lang/he/demo/demo.xml -/opt/freeswitch/conf/lang/he/dir/sounds.xml -/opt/freeswitch/conf/lang/he/he.xml -/opt/freeswitch/conf/lang/he/vm/sounds.xml diff --git a/debian/freeswitch-lang-he.install b/debian/freeswitch-lang-he.install deleted file mode 100644 index ed0c65813e..0000000000 --- a/debian/freeswitch-lang-he.install +++ /dev/null @@ -1,6 +0,0 @@ -opt/freeswitch/conf/lang/he/demo/demo-ivr.xml -opt/freeswitch/conf/lang/he/demo/demo.xml -opt/freeswitch/conf/lang/he/dir/sounds.xml -opt/freeswitch/conf/lang/he/he.xml -opt/freeswitch/conf/lang/he/vm/sounds.xml -opt/freeswitch/mod/mod_say_he.so* diff --git a/debian/freeswitch-lang-it.install b/debian/freeswitch-lang-it.install deleted file mode 100644 index 37a08020c2..0000000000 --- a/debian/freeswitch-lang-it.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_say_it.so* diff --git a/debian/freeswitch-lang-nl.install b/debian/freeswitch-lang-nl.install deleted file mode 100644 index 061a87e465..0000000000 --- a/debian/freeswitch-lang-nl.install +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/mod/mod_say_nl.so* diff --git a/debian/freeswitch-lang-ru.conffiles b/debian/freeswitch-lang-ru.conffiles deleted file mode 100644 index 55e97079d7..0000000000 --- a/debian/freeswitch-lang-ru.conffiles +++ /dev/null @@ -1,7 +0,0 @@ -/opt/freeswitch/conf/lang/ru/demo/demo-ivr.xml -/opt/freeswitch/conf/lang/ru/demo/demo.xml -/opt/freeswitch/conf/lang/ru/dir/sounds.xml -/opt/freeswitch/conf/lang/ru/dir/tts.xml -/opt/freeswitch/conf/lang/ru/ru.xml -/opt/freeswitch/conf/lang/ru/vm/sounds.xml -/opt/freeswitch/conf/lang/ru/vm/tts.xml diff --git a/debian/freeswitch-lang-ru.install b/debian/freeswitch-lang-ru.install deleted file mode 100644 index 7c58f72f12..0000000000 --- a/debian/freeswitch-lang-ru.install +++ /dev/null @@ -1,8 +0,0 @@ -opt/freeswitch/conf/lang/ru/demo/demo-ivr.xml -opt/freeswitch/conf/lang/ru/demo/demo.xml -opt/freeswitch/conf/lang/ru/dir/sounds.xml -opt/freeswitch/conf/lang/ru/dir/tts.xml -opt/freeswitch/conf/lang/ru/ru.xml -opt/freeswitch/conf/lang/ru/vm/sounds.xml -opt/freeswitch/conf/lang/ru/vm/tts.xml -opt/freeswitch/mod/mod_say_ru.so* diff --git a/debian/freeswitch-lua.conffiles b/debian/freeswitch-lua.conffiles deleted file mode 100644 index dbe8a22a9d..0000000000 --- a/debian/freeswitch-lua.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/freeswitch/conf/autoload_configs/lua.conf.xml diff --git a/debian/freeswitch-lua.install b/debian/freeswitch-lua.install deleted file mode 100644 index af944aebea..0000000000 --- a/debian/freeswitch-lua.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/conf/autoload_configs/lua.conf.xml -opt/freeswitch/mod/mod_lua.so* diff --git a/debian/freeswitch-perl.conffiles b/debian/freeswitch-perl.conffiles deleted file mode 100644 index 6a13819992..0000000000 --- a/debian/freeswitch-perl.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/freeswitch/conf/autoload_configs/perl.conf.xml diff --git a/debian/freeswitch-perl.install b/debian/freeswitch-perl.install deleted file mode 100644 index 706a6a091d..0000000000 --- a/debian/freeswitch-perl.install +++ /dev/null @@ -1,3 +0,0 @@ -opt/freeswitch/conf/autoload_configs/perl.conf.xml -opt/freeswitch/mod/mod_perl.so* -opt/freeswitch/perl/* diff --git a/debian/freeswitch-python.conffiles b/debian/freeswitch-python.conffiles deleted file mode 100644 index 1c1746c875..0000000000 --- a/debian/freeswitch-python.conffiles +++ /dev/null @@ -1 +0,0 @@ -opt/freeswitch/conf/autoload_configs/python.conf.xml diff --git a/debian/freeswitch-python.install b/debian/freeswitch-python.install deleted file mode 100644 index 247c26d672..0000000000 --- a/debian/freeswitch-python.install +++ /dev/null @@ -1,5 +0,0 @@ -opt/freeswitch/conf/autoload_configs/python.conf.xml -opt/freeswitch/mod/mod_python.so* -usr/lib/python2.*/*-packages/freeswitch.py* -usr/lib/python2.*/*-packages/ESL.py* -usr/lib/python2.*/*-packages/_ESL.so* diff --git a/debian/freeswitch-spidermonkey.conffiles b/debian/freeswitch-spidermonkey.conffiles deleted file mode 100644 index 2a8eeb06fa..0000000000 --- a/debian/freeswitch-spidermonkey.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/freeswitch/conf/autoload_configs/spidermonkey.conf.xml diff --git a/debian/freeswitch-spidermonkey.install b/debian/freeswitch-spidermonkey.install deleted file mode 100644 index 882a287ba8..0000000000 --- a/debian/freeswitch-spidermonkey.install +++ /dev/null @@ -1,6 +0,0 @@ -opt/freeswitch/conf/autoload_configs/spidermonkey.conf.xml -opt/freeswitch/lib/libjs.so* -opt/freeswitch/lib/libnspr4.so* -opt/freeswitch/lib/libplc4.so* -opt/freeswitch/lib/libplds4.so* -opt/freeswitch/mod/mod_spidermonkey*.so* diff --git a/debian/freeswitch.conffiles b/debian/freeswitch.conffiles deleted file mode 100644 index c765625b6f..0000000000 --- a/debian/freeswitch.conffiles +++ /dev/null @@ -1,98 +0,0 @@ -/opt/freeswitch/conf/autoload_configs/acl.conf.xml -/opt/freeswitch/conf/autoload_configs/alsa.conf.xml -/opt/freeswitch/conf/autoload_configs/callcenter.conf.xml -/opt/freeswitch/conf/autoload_configs/cdr_csv.conf.xml -/opt/freeswitch/conf/autoload_configs/cidlookup.conf.xml -/opt/freeswitch/conf/autoload_configs/conference.conf.xml -/opt/freeswitch/conf/autoload_configs/console.conf.xml -/opt/freeswitch/conf/autoload_configs/db.conf.xml -/opt/freeswitch/conf/autoload_configs/dialplan_directory.conf.xml -/opt/freeswitch/conf/autoload_configs/dingaling.conf.xml -/opt/freeswitch/conf/autoload_configs/directory.conf.xml -/opt/freeswitch/conf/autoload_configs/easyroute.conf.xml -/opt/freeswitch/conf/autoload_configs/enum.conf.xml -/opt/freeswitch/conf/autoload_configs/event_multicast.conf.xml -/opt/freeswitch/conf/autoload_configs/event_socket.conf.xml -/opt/freeswitch/conf/autoload_configs/fax.conf.xml -/opt/freeswitch/conf/autoload_configs/fifo.conf.xml -/opt/freeswitch/conf/autoload_configs/ivr.conf.xml -/opt/freeswitch/conf/autoload_configs/java.conf.xml -/opt/freeswitch/conf/autoload_configs/lcr.conf.xml -/opt/freeswitch/conf/autoload_configs/local_stream.conf.xml -/opt/freeswitch/conf/autoload_configs/logfile.conf.xml -/opt/freeswitch/conf/autoload_configs/memcache.conf.xml -/opt/freeswitch/conf/autoload_configs/modules.conf.xml -/opt/freeswitch/conf/autoload_configs/mongo.conf.xml -/opt/freeswitch/conf/autoload_configs/nibblebill.conf.xml -/opt/freeswitch/conf/autoload_configs/opal.conf.xml -/opt/freeswitch/conf/autoload_configs/pocketsphinx.conf.xml -/opt/freeswitch/conf/autoload_configs/portaudio.conf.xml -/opt/freeswitch/conf/autoload_configs/post_load_modules.conf.xml -/opt/freeswitch/conf/autoload_configs/rss.conf.xml -/opt/freeswitch/conf/autoload_configs/shout.conf.xml -/opt/freeswitch/conf/autoload_configs/skinny.conf.xml -/opt/freeswitch/conf/autoload_configs/sofia.conf.xml -/opt/freeswitch/conf/autoload_configs/switch.conf.xml -/opt/freeswitch/conf/autoload_configs/syslog.conf.xml -/opt/freeswitch/conf/autoload_configs/timezones.conf.xml -/opt/freeswitch/conf/autoload_configs/tts_commandline.conf.xml -/opt/freeswitch/conf/autoload_configs/unicall.conf.xml -/opt/freeswitch/conf/autoload_configs/voicemail.conf.xml -/opt/freeswitch/conf/autoload_configs/xml_cdr.conf.xml -/opt/freeswitch/conf/autoload_configs/xml_curl.conf.xml -/opt/freeswitch/conf/autoload_configs/xml_rpc.conf.xml -/opt/freeswitch/conf/autoload_configs/zeroconf.conf.xml -/opt/freeswitch/conf/dialplan/default/00_pizza_demo.xml -/opt/freeswitch/conf/dialplan/default/01_example.com.xml -/opt/freeswitch/conf/dialplan/default.xml -/opt/freeswitch/conf/dialplan/features.xml -/opt/freeswitch/conf/dialplan/public/00_inbound_did.xml -/opt/freeswitch/conf/dialplan/public.xml -/opt/freeswitch/conf/dialplan/skinny-patterns/20-Demo.xml -/opt/freeswitch/conf/dialplan/skinny-patterns/99-Default_Drop.xml -/opt/freeswitch/conf/dialplan/skinny-patterns/20-Local_extension.xml -/opt/freeswitch/conf/dialplan/skinny-patterns/90-External.xml -/opt/freeswitch/conf/dialplan/skinny-patterns.xml -/opt/freeswitch/conf/directory/default/1000.xml -/opt/freeswitch/conf/directory/default/1001.xml -/opt/freeswitch/conf/directory/default/1002.xml -/opt/freeswitch/conf/directory/default/1003.xml -/opt/freeswitch/conf/directory/default/1004.xml -/opt/freeswitch/conf/directory/default/1005.xml -/opt/freeswitch/conf/directory/default/1006.xml -/opt/freeswitch/conf/directory/default/1007.xml -/opt/freeswitch/conf/directory/default/1008.xml -/opt/freeswitch/conf/directory/default/1009.xml -/opt/freeswitch/conf/directory/default/1010.xml -/opt/freeswitch/conf/directory/default/1011.xml -/opt/freeswitch/conf/directory/default/1012.xml -/opt/freeswitch/conf/directory/default/1013.xml -/opt/freeswitch/conf/directory/default/1014.xml -/opt/freeswitch/conf/directory/default/1015.xml -/opt/freeswitch/conf/directory/default/1016.xml -/opt/freeswitch/conf/directory/default/1017.xml -/opt/freeswitch/conf/directory/default/1018.xml -/opt/freeswitch/conf/directory/default/1019.xml -/opt/freeswitch/conf/directory/default/brian.xml -/opt/freeswitch/conf/directory/default/default.xml -/opt/freeswitch/conf/directory/default/example.com.xml -/opt/freeswitch/conf/directory/default/skinny-example.xml -/opt/freeswitch/conf/directory/default.xml -/opt/freeswitch/conf/extensions.conf -/opt/freeswitch/conf/freeswitch.xml -/opt/freeswitch/conf/fur_elise.ttml -/opt/freeswitch/conf/ivr_menus/demo_ivr.xml -/opt/freeswitch/conf/jingle_profiles/client.xml -/opt/freeswitch/conf/jingle_profiles/server.xml -/opt/freeswitch/conf/mime.types -/opt/freeswitch/conf/notify-voicemail.tpl -/opt/freeswitch/conf/sip_profiles/external/example.xml -/opt/freeswitch/conf/sip_profiles/external.xml -/opt/freeswitch/conf/sip_profiles/internal/example.xml -/opt/freeswitch/conf/sip_profiles/internal-ipv6.xml -/opt/freeswitch/conf/sip_profiles/internal.xml -/opt/freeswitch/conf/skinny_profiles/internal.xml -/opt/freeswitch/conf/tetris.ttml -/opt/freeswitch/conf/vars.xml -/opt/freeswitch/conf/voicemail.tpl -/opt/freeswitch/conf/web-vm.tpl diff --git a/debian/freeswitch.default b/debian/freeswitch.default deleted file mode 100644 index df94d7f0df..0000000000 --- a/debian/freeswitch.default +++ /dev/null @@ -1,11 +0,0 @@ -# Startup settings for FreeSWITCH - -# Enable initd (let init handle start and stop of freeswitch). -# Set to "true" (lowercase) to enable. - -FREESWITCH_ENABLED="false" - -# The parameters Freeswitch should be started with - -FREESWITCH_PARAMS="-nc" - diff --git a/debian/freeswitch.init b/debian/freeswitch.init deleted file mode 100755 index eaf1c36629..0000000000 --- a/debian/freeswitch.init +++ /dev/null @@ -1,184 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: freeswitch -# Required-Start: $network $local_fs $remote_fs -# Required-Stop: $network $local_fs $remote_fs -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: The FreeSWITCH Voice Switching System -# Description: An advanced platform for voice services -### END INIT INFO - -# Author: Anthony Minesalle II -# - -# Do NOT "set -e" - -# PATH should only include /usr/* if it runs after the mountnfs.sh script -PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/freeswitch/bin -DESC="FreeSWITCH Voice Switching System" -NAME=freeswitch -DAEMON=/opt/freeswitch/bin/$NAME -USER=freeswitch -PIDFILE=/opt/freeswitch/run/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME -WORKDIR=/opt/$NAME - -# Check if we are being executed by init - -CALLEDSCRIPT=`basename $0` - -if [ -r /etc/default/$NAME ]; then . /etc/default/$NAME; fi - -if [ "$FREESWITCH_ENABLED" != "true" ]; then - echo "$DESC not enabled yet. Edit /etc/default/$NAME first." - exit 0 ; -fi - -# Exit if the package is not installed -# [ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present -[ -r /etc/default/$NAME ] && . /etc/default/$NAME - -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. -. /lib/lsb/init-functions - -# -# Function that sets ulimit values for the daemon -# -do_setlimits() { - ulimit -c unlimited - ulimit -d unlimited - ulimit -f unlimited -# ulimit -i unlimited - ulimit -n 999999 -# ulimit -q unlimited -# ulimit -u unlimited - ulimit -v unlimited -# ulimit -x unlimited - ulimit -s 240 - ulimit -l unlimited - return 0 -} - -# -# Function that starts the daemon/service -# -do_start() -{ - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - start-stop-daemon -d $WORKDIR -c $USER --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ - || return 1 - do_setlimits - start-stop-daemon -d $WORKDIR -c $USER --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ - $FREESWITCH_PARAMS \ - || return 2 - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. -} - -# -# Function that stops the daemon/service -# -do_stop() -{ - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - $DAEMON -stop - start-stop-daemon -d $WORKDIR -c $USER --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME - RETVAL="$?" - [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. - start-stop-daemon -d $WORKDIR -c $USER --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON - [ "$?" = 2 ] && return 2 - # Many daemons don't delete their pidfiles when they exit. - rm -f $PIDFILE - return "$RETVAL" -} - -# -# Function that sends a SIGHUP to the daemon/service -# -do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # - start-stop-daemon -c $USER --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME - return 0 -} - -case "$1" in - start) - [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" - do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - stop) - [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" - do_stop - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; - esac - ;; - reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - log_daemon_msg "Reloading $DESC" "$NAME" - do_reload - log_end_msg $? - ;; - restart) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # - log_daemon_msg "Restarting $DESC" "$NAME" - do_stop - case "$?" in - 0|1) - do_start - case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start - esac - ;; - *) - # Failed to stop - log_end_msg 1 - ;; - esac - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - #echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 - exit 3 - ;; -esac - -: diff --git a/debian/freeswitch.install b/debian/freeswitch.install deleted file mode 100644 index a72200294f..0000000000 --- a/debian/freeswitch.install +++ /dev/null @@ -1,171 +0,0 @@ -opt/freeswitch/bin/freeswitch -opt/freeswitch/bin/fs_cli -opt/freeswitch/bin/fs_encode -opt/freeswitch/bin/fs_ivrd -opt/freeswitch/bin/fsxs -opt/freeswitch/bin/gentls_cert -opt/freeswitch/conf/autoload_configs/acl.conf.xml -opt/freeswitch/conf/autoload_configs/alsa.conf.xml -opt/freeswitch/conf/autoload_configs/callcenter.conf.xml -opt/freeswitch/conf/autoload_configs/cdr_csv.conf.xml -opt/freeswitch/conf/autoload_configs/cidlookup.conf.xml -opt/freeswitch/conf/autoload_configs/conference.conf.xml -opt/freeswitch/conf/autoload_configs/console.conf.xml -opt/freeswitch/conf/autoload_configs/db.conf.xml -opt/freeswitch/conf/autoload_configs/dialplan_directory.conf.xml -opt/freeswitch/conf/autoload_configs/dingaling.conf.xml -opt/freeswitch/conf/autoload_configs/directory.conf.xml -opt/freeswitch/conf/autoload_configs/easyroute.conf.xml -opt/freeswitch/conf/autoload_configs/enum.conf.xml -opt/freeswitch/conf/autoload_configs/event_multicast.conf.xml -opt/freeswitch/conf/autoload_configs/event_socket.conf.xml -opt/freeswitch/conf/autoload_configs/fax.conf.xml -opt/freeswitch/conf/autoload_configs/spandsp.conf.xml -opt/freeswitch/conf/autoload_configs/fifo.conf.xml -opt/freeswitch/conf/autoload_configs/ivr.conf.xml -opt/freeswitch/conf/autoload_configs/java.conf.xml -opt/freeswitch/conf/autoload_configs/lcr.conf.xml -opt/freeswitch/conf/autoload_configs/local_stream.conf.xml -opt/freeswitch/conf/autoload_configs/logfile.conf.xml -opt/freeswitch/conf/autoload_configs/memcache.conf.xml -opt/freeswitch/conf/autoload_configs/modules.conf.xml -opt/freeswitch/conf/autoload_configs/mongo.conf.xml -opt/freeswitch/conf/autoload_configs/nibblebill.conf.xml -opt/freeswitch/conf/autoload_configs/opal.conf.xml -opt/freeswitch/conf/autoload_configs/pocketsphinx.conf.xml -opt/freeswitch/conf/autoload_configs/portaudio.conf.xml -opt/freeswitch/conf/autoload_configs/post_load_modules.conf.xml -opt/freeswitch/conf/autoload_configs/rss.conf.xml -opt/freeswitch/conf/autoload_configs/shout.conf.xml -opt/freeswitch/conf/autoload_configs/skinny.conf.xml -opt/freeswitch/conf/autoload_configs/sofia.conf.xml -opt/freeswitch/conf/autoload_configs/switch.conf.xml -opt/freeswitch/conf/autoload_configs/syslog.conf.xml -opt/freeswitch/conf/autoload_configs/timezones.conf.xml -opt/freeswitch/conf/autoload_configs/tts_commandline.conf.xml -opt/freeswitch/conf/autoload_configs/unicall.conf.xml -opt/freeswitch/conf/autoload_configs/voicemail.conf.xml -opt/freeswitch/conf/autoload_configs/xml_cdr.conf.xml -opt/freeswitch/conf/autoload_configs/xml_curl.conf.xml -opt/freeswitch/conf/autoload_configs/xml_rpc.conf.xml -opt/freeswitch/conf/autoload_configs/zeroconf.conf.xml -opt/freeswitch/conf/dialplan/default/00_pizza_demo.xml -opt/freeswitch/conf/dialplan/default/01_example.com.xml -opt/freeswitch/conf/dialplan/default.xml -opt/freeswitch/conf/dialplan/features.xml -opt/freeswitch/conf/dialplan/public/00_inbound_did.xml -opt/freeswitch/conf/dialplan/public.xml -opt/freeswitch/conf/dialplan/skinny-patterns/20-Demo.xml -opt/freeswitch/conf/dialplan/skinny-patterns/99-Default_Drop.xml -opt/freeswitch/conf/dialplan/skinny-patterns/20-Local_extension.xml -opt/freeswitch/conf/dialplan/skinny-patterns/90-External.xml -opt/freeswitch/conf/dialplan/skinny-patterns.xml -opt/freeswitch/conf/directory/default/1000.xml -opt/freeswitch/conf/directory/default/1001.xml -opt/freeswitch/conf/directory/default/1002.xml -opt/freeswitch/conf/directory/default/1003.xml -opt/freeswitch/conf/directory/default/1004.xml -opt/freeswitch/conf/directory/default/1005.xml -opt/freeswitch/conf/directory/default/1006.xml -opt/freeswitch/conf/directory/default/1007.xml -opt/freeswitch/conf/directory/default/1008.xml -opt/freeswitch/conf/directory/default/1009.xml -opt/freeswitch/conf/directory/default/1010.xml -opt/freeswitch/conf/directory/default/1011.xml -opt/freeswitch/conf/directory/default/1012.xml -opt/freeswitch/conf/directory/default/1013.xml -opt/freeswitch/conf/directory/default/1014.xml -opt/freeswitch/conf/directory/default/1015.xml -opt/freeswitch/conf/directory/default/1016.xml -opt/freeswitch/conf/directory/default/1017.xml -opt/freeswitch/conf/directory/default/1018.xml -opt/freeswitch/conf/directory/default/1019.xml -opt/freeswitch/conf/directory/default/brian.xml -opt/freeswitch/conf/directory/default/default.xml -opt/freeswitch/conf/directory/default/example.com.xml -opt/freeswitch/conf/directory/default/skinny-example.xml -opt/freeswitch/conf/directory/default.xml -opt/freeswitch/conf/extensions.conf -opt/freeswitch/conf/freeswitch.xml -opt/freeswitch/conf/fur_elise.ttml -opt/freeswitch/conf/ivr_menus/demo_ivr.xml -opt/freeswitch/conf/jingle_profiles/client.xml -opt/freeswitch/conf/jingle_profiles/server.xml -opt/freeswitch/conf/mime.types -opt/freeswitch/conf/notify-voicemail.tpl -opt/freeswitch/conf/sip_profiles/external/example.xml -opt/freeswitch/conf/sip_profiles/external.xml -opt/freeswitch/conf/sip_profiles/internal/example.xml -opt/freeswitch/conf/sip_profiles/internal-ipv6.xml -opt/freeswitch/conf/sip_profiles/internal.xml -opt/freeswitch/conf/skinny_profiles/internal.xml -opt/freeswitch/conf/tetris.ttml -opt/freeswitch/conf/vars.xml -opt/freeswitch/conf/voicemail.tpl -opt/freeswitch/conf/web-vm.tpl -opt/freeswitch/htdocs/* -opt/freeswitch/lib/libfreeswitch*.so* -opt/freeswitch/mod/mod_avmd.so* -opt/freeswitch/mod/mod_bv.so* -opt/freeswitch/mod/mod_callcenter.so* -opt/freeswitch/mod/mod_cdr_csv.so* -opt/freeswitch/mod/mod_celt.so* -opt/freeswitch/mod/mod_cidlookup.so* -opt/freeswitch/mod/mod_cluechoo.so* -opt/freeswitch/mod/mod_console.so* -opt/freeswitch/mod/mod_codec2.so* -opt/freeswitch/mod/mod_commands.so* -opt/freeswitch/mod/mod_conference.so* -opt/freeswitch/mod/mod_console.so* -opt/freeswitch/mod/mod_curl.so* -opt/freeswitch/mod/mod_db.so* -opt/freeswitch/mod/mod_dialplan*.so* -opt/freeswitch/mod/mod_dingaling.so* -opt/freeswitch/mod/mod_directory.so* -opt/freeswitch/mod/mod_distributor.so* -opt/freeswitch/mod/mod_dptools.so* -opt/freeswitch/mod/mod_easyroute.so* -opt/freeswitch/mod/mod_enum.so* -opt/freeswitch/mod/mod_esf.so* -opt/freeswitch/mod/mod_event_*.so* -opt/freeswitch/mod/mod_expr.so* -opt/freeswitch/mod/mod_fifo.so* -opt/freeswitch/mod/mod_flite.so* -opt/freeswitch/mod/mod_fsv.so* -opt/freeswitch/mod/mod_hash.so* -opt/freeswitch/mod/mod_h26x.so* -opt/freeswitch/mod/mod_ilbc.so* -opt/freeswitch/mod/mod_lcr.so* -opt/freeswitch/mod/mod_limit.so* -opt/freeswitch/mod/mod_local_stream.so* -opt/freeswitch/mod/mod_logfile.so* -opt/freeswitch/mod/mod_loopback.so* -opt/freeswitch/mod/mod_memcache.so* -opt/freeswitch/mod/mod_mp4v.so* -opt/freeswitch/mod/mod_native_file.so* -opt/freeswitch/mod/mod_nibblebill.so* -opt/freeswitch/mod/mod_portaudio.so* -opt/freeswitch/mod/mod_portaudio_stream.so* -opt/freeswitch/mod/mod_redis.so* -opt/freeswitch/mod/mod_rss.so* -opt/freeswitch/mod/mod_shout.so* -opt/freeswitch/mod/mod_silk.so* -opt/freeswitch/mod/mod_siren.so* -opt/freeswitch/mod/mod_skinny.so* -opt/freeswitch/mod/mod_skypopen.so* -opt/freeswitch/mod/mod_sndfile.so* -opt/freeswitch/mod/mod_snom.so* -opt/freeswitch/mod/mod_cdr_sqlite.so* -opt/freeswitch/mod/mod_sofia.so* -opt/freeswitch/mod/mod_spandsp.so* -opt/freeswitch/mod/mod_speex.so* -opt/freeswitch/mod/mod_spy.so* -opt/freeswitch/mod/mod_syslog.so* -opt/freeswitch/mod/mod_theora.so* -opt/freeswitch/mod/mod_timerfd.so* -opt/freeswitch/mod/mod_tone_stream.so* -opt/freeswitch/mod/mod_tts_commandline.so* -opt/freeswitch/mod/mod_valet_parking.so* -opt/freeswitch/mod/mod_vmd.so* -opt/freeswitch/mod/mod_voicemail.so* -opt/freeswitch/mod/mod_xml_*.so* diff --git a/debian/man/man1/freeswitch.1 b/debian/man/man1/freeswitch.1 deleted file mode 100644 index 7c5ff70485..0000000000 --- a/debian/man/man1/freeswitch.1 +++ /dev/null @@ -1,22 +0,0 @@ -.TH "FREESWITCH" "1" "October 10, 2007" "" "" -.nh -.ad l -.SH "NAME" -freeswitch \- Open Source telephony platform -.SH "SYNOPSIS" -.HP 7 -\fBfreeswitch\fR [\fIoption\fR...] -.SH "DESCRIPTION" -.PP -This manual page documents briefly the -\fBfreeswitch\fR -command. -.PP -This manual page was written for the -Debian -distribution because we're too lame to write a real manual page. But we have a superb website over here: -.UR http://www.freeswitch.org/ -.BR http://www.freeswitch.org/ -.SH "SEE ALSO" -.PP -\fBundocumented\fR(7). diff --git a/debian/monit/freeswitch.monitrc b/debian/monit/freeswitch.monitrc deleted file mode 100644 index 4c9ae8f6de..0000000000 --- a/debian/monit/freeswitch.monitrc +++ /dev/null @@ -1,25 +0,0 @@ - check process freeswitch with pidfile /opt/freeswitch/run/freeswitch.pid - group voice - start program = "/etc/init.d/freeswitch start" - stop program = "/etc/init.d/freeswitch stop" -# Checks sip port on localhost, not wlways suitable -# if failed port 5060 type UDP then restart -# Checks mod_event_socket on localhost. Maybe more suitable - if failed port 8021 type TCP then restart - if 5 restarts within 5 cycles then timeout - depends on freeswitch_bin - depends on freeswitch_rc - - check file freeswitch_bin with path /opt/freeswitch/bin/freeswitch - group voice - if failed checksum then unmonitor - if failed permission 750 then unmonitor - if failed uid freeswitch then unmonitor -# if failed gid daemon then unmonitor - - check file freeswitch_rc with path /etc/init.d/freeswitch - group voice - if failed checksum then unmonitor - if failed permission 755 then unmonitor - if failed uid root then unmonitor - if failed gid root then unmonitor diff --git a/debian/postinst b/debian/postinst deleted file mode 100755 index 696171eb5a..0000000000 --- a/debian/postinst +++ /dev/null @@ -1,60 +0,0 @@ -#! /bin/sh -# set -e - -# summary of how this script can be called: -# * `configure' -# * `abort-upgrade' -# * `abort-remove' `in-favour' -# -# * `abort-deconfigure' `in-favour' -# `removing' -# -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package -# -# quoting from the policy: -# Any necessary prompting should almost always be confined to the -# post-installation script, and should be protected with a conditional -# so that unnecessary prompting doesn't happen if a package's -# installation fails and the `postinst' is called with `abort-upgrade', -# `abort-remove' or `abort-deconfigure'. - -case "$1" in - configure) - if ! getent passwd freeswitch >/dev/null; then - adduser --disabled-password --quiet --system \ - --home /opt/freeswitch \ - --gecos "FreeSWITCH Voice Platform" --ingroup daemon \ - freeswitch - adduser freeswitch audio - else - if [ "$(getent passwd freeswitch | cut -d : -f 6)" != "/opt/freeswitch" ]; then - echo "Error: pre-existing freeswitch user with non-standard home directory." >&2 - exit 1 - fi - usermod -d /opt/freeswitch -c "FreeSWITCH daemon,,," \ - -g daemon -G audio freeswitch - fi - - mkdir -p /opt/freeswitch - chown -R freeswitch:daemon /opt/freeswitch/ - chmod -R o-rwx /opt/freeswitch/ - - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - -#DEBHELPER# - -exit 0 diff --git a/debian/postrm b/debian/postrm deleted file mode 100755 index 97718dfacd..0000000000 --- a/debian/postrm +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# postrm script for freeswitch -# -# see: dh_installdeb(1) - -# set -e - -# summary of how this script can be called: -# * `remove' -# * `purge' -# * `upgrade' -# * `failed-upgrade' -# * `abort-install' -# * `abort-install' -# * `abort-upgrade' -# * `disappear' overwrit>r> -# for details, see http://www.debian.org/doc/debian-policy/ or -# the debian-policy package - - -case "$1" in - purge) - rm -Rf /etc/opt/freeswitch - rm -Rf /opt/freeswitch - userdel freeswitch - ;; - - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - - - ;; - - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 1 - -esac - -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - -#DEBHELPER# - -exit 0 diff --git a/debian/rules b/debian/rules deleted file mode 100755 index 044815a0fa..0000000000 --- a/debian/rules +++ /dev/null @@ -1,236 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -export DH_VERBOSE=1 -export DH_OPTIONS -export DEB_DH_INSTALL_SOURCEDIR=debian/tmp -export PASSTHRU_CODEC_MODULES=codecs/mod_g729 codecs/mod_g723_1 codecs/mod_amr codecs/mod_amrwb -# Modules listed by those built by default, then those that are added in this package -export APPLICATION_MODULES_AE= applications/mod_avmd applications/mod_callcenter applications/mod_cidlookup applications/mod_cluechoo \ - applications/mod_commands applications/mod_conference applications/mod_curl applications/mod_db applications/mod_directory \ - applications/mod_distributor applications/mod_dptools applications/mod_easyroute applications/mod_enum \ - applications/mod_esf applications/mod_expr -export APPLICATION_MODULES_FM= applications/mod_fifo applications/mod_fsv applications/mod_hash applications/mod_lcr applications/mod_limit \ - applications/mod_memcache -export APPLICATION_MODULES_NY= applications/mod_nibblebill applications/mod_redis applications/mod_rss applications/mod_snom \ - applications/mod_spandsp applications/mod_spy applications/mod_stress \ - applications/mod_valet_parking applications/mod_vmd applications/mod_voicemail - -export APPLICATIONS_MODULES= $(APPLICATION_MODULES_AE) $(APPLICATION_MODULES_FM) $(APPLICATION_MODULES_NY) $(APPLICATION_MODULES_VZ) -export ASR_TTS_MODULES= asr_tts/mod_pocketsphinx asr_tts/mod_flite asr_tts/mod_tts_commandline -export CODECS_MODULES= codecs/mod_bv codecs/mod_h26x codecs/mod_speex codecs/mod_celt codecs/mod_codec2 codecs/mod_ilbc codecs/mod_mp4v \ - codecs/mod_silk codecs/mod_siren codecs/mod_theora -export DIALPLANS_MODULES= dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml -export ENDPOINTS_MODULES= endpoints/mod_dingaling endpoints/mod_portaudio endpoints/mod_sofia endpoints/mod_loopback \ - ../../libs/freetdm/mod_freetdm endpoints/mod_skypopen endpoints/mod_skinny -export EVENT_HANDLERS_MODULES=event_handlers/mod_event_multicast event_handlers/mod_event_socket event_handlers/mod_cdr_csv event_handlers/mod_cdr_sqlite -export FORMATS_MODULES= formats/mod_local_stream formats/mod_native_file formats/mod_portaudio_stream \ - formats/mod_shout formats/mod_sndfile formats/mod_tone_stream -export LANGUAGES_MODULES=languages/mod_spidermonkey languages/mod_perl languages/mod_lua languages/mod_python -export LOGGERS_MODULES=loggers/mod_console loggers/mod_logfile loggers/mod_syslog -export SAY_MODULES=say/mod_say_en say/mod_say_it say/mod_say_de say/mod_say_fr say/mod_say_es say/mod_say_nl say/mod_say_ru say/mod_say_he -export XML_INT_MODULES=xml_int/mod_xml_rpc xml_int/mod_xml_curl xml_int/mod_xml_cdr -export TIMER_MODULES=timers/mod_timerfd - -export MYMODULES= $(PASSTHRU_CODEC_MODULES) $(APPLICATIONS_MODULES) $(ASR_TTS_MODULES) $(CODECS_MODULES) $(DIALPLANS_MODULES) $(ENDPOINTS_MODULES) $(EVENT_HANDLERS_MODULES) $(FORMATS_MODULES) $(LANGUAGES_MODULES) $(LOGGERS_MODULES) $(SAY_MODULES) $(XML_INT_MODULES) $(TIMER_MODULES) -export MODULES=$(MYMODULES) - - - -ifndef AUTOCONF - AUTOCONFS := $(wildcard /usr/bin/autoconf*) - AUTOCONF = $(shell which autoconf) -ifneq (,$(findstring 2.50,${AUTOCONFS})) - AUTOCONF = /usr/bin/autoconf2.50 -endif -endif - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -CFLAGS = -ggdb -MOD_CFLAGS = -ggdb - -FEATURES = --enable-core-libedit-support --enable-core-odbc-support --with-libcurl --with-openssl - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - FEATURES += --disable-optimization -endif - -.pc/applied-patches: - @echo - @echo \ \ Sorry, currently this package cannot be built directly from upstream - @echo \ \ source git/tarball: patches are needed for policy compliance, and the - @echo \ \ "new 3.0 (quilt) source format requires patches to be already applied." - @echo - @echo \ \ Please first convert this tree by running: - @echo -e \\t./debian/rules upstream-convert - @echo - @echo \ \ Note that this will insert an entry in debian/changelog, rename the - @echo \ \ current directory to the version number there, create a .orig.tar.bz2 - @echo \ \ archive and apply all the patches in debian/patches/series. - @echo - @echo \ \ Using git-buildpackage is not recommended for now. - @echo - @exit 1 - -upstream-convert: - @dh_testdir - @test -s .pc/applied-patches && \ - echo "Aborted: patches are already applied." && \ - exit 1 || exit 0 - # update (or not) version number in debian/changelog - @set -e ; \ - echo Checking version number ; \ - v1="$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: //')" ; \ - v2="$${v1}" ; \ - echo " Current version: $${v1}" ; \ - if [ "$$(which git)" = "" -o ! -d .git ] ; then \ - echo Git not available. Keeping current version number. ; \ - exit 0 ; \ - fi ; \ - if [ "$$(which debchange)" = "" ] ; then \ - echo debchange not available. Keeping current version number. ; \ - exit 0 ; \ - fi ; \ - if echo -n "$${v1}" | grep -q '~git\.[a-z0-9]\+\.20[0-9]\{6\}\.[0-9]\+-[^-]\+$$' ; then \ - maj1="$$(echo -n "$${v1}" | sed -e 's/^\([^.]\+\)\..*$$/\1/')" ; \ - min1="$$(echo -n "$${v1}" | sed -e 's/^[^.]\+\.\([^.]\+\)\..*$$/\1/')" ; \ - mic1="$$(echo -n "$${v1}" | sed -e 's/^[^.]\+\.[^.]\+\.\([a-zA-Z0-9]\+\).*$$/\1/')" ; \ - b1="$$(echo -n "$${v1}" | sed -e 's/^.*~git\.\([a-z0-9]\+\)\.\(20[0-9]\{6\}\)\.[0-9]\+-[^-]\+$$/\1/')" ; \ - d1="$$(echo -n "$${v1}" | sed -e 's/^.*\.\(20[0-9]\{6\}\)\.[0-9]\+-[^-]\+$$/\1/')" ; \ - n1="$$(echo -n "$${v1}" | sed -e 's/^.*\.20[0-9]\{6\}\.\([0-9]\+\)-[^-]\+$$/\1/')" ; \ - maj2="$$(sed -e '/^AC_SUBST(SWITCH_VERSION_MAJOR/ ! d' -e 's/^.*\[\([^\[]\+\)\][^\]]*$$/\1/' configure.in)" ; \ - min2="$$(sed -e '/^AC_SUBST(SWITCH_VERSION_MINOR/ ! d' -e 's/^.*\[\([^\[]\+\)\][^\]]*$$/\1/' configure.in)" ; \ - mic2="$$(sed -e '/^AC_SUBST(SWITCH_VERSION_MICRO/ ! d' -e 's/^.*\[\([^\[]\+\)\][^\]]*$$/\1/' configure.in)" ; \ - b2="$$(git branch | sed -e '/^[^*]/ d' -e 's/* \(.*\)/\1/')" ; \ - d2="$$(TZ=UTC git log --date=local -1 --format='%ai' | sed -e 's/^\(....\).\(..\).\(..\).*$$/\1\2\3/')" ; \ - n2="$$(TZ=UTC git log --date=local --format=oneline --since="$${d2::4}-$${d2:4:2}-$${d2:6:2} 00:00" | wc -l)" ; \ - if [ "$${b2}" != "$$(echo "$${b2}" | tr -dc a-z0-9)" ] ; then \ - echo Invalid branch name "'$${b2}'". Aborted. ; \ - exit 1; \ - fi ; \ - if [ "$${b1}.$${d1}.$${n1}" != "$${b2}.$${d2}.$${n2}" \ - -o "$${maj1}.$${min1}.$${mic1}" != "$${maj2}.$${min2}.$${mic2}" ] ; then \ - v2="$$(echo -n "$${maj2}.$${min2}.$${mic2}")" ; \ - v2="$${v2}$$(echo -n "$${v1}" | sed -e 's/^[^.]\+\.[^.]\+\.[^.]\+\(.*\)~git\..*$$/\1/')" ; \ - v2="$${v2}~git.$${b2}.$${d2}.$${n2}-1" ; \ - echo " New version: $${v2}" ; \ - echo Updating debian/changelog with new version number ; \ - debchange -v "$${v2}" "New upstream release" ; \ - else \ - echo Version number already correct, no change. ; \ - fi ; \ - else \ - echo 'Not a ~git. version number. Keeping current version number.' ; \ - fi - # rename (or not) current directory to match packagename-version.number - @set -e ; \ - echo Checking directory name ; \ - d1="$$(basename "$$(cd . && echo "$$PWD")")" ; \ - d2="$$(dpkg-parsechangelog | sed -e '/^Source: / ! d' -e 's/^Source: //')" ; \ - d2="$${d2}-$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: \(.*\)-[^-]\+$$/\1/')" ; \ - if [ "$${d1}" != "$${d2}" ] ; then \ - if [ -e "../$${d2}" ] ; then \ - test . -ef "../$${d2}" && exit 0 ; \ - echo Aborted: directory "../$${d2}" already exists. ; \ - exit 1 ; \ - fi ; \ - echo Renaming current directory to "$${d2}" ; \ - mv ../$${d1} ../$${d2} ; \ - fi - # create .orig.tar.bz2 - @set -e ; \ - n="$$(dpkg-parsechangelog | sed -e '/^Source: / ! d' -e 's/^Source: //')" ; \ - d="$${n}-$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: \(.*\)-[^-]\+$$/\1/')" ; \ - n="$${n}_$$(dpkg-parsechangelog | sed -e '/^Version: / ! d' -e 's/^Version: \(.*\)-[^-]\+$$/\1/').orig.tar.bz2" ; \ - echo "Creating source archive $${n}" ; \ - cd .. && tar cjf "$${n}" --exclude='.git*' "$${d}" - # apply patches - @set -e ; \ - echo "Applying patches in debian/patches/series" ; \ - QUILT_PATCHES=debian/patches ; \ - export QUILT_PATCHES ; \ - while quilt next ; do \ - quilt push -v ; \ - quilt refresh ; \ - done - # remind user to change dir - @echo Done. - @echo - @if [ "$(CURDIR)" != "$$PWD" ] ; then \ - echo \ \ You should now tell your shell to update its current working directory: ; \ - echo -e \\t'cd $$(pwd)' ; \ - echo \ \ or ; \ - echo -e "\\tcd $$PWD" ; \ - echo ; \ - fi - - -config.status: configure - dh_testdir - rm -f modules.conf - touch modules.conf - echo $(MODULES) - for i in $(MODULES); do echo $$i >> modules.conf; done - ./configure --prefix=/opt/freeswitch --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ${FEATURES} - -build: build-arch build-indep -build-arch: build-stamp -build-indep: build-stamp -build-stamp: config.status - dh_testdir - - $(MAKE) - cd libs/esl && $(MAKE) pymod && cd - - touch $@ - -clean: # .pc/applied-patches - dh_testdir - dh_testroot - rm -f build-stamp - - [ ! -f Makefile ] || $(MAKE) distclean - rm -f config.status - rm -f */*/config.status - rm -f */*/*/config.status - dh_clean - -install: build - dh_testdir - dh_testroot - dh_prep - dh_installdirs -A - - VERBOSE=1 $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install - cd libs/esl && VERBOSE=1 $(MAKE) DESTDIR=$(CURDIR)/debian/tmp pymod-install && cd - - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs - dh_installchangelogs - dh_installinit - cp debian/monit/freeswitch.monitrc debian/freeswitch/etc/monit/freeswitch.monitrc - dh_install --sourcedir=debian/tmp - dh_link - dh_strip --dbg-package=freeswitch-dbg - dh_compress - dh_fixperms --exclude /opt/freeswitch/conf - dh_makeshlibs - dh_shlibdeps - dh_installdeb - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/buildsounds.sh b/debian/sounds/freeswitch-sounds-en-us-callie/debian/buildsounds.sh deleted file mode 100755 index 06099e6c5e..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/buildsounds.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -sounds_location=$1 -for rate in 32000 16000 8000 -do - for i in ascii base256 conference currency digits ivr misc phonetic-ascii time voicemail zrtp - do - mkdir -p $sounds_location/$i/$rate - for f in `find $sounds_location/$i/48000 -name \*.wav` - do - echo "generating" $sounds_location/$i/$rate/`basename $f` - sox $f -r $rate $sounds_location/$i/$rate/`basename $f` - done - done -done diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/changelog b/debian/sounds/freeswitch-sounds-en-us-callie/debian/changelog deleted file mode 100644 index 9bb038ae96..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/changelog +++ /dev/null @@ -1,20 +0,0 @@ -freeswitch-sounds-en-us-callie (1.0.14~git.master.20101222.1-1) unstable; urgency=low - - * Bumped up to 1.0.14 version - * Clean ups - - -- Michal Bielicki Wed, 22 Dec 2010 22:55:02 +0200 - -freeswitch-sounds-en-us-callie (1.0.head~git.master.20101014.1-1) unstable; urgency=low - - * Change upstream package version numbering scheme for unreleased versions: new format is major.minor.micro~git.branch.date.commits-1 - * Change source format to 3.0 (quilt). - * Upgrade debhelper compatibility to version 7. - - -- Michal Bielicki Fri, 14 Oct 2010 05:05:02 +0200 - -freeswitch-sounds-en-us-callie (1.0.12-0ubuntu1) jaunty; urgency=low - - * Initial: This is the initial working build of the en-us-callie sounds - - -- William King Sun, 20 Sep 2009 06:56:46 -0700 diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/control b/debian/sounds/freeswitch-sounds-en-us-callie/debian/control deleted file mode 100644 index 3408328ca1..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/control +++ /dev/null @@ -1,66 +0,0 @@ -Source: freeswitch-sounds-en-us-callie -Maintainer: Freeswitch Debian Team -Section: net -Priority: extra -Build-Depends: debhelper (>= 7), sox -Homepage: http://www.freeswitch.org/ -Standards-Version: 3.8.4 - -Package: freeswitch-sounds-en-us-callie-8000 -Architecture: all -Conflicts: freeswitch-sounds-en-us-callie -Description: English language sounds for the FreeSWITCH(TM) (8000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-en-us-callie-16000 -Architecture: all -Conflicts: freeswitch-sounds-en-us-callie -Description: English language sounds for the FreeSWITCH(TM) (16000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-en-us-callie-32000 -Architecture: all -Conflicts: freeswitch-sounds-en-us-callie -Description: English language sounds for FreeSWITCH(TM) (32000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-en-us-callie-48000 -Architecture: all -Description: English language sounds for the FreeSWITCH(TM) (48000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-en-us-callie -Architecture: all -Depends: sox, freeswitch-sounds-en-us-callie-48000 -Conflicts: freeswitch-sounds-en-us-callie-omega, - freeswitch-sounds-en-us-callie-8000, freeswitch-sounds-en-us-callie-16000, - freeswitch-sounds-en-us-callie-32000 -Description: English language files for FreeSWITCH(TM) - This package generates the 8k, 16k, and 32k from the installed 48k - sounds. You can select which ones you want. - -Package: freeswitch-sounds-en-us-callie-omega -Architecture: all -Depends: freeswitch-sounds-en-us-callie-48000, - freeswitch-sounds-en-us-callie-32000, freeswitch-sounds-en-us-callie-16000, - freeswitch-sounds-en-us-callie-8000 -Conflicts: freeswitch-sounds-en-us-callie -Description: English language files for FreeSWITCH(TM) - This package depends on the pregenerated 8khz, 16khz, 32khz, and 48khz sounds - which are downloaded from binary data files. diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/copyright b/debian/sounds/freeswitch-sounds-en-us-callie/debian/copyright deleted file mode 100644 index 0d313323ce..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/copyright +++ /dev/null @@ -1 +0,0 @@ -These files are licensed under the terms of the creative commons Attribution 3.0 license: http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-16000.install b/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-16000.install deleted file mode 100644 index 47c795c0f0..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-16000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/en/us/callie/*/16000/* - diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-32000.install b/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-32000.install deleted file mode 100644 index 05538a76c2..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-32000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/en/us/callie/*/32000/* - diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-48000.install b/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-48000.install deleted file mode 100644 index c796070976..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-48000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/en/us/callie/*/48000/* - diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-8000.install b/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-8000.install deleted file mode 100644 index 90e6afa388..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/freeswitch-sounds-en-us-callie-8000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/en/us/callie/*/8000/* - diff --git a/debian/sounds/freeswitch-sounds-en-us-callie/debian/rules b/debian/sounds/freeswitch-sounds-en-us-callie/debian/rules deleted file mode 100755 index a5b4f9ba15..0000000000 --- a/debian/sounds/freeswitch-sounds-en-us-callie/debian/rules +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# This file is public domain software, originally written by Joey Hess. - -# Uncomment this to turn on verbose mode. - export DH_VERBOSE=1 -export DH_OPTIONS -export DH_COMPAT=4 -export DEB_DH_INSTALL_SOURCEDIR=debian/tmp - - -build: - dh_testdir - mkdir -p debian/tmp/opt/freeswitch/sounds - cp -a en debian/tmp/opt/freeswitch/sounds/ - ./debian/buildsounds.sh debian/tmp/opt/freeswitch/sounds/en/us/callie -clean: - dh_testdir - dh_testroot - dh_clean -k - rm -f build-stamp - rm -Rf debian/tmp - -install: - dh_testdir - dh_testroot - dh_installdirs -A --sourcedir=debian/tmp - dh_install --sourcedir=debian/tmp - -# Build architecture-independent files here. -binary-indep: build install - dh_compress - dh_installdeb - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep -.PHONY: build clean binary-indep binary install diff --git a/debian/sounds/freeswitch-sounds-music/debian/buildsounds.sh b/debian/sounds/freeswitch-sounds-music/debian/buildsounds.sh deleted file mode 100755 index 5cdf9dc384..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/buildsounds.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -sounds_location=$1 -for rate in 32000 16000 8000 -do - mkdir -p $sounds_location/$rate - for f in `find $sounds_location/48000 -name \*.wav` - do - echo "generating" $sounds_location/$rate/`basename $f` - sox $f -r $rate $sounds_location/$rate/`basename $f` - done -done diff --git a/debian/sounds/freeswitch-sounds-music/debian/changelog b/debian/sounds/freeswitch-sounds-music/debian/changelog deleted file mode 100644 index c5c52da460..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/changelog +++ /dev/null @@ -1,26 +0,0 @@ -freeswitch-sounds-music (1.0.8~git.master.20101222.1-1) unstable; urgency=low - - * Clean ups - - -- Michal Bielicki Wed, 22 Dec 2010 22:55:02 +0200 - -freeswitch-sounds-music (1.0.head-git.master,20101014.1-1) unstable; urgency=low - - * Change upstream package version numbering scheme for unreleased versions: - new format is major.minor.micro~git.branch.date.commits-1 - * Change source format to 3.0 (quilt). - * Upgrade debhelper compatibility to version 7. - - -- Michal Bielicki Fri, 14 Oct 2010 05:05:02 +0200 - -freeswitch-sounds-music (1.0.8-0ubuntu3) jaunty; urgency=low - - * Fixed: empty binary files for some packages - - -- William King Thu, 24 Sep 2009 15:54:17 -0700 - -freeswitch-sounds-music (1.0.8-0ubuntu2) jaunty; urgency=low - - * Initial: This is the initial working build of the music on hold - - -- William King Sun, 20 Sep 2009 08:28:48 -0700 diff --git a/debian/sounds/freeswitch-sounds-music/debian/control b/debian/sounds/freeswitch-sounds-music/debian/control deleted file mode 100644 index 20cfd5e3df..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/control +++ /dev/null @@ -1,66 +0,0 @@ -Source: freeswitch-sounds-music -Maintainer: Freeswitch development Team -Section: net -Priority: extra -Build-Depends: debhelper (>= 7), sox -Homepage: http://www.freeswitch.org/ -Standards-Version: 3.8.4 - -Package: freeswitch-sounds-music-8000 -Architecture: all -Conflicts: freeswitch-sounds-music -Description: music for FreeSWITCH(TM) (8000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-music-16000 -Architecture: all -Conflicts: freeswitch-sounds-music -Description: music for FreeSWITCH(TM) (16000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-music-32000 -Architecture: all -Conflicts: freeswitch-sounds-music -Description: music for FreeSWITCH(TM) (32000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-music-48000 -Architecture: all -Description: music for FreeSWITCH(TM) (48000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-music -Architecture: all -Depends: sox, freeswitch-sounds-music-48000 -Conflicts: freeswitch-sounds-music-omega, - freeswitch-sounds-music-8000, freeswitch-sounds-music-16000, - freeswitch-sounds-music-32000 -Description: Music for FreeSWITCH(TM) - This package generates the 8k, 16k, and 32k from the installed 48k - sounds. You can select which ones you want. - -Package: freeswitch-sounds-music-omega -Architecture: all -Depends: freeswitch-sounds-music-48000, - freeswitch-sounds-music-32000, freeswitch-sounds-music-16000, - freeswitch-sounds-music-8000 -Conflicts: freeswitch-sounds-music -Description: Music for FreeSWITCH(TM) - This package depends on the pregenerated 8khz, 16khz, 32khz, and 48khz sounds - which are downloaded from binary data files. diff --git a/debian/sounds/freeswitch-sounds-music/debian/copyright b/debian/sounds/freeswitch-sounds-music/debian/copyright deleted file mode 100644 index b213deb31c..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/copyright +++ /dev/null @@ -1,13 +0,0 @@ -MUSOPEN - -Musopen is an online music library of copyright free music (public domain music). -We want to give the world access to music, without the legal hassles so common today. -There is a great deal of music that has expired copyrights, but almost no recordings -of this music is in the public domain. We aim to record or obtain recordings that -have no copyrights so that our visitors may listen, re-use, or in any way enjoy music. - -Put simply, our mission is to set music free. - -Musopen is a U.S. registered 501(c)(3) tax-deductible nonprofit charity. - -http://www.musopen.com diff --git a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-16000.install b/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-16000.install deleted file mode 100644 index 3e65722dd4..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-16000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/music/16000/* - diff --git a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-32000.install b/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-32000.install deleted file mode 100644 index 042fe8bb7d..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-32000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/music/32000/* - diff --git a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-48000.install b/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-48000.install deleted file mode 100644 index 5aa199911f..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-48000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/music/48000/* - diff --git a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-8000.install b/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-8000.install deleted file mode 100644 index 4f116068a9..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/freeswitch-sounds-music-8000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/music/8000/* - diff --git a/debian/sounds/freeswitch-sounds-music/debian/rules b/debian/sounds/freeswitch-sounds-music/debian/rules deleted file mode 100755 index 83a56bb72d..0000000000 --- a/debian/sounds/freeswitch-sounds-music/debian/rules +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# This file is public domain software, originally written by Joey Hess. - -# Uncomment this to turn on verbose mode. - export DH_VERBOSE=1 -export DH_OPTIONS -export DH_COMPAT=4 -export DEB_DH_INSTALL_SOURCEDIR=debian/tmp - - -build: - dh_testdir - mkdir -p debian/tmp/opt/freeswitch/sounds - cp -a music debian/tmp/opt/freeswitch/sounds/ - ./debian/buildsounds.sh debian/tmp/opt/freeswitch/sounds/music -clean: - dh_testdir - dh_testroot - dh_clean -k - rm -f build-stamp - rm -Rf debian/tmp - -install: - dh_testdir - dh_testroot - dh_installdirs -A --sourcedir=debian/tmp - dh_install --sourcedir=debian/tmp - -# Build architecture-independent files here. -binary-indep: build install - dh_compress - dh_installdeb - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep -.PHONY: build clean binary-indep binary install diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/buildsounds.sh b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/buildsounds.sh deleted file mode 100755 index 06099e6c5e..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/buildsounds.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -sounds_location=$1 -for rate in 32000 16000 8000 -do - for i in ascii base256 conference currency digits ivr misc phonetic-ascii time voicemail zrtp - do - mkdir -p $sounds_location/$i/$rate - for f in `find $sounds_location/$i/48000 -name \*.wav` - do - echo "generating" $sounds_location/$i/$rate/`basename $f` - sox $f -r $rate $sounds_location/$i/$rate/`basename $f` - done - done -done diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/changelog b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/changelog deleted file mode 100644 index 44eb4c72b6..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/changelog +++ /dev/null @@ -1,35 +0,0 @@ -freeswitch-sounds-ru-ru-elena (1.0.8~git.master.20101222.1-1) unstable; urgency=low - - * Clean ups - - -- Michal Bielicki Wed, 22 Dec 2010 22:55:02 +0200 - -freeswitch-sounds-ru-ru-elena (1.0.head-git.master,20101014.1-1) unstable; urgency=low - - * Change upstream package version numbering scheme for unreleased versions: - new format is major.minor.micro~git.branch.date.commits-1 - * Change source format to 3.0 (quilt). - * Upgrade debhelper compatibility to version 7. - - -- Michal Bielicki Fr, 14 Oct 2010 05:05:02 +0200 - -freeswitch-sounds-ru-ru-elena (1.0.12-0ubuntu3) jaunty; urgency=low - - * Fixed: Empty binary package bug caused by the second ru folder being - capitalized. The sounds are in ru/RU/elena/* - - -- William King Sun, 20 Sep 2009 08:21:58 -0700 - -freeswitch-sounds-ru-ru-elena (1.0.12-0ubuntu2) jaunty; urgency=low - - * Fixed: Fixed a copy/paste bug in the rules file which was trying to - copy the en directory when it should have been copying the ru - directory. - - -- William King Sun, 20 Sep 2009 07:59:20 -0700 - -freeswitch-sounds-ru-ru-elena (1.0.12-0ubuntu1) jaunty; urgency=low - - * Initial: This is the initial working build of the ru-ru-elena sounds - - -- William King Sun, 20 Sep 2009 06:56:46 -0700 diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/control b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/control deleted file mode 100644 index c3181ef60a..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/control +++ /dev/null @@ -1,61 +0,0 @@ -Source: freeswitch-sounds-ru-ru-elena -Maintainer: Freeswitch Debian Team -Section: net -Priority: extra -Build-Depends: debhelper (>= 5), fakeroot, sox -Standards-Version: 3.7.3 - -Package: freeswitch-sounds-ru-ru-elena-8000 -Architecture: all -Conflicts: freeswitch-sounds-ru-ru-elena -Description: English language sounds for the FreeSWITCH(TM) (8000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-ru-ru-elena-16000 -Architecture: all -Conflicts: freeswitch-sounds-ru-ru-elena -Description: English language sounds for the FreeSWITCH(TM) (16000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-ru-ru-elena-32000 -Architecture: all -Conflicts: freeswitch-sounds-ru-ru-elena -Description: English language sounds for FreeSWITCH(TM) (32000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-ru-ru-elena-48000 -Architecture: all -Description: English language sounds for the FreeSWITCH(TM) (48000) - FreeSWITCH is an open source telephony platform designed to facilitate the - creation of voice and chat driven products scaling from a soft-phone up to - a soft-switch. It can be used as a simple switching engine, a media gateway - or a media server to host IVR applications using simple scripts or XML to - control the callflow. - -Package: freeswitch-sounds-ru-ru-elena -Architecture: all -Depends: sox, freeswitch-sounds-ru-ru-elena-48000 -Conflicts: freeswitch-sounds-ru-ru-elena-omega, freeswitch-sounds-ru-ru-elena-8000, freeswitch-sounds-ru-ru-elena-16000, freeswitch-sounds-ru-ru-elena-32000 -Description: English language files for FreeSWITCH(TM) - This package generates the 8k, 16k, and 32k from the installed 48k - sounds. You can select which ones you want. - -Package: freeswitch-sounds-ru-ru-elena-omega -Architecture: all -Depends: freeswitch-sounds-ru-ru-elena-48000, freeswitch-sounds-ru-ru-elena-32000, freeswitch-sounds-ru-ru-elena-16000, freeswitch-sounds-ru-ru-elena-8000 -Conflicts: freeswitch-sounds-ru-ru-elena -Description: English language files for FreeSWITCH(TM) - This package depends on the pregenerated 8khz, 16khz, 32khz, and 48khz sounds - which are downloaded from binary data files. diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/copyright b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/copyright deleted file mode 100644 index 0d313323ce..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/copyright +++ /dev/null @@ -1 +0,0 @@ -These files are licensed under the terms of the creative commons Attribution 3.0 license: http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-16000.install b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-16000.install deleted file mode 100644 index 0fe9230724..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-16000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/ru/RU/elena/*/16000/* - diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-32000.install b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-32000.install deleted file mode 100644 index d3579dfe63..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-32000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/ru/RU/elena/*/32000/* - diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-48000.install b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-48000.install deleted file mode 100644 index c565c5a4a1..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-48000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/ru/RU/elena/*/48000/* - diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-8000.install b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-8000.install deleted file mode 100644 index 2af0c27d72..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/freeswitch-sounds-ru-ru-elena-8000.install +++ /dev/null @@ -1,2 +0,0 @@ -opt/freeswitch/sounds/ru/RU/elena/*/8000/* - diff --git a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/rules b/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/rules deleted file mode 100755 index 678bdf1e68..0000000000 --- a/debian/sounds/freeswitch-sounds-ru-RU-elena/debian/rules +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# This file is public domain software, originally written by Joey Hess. - -# Uncomment this to turn on verbose mode. - export DH_VERBOSE=1 -export DH_OPTIONS -export DH_COMPAT=4 -export DEB_DH_INSTALL_SOURCEDIR=debian/tmp - - -build: - dh_testdir - mkdir -p debian/tmp/opt/freeswitch/sounds - cp -a ru debian/tmp/opt/freeswitch/sounds/ - ./debian/buildsounds.sh debian/tmp/opt/freeswitch/sounds/ru/RU/elena -clean: - dh_testdir - dh_testroot - dh_clean -k - rm -f build-stamp - rm -Rf debian/tmp - -install: - dh_testdir - dh_testroot - dh_installdirs -A --sourcedir=debian/tmp - dh_install --sourcedir=debian/tmp - -# Build architecture-independent files here. -binary-indep: build install - dh_compress - dh_installdeb - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep -.PHONY: build clean binary-indep binary install diff --git a/debian/sounds/getsounds.sh b/debian/sounds/getsounds.sh deleted file mode 100755 index b75a86f309..0000000000 --- a/debian/sounds/getsounds.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -sounds_en_us_callie="freeswitch-sounds-en-us-callie-48000-1.0.14.tar.gz" -sounds_music="freeswitch-sounds-music-48000-1.0.8.tar.gz" -sounds_ru_RU_elena="freeswitch-sounds-ru-RU-elena-48000-1.0.12.tar.gz" - -cd freeswitch-sounds-music -if [ ! -f $sounds_music ] - then - wget http://files.freeswitch.org/$sounds_music -fi -tar zxvf $sounds_music -cd .. - - -cd freeswitch-sounds-en-us-callie -if [ ! -f $sounds_en_us_callie ] - then - wget http://files.freeswitch.org/$sounds_en_us_callie -fi -tar zxvf $sounds_en_us_callie -cd .. - - -cd freeswitch-sounds-ru-RU-elena -if [ ! -f $sounds_ru_RU_elena ] - then - wget http://files.freeswitch.org/$sounds_ru_RU_elena -fi -tar zxvf $sounds_ru_RU_elena -cd .. diff --git a/debian/source/format b/debian/source/format deleted file mode 100644 index 163aaf8d82..0000000000 --- a/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) From 4ce0f57a8b4013c5c2b7019b5463b13d739e25c7 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 24 Feb 2012 01:03:09 +0000 Subject: [PATCH 307/630] debian: add new and vastly improved packaging for Debian We now break out each module and component of FreeSWITCH into a separate individually-installable package. For each package with executables or modules, we also build a package that includes the stripped debugging symbols so that users can be helpful when they discover bugs in FreeSWITCH. As of this commit, we successfully build 263 distinct binary packages starting from a clean minimal image on both Debian Sid and Debian Squeeze. To keep this manageable, we include a program that generates the various Debian packaging files from a consolidated description of the modules and their metadata. The program can even generate this configuration file by walking the FreeSWITCH source tree. To provide a smooth user experience, we provide meta-packages that install sensible sets of modules and other components. All files are installed into the traditional and customary Linux directories that you would expect in accordance with the Filesystem Hierarchy Standard (FHS). This commit also adds support for running FreeSWITCH as a forked systemd service in Debian. For more information about the technical details of the source packaging, how to build the binary packages from source, and how you can contribute, please read debian/README.source. To learn about how this packaging affects you as a user and how to use the finished Debian packages, read debian/README.Debian. Signed-off-by: Travis Cross --- .gitignore | 1 + debian/.gitignore | 21 + debian/README.Debian | 18 + debian/README.source | 57 ++ debian/bootstrap.sh | 739 ++++++++++++++++++ debian/changelog | 11 + debian/compat | 1 + debian/control-modules | 640 +++++++++++++++ debian/copyright | 8 + debian/create-dbg-pkgs.sh | 17 + debian/docs | 0 debian/freeswitch-dev.install | 4 + debian/freeswitch-doc.docs | 1 + debian/freeswitch-doc.install | 1 + debian/freeswitch-htdocs-slim.install | 3 + .../freeswitch-mod-pocketsphinx.install.tmpl | 1 + debian/freeswitch-systemd.freeswitch.service | 35 + debian/freeswitch-systemd.install | 1 + debian/freeswitch-sysvinit.freeswitch.default | 2 + debian/freeswitch-sysvinit.freeswitch.init | 116 +++ debian/freeswitch.install | 3 + debian/freeswitch.postinst | 41 + debian/freeswitch.postrm | 30 + debian/freeswitch.preinst | 18 + debian/freeswitch.prerm | 18 + debian/gbp.conf | 13 + debian/rules | 116 +++ debian/source/format | 1 + 28 files changed, 1917 insertions(+) create mode 100644 debian/.gitignore create mode 100644 debian/README.Debian create mode 100644 debian/README.source create mode 100755 debian/bootstrap.sh create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control-modules create mode 100644 debian/copyright create mode 100755 debian/create-dbg-pkgs.sh create mode 100644 debian/docs create mode 100644 debian/freeswitch-dev.install create mode 100644 debian/freeswitch-doc.docs create mode 100644 debian/freeswitch-doc.install create mode 100644 debian/freeswitch-htdocs-slim.install create mode 100644 debian/freeswitch-mod-pocketsphinx.install.tmpl create mode 100644 debian/freeswitch-systemd.freeswitch.service create mode 100644 debian/freeswitch-systemd.install create mode 100644 debian/freeswitch-sysvinit.freeswitch.default create mode 100644 debian/freeswitch-sysvinit.freeswitch.init create mode 100644 debian/freeswitch.install create mode 100644 debian/freeswitch.postinst create mode 100644 debian/freeswitch.postrm create mode 100644 debian/freeswitch.preinst create mode 100644 debian/freeswitch.prerm create mode 100644 debian/gbp.conf create mode 100755 debian/rules create mode 100644 debian/source/format diff --git a/.gitignore b/.gitignore index b8bd5c7edf..f31e630473 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ core.* !/w32/Setup/inno_setup/vcredist_x86.exe /.version +/.stamp-* /a.out.dSYM /AUTHORS /ChangeLog diff --git a/debian/.gitignore b/debian/.gitignore new file mode 100644 index 0000000000..ff6803d774 --- /dev/null +++ b/debian/.gitignore @@ -0,0 +1,21 @@ +# gitignore +/.stamp-bootstrap +/control +/control-modules.* +/files +/modules.conf +/modules_.conf +/freeswitch-autotools.install +/freeswitch-mod-*.install +/freeswitch-conf-*.install +/freeswitch-sounds-*.install +/*.log +/*.substvars +/*.debhelper +/tmp +/freeswitch/ +/freeswitch-dbg/ +/freeswitch-dev/ +/freeswitch-doc/ +/freeswitch-mod-*/ +/freeswitch-sounds-*/ diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000000..607e37ec18 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,18 @@ +FreeSWITCH for Debian +-------------- + +This debian packaging breaks out every module of freeswitch into a +separate package, so be sure to verify that you are actually +installing all the modules that you need. + +As a break from the past, we now install all files into their correct +FHS locations. + +This package does not install any configuration for freeswitch into +/etc/freeswitch. We leave you, the system administrator completely +responsible for that directory. If you install one of the conf +packages, it will install the corresponding sample configuration to +/usr/share/freeswitch/conf and you'll need to copy the bits you need +to /etc/freeswitch. + + -- Travis Cross , Sat, 5 May 2012 06:31:24 +0000 diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000000..9f20a9d4a2 --- /dev/null +++ b/debian/README.source @@ -0,0 +1,57 @@ +FreeSWITCH for Debian +-------------- + +You may be reading this because you're wondering where all the files +are in debian/, such as control. + +Because FreeSWITCH has so many modules it was necessary to create a +system to autogenerate the majority of the packaging. This in done +mostly in the file debian/bootstrap.sh. This bootstrap needs to run +before any other step of the packaging, though we do try to +autogenerate it when possible. + +The build dependencies, runtime dependencies, and other details about +modules can be configured in the debian/control-modules file. Even +though this file looks a bit like a debian control file and has a +similar format, we are parsing this file ourselves so the format is a +bit more restricted. + +debian/control-modules currently supports the following fields: + + # lines that begin with the hash character are comments + # + # every block must start with a Module field + Module: / + Description: + # empty lines with "."s are not yet supported + Build-Depends: + Depends: + Recommends: + Suggests: + Distro-Conflicts: # not yet implemented + +During bootstrap we build a file control-modules.gen. If the +control-modules file is properly formatted, this generated file should +be identical. This is a sanity check mechanism for our parsing, as +well as a way to automatically reorganize the file. + +If the file debian/modules.conf is present, we read that file and only +build and package the files listed there. Otherwise, we build every +module except the ones that either should not be packaged, or for +which we don't yet have good packaging. + +The format of debian/modules.conf is: + + ## comments should start with two hash characters + / + +To build this package, I recommend running the following from the root +directory of your FS git working tree: + + mkdir ../sounds + export FS_SOUNDS_DIR=$(pwd)/../sounds + git clean -fdx && git reset --hard HEAD + (cd debian && ./bootstrap.sh) + schedtool -B -e git-buildpackage --git-verbose -us -uc + + -- Travis Cross , Sat, 5 May 2012 08:04:19 +0000 diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh new file mode 100755 index 0000000000..ecf3070b9a --- /dev/null +++ b/debian/bootstrap.sh @@ -0,0 +1,739 @@ +#!/bin/bash +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- +##### Author: Travis Cross + +mod_dir="../src/mod" +conf_dir="../conf" +fs_description="FreeSWITCH is a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media." +mod_build_depends="." +avoid_mods=( + applications/mod_fax + applications/mod_ladspa + applications/mod_limit + applications/mod_mp4 + applications/mod_osp + applications/mod_rad_auth + applications/mod_skel + asr_tts/mod_cepstral + codecs/mod_com_g729 + codecs/mod_sangoma_codec + codecs/mod_skel_codec + codecs/mod_voipcodecs + endpoints/mod_gsmopen + endpoints/mod_h323 + endpoints/mod_khomp + endpoints/mod_opal + endpoints/mod_portaudio + endpoints/mod_reference + endpoints/mod_unicall + event_handlers/mod_snmp + formats/mod_portaudio_stream + formats/mod_vlc + languages/mod_java + languages/mod_managed + languages/mod_spidermonkey + languages/mod_yaml + sdk/autotools + xml_int/mod_xml_ldap +) + +err () { + echo "$0 error: $1" >&2 + exit 1 +} + +xread() { + local xIFS="$IFS" + IFS='' + read $@ + local ret=$? + IFS="$xIFS" + return $ret +} + +avoid_mod_filter () { + for x in "${avoid_mods[@]}"; do + [ "$1" = "$x" ] && return 1 + done + return 0 +} + +modconf_filter () { + while xread line; do + [ "$1" = "$line" ] && return 0 + done < modules.conf + return 1 +} + +mod_filter () { + if test -f modules.conf; then + modconf_filter $@ + else + avoid_mod_filter $@ + fi +} + +map_fs_modules () { + local filterfn="$1" percatfns="$2" permodfns="$3" + for x in $mod_dir/*; do + if test -d $x; then + category=${x##*/} category_path=$x + for f in $percatfns; do $f; done + for y in $x/*; do + module_name=${y##*/} module_path=$y + module=$category/$module_name + if $filterfn $category/$module; then + [ -f ${y}/module ] && . ${y}/module + for f in $permodfns; do $f; done + fi + unset module_name module_path module + done + unset category category_path + fi + done +} + +map_modules() { + local filterfn="$1" percatfns="$2" permodfns="$3" + for x in $parse_dir/*; do + test -d $x || continue + category=${x##*/} category_path=$x + for f in $percatfns; do $f; done + for y in $x/*; do + test -f $y || continue + module=${y##*/} module_path=$y + $filterfn $category/$module || continue + module="" category="" module_name="" + description="" long_description="" + build_depends="" depends="" recommends="" suggests="" + distro_conflicts="" + . $y + [ -n "$description" ] || description="$module_name" + [ -n "$long_description" ] || description="Adds ${module_name}." + for f in $permodfns; do $f; done + unset \ + module module_name module_path \ + description long_description \ + build_depends depends recommends suggests \ + distro_conflicts + done + unset category category_path + done +} + +map_confs () { + local fs="$1" + for x in $conf_dir/*; do + test ! -d $x && continue + conf=${x##*/} conf_dir=$x + for f in $fs; do $f; done + unset conf conf_dir + done +} + +print_source_control () { +cat < +Build-Depends: +# for debian + debhelper (>= 8.0.0), +# bootstrapping + automake (>= 1.9), autoconf, libtool, +# core build + build-essential, wget, pkg-config, +# configure options + libssl-dev, unixodbc-dev, + libncurses5-dev, libjpeg8-dev, + python-dev, erlang-dev, +# documentation + doxygen, +# for APR (not essential for build) + uuid-dev, libexpat1-dev, libgdbm-dev, libdb-dev, +# used by many modules + bison, zlib1g-dev, +# module build-depends + $(debian_wrap "${mod_build_depends}") +Standards-Version: 3.9.2 +Homepage: http://freeswitch.org/ +Vcs-Git: git://git.freeswitch.org/freeswitch +Vcs-Browser: http://git.freeswitch.org/git/freeswitch/ + +EOF +} + +print_core_control () { +cat <= 3.0-6) +Description: FreeSWITCH SysV init script + $(debian_wrap "${fs_description}") + . + This package contains the SysV init script for FreeSWITCH. + +Package: freeswitch-systemd +Architecture: all +Depends: \${misc:Depends} +Description: FreeSWITCH systemd configuration + $(debian_wrap "${fs_description}") + . + This package contains the systemd configuration for FreeSWITCH. + +## misc + +Package: freeswitch-htdocs-slim +Architecture: all +Depends: \${misc:Depends} +Description: FreeSWITCH htdocs slim player + $(debian_wrap "${fs_description}") + . + This package contains the slim SWF player for FreeSWITCH. + +## sounds + +Package: freeswitch-music +Architecture: all +Depends: \${misc:Depends}, + freeswitch-music-default (= \${binary:Version}) +Description: Music on hold audio for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains music on hold audio for FreeSWITCH. + +Package: freeswitch-music-default +Architecture: all +Depends: \${misc:Depends}, + freeswitch-music-default-8k (= \${binary:Version}) +Recommends: + freeswitch-music-default-16k (= \${binary:Version}), + freeswitch-music-default-32k (= \${binary:Version}), + freeswitch-music-default-48k (= \${binary:Version}) +Description: Music on hold audio for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains the default music on hold audio for FreeSWITCH. + +Package: freeswitch-sounds +Architecture: all +Depends: \${misc:Depends}, + freeswitch-sounds-en (= \${binary:Version}) +Description: Sounds for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains sounds for FreeSWITCH. + +Package: freeswitch-sounds-en +Architecture: all +Depends: \${misc:Depends}, + freeswitch-sounds-en-us (= \${binary:Version}) +Description: English sounds for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains the English sounds for FreeSWITCH. + +Package: freeswitch-sounds-en-us +Architecture: all +Depends: \${misc:Depends}, + freeswitch-sounds-en-us-callie (= \${binary:Version}) +Description: US English sounds for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains the US/English sounds for FreeSWITCH. + +Package: freeswitch-sounds-en-us-callie +Architecture: all +Depends: \${misc:Depends}, + freeswitch-sounds-en-us-callie-8k (= \${binary:Version}) +Recommends: + freeswitch-sounds-en-us-callie-16k (= \${binary:Version}), + freeswitch-sounds-en-us-callie-32k (= \${binary:Version}), + freeswitch-sounds-en-us-callie-48k (= \${binary:Version}) +Description: US English sounds for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains the Callie English sounds for FreeSWITCH. + +EOF +} + +print_mod_control () { + cat <> control +} + +gencontrol_per_cat () { + (echo "## mod/$category"; echo) >> control +} + +geninstall_per_mod () { + local f=freeswitch-${module_name//_/-}.install + (print_edit_warning; print_mod_install "$module_name") > $f + test -f $f.tmpl && cat $f.tmpl >> $f +} + +genmodules_per_cat () { + echo "## $category" >> modules_.conf +} + +genmodules_per_mod () { + echo "$module" >> modules_.conf +} + +genconf () { + print_conf_control >> control + local f=freeswitch-conf-${conf//_/-}.install + (print_edit_warning; print_conf_install) > $f + test -f $f.tmpl && cat $f.tmpl >> $f +} + +genmusic () { + rate="$1" rate_k="${rate%%000}k" + print_music_control >> control + local f=freeswitch-music-default-${rate_k}.install + (print_edit_warning; print_music_install) > $f + test -f $f.tmpl && cat $f.tmpl >> $f + unset rate rate_k +} + +gensound () { + rate="$1" rate_k="${rate%%000}k" sound_path="$2" sound="${2,,}" + language=$(echo $sound | cut -d/ -f1) + country=$(echo $sound | cut -d/ -f2) + speaker=$(echo $sound | cut -d/ -f3) + print_sound_control >> control + local f=freeswitch-sounds-${sound//\//-}-${rate_k}.install + (print_edit_warning; print_sound_install) > $f + test -f $f.tmpl && cat $f.tmpl >> $f + unset rate rate_k sound sound_path language country speaker +} + +accumulate_build_depends () { + if [ -n "$build_depends" ]; then + if [ ! "$mod_build_depends" = "." ]; then + mod_build_depends="${mod_build_depends}, ${build_depends}" + else + mod_build_depends="${build_depends}" + fi + fi +} + +genmodctl_new_mod() { + grep -e "^Module: ${module}$" control-modules >/dev/null && return 0 + cat </dev/null && return 0 + cat < control-modules.preparse + local category="" + local module_name="" + rm -rf $parse_dir + while xread l; do + if [ -z "$l" ]; then + # is newline + continue + fi + local header="${l%%:*}" + local value="${l#*: }" + if [ "$header" = "Module" ]; then + category="${value%%/*}" + module_name="${value#*/}" + mkdir -p $parse_dir/$category + (echo "module=$(var_escape "$value")"; \ + echo "category=$(var_escape "$category")"; \ + echo "module_name=$(var_escape "$module_name")"; \ + ) >> $parse_dir/$category/$module_name + else + ([ -n "$category" ] && [ -n "$module_name" ]) \ + || err "unexpected header $header" + local var_name="$(echo "$header" | sed -e 's/-/_/g' | tr '[A-Z]' '[a-z]')" + echo "${var_name}=$(var_escape "$value")" >> $parse_dir/$category/$module_name + fi + done < control-modules.preparse +} + +debian_wrap() { + local fl=true + echo "$1" | fold -s -w 69 | while xread l; do + local v="$(echo "$l" | sed -e 's/ *$//g')" + if $fl; then + fl=false + echo "$v" + else + echo " $v" + fi + done +} + +genmodctl_cat() { + (echo "## mod/$category"; echo) +} + +genmodctl_mod() { + echo "Module: $module" + echo "Description: $description" + echo "$long_description" | fold -s -w 69 | while xread l; do + local v="$(echo "$l" | sed -e 's/ *$//g')" + echo " $v" + done + [ -n "$build_depends" ] && debian_wrap "Build-Depends: $build_depends" + [ -n "$depends" ] && debian_wrap "Depends: $depends" + [ -n "$reccomends" ] && debian_wrap "Recommends: $recommends" + [ -n "$suggests" ] && debian_wrap "Suggests: $suggests" + [ -n "$distro_conflicts" ] && debian_wrap "Distro-Conflicts: $distro_conflicts" + echo +} + +echo "Please wait, this takes a few seconds..." >&2 + +parse_dir=control-modules.parse +map_fs_modules ':' 'genmodctl_new_cat' 'genmodctl_new_mod' >> control-modules +parse_mod_control +(echo "# -*- mode:debian-control -*-"; echo; \ + map_modules ':' 'genmodctl_cat' 'genmodctl_mod' \ + ) > control-modules.gen + +print_edit_warning > modules_.conf +map_modules 'mod_filter' '' 'accumulate_build_depends' +> control +(print_edit_warning; print_source_control; print_core_control) >> control +for r in 8000 16000 32000 48000; do genmusic $r; done +for x in 'en/us/callie'; do + for r in 8000 16000 32000 48000; do + gensound $r $x + done +done +(echo "### conf"; echo) >> control +map_confs 'genconf' +(echo "### modules"; echo) >> control +map_modules "mod_filter" \ + "gencontrol_per_cat genmodules_per_cat" \ + "gencontrol_per_mod geninstall_per_mod genmodules_per_mod" + +touch .stamp-bootstrap diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000000..3df3c52971 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,11 @@ +freeswitch (1.2~alpha1-1) unstable; urgency=low + + * Initial release of FreeSWITCH in new debian packaging. + * The debian packaging has been completely rewritten from the ground up. + * We now install to the correct locations outlined in the Filesystem + Hierarchy Standard (FHS). + * All modules are packaged separately from the core. + * We have a handy system for autogenerating the final packaging + configuration from a consolidated configuration file. + + -- Travis Cross Sat, 05 May 2012 07:10:14 +0000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000000..45a4fb75db --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 diff --git a/debian/control-modules b/debian/control-modules new file mode 100644 index 0000000000..bb3ed507e8 --- /dev/null +++ b/debian/control-modules @@ -0,0 +1,640 @@ +# -*- mode:debian-control -*- +##### Author: Travis Cross + +## mod/applications + +Module: applications/mod_abstraction +Description: Abstraction layer for APIs + This module provides a way to create new API functions via regex + rewriting. + +Module: applications/mod_avmd +Description: Advanced voicemail detection + This module attempts to determine when a voicemail system has + answered the call. + +Module: applications/mod_blacklist +Description: Blacklist helper + This module provides tools to blacklist callers. + +Module: applications/mod_callcenter +Description: Call center + This module implements Automated Call Distribution (ACD) queues. + +Module: applications/mod_cidlookup +Description: Caller ID name lookup + This module provides an API for querying caller ID name and location + data. + +Module: applications/mod_cluechoo +Description: Clue Choo + This demo module renders a Clue Choo train on the FreeSWITCH console. + +Module: applications/mod_commands +Description: Command module + This module provides miscellaneous API commands. + +Module: applications/mod_conference +Description: Conference + This module provides multi-party conferencing. + +Module: applications/mod_curl +Description: cURL + This module provides an API for making HTTP requests with cURL. + +Module: applications/mod_db +Description: DB + This module implements simple db API, group support, and limit db + backend. + +Module: applications/mod_directory +Description: Dial by name directory + This module implements a dial-by-name directory IVR. + +Module: applications/mod_distributor +Description: Load distributor + This module implements a mechanism for performing load balancing. + +Module: applications/mod_dptools +Description: Dialplan tools + This module implements basic dialplan tools. + +Module: applications/mod_easyroute +Description: Easyroute + This module does destination lookup based on DID. + +Module: applications/mod_enum +Description: ENUM + This module implements ENUM support. + +Module: applications/mod_esf +Description: Multicast support + This module adds multi-cast support. + +Module: applications/mod_esl +Description: Single ESL + This module adds an API for generating one-off ESL requests. + +Module: applications/mod_expr +Description: Expr + This module adds expr support for expression evaluation. + +Module: applications/mod_fax +Description: Fax + This module adds fax support provided by Steve Underwood's SpanDSP. + +Module: applications/mod_fifo +Description: FIFO + This module adds a first-in first-out queue system. + +Module: applications/mod_fsk +Description: Frequency-shift keying + This module adds frequency-shift keying support which can be used to + send and receive caller ID. + +Module: applications/mod_fsv +Description: FSV + This module provides dialplan applications for recording and playing + FSV videos. + +Module: applications/mod_hash +Description: Hash + This module provides a hash API, a key-value in-memory datastore. + +Module: applications/mod_httapi +Description: HT-TAPI Hypertext Telephony API + This module provides an API for controlling the switch by responding + to HTTP requests. + +Module: applications/mod_http_cache +Description: HTTP GET with caching + This module provides an API for making HTTP GET requests where the + result is cached. + +Module: applications/mod_ladspa +Description: LADSPA + This module provides an API for accessing LADSPA plugins. + +Module: applications/mod_lcr +Description: LCR + This module adds a facility for least-cost routing. + +Module: applications/mod_limit +Description: Limit compatibility module + This module provides a backward-compatible interface to the DB limit + system. + +Module: applications/mod_memcache +Description: Memcache + This module provides an interface to memcache servers. + +Module: applications/mod_mongo +Description: MongoDB + This module provides an interface to MongoDB. +Build-Depends: scons, libboost-dev, libboost-system-dev, + libboost-date-time-dev, libboost-thread-dev, libboost-filesystem-dev +Depends: libicu44, libboost-system1.42.0, libboost-date-time1.42.0, + libboost-serialization1.42.0, libboost-thread1.42.0, + libboost-filesystem1.42.0 + +Module: applications/mod_mp4 +Description: MP4 video support + This module adds support for MP4 video playback. + +Module: applications/mod_nibblebill +Description: Nibblebill + This module allows for real-time accounting of a cash balance and + using that information for call routing. + +Module: applications/mod_osp +Description: Open Settlement Protocol + This module adds support for the Open Settlement Protocol (OSP). + +Module: applications/mod_rad_auth +Description: RADIUS AA + This module implements RADIUS Authentication and Authorization. + +Module: applications/mod_redis +Description: Redis limit backend + This module provides a mechanism to use Redis as a backend data + store. + +Module: applications/mod_rss +Description: RSS browser + This module provides an RSS browser. + +Module: applications/mod_skel +Description: Framework demo module + This module demonstrates how to build an add-on module. + +Module: applications/mod_sms +Description: Astract SMS + This module provides an abstract facility for interfacing with SMS + systems. + +Module: applications/mod_snapshot +Description: Snapshot + This module can record a sliding window of audio and take snapshots + to disk. + +Module: applications/mod_snipe_hunt +Description: Snipe hunt + This is a framework demo module. + +Module: applications/mod_snom +Description: SNOM specific features + This module implements features specific to SNOM phones. + +Module: applications/mod_soundtouch +Description: Soundtouch + This module implements example media bugs. + +Module: applications/mod_spandsp +Description: SpanDSP + This module implements spandsp fax, dsp, and codec functionality. + +Module: applications/mod_spy +Description: UserSpy + This module adds the ability to monitor the audio of a channel. + +Module: applications/mod_stress +Description: Voice stress detection + This module attemps to detect voice stress on an audio channel. + +Module: applications/mod_valet_parking +Description: Valet parking + This module implements the valet call parking strategy. + +Module: applications/mod_vmd +Description: Voicemail detection + This module detects voicemail beeps at any frequency in O(1) time. + +Module: applications/mod_voicemail +Description: Voicemail + This module provides a voicemail system. + +Module: applications/mod_voicemail_ivr +Description: Voicemail IVR + This module provides an extensible voicemail IVR system. + +## mod/asr_tts + +Module: asr_tts/mod_cepstral +Description: mod_cepstral + Adds mod_cepstral. + +Module: asr_tts/mod_flite +Description: mod_flite + Adds mod_flite. + +Module: asr_tts/mod_pocketsphinx +Description: mod_pocketsphinx + Adds mod_pocketsphinx. + +Module: asr_tts/mod_tts_commandline +Description: mod_tts_commandline + Adds mod_tts_commandline. + +Module: asr_tts/mod_unimrcp +Description: mod_unimrcp + Adds mod_unimrcp. + +## mod/codecs + +Module: codecs/mod_amr +Description: mod_amr + Adds mod_amr. + +Module: codecs/mod_amrwb +Description: mod_amrwb + Adds mod_amrwb. + +Module: codecs/mod_bv +Description: mod_bv + Adds mod_bv. + +Module: codecs/mod_celt +Description: mod_celt + Adds mod_celt. + +Module: codecs/mod_codec2 +Description: mod_codec2 + Adds mod_codec2. + +Module: codecs/mod_com_g729 +Description: mod_com_g729 + Adds mod_com_g729. + +Module: codecs/mod_dahdi_codec +Description: mod_dahdi_codec + Adds mod_dahdi_codec. + +Module: codecs/mod_g723_1 +Description: mod_g723_1 + Adds mod_g723_1. + +Module: codecs/mod_g729 +Description: mod_g729 + Adds mod_g729. + +Module: codecs/mod_h26x +Description: mod_h26x + Adds mod_h26x. + +Module: codecs/mod_ilbc +Description: mod_ilbc + Adds mod_ilbc. + +Module: codecs/mod_isac +Description: mod_isac + Adds mod_isac. + +Module: codecs/mod_mp4v +Description: mod_mp4v + Adds mod_mp4v. + +Module: codecs/mod_opus +Description: mod_opus + Adds mod_opus. + +Module: codecs/mod_sangoma_codec +Description: mod_sangoma_codec + Adds mod_sangoma_codec. + +Module: codecs/mod_silk +Description: mod_silk + Adds mod_silk. + +Module: codecs/mod_siren +Description: mod_siren + Adds mod_siren. + +Module: codecs/mod_skel_codec +Description: mod_skel_codec + Adds mod_skel_codec. + +Module: codecs/mod_speex +Description: mod_speex + Adds mod_speex. +Build-Depends: libogg-dev +Depends: libogg0 + +Module: codecs/mod_theora +Description: mod_theora + Adds mod_theora. + +Module: codecs/mod_voipcodecs +Description: mod_voipcodecs + Adds mod_voipcodecs. + +## mod/dialplans + +Module: dialplans/mod_dialplan_asterisk +Description: mod_dialplan_asterisk + Adds mod_dialplan_asterisk. + +Module: dialplans/mod_dialplan_directory +Description: mod_dialplan_directory + Adds mod_dialplan_directory. + +Module: dialplans/mod_dialplan_xml +Description: mod_dialplan_xml + Adds mod_dialplan_xml. + +## mod/directories + +Module: directories/mod_ldap +Description: mod_ldap + Adds mod_ldap. + +## mod/endpoints + +Module: endpoints/mod_alsa +Description: mod_alsa + Adds mod_alsa. +Build-Depends: libasound2-dev +Depends: libasound2 + +Module: endpoints/mod_dingaling +Description: mod_dingaling + Adds mod_dingaling. + +Module: endpoints/mod_gsmopen +Description: mod_gsmopen + Adds mod_gsmopen. + +Module: endpoints/mod_h323 +Description: mod_h323 + Adds mod_h323. + +Module: endpoints/mod_khomp +Description: mod_khomp + Adds mod_khomp. + +Module: endpoints/mod_loopback +Description: mod_loopback + Adds mod_loopback. + +Module: endpoints/mod_opal +Description: mod_opal + Adds mod_opal. + +Module: endpoints/mod_portaudio +Description: mod_portaudio + Adds mod_portaudio. + +Module: endpoints/mod_reference +Description: mod_reference + Adds mod_reference. + +Module: endpoints/mod_rtmp +Description: mod_rtmp + Adds mod_rtmp. + +Module: endpoints/mod_skinny +Description: mod_skinny + Adds mod_skinny. + +Module: endpoints/mod_skypopen +Description: mod_skypopen + Adds mod_skypopen. +Build-Depends: libx11-dev +Depends: libpthread-stubs0 + +Module: endpoints/mod_sofia +Description: mod_sofia + Adds mod_sofia. + +Module: endpoints/mod_unicall +Description: mod_unicall + Adds mod_unicall. + +## mod/event_handlers + +Module: event_handlers/mod_cdr_csv +Description: mod_cdr_csv + Adds mod_cdr_csv. + +Module: event_handlers/mod_cdr_mongodb +Description: mod_cdr_mongodb + Adds mod_cdr_mongodb. + +Module: event_handlers/mod_cdr_pg_csv +Description: mod_cdr_pg_csv + Adds mod_cdr_pg_csv. +Build-Depends: libpq-dev +Depends: libpq5 + +Module: event_handlers/mod_cdr_sqlite +Description: mod_cdr_sqlite + Adds mod_cdr_sqlite. + +Module: event_handlers/mod_erlang_event +Description: mod_erlang_event + Adds mod_erlang_event. + +Module: event_handlers/mod_event_multicast +Description: mod_event_multicast + Adds mod_event_multicast. + +Module: event_handlers/mod_event_socket +Description: mod_event_socket + Adds mod_event_socket. + +Module: event_handlers/mod_event_test +Description: mod_event_test + Adds mod_event_test. + +Module: event_handlers/mod_event_zmq +Description: mod_event_zmq + Adds mod_event_zmq. + +Module: event_handlers/mod_json_cdr +Description: mod_json_cdr + Adds mod_json_cdr. + +Module: event_handlers/mod_radius_cdr +Description: mod_radius_cdr + Adds mod_radius_cdr. + +Module: event_handlers/mod_snmp +Description: mod_snmp + Adds mod_snmp. + +## mod/formats + +Module: formats/mod_local_stream +Description: mod_local_stream + Adds mod_local_stream. + +Module: formats/mod_native_file +Description: mod_native_file + Adds mod_native_file. + +Module: formats/mod_portaudio_stream +Description: mod_portaudio_stream + Adds mod_portaudio_stream. + +Module: formats/mod_shell_stream +Description: mod_shell_stream + Adds mod_shell_stream. + +Module: formats/mod_shout +Description: mod_shout + Adds mod_shout. + +Module: formats/mod_sndfile +Description: mod_sndfile + Adds mod_sndfile. + +Module: formats/mod_tone_stream +Description: mod_tone_stream + Adds mod_tone_stream. + +Module: formats/mod_vlc +Description: VLC streaming + This module provides VLC streaming. +Build-Depends: libvlc-dev (>= 2.0.0) +Depends: libvlc5 +Distro-Conflicts: squeeze + +## mod/languages + +Module: languages/mod_java +Description: mod_java + Adds mod_java. + +Module: languages/mod_lua +Description: mod_lua + Adds mod_lua. + +Module: languages/mod_managed +Description: mod_managed + Adds mod_managed. + +Module: languages/mod_perl +Description: mod_perl + Adds mod_perl. +Build-Depends: libperl-dev +Depends: libperl5.10 + +Module: languages/mod_python +Description: mod_python + Adds mod_python. + +Module: languages/mod_spidermonkey +Description: mod_spidermonkey + Adds mod_spidermonkey. + +Module: languages/mod_yaml +Description: mod_yaml + Adds mod_yaml. + +## mod/loggers + +Module: loggers/mod_console +Description: mod_console + Adds mod_console. + +Module: loggers/mod_logfile +Description: mod_logfile + Adds mod_logfile. + +Module: loggers/mod_syslog +Description: mod_syslog + Adds mod_syslog. + +## mod/say + +Module: say/mod_say_de +Description: mod_say_de + Adds mod_say_de. + +Module: say/mod_say_en +Description: mod_say_en + Adds mod_say_en. + +Module: say/mod_say_es +Description: mod_say_es + Adds mod_say_es. + +Module: say/mod_say_fr +Description: mod_say_fr + Adds mod_say_fr. + +Module: say/mod_say_he +Description: mod_say_he + Adds mod_say_he. + +Module: say/mod_say_hr +Description: mod_say_hr + Adds mod_say_hr. + +Module: say/mod_say_hu +Description: mod_say_hu + Adds mod_say_hu. + +Module: say/mod_say_it +Description: mod_say_it + Adds mod_say_it. + +Module: say/mod_say_ja +Description: mod_say_ja + Adds mod_say_ja. + +Module: say/mod_say_nl +Description: mod_say_nl + Adds mod_say_nl. + +Module: say/mod_say_pt +Description: mod_say_pt + Adds mod_say_pt. + +Module: say/mod_say_ru +Description: mod_say_ru + Adds mod_say_ru. + +Module: say/mod_say_th +Description: mod_say_th + Adds mod_say_th. + +Module: say/mod_say_zh +Description: mod_say_zh + Adds mod_say_zh. + +## mod/sdk + +Module: sdk/autotools +Description: autotools + Adds autotools. + +## mod/timers + +Module: timers/mod_posix_timer +Description: mod_posix_timer + Adds mod_posix_timer. + +Module: timers/mod_timerfd +Description: mod_timerfd + Adds mod_timerfd. + +## mod/xml_int + +Module: xml_int/mod_xml_cdr +Description: mod_xml_cdr + Adds mod_xml_cdr. + +Module: xml_int/mod_xml_curl +Description: mod_xml_curl + Adds mod_xml_curl. + +Module: xml_int/mod_xml_ldap +Description: mod_xml_ldap + Adds mod_xml_ldap. +Build-Depends: libsasl2-dev +Depends: libsasl2-modules + +Module: xml_int/mod_xml_rpc +Description: mod_xml_rpc + Adds mod_xml_rpc. + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000000..8c08cfc189 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,8 @@ +Format: http://dep.debian.net/deps/dep5 +Upstream-Name: freeswitch +Source: http://freeswitch.org/ + +Files: debian/* +Copyright: 2012 Travis Cross +License: MPL or GPL2+ (at your option) + diff --git a/debian/create-dbg-pkgs.sh b/debian/create-dbg-pkgs.sh new file mode 100755 index 0000000000..b6a33fa617 --- /dev/null +++ b/debian/create-dbg-pkgs.sh @@ -0,0 +1,17 @@ +#!/bin/bash +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- +##### Author: Travis Cross + +create_dbg_pkgs () { + for x in debian/*; do + test ! -d $x && continue + test "$x" = "tmp" -o "$x" = "source" && continue + test ! "$x" = "${x%-dbg}" && continue + test ! -d $x/usr/lib/debug && continue + mkdir -p $x-dbg/usr/lib + mv $x/usr/lib/debug $x-dbg/usr/lib/ + done +} + +create_dbg_pkgs + diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/debian/freeswitch-dev.install b/debian/freeswitch-dev.install new file mode 100644 index 0000000000..704d7b1444 --- /dev/null +++ b/debian/freeswitch-dev.install @@ -0,0 +1,4 @@ +/usr/include +/usr/lib/freeswitch/mod/*.la +/usr/lib/*.{a,la} +/usr/lib/pkgconfig diff --git a/debian/freeswitch-doc.docs b/debian/freeswitch-doc.docs new file mode 100644 index 0000000000..d4f4542584 --- /dev/null +++ b/debian/freeswitch-doc.docs @@ -0,0 +1 @@ +#DOCS# diff --git a/debian/freeswitch-doc.install b/debian/freeswitch-doc.install new file mode 100644 index 0000000000..d4f4542584 --- /dev/null +++ b/debian/freeswitch-doc.install @@ -0,0 +1 @@ +#DOCS# diff --git a/debian/freeswitch-htdocs-slim.install b/debian/freeswitch-htdocs-slim.install new file mode 100644 index 0000000000..0975415a85 --- /dev/null +++ b/debian/freeswitch-htdocs-slim.install @@ -0,0 +1,3 @@ +/usr/share/freeswitch/htdocs/license.txt +/usr/share/freeswitch/htdocs/slim.swf +/usr/share/freeswitch/htdocs/slimtest.htm diff --git a/debian/freeswitch-mod-pocketsphinx.install.tmpl b/debian/freeswitch-mod-pocketsphinx.install.tmpl new file mode 100644 index 0000000000..8c57f297af --- /dev/null +++ b/debian/freeswitch-mod-pocketsphinx.install.tmpl @@ -0,0 +1 @@ +/usr/share/freeswitch/grammar diff --git a/debian/freeswitch-systemd.freeswitch.service b/debian/freeswitch-systemd.freeswitch.service new file mode 100644 index 0000000000..1e7d2fcad1 --- /dev/null +++ b/debian/freeswitch-systemd.freeswitch.service @@ -0,0 +1,35 @@ +;;;;; Author: Travis Cross + +[Unit] +Description=freeswitch +After=syslog.target network.target local-fs.target + +[Service] +; service +Type=forking +PIDFile=/run/freeswitch/freeswitch.pid +PermissionsStartOnly=true +ExecStartPre=/bin/mkdir -p /run/freeswitch +ExecStartPre=/bin/chown freeswitch:freeswitch /run/freeswitch +ExecStart=/usr/bin/freeswitch -nc -nonat +TimeoutSec=45s +Restart=always +; exec +WorkingDirectory=/run/freeswitch +User=freeswitch +Group=freeswitch +LimitCORE=infinity +LimitNOFILE=100000 +LimitNPROC=60000 +LimitSTACK=240 +LimitRTPRIO=infinity +LimitRTTIME=7000000 +IOSchedulingClass=realtime +IOSchedulingPriority=2 +CPUSchedulingPolicy=rr +CPUSchedulingPriority=89 +UMask=0007 + +[Install] +WantedBy=multi-user.target + diff --git a/debian/freeswitch-systemd.install b/debian/freeswitch-systemd.install new file mode 100644 index 0000000000..d647282ecd --- /dev/null +++ b/debian/freeswitch-systemd.install @@ -0,0 +1 @@ +/lib/systemd/system/freeswitch.service diff --git a/debian/freeswitch-sysvinit.freeswitch.default b/debian/freeswitch-sysvinit.freeswitch.default new file mode 100644 index 0000000000..1c939b55d0 --- /dev/null +++ b/debian/freeswitch-sysvinit.freeswitch.default @@ -0,0 +1,2 @@ +# /etc/default/freeswitch +DAEMON_OPTS="" diff --git a/debian/freeswitch-sysvinit.freeswitch.init b/debian/freeswitch-sysvinit.freeswitch.init new file mode 100644 index 0000000000..d02229b4e9 --- /dev/null +++ b/debian/freeswitch-sysvinit.freeswitch.init @@ -0,0 +1,116 @@ +#!/bin/sh +### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- +### BEGIN INIT INFO +# Provides: freeswitch +# Required-Start: $network $local_fs +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: FreeSWITCH Softswitch +# Description: FreeSWITCH Softswitch +### END INIT INFO + +# Author: Travis Cross + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC=freeswitch +NAME=freeswitch +DAEMON=/usr/bin/freeswitch +DAEMON_ARGS="-u freeswitch -g freeswitch -rp -nc -nonat" +USER=freeswitch +PIDFILE=/var/run/$NAME/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +WORKDIR=/var/lib/$NAME + +[ -x $DAEMON ] || exit 0 +[ -r /etc/default/$NAME ] && . /etc/default/$NAME +. /lib/init/vars.sh +. /lib/lsb/init-functions + +do_start() { + start-stop-daemon --start --quiet \ + --pidfile $PIDFILE --exec $DAEMON --name $NAME --user $USER \ + --test > /dev/null \ + || return 1 + ulimit -s 240 + start-stop-daemon --start --quiet \ + --pidfile $PIDFILE --exec $DAEMON --name $NAME --user $USER \ + --chdir $WORKDIR -- $DAEMON_ARGS $DAEMON_OPTS \ + || return 2 + return 0 +} + +stop_fs() { + start-stop-daemon --stop --quiet \ + --pidfile $PIDFILE --name $NAME --user $USER \ + --retry=TERM/30/KILL/5 +} + +stop_fs_children() { + start-stop-daemon --stop --quiet \ + --exec $DAEMON \ + --oknodo --retry=0/30/KILL/5 +} + +do_stop() { + stop_fs + RETVAL="$?" + [ "$RETVAL" -eq 2 ] && return 2 + stop_fs_children + [ "$?" -eq 2 ] && return 2 + rm -f $PIDFILE + return "$RETVAL" +} + +do_reload() { + start-stop-daemon --stop --quiet \ + --pidfile $PIDFILE --name $NAME --user $USER \ + --signal HUP +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + reload|force-reload) + log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + log_end_msg $? + ;; + restart) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1|*) log_end_msg 1 ;; + esac + ;; + *) log_end_msg 1 ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +exit 0 diff --git a/debian/freeswitch.install b/debian/freeswitch.install new file mode 100644 index 0000000000..5c43763aa5 --- /dev/null +++ b/debian/freeswitch.install @@ -0,0 +1,3 @@ +/usr/bin +/usr/lib/libfreeswitch.so* +/usr/share/freeswitch/scripts diff --git a/debian/freeswitch.postinst b/debian/freeswitch.postinst new file mode 100644 index 0000000000..d1bbe72c15 --- /dev/null +++ b/debian/freeswitch.postinst @@ -0,0 +1,41 @@ +#!/bin/sh +set -e + +case "$1" in + configure) + if ! getent group freeswitch >/dev/null; then + groupadd --system freeswitch + fi + if ! getent passwd freeswitch >/dev/null; then + useradd --system -g freeswitch -Gaudio \ + -d /var/run/freeswitch \ + -s /bin/false \ + -e '' \ + -c 'FreeSWITCH' \ + freeswitch + fi + for x in \ + /var/lib/freeswitch \ + /var/lib/freeswitch/db \ + /var/lib/freeswitch/recordings \ + /var/lib/freeswitch/storage \ + /var/log/freeswitch \ + /var/run/freeswitch; + do + mkdir -p $x + chown -R freeswitch:freeswitch $x + chmod -R o-rwx,g+u $x + done + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/freeswitch.postrm b/debian/freeswitch.postrm new file mode 100644 index 0000000000..5e21c84397 --- /dev/null +++ b/debian/freeswitch.postrm @@ -0,0 +1,30 @@ +#!/bin/sh +set -e + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + if [ "$1" = "purge" ]; then + if getent passwd freeswitch >/dev/null; then + userdel freeswitch + fi + if getent group freeswitch >/dev/null; then + groupdel freeswitch + fi + for x in \ + /var/lib/freeswitch \ + /var/log/freeswitch \ + /var/run/freeswitch; + do + rm -rf $x + done + fi + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/freeswitch.preinst b/debian/freeswitch.preinst new file mode 100644 index 0000000000..56dc52da8f --- /dev/null +++ b/debian/freeswitch.preinst @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/freeswitch.prerm b/debian/freeswitch.prerm new file mode 100644 index 0000000000..c2d46bc865 --- /dev/null +++ b/debian/freeswitch.prerm @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000000..3889b7e9ee --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,13 @@ +# git-buildpackage +[git-buildpackage] +verbose=True +ignore-branch=True +ignore-new=True +upstream-branch=master +debian-branch=master +upstream-tree=branch +tag=False +force-create=True +compression=xz +compression-level=9ev +builder=debuild --prepend-path=/usr/lib/ccache -eFS_* -eCCACHE_* -i\.git -I.git -Zxz -z9 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000000..c0b6bf9038 --- /dev/null +++ b/debian/rules @@ -0,0 +1,116 @@ +#!/usr/bin/make -f +# -*- mode:makefile -*- +#export DH_VERBOSE=1 + +FS_CFLAGS?=-ggdb3 -O2 +FS_CPPFLAGS?= +FS_CXXFLAGS?=$(FS_CFLAGS) +FS_INSTALL_SOUNDS?=true +export PATH?=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export CFLAGS=$(FS_CFLAGS) +export CPPFLAGS=$(FS_CPPFLAGS) +export CXXFLAGS=$(FS_CXXFLAGS) + +show_vars= \ + echo; \ + echo "Making target $@"; \ + echo "PATH='$(PATH)'"; \ + echo "CFLAGS='$(CFLAGS)'"; \ + echo "CXXFLAGS='$(CXXFLAGS)'"; \ + echo "CCACHE_DIR='$(CCACHE_DIR)'"; \ + echo "FS_INSTALL_SOUNDS='$(FS_INSTALL_SOUNDS)'"; \ + echo; + +binary: + @$(call show_vars) + dh $@ +binary-arch: + @$(call show_vars) + dh $@ +binary-indep: + @$(call show_vars) + dh $@ +build: debian/.stamp-bootstrap + @$(call show_vars) + dh $@ +clean: + dh $@ + +override_dh_auto_clean: + dh_clean + +.stamp-bootstrap: + @$(call show_vars) + ./bootstrap.sh -j + touch $@ + +.stamp-configure: .stamp-bootstrap + @$(call show_vars) + touch noreg + cp debian/modules_.conf modules.conf + ./configure -C --enable-portable-binary --disable-dependency-tracking \ + --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ + --with-gnu-ld --with-python --with-erlang --with-openssl \ + --enable-core-odbc-support --enable-zrtp \ + --prefix=/usr --localstatedir=/var \ + --sysconfdir=/etc/freeswitch \ + --with-modinstdir=/usr/lib/freeswitch/mod \ + --with-rundir=/var/run/freeswitch \ + --with-logfiledir=/var/log/freeswitch \ + --with-dbdir=/var/lib/freeswitch/db \ + --with-htdocsdir=/usr/share/freeswitch/htdocs \ + --with-soundsdir=/usr/share/freeswitch/sounds \ + --with-grammardir=/usr/share/freeswitch/grammar \ + --with-scriptdir=/usr/share/freeswitch/scripts \ + --with-recordingsdir=/var/lib/freeswitch/recordings + touch $@ + +override_dh_auto_configure: .stamp-configure + +.stamp-build: .stamp-configure + @$(call show_vars) + make + touch $@ + +override_dh_auto_build: .stamp-build + +override_dh_auto_test: + +override_dh_strip: + dh_strip -a -k + ./debian/create-dbg-pkgs.sh + +override_dh_auto_install: + dh_auto_install + -$(FS_INSTALL_SOUNDS) && DESTDIR=debian/tmp make cd-sounds-install cd-moh-install + mkdir -p debian/tmp/lib/systemd/system + install -m0644 debian/freeswitch-systemd.freeswitch.service debian/tmp/lib/systemd/system/freeswitch.service + +override_dh_installinit: + dh_installinit -pfreeswitch-sysvinit --name=freeswitch + +debian-bootstrap: debian/.stamp-bootstrap +debian/.stamp-bootstrap: + (cd debian && ./bootstrap.sh) + touch $@ + +binary-basetest: + @$(call show_vars) + echo "applications/mod_commands" > debian/modules.conf + (cd debian && ./bootstrap.sh) + dh binary + +binary-quicktest: + @$(call show_vars) + echo "applications/mod_commands" > debian/modules.conf + (cd debian && ./bootstrap.sh) + env FS_INSTALL_SOUNDS=false dh binary \ + -Nfreeswitch-sounds-music-8k \ + -Nfreeswitch-sounds-music-16k \ + -Nfreeswitch-sounds-music-32k \ + -Nfreeswitch-sounds-music-48k \ + -Nfreeswitch-sounds-en-us-callie-8k \ + -Nfreeswitch-sounds-en-us-callie-16k \ + -Nfreeswitch-sounds-en-us-callie-32k \ + -Nfreeswitch-sounds-en-us-callie-48k + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000000..163aaf8d82 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) From b281e1340b6884c59124b81fc9acbb2c5dc7969a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 20:23:53 +0000 Subject: [PATCH 308/630] debian: place build utilities in a single file --- debian/rules | 2 +- debian/{create-dbg-pkgs.sh => util.sh} | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) rename debian/{create-dbg-pkgs.sh => util.sh} (85%) diff --git a/debian/rules b/debian/rules index c0b6bf9038..00f753f19e 100755 --- a/debian/rules +++ b/debian/rules @@ -78,7 +78,7 @@ override_dh_auto_test: override_dh_strip: dh_strip -a -k - ./debian/create-dbg-pkgs.sh + ./debian/util.sh create-dbg-pkgs override_dh_auto_install: dh_auto_install diff --git a/debian/create-dbg-pkgs.sh b/debian/util.sh similarity index 85% rename from debian/create-dbg-pkgs.sh rename to debian/util.sh index b6a33fa617..3b45ec391f 100755 --- a/debian/create-dbg-pkgs.sh +++ b/debian/util.sh @@ -13,5 +13,9 @@ create_dbg_pkgs () { done } -create_dbg_pkgs +cmd="$1" +shift +case "$cmd" in + create-dbg-pkgs) create_dbg_pkgs ;; +esac From 75da8722590fc9290c3275e71d9c3807af8406ab Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 20:28:46 +0000 Subject: [PATCH 309/630] debian: stylistic harmony --- debian/bootstrap.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index ecf3070b9a..6c41ebc817 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -42,7 +42,7 @@ err () { exit 1 } -xread() { +xread () { local xIFS="$IFS" IFS='' read $@ @@ -93,7 +93,7 @@ map_fs_modules () { done } -map_modules() { +map_modules () { local filterfn="$1" percatfns="$2" permodfns="$3" for x in $parse_dir/*; do test -d $x || continue @@ -592,7 +592,7 @@ accumulate_build_depends () { fi } -genmodctl_new_mod() { +genmodctl_new_mod () { grep -e "^Module: ${module}$" control-modules >/dev/null && return 0 cat </dev/null && return 0 cat < control-modules.preparse local category="" local module_name="" @@ -678,7 +678,7 @@ parse_mod_control() { done < control-modules.preparse } -debian_wrap() { +debian_wrap () { local fl=true echo "$1" | fold -s -w 69 | while xread l; do local v="$(echo "$l" | sed -e 's/ *$//g')" @@ -691,11 +691,11 @@ debian_wrap() { done } -genmodctl_cat() { +genmodctl_cat () { (echo "## mod/$category"; echo) } -genmodctl_mod() { +genmodctl_mod () { echo "Module: $module" echo "Description: $description" echo "$long_description" | fold -s -w 69 | while xread l; do From 6e01f3179880704f38552c398c25b0509f58394a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 20:59:09 +0000 Subject: [PATCH 310/630] debian: add a utility to output build dependencies for aptitude --- debian/util.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index 3b45ec391f..6deed193e9 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -2,6 +2,20 @@ ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- ##### Author: Travis Cross +err () { + echo "$0 error: $1" >&2 + exit 1 +} + +xread () { + local xIFS="$IFS" + IFS='' + read $@ + local ret=$? + IFS="$xIFS" + return $ret +} + create_dbg_pkgs () { for x in debian/*; do test ! -d $x && continue @@ -13,9 +27,37 @@ create_dbg_pkgs () { done } +list_build_depends () { + test -f debian/.stamp-bootstrap || (cd debian && ./bootstrap.sh) + local deps="" found=false + while xread l; do + if [ "${l%%:*}" = "Build-Depends" ]; then + deps="${l#*:}" + found=true + continue + elif $found; then + if [ -z "$l" ]; then + # is newline + break + elif [ -z "${l##\#*}" ]; then + # is comment + continue + elif [ -z "${l## *}" ]; then + # is continuation line + deps="$deps $(echo "$l" | sed -e 's/^ *//' -e 's/ *([^)]*)//g' -e 's/,//g')" + else + # is a new header + break + fi + fi + done < debian/control + echo "${deps# }" +} + cmd="$1" shift case "$cmd" in create-dbg-pkgs) create_dbg_pkgs ;; + list-build-depends) list_build_depends ;; esac From 6c7548925ce8a8798bb1bafb85300e0135a892fd Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 20:59:50 +0000 Subject: [PATCH 311/630] debian: make utilities work when run from within debian/ --- debian/util.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 6deed193e9..cc4bf51f61 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -2,6 +2,10 @@ ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- ##### Author: Travis Cross +pwd="$(pwd)" +ddir="debian" +[ "${pwd##*/}" = "debian" ] && ddir="." + err () { echo "$0 error: $1" >&2 exit 1 @@ -17,7 +21,7 @@ xread () { } create_dbg_pkgs () { - for x in debian/*; do + for x in $ddir/*; do test ! -d $x && continue test "$x" = "tmp" -o "$x" = "source" && continue test ! "$x" = "${x%-dbg}" && continue @@ -28,7 +32,7 @@ create_dbg_pkgs () { } list_build_depends () { - test -f debian/.stamp-bootstrap || (cd debian && ./bootstrap.sh) + test -f $ddir/.stamp-bootstrap || (cd $ddir && ./bootstrap.sh) local deps="" found=false while xread l; do if [ "${l%%:*}" = "Build-Depends" ]; then @@ -50,7 +54,7 @@ list_build_depends () { break fi fi - done < debian/control + done < $ddir/control echo "${deps# }" } From 38379a5f0db553d9f1bc8c901dcfc9121ce9af40 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 23:25:18 +0000 Subject: [PATCH 312/630] debian: make utilities work when run from any arbitrary directory --- debian/util.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index cc4bf51f61..24605d7073 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -2,9 +2,8 @@ ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- ##### Author: Travis Cross -pwd="$(pwd)" -ddir="debian" -[ "${pwd##*/}" = "debian" ] && ddir="." +ddir="." +[ -n "${0%/*}" ] && ddir="${0%/*}" err () { echo "$0 error: $1" >&2 From b13f18ba8d531e0939a6589231e78c1a0b2a571b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 21:05:24 +0000 Subject: [PATCH 313/630] debian: add a utility to install necessary build dependencies --- debian/util.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index 24605d7073..2d00771ab7 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -57,10 +57,23 @@ list_build_depends () { echo "${deps# }" } +install_build_depends () { + local apt="" + if [ -n "$(which aptitude)" ]; then + apt=$(which aptitude) + elif [ -n "$(which apt-get)" ]; then + apt=$(which apt-get) + else + err "Can't find apt-get or aptitude; are you running on debian?" + fi + $apt install $(list_build_depends) +} + cmd="$1" shift case "$cmd" in create-dbg-pkgs) create_dbg_pkgs ;; list-build-depends) list_build_depends ;; + install-build-depends) install_build_depends ;; esac From 0a00e7e5ebcd7244defb0eaec5569947ddf7fd9f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 21:08:36 +0000 Subject: [PATCH 314/630] debian: install build dependencies without confirming --- debian/util.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/util.sh b/debian/util.sh index 2d00771ab7..d5c9b23dbb 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -66,7 +66,7 @@ install_build_depends () { else err "Can't find apt-get or aptitude; are you running on debian?" fi - $apt install $(list_build_depends) + $apt install -y $(list_build_depends) } cmd="$1" From fa4e32984730febc9bfb9481e6c0b98163b636b3 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 21:10:47 +0000 Subject: [PATCH 315/630] debian: add a makefile rule to install build deps --- debian/rules | 5 +++++ debian/util.sh | 1 + 2 files changed, 6 insertions(+) diff --git a/debian/rules b/debian/rules index 00f753f19e..62fdd7a93d 100755 --- a/debian/rules +++ b/debian/rules @@ -94,6 +94,11 @@ debian/.stamp-bootstrap: (cd debian && ./bootstrap.sh) touch $@ +build-depends: debian/.stamp-build-depends +debian/.stamp-build-depends: + ./debian/util.sh install-build-depends + touch $@ + binary-basetest: @$(call show_vars) echo "applications/mod_commands" > debian/modules.conf diff --git a/debian/util.sh b/debian/util.sh index d5c9b23dbb..e8dc26448f 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -67,6 +67,7 @@ install_build_depends () { err "Can't find apt-get or aptitude; are you running on debian?" fi $apt install -y $(list_build_depends) + touch $ddir/.stamp-build-depends } cmd="$1" From eec92b51e61382bb3737fe9793de024f7181e390 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 21:11:40 +0000 Subject: [PATCH 316/630] debian: update .gitignore for music .install files --- debian/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/.gitignore b/debian/.gitignore index ff6803d774..c8e945b368 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -8,6 +8,7 @@ /freeswitch-autotools.install /freeswitch-mod-*.install /freeswitch-conf-*.install +/freeswitch-music-*.install /freeswitch-sounds-*.install /*.log /*.substvars From a943189e3dc422d94dd83a5305ced783384a5229 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 21:16:04 +0000 Subject: [PATCH 317/630] debian: update .gitignore for new debian install directories --- debian/.gitignore | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/.gitignore b/debian/.gitignore index c8e945b368..777b48dd70 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -15,8 +15,15 @@ /*.debhelper /tmp /freeswitch/ +/freeswitch-conf*/ /freeswitch-dbg/ /freeswitch-dev/ /freeswitch-doc/ +/freeswitch-htdocs-slim*/ +/freeswitch-init*/ +/freeswitch-meta*/ /freeswitch-mod-*/ -/freeswitch-sounds-*/ +/freeswitch-music*/ +/freeswitch-sounds*/ +/freeswitch-systemd/ +/freeswitch-sysvinit/ From d95ac52a159acf82f4eb44faf51f2daa77848a75 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 21:18:06 +0000 Subject: [PATCH 318/630] correct some module .gitignore entries --- src/mod/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/.gitignore b/src/mod/.gitignore index 064b64c73d..c4ba547b10 100644 --- a/src/mod/.gitignore +++ b/src/mod/.gitignore @@ -63,5 +63,7 @@ /loggers/mod_logfile/Makefile /loggers/mod_syslog/Makefile /say/mod_say_en/Makefile +/say/mod_say_ja/Makefile /say/mod_say_ru/Makefile +/timers/mod_posix_timer/Makefile /timers/mod_timerfd/Makefile From d281cf8ee8a2b6e15fa7d6e36f371bbdf05fea7a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 23:33:17 +0000 Subject: [PATCH 319/630] debian: correct indentation level --- debian/README.source | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debian/README.source b/debian/README.source index 9f20a9d4a2..3ecd6e1294 100644 --- a/debian/README.source +++ b/debian/README.source @@ -48,10 +48,10 @@ The format of debian/modules.conf is: To build this package, I recommend running the following from the root directory of your FS git working tree: - mkdir ../sounds - export FS_SOUNDS_DIR=$(pwd)/../sounds - git clean -fdx && git reset --hard HEAD - (cd debian && ./bootstrap.sh) - schedtool -B -e git-buildpackage --git-verbose -us -uc + mkdir ../sounds + export FS_SOUNDS_DIR=$(pwd)/../sounds + git clean -fdx && git reset --hard HEAD + (cd debian && ./bootstrap.sh) + schedtool -B -e git-buildpackage --git-verbose -us -uc - -- Travis Cross , Sat, 5 May 2012 08:04:19 +0000 + -- Travis Cross , Sat, 5 May 2012 23:32:53 +0000 From f4f0d7e60fc8a4259312d4fcebe55b57cfac07a6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 5 May 2012 23:43:31 +0000 Subject: [PATCH 320/630] debian: add instructions on how to quickly setup a demo system --- debian/README.Debian | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/README.Debian b/debian/README.Debian index 607e37ec18..72be2ce528 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -15,4 +15,12 @@ packages, it will install the corresponding sample configuration to /usr/share/freeswitch/conf and you'll need to copy the bits you need to /etc/freeswitch. - -- Travis Cross , Sat, 5 May 2012 06:31:24 +0000 +If you just want to get a working demo system up quickly, I'd +recommend doing the following: + + aptitude install -y -r -o APT::Install-Suggests=true freeswitch-meta-vanilla + cp -a /usr/share/freeswitch/conf/vanilla /etc/freeswitch + /etc/init.d/freeswitch start + fs_cli + + -- Travis Cross , Sat, 5 May 2012 23:41:29 +0000 From 3f1293fa6bbc2a96964d9a4b9483f838061a128e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 00:17:20 +0000 Subject: [PATCH 321/630] ci: use bootstrap -j --- scripts/ci/src_tarball.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index 1055c6c481..59c448ad43 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -64,7 +64,7 @@ cp -r . $dst_dir cd $dst_dir -./bootstrap.sh +./bootstrap.sh -j mv bootstrap.sh rebootstrap.sh rm -f docs/AUTHORS rm -f docs/COPYING From d25b2a3e9f13e229cd52b6a016c9305919cb812d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 00:24:57 +0000 Subject: [PATCH 322/630] ci: modify our copy of configure.in rather than the original --- scripts/ci/src_tarball.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index 59c448ad43..d0f0565aa7 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -38,18 +38,6 @@ fi #stash_saved=1 #fi -sed -e "s|\(AC_SUBST(SWITCH_VERSION_MAJOR, \[\).*\(\])\)|\1$major\2|" \ - -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ - -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ - -e "s|\(AC_INIT(\[freeswitch\], \[\).*\(\], BUG-REPORT-ADDRESS)\)|\1$major.$minor.$micro\2|" \ - -i configure.in - -if [ -n "$rev" ]; then - sed -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ - -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ - -i configure.in -fi - #git add configure.in #git commit -m "Release freeswitch-$ver" #git tag -a -m "freeswitch-$ver release" v$ver @@ -64,6 +52,18 @@ cp -r . $dst_dir cd $dst_dir +sed -e "s|\(AC_SUBST(SWITCH_VERSION_MAJOR, \[\).*\(\])\)|\1$major\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ + -e "s|\(AC_INIT(\[freeswitch\], \[\).*\(\], BUG-REPORT-ADDRESS)\)|\1$major.$minor.$micro\2|" \ + -i configure.in + +if [ -n "$rev" ]; then + sed -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ + -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ + -i configure.in +fi + ./bootstrap.sh -j mv bootstrap.sh rebootstrap.sh rm -f docs/AUTHORS From 52dbfabd0b1e1d9f8f0307460e22d18c68e3d246 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 01:08:44 +0000 Subject: [PATCH 323/630] ci: remove obsolete code --- scripts/ci/src_tarball.sh | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index d0f0565aa7..1067f0902d 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -32,21 +32,6 @@ if [ -d "$dst_dir" ]; then exit 1; fi -# save local changes -#ret=$(git stash save "Save uncommitted changes before tagging.") -#if echo $ret | grep "^Saved"; then - #stash_saved=1 -#fi - -#git add configure.in -#git commit -m "Release freeswitch-$ver" -#git tag -a -m "freeswitch-$ver release" v$ver - -#git clone $src_repo $dst_dir -#if [ -n "$stash_saved" ]; then -# git stash pop -#fi - mkdir -p $dst_dir cp -r . $dst_dir From 000e78df0f698c9ed2f5989cec72a0678c0526e6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 01:52:50 +0000 Subject: [PATCH 324/630] ci: style --- scripts/ci/debsrcbuilder.sh | 23 ++++++++++++----------- scripts/ci/src_tarball.sh | 16 ++++++++-------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index ee83b6325b..63e3a3db97 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -24,22 +24,23 @@ input_distro=$3 distro=${input_distro:="unstable"} dst_version="$major.$minor.$micro" -dst_name="freeswitch-$dst_version" +dst_name="freeswitch-${dst_version}" dst_parent="/tmp/" -dst_dir="/tmp/$dst_name" -dst_full_version="$dst_version.$build" -dst_full_name="freeswitch-$dst_full_version" +dst_dir="/tmp/${dst_name}" +dst_full_version="${dst_version}.${build}" +dst_full_name="freeswitch-${dst_full_version}" mkdir -p $src_repo/debbuild/ -tar xjf src_dist/$dst_name.tar.bz2 -C $src_repo/debbuild/ -mv $src_repo/debbuild/$dst_name $src_repo/debbuild/$dst_full_name -mv src_dist/$dst_name.tar.bz2 $src_repo/debbuild/freeswitch_${dst_full_version}.orig.tar.bz2 +tar xjf src_dist/${dst_name}.tar.bz2 -C ${src_repo}/debbuild/ +mv ${src_repo}/debbuild/${dst_name} ${src_repo}/debbuild/${dst_full_name} +mv src_dist/${dst_name}.tar.bz2 \ + ${src_repo}/debbuild/freeswitch_${dst_full_version}.orig.tar.bz2 # Build the debian source package first, from the source tar file. -echo "changing directory to $src_repo/debbuild/$dst_full_name" +echo "changing directory to ${src_repo}/debbuild/${dst_full_name}" -cd $src_repo/debbuild/$dst_full_name +cd ${src_repo}/debbuild/${dst_full_name} dch -v "${dst_full_version}-1" -M --force-distribution -D "$distro" "Nightly Build" @@ -52,8 +53,8 @@ if [ $status -gt 0 ]; then else cat 1>&2 < $dst_name.tar.gz || echo "gzip not available" -bzip2 -z -k $dst_name.tar || echo "bzip2 not available" -# xz -z -9 -k $dst_name.tar || echo "xz / xz-utils not available" +# gzip -9 -c ${dst_name}.tar > $dst_name.tar.gz || echo "gzip not available" +bzip2 -z -k ${dst_name}.tar || echo "bzip2 not available" +# xz -z -9 -k ${dst_name}.tar || echo "xz / xz-utils not available" -rm -rf $dst_name.tar $dst_dir +rm -rf ${dst_name}.tar $dst_dir -mkdir -p $src_repo/src_dist -mv -f $dst_name.tar.* $src_repo/src_dist +mkdir -p ${src_repo}/src_dist +mv -f ${dst_name}.tar.* ${src_repo}/src_dist cat 1>&2 < Date: Sun, 6 May 2012 02:07:28 +0000 Subject: [PATCH 325/630] ci: remove unused variable --- scripts/ci/src_tarball.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index 9dd755fae4..926ef6ec89 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -21,8 +21,6 @@ rev=$(echo "$ver" | cut -d. -f4) tmp_dir=${TMP_DIR:="/tmp"} -build="$2" - dst_name="freeswitch-$major.$minor.$micro" dst_parent="${tmp_dir}/jenkis.$$/" dst_dir="${tmp_dir}/jenkins.$$/$dst_name" @@ -74,7 +72,7 @@ mv -f ${dst_name}.tar.* ${src_repo}/src_dist cat 1>&2 < Date: Sun, 6 May 2012 02:08:29 +0000 Subject: [PATCH 326/630] ci: automatically add datestamp to debian nightly build --- scripts/ci/debsrcbuilder.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 63e3a3db97..4d9175c4ac 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -19,7 +19,9 @@ minor=$(echo "$ver" | cut -d. -f2) micro=$(echo "$ver" | cut -d. -f3) rev=$(echo "$ver" | cut -d. -f4) -build="$2" +datestamp="$(date +%Y%m%dT%H%M%SZ)" +nightly="n${datestamp}" +build="b$2" input_distro=$3 distro=${input_distro:="unstable"} @@ -27,7 +29,7 @@ dst_version="$major.$minor.$micro" dst_name="freeswitch-${dst_version}" dst_parent="/tmp/" dst_dir="/tmp/${dst_name}" -dst_full_version="${dst_version}.${build}" +dst_full_version="${dst_version}.${nightly}.${build}" dst_full_name="freeswitch-${dst_full_version}" mkdir -p $src_repo/debbuild/ @@ -42,7 +44,9 @@ echo "changing directory to ${src_repo}/debbuild/${dst_full_name}" cd ${src_repo}/debbuild/${dst_full_name} -dch -v "${dst_full_version}-1" -M --force-distribution -D "$distro" "Nightly Build" +dch -v "${dst_full_version}-1" \ + -M --force-distribution -D "$distro" \ + "Nightly build at ${datestamp}." dpkg-buildpackage -rfakeroot -S -us -uc From 02c0637c0c22e8b1e4d7e94ccfeda2f4b9ff15b4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 02:58:16 +0000 Subject: [PATCH 327/630] ci: factor out common code --- scripts/ci/common.sh | 29 +++++++++++++++++++++++++++++ scripts/ci/debsrcbuilder.sh | 21 ++++----------------- scripts/ci/rpmbuilder.sh | 21 ++++----------------- scripts/ci/sounds-en-us-callie.sh | 20 ++++---------------- scripts/ci/src_tarball.sh | 22 ++++------------------ 5 files changed, 45 insertions(+), 68 deletions(-) create mode 100755 scripts/ci/common.sh diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh new file mode 100755 index 0000000000..61f8549d6f --- /dev/null +++ b/scripts/ci/common.sh @@ -0,0 +1,29 @@ +#!/bin/bash +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- + +src_repo="$(pwd)" +tmp_dir=${TMP_DIR:="/tmp"} + +parse_version () { + local ver="$1" + local major=$(echo "$ver" | cut -d. -f1) + local minor=$(echo "$ver" | cut -d. -f2) + local micro=$(echo "$ver" | cut -d. -f3) + local rev=$(echo "$ver" | cut -d. -f4) + echo "ver='$ver'" + echo "major='$major'" + echo "minor='$minor'" + echo "micro='$micro'" + echo "rev='$rev'" +} + +if [ ! -d .git ]; then + echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 + exit 1; +fi + +if [ -z "$1" ]; then + echo "usage: $0 MAJOR.MINOR.MICRO[.REVISION] BUILD_NUMBER" 1>&2 + exit 1; +fi + diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 4d9175c4ac..3551f3fc49 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -1,24 +1,11 @@ #!/bin/bash ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- -src_repo="$(pwd)" - -if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; -fi - -if [ -z "$1" ]; then - echo "usage: ./scripts/ci/debbuilder.sh MAJOR.MINOR.MICRO[.REVISION] BUILD_NUMBER" 1>&2 - exit 1; -fi - -ver="$1" -major=$(echo "$ver" | cut -d. -f1) -minor=$(echo "$ver" | cut -d. -f2) -micro=$(echo "$ver" | cut -d. -f3) -rev=$(echo "$ver" | cut -d. -f4) +sdir="." +[ -n "${0%/*}" ] && sdir="${0%/*}" +. $sdir/common.sh +eval $(parse_version "$1") datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" build="b$2" diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 55e484d014..5f2dd20ec6 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -1,24 +1,11 @@ #!/bin/bash ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- -src_repo="$(pwd)" - -if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; -fi - -if [ -z "$1" ]; then - echo "usage: ./scripts/ci/rpmbuilder.sh MAJOR.MINOR.MICRO[.REVISION] BUILD_NUMBER" 1>&2 - exit 1; -fi - -ver="$1" -major=$(echo "$ver" | cut -d. -f1) -minor=$(echo "$ver" | cut -d. -f2) -micro=$(echo "$ver" | cut -d. -f3) -rev=$(echo "$ver" | cut -d. -f4) +sdir="." +[ -n "${0%/*}" ] && sdir="${0%/*}" +. $sdir/common.sh +eval $(parse_version "$1") build="$2" dst_name="freeswitch-$major.$minor.$micro" diff --git a/scripts/ci/sounds-en-us-callie.sh b/scripts/ci/sounds-en-us-callie.sh index 1e7ec20c38..fbcf1ea422 100755 --- a/scripts/ci/sounds-en-us-callie.sh +++ b/scripts/ci/sounds-en-us-callie.sh @@ -1,23 +1,11 @@ #!/bin/bash ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- -src_repo="$(pwd)" - -if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; -fi - -if [ -z "$1" ]; then - echo "usage: ./scripts/ci/rpmbuilder.sh MAJOR.MINOR.MICRO[.REVISION] BUILD_NUMBER" 1>&2 - exit 1; -fi - -ver="$1" -major=$(echo "$ver" | cut -d. -f1) -minor=$(echo "$ver" | cut -d. -f2) -micro=$(echo "$ver" | cut -d. -f3) +sdir="." +[ -n "${0%/*}" ] && sdir="${0%/*}" +. $sdir/common.sh +eval $(parse_version "$1") build="$2" cd rpmbuild/SOURCES diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index 926ef6ec89..27c9c77a8a 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -1,25 +1,11 @@ #!/bin/bash ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- -src_repo="$(pwd)" +sdir="." +[ -n "${0%/*}" ] && sdir="${0%/*}" +. $sdir/common.sh -if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; -fi - -if [ -z "$1" ]; then - echo "usage: ./scripts/dailys.sh MAJOR.MINOR.MICRO[.REVISION] BUILD_NUMBER" 1>&2 - exit 1; -fi - -ver="$1" -major=$(echo "$ver" | cut -d. -f1) -minor=$(echo "$ver" | cut -d. -f2) -micro=$(echo "$ver" | cut -d. -f3) -rev=$(echo "$ver" | cut -d. -f4) - -tmp_dir=${TMP_DIR:="/tmp"} +eval $(parse_version "$1") dst_name="freeswitch-$major.$minor.$micro" dst_parent="${tmp_dir}/jenkis.$$/" From 2769fc6585f2892e1ddcf6119c9f02b1dbde1611 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 01:12:08 +0000 Subject: [PATCH 328/630] ci: add support for more flexible version numbers --- scripts/ci/common.sh | 40 +++++++++++++++++++++++++++++++------ scripts/ci/debsrcbuilder.sh | 2 +- scripts/ci/rpmbuilder.sh | 6 +++--- scripts/ci/src_tarball.sh | 7 +++++-- 4 files changed, 43 insertions(+), 12 deletions(-) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index 61f8549d6f..1d941d2d5a 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -5,16 +5,44 @@ src_repo="$(pwd)" tmp_dir=${TMP_DIR:="/tmp"} parse_version () { - local ver="$1" - local major=$(echo "$ver" | cut -d. -f1) - local minor=$(echo "$ver" | cut -d. -f2) - local micro=$(echo "$ver" | cut -d. -f3) - local rev=$(echo "$ver" | cut -d. -f4) + local ver="$1" major="" minor="" micro="" rev="" + local next=major + for x in $(echo "$1" | sed -e 's/\([._~-]\)/ \1 /g'); do + if [ $next = rev ]; then + rev="${rev}${x}" + elif [ "$x" = "." ] || [ "$x" = "_" ] || [ "$x" = "~" ] || [ "$x" = "-" ]; then + if [ "$x" = "_" ] || [ "$x" = "~" ] || [ "$x" = "-" ]; then + next=rev + eval $next='$x' + else + case $next in + major) next=minor;; + minor) next=micro;; + micro) next=rev;; + esac + fi + else + local tmp="$(eval echo \$$next)" + eval $next='${tmp}${x}' + fi + done + local cmajor cminor cmicro crev cver + cmajor=${major:="0"} + cminor=${minor:="0"} + cmicro=${micro:="0"} + crev="$(echo "$rev" | sed -e 's/[._~-]//')" + cver="${cmajor}.${cminor}.${cmicro}" + [ -n "$crev" ] && cver="${cver}.${crev}" echo "ver='$ver'" echo "major='$major'" echo "minor='$minor'" echo "micro='$micro'" echo "rev='$rev'" + echo "cver='$cver'" + echo "cmajor='$cmajor'" + echo "cminor='$cminor'" + echo "cmicro='$cmicro'" + echo "crev='$crev'" } if [ ! -d .git ]; then @@ -23,7 +51,7 @@ if [ ! -d .git ]; then fi if [ -z "$1" ]; then - echo "usage: $0 MAJOR.MINOR.MICRO[.REVISION] BUILD_NUMBER" 1>&2 + echo "usage: $0 " 1>&2 exit 1; fi diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 3551f3fc49..75f7026651 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -12,7 +12,7 @@ build="b$2" input_distro=$3 distro=${input_distro:="unstable"} -dst_version="$major.$minor.$micro" +dst_version="$ver" dst_name="freeswitch-${dst_version}" dst_parent="/tmp/" dst_dir="/tmp/${dst_name}" diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 5f2dd20ec6..d5598234ec 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -8,7 +8,7 @@ sdir="." eval $(parse_version "$1") build="$2" -dst_name="freeswitch-$major.$minor.$micro" +dst_name="freeswitch-$cmajor.$cminor.$cmicro" dst_parent="/tmp/" dst_dir="/tmp/$dst_name" @@ -16,7 +16,7 @@ mkdir -p $src_repo/rpmbuild/{SOURCES,BUILD,BUILDROOT,i386,x86_64,SPECS} cd $src_repo -rpmbuild --define "VERSION_NUMBER $ver" \ +rpmbuild --define "VERSION_NUMBER $cver" \ --define "BUILD_NUMBER $build" \ --define "_topdir %(pwd)/rpmbuild" \ --define "_rpmdir %{_topdir}" \ @@ -33,7 +33,7 @@ mv $src_repo/rpmbuild/*/*.rpm $src_repo/RPMS/. cat 1>&2 < $dst_name.tar.gz || echo "gzip not available" bzip2 -z -k ${dst_name}.tar || echo "bzip2 not available" +cp -al ${dst_name}.tar.bz2 ${dst_cname}.tar.bz2 # xz -z -9 -k ${dst_name}.tar || echo "xz / xz-utils not available" rm -rf ${dst_name}.tar $dst_dir mkdir -p ${src_repo}/src_dist mv -f ${dst_name}.tar.* ${src_repo}/src_dist +mv -f ${dst_cname}.tar.* ${src_repo}/src_dist cat 1>&2 < Date: Sun, 6 May 2012 03:24:46 +0000 Subject: [PATCH 329/630] ci: remove bashisms and switch to #!/bin/sh --- scripts/ci/common.sh | 2 +- scripts/ci/debsrcbuilder.sh | 2 +- scripts/ci/erlang-rpm.sh | 2 +- scripts/ci/extras/erlangbuilder.sh | 4 ++-- scripts/ci/get_extra_sources.sh | 4 ++-- scripts/ci/rpmbuilder.sh | 4 ++-- scripts/ci/sounds-en-us-callie.sh | 2 +- scripts/ci/sounds-music.sh | 2 +- scripts/ci/sounds-ru-ru-elena.sh | 2 +- scripts/ci/src_tarball.sh | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index 1d941d2d5a..d0ede5aabf 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- src_repo="$(pwd)" diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 75f7026651..02ab0f363b 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- sdir="." diff --git a/scripts/ci/erlang-rpm.sh b/scripts/ci/erlang-rpm.sh index 3557b68f42..35ae226627 100755 --- a/scripts/ci/erlang-rpm.sh +++ b/scripts/ci/erlang-rpm.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- src_repo="$(pwd)" diff --git a/scripts/ci/extras/erlangbuilder.sh b/scripts/ci/extras/erlangbuilder.sh index 51a41ac3f4..dd6fdc6803 100755 --- a/scripts/ci/extras/erlangbuilder.sh +++ b/scripts/ci/extras/erlangbuilder.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- src_repo="$(pwd)" @@ -13,7 +13,7 @@ if [ -z "$1" ]; then exit 1; fi -mkdir -p $src_repo/rpmbuild/{SOURCES,BUILD,BUILDROOT,i386,x86_64,SOURCES,SPECS} +(mkdir -p rpmbuild && cd $_ && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SOURCES SPECS) cd $src_repo rpmbuild --define "_topdir %(pwd)/rpmbuild" \ diff --git a/scripts/ci/get_extra_sources.sh b/scripts/ci/get_extra_sources.sh index add57c7920..c0827c68eb 100755 --- a/scripts/ci/get_extra_sources.sh +++ b/scripts/ci/get_extra_sources.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- src_repo="$(pwd)" @@ -8,7 +8,7 @@ if [ ! -d .git ]; then exit 1; fi -mkdir -p $src_repo/rpmbuild/{SOURCES,BUILD,BUILDROOT,i386,x86_64,SOURCES,SPECS} +(mkdir -p rpmbuild && cd $_ && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SOURCES SPECS) cd $src_repo/rpmbuild/SOURCES diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index d5598234ec..36b8b1d079 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- sdir="." @@ -12,7 +12,7 @@ dst_name="freeswitch-$cmajor.$cminor.$cmicro" dst_parent="/tmp/" dst_dir="/tmp/$dst_name" -mkdir -p $src_repo/rpmbuild/{SOURCES,BUILD,BUILDROOT,i386,x86_64,SPECS} +(mkdir -p rpmbuild && cd $_ && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SPECS) cd $src_repo diff --git a/scripts/ci/sounds-en-us-callie.sh b/scripts/ci/sounds-en-us-callie.sh index fbcf1ea422..39703028ca 100755 --- a/scripts/ci/sounds-en-us-callie.sh +++ b/scripts/ci/sounds-en-us-callie.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- sdir="." diff --git a/scripts/ci/sounds-music.sh b/scripts/ci/sounds-music.sh index 118d6b717f..70e61eabec 100755 --- a/scripts/ci/sounds-music.sh +++ b/scripts/ci/sounds-music.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- src_repo="$(pwd)" diff --git a/scripts/ci/sounds-ru-ru-elena.sh b/scripts/ci/sounds-ru-ru-elena.sh index 93da3228f7..33a4f9d004 100755 --- a/scripts/ci/sounds-ru-ru-elena.sh +++ b/scripts/ci/sounds-ru-ru-elena.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- src_repo="$(pwd)" diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index a946976148..d847020380 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- sdir="." From 720e1dc9c4380dbc0574e36954e577c4dc965bb6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 03:32:11 +0000 Subject: [PATCH 330/630] ci: bootstrap the debian packaging --- scripts/ci/debsrcbuilder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 02ab0f363b..ce757bf9a4 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -30,7 +30,7 @@ mv src_dist/${dst_name}.tar.bz2 \ echo "changing directory to ${src_repo}/debbuild/${dst_full_name}" cd ${src_repo}/debbuild/${dst_full_name} - +(cd debian && ./bootstrap.sh) dch -v "${dst_full_version}-1" \ -M --force-distribution -D "$distro" \ "Nightly build at ${datestamp}." From 94d91aa4f7fa569577df0cc11f02732994d50f82 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 03:49:34 +0000 Subject: [PATCH 331/630] ci: version the debian nightly appropriately --- scripts/ci/debsrcbuilder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index ce757bf9a4..7d3172c5f4 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -16,7 +16,7 @@ dst_version="$ver" dst_name="freeswitch-${dst_version}" dst_parent="/tmp/" dst_dir="/tmp/${dst_name}" -dst_full_version="${dst_version}.${nightly}.${build}" +dst_full_version="${dst_version}~${nightly}~${build}" dst_full_name="freeswitch-${dst_full_version}" mkdir -p $src_repo/debbuild/ From d8376609d16421a8200a93fa2a78a4d7ae8ba102 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 04:11:40 +0000 Subject: [PATCH 332/630] ci: note non-base ci build dependencies --- scripts/ci/debsrcbuilder.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 7d3172c5f4..75bfe33ebc 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -31,10 +31,11 @@ echo "changing directory to ${src_repo}/debbuild/${dst_full_name}" cd ${src_repo}/debbuild/${dst_full_name} (cd debian && ./bootstrap.sh) +# dependency: libparse-debcontrol-perl dch -v "${dst_full_version}-1" \ -M --force-distribution -D "$distro" \ "Nightly build at ${datestamp}." - +# dependency: fakeroot dpkg-buildpackage -rfakeroot -S -us -uc status=$? From ab826e67ef4e98bd598be13466f1d437519bbec8 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 04:12:06 +0000 Subject: [PATCH 333/630] ci: strip comments from the control file for dch's weak parser --- scripts/ci/debsrcbuilder.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 75bfe33ebc..f8d382c807 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -31,6 +31,10 @@ echo "changing directory to ${src_repo}/debbuild/${dst_full_name}" cd ${src_repo}/debbuild/${dst_full_name} (cd debian && ./bootstrap.sh) +# dch can't handle comments in control file +(cd debian; \ + mv control control.orig; \ + grep -e '^#' -v control.orig > control) # dependency: libparse-debcontrol-perl dch -v "${dst_full_version}-1" \ -M --force-distribution -D "$distro" \ From 1f03d051e21a037cad1cffb0c24f9bff5bf3bd9f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 04:35:46 +0000 Subject: [PATCH 334/630] ci: give dch the force option in case we regress version numbers --- scripts/ci/debsrcbuilder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index f8d382c807..be768eb2e1 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -36,7 +36,7 @@ cd ${src_repo}/debbuild/${dst_full_name} mv control control.orig; \ grep -e '^#' -v control.orig > control) # dependency: libparse-debcontrol-perl -dch -v "${dst_full_version}-1" \ +dch -b -v "${dst_full_version}-1" \ -M --force-distribution -D "$distro" \ "Nightly build at ${datestamp}." # dependency: fakeroot From 29fccfc25111cef7c5e6b7a5e03bcf53f7e71609 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 04:41:53 +0000 Subject: [PATCH 335/630] ci: check if we have a simple version number --- scripts/ci/src_tarball.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index d847020380..18d4598e7d 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -50,14 +50,14 @@ tar -cvf ${dst_name}.tar $dst_name # gzip -9 -c ${dst_name}.tar > $dst_name.tar.gz || echo "gzip not available" bzip2 -z -k ${dst_name}.tar || echo "bzip2 not available" -cp -al ${dst_name}.tar.bz2 ${dst_cname}.tar.bz2 +[ "$dst_name" = "$dst_cname" ] || cp -al ${dst_name}.tar.bz2 ${dst_cname}.tar.bz2 # xz -z -9 -k ${dst_name}.tar || echo "xz / xz-utils not available" rm -rf ${dst_name}.tar $dst_dir mkdir -p ${src_repo}/src_dist mv -f ${dst_name}.tar.* ${src_repo}/src_dist -mv -f ${dst_cname}.tar.* ${src_repo}/src_dist +[ "$dst_name" = "$dst_cname" ] || mv -f ${dst_cname}.tar.* ${src_repo}/src_dist cat 1>&2 < Date: Sun, 6 May 2012 04:51:15 +0000 Subject: [PATCH 336/630] ci: reformat alpha/beta/rc versions for debian --- scripts/ci/common.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index d0ede5aabf..75236302d0 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -32,6 +32,11 @@ parse_version () { cmicro=${micro:="0"} crev="$(echo "$rev" | sed -e 's/[._~-]//')" cver="${cmajor}.${cminor}.${cmicro}" + if [ -n "${micro}" ] && echo "$micro" | grep '^\(alpha\|beta\|rc\)' >/dev/null; then + rev="~${micro}" + micro="0" + ver="${major}.${minor}${rev}" + fi [ -n "$crev" ] && cver="${cver}.${crev}" echo "ver='$ver'" echo "major='$major'" From c65aec5b49961080b7c291c5b918fcdc7b0bec75 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 04:57:57 +0000 Subject: [PATCH 337/630] ci: hard link the tarball from src_dst rather than moving --- scripts/ci/debsrcbuilder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index be768eb2e1..2941543f4c 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -23,7 +23,7 @@ mkdir -p $src_repo/debbuild/ tar xjf src_dist/${dst_name}.tar.bz2 -C ${src_repo}/debbuild/ mv ${src_repo}/debbuild/${dst_name} ${src_repo}/debbuild/${dst_full_name} -mv src_dist/${dst_name}.tar.bz2 \ +cp -al src_dist/${dst_name}.tar.bz2 \ ${src_repo}/debbuild/freeswitch_${dst_full_version}.orig.tar.bz2 # Build the debian source package first, from the source tar file. From 075dc90bdb54b8c87418bea7b734050a32129621 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 05:26:56 +0000 Subject: [PATCH 338/630] ci: build orig tarball ourselves for debian --- scripts/ci/common.sh | 23 +++++++++++++++++ scripts/ci/debsrcbuilder.sh | 49 ++++++++++++++++--------------------- scripts/ci/src_tarball.sh | 28 +++------------------ 3 files changed, 48 insertions(+), 52 deletions(-) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index 75236302d0..a570cd8008 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -50,6 +50,29 @@ parse_version () { echo "crev='$crev'" } +set_fs_ver () { + local ver="$1" major="$2" minor="$3" micro="$4" rev="$5" + sed -e "s|\(AC_SUBST(SWITCH_VERSION_MAJOR, \[\).*\(\])\)|\1$major\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ + -e "s|\(AC_INIT(\[freeswitch\], \[\).*\(\], BUG-REPORT-ADDRESS)\)|\1$ver\2|" \ + -i configure.in + if [ -n "$rev" ]; then + sed -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ + -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ + -i configure.in + fi +} + +gnuize () { + ./bootstrap.sh -j + mv bootstrap.sh rebootstrap.sh + rm -f docs/AUTHORS + rm -f docs/COPYING + rm -f docs/ChangeLog + rm -rf .git +} + if [ ! -d .git ]; then echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 exit 1; diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 2941543f4c..647efa834e 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -9,49 +9,42 @@ eval $(parse_version "$1") datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" build="b$2" -input_distro=$3 -distro=${input_distro:="unstable"} +distro=${3:="unstable"} -dst_version="$ver" -dst_name="freeswitch-${dst_version}" -dst_parent="/tmp/" -dst_dir="/tmp/${dst_name}" -dst_full_version="${dst_version}~${nightly}~${build}" -dst_full_name="freeswitch-${dst_full_version}" +fver="${ver}~${nightly}~${build}" +fname="freeswitch-$fver" +orig="freeswitch_$fver.orig" +ddir=$src_repo/debbuild +bdir=$src_repo/debbuild/$fname -mkdir -p $src_repo/debbuild/ +mkdir -p $ddir +git clone . $bdir +cd $bdir +set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" +gnuize +sleep 2 +cd $ddir +tar -c --exclude=.git -vf $orig.tar $fname +bzip2 -z -k $orig.tar +rm $orig.tar -tar xjf src_dist/${dst_name}.tar.bz2 -C ${src_repo}/debbuild/ -mv ${src_repo}/debbuild/${dst_name} ${src_repo}/debbuild/${dst_full_name} -cp -al src_dist/${dst_name}.tar.bz2 \ - ${src_repo}/debbuild/freeswitch_${dst_full_version}.orig.tar.bz2 - -# Build the debian source package first, from the source tar file. -echo "changing directory to ${src_repo}/debbuild/${dst_full_name}" - -cd ${src_repo}/debbuild/${dst_full_name} +cd $bdir (cd debian && ./bootstrap.sh) # dch can't handle comments in control file (cd debian; \ mv control control.orig; \ grep -e '^#' -v control.orig > control) # dependency: libparse-debcontrol-perl -dch -b -v "${dst_full_version}-1" \ +dch -b -v "${fver}-1" \ -M --force-distribution -D "$distro" \ "Nightly build at ${datestamp}." # dependency: fakeroot -dpkg-buildpackage -rfakeroot -S -us -uc +dpkg-buildpackage -rfakeroot -S -us -uc || exit $? -status=$? - -if [ $status -gt 0 ]; then - exit $status -else - cat 1>&2 <&2 < $dst_name.tar.gz || echo "gzip not available" bzip2 -z -k ${dst_name}.tar || echo "bzip2 not available" -[ "$dst_name" = "$dst_cname" ] || cp -al ${dst_name}.tar.bz2 ${dst_cname}.tar.bz2 # xz -z -9 -k ${dst_name}.tar || echo "xz / xz-utils not available" rm -rf ${dst_name}.tar $dst_dir mkdir -p ${src_repo}/src_dist mv -f ${dst_name}.tar.* ${src_repo}/src_dist -[ "$dst_name" = "$dst_cname" ] || mv -f ${dst_cname}.tar.* ${src_repo}/src_dist cat 1>&2 < Date: Sun, 6 May 2012 05:38:31 +0000 Subject: [PATCH 339/630] ci: leave debian .orig tarball unbootstrapped --- scripts/ci/debsrcbuilder.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 647efa834e..dcac7028dd 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -21,7 +21,6 @@ mkdir -p $ddir git clone . $bdir cd $bdir set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" -gnuize sleep 2 cd $ddir tar -c --exclude=.git -vf $orig.tar $fname From ca073d61b3ba96a47e509199a915ad4fdd60fe57 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 05:44:08 +0000 Subject: [PATCH 340/630] ci: use xz for the debian packages --- scripts/ci/debsrcbuilder.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index dcac7028dd..5279d6c403 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -24,8 +24,8 @@ set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" sleep 2 cd $ddir tar -c --exclude=.git -vf $orig.tar $fname -bzip2 -z -k $orig.tar -rm $orig.tar +echo "Compressing $orig.tar with xz -9e..." >&2 +xz -9e $orig.tar cd $bdir (cd debian && ./bootstrap.sh) @@ -38,7 +38,7 @@ dch -b -v "${fver}-1" \ -M --force-distribution -D "$distro" \ "Nightly build at ${datestamp}." # dependency: fakeroot -dpkg-buildpackage -rfakeroot -S -us -uc || exit $? +dpkg-buildpackage -S -rfakeroot -uc -us -i\.git -I.git -Zxz -z9 || exit ? cat 1>&2 < Date: Sun, 6 May 2012 06:29:35 +0000 Subject: [PATCH 341/630] ci: compress xz -6 to be nice to Ken's build server --- scripts/ci/debsrcbuilder.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 5279d6c403..86e53791ea 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -24,8 +24,8 @@ set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" sleep 2 cd $ddir tar -c --exclude=.git -vf $orig.tar $fname -echo "Compressing $orig.tar with xz -9e..." >&2 -xz -9e $orig.tar +echo "Compressing $orig.tar with xz -6..." >&2 +xz -6 $orig.tar cd $bdir (cd debian && ./bootstrap.sh) From 1269891f508bce09a6a2d5bb858f56e9062ca47f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 06:48:01 +0000 Subject: [PATCH 342/630] ci: fix old error --- scripts/ci/src_tarball.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index a23fe8fd8c..7fd48621e3 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -8,7 +8,6 @@ sdir="." eval $(parse_version "$1") dst_name="freeswitch-$cmajor.$cminor.$cmicro" -dst_parent="${tmp_dir}/jenkis.$$/" dst_dir="${tmp_dir}/jenkins.$$/$dst_name" if [ -d "$dst_dir" ]; then @@ -23,11 +22,7 @@ cd $dst_dir set_fs_ver "$cver" "$cmajor" "$cminor" "$cmicro" "$crev" gnuize cd .. - -cd $dst_parent - ls - tar -cvf ${dst_name}.tar $dst_name # gzip -9 -c ${dst_name}.tar > $dst_name.tar.gz || echo "gzip not available" From fd6c0435fbecf3731fdc5d352cc92ae943d5318e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 07:13:17 +0000 Subject: [PATCH 343/630] docs: vanity --- docs/AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/AUTHORS b/docs/AUTHORS index 1f754c50b5..6e51a00585 100644 --- a/docs/AUTHORS +++ b/docs/AUTHORS @@ -28,6 +28,7 @@ that much better: Justin Unger - Lots of help with patches and SIP testing. Thanks! Paul D. Tinsley - Various patches and support. Ken Rice - - xmlcdr, sofia improvements, load testing, 1 liners here and there. + Travis Cross - git migration, Debian packaging, ZRTP integration, and many other improvements Neal Horman - conference improvements, switch_ivr menu additions and other tweaks. Johny Kadarisman - mod_python fixups. Michael Murdock - testing, documentation, bug finding and usability enhancements. From 621ec4ae1ab97abe427a2bb39616b82733b0c78b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 07:14:22 +0000 Subject: [PATCH 344/630] debian: fix issues raised by lintian on source package --- debian/bootstrap.sh | 8 +++++--- debian/copyright | 21 +++++++++++++++++++-- debian/freeswitch-dev.install | 3 ++- debian/rules | 6 ++++++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 6c41ebc817..2b7afe5472 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -143,7 +143,7 @@ Build-Depends: # bootstrapping automake (>= 1.9), autoconf, libtool, # core build - build-essential, wget, pkg-config, + dpkg-dev, gcc, g++, libc6-dev, make, wget, pkg-config, # configure options libssl-dev, unixodbc-dev, libncurses5-dev, libjpeg8-dev, @@ -156,7 +156,7 @@ Build-Depends: bison, zlib1g-dev, # module build-depends $(debian_wrap "${mod_build_depends}") -Standards-Version: 3.9.2 +Standards-Version: 3.9.3 Homepage: http://freeswitch.org/ Vcs-Git: git://git.freeswitch.org/freeswitch Vcs-Browser: http://git.freeswitch.org/git/freeswitch/ @@ -325,6 +325,7 @@ Description: development libraries and header files for FreeSWITCH Package: freeswitch-doc Architecture: all +Depends: \${misc:Depends} Description: documentation for FreeSWITCH $(debian_wrap "${fs_description}") . @@ -465,7 +466,8 @@ EOF print_mod_install () { cat < +Copyright: 2012, Travis Cross License: MPL or GPL2+ (at your option) + This packaging may be distributed under either (at your option) the + terms of the MPLv1.1 as described in docs/COPYING in the FreeSWITCH + source tree, or under the terms of the GNU GPL, version 2 or later, + as found on Debian systems in /usr/share/common-licenses/GPL-2. + +Files: * +Copyright: 2012, Anthony Minessale II and many other contributors +License: MPL + The contents of these files are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use these files except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + . + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the + License. diff --git a/debian/freeswitch-dev.install b/debian/freeswitch-dev.install index 704d7b1444..97685b764b 100644 --- a/debian/freeswitch-dev.install +++ b/debian/freeswitch-dev.install @@ -1,4 +1,5 @@ /usr/include /usr/lib/freeswitch/mod/*.la -/usr/lib/*.{a,la} +/usr/lib/*.a +/usr/lib/*.la /usr/lib/pkgconfig diff --git a/debian/rules b/debian/rules index 62fdd7a93d..d8291d2548 100755 --- a/debian/rules +++ b/debian/rules @@ -30,6 +30,12 @@ binary-arch: binary-indep: @$(call show_vars) dh $@ +build-arch: + @$(call show_vars) + dh $@ +build-indep: + @$(call show_vars) + dh $@ build: debian/.stamp-bootstrap @$(call show_vars) dh $@ From 087bafe476cd945bd61f0b561d54c2211d4753bc Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 07:28:10 +0000 Subject: [PATCH 345/630] debian: correct new issue raised by lintian on source package --- debian/bootstrap.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 2b7afe5472..c5fa1ec3b1 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -143,7 +143,9 @@ Build-Depends: # bootstrapping automake (>= 1.9), autoconf, libtool, # core build - dpkg-dev, gcc, g++, libc6-dev, make, wget, pkg-config, + dpkg-dev (>= 1.15.8.12), gcc (>= 4:4.4.5) , g++ (>= 4:4.4.5), + libc6-dev (>= 2.11.3), make (>= 3.81), + wget, pkg-config, # configure options libssl-dev, unixodbc-dev, libncurses5-dev, libjpeg8-dev, From 2668e843b02b415b247f875aade0ea408fff063f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 09:01:01 +0000 Subject: [PATCH 346/630] ci: remove sleep --- scripts/ci/debsrcbuilder.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 86e53791ea..5361eab4ff 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -21,7 +21,6 @@ mkdir -p $ddir git clone . $bdir cd $bdir set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" -sleep 2 cd $ddir tar -c --exclude=.git -vf $orig.tar $fname echo "Compressing $orig.tar with xz -6..." >&2 From 50c0065a539b0e537e4f6dcf5c37f02babbc8f64 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 09:01:37 +0000 Subject: [PATCH 347/630] ci: download and bundle all external libraries into debian source package --- scripts/ci/debsrcbuilder.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 5361eab4ff..674477ef46 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -21,6 +21,32 @@ mkdir -p $ddir git clone . $bdir cd $bdir set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" +cd libs +getlib () { + f="${1##*/}" + echo "fetching: $1 to $f" >&2 + wget -N "$1" \ + && tar -xv --no-same-owner --no-same-permissions -f "$f" \ + && rm -f "$f" \ + && mkdir -p $f +} +getlib http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-v1.8-latest.tgz +getlib http://files.freeswitch.org/downloads/libs/json-c-0.9.tar.gz +getlib http://files.freeswitch.org/downloads/libs/libmemcached-0.32.tar.gz +getlib http://files.freeswitch.org/downloads/libs/soundtouch-1.6.0.tar.gz +getlib http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 +getlib http://files.freeswitch.org/downloads/libs/sphinxbase-0.7.tar.gz +getlib http://files.freeswitch.org/downloads/libs/pocketsphinx-0.7.tar.gz +getlib http://files.freeswitch.org/downloads/libs/communicator_semi_6000_20080321.tar.gz +getlib http://files.freeswitch.org/downloads/libs/celt-0.10.0.tar.gz +getlib http://files.freeswitch.org/downloads/libs/opus-0.9.0.tar.gz +getlib http://files.freeswitch.org/downloads/libs/openldap-2.4.19.tar.gz +getlib http://download.zeromq.org/zeromq-2.1.9.tar.gz \ + || getlib http://download.zeromq.org/historic/zeromq-2.1.9.tar.gz +getlib http://files.freeswitch.org/downloads/libs/freeradius-client-1.1.6.tar.gz +getlib http://files.freeswitch.org/downloads/libs/lame-3.98.4.tar.gz +getlib http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz +getlib http://files.freeswitch.org/downloads/libs/mpg123-1.13.2.tar.gz cd $ddir tar -c --exclude=.git -vf $orig.tar $fname echo "Compressing $orig.tar with xz -6..." >&2 From 5055149572ec33e20bfbf4bbd4283566b5f3f0cb Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 09:48:30 +0000 Subject: [PATCH 348/630] ci: cleanup after mongo --- scripts/ci/debsrcbuilder.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 674477ef46..3dc56e5faa 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -47,6 +47,9 @@ getlib http://files.freeswitch.org/downloads/libs/freeradius-client-1.1.6.tar.gz getlib http://files.freeswitch.org/downloads/libs/lame-3.98.4.tar.gz getlib http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz getlib http://files.freeswitch.org/downloads/libs/mpg123-1.13.2.tar.gz +cd mongo-cxx-driver-v1.8 +rm -rf config.log .sconf_temp *Test *Example +find . -name "*.o" -exec rm -f {} \; cd $ddir tar -c --exclude=.git -vf $orig.tar $fname echo "Compressing $orig.tar with xz -6..." >&2 From df0861610f7d2b8ae306a6f6390ec9080de2e48b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 10:23:37 +0000 Subject: [PATCH 349/630] debian: disable mod_mongo as it's causing CI problems --- debian/bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index c5fa1ec3b1..c6f1b18e12 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -10,6 +10,7 @@ avoid_mods=( applications/mod_fax applications/mod_ladspa applications/mod_limit + applications/mod_mongo applications/mod_mp4 applications/mod_osp applications/mod_rad_auth From 883dd296e750fc05b539e4000465a1256c6e37e6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 11:27:00 +0000 Subject: [PATCH 350/630] debian: set possible dependencies for mod_shout and disable the module --- debian/bootstrap.sh | 1 + debian/control-modules | 3 +++ 2 files changed, 4 insertions(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index c6f1b18e12..ce595d2008 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -29,6 +29,7 @@ avoid_mods=( endpoints/mod_unicall event_handlers/mod_snmp formats/mod_portaudio_stream + formats/mod_shout formats/mod_vlc languages/mod_java languages/mod_managed diff --git a/debian/control-modules b/debian/control-modules index bb3ed507e8..ffdc6b9eff 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -482,6 +482,9 @@ Description: mod_shell_stream Module: formats/mod_shout Description: mod_shout Adds mod_shout. +Build-Depends: libogg-dev, libvorbis-dev +Depends: libogg0, libvorbis0a, libvorbisenc2, libvorbisfile3, + libvorbisidec1 Module: formats/mod_sndfile Description: mod_sndfile From f1290a7bb1796980d9699d6b0263409a75cbc9fc Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 18:34:12 +0000 Subject: [PATCH 351/630] debian: properly label metapackages --- debian/bootstrap.sh | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index ce595d2008..83c68e5be0 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -194,7 +194,8 @@ Suggests: Description: Cross-Platform Scalable Multi-Protocol Soft Switch $(debian_wrap "${fs_description}") . - This is a meta package containing a very bare FreeSWITCH install. + This is a metapackage which depends on the packages needed for a very + bare FreeSWITCH install. Package: freeswitch-meta-default Architecture: any @@ -231,8 +232,8 @@ Suggests: Description: Cross-Platform Scalable Multi-Protocol Soft Switch $(debian_wrap "${fs_description}") . - This is a meta package containing a reasonable basic FreeSWITCH - install. + This is a metapackage which depends on the packages needed for a + reasonably basic FreeSWITCH install. Package: freeswitch-meta-vanilla Architecture: any @@ -283,8 +284,8 @@ Suggests: Description: Cross-Platform Scalable Multi-Protocol Soft Switch $(debian_wrap "${fs_description}") . - This is a meta package containing the FreeSWITCH modules required to - run the vanilla example configuration. + This is a metapackage which depends on the packages needed for + running the FreeSWITCH vanilla example configuration. Package: freeswitch-meta-codecs Architecture: any @@ -307,7 +308,8 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), Description: Cross-Platform Scalable Multi-Protocol Soft Switch $(debian_wrap "${fs_description}") . - This is a meta package containing most FreeSWITCH codecs. + This is a metapackage which depends on the packages needed to install + most FreeSWITCH codecs. Package: freeswitch-dbg Section: debug @@ -334,6 +336,7 @@ Description: documentation for FreeSWITCH $(debian_wrap "${fs_description}") . This package contains Doxygen-produce documentation for FreeSWITCH. + It may be an empty package at the moment. Package: freeswitch-init Architecture: all @@ -343,8 +346,8 @@ Depends: \${misc:Depends}, Description: FreeSWITCH startup configuration $(debian_wrap "${fs_description}") . - This package contains the system startup configuration for - FreeSWITCH. + This is a metapackage which depends on the default system startup + packages for FreeSWITCH. Package: freeswitch-sysvinit Architecture: all @@ -381,7 +384,8 @@ Depends: \${misc:Depends}, Description: Music on hold audio for FreeSWITCH $(debian_wrap "${fs_description}") . - This package contains music on hold audio for FreeSWITCH. + This is a metapackage which depends on the default music on hold + packages for FreeSWITCH. Package: freeswitch-music-default Architecture: all @@ -394,7 +398,8 @@ Recommends: Description: Music on hold audio for FreeSWITCH $(debian_wrap "${fs_description}") . - This package contains the default music on hold audio for FreeSWITCH. + This is a metapackage which depends on the default music on hold + packages for FreeSWITCH at various sampling rates. Package: freeswitch-sounds Architecture: all @@ -403,7 +408,8 @@ Depends: \${misc:Depends}, Description: Sounds for FreeSWITCH $(debian_wrap "${fs_description}") . - This package contains sounds for FreeSWITCH. + This is a metapackage which depends on the default sound packages for + FreeSWITCH. Package: freeswitch-sounds-en Architecture: all @@ -412,7 +418,8 @@ Depends: \${misc:Depends}, Description: English sounds for FreeSWITCH $(debian_wrap "${fs_description}") . - This package contains the English sounds for FreeSWITCH. + This is a metapackage which depends on the default English sound + packages for FreeSWITCH. Package: freeswitch-sounds-en-us Architecture: all @@ -421,7 +428,8 @@ Depends: \${misc:Depends}, Description: US English sounds for FreeSWITCH $(debian_wrap "${fs_description}") . - This package contains the US/English sounds for FreeSWITCH. + This is a metapackage which depends on the default US/English sound + packages for FreeSWITCH. Package: freeswitch-sounds-en-us-callie Architecture: all From 3ee672467a92dc117b0a44afa2b81b12a18039df Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 19:08:40 +0000 Subject: [PATCH 352/630] debian: fix typo --- debian/control-modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control-modules b/debian/control-modules index ffdc6b9eff..922bbf119d 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -199,7 +199,7 @@ Description: UserSpy Module: applications/mod_stress Description: Voice stress detection - This module attemps to detect voice stress on an audio channel. + This module attempts to detect voice stress on an audio channel. Module: applications/mod_valet_parking Description: Valet parking From 2439bfe90564299579059bcc626152919721ab18 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 19:09:23 +0000 Subject: [PATCH 353/630] debian: mark debug packages as priority extra It's required by lintian. --- debian/bootstrap.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 83c68e5be0..89b7f7acf5 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -313,6 +313,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch Package: freeswitch-dbg Section: debug +Priority: extra Architecture: any Depends: \${misc:Depends}, freeswitch (= \${binary:Version}) Description: debugging symbols for FreeSWITCH @@ -463,6 +464,7 @@ Description: ${description} for FreeSWITCH Package: freeswitch-${module_name//_/-}-dbg Section: debug +Priority: extra Architecture: any Depends: \${misc:Depends}, freeswitch-${module_name//_/-} (= \${binary:Version}) From 90217e864b5ebf70e3220de8f44df2489d0a11b4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 19:12:47 +0000 Subject: [PATCH 354/630] debian: add remote_fs and required-stop to init --- debian/freeswitch-sysvinit.freeswitch.init | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/freeswitch-sysvinit.freeswitch.init b/debian/freeswitch-sysvinit.freeswitch.init index d02229b4e9..2b48cfd852 100644 --- a/debian/freeswitch-sysvinit.freeswitch.init +++ b/debian/freeswitch-sysvinit.freeswitch.init @@ -2,8 +2,8 @@ ### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- ### BEGIN INIT INFO # Provides: freeswitch -# Required-Start: $network $local_fs -# Required-Stop: +# Required-Start: $network $remote_fs $local_fs +# Required-Stop: $network $remote_fs $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: FreeSWITCH Softswitch From 9a543ec9db2f4e41161ba4e88d8b562cb79a7177 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 19:26:52 +0000 Subject: [PATCH 355/630] debian: put freeswitch-doc into the doc section --- debian/bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 89b7f7acf5..5e29a75bb1 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -331,6 +331,7 @@ Description: development libraries and header files for FreeSWITCH This package contains include files for FreeSWITCH. Package: freeswitch-doc +Section: doc Architecture: all Depends: \${misc:Depends} Description: documentation for FreeSWITCH From 34afc6cb2e5ee986ef73bedc907027a59ce8aa80 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 22:33:46 +0000 Subject: [PATCH 356/630] debian: fix last empty-binary-package lintian warning --- debian/bootstrap.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 5e29a75bb1..bc82e64289 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -444,7 +444,8 @@ Recommends: Description: US English sounds for FreeSWITCH $(debian_wrap "${fs_description}") . - This package contains the Callie English sounds for FreeSWITCH. + This is a metapackage which depends on the US/English Callie sound + packages for FreeSWITCH at various sampling rates. EOF } From fa55b5e82d0faf2d9da3622ea9a46d67493ff6e5 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 22:46:13 +0000 Subject: [PATCH 357/630] debian: avoid lintian maintainer-script-empty We are going to fill in these files with useful things. --- debian/freeswitch.preinst | 3 +++ debian/freeswitch.prerm | 1 + 2 files changed, 4 insertions(+) diff --git a/debian/freeswitch.preinst b/debian/freeswitch.preinst index 56dc52da8f..01d322e76c 100644 --- a/debian/freeswitch.preinst +++ b/debian/freeswitch.preinst @@ -3,6 +3,9 @@ set -e case "$1" in install|upgrade) + if [ -d /opt/freeswitch ]; then + echo "It looks like you have FreeSWITCH installed manually." >&2 + fi ;; abort-upgrade) diff --git a/debian/freeswitch.prerm b/debian/freeswitch.prerm index c2d46bc865..24906ff7e9 100644 --- a/debian/freeswitch.prerm +++ b/debian/freeswitch.prerm @@ -3,6 +3,7 @@ set -e case "$1" in remove|upgrade|deconfigure) + echo "We're about to remove FreeSWITCH..." >&2 ;; failed-upgrade) From 8bbfe99e19cb3cd3dff95bd80f8f92bb6185de63 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 22:46:36 +0000 Subject: [PATCH 358/630] debian: whitespace --- debian/freeswitch.postinst | 2 -- debian/freeswitch.postrm | 1 - debian/freeswitch.preinst | 2 -- debian/freeswitch.prerm | 2 -- 4 files changed, 7 deletions(-) diff --git a/debian/freeswitch.postinst b/debian/freeswitch.postinst index d1bbe72c15..444c602bc4 100644 --- a/debian/freeswitch.postinst +++ b/debian/freeswitch.postinst @@ -27,10 +27,8 @@ case "$1" in chmod -R o-rwx,g+u $x done ;; - abort-upgrade|abort-remove|abort-deconfigure) ;; - *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 diff --git a/debian/freeswitch.postrm b/debian/freeswitch.postrm index 5e21c84397..48852014c8 100644 --- a/debian/freeswitch.postrm +++ b/debian/freeswitch.postrm @@ -19,7 +19,6 @@ case "$1" in done fi ;; - *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 diff --git a/debian/freeswitch.preinst b/debian/freeswitch.preinst index 01d322e76c..31ad410fd7 100644 --- a/debian/freeswitch.preinst +++ b/debian/freeswitch.preinst @@ -7,10 +7,8 @@ case "$1" in echo "It looks like you have FreeSWITCH installed manually." >&2 fi ;; - abort-upgrade) ;; - *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 diff --git a/debian/freeswitch.prerm b/debian/freeswitch.prerm index 24906ff7e9..f5448bcee4 100644 --- a/debian/freeswitch.prerm +++ b/debian/freeswitch.prerm @@ -5,10 +5,8 @@ case "$1" in remove|upgrade|deconfigure) echo "We're about to remove FreeSWITCH..." >&2 ;; - failed-upgrade) ;; - *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 From c7426963b7437c4b06daabbab942eb6cc5073adb Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 23:26:37 +0000 Subject: [PATCH 359/630] debian: overrides some irrelevant lintian warnings --- debian/.gitignore | 1 + debian/bootstrap.sh | 67 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/debian/.gitignore b/debian/.gitignore index 777b48dd70..437658053c 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -10,6 +10,7 @@ /freeswitch-conf-*.install /freeswitch-music-*.install /freeswitch-sounds-*.install +/*.lintian-overrides /*.log /*.substvars /*.debhelper diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index bc82e64289..a91e1f0ead 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -487,6 +487,39 @@ print_mod_install () { EOF } +print_common_overrides () { + m="$1" + cat <> $f } +genoverrides_per_mod () { + local f=freeswitch-${module_name//_/-}.lintian-overrides + (print_edit_warning; print_mod_overrides freeswitch-${module_name//_/-}) > $f + test -f $f.tmpl && cat $f.tmpl >> $f +} + genmodules_per_cat () { echo "## $category" >> modules_.conf } @@ -574,17 +613,25 @@ genmodules_per_mod () { genconf () { print_conf_control >> control - local f=freeswitch-conf-${conf//_/-}.install + local p=freeswitch-conf-${conf//_/-} + local f=$p.install (print_edit_warning; print_conf_install) > $f test -f $f.tmpl && cat $f.tmpl >> $f + local f=$p.lintian-overrides + (print_edit_warning; print_conf_overrides "$p") > $f + test -f $f.tmpl && cat $f.tmpl >> $f } genmusic () { rate="$1" rate_k="${rate%%000}k" print_music_control >> control - local f=freeswitch-music-default-${rate_k}.install + local p=freeswitch-music-default-${rate_k} + local f=$p.install (print_edit_warning; print_music_install) > $f test -f $f.tmpl && cat $f.tmpl >> $f + local f=$p.lintian-overrides + (print_edit_warning; print_music_overrides "$p") > $f + test -f $f.tmpl && cat $f.tmpl >> $f unset rate rate_k } @@ -594,9 +641,13 @@ gensound () { country=$(echo $sound | cut -d/ -f2) speaker=$(echo $sound | cut -d/ -f3) print_sound_control >> control - local f=freeswitch-sounds-${sound//\//-}-${rate_k}.install + local p=freeswitch-sounds-${sound//\//-}-${rate_k} + local f=$p.install (print_edit_warning; print_sound_install) > $f test -f $f.tmpl && cat $f.tmpl >> $f + local f=$p.lintian-overrides + (print_edit_warning; print_sound_overrides "$p") > $f + test -f $f.tmpl && cat $f.tmpl >> $f unset rate rate_k sound sound_path language country speaker } @@ -752,6 +803,14 @@ map_confs 'genconf' (echo "### modules"; echo) >> control map_modules "mod_filter" \ "gencontrol_per_cat genmodules_per_cat" \ - "gencontrol_per_mod geninstall_per_mod genmodules_per_mod" + "gencontrol_per_mod geninstall_per_mod genoverrides_per_mod genmodules_per_mod" + +grep -e '^Package:' control | while xread l; do + m="${l#*: }" + f=$m.lintian-overrides + if [ ! -s $f ] || ! grep -e 'package-has-long-file-name' $f >/dev/null; then + (print_edit_warning; print_common_overrides "$m") >> $f + fi +done touch .stamp-bootstrap From 6c5abe4616a45bcb27526be54d1642c5bea326c9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 6 May 2012 23:29:31 +0000 Subject: [PATCH 360/630] debian: add wildcard to lintian override --- debian/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index a91e1f0ead..66f77b6270 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -493,7 +493,7 @@ print_common_overrides () { # The long file names are caused by appending the nightly information. # Since one of these packages will never end up on a Debian CD, the # related problems with long file names will never come up here. -${m}: package-has-long-file-name +${m}: package-has-long-file-name * EOF } From 664e2e322a643cc85c6e79047bdaddc7b3b7556d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 00:45:04 +0000 Subject: [PATCH 361/630] debian: simplify default build PATH --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index d8291d2548..5581ffdacf 100755 --- a/debian/rules +++ b/debian/rules @@ -6,7 +6,7 @@ FS_CFLAGS?=-ggdb3 -O2 FS_CPPFLAGS?= FS_CXXFLAGS?=$(FS_CFLAGS) FS_INSTALL_SOUNDS?=true -export PATH?=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export PATH?=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin export CFLAGS=$(FS_CFLAGS) export CPPFLAGS=$(FS_CPPFLAGS) export CXXFLAGS=$(FS_CXXFLAGS) From ffc4c83bfa8959383ed1397255bce264b88d5518 Mon Sep 17 00:00:00 2001 From: Di-Shi Sun Date: Mon, 7 May 2012 15:52:11 +0800 Subject: [PATCH 362/630] Added mod_osp module documentation. --- src/mod/applications/mod_osp/docs/mod_osp.txt | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/mod/applications/mod_osp/docs/mod_osp.txt diff --git a/src/mod/applications/mod_osp/docs/mod_osp.txt b/src/mod/applications/mod_osp/docs/mod_osp.txt new file mode 100644 index 0000000000..a5686a4a03 --- /dev/null +++ b/src/mod/applications/mod_osp/docs/mod_osp.txt @@ -0,0 +1,84 @@ +FreeSWITCH Open Settlement Protocol (OSP) module + +This module provides OSP based call authentication, authorization, routing lookup and call detail record (CDR) collection services using standard FreeSWITCH application and dailplan interfaces. + +The OSP module can be configured by the following parameters in osp.conf.xml: + +Global parameters: + + + + + +Global parameter names and values can be: + +debug-info: Flag to show OSP module debug information. The default is "disabled". +log-level: At which log level to show OSP module debug information. The default is "info". +crypto-hardware: If to use hardware for OpenSSL. The default is "disabled". +sip: Used SIP module and profile. The default is "sofia" and "external". +h323: Used H.323 module and profile. The default is "h323" and "external". This option has not been implemented. +iax: Used IAX2 module and profile. The default is "iax" and "external". This option has not been implemented. +skype: Used Skype module and profile. The default is "skypopen" and "external". This option has not been implemented. +default-protocol: The VoIP protocol for destinations with unknown/undefined protocol. The default is "sip". + +OSP provider parameters: + + + + + + + +OSP provider parameter names ane values cab be: + +profile: OSP provider profile name. +service-point-url: OSP service point URL. This parameter must be defined. Up to 8 URLs are allowed. +device-ip: FreeSWITCH IP for OSP module. This parameter must be defined. +ssl-lifetime: SSL lifetime. The default is 300 in seconds. +http-max-connections: HTTP max connections. The default is 20. +http-persistence: HTTP persistence. The default is 60 in seconds. +http-retry-delay: HTTP retry delay. The default is 0 in seconds. +http-retry-limit: HTTP retry times. The default is 2. +http-timeout: HTTP timeout. The default is 10000 in ms. +work-mode: OSP module work mode (direct and indirect). The default is "direct". +service-type: OSP service type (voice and npquery). The default is "voice". +max-destinations: Max destinations OSP server will return. It is up to 12. The default is 12. + +The OSP application is called in dial plan like this: + + + +The OSP dialplan is called in dial plan like this: + + + +For both OSP application and dialplan, the is an OSP service provider name configured in osp.conf.xml. If it is empty, profile "default" is used. + +Both OSP application and dialplan accept a set of inbound channel variables that are used to pass additional call information to OSP module. These channel variables include: + +osp_source_device: Actual source device IP address channel variable. It is only for FreeSWITH OSP module running in indirect mode. +osp_source_nid: Source device network ID channel variable. +osp_custom_info_N: Up to 8 custom info channel variables. N is the index starting from 1. +osp_networkid_userparam: The URI user parameter name that is used to present destination network ID. +osp_networkid_uriparam: The URI parameter name that is used to present destination network ID. +osp_user_phone: Flag to add "user=phone" URI parameter. The default is "disabled". +osp_outbound_proxy: Outbound proxy IP address channel variable. + +Both OSP application and dialplan also export a set of channel variables for outbound channels and FreeSWITCH dial plan logic (for OSP dialplan, some exported channel variables are not visible for dial plan). These channel variables include: + +osp_profile: Used OSP profile name. Used by outbound channels. +osp_transaction_id: OSP transaction ID. Used by outbound channels. +osp_calling: Original inbound calling number. Used by outbound channels. +osp_called: Original inbound called number. Used by outbound channels. +osp_start_time: Inbound call start time. Used by outbound channels. +osp_source_device: Actual source device. Used by outbound channels. It is only for FreeSWITH OSP module running in indirect mode. +osp_source_nid: Source network ID. Used by outbound channels. +osp_destination_total: Total number of destinations from OSP servers. Used by outbound channels. +osp_destination_count: Destination index. Used by outbound channels. +osp_destination_ip: Destination IP. Used by outbound channels. +osp_destination_nid: Destination network ID. Used by outbound channels. +osp_authreq_status: Authorization request result status. +osp_route_count: Number of supported destinations. +osp_route_N: Destination route string. N is the index starting from 1. +osp_auto_route: Bridge route string. + From 7f76b67f5d5e9fda0a9a713874c8112effaf5d1a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 08:17:41 -0500 Subject: [PATCH 363/630] FS-4191 --resolve --- src/include/switch_types.h | 1 + src/mod/applications/mod_dptools/mod_dptools.c | 1 + src/switch_ivr_originate.c | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 47336a800a..35ca619cbd 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -1212,6 +1212,7 @@ typedef enum { CF_ZRTP_HASH, CF_ZRTP_PASS, CF_CHANNEL_SWAP, + CF_PICKUP, /* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */ /* IF YOU ADD NEW ONES CHECK IF THEY SHOULD PERSIST OR ZERO THEM IN switch_core_session.c switch_core_session_request_xml() */ CF_FLAG_MAX diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index d5430cf1df..db259412b0 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3490,6 +3490,7 @@ static switch_call_cause_t pickup_outgoing_channel(switch_core_session_t *sessio switch_channel_set_name(nchannel, name); switch_channel_set_variable(nchannel, "process_cdr", "false"); pickup_add_session(nsession, pickup); + switch_channel_set_flag(nchannel, CF_PICKUP); goto done; diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index c3da16f072..1962fc0cff 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -429,6 +429,7 @@ static uint8_t check_channel_status(originate_global_t *oglobals, originate_stat char bug_key[256] = ""; int send_ringback = 0; uint8_t ring_ready_val = 0; + int pickups = 0; oglobals->hups = 0; oglobals->idx = IDX_NADA; @@ -462,6 +463,11 @@ static uint8_t check_channel_status(originate_global_t *oglobals, originate_stat } } + + if (originate_status[i].peer_channel && switch_channel_test_flag(originate_status[i].peer_channel, CF_PICKUP)) { + pickups++; + } + if (!(originate_status[i].peer_channel && originate_status[i].peer_session)) { oglobals->hups++; continue; @@ -719,7 +725,7 @@ static uint8_t check_channel_status(originate_global_t *oglobals, originate_stat } } - if (oglobals->hups == len) { + if (oglobals->hups + pickups == len) { rval = 0; } else { rval = 1; From 090345de4c185fd983d72ebbacae058a4bc780ed Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 08:46:04 -0500 Subject: [PATCH 364/630] add outcall_flags --- src/mod/applications/mod_conference/mod_conference.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 3112a781f4..8f33a6ebe7 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -5678,6 +5678,7 @@ static switch_status_t conference_outcall(conference_obj_t *conference, char appdata[512]; int rdlock = 0; switch_bool_t have_flags = SWITCH_FALSE; + const char *outcall_flags; *cause = SWITCH_CAUSE_NORMAL_CLEARING; @@ -5763,6 +5764,12 @@ static switch_status_t conference_outcall(conference_obj_t *conference, goto done; } + if ((outcall_flags = switch_channel_get_variable(peer_channel, "outcall_flags"))) { + if (!zstr(outcall_flags)) { + flags = (char *)outcall_flags; + } + } + if (flags && strcasecmp(flags, "none")) { have_flags = SWITCH_TRUE; } From c2ac863492a43b7638a5763bc580e07da61a91d7 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 08:48:22 -0500 Subject: [PATCH 365/630] FS-4176 send vid refresh when switching to mirror --- src/mod/applications/mod_conference/mod_conference.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 8f33a6ebe7..aa5a1a3015 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1233,12 +1233,18 @@ static void *SWITCH_THREAD_FUNC conference_video_mirror_thread_run(switch_thread switch_status_t status; switch_frame_t *read_frame; conference_obj_t *conference = vh->member_a->conference; + switch_core_session_message_t msg = { 0 }; switch_thread_rwlock_rdlock(conference->rwlock); switch_thread_rwlock_rdlock(vh->member_a->rwlock); /* Acquire locks for both sessions so the helper object and member structures don't get destroyed before we exit */ switch_core_session_read_lock(session_a); + + /* Tell the channel to request a fresh vid frame */ + msg.from = __FILE__; + msg.message_id = SWITCH_MESSAGE_INDICATE_VIDEO_REFRESH_REQ; + switch_core_session_receive_message(session_a, &msg); vh->up = 1; while (vh->up > 0 && switch_test_flag(vh->member_a, MFLAG_RUNNING) && From 258ad092ac0ee2e7b67ccdbed734e5153fa74061 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 15:38:25 +0000 Subject: [PATCH 366/630] debian: massage the prerm script to pass lintian --- debian/freeswitch.prerm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/freeswitch.prerm b/debian/freeswitch.prerm index f5448bcee4..9f34f0b371 100644 --- a/debian/freeswitch.prerm +++ b/debian/freeswitch.prerm @@ -3,7 +3,9 @@ set -e case "$1" in remove|upgrade|deconfigure) - echo "We're about to remove FreeSWITCH..." >&2 + if [ -d /etc/freeswitch ]; then + echo "We're about to remove a configured FreeSWITCH..." >&2 + fi ;; failed-upgrade) ;; From e2c850b797fa43ebbed98048c7866dc88274b1c1 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 16:16:58 +0000 Subject: [PATCH 367/630] debian: ignore final possible-gpl-code-linked-with-openssl warning --- debian/bootstrap.sh | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 66f77b6270..c13bbbb92e 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -487,27 +487,36 @@ print_mod_install () { EOF } -print_common_overrides () { - m="$1" +print_long_filename_override () { + local p="$1" cat </dev/null; then - (print_edit_warning; print_common_overrides "$m") >> $f + [ -s $f ] || print_edit_warning >> $f + print_long_filename_override "$m" >> $f fi done +f=freeswitch.lintian-overrides +[ -s $f ] || print_edit_warning >> $f +print_gpl_openssl_override "freeswitch" >> $f touch .stamp-bootstrap From 2557e962a2a221f9a8188e28e9b3247ea9576e41 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 16:27:37 +0000 Subject: [PATCH 368/630] debian: move .so symlink to -dev package --- debian/freeswitch-dev.install | 1 + debian/freeswitch.install | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/freeswitch-dev.install b/debian/freeswitch-dev.install index 97685b764b..b63cfa4530 100644 --- a/debian/freeswitch-dev.install +++ b/debian/freeswitch-dev.install @@ -1,5 +1,6 @@ /usr/include /usr/lib/freeswitch/mod/*.la +/usr/lib/libfreeswitch.so /usr/lib/*.a /usr/lib/*.la /usr/lib/pkgconfig diff --git a/debian/freeswitch.install b/debian/freeswitch.install index 5c43763aa5..199329cdd3 100644 --- a/debian/freeswitch.install +++ b/debian/freeswitch.install @@ -1,3 +1,3 @@ /usr/bin -/usr/lib/libfreeswitch.so* +/usr/lib/libfreeswitch.so.* /usr/share/freeswitch/scripts From 8597842a56c6fb97ec1b451b721240ca92f2f43a Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 7 May 2012 17:31:20 +0200 Subject: [PATCH 369/630] skypopen: hook up to mod_sms, spawning a thread for servicing chatmessage --- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 71 ++++++++++++++++++- .../mod_skypopen/skypopen_protocol.c | 1 + 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 76ac991449..7ef273c6d0 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -2201,6 +2201,44 @@ int dtmf_received(private_t *tech_pvt, char *value) return 0; } +void *SWITCH_THREAD_FUNC skypopen_do_mod_sms_thread(switch_thread_t *thread, void *obj) +{ + switch_event_t *event; + + + event = obj; + switch_core_chat_send("GLOBAL", event); /* mod_sms */ + + return event; + +} + + + +int start_mod_sms_thread(private_t *tech_pvt, switch_event_t *event) +{ + switch_threadattr_t *mod_sms_thread_thd_attr = NULL; + switch_thread_t *mod_sms_thread; + + + switch_threadattr_create(&mod_sms_thread_thd_attr, skypopen_module_pool); + switch_threadattr_detach_set(mod_sms_thread_thd_attr, 0); + switch_threadattr_stacksize_set(mod_sms_thread_thd_attr, SWITCH_THREAD_STACKSIZE); + if (switch_thread_create(&mod_sms_thread, mod_sms_thread_thd_attr, skypopen_do_mod_sms_thread, event, skypopen_module_pool) == SWITCH_STATUS_SUCCESS) { + DEBUGA_SKYPE("started mod_sms_thread thread.\n", SKYPOPEN_P_LOG); + } else { + ERRORA("failed to start mod_sms_thread thread.\n", SKYPOPEN_P_LOG); + return -1; + } + if (mod_sms_thread == NULL) { + WARNINGA("mod_sms_thread exited\n", SKYPOPEN_P_LOG); + return -1; + } + + return 0; +} + + int start_audio_threads(private_t *tech_pvt) { switch_threadattr_t *tcp_srv_thread_thd_attr = NULL; @@ -2984,7 +3022,7 @@ int incoming_chatmessage(private_t *tech_pvt, int which) /* mod_sms end */ switch_event_add_body(event, "%s", tech_pvt->chatmessages[which].body); - //switch_core_chat_send("GLOBAL", event); /* mod_sms */ + if (session) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { @@ -3026,7 +3064,36 @@ int incoming_chatmessage(private_t *tech_pvt, int which) if (session) { switch_core_session_rwunlock(session); } - memset(&tech_pvt->chatmessages[which], '\0', sizeof(&tech_pvt->chatmessages[which])); + + + if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", SKYPE_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->chatmessages[which].from_handle); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); +/* mod_sms begin */ + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->skype_user); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", SKYPE_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->chatmessages[which].from_handle); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); +/* mod_sms end */ + + switch_event_add_body(event, "%s", tech_pvt->chatmessages[which].body); + //switch_core_chat_send("GLOBAL", event); /* mod_sms */ + start_mod_sms_thread(tech_pvt, event); + //usleep(20000); + + } else { + ERRORA("cannot create event on interface %s. WHY?????\n", SKYPOPEN_P_LOG, tech_pvt->name); + } + return 0; } diff --git a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c index 95746411e9..d8e9ffa9ff 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c +++ b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c @@ -478,6 +478,7 @@ int skypopen_signaling_read(private_t *tech_pvt) tech_pvt->chatmessages[i].from_handle, tech_pvt->chatmessages[i].from_dispname, tech_pvt->chatmessages[i].body); if (strcmp(tech_pvt->chatmessages[i].from_handle, tech_pvt->skype_user)) { //if the message was not sent by myself incoming_chatmessage(tech_pvt, i); + memset(&tech_pvt->chatmessages[i], '\0', sizeof(&tech_pvt->chatmessages[i])); } } From dc595613240456ac4ed42e1a05242fd0ce536e60 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 16:35:48 +0000 Subject: [PATCH 370/630] mod_pocketsphinx: install default.dic with correct mode --- src/mod/asr_tts/mod_pocketsphinx/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/asr_tts/mod_pocketsphinx/Makefile b/src/mod/asr_tts/mod_pocketsphinx/Makefile index 9b2c6b28e4..e3d795fb60 100644 --- a/src/mod/asr_tts/mod_pocketsphinx/Makefile +++ b/src/mod/asr_tts/mod_pocketsphinx/Makefile @@ -60,7 +60,7 @@ $(DESTDIR)$(grammardir)/model/communicator: cp -rp $(switch_srcdir)/libs/Communicator_semi_40.cd_semi_6000/* $(DESTDIR)$(grammardir)/model/communicator dictionary: - @cp -f $(POCKETSPHINX_DIR)/model/lm/en_US/cmu07a.dic $(DESTDIR)$(grammardir)/default.dic + @install -m0644 $(POCKETSPHINX_DIR)/model/lm/en_US/cmu07a.dic $(DESTDIR)$(grammardir)/default.dic local_install: $(DESTDIR)$(grammardir)/model $(DESTDIR)$(grammardir)/model/communicator dictionary From b43fa94551e582af3ac38d1cb1259f4e3629268a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 10:05:51 -0500 Subject: [PATCH 371/630] FS-4192 --resolve found the problem, this might also fix your intercept bug --- src/switch_ivr_originate.c | 50 ++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 1962fc0cff..33c5e2e6d0 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -443,6 +443,32 @@ static uint8_t check_channel_status(originate_global_t *oglobals, originate_stat } + for (i = 0; i < len; i++) { + if (switch_channel_test_flag(originate_status[i].peer_channel, CF_CHANNEL_SWAP)) { + const char *key = switch_channel_get_variable(originate_status[i].peer_channel, "channel_swap_uuid"); + switch_core_session_t *swap_session, *old_session; + + if ((swap_session = switch_core_session_locate(key))) { + switch_channel_clear_flag(originate_status[i].peer_channel, CF_CHANNEL_SWAP); + switch_channel_hangup(originate_status[i].peer_channel, SWITCH_CAUSE_PICKED_OFF); + + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(originate_status[i].peer_channel), SWITCH_LOG_DEBUG, "Swapping %s for %s\n", + switch_core_session_get_name(swap_session), switch_channel_get_name(originate_status[i].peer_channel)); + + + old_session = originate_status[i].peer_session; + originate_status[i].peer_session = swap_session; + originate_status[i].peer_channel = switch_core_session_get_channel(originate_status[i].peer_session); + originate_status[i].caller_profile = switch_channel_get_caller_profile(originate_status[i].peer_channel); + switch_channel_set_flag(originate_status[i].peer_channel, CF_ORIGINATING); + + switch_channel_answer(originate_status[i].peer_channel); + switch_core_session_rwunlock(old_session); + break; + } + } + } + for (i = 0; i < len; i++) { switch_channel_state_t state; @@ -3195,7 +3221,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_channel_set_variable(caller_channel, SWITCH_SOFT_HOLDING_UUID_VARIABLE, NULL); } - if (holding && oglobals.idx != IDX_TIMEOUT && oglobals.idx != IDX_KEY_CANCEL) { + if (holding && oglobals.idx != IDX_TIMEOUT && oglobals.idx != IDX_KEY_CANCEL && oglobals.idx < 0) { switch_core_session_t *holding_session; if ((holding_session = switch_core_session_locate(holding))) { @@ -3214,7 +3240,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_core_session_rwunlock(holding_session); } switch_channel_set_flag(originate_status[i].peer_channel, CF_LAZY_ATTENDED_TRANSFER); - switch_ivr_uuid_bridge(holding, switch_core_session_get_uuid(originate_status[i].peer_session)); holding = NULL; } else { @@ -3547,27 +3572,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess if (*bleg) { switch_channel_t *bchan = switch_core_session_get_channel(*bleg); - - if (switch_channel_test_flag(bchan, CF_CHANNEL_SWAP)) { - const char *key = switch_channel_get_variable(bchan, "channel_swap_uuid"); - switch_core_session_t *swap_session, *old_session; - - if ((swap_session = switch_core_session_locate(key))) { - switch_channel_clear_flag(bchan, CF_CHANNEL_SWAP); - switch_channel_hangup(bchan, SWITCH_CAUSE_PICKED_OFF); - - switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(bchan), SWITCH_LOG_DEBUG, "Swapping %s for %s\n", - switch_core_session_get_name(swap_session), switch_channel_get_name(bchan)); - - old_session = *bleg; - *bleg = swap_session; - bchan = switch_core_session_get_channel(*bleg); - switch_channel_answer(bchan); - switch_core_session_rwunlock(old_session); - } - } - - if (session && caller_channel) { switch_caller_profile_t *cloned_profile, *peer_profile = switch_channel_get_caller_profile(switch_core_session_get_channel(*bleg)); From f7476320dbdb7afe1e305b9036ef31bff5563ca2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 10:24:08 -0500 Subject: [PATCH 372/630] FS-4177 play-file-done was not previously possible it was part of supressing play-file, try this patch --- src/mod/applications/mod_conference/mod_conference.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index aa5a1a3015..8b4be69b2c 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -217,7 +217,8 @@ typedef enum { EFLAG_FLOOR_CHANGE = (1 << 25), EFLAG_MUTE_DETECT = (1 << 26), EFLAG_RECORD = (1 << 27), - EFLAG_HUP_MEMBER = (1 << 28) + EFLAG_HUP_MEMBER = (1 << 28), + EFLAG_PLAY_FILE_DONE = (1 << 29), } event_type_t; typedef struct conference_file_node { @@ -1621,7 +1622,7 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v } if (file_sample_len <= 0) { - if (test_eflag(conference, EFLAG_PLAY_FILE) && + if (test_eflag(conference, EFLAG_PLAY_FILE_DONE) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) { conference_add_event_data(conference, event); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "play-file-done"); @@ -6107,6 +6108,8 @@ static void clear_eflags(char *events, uint32_t *f) *f &= ~EFLAG_VOLUME_OUT_MEMBER; } else if (!strcmp(event, "play-file")) { *f &= ~EFLAG_PLAY_FILE; + } else if (!strcmp(event, "play-file-done")) { + *f &= ~EFLAG_PLAY_FILE; } else if (!strcmp(event, "play-file-member")) { *f &= ~EFLAG_PLAY_FILE_MEMBER; } else if (!strcmp(event, "speak-text")) { From 56f415a164afe33bc484dfeabb55f655546b3d95 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 7 May 2012 18:57:40 +0200 Subject: [PATCH 373/630] skypopen: mark chatmessages SEEN --- src/mod/endpoints/mod_skypopen/skypopen_protocol.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c index d8e9ffa9ff..4bb84505e0 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c +++ b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c @@ -356,7 +356,7 @@ int skypopen_signaling_read(private_t *tech_pvt) } } if (!found) { - DEBUGA_SKYPE("why we do not have a chats slot free? we have more than %d chats in parallel?\n", SKYPOPEN_P_LOG, MAX_CHATS); + ERRORA("why we do not have a chats slot free? we have more than %d chats in parallel?\n", SKYPOPEN_P_LOG, MAX_CHATS); } DEBUGA_SKYPE("CHAT %s is in position %d in the chats array, chatname=%s, dialog_partner=%s\n", SKYPOPEN_P_LOG, id, i, @@ -378,6 +378,12 @@ int skypopen_signaling_read(private_t *tech_pvt) skypopen_strncpy(prop, where, sizeof(prop) - 1); skypopen_strncpy(value, *stringp, sizeof(value) - 1); + if (!tech_pvt->report_incoming_chatmessages) { + if (!strcasecmp(prop, "STATUS") && !strcasecmp(value, "RECEIVED")) { + sprintf(msg_to_skype, "SET CHATMESSAGE %s SEEN", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); + } +} else { if (!strcasecmp(prop, "STATUS") && !strcasecmp(value, "RECEIVED")) { DEBUGA_SKYPE("RECEIVED CHATMESSAGE %s, let's see which type it is\n", SKYPOPEN_P_LOG, id); sprintf(msg_to_skype, "GET CHATMESSAGE %s TYPE", id); @@ -396,7 +402,7 @@ int skypopen_signaling_read(private_t *tech_pvt) } } if (!found) { - DEBUGA_SKYPE("why we do not have a chatmessages slot free? we have more than %d chatmessages in parallel?\n", SKYPOPEN_P_LOG, + ERRORA("why we do not have a chatmessages slot free? we have more than %d chatmessages in parallel?\n", SKYPOPEN_P_LOG, MAX_CHATMESSAGES); } else { DEBUGA_SKYPE("CHATMESSAGE %s is in position %d in the chatmessages array, type=%s, id=%s\n", SKYPOPEN_P_LOG, id, i, @@ -479,10 +485,14 @@ int skypopen_signaling_read(private_t *tech_pvt) if (strcmp(tech_pvt->chatmessages[i].from_handle, tech_pvt->skype_user)) { //if the message was not sent by myself incoming_chatmessage(tech_pvt, i); memset(&tech_pvt->chatmessages[i], '\0', sizeof(&tech_pvt->chatmessages[i])); + + sprintf(msg_to_skype, "SET CHATMESSAGE %s SEEN", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); } } } +} } From 00a6f61a67be6c2defaeb614316e23e7462d925f Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 7 May 2012 19:01:54 +0200 Subject: [PATCH 374/630] skypopen: indented --- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 153 ++++++------ src/mod/endpoints/mod_skypopen/skypopen.h | 2 +- .../mod_skypopen/skypopen_protocol.c | 231 +++++++++--------- 3 files changed, 196 insertions(+), 190 deletions(-) diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 7ef273c6d0..f489cc613a 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -112,6 +112,7 @@ char *interface_status[] = { /* should match SKYPOPEN_STATE_xxx in skypopen.h */ "PREANSW", "DEAD" }; + char *skype_callflow[] = { /* should match CALLFLOW_XXX in skypopen.h */ "IDLE", "DOWN", @@ -381,7 +382,7 @@ static switch_status_t interface_exists(char *the_interface) if (tech_pvt->running && tech_pvt->SkypopenHandles.disp) { XEvent e; Atom atom1 = XInternAtom(tech_pvt->SkypopenHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); - switch_sleep(20000); + switch_sleep(20000); XFlush(tech_pvt->SkypopenHandles.disp); memset(&e, 0, sizeof(e)); e.xclient.type = ClientMessage; @@ -739,6 +740,7 @@ static switch_status_t channel_kill_channel(switch_core_session_t *session, int return SWITCH_STATUS_SUCCESS; } + static switch_status_t channel_on_consume_media(switch_core_session_t *session) { private_t *tech_pvt = NULL; @@ -765,6 +767,7 @@ static switch_status_t channel_on_soft_execute(switch_core_session_t *session) DEBUGA_SKYPE("%s CHANNEL SOFT_EXECUTE\n", SKYPOPEN_P_LOG, tech_pvt->name); return SWITCH_STATUS_SUCCESS; } + static switch_status_t channel_on_reset(switch_core_session_t *session) { private_t *tech_pvt = NULL; @@ -873,9 +876,9 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_mutex_unlock(tech_pvt->mutex_audio_srv); if (!bytes_read) { - switch_sleep(1000); //XXX don't like this + switch_sleep(1000); //XXX don't like this try++; - if (try < 5){ + if (try < 5) { DEBUGA_SKYPE("skypopen_audio_read going back to read\n", SKYPOPEN_P_LOG); goto read; } @@ -940,19 +943,19 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch char *p = digit_str; switch_channel_t *channel = switch_core_session_get_channel(session); - if(channel){ + if (channel) { while (p && *p) { - switch_dtmf_t dtmf = {0}; + switch_dtmf_t dtmf = { 0 }; dtmf.digit = *p; dtmf.duration = SWITCH_DEFAULT_DTMF_DURATION; switch_channel_queue_dtmf(channel, &dtmf); p++; } - NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", SKYPOPEN_P_LOG, digit_str, (unsigned int) new_dtmf_timestamp, - (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); + NOTICA("DTMF DETECTED: [%s] new_dtmf_timestamp: %u, delta_t: %u\n", SKYPOPEN_P_LOG, digit_str, + (unsigned int) new_dtmf_timestamp, (unsigned int) (new_dtmf_timestamp - tech_pvt->old_dtmf_timestamp)); tech_pvt->old_dtmf_timestamp = new_dtmf_timestamp; - }else{ + } else { WARNINGA("NO CHANNEL ?\n", SKYPOPEN_P_LOG); } } @@ -1077,7 +1080,7 @@ static switch_status_t channel_answer_channel(switch_core_session_t *session) return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_receive_message(switch_core_session_t *session, switch_core_session_message_t * msg) +static switch_status_t channel_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg) { switch_channel_t *channel; private_t *tech_pvt; @@ -1648,7 +1651,7 @@ static switch_status_t load_config(int reload_type) } else { DEBUGA_SKYPE("Initialized XInitThreads!\n", SKYPOPEN_P_LOG); } - switch_sleep(20000); + switch_sleep(20000); #endif /* WIN32 */ if (interface_id && interface_id < SKYPOPEN_MAX_INTERFACES) { @@ -1751,8 +1754,7 @@ static switch_status_t load_config(int reload_type) switch_threadattr_detach_set(skypopen_signaling_thread_attr, 0); switch_threadattr_stacksize_set(skypopen_signaling_thread_attr, SWITCH_THREAD_STACKSIZE); //switch_threadattr_priority_increase(skypopen_signaling_thread_attr); - switch_thread_create(&globals.SKYPOPEN_INTERFACES[interface_id]. - skypopen_signaling_thread, skypopen_signaling_thread_attr, + switch_thread_create(&globals.SKYPOPEN_INTERFACES[interface_id].skypopen_signaling_thread, skypopen_signaling_thread_attr, skypopen_signaling_thread_func, &globals.SKYPOPEN_INTERFACES[interface_id], skypopen_module_pool); switch_sleep(100000); @@ -1858,8 +1860,8 @@ static switch_status_t load_config(int reload_type) return SWITCH_STATUS_SUCCESS; } + static switch_status_t chat_send(switch_event_t *message_event) - { char *user = NULL, *host, *f_user = NULL, *f_host = NULL, *f_resource = NULL; private_t *tech_pvt = NULL; @@ -1867,7 +1869,7 @@ static switch_status_t chat_send(switch_event_t *message_event) char skype_msg[1024]; const char *proto; - const char *from; + const char *from; const char *to; const char *subject; const char *body; @@ -1885,7 +1887,7 @@ static switch_status_t chat_send(switch_event_t *message_event) switch_assert(proto != NULL); //DEBUGA_SKYPE("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=%s, hint=%s)\n", SKYPOPEN_P_LOG, proto, from, to, subject, body, type, - // hint ? hint : "NULL"); + // hint ? hint : "NULL"); DEBUGA_SKYPE("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", SKYPOPEN_P_LOG, proto, from, to, subject, body, hint ? hint : "NULL"); @@ -1912,9 +1914,8 @@ static switch_status_t chat_send(switch_event_t *message_event) if ((host = strchr(user, '@'))) { *host++ = '\0'; } - //DEBUGA_SKYPE("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=%s, hint=%s)\n", SKYPOPEN_P_LOG, proto, from, to, subject, body, type, - // hint ? hint : "NULL"); + // hint ? hint : "NULL"); DEBUGA_SKYPE("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, hint=%s)\n", SKYPOPEN_P_LOG, proto, from, to, subject, body, hint ? hint : "NULL"); if (hint && strlen(hint)) { @@ -1950,7 +1951,7 @@ static switch_status_t chat_send(switch_event_t *message_event) snprintf(skype_msg, sizeof(skype_msg), "CHAT CREATE %s", to); skypopen_signaling_write(tech_pvt, skype_msg); - switch_sleep(20000); + switch_sleep(20000); } found = 0; @@ -1970,7 +1971,9 @@ static switch_status_t chat_send(switch_event_t *message_event) } tried++; if (tried > 20) { - ERRORA("No chat with dialog_partner='%s' was found. (If you're using mod_sms this is a bug of mod_skypopen when using mod_sms, from next incoming message it will probably work...)\n", SKYPOPEN_P_LOG, to); + ERRORA + ("No chat with dialog_partner='%s' was found. (If you're using mod_sms this is a bug of mod_skypopen when using mod_sms, from next incoming message it will probably work...)\n", + SKYPOPEN_P_LOG, to); break; } switch_sleep(50000); @@ -2076,7 +2079,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_skypopen_shutdown) XEvent e; Atom atom1 = XInternAtom(tech_pvt->SkypopenHandles.disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False); - switch_sleep(20000); + switch_sleep(20000); XFlush(tech_pvt->SkypopenHandles.disp); memset(&e, 0, sizeof(e)); e.xclient.type = ClientMessage; @@ -2172,7 +2175,7 @@ int dtmf_received(private_t *tech_pvt, char *value) if (channel) { if (switch_channel_test_flag(channel, CF_BRIDGED) - && !switch_true(switch_channel_get_variable(channel, "skype_add_outband_dtmf_also_when_bridged"))) { + && !switch_true(switch_channel_get_variable(channel, "skype_add_outband_dtmf_also_when_bridged"))) { NOTICA @@ -2194,7 +2197,7 @@ int dtmf_received(private_t *tech_pvt, char *value) WARNINGA("received %c DTMF, but no channel?\n", SKYPOPEN_P_LOG, value[0]); } switch_core_session_rwunlock(session); - }else{ + } else { WARNINGA("received %c DTMF, but no session?\n", SKYPOPEN_P_LOG, value[0]); } @@ -2203,14 +2206,14 @@ int dtmf_received(private_t *tech_pvt, char *value) void *SWITCH_THREAD_FUNC skypopen_do_mod_sms_thread(switch_thread_t *thread, void *obj) { - switch_event_t *event; + switch_event_t *event; event = obj; - switch_core_chat_send("GLOBAL", event); /* mod_sms */ - + switch_core_chat_send("GLOBAL", event); /* mod_sms */ + return event; - + } @@ -2218,7 +2221,7 @@ void *SWITCH_THREAD_FUNC skypopen_do_mod_sms_thread(switch_thread_t *thread, voi int start_mod_sms_thread(private_t *tech_pvt, switch_event_t *event) { switch_threadattr_t *mod_sms_thread_thd_attr = NULL; - switch_thread_t *mod_sms_thread; + switch_thread_t *mod_sms_thread; switch_threadattr_create(&mod_sms_thread_thd_attr, skypopen_module_pool); @@ -2274,7 +2277,8 @@ int start_audio_threads(private_t *tech_pvt) switch_threadattr_priority_increase(tcp_srv_thread_thd_attr); switch_mutex_lock(tech_pvt->mutex_thread_audio_srv); //DEBUGA_SKYPE("debugging_hangup srv lock\n", SKYPOPEN_P_LOG); - if (switch_thread_create(&tech_pvt->tcp_srv_thread, tcp_srv_thread_thd_attr, skypopen_do_tcp_srv_thread, tech_pvt, skypopen_module_pool) == SWITCH_STATUS_SUCCESS) { + if (switch_thread_create(&tech_pvt->tcp_srv_thread, tcp_srv_thread_thd_attr, skypopen_do_tcp_srv_thread, tech_pvt, skypopen_module_pool) == + SWITCH_STATUS_SUCCESS) { DEBUGA_SKYPE("started tcp_srv_thread thread.\n", SKYPOPEN_P_LOG); } else { ERRORA("failed to start tcp_srv_thread thread.\n", SKYPOPEN_P_LOG); @@ -2291,7 +2295,8 @@ int start_audio_threads(private_t *tech_pvt) switch_threadattr_priority_increase(tcp_cli_thread_thd_attr); switch_mutex_lock(tech_pvt->mutex_thread_audio_cli); //DEBUGA_SKYPE("debugging_hangup cli lock\n", SKYPOPEN_P_LOG); - if (switch_thread_create(&tech_pvt->tcp_cli_thread, tcp_cli_thread_thd_attr, skypopen_do_tcp_cli_thread, tech_pvt, skypopen_module_pool) == SWITCH_STATUS_SUCCESS) { + if (switch_thread_create(&tech_pvt->tcp_cli_thread, tcp_cli_thread_thd_attr, skypopen_do_tcp_cli_thread, tech_pvt, skypopen_module_pool) == + SWITCH_STATUS_SUCCESS) { DEBUGA_SKYPE("started tcp_cli_thread thread.\n", SKYPOPEN_P_LOG); } else { ERRORA("failed to start tcp_cli_thread thread.\n", SKYPOPEN_P_LOG); @@ -2509,24 +2514,25 @@ SWITCH_STANDARD_API(sk_function) goto end; } - + if (!strcasecmp(argv[0], "balances")) { - stream->write_function(stream, " Name \tBalance\tCurrency\n"); - stream->write_function(stream, " ==== \t=======\t========\n"); - - for (tmp_i = 0; tmp_i < SKYPOPEN_MAX_INTERFACES; tmp_i++) { - if (strlen(globals.SKYPOPEN_INTERFACES[tmp_i].name)) { - skypopen_signaling_write(&globals.SKYPOPEN_INTERFACES[tmp_i], "GET PROFILE PSTN_BALANCE"); - switch_sleep(20000); - - strncpy(tmp_message, globals.SKYPOPEN_INTERFACES[tmp_i].message, sizeof(globals.SKYPOPEN_INTERFACES[tmp_i].message)); - - skypopen_signaling_write(&globals.SKYPOPEN_INTERFACES[tmp_i], "GET PROFILE PSTN_BALANCE_CURRENCY"); - switch_sleep(20000); - if(strlen(tmp_message)>21 && strlen(globals.SKYPOPEN_INTERFACES[tmp_i].message) > 30) - stream->write_function(stream, " %s \t%s\t%s\n", globals.SKYPOPEN_INTERFACES[tmp_i].name, tmp_message+21, globals.SKYPOPEN_INTERFACES[tmp_i].message+30); - } - } + stream->write_function(stream, " Name \tBalance\tCurrency\n"); + stream->write_function(stream, " ==== \t=======\t========\n"); + + for (tmp_i = 0; tmp_i < SKYPOPEN_MAX_INTERFACES; tmp_i++) { + if (strlen(globals.SKYPOPEN_INTERFACES[tmp_i].name)) { + skypopen_signaling_write(&globals.SKYPOPEN_INTERFACES[tmp_i], "GET PROFILE PSTN_BALANCE"); + switch_sleep(20000); + + strncpy(tmp_message, globals.SKYPOPEN_INTERFACES[tmp_i].message, sizeof(globals.SKYPOPEN_INTERFACES[tmp_i].message)); + + skypopen_signaling_write(&globals.SKYPOPEN_INTERFACES[tmp_i], "GET PROFILE PSTN_BALANCE_CURRENCY"); + switch_sleep(20000); + if (strlen(tmp_message) > 21 && strlen(globals.SKYPOPEN_INTERFACES[tmp_i].message) > 30) + stream->write_function(stream, " %s \t%s\t%s\n", globals.SKYPOPEN_INTERFACES[tmp_i].name, tmp_message + 21, + globals.SKYPOPEN_INTERFACES[tmp_i].message + 30); + } + } } if (!strcasecmp(argv[0], "list")) { @@ -2542,11 +2548,11 @@ SWITCH_STANDARD_API(sk_function) for (i = 0; i < SKYPOPEN_MAX_INTERFACES; i++) { if (strlen(globals.SKYPOPEN_INTERFACES[i].name)) { - next_flag_char = i == globals.next_interface ? '*' : ' '; - ib += globals.SKYPOPEN_INTERFACES[i].ib_calls; - ib_failed += globals.SKYPOPEN_INTERFACES[i].ib_failed_calls; - ob += globals.SKYPOPEN_INTERFACES[i].ob_calls; - ob_failed += globals.SKYPOPEN_INTERFACES[i].ob_failed_calls; + next_flag_char = i == globals.next_interface ? '*' : ' '; + ib += globals.SKYPOPEN_INTERFACES[i].ib_calls; + ib_failed += globals.SKYPOPEN_INTERFACES[i].ib_failed_calls; + ob += globals.SKYPOPEN_INTERFACES[i].ob_calls; + ob_failed += globals.SKYPOPEN_INTERFACES[i].ob_failed_calls; stream->write_function(stream, "%c %d\t[%s]\t%3u/%u\t%6u/%u\t%s\t%s\t%s\n", @@ -3011,14 +3017,14 @@ int incoming_chatmessage(private_t *tech_pvt, int which) switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); /* mod_sms begin */ - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->skype_user); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", SKYPE_CHAT_PROTO); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->chatmessages[which].from_handle); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->skype_user); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", SKYPE_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->chatmessages[which].from_handle); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); /* mod_sms end */ switch_event_add_body(event, "%s", tech_pvt->chatmessages[which].body); @@ -3075,18 +3081,18 @@ int incoming_chatmessage(private_t *tech_pvt, int which) switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); /* mod_sms begin */ - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->skype_user); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", SKYPE_CHAT_PROTO); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->chatmessages[which].from_handle); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); - //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->skype_user); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", SKYPE_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->chatmessages[which].from_handle); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); /* mod_sms end */ switch_event_add_body(event, "%s", tech_pvt->chatmessages[which].body); - //switch_core_chat_send("GLOBAL", event); /* mod_sms */ + //switch_core_chat_send("GLOBAL", event); /* mod_sms */ start_mod_sms_thread(tech_pvt, event); //usleep(20000); @@ -3110,19 +3116,19 @@ static switch_status_t compat_chat_send(const char *proto, const char *from, con switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "subject", subject); switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "type", type); switch_event_add_header_string(message_event, SWITCH_STACK_BOTTOM, "hint", hint); - + if (body) { switch_event_add_body(message_event, "%s", body); } } else { abort(); - } + } status = chat_send(message_event); switch_event_destroy(&message_event); return status; - + } SWITCH_STANDARD_API(skypopen_chat_function) @@ -3164,8 +3170,9 @@ SWITCH_STANDARD_API(skypopen_chat_function) goto end; } else { - NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", SKYPOPEN_P_LOG, SKYPE_CHAT_PROTO, tech_pvt->skype_user, - argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), tech_pvt->name); + NOTICA("chat_send(proto=%s, from=%s, to=%s, subject=%s, body=%s, type=NULL, hint=%s)\n", SKYPOPEN_P_LOG, SKYPE_CHAT_PROTO, + tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), + tech_pvt->name); compat_chat_send(SKYPE_CHAT_PROTO, tech_pvt->skype_user, argv[1], "SIMPLE MESSAGE", switch_str_nil((char *) &cmd[strlen(argv[0]) + 1 + strlen(argv[1]) + 1]), NULL, tech_pvt->name); diff --git a/src/mod/endpoints/mod_skypopen/skypopen.h b/src/mod/endpoints/mod_skypopen/skypopen.h index 960d960f82..d2dd51bd37 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen.h +++ b/src/mod/endpoints/mod_skypopen/skypopen.h @@ -112,7 +112,7 @@ typedef enum { #define WARNINGA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "%-*s["SKYPOPEN_SVN_VERSION "] [WARNINGA %-5d][%-15s][%s,%s] " __VA_ARGS__ ); #define NOTICA(...) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "%-*s ["SKYPOPEN_SVN_VERSION "] [NOTICA %-5d][%-15s][%s,%s] " __VA_ARGS__ ); -#define SKYPOPEN_P_LOG (int)((20 - (strlen(__FILE__))) + ((__LINE__ - 1000) < 0) + ((__LINE__ - 100) < 0)), " ", __LINE__, tech_pvt ? tech_pvt->name ? tech_pvt->name : "none" : "none", tech_pvt ? interface_status[tech_pvt->interface_state] : "N/A", tech_pvt ? skype_callflow[tech_pvt->skype_callflow] : "N/A" +#define SKYPOPEN_P_LOG (int)((20 - (strlen(__FILE__))) + ((__LINE__ - 1000) < 0) + ((__LINE__ - 100) < 0)), " ", __LINE__, tech_pvt ? tech_pvt->name ? tech_pvt->name : "none" : "none", tech_pvt ? interface_status[tech_pvt->interface_state] : "N/A", tech_pvt ? skype_callflow[tech_pvt->skype_callflow] : "N/A" /*********************************/ #define SKYPOPEN_CAUSE_NORMAL 1 diff --git a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c index 4bb84505e0..5aa113c3bf 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c +++ b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c @@ -378,121 +378,121 @@ int skypopen_signaling_read(private_t *tech_pvt) skypopen_strncpy(prop, where, sizeof(prop) - 1); skypopen_strncpy(value, *stringp, sizeof(value) - 1); - if (!tech_pvt->report_incoming_chatmessages) { - if (!strcasecmp(prop, "STATUS") && !strcasecmp(value, "RECEIVED")) { - sprintf(msg_to_skype, "SET CHATMESSAGE %s SEEN", id); - skypopen_signaling_write(tech_pvt, msg_to_skype); - } -} else { - if (!strcasecmp(prop, "STATUS") && !strcasecmp(value, "RECEIVED")) { - DEBUGA_SKYPE("RECEIVED CHATMESSAGE %s, let's see which type it is\n", SKYPOPEN_P_LOG, id); - sprintf(msg_to_skype, "GET CHATMESSAGE %s TYPE", id); - skypopen_signaling_write(tech_pvt, msg_to_skype); - } - - if (!strcasecmp(prop, "TYPE") && !strcasecmp(value, "SAID")) { - DEBUGA_SKYPE("CHATMESSAGE %s is of type SAID, let's get the other infos\n", SKYPOPEN_P_LOG, id); - found = 0; - for (i = 0; i < MAX_CHATMESSAGES; i++) { - if (strlen(tech_pvt->chatmessages[i].id) == 0) { - strncpy(tech_pvt->chatmessages[i].id, id, sizeof(tech_pvt->chatmessages[i].id)); - strncpy(tech_pvt->chatmessages[i].type, value, sizeof(tech_pvt->chatmessages[i].type)); - found = 1; - break; - } - } - if (!found) { - ERRORA("why we do not have a chatmessages slot free? we have more than %d chatmessages in parallel?\n", SKYPOPEN_P_LOG, - MAX_CHATMESSAGES); - } else { - DEBUGA_SKYPE("CHATMESSAGE %s is in position %d in the chatmessages array, type=%s, id=%s\n", SKYPOPEN_P_LOG, id, i, - tech_pvt->chatmessages[i].type, tech_pvt->chatmessages[i].id); - sprintf(msg_to_skype, "GET CHATMESSAGE %s CHATNAME", id); - skypopen_signaling_write(tech_pvt, msg_to_skype); - //skypopen_sleep(1000); - sprintf(msg_to_skype, "GET CHATMESSAGE %s FROM_HANDLE", id); - skypopen_signaling_write(tech_pvt, msg_to_skype); - //skypopen_sleep(1000); - sprintf(msg_to_skype, "GET CHATMESSAGE %s FROM_DISPNAME", id); - skypopen_signaling_write(tech_pvt, msg_to_skype); - //skypopen_sleep(1000); - sprintf(msg_to_skype, "GET CHATMESSAGE %s BODY", id); + if (!tech_pvt->report_incoming_chatmessages) { + if (!strcasecmp(prop, "STATUS") && !strcasecmp(value, "RECEIVED")) { + sprintf(msg_to_skype, "SET CHATMESSAGE %s SEEN", id); skypopen_signaling_write(tech_pvt, msg_to_skype); } - } - - if (!strcasecmp(prop, "CHATNAME")) { - DEBUGA_SKYPE("CHATMESSAGE %s belongs to the CHAT %s\n", SKYPOPEN_P_LOG, id, value); - found = 0; - for (i = 0; i < MAX_CHATMESSAGES; i++) { - if (!strcmp(tech_pvt->chatmessages[i].id, id)) { - strncpy(tech_pvt->chatmessages[i].chatname, value, sizeof(tech_pvt->chatmessages[i].chatname)); - found = 1; - break; - } - } - if (!found) { - DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); - } - } - if (!strcasecmp(prop, "FROM_HANDLE")) { - DEBUGA_SKYPE("CHATMESSAGE %s was sent by FROM_HANDLE %s\n", SKYPOPEN_P_LOG, id, value); - found = 0; - for (i = 0; i < MAX_CHATMESSAGES; i++) { - if (!strcmp(tech_pvt->chatmessages[i].id, id)) { - strncpy(tech_pvt->chatmessages[i].from_handle, value, sizeof(tech_pvt->chatmessages[i].from_handle)); - found = 1; - break; - } - } - if (!found) { - DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); + } else { + if (!strcasecmp(prop, "STATUS") && !strcasecmp(value, "RECEIVED")) { + DEBUGA_SKYPE("RECEIVED CHATMESSAGE %s, let's see which type it is\n", SKYPOPEN_P_LOG, id); + sprintf(msg_to_skype, "GET CHATMESSAGE %s TYPE", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); } - } - if (!strcasecmp(prop, "FROM_DISPNAME")) { - DEBUGA_SKYPE("CHATMESSAGE %s was sent by FROM_DISPNAME %s\n", SKYPOPEN_P_LOG, id, value); - found = 0; - for (i = 0; i < MAX_CHATMESSAGES; i++) { - if (!strcmp(tech_pvt->chatmessages[i].id, id)) { - strncpy(tech_pvt->chatmessages[i].from_dispname, value, sizeof(tech_pvt->chatmessages[i].from_dispname)); - found = 1; - break; + if (!strcasecmp(prop, "TYPE") && !strcasecmp(value, "SAID")) { + DEBUGA_SKYPE("CHATMESSAGE %s is of type SAID, let's get the other infos\n", SKYPOPEN_P_LOG, id); + found = 0; + for (i = 0; i < MAX_CHATMESSAGES; i++) { + if (strlen(tech_pvt->chatmessages[i].id) == 0) { + strncpy(tech_pvt->chatmessages[i].id, id, sizeof(tech_pvt->chatmessages[i].id)); + strncpy(tech_pvt->chatmessages[i].type, value, sizeof(tech_pvt->chatmessages[i].type)); + found = 1; + break; + } } - } - if (!found) { - DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); - } - - } - if (!strcasecmp(prop, "BODY")) { - DEBUGA_SKYPE("CHATMESSAGE %s has BODY %s\n", SKYPOPEN_P_LOG, id, value); - found = 0; - for (i = 0; i < MAX_CHATMESSAGES; i++) { - if (!strcmp(tech_pvt->chatmessages[i].id, id)) { - strncpy(tech_pvt->chatmessages[i].body, value, sizeof(tech_pvt->chatmessages[i].body)); - found = 1; - break; - } - } - if (!found) { - DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); - } else { - DEBUGA_SKYPE - ("CHATMESSAGE %s is in position %d in the chatmessages array, type=%s, id=%s, chatname=%s, from_handle=%s, from_dispname=%s, body=%s\n", - SKYPOPEN_P_LOG, id, i, tech_pvt->chatmessages[i].type, tech_pvt->chatmessages[i].id, tech_pvt->chatmessages[i].chatname, - tech_pvt->chatmessages[i].from_handle, tech_pvt->chatmessages[i].from_dispname, tech_pvt->chatmessages[i].body); - if (strcmp(tech_pvt->chatmessages[i].from_handle, tech_pvt->skype_user)) { //if the message was not sent by myself - incoming_chatmessage(tech_pvt, i); - memset(&tech_pvt->chatmessages[i], '\0', sizeof(&tech_pvt->chatmessages[i])); - - sprintf(msg_to_skype, "SET CHATMESSAGE %s SEEN", id); - skypopen_signaling_write(tech_pvt, msg_to_skype); + if (!found) { + ERRORA("why we do not have a chatmessages slot free? we have more than %d chatmessages in parallel?\n", SKYPOPEN_P_LOG, + MAX_CHATMESSAGES); + } else { + DEBUGA_SKYPE("CHATMESSAGE %s is in position %d in the chatmessages array, type=%s, id=%s\n", SKYPOPEN_P_LOG, id, i, + tech_pvt->chatmessages[i].type, tech_pvt->chatmessages[i].id); + sprintf(msg_to_skype, "GET CHATMESSAGE %s CHATNAME", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); + //skypopen_sleep(1000); + sprintf(msg_to_skype, "GET CHATMESSAGE %s FROM_HANDLE", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); + //skypopen_sleep(1000); + sprintf(msg_to_skype, "GET CHATMESSAGE %s FROM_DISPNAME", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); + //skypopen_sleep(1000); + sprintf(msg_to_skype, "GET CHATMESSAGE %s BODY", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); } } + if (!strcasecmp(prop, "CHATNAME")) { + DEBUGA_SKYPE("CHATMESSAGE %s belongs to the CHAT %s\n", SKYPOPEN_P_LOG, id, value); + found = 0; + for (i = 0; i < MAX_CHATMESSAGES; i++) { + if (!strcmp(tech_pvt->chatmessages[i].id, id)) { + strncpy(tech_pvt->chatmessages[i].chatname, value, sizeof(tech_pvt->chatmessages[i].chatname)); + found = 1; + break; + } + } + if (!found) { + DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); + } + } + if (!strcasecmp(prop, "FROM_HANDLE")) { + DEBUGA_SKYPE("CHATMESSAGE %s was sent by FROM_HANDLE %s\n", SKYPOPEN_P_LOG, id, value); + found = 0; + for (i = 0; i < MAX_CHATMESSAGES; i++) { + if (!strcmp(tech_pvt->chatmessages[i].id, id)) { + strncpy(tech_pvt->chatmessages[i].from_handle, value, sizeof(tech_pvt->chatmessages[i].from_handle)); + found = 1; + break; + } + } + if (!found) { + DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); + } + + } + if (!strcasecmp(prop, "FROM_DISPNAME")) { + DEBUGA_SKYPE("CHATMESSAGE %s was sent by FROM_DISPNAME %s\n", SKYPOPEN_P_LOG, id, value); + found = 0; + for (i = 0; i < MAX_CHATMESSAGES; i++) { + if (!strcmp(tech_pvt->chatmessages[i].id, id)) { + strncpy(tech_pvt->chatmessages[i].from_dispname, value, sizeof(tech_pvt->chatmessages[i].from_dispname)); + found = 1; + break; + } + } + if (!found) { + DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); + } + + } + if (!strcasecmp(prop, "BODY")) { + DEBUGA_SKYPE("CHATMESSAGE %s has BODY %s\n", SKYPOPEN_P_LOG, id, value); + found = 0; + for (i = 0; i < MAX_CHATMESSAGES; i++) { + if (!strcmp(tech_pvt->chatmessages[i].id, id)) { + strncpy(tech_pvt->chatmessages[i].body, value, sizeof(tech_pvt->chatmessages[i].body)); + found = 1; + break; + } + } + if (!found) { + DEBUGA_SKYPE("why chatmessage %s was not found in the chatmessages array??\n", SKYPOPEN_P_LOG, id); + } else { + DEBUGA_SKYPE + ("CHATMESSAGE %s is in position %d in the chatmessages array, type=%s, id=%s, chatname=%s, from_handle=%s, from_dispname=%s, body=%s\n", + SKYPOPEN_P_LOG, id, i, tech_pvt->chatmessages[i].type, tech_pvt->chatmessages[i].id, tech_pvt->chatmessages[i].chatname, + tech_pvt->chatmessages[i].from_handle, tech_pvt->chatmessages[i].from_dispname, tech_pvt->chatmessages[i].body); + if (strcmp(tech_pvt->chatmessages[i].from_handle, tech_pvt->skype_user)) { //if the message was not sent by myself + incoming_chatmessage(tech_pvt, i); + memset(&tech_pvt->chatmessages[i], '\0', sizeof(&tech_pvt->chatmessages[i])); + + sprintf(msg_to_skype, "SET CHATMESSAGE %s SEEN", id); + skypopen_signaling_write(tech_pvt, msg_to_skype); + } + } + + } } -} } @@ -896,7 +896,7 @@ void *skypopen_do_tcp_srv_thread_func(void *obj) || tech_pvt->skype_callflow == CALLFLOW_STATUS_REMOTEHOLD || tech_pvt->skype_callflow == SKYPOPEN_STATE_UP)) { //unsigned int fdselect; - int rt=1; + int rt = 1; //fd_set fs; //struct timeval to; int nospace; @@ -1033,7 +1033,7 @@ void *skypopen_do_tcp_cli_thread_func(void *obj) if (!(running && tech_pvt->running)) break; FD_ZERO(&fsgio); - togio.tv_usec = MS_SKYPOPEN * 1000 * 3; + togio.tv_usec = MS_SKYPOPEN * 1000 * 3; togio.tv_sec = 0; fdselectgio = s; FD_SET(fdselectgio, &fsgio); @@ -1148,7 +1148,7 @@ int skypopen_senddigit(private_t *tech_pvt, char digit) char msg_to_skype[1024]; DEBUGA_SKYPE("DIGIT received: %c\n", SKYPOPEN_P_LOG, digit); - if(digit != 'a' && digit != 'A' && digit != 'b' && digit != 'B' && digit != 'c' && digit != 'C' && digit != 'd' && digit != 'D'){ + if (digit != 'a' && digit != 'A' && digit != 'b' && digit != 'B' && digit != 'c' && digit != 'C' && digit != 'd' && digit != 'D') { sprintf(msg_to_skype, "SET CALL %s DTMF %c", tech_pvt->skype_call_id, digit); skypopen_signaling_write(tech_pvt, msg_to_skype); } else { @@ -1701,7 +1701,7 @@ void skypopen_clean_disp(void *data) DEBUGA_SKYPE("NOT destroyed disp\n", SKYPOPEN_P_LOG); } DEBUGA_SKYPE("OUT destroyed disp\n", SKYPOPEN_P_LOG); - skypopen_sleep(20000); + skypopen_sleep(20000); } void *skypopen_do_skypeapi_thread_func(void *obj) @@ -1761,7 +1761,7 @@ void *skypopen_do_skypeapi_thread_func(void *obj) if (session) { switch_channel_t *channel = switch_core_session_get_channel(session); - if(channel){ + if (channel) { switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_IO); @@ -1798,7 +1798,7 @@ void *skypopen_do_skypeapi_thread_func(void *obj) switch_channel_t *channel = switch_core_session_get_channel(session); - if(channel){ + if (channel) { switch_mutex_lock(tech_pvt->flag_mutex); switch_clear_flag(tech_pvt, TFLAG_IO); switch_clear_flag(tech_pvt, TFLAG_VOICE); @@ -1910,7 +1910,7 @@ void *skypopen_do_skypeapi_thread_func(void *obj) case ClientMessage: if (an_event.xclient.format != 8) { - //skypopen_sleep(1000); //0.1 msec + //skypopen_sleep(1000); //0.1 msec break; } @@ -1970,11 +1970,10 @@ void *skypopen_do_skypeapi_thread_func(void *obj) //XFlush(disp); there_were_continues = 0; } - - //skypopen_sleep(1000); //0.1 msec + //skypopen_sleep(1000); //0.1 msec break; default: - //skypopen_sleep(1000); //0.1 msec + //skypopen_sleep(1000); //0.1 msec break; } //switch event.type } //while XPending From bbe3249de85bec166fedbaa9c6f5ebb1a100700e Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Mon, 7 May 2012 13:44:07 -0500 Subject: [PATCH 375/630] some windows changes for gsmopen for vs2008 - 2010 changes next --- Freeswitch.2008.sln | 20 +++ .../win32/gsmlib.vcproj | 162 +++++++++++++++++- .../mod_gsmopen/mod_gsmopen.2008.vcproj | 145 +++++++++++++++- 3 files changed, 325 insertions(+), 2 deletions(-) diff --git a/Freeswitch.2008.sln b/Freeswitch.2008.sln index 30e947b575..f984d00129 100644 --- a/Freeswitch.2008.sln +++ b/Freeswitch.2008.sln @@ -953,6 +953,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2008.vcproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.vcproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Win32 = All|Win32 @@ -2698,6 +2702,20 @@ Global {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|Win32.Build.0 = Release|Win32 {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|x64.ActiveCfg = Release|x64 {BDA173DB-F8EF-4270-9553-B453AF92E43A}.Release|x64.Build.0 = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.Build.0 = Release|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.Build.0 = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2723,6 +2741,7 @@ Global {CC1DD008-9406-448D-A0AD-33C3186CFADB} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {48414740-C693-4968-9846-EE058020C64F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} @@ -2822,6 +2841,7 @@ Global {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {B376D494-D7DD-4B2A-99E2-52916D5A8CD8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D} {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D} {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj index a102fe5773..16d4ae1bc0 100755 --- a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.vcproj @@ -1,7 +1,7 @@ + @@ -169,6 +172,163 @@ Name="VCPostBuildEventTool" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj index 6310d34e08..a57e518ddd 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2008.vcproj @@ -1,7 +1,7 @@ + @@ -107,6 +110,7 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 09e6152382c1afcf8c741291773515dad6717ddc Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 11:41:47 -0500 Subject: [PATCH 376/630] FS-3995 --resolve --- src/include/switch_types.h | 1 + src/mod/applications/mod_dptools/mod_dptools.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 35ca619cbd..93a2e48ced 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -129,6 +129,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_ENABLE_HEARTBEAT_EVENTS_VARIABLE "enable_heartbeat_events" #define SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE "bypass_media_after_bridge" #define SWITCH_READ_RESULT_VARIABLE "read_result" +#define SWITCH_ATT_XFER_RESULT_VARIABLE "att_xfer_result" #define SWITCH_COPY_XML_CDR_VARIABLE "copy_xml_cdr" #define SWITCH_CURRENT_APPLICATION_VARIABLE "current_application" #define SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE "proto_specific_hangup_cause" diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index db259412b0..7005a701c5 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -2122,6 +2122,12 @@ static switch_status_t hanguphook(switch_core_session_t *session) return SWITCH_STATUS_SUCCESS; } + +static void att_xfer_set_result(switch_channel_t *channel, switch_status_t status) +{ + switch_channel_set_variable(channel, SWITCH_ATT_XFER_RESULT_VARIABLE, status == SWITCH_STATUS_SUCCESS ? "success" : "failure"); +} + SWITCH_STANDARD_APP(att_xfer_function) { switch_core_session_t *peer_session = NULL; @@ -2167,7 +2173,8 @@ SWITCH_STANDARD_APP(att_xfer_function) if (!switch_channel_down(peer_channel)) { if (!switch_channel_ready(channel)) { - switch_ivr_uuid_bridge(switch_core_session_get_uuid(peer_session), bond); + switch_status_t status = switch_ivr_uuid_bridge(switch_core_session_get_uuid(peer_session), bond); + att_xfer_set_result(peer_channel, status); br++; } else if ((b_session = switch_core_session_locate(bond))) { switch_channel_t *b_channel = switch_core_session_get_channel(b_session); @@ -2185,7 +2192,8 @@ SWITCH_STANDARD_APP(att_xfer_function) } if (!br) { - switch_ivr_uuid_bridge(switch_core_session_get_uuid(session), bond); + switch_status_t status = switch_ivr_uuid_bridge(switch_core_session_get_uuid(session), bond); + att_xfer_set_result(channel, status); } } From bafba4a9913def16153fc05dac5abb220d08cc85 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 11:42:58 -0500 Subject: [PATCH 377/630] FS-4142 --resolve --- .../mod_erlang_event/mod_erlang_event.c | 17 +---------------- .../mod_erlang_event/mod_erlang_event.h | 3 +-- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index 243303d9cd..509aec7da4 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -314,8 +314,6 @@ static void destroy_session_elem(session_elem_t *session_element) switch_channel_clear_flag(switch_core_session_get_channel(session), CF_CONTROLLED); switch_core_session_rwunlock(session); } - /* this allows the application threads to exit */ - switch_clear_flag_locked(session_element, LFLAG_SESSION_ALIVE); switch_core_destroy_memory_pool(&session_element->pool); /*switch_safe_free(s); */ } @@ -1285,7 +1283,6 @@ session_elem_t *attach_call_to_registered_process(listener_t *listener, char *re session_element->process.type = ERLANG_REG_PROCESS; session_element->process.reg_name = switch_core_session_strdup(session, reg_name); - switch_set_flag(session_element, LFLAG_SESSION_ALIVE); /* attach the session to the listener */ add_session_elem_to_listener(listener, session_element); @@ -1299,7 +1296,6 @@ session_elem_t *attach_call_to_pid(listener_t *listener, erlang_pid * pid, switc session_element->process.type = ERLANG_PID; memcpy(&session_element->process.pid, pid, sizeof(erlang_pid)); - switch_set_flag(session_element, LFLAG_SESSION_ALIVE); /* attach the session to the listener */ add_session_elem_to_listener(listener, session_element); ei_link(listener, ei_self(listener->ec), pid); @@ -1381,7 +1377,6 @@ session_elem_t *attach_call_to_spawned_process(listener_t *listener, char *modul memcpy(&session_element->process.pid, p->pid, sizeof(erlang_pid)); session_element->spawn_reply = NULL; - switch_set_flag(session_element, LFLAG_SESSION_ALIVE); switch_clear_flag(session_element, LFLAG_OUTBOUND_INIT); switch_clear_flag(session_element, LFLAG_WAITING_FOR_PID); @@ -1487,19 +1482,9 @@ SWITCH_STANDARD_APP(erlang_outbound_function) } if (session_element) { - switch_ivr_park(session, NULL); - - /* keep app thread running for lifetime of session */ - if (switch_channel_down(switch_core_session_get_channel(session))) { - if ((session_element = switch_channel_get_private(switch_core_session_get_channel(session), "_erlang_session_"))) { - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "outbound session all done\n"); - switch_clear_flag_locked(session_element, LFLAG_SESSION_ALIVE); - } else { - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "outbound session already done\n"); - } - } } + } switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "exit erlang_outbound_function\n"); } diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h index b6adcdafe5..1721d496fb 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.h @@ -35,8 +35,7 @@ typedef enum { LFLAG_WAITING_FOR_PID = (1 << 0), /* waiting for a node to return a pid */ LFLAG_OUTBOUND_INIT = (1 << 1), /* Erlang peer has been notified of this session */ - LFLAG_SESSION_ALIVE = (1 << 2), - LFLAG_SESSION_COMPLETE = (1 << 3), + LFLAG_SESSION_COMPLETE = (1 << 2), } session_flag_t; typedef enum { From ca7a1acb1df747d6d219ad0b0517d844807dca53 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 11:43:39 -0500 Subject: [PATCH 378/630] FS-3809 --resolve --- src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index 509aec7da4..927f30b534 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -1807,6 +1807,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_erlang_event_runtime) if ((clientfd = ei_accept_tmo(&ec, (int) listen_list.sockfd, &conn, 500)) == ERL_ERROR) { if (prefs.done) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting Down\n"); + break; } else if (erl_errno == ETIMEDOUT) { continue; #ifdef WIN32 @@ -1820,9 +1821,8 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_erlang_event_runtime) /* if errno didn't get set, assume nothing *too* horrible occured */ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Ignorable error in ei_accept - probable bad client version, bad cookie or bad nodename\n"); - continue; } - break; + continue; } listener = new_listener(&ec, clientfd); From ce186707ff2a4b7ee2a5a3a4280bb27e734cff37 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 11:44:19 -0500 Subject: [PATCH 379/630] FS-3577 --resolve --- src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index 927f30b534..12cf01a650 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -819,7 +819,7 @@ static void listener_main_loop(listener_t *listener) /* do we need the mutex when reading? */ /*switch_mutex_lock(listener->sock_mutex); */ - status = ei_xreceive_msg_tmo(listener->sockfd, &msg, &buf, 100); + status = ei_xreceive_msg_tmo(listener->sockfd, &msg, &buf, 10); /*switch_mutex_unlock(listener->sock_mutex); */ switch (status) { @@ -1411,8 +1411,7 @@ SWITCH_STANDARD_APP(erlang_outbound_function) char *reg_name = NULL, *node, *module = NULL, *function = NULL; listener_t *listener; int argc = 0, argc2 = 0; - char *argv[80] = { 0 }, *argv2[80] = { - 0}; + char *argv[80] = { 0 }, *argv2[80] = { 0 }; char *mydata, *myarg; char uuid[SWITCH_UUID_FORMATTED_LENGTH + 1]; switch_bool_t new_session = SWITCH_FALSE; From 092a0f8b5f25553e721eb230bffd005844ffca16 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 13:09:38 -0500 Subject: [PATCH 380/630] FS-4194 --resolve --- src/switch_ivr_originate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 33c5e2e6d0..87ff02ec8c 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -444,7 +444,7 @@ static uint8_t check_channel_status(originate_global_t *oglobals, originate_stat for (i = 0; i < len; i++) { - if (switch_channel_test_flag(originate_status[i].peer_channel, CF_CHANNEL_SWAP)) { + if (originate_status[i].peer_channel && switch_channel_test_flag(originate_status[i].peer_channel, CF_CHANNEL_SWAP)) { const char *key = switch_channel_get_variable(originate_status[i].peer_channel, "channel_swap_uuid"); switch_core_session_t *swap_session, *old_session; From fd622401999bae056d8f650446c5861a7875d906 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Mon, 7 May 2012 14:05:21 -0500 Subject: [PATCH 381/630] changes for mod_gsmopen for vs2010 --- Freeswitch.2010.sln | 32 +++ .../win32/gsmlib.2010.vcxproj | 263 ++++++++++++++++++ .../mod_gsmopen/mod_gsmopen.2010.vcxproj | 170 +++++++++++ src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 9 + 4 files changed, 474 insertions(+) create mode 100644 src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.2010.vcxproj create mode 100644 src/mod/endpoints/mod_gsmopen/mod_gsmopen.2010.vcxproj diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln index 3a8469c327..e7cccee08c 100644 --- a/Freeswitch.2010.sln +++ b/Freeswitch.2010.sln @@ -521,6 +521,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applications\mod_sms\mod_sms.2010.vcxproj", "{2469B306-B027-4FF2-8815-C9C1EA2CAE79}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.2010.vcxproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2010.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Win32 = All|Win32 @@ -3544,6 +3548,32 @@ Global {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64 Setup.ActiveCfg = Release|x64 {2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x86 Setup.ActiveCfg = Release|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.Build.0 = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64 Setup.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x86 Setup.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64 Setup.ActiveCfg = Debug|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x86 Setup.ActiveCfg = Debug|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64 Setup.ActiveCfg = Release|x64 + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x86 Setup.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.Build.0 = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64 Setup.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x86 Setup.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64 Setup.ActiveCfg = Debug|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x86 Setup.ActiveCfg = Debug|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64 Setup.ActiveCfg = Release|x64 + {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x86 Setup.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3569,6 +3599,7 @@ Global {48414740-C693-4968-9846-EE058020C64F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {C6E78A4C-DB1E-47F4-9B63-4DC27D86343F} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {05C9FB27-480E-4D53-B3B7-7338E2514666} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} + {74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} @@ -3655,6 +3686,7 @@ Global {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC} {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000} {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000} diff --git a/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.2010.vcxproj b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.2010.vcxproj new file mode 100644 index 0000000000..78bc811ea1 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/gsmlib.2010.vcxproj @@ -0,0 +1,263 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + gsmlib + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + .\Release\ + .\Release\ + .\Debug\ + .\Debug\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + MaxSpeed + OnlyExplicitInline + ../vcproject;..;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + .\Release/gsmlib.pch + .\Release/ + .\Release/ + .\Release/ + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + .\Release\gsmlib.lib + true + + + true + .\Release/gsmlib.bsc + + + + + Disabled + ..;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + .\Debug/gsmlib.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + .\Debug\gsmlib.lib + true + false + %(IgnoreSpecificDefaultLibraries) + + + true + .\Debug/gsmlib.bsc + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + ../vcproject;..;.;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + true + .\Release/gsmlib.pch + .\Release/ + .\Release/ + .\Release/ + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + .\Release\gsmlib.lib + true + + + true + .\Release/gsmlib.bsc + + + + + X64 + + + Disabled + ..;.;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + .\Debug/gsmlib.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + .\Debug\gsmlib.lib + true + false + %(IgnoreSpecificDefaultLibraries) + + + true + .\Debug/gsmlib.bsc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2010.vcxproj b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2010.vcxproj new file mode 100644 index 0000000000..bf4c80fd16 --- /dev/null +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.2010.vcxproj @@ -0,0 +1,170 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_gsmopen + {74B120FF-6935-4DFE-A142-CDB6BEA99C90} + mod_skypiax + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + gsmlib\gsmlib-1.10-patched-13ubuntu;libctb-0.16\include;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + NO_ALSA;%(PreprocessorDefinitions) + + + Level4 + false + + + gsmlib.lib ctbd-0.16.lib "..\..\..\..\w32\library\debug\freeswitchcore.lib" "..\..\..\..\libs\libteletone\Debug\libteletone.lib" ksuser.lib "..\..\..\..\libs\win32\apr\debug\libapr-1.lib" +rpcrt4.lib "..\..\..\..\debug\libtiff.lib" "..\..\..\..\libs\spandsp\src\debug\spandsp.lib" %(AdditionalOptions) + gsmlib\gsmlib-1.10-patched-13ubuntu\win32\Debug;libctb-0.16\lib;%(AdditionalLibraryDirectories) + false + + + + + + + gsmlib\gsmlib-1.10-patched-13ubuntu;libctb-0.16\include;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + rpcrt4.lib %(AdditionalOptions) + false + + + + + + + X64 + + + gsmlib\gsmlib-1.10-patched-13ubuntu;libctb-0.16\include;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + NO_ALSA;%(PreprocessorDefinitions) + + + Level4 + false + + + gsmlib.lib ctbd-0.16.lib "..\..\..\..\w32\library\debug\freeswitchcore.lib" "..\..\..\..\libs\libteletone\Debug\libteletone.lib" ksuser.lib "..\..\..\..\libs\win32\apr\debug\libapr-1.lib" +rpcrt4.lib "..\..\..\..\debug\libtiff.lib" "..\..\..\..\libs\spandsp\src\debug\spandsp.lib" %(AdditionalOptions) + gsmlib\gsmlib-1.10-patched-13ubuntu\win32\Debug;libctb-0.16\lib;%(AdditionalLibraryDirectories) + false + + + MachineX64 + + + + + X64 + + + gsmlib\gsmlib-1.10-patched-13ubuntu;libctb-0.16\include;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src\msvc;%(RootDir)%(Directory)..\..\..\..\libs\spandsp\src;%(RootDir)%(Directory)..\..\..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) + + + + + rpcrt4.lib %(AdditionalOptions) + false + + + MachineX64 + + + + + + + + + + + + {26c82fce-e0cf-4d10-a00c-d8e582ffeb53} + + + + + + \ No newline at end of file diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index 51564e0f5f..d75dd5e6c4 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -345,7 +345,12 @@ static switch_status_t interface_exists(char *the_interface) static switch_status_t remove_interface(char *the_interface) { int x = 10; +#ifdef WIN32 + switch_size_t howmany = 8; +#else unsigned int howmany = 8; +#endif + int interface_id = -1; private_t *tech_pvt = NULL; switch_status_t status; @@ -1922,7 +1927,11 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_gsmopen_shutdown) int x; private_t *tech_pvt = NULL; switch_status_t status; +#ifdef WIN32 + switch_size_t howmany = 8; +#else unsigned int howmany = 8; +#endif int interface_id; int fd; From 412c808e0cadcf8f1998a660a803238d1962524b Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Mon, 7 May 2012 15:10:25 -0400 Subject: [PATCH 382/630] freetdm: Added GSM module skeleton --- libs/freetdm/Makefile.am | 8 + libs/freetdm/configure.ac | 9 + libs/freetdm/mod_freetdm/mod_freetdm.c | 93 ++++ libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 424 ++++++++++++++++++ libs/freetdm/src/include/freetdm.h | 3 +- libs/freetdm/src/include/private/ftdm_types.h | 3 +- 6 files changed, 538 insertions(+), 2 deletions(-) create mode 100644 libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c diff --git a/libs/freetdm/Makefile.am b/libs/freetdm/Makefile.am index 35f1cecd1e..b54069a508 100644 --- a/libs/freetdm/Makefile.am +++ b/libs/freetdm/Makefile.am @@ -248,6 +248,14 @@ ftmod_r2_la_LDFLAGS = -shared -module -avoid-version -lopenr2 ftmod_r2_la_LIBADD = libfreetdm.la endif +if HAVE_WAT +mod_LTLIBRARIES += ftmod_gsm.la +ftmod_gsm_la_SOURCES = $(SRC)/ftmod/ftmod_gsm/ftmod_gsm.c +ftmod_gsm_la_CFLAGS = $(FTDM_CFLAGS) $(AM_CFLAGS) +ftmod_gsm_la_LDFLAGS = -shared -module -avoid-version -lwat +ftmod_gsm_la_LIBADD = libfreetdm.la +endif + if HAVE_MISDN mod_LTLIBRARIES += ftmod_misdn.la ftmod_misdn_la_SOURCES = $(SRC)/ftmod/ftmod_misdn/ftmod_misdn.c diff --git a/libs/freetdm/configure.ac b/libs/freetdm/configure.ac index 292c1e7cfa..cb254da56b 100644 --- a/libs/freetdm/configure.ac +++ b/libs/freetdm/configure.ac @@ -189,6 +189,14 @@ AC_CHECK_LIB([openr2], [openr2_context_set_io_type], [HAVE_OPENR2="yes"]) AC_MSG_RESULT([checking whether to build ftmod_r2... ${HAVE_OPENR2}]) AM_CONDITIONAL([HAVE_OPENR2], [test "${HAVE_OPENR2}" = "yes"]) +## +# WAT GSM stack +# +HAVE_WAT="no" +AC_CHECK_LIB([wat], [wat_version], [HAVE_WAT="yes"]) +AC_MSG_RESULT([checking whether to build ftmod_wat... ${HAVE_WAT}]) +AM_CONDITIONAL([HAVE_WAT], [test "${HAVE_WAT}" = "yes"]) + ## # Digium libpri (TODO: add checks) # @@ -450,6 +458,7 @@ AC_MSG_RESULT([ ftmod_sangoma_isdn................. ${HAVE_SNG_ISDN} ftmod_sangoma_ss7.................. ${HAVE_SNG_SS7} ftmod_r2........................... ${HAVE_OPENR2} + ftmod_gsm.......................... ${HAVE_WAT} ftmod_pritap....................... ${HAVE_PRITAP} I/O: ftmod_wanpipe...................... ${HAVE_LIBSANGOMA} diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 0fc7906331..3f461e8ab1 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -2820,6 +2820,95 @@ static int add_profile_parameters(switch_xml_t cfg, const char *profname, ftdm_c return paramindex; } +static void parse_gsm_spans(switch_xml_t cfg, switch_xml_t spans) +{ + switch_xml_t myspan, param; + + for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) { + ftdm_status_t zstatus = FTDM_FAIL; + const char *context = "default"; + const char *dialplan = "XML"; + ftdm_conf_parameter_t spanparameters[30]; + char *id = (char *) switch_xml_attr(myspan, "id"); + char *name = (char *) switch_xml_attr(myspan, "name"); + char *configname = (char *) switch_xml_attr(myspan, "cfgprofile"); + ftdm_span_t *span = NULL; + uint32_t span_id = 0; + unsigned paramindex = 0; + + if (!name && !id) { + CONFIG_ERROR("sangoma isdn span missing required attribute 'id' or 'name', skipping ...\n"); + continue; + } + + if (name) { + zstatus = ftdm_span_find_by_name(name, &span); + } else { + if (switch_is_number(id)) { + span_id = atoi(id); + zstatus = ftdm_span_find(span_id, &span); + } + + if (zstatus != FTDM_SUCCESS) { + zstatus = ftdm_span_find_by_name(id, &span); + } + } + + if (zstatus != FTDM_SUCCESS) { + CONFIG_ERROR("Error finding FreeTDM span id:%s name:%s\n", switch_str_nil(id), switch_str_nil(name)); + continue; + } + + if (!span_id) { + span_id = ftdm_span_get_id(span); + } + + memset(spanparameters, 0, sizeof(spanparameters)); + paramindex = 0; + + if (configname) { + paramindex = add_profile_parameters(cfg, configname, spanparameters, ftdm_array_len(spanparameters)); + if (paramindex) { + ftdm_log(FTDM_LOG_DEBUG, "Added %d parameters from profile %s for span %d\n", paramindex, configname, span_id); + } + } + + for (param = switch_xml_child(myspan, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (ftdm_array_len(spanparameters) - 1 == paramindex) { + CONFIG_ERROR("Too many parameters for GSM span, ignoring any parameter after %s\n", var); + break; + } + + if (!strcasecmp(var, "context")) { + context = val; + } else if (!strcasecmp(var, "dialplan")) { + dialplan = val; + } else { + spanparameters[paramindex].var = var; + spanparameters[paramindex].val = val; + paramindex++; + } + } + + if (ftdm_configure_span_signaling(span, + "gsm", + on_clear_channel_signal, + spanparameters) != FTDM_SUCCESS) { + CONFIG_ERROR("Error configuring Sangoma ISDN FreeTDM span %d\n", span_id); + continue; + } + SPAN_CONFIG[span_id].span = span; + switch_copy_string(SPAN_CONFIG[span_id].context, context, sizeof(SPAN_CONFIG[span_id].context)); + switch_copy_string(SPAN_CONFIG[span_id].dialplan, dialplan, sizeof(SPAN_CONFIG[span_id].dialplan)); + switch_copy_string(SPAN_CONFIG[span_id].type, "GSM", sizeof(SPAN_CONFIG[span_id].type)); + ftdm_log(FTDM_LOG_DEBUG, "Configured GSM FreeTDM span %d\n", span_id); + ftdm_span_start(span); + } +} + static void parse_bri_pri_spans(switch_xml_t cfg, switch_xml_t spans) { switch_xml_t myspan, param; @@ -2997,6 +3086,10 @@ static switch_status_t load_config(void) parse_bri_pri_spans(cfg, spans); } + if ((spans = switch_xml_child(cfg, "gsm_spans"))) { + parse_gsm_spans(cfg, spans); + } + switch_core_hash_init(&globals.ss7_configs, module_pool); if ((spans = switch_xml_child(cfg, "sangoma_ss7_spans"))) { for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) { diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c new file mode 100644 index 0000000000..8337a3829e --- /dev/null +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -0,0 +1,424 @@ +/* + * Copyright (c) 2011, Sangoma Technologies + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER + * 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. + * + * Contributors: + * + * Gideon Sadan + * Moises Silva + * + */ + +#include +#include +#include +#include + +/* span monitor thread */ +static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj); + +/* IO interface for the command API */ +static ftdm_io_interface_t g_ftdm_gsm_interface; + +static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(gsm_outgoing_call) +{ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "GSM place call not implemented yet!\n"); + return FTDM_FAIL; +} + +static ftdm_status_t ftdm_gsm_start(ftdm_span_t *span) +{ + return ftdm_thread_create_detached(ftdm_gsm_run, span); +} + +static ftdm_status_t ftdm_gsm_stop(ftdm_span_t *span) +{ + ftdm_log(FTDM_LOG_CRIT, "STOP not implemented yet!\n"); + return FTDM_FAIL; +} + +static FIO_CHANNEL_GET_SIG_STATUS_FUNCTION(ftdm_gsm_get_channel_sig_status) +{ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "get sig status not implemented yet!\n"); + return FTDM_FAIL; +} + +static FIO_CHANNEL_SET_SIG_STATUS_FUNCTION(ftdm_gsm_set_channel_sig_status) +{ + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "set sig status not implemented yet!\n"); + return FTDM_FAIL; +} + +static FIO_SPAN_GET_SIG_STATUS_FUNCTION(ftdm_gsm_get_span_sig_status) +{ + ftdm_log(FTDM_LOG_CRIT, "span get sig status not implemented yet!\n"); + return FTDM_FAIL; +} + +static FIO_SPAN_SET_SIG_STATUS_FUNCTION(ftdm_gsm_set_span_sig_status) +{ + ftdm_log(FTDM_LOG_CRIT, "span set sig status not implemented yet!\n"); + return FTDM_FAIL; +} + +static ftdm_state_map_t gsm_state_map = { + { + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_ANY_STATE, FTDM_END}, + {FTDM_CHANNEL_STATE_RESET, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_RESET, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + {FTDM_CHANNEL_STATE_RING, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_RING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_CHANNEL_STATE_UP, FTDM_END} + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_UP, FTDM_END}, + }, + { + ZSD_INBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_UP, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + }, + + /* Outbound states */ + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_ANY_STATE, FTDM_END}, + {FTDM_CHANNEL_STATE_RESET, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_RESET, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END}, + {FTDM_CHANNEL_STATE_DIALING, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_DIALING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END}, + {FTDM_CHANNEL_STATE_DOWN, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_TERMINATING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_UP, FTDM_END} + }, + + { + ZSD_OUTBOUND, + ZSM_UNACCEPTABLE, + {FTDM_CHANNEL_STATE_UP, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_END} + }, + } +}; + +static ftdm_status_t ftdm_gsm_state_advance(ftdm_channel_t *ftdmchan) +{ + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Executing state handler for %s\n", ftdm_channel_state2str(ftdmchan->state)); + return FTDM_SUCCESS; +} + +static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) +{ + unsigned paramindex = 0; + const char *var = NULL; + const char *val = NULL; + + ftdm_assert_return(sig_cb != NULL, FTDM_FAIL, "No signaling cb provided\n"); + + if (span->signal_type) { + snprintf(span->last_error, sizeof(span->last_error), "Span is already configured for signalling."); + return FTDM_FAIL; + } + + for (; ftdm_parameters[paramindex].var; paramindex++) { + var = ftdm_parameters[paramindex].var; + val = ftdm_parameters[paramindex].val; + ftdm_log(FTDM_LOG_DEBUG, "Reading GSM parameter %s for span %d\n", var, span->span_id); + if (!strcasecmp(var, "moduletype")) { + if (!val) { + break; + } + if (ftdm_strlen_zero_buf(val)) { + ftdm_log(FTDM_LOG_NOTICE, "Ignoring empty moduletype parameter\n"); + continue; + } + ftdm_log(FTDM_LOG_DEBUG, "Configuring GSM span %d for moduletype %s\n", span->span_id, val); + } else { + snprintf(span->last_error, sizeof(span->last_error), "Unknown GSM parameter [%s]", var); + return FTDM_FAIL; + } + } + + /* Bind function pointers for control operations */ + span->start = ftdm_gsm_start; + span->stop = ftdm_gsm_stop; + span->sig_read = NULL; + span->sig_write = NULL; + + span->signal_cb = sig_cb; + span->signal_type = FTDM_SIGTYPE_GSM; + span->signal_data = NULL; /* Gideon, plz fill me with gsm span specific data (you allocate and free) */ + span->outgoing_call = gsm_outgoing_call; + span->get_span_sig_status = ftdm_gsm_get_span_sig_status; + span->set_span_sig_status = ftdm_gsm_set_span_sig_status; + span->get_channel_sig_status = ftdm_gsm_get_channel_sig_status; + span->set_channel_sig_status = ftdm_gsm_set_channel_sig_status; + + span->state_map = &gsm_state_map; + span->state_processor = ftdm_gsm_state_advance; + + /* use signals queue */ + ftdm_set_flag(span, FTDM_SPAN_USE_SIGNALS_QUEUE); + + /* we can skip states (going straight from RING to UP) */ + ftdm_set_flag(span, FTDM_SPAN_USE_SKIP_STATES); + +#if 0 + /* setup the scheduler (create if needed) */ + snprintf(schedname, sizeof(schedname), "ftmod_r2_%s", span->name); + ftdm_assert(ftdm_sched_create(&r2data->sched, schedname) == FTDM_SUCCESS, "Failed to create schedule!\n"); + spanpvt->sched = r2data->sched; +#endif + + return FTDM_SUCCESS; + +} + +static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) +{ + ftdm_channel_t *ftdmchan = NULL; + ftdm_span_t *span = (ftdm_span_t *) obj; + ftdm_iterator_t *chaniter = NULL; + ftdm_iterator_t *citer = NULL; + int waitms = 10; + + ftdm_log(FTDM_LOG_DEBUG, "GSM monitor thread for span %s started\n", span->name); + + chaniter = ftdm_span_get_chan_iterator(span, NULL); + if (!chaniter) { + ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); + goto done; + } + while (ftdm_running()) { + +#if 0 + /* run any span timers */ + ftdm_sched_run(r2data->sched); + +#endif + /* deliver the actual channel events to the user now without any channel locking */ + ftdm_span_trigger_signals(span); +#if 0 + /* figure out what event to poll each channel for. POLLPRI when the channel is down, + * POLLPRI|POLLIN|POLLOUT otherwise */ + memset(poll_events, 0, sizeof(short)*span->chan_count); + citer = ftdm_span_get_chan_iterator(span, chaniter); + if (!citer) { + ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); + goto done; + } + for (i = 0; citer; citer = ftdm_iterator_next(citer), i++) { + ftdmchan = ftdm_iterator_current(citer); + r2chan = R2CALL(ftdmchan)->r2chan; + poll_events[i] = FTDM_EVENTS; + if (openr2_chan_get_read_enabled(r2chan)) { + poll_events[i] |= FTDM_READ; + } + } + status = ftdm_span_poll_event(span, waitms, poll_events); + + /* run any span timers */ + ftdm_sched_run(r2data->sched); +#endif + ftdm_sleep(waitms); + + + /* this main loop takes care of MF and CAS signaling during call setup and tear down + * for every single channel in the span, do not perform blocking operations here! */ + citer = ftdm_span_get_chan_iterator(span, chaniter); + for ( ; citer; citer = ftdm_iterator_next(citer)) { + ftdmchan = ftdm_iterator_current(citer); + + ftdm_channel_lock(ftdmchan); + + ftdm_channel_advance_states(ftdmchan); + + ftdm_channel_unlock(ftdmchan); + } + } + +done: + ftdm_iterator_free(chaniter); + + ftdm_log(FTDM_LOG_DEBUG, "GSM thread ending.\n"); + + return NULL; +} + +#define FT_SYNTAX "USAGE:\n" \ +"--------------------------------------------------------------------------------\n" \ +"ftdm gsm status \n" \ +"--------------------------------------------------------------------------------\n" +static FIO_API_FUNCTION(ftdm_gsm_api) +{ + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + + if (data) { + mycmd = ftdm_strdup(data); + argc = ftdm_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (argc == 1) { + if (!strcasecmp(argv[0], "version")) { + stream->write_function(stream, "libwat GSM version: implement me!!\n"); + stream->write_function(stream, "+OK.\n"); + goto done; + } + } + + stream->write_function(stream, "%s", FT_SYNTAX); + +done: + + ftdm_safe_free(mycmd); + + return FTDM_SUCCESS; + +} + +static FIO_IO_LOAD_FUNCTION(ftdm_gsm_io_init) +{ + assert(fio != NULL); + memset(&g_ftdm_gsm_interface, 0, sizeof(g_ftdm_gsm_interface)); + + g_ftdm_gsm_interface.name = "gsm"; + g_ftdm_gsm_interface.api = ftdm_gsm_api; + + *fio = &g_ftdm_gsm_interface; + + return FTDM_SUCCESS; +} + +static FIO_SIG_LOAD_FUNCTION(ftdm_gsm_init) +{ + /* this is called on module load */ + return FTDM_SUCCESS; +} + +static FIO_SIG_UNLOAD_FUNCTION(ftdm_gsm_destroy) +{ + /* this is called on module unload */ + return FTDM_SUCCESS; +} + +EX_DECLARE_DATA ftdm_module_t ftdm_module = { + /* .name */ "gsm", + /* .io_load */ ftdm_gsm_io_init, + /* .io_unload */ NULL, + /* .sig_load */ ftdm_gsm_init, + /* .sig_configure */ NULL, + /* .sig_unload */ ftdm_gsm_destroy, + /* .configure_span_signaling */ ftdm_gsm_configure_span_signaling +}; + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index 585a5d72ae..81f31e4ff8 100755 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -472,9 +472,10 @@ typedef enum { FTDM_TRUNK_FXO, FTDM_TRUNK_FXS, FTDM_TRUNK_EM, + FTDM_TRUNK_GSM, FTDM_TRUNK_NONE } ftdm_trunk_type_t; -#define TRUNK_STRINGS "E1", "T1", "J1", "BRI", "BRI_PTMP", "FXO", "FXS", "EM", "NONE" +#define TRUNK_STRINGS "E1", "T1", "J1", "BRI", "BRI_PTMP", "FXO", "FXS", "EM", "GSM", "NONE" /*! \brief Move from string to ftdm_trunk_type_t and viceversa */ FTDM_STR2ENUM_P(ftdm_str2ftdm_trunk_type, ftdm_trunk_type2str, ftdm_trunk_type_t) diff --git a/libs/freetdm/src/include/private/ftdm_types.h b/libs/freetdm/src/include/private/ftdm_types.h index 6df25fe4d2..5bacaaf9ba 100755 --- a/libs/freetdm/src/include/private/ftdm_types.h +++ b/libs/freetdm/src/include/private/ftdm_types.h @@ -163,7 +163,8 @@ typedef enum { FTDM_SIGTYPE_SANGOMABOOST, FTDM_SIGTYPE_M3UA, FTDM_SIGTYPE_R2, - FTDM_SIGTYPE_SS7 + FTDM_SIGTYPE_SS7, + FTDM_SIGTYPE_GSM } ftdm_signal_type_t; typedef enum { From 9cb67dd0c77c9cb3136ac0414e2e646d3b979559 Mon Sep 17 00:00:00 2001 From: Gideon Sadan Date: Wed, 21 Dec 2011 18:41:56 -0500 Subject: [PATCH 383/630] freetdm: initializing wat library interface --- libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 187 ++++++++++++++++++- 1 file changed, 185 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c index 8337a3829e..f0b62e36ac 100644 --- a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -2,7 +2,7 @@ * Copyright (c) 2011, Sangoma Technologies * All rights reserved. * - * Redistribution and use in source and binary forms, with or without + Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * @@ -37,11 +37,145 @@ * */ +#define _GNU_SOURCE + +#include +#include +#include + +#include +#include +#include +#include +#include +/*========================*/ + #include #include #include #include + + +typedef struct ftdm_gsm_data_s { + + wat_interface_t wat_interface; + +} ftdm_gsm_data_t; + +/* wat callbacks */ +void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus); +void on_wat_span_alarm(unsigned char span_id, wat_alarm_t alarm); +int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len); + +void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event); +void on_wat_con_sts(unsigned char span_id, uint8_t call_id, wat_con_status_t *status); +void on_wat_rel_ind(unsigned char span_id, uint8_t call_id, wat_rel_event_t *rel_event); +void on_wat_rel_cfm(unsigned char span_id, uint8_t call_id); +void on_wat_sms_ind(unsigned char span_id, wat_sms_event_t *sms_event); +void on_wat_sms_sts(unsigned char span_id, uint8_t sms_id, wat_sms_status_t *status); + + +void on_wat_log(uint8_t level, char *fmt, ...); +void *on_wat_malloc(size_t size); +void *on_wat_calloc(size_t nmemb, size_t size); +void on_wat_free(void *ptr); +void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...); + + +/* gsm_data->wat_interface.wat_log = on_log; */ + +/* gsm_data->wat_interface.wat_log_span = on_log_span; */ + +/* gsm_data->wat_interface.wat_malloc = on_wat_malloc;*/ +/* gsm_data->wat_interface.wat_calloc = on_wat_calloc;*/ +/* gsm_data->wat_interface.wat_free = on_wat_free;*/ + + +int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) +{ + int res = 0; + + return res; +} + +void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus) +{ + fprintf(stdout, "span:%d Signalling status changed %d\n", span_id, sigstatus); + + return; +} + +void on_wat_span_alarm(unsigned char span_id, wat_alarm_t alrm) +{ + fprintf(stdout, "span:%d Alarm received\n", span_id); + return;ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); +} + +void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event) +{ + fprintf(stdout, "s%d: Incoming call (id:%d) Calling Number:%s type:%d plan:%d\n", span_id, call_id, con_event->calling_num.digits, con_event->calling_num.type, con_event->calling_num.plan); + + + return; +} + +void on_wat_con_sts(unsigned char span_id, uint8_t call_id, wat_con_status_t *status) +{ + return; +} + +void on_wat_rel_ind(unsigned char span_id, uint8_t call_id, wat_rel_event_t *rel_event) +{ + fprintf(stdout, "s%d: Call hangup (id:%d) cause:%d\n", span_id, call_id, rel_event->cause); + + return; +} + +void on_wat_rel_cfm(unsigned char span_id, uint8_t call_id) +{ + fprintf(stdout, "s%d: Call hangup complete (id:%d)\n", span_id, call_id); + return; +} + +void on_wat_sms_ind(unsigned char span_id, wat_sms_event_t *sms_event) +{ + return; +} + +void on_wat_sms_sts(unsigned char span_id, uint8_t sms_id, wat_sms_status_t *status) +{ + return; +} + + + +void on_wat_log(uint8_t level, char *fmt, ...) +{ + +} + + +void *on_wat_malloc(size_t size) +{ + return NULL; +} +void *on_wat_calloc(size_t nmemb, size_t size) +{ + return NULL; +} +void on_wat_free(void *ptr) +{ + +} +void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...) +{ + +} + + +/* END wat callbacks */ + /* span monitor thread */ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj); @@ -212,6 +346,49 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) const char *var = NULL; const char *val = NULL; + ftdm_gsm_data_t *gsm_data = malloc(sizeof(*gsm_data)); + if (!gsm_data) { + snprintf(span->last_error, sizeof(span->last_error), "Failed to allocate GSM data."); + return FTDM_FAIL; + } + memset(gsm_data,0, sizeof(*gsm_data)); + + + /* */ + + +ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); + + gsm_data->wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; + gsm_data->wat_interface.wat_span_write = on_wat_span_write; + + gsm_data->wat_interface.wat_log = on_wat_log; + gsm_data->wat_interface.wat_log_span = on_wat_log_span; + gsm_data->wat_interface.wat_malloc = on_wat_malloc; + gsm_data->wat_interface.wat_calloc = on_wat_calloc; + gsm_data->wat_interface.wat_free = on_wat_free; + + gsm_data->wat_interface.wat_alarm = on_wat_span_alarm; + gsm_data->wat_interface.wat_con_ind = on_wat_con_ind; + gsm_data->wat_interface.wat_con_sts = on_wat_con_sts; + gsm_data->wat_interface.wat_rel_ind = on_wat_rel_ind; + gsm_data->wat_interface.wat_rel_cfm = on_wat_rel_cfm; + gsm_data->wat_interface.wat_sms_ind = on_wat_sms_ind; + gsm_data->wat_interface.wat_sms_sts = on_wat_sms_sts; + + if (wat_register(&gsm_data->wat_interface)) { + snprintf(span->last_error, sizeof(span->last_error), "Failed to register WAT Library !!!\n"); + ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); + return FTDM_FAIL; + + } + ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); + + + /* */ + + + ftdm_assert_return(sig_cb != NULL, FTDM_FAIL, "No signaling cb provided\n"); if (span->signal_type) { @@ -219,6 +396,9 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) return FTDM_FAIL; } + + + for (; ftdm_parameters[paramindex].var; paramindex++) { var = ftdm_parameters[paramindex].var; val = ftdm_parameters[paramindex].val; @@ -355,12 +535,15 @@ static FIO_API_FUNCTION(ftdm_gsm_api) if (data) { mycmd = ftdm_strdup(data); + argc = ftdm_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); } if (argc == 1) { if (!strcasecmp(argv[0], "version")) { - stream->write_function(stream, "libwat GSM version: implement me!!\n"); + uint8_t current = 0, revision = 0, age = 0; + wat_version(¤t, &revision, &age); + stream->write_function(stream, "libwat GSM VERSION: %d.%d.%d\n", current, revision, age); stream->write_function(stream, "+OK.\n"); goto done; } From f891fefcb166a3c5f054b3e88aac2225ca99435a Mon Sep 17 00:00:00 2001 From: Gideon Sadan Date: Thu, 22 Dec 2011 19:31:28 -0500 Subject: [PATCH 384/630] freetdm: GSM read and write initialization --- libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 334 ++++++++++++++++--- 1 file changed, 287 insertions(+), 47 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c index f0b62e36ac..23bb118270 100644 --- a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -55,14 +55,85 @@ #include #include +#define MAX_SPANS 32 +typedef struct ftdm_gsm_span_data_s { + ftdm_span_t *span; + fio_signal_cb_t sig_cb; + ftdm_conf_parameter_t *ftdm_parameters; +}ftdm_gsm_span_data_t; +static ftdm_gsm_span_data_t spans_info[MAX_SPANS]; +static int n_spans_info = 0; + typedef struct ftdm_gsm_data_s { wat_interface_t wat_interface; + + } ftdm_gsm_data_t; +ftdm_span_t *get_span(int span_id); + +ftdm_span_t *get_span(int span_id) +{ + int i; + for(i=0; i< n_spans_info;i++) + { + if(spans_info[i].span->span_id == span_id) { + + return spans_info[i].span; + } + + } + + return NULL; +} + +ftdm_channel_t *get_channel(int span_id, int channel_id); +ftdm_channel_t *get_channel(int span_id, int channel_id) +{ + ftdm_channel_t *ftdmchan = NULL; + ftdm_span_t * span = get_span(span_id); + + if(!span){ + return NULL; + } + + + + + ftdm_iterator_t *citer = ftdm_span_get_chan_iterator(span, NULL); + + for ( ; citer; citer = ftdm_iterator_next(citer)) { + ftdmchan = ftdm_iterator_current(citer); + if(ftdmchan->chan_id == channel_id) { + ftdm_iterator_free(citer); + return ftdmchan; + } + + + + + } + + ftdm_iterator_free(citer); + return NULL; +} + + +static int read_channel(ftdm_channel_t *ftdm_chan , const void *buf, int size) +{ + + ftdm_size_t outsize = size; + ftdm_status_t status = ftdm_channel_read(ftdm_chan, (void *)buf, &outsize); + if (FTDM_FAIL == status) { + return -1; + } + return (int)outsize; +} + /* wat callbacks */ void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus); void on_wat_span_alarm(unsigned char span_id, wat_alarm_t alarm); @@ -85,18 +156,30 @@ void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...); /* gsm_data->wat_interface.wat_log = on_log; */ -/* gsm_data->wat_interface.wat_log_span = on_log_span; */ +/* gsm_data->wat_interface.wat +_log_span = on_log_span; */ /* gsm_data->wat_interface.wat_malloc = on_wat_malloc;*/ /* gsm_data->wat_interface.wat_calloc = on_wat_calloc;*/ -/* gsm_data->wat_interface.wat_free = on_wat_free;*/ +/* gsm_data->wat_interface.wat_free = on_wat_frspanee;*/ int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) { - int res = 0; - - return res; +/* + ftdm_log(FTDM_LOG_DEBUG, "!!! on_wat_span_write(%d, %s, int)\n", span_id, buffer, len); +*/ + ftdm_channel_t * ftdm_chan = get_channel(span_id, 2); + ftdm_size_t outsize = len; + ftdm_channel_lock(ftdm_chan); + ftdm_status_t status = ftdm_channel_write(ftdm_chan, (void *)buffer, len, &outsize); + ftdm_channel_unlock(ftdm_chan); + if (FTDM_FAIL == status) { + return -1; + } + return (int)outsize; + + } void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus) @@ -109,7 +192,7 @@ void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus) void on_wat_span_alarm(unsigned char span_id, wat_alarm_t alrm) { fprintf(stdout, "span:%d Alarm received\n", span_id); - return;ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); + return; } void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event) @@ -153,24 +236,73 @@ void on_wat_sms_sts(unsigned char span_id, uint8_t sms_id, wat_sms_status_t *sta void on_wat_log(uint8_t level, char *fmt, ...) { + int ftdm_level; + + va_list argptr; + va_start(argptr, fmt); + + char buff[10001]; + switch(level) + { + case WAT_LOG_CRIT: ftdm_level = FTDM_LOG_LEVEL_CRIT; break; + case WAT_LOG_ERROR: ftdm_level = FTDM_LOG_LEVEL_ERROR; break; + default: + case WAT_LOG_WARNING: ftdm_level = FTDM_LOG_LEVEL_WARNING; break; + case WAT_LOG_INFO: ftdm_level = FTDM_LOG_LEVEL_INFO; break; + case WAT_LOG_NOTICE: ftdm_level = FTDM_LOG_LEVEL_NOTICE; break; + case WAT_LOG_DEBUG: ftdm_level = FTDM_LOG_LEVEL_DEBUG; break; + + }; + + + vsprintf(buff, fmt, argptr); + + ftdm_log(FTDM_PRE, ftdm_level, "WAT :%s", buff); + + va_end(argptr); } void *on_wat_malloc(size_t size) { - return NULL; + return ftdm_malloc(size); } void *on_wat_calloc(size_t nmemb, size_t size) { - return NULL; + return ftdm_calloc(nmemb, size); } void on_wat_free(void *ptr) { - + ftdm_free(ptr); } void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...) { + int ftdm_level; + va_list argptr; + va_start(argptr, fmt); + + char buff[10001]; + switch(level) + { + case WAT_LOG_CRIT: ftdm_level = FTDM_LOG_LEVEL_CRIT; break; + case WAT_LOG_ERROR: ftdm_level = FTDM_LOG_LEVEL_ERROR; break; + default: + case WAT_LOG_WARNING: ftdm_level = FTDM_LOG_LEVEL_WARNING; break; + case WAT_LOG_INFO: ftdm_level = FTDM_LOG_LEVEL_INFO; break; + case WAT_LOG_NOTICE: ftdm_level = FTDM_LOG_LEVEL_NOTICE; break; + case WAT_LOG_DEBUG: ftdm_level = FTDM_LOG_LEVEL_DEBUG; break; + + }; + + + vsprintf(buff, fmt, argptr); + + ftdm_log(FTDM_PRE, ftdm_level, "WAT span %d:%s", span_id, buff); + + va_end(argptr); + + } @@ -346,8 +478,26 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) const char *var = NULL; const char *val = NULL; + + if (n_spans_info >= MAX_SPANS) { + snprintf(span->last_error, sizeof(span->last_error), "MAX_SPANS Exceeded !!!\n"); + ftdm_log(FTDM_LOG_DEBUG, span->last_error); + return FTDM_FAIL; + + } + + memset(&spans_info[n_spans_info], 0 ,sizeof(spans_info[n_spans_info])); + + spans_info[n_spans_info].span = span; + spans_info[n_spans_info].sig_cb = sig_cb; + spans_info[n_spans_info].ftdm_parameters = ftdm_parameters; + n_spans_info ++; + + + ftdm_gsm_data_t *gsm_data = malloc(sizeof(*gsm_data)); if (!gsm_data) { + snprintf(span->last_error, sizeof(span->last_error), "Failed to allocate GSM data."); return FTDM_FAIL; } @@ -357,37 +507,6 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) /* */ -ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); - - gsm_data->wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; - gsm_data->wat_interface.wat_span_write = on_wat_span_write; - - gsm_data->wat_interface.wat_log = on_wat_log; - gsm_data->wat_interface.wat_log_span = on_wat_log_span; - gsm_data->wat_interface.wat_malloc = on_wat_malloc; - gsm_data->wat_interface.wat_calloc = on_wat_calloc; - gsm_data->wat_interface.wat_free = on_wat_free; - - gsm_data->wat_interface.wat_alarm = on_wat_span_alarm; - gsm_data->wat_interface.wat_con_ind = on_wat_con_ind; - gsm_data->wat_interface.wat_con_sts = on_wat_con_sts; - gsm_data->wat_interface.wat_rel_ind = on_wat_rel_ind; - gsm_data->wat_interface.wat_rel_cfm = on_wat_rel_cfm; - gsm_data->wat_interface.wat_sms_ind = on_wat_sms_ind; - gsm_data->wat_interface.wat_sms_sts = on_wat_sms_sts; - - if (wat_register(&gsm_data->wat_interface)) { - snprintf(span->last_error, sizeof(span->last_error), "Failed to register WAT Library !!!\n"); - ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); - return FTDM_FAIL; - - } - ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); - - - /* */ - - ftdm_assert_return(sig_cb != NULL, FTDM_FAIL, "No signaling cb provided\n"); @@ -426,7 +545,7 @@ ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); span->signal_cb = sig_cb; span->signal_type = FTDM_SIGTYPE_GSM; - span->signal_data = NULL; /* Gideon, plz fill me with gsm span specific data (you allocate and free) */ + span->signal_data = gsm_data; /* Gideon, plz fill me with gsm span specific data (you allocate and free) */ span->outgoing_call = gsm_outgoing_call; span->get_span_sig_status = ftdm_gsm_get_span_sig_status; span->set_span_sig_status = ftdm_gsm_set_span_sig_status; @@ -442,6 +561,8 @@ ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); /* we can skip states (going straight from RING to UP) */ ftdm_set_flag(span, FTDM_SPAN_USE_SKIP_STATES); + + #if 0 /* setup the scheduler (create if needed) */ snprintf(schedname, sizeof(schedname), "ftmod_r2_%s", span->name); @@ -449,6 +570,69 @@ ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); spanpvt->sched = r2data->sched; #endif + + +ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); + + gsm_data->wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; + gsm_data->wat_interface.wat_span_write = on_wat_span_write; + + gsm_data->wat_interface.wat_log = on_wat_log; + gsm_data->wat_interface.wat_log_span = on_wat_log_span; + gsm_data->wat_interface.wat_malloc = on_wat_malloc; + gsm_data->wat_interface.wat_calloc = on_wat_calloc; + gsm_data->wat_interface.wat_free = on_wat_free; + + gsm_data->wat_interface.wat_alarm = on_wat_span_alarm; + gsm_data->wat_interface.wat_con_ind = on_wat_con_ind; + gsm_data->wat_interface.wat_con_sts = on_wat_con_sts; + gsm_data->wat_interface.wat_rel_ind = on_wat_rel_ind; + gsm_data->wat_interface.wat_rel_cfm = on_wat_rel_cfm; + gsm_data->wat_interface.wat_sms_ind = on_wat_sms_ind; + gsm_data->wat_interface.wat_sms_sts = on_wat_sms_sts; + + if (wat_register(&gsm_data->wat_interface)) { + snprintf(span->last_error, sizeof(span->last_error), "Failed to register WAT Library !!!\n"); + ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); + return FTDM_FAIL; + + } + ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); + + + + + ftdm_log(FTDM_LOG_DEBUG, "Configuring span\n"); + + //sng_fd_t dev; + //sangoma_wait_obj_t *waitable; + //unsigned char wat_span_id; + + + wat_span_config_t _wat_span_config; + + + _wat_span_config.moduletype = WAT_MODULE_TELIT; + _wat_span_config.timeout_cid_num = 10; + + if (wat_span_config(span->span_id, &_wat_span_config)) { + fprintf(stderr, "Failed to configure span!!\n"); + return FTDM_FAIL; + } + + fprintf(stdout, "Starting span\n"); + if (wat_span_start(span->span_id)) { + fprintf(stderr, "Failed to start span!!\n"); + return FTDM_FAIL; + } + + + + + + + + return FTDM_SUCCESS; } @@ -459,8 +643,13 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) ftdm_span_t *span = (ftdm_span_t *) obj; ftdm_iterator_t *chaniter = NULL; ftdm_iterator_t *citer = NULL; - int waitms = 10; + int waitms = 10, i; + ftdm_status_t status; + + short *poll_events = ftdm_malloc(sizeof(short) * span->chan_count); + + unsigned next; ftdm_log(FTDM_LOG_DEBUG, "GSM monitor thread for span %s started\n", span->name); chaniter = ftdm_span_get_chan_iterator(span, NULL); @@ -468,12 +657,27 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); goto done; } + + ftdmchan = get_channel(span->span_id, 2); + + if (ftdm_channel_open_chan(ftdmchan) != FTDM_SUCCESS) { + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to open channel during incoming call! [%s]\n", ftdmchan->last_error); + return NULL; + } + while (ftdm_running()) { + + wat_span_run(span->span_id); + next = wat_span_schedule_next(span->span_id); + if(next < waitms) { + next = waitms; + } + #if 0 /* run any span timers */ ftdm_sched_run(r2data->sched); - + #endif /* deliver the actual channel events to the user now without any channel locking */ ftdm_span_trigger_signals(span); @@ -483,8 +687,8 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) memset(poll_events, 0, sizeof(short)*span->chan_count); citer = ftdm_span_get_chan_iterator(span, chaniter); if (!citer) { - ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); - goto done; + ftdm_log(Fshort *poll_events = ftdm_malloc(sizeof(short) * span->chan_count);TDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); + goto done;short *poll_events = ftdm_malloc(sizeof(short) * span->chan_count); } for (i = 0; citer; citer = ftdm_iterator_next(citer), i++) { ftdmchan = ftdm_iterator_current(citer); @@ -497,7 +701,7 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) status = ftdm_span_poll_event(span, waitms, poll_events); /* run any span timers */ - ftdm_sched_run(r2data->sched); + ftdm_sched_runshort *poll_events = ftdm_malloc(sizeof(short) * span->chan_count);(r2data->sched); #endif ftdm_sleep(waitms); @@ -513,6 +717,33 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) ftdm_channel_advance_states(ftdmchan); ftdm_channel_unlock(ftdmchan); + + } + + for(i=0;i< span->chan_count; i++) + poll_events[i] = FTDM_EVENTS; + + poll_events[1] |= FTDM_READ; + status = ftdm_span_poll_event(span, next, poll_events); + + if(FTDM_SUCCESS == status) + { + ftdm_channel_lock(ftdmchan); + ftdm_channel_t * ftdm_chan = get_channel(span->span_id, 2); + char buffer[11]; + int n = read_channel(ftdm_chan , buffer, sizeof(buffer)); + ftdm_channel_unlock(ftdmchan); + if(n > 0) { + + wat_span_process_read(span->span_id, buffer, n); + /* + ftdm_log(FTDM_LOG_DEBUG, "!!! read_channel got %d bytes\n", n); + */ + } + else { + ftdm_sleep(waitms); + } + } } @@ -544,6 +775,16 @@ static FIO_API_FUNCTION(ftdm_gsm_api) uint8_t current = 0, revision = 0, age = 0; wat_version(¤t, &revision, &age); stream->write_function(stream, "libwat GSM VERSION: %d.%d.%d\n", current, revision, age); + stream->write_function(stream, "+OK.\n"); + goto done; + } + + if (!strcasecmp(argv[0], "status")) { + + /*wat_chip_info_t* chip_info = wat_span_get_chip_info(span->span_id); */ + + + stream->write_function(stream, "+OK.\n"); goto done; } @@ -571,7 +812,6 @@ static FIO_IO_LOAD_FUNCTION(ftdm_gsm_io_init) return FTDM_SUCCESS; } - static FIO_SIG_LOAD_FUNCTION(ftdm_gsm_init) { /* this is called on module load */ From c268b388a7a3053731422fddf9c243e1dfb3d722 Mon Sep 17 00:00:00 2001 From: Gideon Sadan Date: Fri, 23 Dec 2011 16:59:58 -0500 Subject: [PATCH 385/630] freetdm: GSM - Finish adding status command + stabilizing --- libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 164 ++++++++++++++++--- 1 file changed, 145 insertions(+), 19 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c index 23bb118270..d94e2594cc 100644 --- a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -25,7 +25,7 @@ * 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 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFn_spans_info * 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. @@ -74,6 +74,10 @@ typedef struct ftdm_gsm_data_s { } ftdm_gsm_data_t; + +static ftdm_status_t init_wat_lib(void); +static int wat_lib_initialized = 0; + ftdm_span_t *get_span(int span_id); ftdm_span_t *get_span(int span_id) @@ -166,9 +170,9 @@ _log_span = on_log_span; */ int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) { -/* - ftdm_log(FTDM_LOG_DEBUG, "!!! on_wat_span_write(%d, %s, int)\n", span_id, buffer, len); -*/ + +/* ftdm_log(FTDM_LOG_DEBUG, "====================>>> %s (%d) - %d\n", buffer, len, (int) span_id);*/ + ftdm_channel_t * ftdm_chan = get_channel(span_id, 2); ftdm_size_t outsize = len; ftdm_channel_lock(ftdm_chan); @@ -472,12 +476,61 @@ static ftdm_status_t ftdm_gsm_state_advance(ftdm_channel_t *ftdmchan) return FTDM_SUCCESS; } + + +static ftdm_status_t init_wat_lib(void) +{ + + if(wat_lib_initialized) + { + return FTDM_SUCCESS; + } + + wat_interface_t wat_interface; + + ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); + fprintf(stdout, "Registering interface to WAT Library...\n"); + + wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; + wat_interface.wat_span_write = on_wat_span_write; + + wat_interface.wat_log = on_wat_log; + wat_interface.wat_log_span = on_wat_log_span; + wat_interface.wat_malloc = on_wat_malloc; + wat_interface.wat_calloc = on_wat_calloc; + wat_interface.wat_free = on_wat_free; + + wat_interface.wat_alarm = on_wat_span_alarm; + wat_interface.wat_con_ind = on_wat_con_ind; + wat_interface.wat_con_sts = on_wat_con_sts; + wat_interface.wat_rel_ind = on_wat_rel_ind; + wat_interface.wat_rel_cfm = on_wat_rel_cfm; + wat_interface.wat_sms_ind = on_wat_sms_ind; + wat_interface.wat_sms_sts = on_wat_sms_sts; + + if (wat_register(&wat_interface)) { + ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); + return FTDM_FAIL; + + } + ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); + + fprintf(stdout, "Registered interface to WAT Library\n"); + wat_lib_initialized = 1; + return FTDM_SUCCESS; +} + + static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) { unsigned paramindex = 0; const char *var = NULL; const char *val = NULL; + if(FTDM_SUCCESS != init_wat_lib()) + { + return FTDM_FAIL; + } if (n_spans_info >= MAX_SPANS) { snprintf(span->last_error, sizeof(span->last_error), "MAX_SPANS Exceeded !!!\n"); @@ -571,7 +624,7 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) #endif - +#if 0 ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); gsm_data->wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; @@ -599,15 +652,13 @@ ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); } ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); +#endif ftdm_log(FTDM_LOG_DEBUG, "Configuring span\n"); - //sng_fd_t dev; - //sangoma_wait_obj_t *waitable; - //unsigned char wat_span_id; - + wat_span_config_t _wat_span_config; @@ -620,25 +671,29 @@ ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); return FTDM_FAIL; } - fprintf(stdout, "Starting span\n"); +/* + fprintf(stdout, "Starting span %d\n", span->span_id); if (wat_span_start(span->span_id)) { - fprintf(stderr, "Failed to start span!!\n"); + fprintf(stderr, "Failed to start span %d!!\n", span->span_id); return FTDM_FAIL; } + fprintf(stdout, "SUCCESS Starting span %d\n", span->span_id); - + */ - return FTDM_SUCCESS; } static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) { + + + ftdm_channel_t *ftdmchan = NULL; ftdm_span_t *span = (ftdm_span_t *) obj; ftdm_iterator_t *chaniter = NULL; @@ -646,7 +701,21 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) int waitms = 10, i; ftdm_status_t status; + + +fprintf(stdout, "Starting span %d\n", span->span_id); + + if (wat_span_start(span->span_id)) { + + fprintf(stderr, "Failed to start span %d!!\n", span->span_id); + return NULL; + } + + + fprintf(stdout, "SUCCESS Starting span %d\n", span->span_id); + + short *poll_events = ftdm_malloc(sizeof(short) * span->chan_count); unsigned next; @@ -665,6 +734,8 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) return NULL; } + + while (ftdm_running()) { @@ -682,7 +753,7 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) /* deliver the actual channel events to the user now without any channel locking */ ftdm_span_trigger_signals(span); #if 0 - /* figure out what event to poll each channel for. POLLPRI when the channel is down, + /* figure ouwat_chip_info_tt what event to poll each channel for. POLLPRI when the channel is down, * POLLPRI|POLLIN|POLLOUT otherwise */ memset(poll_events, 0, sizeof(short)*span->chan_count); citer = ftdm_span_get_chan_iterator(span, chaniter); @@ -714,6 +785,7 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) ftdm_channel_lock(ftdmchan); + ftdm_channel_advance_states(ftdmchan); ftdm_channel_unlock(ftdmchan); @@ -730,12 +802,16 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) { ftdm_channel_lock(ftdmchan); ftdm_channel_t * ftdm_chan = get_channel(span->span_id, 2); - char buffer[11]; - int n = read_channel(ftdm_chan , buffer, sizeof(buffer)); + char buffer[2001]; + memset(buffer, 0, sizeof(buffer)); + unsigned int n = 0; + n = read_channel(ftdm_chan , buffer, sizeof(buffer)); + ftdm_channel_unlock(ftdmchan); if(n > 0) { wat_span_process_read(span->span_id, buffer, n); + /*ftdm_log(FTDM_LOG_DEBUG, "<<<<<<<<<<<<<<<<<<<<<<===== %s (%d) - %d\n", buffer, n, (int) span->span_id);*/ /* ftdm_log(FTDM_LOG_DEBUG, "!!! read_channel got %d bytes\n", n); */ @@ -781,9 +857,58 @@ static FIO_API_FUNCTION(ftdm_gsm_api) if (!strcasecmp(argv[0], "status")) { - /*wat_chip_info_t* chip_info = wat_span_get_chip_info(span->span_id); */ - + int n; + for(n = 0; n < n_spans_info; n++) + { + ftdm_span_t *span = spans_info[n].span; + wat_chip_info_t* chip_info = (wat_chip_info_t*)wat_span_get_chip_info(span->span_id); + wat_sim_info_t* sim_info = (wat_sim_info_t*)wat_span_get_sim_info(span->span_id); + wat_net_info_t* net_info = (wat_net_info_t*)wat_span_get_net_info(span->span_id); + /*wat_sig_info_t* sig_info = (wat_sig_info_t*)wat_span_get_sig_info(span->span_id);*/ + /*wat_pin_stat_t* pin_stat = (wat_pin_stat_t*)wat_span_get_pin_info(span->span_id);*/ + + stream->write_function(stream, "Span %d:\n", span->span_id); + + stream->write_function(stream, "CHIP - %s (%s), revision %s, serial %s \n", + chip_info->manufacturer_name, + chip_info->manufacturer_id, + chip_info->revision, + chip_info->serial + ); + + + stream->write_function(stream, "SIM - Subscriber Type %s, imsi %s\n", + sim_info->subscriber_type, + sim_info->imsi + ); + + const char *stypes[] = {WAT_NUMBER_TYPE_STRINGS }; + const char *ptypes[] = {WAT_NUMBER_PLAN_STRINGS }; + const char *validities[] = {WAT_NUMBER_VALIDITY_STRINGS }; + + stream->write_function(stream, "Subscriber - Number %s, Plan %s, validity %s\n", + sim_info->subscriber.digits, + stypes[sim_info->subscriber.type], + ptypes[sim_info->subscriber.plan], + validities[sim_info->subscriber.validity] + + ); + + const char *net_stats[] = {WAT_NET_STAT_STRINGS}; + + + stream->write_function(stream, "Network - status %s, Area Code %d, Cell ID %d, Operator %s\n", + net_stats[net_info->stat], + net_info->lac, + net_info->ci, + net_info->operator_name + ); + + + stream->write_function(stream, "\n"); + + } stream->write_function(stream, "+OK.\n"); goto done; @@ -798,6 +923,7 @@ done: return FTDM_SUCCESS; + } static FIO_IO_LOAD_FUNCTION(ftdm_gsm_io_init) @@ -810,7 +936,7 @@ static FIO_IO_LOAD_FUNCTION(ftdm_gsm_io_init) *fio = &g_ftdm_gsm_interface; - return FTDM_SUCCESS; + return (FTDM_SUCCESS); } static FIO_SIG_LOAD_FUNCTION(ftdm_gsm_init) { From 06eee95da8794741857dfddec8dd83d0211bda27 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sat, 24 Dec 2011 23:58:03 -0500 Subject: [PATCH 386/630] freetdm: update ftmod_gsm.c to match latest libwat changes --- libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 49 ++++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c index d94e2594cc..1a6c18f513 100644 --- a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -25,7 +25,7 @@ * 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 OFn_spans_info + * 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. @@ -139,8 +139,6 @@ static int read_channel(ftdm_channel_t *ftdm_chan , const void *buf, int size) } /* wat callbacks */ -void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus); -void on_wat_span_alarm(unsigned char span_id, wat_alarm_t alarm); int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len); void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event); @@ -186,17 +184,39 @@ int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) } -void on_wat_sigstatus_change(unsigned char span_id, wat_sigstatus_t sigstatus) +static void on_wat_span_status(unsigned char span_id, wat_span_status_t *status) { - fprintf(stdout, "span:%d Signalling status changed %d\n", span_id, sigstatus); - - return; -} - -void on_wat_span_alarm(unsigned char span_id, wat_alarm_t alrm) -{ - fprintf(stdout, "span:%d Alarm received\n", span_id); - return; + switch (status->type) { + case WAT_SPAN_STS_READY: + { + ftdm_log(FTDM_LOG_INFO, "span %d: Ready\n", span_id); + } + break; + case WAT_SPAN_STS_SIGSTATUS: + { + if (status->sts.sigstatus == WAT_SIGSTATUS_UP) { + ftdm_log(FTDM_LOG_INFO, "span %d: Signaling is now up\n", span_id); + } else { + ftdm_log(FTDM_LOG_INFO, "span %d: Signaling is now down\n", span_id); + } + } + break; + case WAT_SPAN_STS_SIM_INFO_READY: + { + ftdm_log(FTDM_LOG_INFO, "span %d: SIM information ready\n", span_id); + } + break; + case WAT_SPAN_STS_ALARM: + { + ftdm_log(FTDM_LOG_INFO, "span %d: Alarm received\n", span_id); + } + break; + default: + { + ftdm_log(FTDM_LOG_INFO, "span %d: Unhandled span status notification %d\n", span_id, status->type); + } + break; + } } void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event) @@ -491,7 +511,6 @@ static ftdm_status_t init_wat_lib(void) ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); fprintf(stdout, "Registering interface to WAT Library...\n"); - wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; wat_interface.wat_span_write = on_wat_span_write; wat_interface.wat_log = on_wat_log; @@ -500,13 +519,13 @@ static ftdm_status_t init_wat_lib(void) wat_interface.wat_calloc = on_wat_calloc; wat_interface.wat_free = on_wat_free; - wat_interface.wat_alarm = on_wat_span_alarm; wat_interface.wat_con_ind = on_wat_con_ind; wat_interface.wat_con_sts = on_wat_con_sts; wat_interface.wat_rel_ind = on_wat_rel_ind; wat_interface.wat_rel_cfm = on_wat_rel_cfm; wat_interface.wat_sms_ind = on_wat_sms_ind; wat_interface.wat_sms_sts = on_wat_sms_sts; + wat_interface.wat_span_sts = on_wat_span_status; if (wat_register(&wat_interface)) { ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); From de9803414537a12ce687607f02fe1f66f57a6b94 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sun, 25 Dec 2011 20:49:10 -0500 Subject: [PATCH 387/630] freetdm: - Extend ftdm interrupt object to notify which IO events are ready in the device - Add definition of FTDM_MAX_SIG_PARAMETERS to have a standard limit for signaling module parameters --- libs/freetdm/mod_freetdm/mod_freetdm.c | 14 ++--- libs/freetdm/src/ftdm_io.c | 2 +- libs/freetdm/src/ftdm_queue.c | 2 +- libs/freetdm/src/ftdm_state.c | 2 +- libs/freetdm/src/ftdm_threadmutex.c | 57 +++++++++++++++++---- libs/freetdm/src/include/freetdm.h | 11 ++-- libs/freetdm/src/include/ftdm_declare.h | 8 +++ libs/freetdm/src/include/ftdm_threadmutex.h | 3 +- 8 files changed, 70 insertions(+), 29 deletions(-) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 3f461e8ab1..ff2c94f72d 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -2828,7 +2828,7 @@ static void parse_gsm_spans(switch_xml_t cfg, switch_xml_t spans) ftdm_status_t zstatus = FTDM_FAIL; const char *context = "default"; const char *dialplan = "XML"; - ftdm_conf_parameter_t spanparameters[30]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; char *id = (char *) switch_xml_attr(myspan, "id"); char *name = (char *) switch_xml_attr(myspan, "name"); char *configname = (char *) switch_xml_attr(myspan, "cfgprofile"); @@ -2917,7 +2917,7 @@ static void parse_bri_pri_spans(switch_xml_t cfg, switch_xml_t spans) ftdm_status_t zstatus = FTDM_FAIL; const char *context = "default"; const char *dialplan = "XML"; - ftdm_conf_parameter_t spanparameters[30]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; char *id = (char *) switch_xml_attr(myspan, "id"); char *name = (char *) switch_xml_attr(myspan, "name"); char *configname = (char *) switch_xml_attr(myspan, "cfgprofile"); @@ -3096,7 +3096,7 @@ static switch_status_t load_config(void) ftdm_status_t zstatus = FTDM_FAIL; const char *context = "default"; const char *dialplan = "XML"; - ftdm_conf_parameter_t spanparameters[30]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; char *id = (char *) switch_xml_attr(myspan, "id"); char *name = (char *) switch_xml_attr(myspan, "name"); char *configname = (char *) switch_xml_attr(myspan, "cfgprofile"); @@ -3498,7 +3498,7 @@ static switch_status_t load_config(void) if ((spans = switch_xml_child(cfg, "pri_spans"))) { for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) { char *name = (char *) switch_xml_attr(myspan, "name"); - ftdm_conf_parameter_t spanparameters[10]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; ftdm_status_t zstatus = FTDM_FAIL; const char *context = "default"; const char *dialplan = "XML"; @@ -3566,7 +3566,7 @@ static switch_status_t load_config(void) ftdm_status_t zstatus = FTDM_FAIL; unsigned paramindex = 0; - ftdm_conf_parameter_t spanparameters[10]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; const char *context = "default"; const char *dialplan = "XML"; ftdm_span_t *span = NULL; @@ -3624,7 +3624,7 @@ static switch_status_t load_config(void) if ((spans = switch_xml_child(cfg, "libpri_spans"))) { for (myspan = switch_xml_child(spans, "span"); myspan; myspan = myspan->next) { char *name = (char *) switch_xml_attr(myspan, "name"); - ftdm_conf_parameter_t spanparameters[10]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; ftdm_status_t zstatus = FTDM_FAIL; const char *context = "default"; const char *dialplan = "XML"; @@ -3699,7 +3699,7 @@ static switch_status_t load_config(void) uint32_t span_id = 0; ftdm_span_t *span = NULL; - ftdm_conf_parameter_t spanparameters[30]; + ftdm_conf_parameter_t spanparameters[FTDM_MAX_SIG_PARAMETERS]; unsigned paramindex = 0; if (!name) { diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index f08eeaacf7..e00e0f3141 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -5633,7 +5633,7 @@ static void *ftdm_cpu_monitor_run(ftdm_thread_t *me, void *obj) static ftdm_status_t ftdm_cpu_monitor_start(void) { - if (ftdm_interrupt_create(&globals.cpu_monitor.interrupt, FTDM_INVALID_SOCKET) != FTDM_SUCCESS) { + if (ftdm_interrupt_create(&globals.cpu_monitor.interrupt, FTDM_INVALID_SOCKET, FTDM_NO_FLAGS) != FTDM_SUCCESS) { ftdm_log(FTDM_LOG_CRIT, "Failed to create CPU monitor interrupt\n"); return FTDM_FAIL; } diff --git a/libs/freetdm/src/ftdm_queue.c b/libs/freetdm/src/ftdm_queue.c index 75d18033da..625f22ec36 100644 --- a/libs/freetdm/src/ftdm_queue.c +++ b/libs/freetdm/src/ftdm_queue.c @@ -98,7 +98,7 @@ static ftdm_status_t ftdm_std_queue_create(ftdm_queue_t **outqueue, ftdm_size_t goto failed; } - if (ftdm_interrupt_create(&queue->interrupt, FTDM_INVALID_SOCKET) != FTDM_SUCCESS) { + if (ftdm_interrupt_create(&queue->interrupt, FTDM_INVALID_SOCKET, FTDM_NO_FLAGS) != FTDM_SUCCESS) { goto failed; } diff --git a/libs/freetdm/src/ftdm_state.c b/libs/freetdm/src/ftdm_state.c index d3f99f6074..e2ccf83747 100644 --- a/libs/freetdm/src/ftdm_state.c +++ b/libs/freetdm/src/ftdm_state.c @@ -254,7 +254,7 @@ static ftdm_status_t ftdm_core_set_state(const char *file, const char *func, int } if (!ftdmchan->state_completed_interrupt) { - status = ftdm_interrupt_create(&ftdmchan->state_completed_interrupt, FTDM_INVALID_SOCKET); + status = ftdm_interrupt_create(&ftdmchan->state_completed_interrupt, FTDM_INVALID_SOCKET, FTDM_NO_FLAGS); if (status != FTDM_SUCCESS) { ftdm_log_chan_ex(ftdmchan, file, func, line, FTDM_LOG_LEVEL_CRIT, "Failed to create state change interrupt when moving from %s to %s\n", ftdm_channel_state2str(ftdmchan->state), ftdm_channel_state2str(state)); diff --git a/libs/freetdm/src/ftdm_threadmutex.c b/libs/freetdm/src/ftdm_threadmutex.c index 56653811fa..a659adf11d 100644 --- a/libs/freetdm/src/ftdm_threadmutex.c +++ b/libs/freetdm/src/ftdm_threadmutex.c @@ -73,6 +73,8 @@ struct ftdm_mutex { struct ftdm_interrupt { ftdm_socket_t device; + ftdm_wait_flag_t device_input_flags; + ftdm_wait_flag_t device_output_flags; #ifdef WIN32 /* for generic interruption */ HANDLE event; @@ -323,7 +325,7 @@ FT_DECLARE(ftdm_status_t) _ftdm_mutex_unlock(const char *file, int line, const c } -FT_DECLARE(ftdm_status_t) ftdm_interrupt_create(ftdm_interrupt_t **ininterrupt, ftdm_socket_t device) +FT_DECLARE(ftdm_status_t) ftdm_interrupt_create(ftdm_interrupt_t **ininterrupt, ftdm_socket_t device, ftdm_wait_flag_t device_flags) { ftdm_status_t status = FTDM_SUCCESS; ftdm_interrupt_t *interrupt = NULL; @@ -340,6 +342,7 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_create(ftdm_interrupt_t **ininterrupt, } interrupt->device = device; + interrupt->device_input_flags = device_flags; #ifdef WIN32 interrupt->event = CreateEvent(NULL, FALSE, FALSE, NULL); if (!interrupt->event) { @@ -389,15 +392,16 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_wait(ftdm_interrupt_t *interrupt, int m char pipebuf[255]; #endif - ftdm_assert_return(interrupt != NULL, FTDM_FAIL, "Condition is null!\n"); - + ftdm_assert_return(interrupt != NULL, FTDM_FAIL, "Interrupt is null!\n"); + interrupt->device_output_flags = FTDM_NO_FLAGS; /* start implementation */ #ifdef WIN32 ints[0] = interrupt->event; if (interrupt->device != FTDM_INVALID_SOCKET) { num++; ints[1] = interrupt->device; + ftdm_log(FTDM_LOG_CRIT, "implement me! (Windows support for device_output_flags member!)\n", size); } res = WaitForMultipleObjects(num, ints, FALSE, ms >= 0 ? ms : INFINITE); switch (res) { @@ -422,7 +426,7 @@ pollagain: if (interrupt->device != FTDM_INVALID_SOCKET) { num++; ints[1].fd = interrupt->device; - ints[1].events = POLLIN; + ints[1].events = interrupt->device_input_flags; ints[1].revents = 0; } @@ -446,7 +450,17 @@ pollagain: ftdm_log(FTDM_LOG_CRIT, "reading interrupt descriptor failed (%s)\n", strerror(errno)); } } - + if (interrupt->device != FTDM_INVALID_SOCKET) { + if (ints[1].revents & POLLIN) { + interrupt->device_output_flags |= FTDM_READ; + } + if (ints[1].revents & POLLOUT) { + interrupt->device_output_flags |= FTDM_WRITE; + } + if (ints[1].revents & POLLPRI) { + interrupt->device_output_flags |= FTDM_EVENTS; + } + } return FTDM_SUCCESS; #endif } @@ -515,10 +529,12 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_multiple_wait(ftdm_interrupt_t *interru for (i = 0; i < size; i++) { ints[i] = interrupts[i]->event; + interrupts[i]->device_output_flags = FTDM_NO_FLAGS; if (interrupts[i]->device != FTDM_INVALID_SOCKET) { - + /* WARNING: if the device is ready for data we must implement for Windows the device_output_flags member */ ints[size+numdevices] = interrupts[i]->device; numdevices++; + ftdm_log(FTDM_LOG_CRIT, "implement me! (Windows support for device_data_ready member!)\n", size); } } @@ -548,17 +564,16 @@ pollagain: ints[i].events = POLLIN; ints[i].revents = 0; ints[i].fd = interrupts[i]->readfd; + interrupts[i]->device_output_flags = FTDM_NO_FLAGS; if (interrupts[i]->device != FTDM_INVALID_SOCKET) { - ints[size+numdevices].events = POLLIN; + ints[size+numdevices].events = interrupts[i]->device_input_flags; ints[size+numdevices].revents = 0; ints[size+numdevices].fd = interrupts[i]->device; - numdevices++; } } res = poll(ints, size + numdevices, ms); - if (res == -1) { if (errno == EINTR) { goto pollagain; @@ -571,7 +586,8 @@ pollagain: return FTDM_TIMEOUT; } - /* check for events in the pipes, NOT in the devices */ + /* check for events in the pipes and in the devices, but service only the pipes */ + numdevices = 0; for (i = 0; i < size; i++) { if (ints[i].revents & POLLIN) { res = read(ints[i].fd, pipebuf, sizeof(pipebuf)); @@ -579,6 +595,18 @@ pollagain: ftdm_log(FTDM_LOG_CRIT, "reading interrupt descriptor failed (%s)\n", strerror(errno)); } } + if (interrupts[i]->device != FTDM_INVALID_SOCKET) { + if (ints[size+numdevices].revents & POLLIN) { + interrupts[i]->device_output_flags |= FTDM_READ; + } + if (ints[size+numdevices].revents & POLLOUT) { + interrupts[i]->device_output_flags |= FTDM_WRITE; + } + if (ints[size+numdevices].revents & POLLPRI) { + interrupts[i]->device_output_flags |= FTDM_EVENTS; + } + numdevices++; + } } #else /* for MacOS compilation, unused vars */ @@ -587,6 +615,15 @@ pollagain: return FTDM_SUCCESS; } +FT_DECLARE(ftdm_wait_flag_t) ftdm_interrupt_device_ready(ftdm_interrupt_t *interrupt) +{ +#if defined(__WINDOWS__) + /* device output flags are not currently filled for Windows upon returning from a wait function */ + ftdm_log(FTDM_LOG_CRIT, "IMPLEMENT ME!\n"); +#endif + return interrupt->device_output_flags; +} + /* For Emacs: * Local Variables: * mode:c diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index 81f31e4ff8..32d883c9b4 100755 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -62,6 +62,9 @@ /*! \brief Max number of groups */ #define FTDM_MAX_GROUPS_INTERFACE FTDM_MAX_SPANS_INTERFACE +/*! \brief Max number of key=value pairs to be sent as signaling stack parameters */ +#define FTDM_MAX_SIG_PARAMETERS 30 + #define FTDM_INVALID_INT_PARM 0xFF /*! \brief Thread/Mutex OS abstraction API. */ @@ -621,14 +624,6 @@ typedef enum { FTDM_CRASH_ON_ASSERT } ftdm_crash_policy_t; -/*! \brief I/O waiting flags */ -typedef enum { - FTDM_NO_FLAGS = 0, - FTDM_READ = (1 << 0), - FTDM_WRITE = (1 << 1), - FTDM_EVENTS = (1 << 2) -} ftdm_wait_flag_t; - /*! \brief Signaling configuration parameter for the stacks (variable=value pair) */ typedef struct ftdm_conf_parameter { const char *var; diff --git a/libs/freetdm/src/include/ftdm_declare.h b/libs/freetdm/src/include/ftdm_declare.h index 9c7f9cbe4a..cf4dcdd555 100644 --- a/libs/freetdm/src/include/ftdm_declare.h +++ b/libs/freetdm/src/include/ftdm_declare.h @@ -203,6 +203,14 @@ typedef enum { FTDM_TRUE } ftdm_bool_t; +/*! \brief I/O waiting flags */ +typedef enum { + FTDM_NO_FLAGS = 0, + FTDM_READ = (1 << 0), + FTDM_WRITE = (1 << 1), + FTDM_EVENTS = (1 << 2) +} ftdm_wait_flag_t; + /*! * \brief FreeTDM channel. * This is the basic data structure used to place calls and I/O operations diff --git a/libs/freetdm/src/include/ftdm_threadmutex.h b/libs/freetdm/src/include/ftdm_threadmutex.h index 2e802fe913..b77f19f4bb 100644 --- a/libs/freetdm/src/include/ftdm_threadmutex.h +++ b/libs/freetdm/src/include/ftdm_threadmutex.h @@ -52,11 +52,12 @@ FT_DECLARE(ftdm_status_t) _ftdm_mutex_trylock(const char *file, int line, const #define ftdm_mutex_unlock(_x) _ftdm_mutex_unlock(__FILE__, __LINE__, __FUNCTION__, _x) FT_DECLARE(ftdm_status_t) _ftdm_mutex_unlock(const char *file, int line, const char *func, ftdm_mutex_t *mutex); -FT_DECLARE(ftdm_status_t) ftdm_interrupt_create(ftdm_interrupt_t **cond, ftdm_socket_t device); +FT_DECLARE(ftdm_status_t) ftdm_interrupt_create(ftdm_interrupt_t **cond, ftdm_socket_t device, ftdm_wait_flag_t device_flags); FT_DECLARE(ftdm_status_t) ftdm_interrupt_destroy(ftdm_interrupt_t **cond); FT_DECLARE(ftdm_status_t) ftdm_interrupt_signal(ftdm_interrupt_t *cond); FT_DECLARE(ftdm_status_t) ftdm_interrupt_wait(ftdm_interrupt_t *cond, int ms); FT_DECLARE(ftdm_status_t) ftdm_interrupt_multiple_wait(ftdm_interrupt_t *interrupts[], ftdm_size_t size, int ms); +FT_DECLARE(ftdm_wait_flag_t) ftdm_interrupt_device_ready(ftdm_interrupt_t *interrupt); #ifdef __cplusplus } From cc79163da3a4e7080a9dbd73a99384ee61932d41 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sun, 25 Dec 2011 20:55:02 -0500 Subject: [PATCH 388/630] freetdm: refactor ftmod_gsm.c code to use proper core functions and interrupts to wait for io and state changes --- libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 571 +++++++------------ 1 file changed, 204 insertions(+), 367 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c index 1a6c18f513..dd46e0354c 100644 --- a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -55,78 +55,14 @@ #include #include -#define MAX_SPANS 32 typedef struct ftdm_gsm_span_data_s { ftdm_span_t *span; - fio_signal_cb_t sig_cb; - ftdm_conf_parameter_t *ftdm_parameters; -}ftdm_gsm_span_data_t; + ftdm_channel_t *dchan; +} ftdm_gsm_span_data_t; - -static ftdm_gsm_span_data_t spans_info[MAX_SPANS]; -static int n_spans_info = 0; - -typedef struct ftdm_gsm_data_s { - - wat_interface_t wat_interface; - - - -} ftdm_gsm_data_t; - - -static ftdm_status_t init_wat_lib(void); +static ftdm_status_t init_wat_lib(void); static int wat_lib_initialized = 0; -ftdm_span_t *get_span(int span_id); - -ftdm_span_t *get_span(int span_id) -{ - int i; - for(i=0; i< n_spans_info;i++) - { - if(spans_info[i].span->span_id == span_id) { - - return spans_info[i].span; - } - - } - - return NULL; -} - -ftdm_channel_t *get_channel(int span_id, int channel_id); -ftdm_channel_t *get_channel(int span_id, int channel_id) -{ - ftdm_channel_t *ftdmchan = NULL; - ftdm_span_t * span = get_span(span_id); - - if(!span){ - return NULL; - } - - - - - ftdm_iterator_t *citer = ftdm_span_get_chan_iterator(span, NULL); - - for ( ; citer; citer = ftdm_iterator_next(citer)) { - ftdmchan = ftdm_iterator_current(citer); - if(ftdmchan->chan_id == channel_id) { - ftdm_iterator_free(citer); - return ftdmchan; - } - - - - - } - - ftdm_iterator_free(citer); - return NULL; -} - - static int read_channel(ftdm_channel_t *ftdm_chan , const void *buf, int size) { @@ -139,7 +75,7 @@ static int read_channel(ftdm_channel_t *ftdm_chan , const void *buf, int size) } /* wat callbacks */ -int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len); +int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len); void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event); void on_wat_con_sts(unsigned char span_id, uint8_t call_id, wat_con_status_t *status); @@ -155,28 +91,24 @@ void *on_wat_calloc(size_t nmemb, size_t size); void on_wat_free(void *ptr); void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...); - -/* gsm_data->wat_interface.wat_log = on_log; */ - -/* gsm_data->wat_interface.wat -_log_span = on_log_span; */ - -/* gsm_data->wat_interface.wat_malloc = on_wat_malloc;*/ -/* gsm_data->wat_interface.wat_calloc = on_wat_calloc;*/ -/* gsm_data->wat_interface.wat_free = on_wat_frspanee;*/ - - int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) { - /* ftdm_log(FTDM_LOG_DEBUG, "====================>>> %s (%d) - %d\n", buffer, len, (int) span_id);*/ - - ftdm_channel_t * ftdm_chan = get_channel(span_id, 2); + ftdm_span_t *span = NULL; + ftdm_status_t status = FTDM_FAIL; + ftdm_gsm_span_data_t *gsm_data = NULL; ftdm_size_t outsize = len; - ftdm_channel_lock(ftdm_chan); - ftdm_status_t status = ftdm_channel_write(ftdm_chan, (void *)buffer, len, &outsize); - ftdm_channel_unlock(ftdm_chan); - if (FTDM_FAIL == status) { + + status = ftdm_span_find(span_id, &span); + if (status != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "Failed to find span %d to write %d bytes\n", span_id, len); + return -1; + } + + gsm_data = span->signal_data; + status = ftdm_channel_write(gsm_data->dchan, (void *)buffer, len, &outsize); + if (status != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "Failed to write %d bytes to d-channel in span %s\n", len, span->name); return -1; } return (int)outsize; @@ -346,6 +278,11 @@ static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(gsm_outgoing_call) static ftdm_status_t ftdm_gsm_start(ftdm_span_t *span) { + if (wat_span_start(span->span_id)) { + ftdm_log(FTDM_LOG_ERROR, "Failed to start span %s!\n", span->name); + return FTDM_FAIL; + } + return ftdm_thread_create_detached(ftdm_gsm_run, span); } @@ -500,17 +437,15 @@ static ftdm_status_t ftdm_gsm_state_advance(ftdm_channel_t *ftdmchan) static ftdm_status_t init_wat_lib(void) { - - if(wat_lib_initialized) - { + if (wat_lib_initialized) { return FTDM_SUCCESS; } wat_interface_t wat_interface; ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); - fprintf(stdout, "Registering interface to WAT Library...\n"); + memset(&wat_interface, 0, sizeof(wat_interface)); wat_interface.wat_span_write = on_wat_span_write; wat_interface.wat_log = on_wat_log; @@ -528,13 +463,12 @@ static ftdm_status_t init_wat_lib(void) wat_interface.wat_span_sts = on_wat_span_status; if (wat_register(&wat_interface)) { - ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); + ftdm_log(FTDM_LOG_DEBUG, "Failed registering interface to WAT library ...\n"); return FTDM_FAIL; } - ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); + ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT library\n"); - fprintf(stdout, "Registered interface to WAT Library\n"); wat_lib_initialized = 1; return FTDM_SUCCESS; } @@ -542,70 +476,81 @@ static ftdm_status_t init_wat_lib(void) static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) { + wat_span_config_t span_config; + ftdm_gsm_span_data_t *gsm_data = NULL; + ftdm_iterator_t *chaniter = NULL; + ftdm_iterator_t *citer = NULL; + ftdm_channel_t *ftdmchan = NULL; + ftdm_channel_t *dchan = NULL; unsigned paramindex = 0; const char *var = NULL; const char *val = NULL; - if(FTDM_SUCCESS != init_wat_lib()) - { + /* libwat is smart enough to set good default values for the timers if they are set to 0 */ + memset(&span_config, 0, sizeof(span_config)); + + /* set some span defaults */ + span_config.moduletype = WAT_MODULE_TELIT; + + if (FTDM_SUCCESS != init_wat_lib()) { return FTDM_FAIL; } - if (n_spans_info >= MAX_SPANS) { - snprintf(span->last_error, sizeof(span->last_error), "MAX_SPANS Exceeded !!!\n"); - ftdm_log(FTDM_LOG_DEBUG, span->last_error); - return FTDM_FAIL; - - } - - memset(&spans_info[n_spans_info], 0 ,sizeof(spans_info[n_spans_info])); - - spans_info[n_spans_info].span = span; - spans_info[n_spans_info].sig_cb = sig_cb; - spans_info[n_spans_info].ftdm_parameters = ftdm_parameters; - n_spans_info ++; - - - - ftdm_gsm_data_t *gsm_data = malloc(sizeof(*gsm_data)); - if (!gsm_data) { - - snprintf(span->last_error, sizeof(span->last_error), "Failed to allocate GSM data."); + if (!sig_cb) { + ftdm_log(FTDM_LOG_ERROR, "No signaling callback provided\n"); return FTDM_FAIL; } - memset(gsm_data,0, sizeof(*gsm_data)); - - - /* */ - - - - ftdm_assert_return(sig_cb != NULL, FTDM_FAIL, "No signaling cb provided\n"); if (span->signal_type) { - snprintf(span->last_error, sizeof(span->last_error), "Span is already configured for signalling."); + ftdm_log(FTDM_LOG_ERROR, "Span %s is already configured for another signaling\n", span->name); return FTDM_FAIL; } - - + /* verify the span has one d-channel */ + chaniter = ftdm_span_get_chan_iterator(span, NULL); + if (!chaniter) { + ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); + return FTDM_FAIL; + } - for (; ftdm_parameters[paramindex].var; paramindex++) { + citer = ftdm_span_get_chan_iterator(span, chaniter); + for ( ; citer; citer = ftdm_iterator_next(citer)) { + ftdmchan = ftdm_iterator_current(citer); + if (FTDM_IS_DCHAN(ftdmchan)) { + dchan = ftdmchan; + break; + } + } + ftdm_iterator_free(chaniter); + + if (!dchan) { + ftdm_log(FTDM_LOG_CRIT, "Could not find a d-channel for GSM span %s!\n", span->name); + return FTDM_FAIL; + } + + gsm_data = ftdm_calloc(1, sizeof(*gsm_data)); + if (!gsm_data) { + return FTDM_FAIL; + } + gsm_data->dchan = dchan; + + for (paramindex = 0; ftdm_parameters[paramindex].var; paramindex++) { var = ftdm_parameters[paramindex].var; val = ftdm_parameters[paramindex].val; - ftdm_log(FTDM_LOG_DEBUG, "Reading GSM parameter %s for span %d\n", var, span->span_id); + if (!ftdm_strlen_zero_buf(val)) { + ftdm_log(FTDM_LOG_WARNING, "Ignoring empty GSM parameter %s for span %s\n", var, val, span->name); + continue; + } + ftdm_log(FTDM_LOG_DEBUG, "Reading GSM parameter %s=%s for span %s\n", var, val, span->name); if (!strcasecmp(var, "moduletype")) { - if (!val) { - break; - } - if (ftdm_strlen_zero_buf(val)) { - ftdm_log(FTDM_LOG_NOTICE, "Ignoring empty moduletype parameter\n"); + span_config.moduletype = wat_str2wat_moduletype(val); + if (span_config.moduletype == WAT_MODULE_INVALID) { + ftdm_log(FTDM_LOG_DEBUG, "Unknown GSM module type %s for span %s\n", val, span->name); continue; } - ftdm_log(FTDM_LOG_DEBUG, "Configuring GSM span %d for moduletype %s\n", span->span_id, val); + ftdm_log(FTDM_LOG_DEBUG, "Configuring GSM span %s with moduletype %s\n", span->name, val); } else { - snprintf(span->last_error, sizeof(span->last_error), "Unknown GSM parameter [%s]", var); - return FTDM_FAIL; + ftdm_log(FTDM_LOG_ERROR, "Ignoring unknown GSM parameter '%s'", var); } } @@ -629,11 +574,12 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) /* use signals queue */ ftdm_set_flag(span, FTDM_SPAN_USE_SIGNALS_QUEUE); + ftdm_set_flag(span, FTDM_SPAN_USE_CHAN_QUEUE); /* we can skip states (going straight from RING to UP) */ ftdm_set_flag(span, FTDM_SPAN_USE_SKIP_STATES); - + gsm_data->span = span; #if 0 /* setup the scheduler (create if needed) */ @@ -642,208 +588,105 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) spanpvt->sched = r2data->sched; #endif - -#if 0 -ftdm_log(FTDM_LOG_DEBUG, "Registering interface to WAT Library...\n"); - - gsm_data->wat_interface.wat_sigstatus_change = on_wat_sigstatus_change; - gsm_data->wat_interface.wat_span_write = on_wat_span_write; - gsm_data->wat_interface.wat_log = on_wat_log; - gsm_data->wat_interface.wat_log_span = on_wat_log_span; - gsm_data->wat_interface.wat_malloc = on_wat_malloc; - gsm_data->wat_interface.wat_calloc = on_wat_calloc; - gsm_data->wat_interface.wat_free = on_wat_free; - - gsm_data->wat_interface.wat_alarm = on_wat_span_alarm; - gsm_data->wat_interface.wat_con_ind = on_wat_con_ind; - gsm_data->wat_interface.wat_con_sts = on_wat_con_sts; - gsm_data->wat_interface.wat_rel_ind = on_wat_rel_ind; - gsm_data->wat_interface.wat_rel_cfm = on_wat_rel_cfm; - gsm_data->wat_interface.wat_sms_ind = on_wat_sms_ind; - gsm_data->wat_interface.wat_sms_sts = on_wat_sms_sts; - - if (wat_register(&gsm_data->wat_interface)) { - snprintf(span->last_error, sizeof(span->last_error), "Failed to register WAT Library !!!\n"); - ftdm_log(FTDM_LOG_DEBUG, "FAILED Registering interface to WAT Library...\n"); - return FTDM_FAIL; - - } - ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT Library\n"); - -#endif - - - - ftdm_log(FTDM_LOG_DEBUG, "Configuring span\n"); - - - - wat_span_config_t _wat_span_config; - - - _wat_span_config.moduletype = WAT_MODULE_TELIT; - _wat_span_config.timeout_cid_num = 10; - - if (wat_span_config(span->span_id, &_wat_span_config)) { - fprintf(stderr, "Failed to configure span!!\n"); + if (wat_span_config(span->span_id, &span_config)) { + ftdm_log(FTDM_LOG_ERROR, "Failed to configure span %s for GSM signaling!!\n", span->name); return FTDM_FAIL; } -/* - fprintf(stdout, "Starting span %d\n", span->span_id); - if (wat_span_start(span->span_id)) { - fprintf(stderr, "Failed to start span %d!!\n", span->span_id); - return FTDM_FAIL; - } - - - fprintf(stdout, "SUCCESS Starting span %d\n", span->span_id); - - */ - - - return FTDM_SUCCESS; } +#define GSM_POLL_INTERVAL_MS 20 static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) { - - - ftdm_channel_t *ftdmchan = NULL; ftdm_span_t *span = (ftdm_span_t *) obj; - ftdm_iterator_t *chaniter = NULL; - ftdm_iterator_t *citer = NULL; - int waitms = 10, i; - ftdm_status_t status; + ftdm_gsm_span_data_t *gsm_data = NULL; + ftdm_status_t status = FTDM_SUCCESS; + ftdm_wait_flag_t ioflags = FTDM_NO_FLAGS; + ftdm_interrupt_t *data_sources[2] = {NULL, NULL}; + int waitms = 0; + + gsm_data = span->signal_data; + ftdm_assert_return(gsm_data != NULL, NULL, "No gsm data attached to span\n"); - - -fprintf(stdout, "Starting span %d\n", span->span_id); - - if (wat_span_start(span->span_id)) { - - fprintf(stderr, "Failed to start span %d!!\n", span->span_id); - return NULL; - } - - - fprintf(stdout, "SUCCESS Starting span %d\n", span->span_id); - - - short *poll_events = ftdm_malloc(sizeof(short) * span->chan_count); - - unsigned next; ftdm_log(FTDM_LOG_DEBUG, "GSM monitor thread for span %s started\n", span->name); - - chaniter = ftdm_span_get_chan_iterator(span, NULL); - if (!chaniter) { - ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); + if (!gsm_data->dchan || ftdm_channel_open_chan(gsm_data->dchan) != FTDM_SUCCESS) { + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to open GSM d-channel of span %s!\n", span->name); + gsm_data->dchan = NULL; goto done; } - ftdmchan = get_channel(span->span_id, 2); - - if (ftdm_channel_open_chan(ftdmchan) != FTDM_SUCCESS) { - ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Failed to open channel during incoming call! [%s]\n", ftdmchan->last_error); - return NULL; + /* create an interrupt object to wait for data from the d-channel device */ + if (ftdm_interrupt_create(&data_sources[0], gsm_data->dchan->sockfd, FTDM_READ) != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_CRIT, "Failed to create GSM d-channel interrupt for span %s\n", span->name); + goto done; + } + status = ftdm_queue_get_interrupt(span->pendingchans, &data_sources[1]); + if (status != FTDM_SUCCESS || data_sources[1] == NULL) { + ftdm_log(FTDM_LOG_CRIT, "Failed to retrieve channel queue interrupt for span %s\n", span->name); + goto done; } - - while (ftdm_running()) { + wat_span_run(span->span_id); - wat_span_run(span->span_id); - next = wat_span_schedule_next(span->span_id); - if(next < waitms) { - next = waitms; - } + waitms = wat_span_schedule_next(span->span_id); + if (waitms > GSM_POLL_INTERVAL_MS) { + waitms = GSM_POLL_INTERVAL_MS; + } #if 0 /* run any span timers */ ftdm_sched_run(r2data->sched); #endif - /* deliver the actual channel events to the user now without any channel locking */ - ftdm_span_trigger_signals(span); -#if 0 - /* figure ouwat_chip_info_tt what event to poll each channel for. POLLPRI when the channel is down, - * POLLPRI|POLLIN|POLLOUT otherwise */ - memset(poll_events, 0, sizeof(short)*span->chan_count); - citer = ftdm_span_get_chan_iterator(span, chaniter); - if (!citer) { - ftdm_log(Fshort *poll_events = ftdm_malloc(sizeof(short) * span->chan_count);TDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); - goto done;short *poll_events = ftdm_malloc(sizeof(short) * span->chan_count); - } - for (i = 0; citer; citer = ftdm_iterator_next(citer), i++) { - ftdmchan = ftdm_iterator_current(citer); - r2chan = R2CALL(ftdmchan)->r2chan; - poll_events[i] = FTDM_EVENTS; - if (openr2_chan_get_read_enabled(r2chan)) { - poll_events[i] |= FTDM_READ; + status = ftdm_interrupt_multiple_wait(data_sources, ftdm_array_len(data_sources), waitms); + switch (status) { + case FTDM_ETIMEDOUT: + break; + case FTDM_SUCCESS: + { + /* process first the d-channel if ready */ + if ((ioflags = ftdm_interrupt_device_ready(data_sources[0])) != FTDM_NO_FLAGS) { + char buffer[1024]; + unsigned int n = 0; + n = read_channel(gsm_data->dchan, buffer, sizeof(buffer)); + /* this may trigger any of the callbacks registered through wat_register() */ + wat_span_process_read(span->span_id, buffer, n); + } + + /* now process all channels with state changes pending */ + while ((ftdmchan = ftdm_queue_dequeue(span->pendingchans))) { + /* double check that this channel has a state change pending */ + ftdm_channel_lock(ftdmchan); + ftdm_channel_advance_states(ftdmchan); + ftdm_channel_unlock(ftdmchan); + } + + /* deliver the actual channel events to the user now without any channel locking */ + ftdm_span_trigger_signals(span); } - } - status = ftdm_span_poll_event(span, waitms, poll_events); - - /* run any span timers */ - ftdm_sched_runshort *poll_events = ftdm_malloc(sizeof(short) * span->chan_count);(r2data->sched); -#endif - ftdm_sleep(waitms); - - - /* this main loop takes care of MF and CAS signaling during call setup and tear down - * for every single channel in the span, do not perform blocking operations here! */ - citer = ftdm_span_get_chan_iterator(span, chaniter); - for ( ; citer; citer = ftdm_iterator_next(citer)) { - ftdmchan = ftdm_iterator_current(citer); - - ftdm_channel_lock(ftdmchan); - - - ftdm_channel_advance_states(ftdmchan); - - ftdm_channel_unlock(ftdmchan); + break; + case FTDM_FAIL: + ftdm_log(FTDM_LOG_ERROR, "%s: ftdm_interrupt_wait returned error!\n", span->name); + break; + default: + ftdm_log(FTDM_LOG_ERROR, "%s: ftdm_interrupt_wait returned with unknown code\n", span->name); + break; } - for(i=0;i< span->chan_count; i++) - poll_events[i] = FTDM_EVENTS; - - poll_events[1] |= FTDM_READ; - status = ftdm_span_poll_event(span, next, poll_events); - - if(FTDM_SUCCESS == status) - { - ftdm_channel_lock(ftdmchan); - ftdm_channel_t * ftdm_chan = get_channel(span->span_id, 2); - char buffer[2001]; - memset(buffer, 0, sizeof(buffer)); - unsigned int n = 0; - n = read_channel(ftdm_chan , buffer, sizeof(buffer)); - - ftdm_channel_unlock(ftdmchan); - if(n > 0) { - - wat_span_process_read(span->span_id, buffer, n); - /*ftdm_log(FTDM_LOG_DEBUG, "<<<<<<<<<<<<<<<<<<<<<<===== %s (%d) - %d\n", buffer, n, (int) span->span_id);*/ - /* - ftdm_log(FTDM_LOG_DEBUG, "!!! read_channel got %d bytes\n", n); - */ - } - else { - ftdm_sleep(waitms); - } - - } } done: - ftdm_iterator_free(chaniter); + if (data_sources[0]) { + ftdm_interrupt_destroy(&data_sources[0]); + } ftdm_log(FTDM_LOG_DEBUG, "GSM thread ending.\n"); @@ -856,86 +699,80 @@ done: "--------------------------------------------------------------------------------\n" static FIO_API_FUNCTION(ftdm_gsm_api) { + ftdm_span_t *span = NULL; + int span_id = 0; char *mycmd = NULL, *argv[10] = { 0 }; int argc = 0; if (data) { mycmd = ftdm_strdup(data); - argc = ftdm_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); } - if (argc == 1) { - if (!strcasecmp(argv[0], "version")) { - uint8_t current = 0, revision = 0, age = 0; - wat_version(¤t, &revision, &age); - stream->write_function(stream, "libwat GSM VERSION: %d.%d.%d\n", current, revision, age); - stream->write_function(stream, "+OK.\n"); + if (!strcasecmp(argv[0], "version")) { + uint8_t current = 0, revision = 0, age = 0; + wat_version(¤t, &revision, &age); + stream->write_function(stream, "libwat version: %d.%d.%d\n", current, revision, age); + stream->write_function(stream, "+OK.\n"); + goto done; + + } else if (!strcasecmp(argv[0], "status")) { + const wat_chip_info_t *chip_info = NULL; + const wat_sim_info_t *sim_info = NULL; + const wat_net_info_t *net_info = NULL; + const wat_sig_info_t *sig_info = NULL; + const wat_pin_stat_t *pin_stat = NULL; + + if (argc < 2) { + goto syntax; + } + + span_id = atoi(argv[1]); + if (ftdm_span_find_by_name(argv[1], &span) != FTDM_SUCCESS && + ftdm_span_find(span_id, &span) != FTDM_SUCCESS) { + stream->write_function(stream, "-ERR Failed to find GSM span '%s'\n", argv[1]); goto done; } - if (!strcasecmp(argv[0], "status")) { - - int n; - for(n = 0; n < n_spans_info; n++) - { - ftdm_span_t *span = spans_info[n].span; - wat_chip_info_t* chip_info = (wat_chip_info_t*)wat_span_get_chip_info(span->span_id); - wat_sim_info_t* sim_info = (wat_sim_info_t*)wat_span_get_sim_info(span->span_id); - wat_net_info_t* net_info = (wat_net_info_t*)wat_span_get_net_info(span->span_id); - /*wat_sig_info_t* sig_info = (wat_sig_info_t*)wat_span_get_sig_info(span->span_id);*/ - /*wat_pin_stat_t* pin_stat = (wat_pin_stat_t*)wat_span_get_pin_info(span->span_id);*/ - - stream->write_function(stream, "Span %d:\n", span->span_id); - - - stream->write_function(stream, "CHIP - %s (%s), revision %s, serial %s \n", - chip_info->manufacturer_name, - chip_info->manufacturer_id, - chip_info->revision, - chip_info->serial - ); - - - stream->write_function(stream, "SIM - Subscriber Type %s, imsi %s\n", - sim_info->subscriber_type, - sim_info->imsi - ); - - const char *stypes[] = {WAT_NUMBER_TYPE_STRINGS }; - const char *ptypes[] = {WAT_NUMBER_PLAN_STRINGS }; - const char *validities[] = {WAT_NUMBER_VALIDITY_STRINGS }; - - stream->write_function(stream, "Subscriber - Number %s, Plan %s, validity %s\n", - sim_info->subscriber.digits, - stypes[sim_info->subscriber.type], - ptypes[sim_info->subscriber.plan], - validities[sim_info->subscriber.validity] - - ); - - const char *net_stats[] = {WAT_NET_STAT_STRINGS}; - - - stream->write_function(stream, "Network - status %s, Area Code %d, Cell ID %d, Operator %s\n", - net_stats[net_info->stat], - net_info->lac, - net_info->ci, - net_info->operator_name - ); - - - stream->write_function(stream, "\n"); - - } - - stream->write_function(stream, "+OK.\n"); + if (!span || !span->signal_data || (span->start != ftdm_gsm_start)) { + stream->write_function(stream, "-ERR '%s' is not a valid GSM span\n", argv[1]); goto done; } + + chip_info = wat_span_get_chip_info(span->span_id); + sim_info = wat_span_get_sim_info(span->span_id); + net_info = wat_span_get_net_info(span->span_id); + sig_info = wat_span_get_sig_info(span->span_id); + pin_stat = wat_span_get_pin_info(span->span_id); + + stream->write_function(stream, "Span %d (%s):\n", span->span_id, span->name); + + stream->write_function(stream, "CHIP - %s (%s), revision %s, serial %s \n", + chip_info->manufacturer_name, + chip_info->manufacturer_id, + chip_info->revision, + chip_info->serial); + + stream->write_function(stream, "SIM - Subscriber type %s, imsi %s\n", sim_info->subscriber_type, sim_info->imsi); + + stream->write_function(stream, "Subscriber - Number %s, Plan %s, validity %s\n", + sim_info->subscriber.digits, + wat_number_type2str(sim_info->subscriber.type), + wat_number_plan2str(sim_info->subscriber.plan), + wat_number_validity2str(sim_info->subscriber.validity)); + + stream->write_function(stream, "Network - status %s, Area Code %d, Cell ID %d, Operator %s\n", + wat_net_stat2str(net_info->stat), net_info->lac, net_info->ci, net_info->operator_name); + + + stream->write_function(stream, "\n"); + + stream->write_function(stream, "+OK.\n"); + goto done; } +syntax: stream->write_function(stream, "%s", FT_SYNTAX); - done: ftdm_safe_free(mycmd); From a0c5079cc3e4d8aa01ae113e8e503c54bca12170 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Mon, 7 May 2012 14:15:27 -0500 Subject: [PATCH 389/630] fix vs2008 pro project dependency for mod_gsmopen - if anyone wants the solution files for express and wants to help please open a Jira with a patch and I will review it. --- Freeswitch.2008.sln | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Freeswitch.2008.sln b/Freeswitch.2008.sln index f984d00129..781fdcb766 100644 --- a/Freeswitch.2008.sln +++ b/Freeswitch.2008.sln @@ -954,6 +954,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\ EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2008.vcproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}" + ProjectSection(ProjectDependencies) = postProject + {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.vcproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}" EndProject From f316f9307fbb91a89105fd583677200328c83738 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Mon, 7 May 2012 15:35:13 -0400 Subject: [PATCH 390/630] freetdm: First GSM working version - Manually merging latest code from gideon.gsm branch after review/inspection/modifications --- libs/freetdm/mod_freetdm/mod_freetdm.c | 25 +- libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c | 868 ++++++++++++++---- .../src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c | 42 +- libs/freetdm/src/include/freetdm.h | 8 +- 4 files changed, 751 insertions(+), 192 deletions(-) mode change 100644 => 100755 libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c mode change 100644 => 100755 libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index e40ca5ef93..a31a5342c9 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -26,7 +26,7 @@ * Anthony Minessale II * Moises Silva * David Yat Sin - * + * Gideon Sadan * * mod_freetdm.c -- FreeTDM Endpoint Module * @@ -1887,6 +1887,24 @@ static FIO_SIGNAL_CB_FUNCTION(on_common_signal) switch (sigmsg->event_id) { + case FTDM_SIGEVENT_SMS: + { + ftdm_caller_data_t *caller_data = ftdm_channel_get_caller_data(sigmsg->channel); + ftdm_sms_data_t *sms = (ftdm_sms_data_t*) caller_data->priv; + + + ftdm_log(FTDM_LOG_INFO,"FTDM_SIGEVENT_SMS from %s: %s", sms->from, sms->body); + if (switch_event_create(&event, SWITCH_EVENT_TRAP) != SWITCH_STATUS_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "failed to create SMS event\n"); + return FTDM_FAIL; + } + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", sms->from); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "body", sms->body); + alarmbits = 0; + } + //return FTDM_BREAK; + break; + case FTDM_SIGEVENT_ALARM_CLEAR: case FTDM_SIGEVENT_ALARM_TRAP: { @@ -1936,6 +1954,7 @@ static FIO_SIGNAL_CB_FUNCTION(on_common_signal) return FTDM_SUCCESS; } break; + case FTDM_SIGEVENT_RELEASED: case FTDM_SIGEVENT_INDICATION_COMPLETED: case FTDM_SIGEVENT_DIALING: @@ -1964,6 +1983,8 @@ static FIO_SIGNAL_CB_FUNCTION(on_common_signal) } if (event) { + + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "span-name", "%s", ftdm_channel_get_span_name(sigmsg->channel)); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "span-number", "%d", ftdm_channel_get_span_id(sigmsg->channel)); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "chan-number", "%d", ftdm_channel_get_id(sigmsg->channel)); @@ -2898,7 +2919,7 @@ static void parse_gsm_spans(switch_xml_t cfg, switch_xml_t spans) "gsm", on_clear_channel_signal, spanparameters) != FTDM_SUCCESS) { - CONFIG_ERROR("Error configuring Sangoma ISDN FreeTDM span %d\n", span_id); + CONFIG_ERROR("Error configuring Sangoma GSM FreeTDM span %d\n", span_id); continue; } SPAN_CONFIG[span_id].span = span; diff --git a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c old mode 100644 new mode 100755 index dd46e0354c..35a7be22bb --- a/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c +++ b/libs/freetdm/src/ftmod/ftmod_gsm/ftmod_gsm.c @@ -37,6 +37,7 @@ * */ + #define _GNU_SOURCE #include @@ -48,31 +49,86 @@ #include #include #include -/*========================*/ +/*========================*/ #include #include #include + #include +// Debug +#define LOG_SIG_DATA 0 +#define DEBUG_STATES 0 + + +#if DEBUG_STATES // state debugging +#define STATE_ADVANCE_LOG_LEVEL FTDM_LOG_CRIT +#else +#define STATE_ADVANCE_LOG_LEVEL FTDM_LOG_DEBUG +#endif + + +/********************************************************************************/ +/* */ +/* MACROS */ +/* */ +/********************************************************************************/ +// Macro to send signals +#define SEND_STATE_SIGNAL(sig) \ + { \ + ftdm_sigmsg_t sigev; \ + memset(&sigev, 0, sizeof(sigev)); \ + sigev.event_id = sig; \ + sigev.channel = ftdmchan; \ + ftdm_span_send_signal(ftdmchan->span, &sigev); \ + } + +// Syntax message +#define FT_SYNTAX "USAGE:\n" \ +"--------------------------------------------------------------------------------\n" \ +"ftdm gsm version \n" \ +"ftdm gsm status \n" \ +"ftdm gsm sms \n" \ +"--------------------------------------------------------------------------------\n" + +// Used to declare command handler +#define COMMAND_HANDLER(name) \ + ftdm_status_t fCMD_##name(ftdm_stream_handle_t *stream, char *argv[], int argc); \ + ftdm_status_t fCMD_##name(ftdm_stream_handle_t *stream, char *argv[], int argc) + +// Used to define command entry in the command map. +#define COMMAND(name, argc) {#name, argc, fCMD_##name} + +/********************************************************************************/ +/* */ +/* types */ +/* */ +/********************************************************************************/ + +// private data typedef struct ftdm_gsm_span_data_s { ftdm_span_t *span; ftdm_channel_t *dchan; + ftdm_channel_t *bchan; + int32_t call_id; } ftdm_gsm_span_data_t; +// command handler function type. +typedef ftdm_status_t (*fCMD)(ftdm_stream_handle_t *stream, char *argv[], int argc); + + + +/********************************************************************************/ +/* */ +/* function declaration */ +/* */ +/********************************************************************************/ static ftdm_status_t init_wat_lib(void); static int wat_lib_initialized = 0; +static FIO_API_FUNCTION(ftdm_gsm_api); + -static int read_channel(ftdm_channel_t *ftdm_chan , const void *buf, int size) -{ - - ftdm_size_t outsize = size; - ftdm_status_t status = ftdm_channel_read(ftdm_chan, (void *)buf, &outsize); - if (FTDM_FAIL == status) { - return -1; - } - return (int)outsize; -} /* wat callbacks */ int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len); @@ -91,9 +147,45 @@ void *on_wat_calloc(size_t nmemb, size_t size); void on_wat_free(void *ptr); void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...); + +ftdm_span_t *GetSpanByID(unsigned char span_id, ftdm_gsm_span_data_t **gsm_data); + +static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj); + +/********************************************************************************/ +/* */ +/* static & global data */ +/* */ +/********************************************************************************/ +int g_outbound_call_id = 8; + +/* IO interface for the command API */ +static ftdm_io_interface_t g_ftdm_gsm_interface; + +/********************************************************************************/ +/* */ +/* implementation */ +/* */ +/********************************************************************************/ +static int read_channel(ftdm_channel_t *ftdm_chan , const void *buf, int size) +{ + + ftdm_size_t outsize = size; + ftdm_status_t status = ftdm_channel_read(ftdm_chan, (void *)buf, &outsize); + if (FTDM_FAIL == status) { + return -1; + } + return (int)outsize; +} + + int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) { -/* ftdm_log(FTDM_LOG_DEBUG, "====================>>> %s (%d) - %d\n", buffer, len, (int) span_id);*/ + +#if LOG_SIG_DATA + fprintf(stdout, " Out Data ====================>>> %s \r\n (%d) - %d\n", (char *)buffer, len, (int) span_id); +#endif + ftdm_span_t *span = NULL; ftdm_status_t status = FTDM_FAIL; ftdm_gsm_span_data_t *gsm_data = NULL; @@ -104,14 +196,20 @@ int on_wat_span_write(unsigned char span_id, void *buffer, unsigned len) ftdm_log(FTDM_LOG_ERROR, "Failed to find span %d to write %d bytes\n", span_id, len); return -1; } - + gsm_data = span->signal_data; status = ftdm_channel_write(gsm_data->dchan, (void *)buffer, len, &outsize); if (status != FTDM_SUCCESS) { ftdm_log(FTDM_LOG_ERROR, "Failed to write %d bytes to d-channel in span %s\n", len, span->name); return -1; } - return (int)outsize; + +//#if LOG_SIG_DATA +// fprintf(stdout, "\r\n==================== len=%d outsize=%d \r\n", len, (int)outsize); +//#endif + + fflush(stdout); + return len; } @@ -147,43 +245,200 @@ static void on_wat_span_status(unsigned char span_id, wat_span_status_t *status) { ftdm_log(FTDM_LOG_INFO, "span %d: Unhandled span status notification %d\n", span_id, status->type); } - break; + break; } } void on_wat_con_ind(unsigned char span_id, uint8_t call_id, wat_con_event_t *con_event) { - fprintf(stdout, "s%d: Incoming call (id:%d) Calling Number:%s type:%d plan:%d\n", span_id, call_id, con_event->calling_num.digits, con_event->calling_num.type, con_event->calling_num.plan); + //fprintf(stdout, "s%d: Incoming call (id:%d) Calling Number:%s Calling Name:\"%s\" type:%d plan:%d\n", span_id, call_id, con_event->calling_num.digits, con_event->calling_name, con_event->calling_num.type, con_event->calling_num.plan); + + ftdm_log(FTDM_LOG_INFO, "s%d: Incoming call (id:%d) Calling Number:%s Calling Name:\"%s\" type:%d plan:%d\n", span_id, call_id, con_event->calling_num.digits, con_event->calling_name, con_event->calling_num.type, con_event->calling_num.plan); + + ftdm_span_t *span = NULL; + //ftdm_status_t ftdm_status = FTDM_FAIL; + ftdm_gsm_span_data_t *gsm_data = NULL; + + if(!(span = GetSpanByID(span_id, &gsm_data))) { + return; + } + + gsm_data->call_id = call_id; + + #define ZERO_ARRAY(arr) memset(arr, 0, sizeof(arr)) + // cid date + { + time_t t; + struct tm *tmp; + t = time(NULL); + tmp = localtime(&t); + if (tmp == NULL) { + ZERO_ARRAY(gsm_data->bchan->caller_data.cid_date); + strftime(gsm_data->bchan->caller_data.cid_date, sizeof(gsm_data->bchan->caller_data.cid_date), "%y/%m/%d", tmp); + } + + } + + // cid name + ZERO_ARRAY(gsm_data->bchan->caller_data.cid_name); + strncpy(gsm_data->bchan->caller_data.cid_name, con_event->calling_name,sizeof(gsm_data->bchan->caller_data.cid_name)); + + // dnis + ZERO_ARRAY(gsm_data->bchan->caller_data.dnis.digits); + strncpy(gsm_data->bchan->caller_data.dnis.digits, con_event->calling_num.digits, FTDM_DIGITS_LIMIT); + + //collected + ZERO_ARRAY(gsm_data->bchan->caller_data.collected); + strncpy(gsm_data->bchan->caller_data.collected, con_event->calling_num.digits, FTDM_DIGITS_LIMIT); + + ftdm_set_state(gsm_data->bchan, FTDM_CHANNEL_STATE_RING); + + if (ftdm_channel_open_chan(gsm_data->bchan) != FTDM_SUCCESS) { + ftdm_log_chan(gsm_data->bchan, FTDM_LOG_ERROR, "Failed to open GSM b-channel of span %s!\n", span->name); + } + +} + + +ftdm_span_t *GetSpanByID(unsigned char span_id, ftdm_gsm_span_data_t **gsm_data) +{ + ftdm_status_t ftdm_status = FTDM_FAIL; + ftdm_span_t *span = NULL; + if(gsm_data) { + (*gsm_data) = NULL; + } + + ftdm_status = ftdm_span_find(span_id, &span); + if (ftdm_status != FTDM_SUCCESS) { + ftdm_log(FTDM_LOG_ERROR, "GetSpanByID - Failed to find span %d\n", span_id); + return NULL; + } + + if(gsm_data) { + (*gsm_data) = span->signal_data; + } + + return span; - - return; } void on_wat_con_sts(unsigned char span_id, uint8_t call_id, wat_con_status_t *status) { + + ftdm_span_t *span = NULL; + //ftdm_status_t ftdm_status = FTDM_FAIL; + ftdm_gsm_span_data_t *gsm_data = NULL; + + if(!(span = GetSpanByID(span_id, &gsm_data))) { + return; + } + + + + switch(status->type) { + + case WAT_CON_STATUS_TYPE_RINGING: + ftdm_log(FTDM_LOG_INFO, "on_wat_con_sts - WAT_CON_STATUS_TYPE_RINGING\r\n"); + ftdm_set_state(gsm_data->bchan, FTDM_CHANNEL_STATE_RINGING); + break; + + case WAT_CON_STATUS_TYPE_ANSWER: + ftdm_log(FTDM_LOG_INFO, "on_wat_con_sts - WAT_CON_STATUS_TYPE_ANSWER\r\n"); + ftdm_set_state(gsm_data->bchan, FTDM_CHANNEL_STATE_PROGRESS_MEDIA); + break; + default: + ftdm_log(FTDM_LOG_INFO, "on_wat_con_sts - Unhandled state %d\n", span_id); + + }; + + return; } void on_wat_rel_ind(unsigned char span_id, uint8_t call_id, wat_rel_event_t *rel_event) { - fprintf(stdout, "s%d: Call hangup (id:%d) cause:%d\n", span_id, call_id, rel_event->cause); + ftdm_log(FTDM_LOG_INFO, "s%d: Call hangup (id:%d) cause:%d\n", span_id, call_id, rel_event->cause); - return; + ftdm_span_t *span = NULL; + //ftdm_status_t ftdm_status = FTDM_FAIL; + ftdm_gsm_span_data_t *gsm_data = NULL; + + if(!(span = GetSpanByID(span_id, &gsm_data))) { + return; + } + + ftdm_set_state(gsm_data->bchan, FTDM_CHANNEL_STATE_HANGUP); + + } void on_wat_rel_cfm(unsigned char span_id, uint8_t call_id) { - fprintf(stdout, "s%d: Call hangup complete (id:%d)\n", span_id, call_id); - return; + ftdm_log(FTDM_LOG_INFO, "s%d: Call hangup complete (id:%d)\n", span_id, call_id); + ftdm_span_t *span = NULL; + //ftdm_status_t ftdm_status = FTDM_FAIL; + ftdm_gsm_span_data_t *gsm_data = NULL; + + if(!(span = GetSpanByID(span_id, &gsm_data))) { + return; + } + + switch(gsm_data->dchan->state) { + case FTDM_CHANNEL_STATE_UP: + ftdm_set_state(gsm_data->bchan, FTDM_CHANNEL_STATE_HANGUP); + break; + default: + ftdm_set_state(gsm_data->bchan, FTDM_CHANNEL_STATE_DOWN); + break; + } + } void on_wat_sms_ind(unsigned char span_id, wat_sms_event_t *sms_event) { + //printf("on_wat_sms_ind\r\n"); + + ftdm_span_t *span = NULL; + ftdm_channel_t *ftdmchan; + + ftdm_gsm_span_data_t *gsm_data = NULL; + + if(!(span = GetSpanByID(span_id, &gsm_data))) { + return; + } + + ftdmchan = gsm_data->dchan; + + { + ftdm_sms_data_t sms_data; + memset(&sms_data, 0, sizeof(sms_data)); + + strncpy(sms_data.from, sms_event->from.digits, sizeof(sms_data.from)); + strncpy(sms_data.body, sms_event->content.data, sizeof(sms_data.body)); + + ftdm_sigmsg_t sigev; + memset(&sigev, 0, sizeof(sigev)); + sigev.event_id = FTDM_SIGEVENT_SMS; + sigev.channel = ftdmchan ; + gsm_data->dchan->caller_data.priv = (void *)&sms_data; + ftdm_span_send_signal(span, &sigev); + } +// SEND_STATE_SIGNAL(FTDM_SIGEVENT_SMS); return; } void on_wat_sms_sts(unsigned char span_id, uint8_t sms_id, wat_sms_status_t *status) { + + if(status->success) { + ftdm_log(FTDM_LOG_INFO, "Span %d SMS Send - OK\n", span_id ); + } + else { + ftdm_log(FTDM_LOG_CRIT, "Span %d SMS Send - FAIL (%s)\n", span_id, status->error); + + } + + return; } @@ -198,8 +453,7 @@ void on_wat_log(uint8_t level, char *fmt, ...) va_start(argptr, fmt); char buff[10001]; - switch(level) - { + switch(level) { case WAT_LOG_CRIT: ftdm_level = FTDM_LOG_LEVEL_CRIT; break; case WAT_LOG_ERROR: ftdm_level = FTDM_LOG_LEVEL_ERROR; break; default: @@ -223,27 +477,30 @@ void *on_wat_malloc(size_t size) { return ftdm_malloc(size); } + void *on_wat_calloc(size_t nmemb, size_t size) { return ftdm_calloc(nmemb, size); } + void on_wat_free(void *ptr) { ftdm_free(ptr); } + void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...) { int ftdm_level; - +return; va_list argptr; va_start(argptr, fmt); char buff[10001]; - switch(level) - { + switch(level) { case WAT_LOG_CRIT: ftdm_level = FTDM_LOG_LEVEL_CRIT; break; case WAT_LOG_ERROR: ftdm_level = FTDM_LOG_LEVEL_ERROR; break; default: + case WAT_LOG_WARNING: ftdm_level = FTDM_LOG_LEVEL_WARNING; break; case WAT_LOG_INFO: ftdm_level = FTDM_LOG_LEVEL_INFO; break; case WAT_LOG_NOTICE: ftdm_level = FTDM_LOG_LEVEL_NOTICE; break; @@ -265,22 +522,17 @@ void on_wat_log_span(uint8_t span_id, uint8_t level, char *fmt, ...) /* END wat callbacks */ /* span monitor thread */ -static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj); - -/* IO interface for the command API */ -static ftdm_io_interface_t g_ftdm_gsm_interface; - static FIO_CHANNEL_OUTGOING_CALL_FUNCTION(gsm_outgoing_call) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "GSM place call not implemented yet!\n"); - return FTDM_FAIL; + + return FTDM_SUCCESS; } static ftdm_status_t ftdm_gsm_start(ftdm_span_t *span) { if (wat_span_start(span->span_id)) { ftdm_log(FTDM_LOG_ERROR, "Failed to start span %s!\n", span->name); - return FTDM_FAIL; + return FTDM_SUCCESS; } return ftdm_thread_create_detached(ftdm_gsm_run, span); @@ -288,32 +540,38 @@ static ftdm_status_t ftdm_gsm_start(ftdm_span_t *span) static ftdm_status_t ftdm_gsm_stop(ftdm_span_t *span) { - ftdm_log(FTDM_LOG_CRIT, "STOP not implemented yet!\n"); - return FTDM_FAIL; + return FTDM_SUCCESS; } static FIO_CHANNEL_GET_SIG_STATUS_FUNCTION(ftdm_gsm_get_channel_sig_status) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "get sig status not implemented yet!\n"); - return FTDM_FAIL; + ftdm_log(FTDM_LOG_INFO, "\r\nftdm_gsm_get_channel_sig_status\r\n"); + + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_SIG_UP)) { + *status = FTDM_SIG_STATE_UP; + } + else { + *status = FTDM_SIG_STATE_DOWN; + } + *status = FTDM_SIG_STATE_UP; + return FTDM_SUCCESS; + } static FIO_CHANNEL_SET_SIG_STATUS_FUNCTION(ftdm_gsm_set_channel_sig_status) { - ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "set sig status not implemented yet!\n"); - return FTDM_FAIL; + return FTDM_SUCCESS; } static FIO_SPAN_GET_SIG_STATUS_FUNCTION(ftdm_gsm_get_span_sig_status) { - ftdm_log(FTDM_LOG_CRIT, "span get sig status not implemented yet!\n"); - return FTDM_FAIL; + *status = FTDM_SIG_STATE_UP; + return FTDM_SUCCESS; } static FIO_SPAN_SET_SIG_STATUS_FUNCTION(ftdm_gsm_set_span_sig_status) { - ftdm_log(FTDM_LOG_CRIT, "span set sig status not implemented yet!\n"); - return FTDM_FAIL; + return FTDM_SUCCESS; } static ftdm_state_map_t gsm_state_map = { @@ -393,10 +651,12 @@ static ftdm_state_map_t gsm_state_map = { { ZSD_OUTBOUND, ZSM_UNACCEPTABLE, - {FTDM_CHANNEL_STATE_DIALING, FTDM_END}, - {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_END} + {FTDM_CHANNEL_STATE_DIALING, FTDM_CHANNEL_STATE_RINGING, FTDM_END}, + {FTDM_CHANNEL_STATE_HANGUP, FTDM_CHANNEL_STATE_TERMINATING, FTDM_CHANNEL_STATE_PROGRESS_MEDIA, FTDM_CHANNEL_STATE_RINGING, FTDM_END} }, + + { ZSD_OUTBOUND, ZSM_UNACCEPTABLE, @@ -429,7 +689,135 @@ static ftdm_state_map_t gsm_state_map = { static ftdm_status_t ftdm_gsm_state_advance(ftdm_channel_t *ftdmchan) { - ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Executing state handler for %s\n", ftdm_channel_state2str(ftdmchan->state)); + + ftdm_log_chan(ftdmchan, STATE_ADVANCE_LOG_LEVEL , "Executing state handler for %s\n", ftdm_channel_state2str(ftdmchan->state)); + + ftdm_channel_complete_state(ftdmchan); + + switch (ftdmchan->state) { + + /* starting an incoming call */ + case FTDM_CHANNEL_STATE_COLLECT: + { + + + } + break; + + /* starting an outgoing call */ + case FTDM_CHANNEL_STATE_DIALING: + { + uint32_t interval = 0; + + ftdm_log_chan(ftdmchan, FTDM_LOG_DEBUG, "Starting outgoing call with interval %d\n", interval); + + { + + ftdm_gsm_span_data_t *gsm_data; + gsm_data = ftdmchan->span->signal_data; + gsm_data->call_id = g_outbound_call_id++; + wat_con_event_t con_event; + memset(&con_event, 0, sizeof(con_event)); + sprintf(con_event.called_num.digits, ftdmchan->caller_data.dnis.digits); + ftdm_log(FTDM_LOG_DEBUG, "Dialing number %s\n", con_event.called_num.digits); + wat_con_req(ftdmchan->span->span_id, gsm_data->call_id , &con_event); + + SEND_STATE_SIGNAL(FTDM_SIGEVENT_DIALING); + + + } + + + } + break; + + /* incoming call was offered */ + case FTDM_CHANNEL_STATE_RING: + + /* notify the user about the new call */ + + ftdm_log(FTDM_LOG_INFO, "Answering Incomming Call\r\n"); + SEND_STATE_SIGNAL(FTDM_SIGEVENT_START); + + break; + + /* the call is making progress */ + case FTDM_CHANNEL_STATE_PROGRESS: + case FTDM_CHANNEL_STATE_PROGRESS_MEDIA: + { + SEND_STATE_SIGNAL(FTDM_SIGEVENT_PROGRESS_MEDIA); + ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_UP); + } + break; + + /* the call was answered */ + case FTDM_CHANNEL_STATE_UP: + { + if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_OUTBOUND)) { + + SEND_STATE_SIGNAL(FTDM_SIGEVENT_UP); + } + else { + ftdm_gsm_span_data_t *gsm_data; + gsm_data = ftdmchan->span->signal_data; + wat_con_cfm(ftdmchan->span->span_id, gsm_data->call_id); + } + + + } + break; + + /* just got hangup */ + case FTDM_CHANNEL_STATE_HANGUP: + { + ftdm_gsm_span_data_t *gsm_data; + gsm_data = ftdmchan->span->signal_data; + wat_rel_req(ftdmchan->span->span_id, gsm_data->call_id); + gsm_data->call_id = 0; + SEND_STATE_SIGNAL(FTDM_SIGEVENT_STOP); + } + break; + + case FTDM_CHANNEL_STATE_TERMINATING: + { + SEND_STATE_SIGNAL(FTDM_SIGEVENT_STOP); + } + break; + + /* finished call for good */ + case FTDM_CHANNEL_STATE_DOWN: + { + ftdm_channel_t *closed_chan; + closed_chan = ftdmchan; + ftdm_channel_close(&closed_chan); + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "State processing ended.\n"); + SEND_STATE_SIGNAL(FTDM_SIGEVENT_STOP); + } + break; + + /* INDICATE_RINGING doesn't apply to MFC/R2. maybe we could generate a tone */ + case FTDM_CHANNEL_STATE_RINGING: + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "RINGING indicated, ignoring it as it doesn't apply to MFC/R2\n"); + SEND_STATE_SIGNAL(FTDM_SIGEVENT_RINGING); + + break; + + /* put the r2 channel back to IDLE, close ftdmchan and set it's state as DOWN */ + case FTDM_CHANNEL_STATE_RESET: + { + ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "RESET indicated, putting the R2 channel back to IDLE\n"); + ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_DOWN); + } + break; + + default: + { + ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "Unhandled channel state change: %s\n", ftdm_channel_state2str(ftdmchan->state)); + } + break; + } + + return FTDM_SUCCESS; } @@ -465,8 +853,8 @@ static ftdm_status_t init_wat_lib(void) if (wat_register(&wat_interface)) { ftdm_log(FTDM_LOG_DEBUG, "Failed registering interface to WAT library ...\n"); return FTDM_FAIL; - } + ftdm_log(FTDM_LOG_DEBUG, "Registered interface to WAT library\n"); wat_lib_initialized = 1; @@ -482,10 +870,12 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) ftdm_iterator_t *citer = NULL; ftdm_channel_t *ftdmchan = NULL; ftdm_channel_t *dchan = NULL; + ftdm_channel_t *bchan = NULL; + unsigned paramindex = 0; const char *var = NULL; const char *val = NULL; - + /* libwat is smart enough to set good default values for the timers if they are set to 0 */ memset(&span_config, 0, sizeof(span_config)); @@ -508,6 +898,7 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) /* verify the span has one d-channel */ chaniter = ftdm_span_get_chan_iterator(span, NULL); + if (!chaniter) { ftdm_log(FTDM_LOG_CRIT, "Failed to allocate channel iterator for span %s!\n", span->name); return FTDM_FAIL; @@ -516,10 +907,14 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) citer = ftdm_span_get_chan_iterator(span, chaniter); for ( ; citer; citer = ftdm_iterator_next(citer)) { ftdmchan = ftdm_iterator_current(citer); - if (FTDM_IS_DCHAN(ftdmchan)) { + + if ((NULL == dchan) && FTDM_IS_DCHAN(ftdmchan)) { dchan = ftdmchan; - break; } + if ((NULL == bchan) && FTDM_IS_VOICE_CHANNEL(ftdmchan)) { + bchan = ftdmchan; + } + } ftdm_iterator_free(chaniter); @@ -527,12 +922,24 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) ftdm_log(FTDM_LOG_CRIT, "Could not find a d-channel for GSM span %s!\n", span->name); return FTDM_FAIL; } + if (!bchan) { + ftdm_log(FTDM_LOG_CRIT, "Could not find a b-channel for GSM span %s!\n", span->name); + return FTDM_FAIL; + } + + + + gsm_data = ftdm_calloc(1, sizeof(*gsm_data)); if (!gsm_data) { return FTDM_FAIL; } gsm_data->dchan = dchan; + gsm_data->bchan = bchan; + + //sprintf(gsm_data->dchan->chan_name, "%s\t\n", "GSM dchan"); + //sprintf(gsm_data->bchan->chan_name, "%s\r\n", "GSM bchan"); for (paramindex = 0; ftdm_parameters[paramindex].var; paramindex++) { var = ftdm_parameters[paramindex].var; @@ -569,6 +976,7 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) span->get_channel_sig_status = ftdm_gsm_get_channel_sig_status; span->set_channel_sig_status = ftdm_gsm_set_channel_sig_status; + //printf("\r\nspan->state_map = &gsm_state_map;\r\n"); span->state_map = &gsm_state_map; span->state_processor = ftdm_gsm_state_advance; @@ -589,11 +997,21 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) #endif +fprintf(stdout, "Configuring wat span %d %s \r\n", span->span_id, span->name); if (wat_span_config(span->span_id, &span_config)) { ftdm_log(FTDM_LOG_ERROR, "Failed to configure span %s for GSM signaling!!\n", span->name); return FTDM_FAIL; } + { + int codec = FTDM_CODEC_SLIN; + int interval = 20; + + ftdm_channel_command(gsm_data->bchan, FTDM_COMMAND_SET_NATIVE_CODEC, &codec); + ftdm_channel_command(gsm_data->bchan, FTDM_COMMAND_SET_CODEC, &codec); + ftdm_channel_command(gsm_data->bchan, FTDM_COMMAND_SET_INTERVAL, &interval); + } + return FTDM_SUCCESS; } @@ -601,11 +1019,12 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_gsm_configure_span_signaling) #define GSM_POLL_INTERVAL_MS 20 static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) { + + ftdm_log(FTDM_LOG_INFO,"ftdm_gsm_run\r\n"); + ftdm_channel_t *ftdmchan = NULL; ftdm_span_t *span = (ftdm_span_t *) obj; ftdm_gsm_span_data_t *gsm_data = NULL; - ftdm_status_t status = FTDM_SUCCESS; - ftdm_wait_flag_t ioflags = FTDM_NO_FLAGS; ftdm_interrupt_t *data_sources[2] = {NULL, NULL}; int waitms = 0; @@ -620,16 +1039,8 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) goto done; } - /* create an interrupt object to wait for data from the d-channel device */ - if (ftdm_interrupt_create(&data_sources[0], gsm_data->dchan->sockfd, FTDM_READ) != FTDM_SUCCESS) { - ftdm_log(FTDM_LOG_CRIT, "Failed to create GSM d-channel interrupt for span %s\n", span->name); - goto done; - } - status = ftdm_queue_get_interrupt(span->pendingchans, &data_sources[1]); - if (status != FTDM_SUCCESS || data_sources[1] == NULL) { - ftdm_log(FTDM_LOG_CRIT, "Failed to retrieve channel queue interrupt for span %s\n", span->name); - goto done; - } + + while (ftdm_running()) { @@ -640,47 +1051,48 @@ static void *ftdm_gsm_run(ftdm_thread_t *me, void *obj) waitms = GSM_POLL_INTERVAL_MS; } -#if 0 - /* run any span timers */ - ftdm_sched_run(r2data->sched); +///////////////////// + + + { + ftdm_wait_flag_t flags = FTDM_READ | FTDM_EVENTS; + ftdm_status_t status = ftdm_channel_wait(gsm_data->dchan, &flags, waitms); + + /* double check that this channel has a state change pending */ + ftdm_channel_lock(gsm_data->bchan); + ftdm_channel_advance_states(gsm_data->bchan); + + if(FTDM_SUCCESS == status ) { + + if(flags &FTDM_READ ) { + char buffer[1025]; + int n = 0, m = 0; + memset(buffer, 0, sizeof(buffer)); + + n = read_channel(gsm_data->dchan, buffer, sizeof(buffer)-1); + m = strlen(buffer); + wat_span_process_read(span->span_id, buffer, m); +#if LOG_SIG_DATA + printf("<<======================= incomming data len = %d, %s\r\n", n, buffer); #endif - status = ftdm_interrupt_multiple_wait(data_sources, ftdm_array_len(data_sources), waitms); - switch (status) { - case FTDM_ETIMEDOUT: - break; - case FTDM_SUCCESS: - { - /* process first the d-channel if ready */ - if ((ioflags = ftdm_interrupt_device_ready(data_sources[0])) != FTDM_NO_FLAGS) { - char buffer[1024]; - unsigned int n = 0; - n = read_channel(gsm_data->dchan, buffer, sizeof(buffer)); - /* this may trigger any of the callbacks registered through wat_register() */ - wat_span_process_read(span->span_id, buffer, n); - } - /* now process all channels with state changes pending */ - while ((ftdmchan = ftdm_queue_dequeue(span->pendingchans))) { - /* double check that this channel has a state change pending */ - ftdm_channel_lock(ftdmchan); - ftdm_channel_advance_states(ftdmchan); - ftdm_channel_unlock(ftdmchan); } - - /* deliver the actual channel events to the user now without any channel locking */ - ftdm_span_trigger_signals(span); } - break; - case FTDM_FAIL: - ftdm_log(FTDM_LOG_ERROR, "%s: ftdm_interrupt_wait returned error!\n", span->name); - break; + + ftdm_channel_advance_states(gsm_data->bchan); + + ftdm_channel_unlock(gsm_data->bchan); + - default: - ftdm_log(FTDM_LOG_ERROR, "%s: ftdm_interrupt_wait returned with unknown code\n", span->name); - break; } + + + + ftdm_span_trigger_signals(span); + + } done: @@ -693,94 +1105,7 @@ done: return NULL; } -#define FT_SYNTAX "USAGE:\n" \ -"--------------------------------------------------------------------------------\n" \ -"ftdm gsm status \n" \ -"--------------------------------------------------------------------------------\n" -static FIO_API_FUNCTION(ftdm_gsm_api) -{ - ftdm_span_t *span = NULL; - int span_id = 0; - char *mycmd = NULL, *argv[10] = { 0 }; - int argc = 0; - if (data) { - mycmd = ftdm_strdup(data); - argc = ftdm_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); - } - - if (!strcasecmp(argv[0], "version")) { - uint8_t current = 0, revision = 0, age = 0; - wat_version(¤t, &revision, &age); - stream->write_function(stream, "libwat version: %d.%d.%d\n", current, revision, age); - stream->write_function(stream, "+OK.\n"); - goto done; - - } else if (!strcasecmp(argv[0], "status")) { - const wat_chip_info_t *chip_info = NULL; - const wat_sim_info_t *sim_info = NULL; - const wat_net_info_t *net_info = NULL; - const wat_sig_info_t *sig_info = NULL; - const wat_pin_stat_t *pin_stat = NULL; - - if (argc < 2) { - goto syntax; - } - - span_id = atoi(argv[1]); - if (ftdm_span_find_by_name(argv[1], &span) != FTDM_SUCCESS && - ftdm_span_find(span_id, &span) != FTDM_SUCCESS) { - stream->write_function(stream, "-ERR Failed to find GSM span '%s'\n", argv[1]); - goto done; - } - - if (!span || !span->signal_data || (span->start != ftdm_gsm_start)) { - stream->write_function(stream, "-ERR '%s' is not a valid GSM span\n", argv[1]); - goto done; - } - - chip_info = wat_span_get_chip_info(span->span_id); - sim_info = wat_span_get_sim_info(span->span_id); - net_info = wat_span_get_net_info(span->span_id); - sig_info = wat_span_get_sig_info(span->span_id); - pin_stat = wat_span_get_pin_info(span->span_id); - - stream->write_function(stream, "Span %d (%s):\n", span->span_id, span->name); - - stream->write_function(stream, "CHIP - %s (%s), revision %s, serial %s \n", - chip_info->manufacturer_name, - chip_info->manufacturer_id, - chip_info->revision, - chip_info->serial); - - stream->write_function(stream, "SIM - Subscriber type %s, imsi %s\n", sim_info->subscriber_type, sim_info->imsi); - - stream->write_function(stream, "Subscriber - Number %s, Plan %s, validity %s\n", - sim_info->subscriber.digits, - wat_number_type2str(sim_info->subscriber.type), - wat_number_plan2str(sim_info->subscriber.plan), - wat_number_validity2str(sim_info->subscriber.validity)); - - stream->write_function(stream, "Network - status %s, Area Code %d, Cell ID %d, Operator %s\n", - wat_net_stat2str(net_info->stat), net_info->lac, net_info->ci, net_info->operator_name); - - - stream->write_function(stream, "\n"); - - stream->write_function(stream, "+OK.\n"); - goto done; - } - -syntax: - stream->write_function(stream, "%s", FT_SYNTAX); -done: - - ftdm_safe_free(mycmd); - - return FTDM_SUCCESS; - - -} static FIO_IO_LOAD_FUNCTION(ftdm_gsm_io_init) { @@ -827,3 +1152,178 @@ EX_DECLARE_DATA ftdm_module_t ftdm_module = { * For VIM: * vim:set softtabstop=4 shiftwidth=4 tabstop=4: */ + + +/********************************************************************************/ +/* */ +/* COMMAND HANDLERS */ +/* */ +/********************************************************************************/ + + +// Version Command Handler +COMMAND_HANDLER(version) +{ + uint8_t current = 0, revision = 0, age = 0; + wat_version(¤t, &revision, &age); + stream->write_function(stream, "libwat version: %d.%d.%d\n", current, revision, age); + stream->write_function(stream, "+OK.\n"); + return FTDM_SUCCESS; +} + + +// Status Command Handler +COMMAND_HANDLER(status) +{ + int span_id = 0; + ftdm_span_t *span = NULL; + const wat_chip_info_t *chip_info = NULL; + const wat_sim_info_t *sim_info = NULL; + const wat_net_info_t *net_info = NULL; + const wat_sig_info_t *sig_info = NULL; + const wat_pin_stat_t *pin_stat = NULL; + + + span_id = atoi(argv[0]); + if (ftdm_span_find_by_name(argv[0], &span) != FTDM_SUCCESS && ftdm_span_find(span_id, &span) != FTDM_SUCCESS) { + stream->write_function(stream, "-ERR Failed to find GSM span '%s'\n", argv[1]); + return FTDM_FAIL; + } + + if (!span || !span->signal_data || (span->start != ftdm_gsm_start)) { + stream->write_function(stream, "-ERR '%s' is not a valid GSM span\n", argv[1]); + return FTDM_FAIL; + } + + chip_info = wat_span_get_chip_info(span->span_id); + sim_info = wat_span_get_sim_info(span->span_id); + net_info = wat_span_get_net_info(span->span_id); + sig_info = wat_span_get_sig_info(span->span_id); + pin_stat = wat_span_get_pin_info(span->span_id); + + stream->write_function(stream, "Span %d (%s):\n", span->span_id, span->name); + + stream->write_function(stream, "CHIP type - %s (%s), revision %s, serial %s \n", + chip_info->manufacturer, + chip_info->model, + chip_info->revision, + chip_info->serial); + + stream->write_function(stream, "SIM - Subscriber type %s, imsi %s\n", sim_info->subscriber_type, sim_info->imsi); + + stream->write_function(stream, "Subscriber - Number %s, Plan %s, validity %s\n", + sim_info->subscriber.digits, + wat_number_type2str(sim_info->subscriber.type), + wat_number_plan2str(sim_info->subscriber.plan), + wat_number_validity2str(sim_info->subscriber.validity)); + + stream->write_function(stream, "Network - status %s, Area Code %d, Cell ID %d, Operator %s\n", + wat_net_stat2str(net_info->stat), net_info->lac, net_info->ci, net_info->operator_name); + + + stream->write_function(stream, "\n"); + + stream->write_function(stream, "+OK.\n"); + + return FTDM_SUCCESS; +} + +// SMS Command Handler +COMMAND_HANDLER(sms) +{ + int span_id = 0,i; + ftdm_span_t *span = NULL; + wat_sms_event_t sms; + + + span_id = atoi(argv[0]); + if (ftdm_span_find_by_name(argv[0], &span) != FTDM_SUCCESS && ftdm_span_find(span_id, &span) != FTDM_SUCCESS) { + stream->write_function(stream, "-ERR Failed to find GSM span '%s'\n", argv[1]); + return FTDM_FAIL; + } + + if (!span || !span->signal_data || (span->start != ftdm_gsm_start)) { + stream->write_function(stream, "-ERR '%s' is not a valid GSM span\n", argv[1]); + return FTDM_FAIL; + } + + memset(&sms, 0, sizeof(sms)); + + strcpy(sms.to.digits, argv[1]); + sms.type = WAT_SMS_TXT; + sms.content.data[0] = '\0'; + for(i=2;ispan_id, g_outbound_call_id++ , &sms)) { + stream->write_function(stream, "Failed to Send SMS \n"); + } + else { + stream->write_function(stream, "SMS Sent.\n"); + } + return FTDM_SUCCESS; +} + + + +// command map +struct { + const char*CMD; // command + int Argc; // minimum args + fCMD Handler; // handling function +} + GSM_COMMANDS[] = { + COMMAND(version, 0), + COMMAND(status, 1), + COMMAND(sms, 3) + }; + +// Commnand API entry point +static FIO_API_FUNCTION(ftdm_gsm_api) +{ + + char *mycmd = NULL, *argv[10] = { 0 }; + int argc = 0; + int i; + ftdm_status_t status = FTDM_FAIL; + ftdm_status_t syntax = FTDM_FAIL; + + + if (data) { + mycmd = ftdm_strdup(data); + argc = ftdm_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if(argc > 0) { + for(i=0;i= GSM_COMMANDS[i].Argc) { + syntax = FTDM_SUCCESS; + status = GSM_COMMANDS[i].Handler(stream, &argv[1], argc-1); + + } + + break; + } + + } + } + + if(FTDM_SUCCESS != syntax) { + stream->write_function(stream, "%s", FT_SYNTAX); + } + else + if(FTDM_SUCCESS != status) { + stream->write_function(stream, "%s Command Failed\r\n", GSM_COMMANDS[i].CMD); + } + ftdm_safe_free(mycmd); + + return FTDM_SUCCESS; +} + + diff --git a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c old mode 100644 new mode 100755 index 1e9f3b059f..75d165be1d --- a/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c +++ b/libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c @@ -36,9 +36,9 @@ * David Yat Sin * Nenad Corbic * Arnaldo Pereira + * Gideon Sadan * - */ - + */ #ifdef WP_DEBUG_IO #define _BSD_SOURCE #include @@ -121,6 +121,16 @@ FIO_SPAN_POLL_EVENT_FUNCTION(wanpipe_poll_event); FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_span_next_event); FIO_CHANNEL_NEXT_EVENT_FUNCTION(wanpipe_channel_next_event); +static void wp_swap16(char *data, int datalen) +{ + int i = 0; + uint16_t *samples = data; + for (i = 0; i < datalen/2; i++) { + uint16_t sample = ((samples[i] & 0x00FF) << 8) | ((samples[i] & 0xFF00) >> 8); + samples[i] = sample; + } +} + /** * \brief Poll for event on a wanpipe socket * \param fd Wanpipe socket descriptor @@ -305,11 +315,20 @@ static unsigned wp_open_range(ftdm_span_t *span, unsigned spanno, unsigned start err = sangoma_tdm_get_hw_coding(chan->sockfd, &tdm_api); + + if (tdm_api.wp_tdm_cmd.hw_tdm_coding) { chan->native_codec = chan->effective_codec = FTDM_CODEC_ALAW; } else { chan->native_codec = chan->effective_codec = FTDM_CODEC_ULAW; } + + + if ((span->trunk_type == FTDM_TRUNK_GSM) && (chan->type == FTDM_CHAN_TYPE_B)) { + chan->native_codec = FTDM_CODEC_SLIN; + chan->native_interval = 20; + chan->packet_len = 320; + } err = sangoma_tdm_get_hw_dtmf(chan->sockfd, &tdm_api); if (err > 0) { @@ -580,8 +599,9 @@ static FIO_OPEN_FUNCTION(wanpipe_open) ftdm_channel_set_feature(ftdmchan, FTDM_CHANNEL_FEATURE_INTERVAL); ftdmchan->effective_interval = ftdmchan->native_interval = wp_globals.codec_ms; - ftdmchan->packet_len = ftdmchan->native_interval * 8; - + + /* The packet len will depend on the codec and interval */ + ftdmchan->packet_len = ftdmchan->native_interval * ((ftdmchan->native_codec==FTDM_CODEC_SLIN) ? 16 : 8); if (wp_globals.txqueue_size > 0) { ftdm_channel_command(ftdmchan, FTDM_COMMAND_SET_TX_QUEUE_SIZE, &wp_globals.txqueue_size); } @@ -772,6 +792,7 @@ static FIO_COMMAND_FUNCTION(wanpipe_command) case FTDM_COMMAND_SET_INTERVAL: { err=sangoma_tdm_set_usr_period(ftdmchan->sockfd, &tdm_api, FTDM_COMMAND_OBJ_INT); + ftdmchan->packet_len = ftdmchan->native_interval * (ftdmchan->effective_codec == FTDM_CODEC_SLIN ? 16 : 8); } break; @@ -793,7 +814,7 @@ static FIO_COMMAND_FUNCTION(wanpipe_command) FTDM_COMMAND_OBJ_INT = wanpipe_swap_bits(rbsbits); } #else - // does sangoma_tdm_read_rbs is available here? + /* is sangoma_tdm_read_rbs available here? */ FTDM_COMMAND_OBJ_INT = ftdmchan->rx_cas_bits; #endif } @@ -969,12 +990,15 @@ static void wanpipe_read_stats(ftdm_channel_t *ftdmchan, wp_tdm_api_rx_hdr_t *rx * \param datalen Size of data buffer * \return Success, failure or timeout */ + + static FIO_READ_FUNCTION(wanpipe_read) { int rx_len = 0; int rq_len = (int)*datalen; wp_tdm_api_rx_hdr_t hdrframe; + #ifdef WP_DEBUG_IO wp_channel_t *wchan = ftdmchan->io_data; ftdm_time_t time_diff = 0; @@ -1034,6 +1058,10 @@ static FIO_READ_FUNCTION(wanpipe_read) wanpipe_read_stats(ftdmchan, &hdrframe); } + if ((ftdmchan->type == FTDM_CHAN_TYPE_B) && (ftdmchan->span->trunk_type == FTDM_TRUNK_GSM)) { + wp_swap16(data, *datalen); + } + return FTDM_SUCCESS; } @@ -1050,6 +1078,10 @@ static FIO_WRITE_FUNCTION(wanpipe_write) int err = 0; wp_tdm_api_tx_hdr_t hdrframe; + if ((ftdmchan->type == FTDM_CHAN_TYPE_B) && (ftdmchan->span->trunk_type == FTDM_TRUNK_GSM)) { + wp_swap16(data, *datalen); + } + /* Do we even need the headerframe here? on windows, we don't even pass it to the driver */ memset(&hdrframe, 0, sizeof(hdrframe)); if (*datalen == 0) { diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index 165f243cf3..b48bb50ae5 100755 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -346,6 +346,11 @@ typedef struct { uint8_t plan; } ftdm_number_t; +typedef struct { + char from[FTDM_MAX_NUMBER_STR_SZ]; + char body[FTDM_MAX_NAME_STR_SZ]; +} ftdm_sms_data_t; + /*! \brief Caller information */ typedef struct ftdm_caller_data { char cid_date[8]; /*!< Caller ID date */ @@ -456,12 +461,13 @@ typedef enum { FTDM_SIGEVENT_INDICATION_COMPLETED, /*!< Last requested indication was completed */ FTDM_SIGEVENT_DIALING, /*!< Outgoing call just started */ FTDM_SIGEVENT_TRANSFER_COMPLETED, /*!< Transfer request is completed */ + FTDM_SIGEVENT_SMS, FTDM_SIGEVENT_INVALID, /*! Date: Mon, 7 May 2012 16:26:48 -0400 Subject: [PATCH 391/630] Fixes before merging sangoma repo with upstream --- libs/freetdm/mod_freetdm/mod_freetdm.c | 2 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index ede617c153..6238513be2 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -2859,7 +2859,7 @@ static void parse_gsm_spans(switch_xml_t cfg, switch_xml_t spans) unsigned paramindex = 0; if (!name && !id) { - CONFIG_ERROR("sangoma isdn span missing required attribute 'id' or 'name', skipping ...\n"); + CONFIG_ERROR("GSM span missing required attribute 'id' or 'name', skipping ...\n"); continue; } diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index c46cadfb27..ea2ba7ce4d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1415,7 +1415,6 @@ static switch_status_t sofia_send_dtmf(switch_core_session_t *session, const swi switch (dtmf_type) { case DTMF_2833: { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Enqueuing RFC2833 DTMF %c of length %d\n", dtmf->digit, dtmf->duration); return switch_rtp_queue_rfc2833(tech_pvt->rtp_session, dtmf); } case DTMF_INFO: @@ -1425,7 +1424,6 @@ static switch_status_t sofia_send_dtmf(switch_core_session_t *session, const swi } else if (dtmf->digit == 'W') { switch_yield(1000000); } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Sending INFO DTMF %c of length %d\n", dtmf->digit, dtmf->duration / 8); snprintf(message, sizeof(message), "Signal=%c\r\nDuration=%d\r\n", dtmf->digit, dtmf->duration / 8); switch_mutex_lock(tech_pvt->sofia_mutex); nua_info(tech_pvt->nh, SIPTAG_CONTENT_TYPE_STR("application/dtmf-relay"), SIPTAG_PAYLOAD_STR(message), TAG_END()); @@ -1434,9 +1432,6 @@ static switch_status_t sofia_send_dtmf(switch_core_session_t *session, const swi } break; case DTMF_NONE: - { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Discarding DTMF %c of length %d, DTMF type is NONE\n", dtmf->digit, dtmf->duration); - } break; default: switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Unhandled DTMF type!\n"); From a511ff3026b8efdfc185723bf9d0728e0f8a86ca Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 7 May 2012 13:44:10 -0500 Subject: [PATCH 392/630] re-implement sla barge using eavesdrop backend --- src/include/private/switch_core_pvt.h | 3 + src/include/switch_core.h | 12 +- src/include/switch_ivr.h | 5 + src/include/switch_resample.h | 2 +- src/include/switch_types.h | 8 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 34 +++++ src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 98 ++++++-------- src/mod/endpoints/mod_sofia/sofia_presence.c | 1 + src/switch_core_io.c | 60 +++++++-- src/switch_core_media_bug.c | 83 +++++++++++- src/switch_ivr_async.c | 132 ++++++++++++++++++- src/switch_resample.c | 19 +++ 13 files changed, 378 insertions(+), 80 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 781f0e4d06..95e66f2f6d 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -171,6 +171,8 @@ struct switch_core_session { uint32_t soft_lock; switch_ivr_dmachine_t *dmachine[2]; plc_state_t *plc; + uint8_t recur_buffer[SWITCH_RECOMMENDED_BUFFER_SIZE]; + switch_size_t recur_buffer_len; }; struct switch_media_bug { @@ -199,6 +201,7 @@ struct switch_media_bug { uint32_t record_pre_buffer_count; uint32_t record_pre_buffer_max; switch_frame_t *ping_frame; + switch_frame_t *read_demux_frame; struct switch_media_bug *next; }; diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 0011652475..91cff21d67 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -137,6 +137,11 @@ SWITCH_DECLARE(void) switch_core_session_disable_heartbeat(switch_core_session_t #define switch_core_session_get_name(_s) switch_channel_get_name(switch_core_session_get_channel(_s)) +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_pop(switch_core_session_t *orig_session, const char *function, switch_media_bug_t **pop); + +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_exec_all(switch_core_session_t *orig_session, + const char *function, switch_media_bug_exec_cb_t cb, void *user_data); + /*! \brief Add a media bug to the session \param session the session to add the bug to @@ -193,7 +198,7 @@ SWITCH_DECLARE(void) switch_core_media_bug_set_write_replace_frame(_In_ switch_m \param bug the bug to get the data from */ SWITCH_DECLARE(switch_frame_t *) switch_core_media_bug_get_read_replace_frame(_In_ switch_media_bug_t *bug); - +SWITCH_DECLARE(void) switch_core_media_bug_set_read_demux_frame(_In_ switch_media_bug_t *bug, _In_ switch_frame_t *frame); /*! \brief Obtain the session from a media bug \param bug the bug to get the data from @@ -225,6 +230,7 @@ SWITCH_DECLARE(uint32_t) switch_core_cpu_count(void); \param bug bug to remove \return SWITCH_STATUS_SUCCESS if the operation was a success */ + SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove(_In_ switch_core_session_t *session, _Inout_ switch_media_bug_t **bug); SWITCH_DECLARE(uint32_t) switch_core_media_bug_prune(switch_core_session_t *session); @@ -247,7 +253,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_close(_Inout_ switch_media \param session the session to remove the bugs from \return SWITCH_STATUS_SUCCESS if the operation was a success */ -SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove_all(_In_ switch_core_session_t *session); +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove_all_function(_In_ switch_core_session_t *session, const char *function); + +#define switch_core_media_bug_remove_all(_s) switch_core_media_bug_remove_all_function(_s, NULL) SWITCH_DECLARE(switch_status_t) switch_core_media_bug_enumerate(switch_core_session_t *session, switch_stream_handle_t *stream); SWITCH_DECLARE(switch_status_t) switch_core_media_bug_transfer_recordings(switch_core_session_t *orig_session, switch_core_session_t *new_session); diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 8f553b957e..ef5155512c 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -269,6 +269,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech_start_input_timers(swit */ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session(switch_core_session_t *session, char *file, uint32_t limit, switch_file_handle_t *fh); + +SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_pop_eavesdropper(switch_core_session_t *session, switch_core_session_t **sessionp); +SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_exec_all(switch_core_session_t *session, const char *app, const char *arg); +SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_update_display(switch_core_session_t *session, const char *name, const char *number); + /*! \brief Eavesdrop on a another session \param session our session diff --git a/src/include/switch_resample.h b/src/include/switch_resample.h index 7ae37669c7..f85a61f065 100644 --- a/src/include/switch_resample.h +++ b/src/include/switch_resample.h @@ -170,7 +170,7 @@ SWITCH_DECLARE(void) switch_change_sln_volume_granular(int16_t *data, uint32_t s ///\} SWITCH_DECLARE(uint32_t) switch_merge_sln(int16_t *data, uint32_t samples, int16_t *other_data, uint32_t other_samples); - +SWITCH_DECLARE(uint32_t) switch_unmerge_sln(int16_t *data, uint32_t samples, int16_t *other_data, uint32_t other_samples); SWITCH_DECLARE(void) switch_mux_channels(int16_t *data, switch_size_t samples, uint32_t channels); SWITCH_END_EXTERN_C diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 93a2e48ced..5fda9c369e 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -288,7 +288,8 @@ typedef enum { ED_NONE = 0, ED_MUX_READ = (1 << 0), ED_MUX_WRITE = (1 << 1), - ED_DTMF = (1 << 2) + ED_DTMF = (1 << 2), + ED_COPY_DISPLAY = (1 << 3) } switch_eavesdrop_flag_enum_t; typedef uint32_t switch_eavesdrop_flag_t; @@ -1434,7 +1435,8 @@ typedef enum { SMBF_THREAD_LOCK = (1 << 7), SMBF_PRUNE = (1 << 8), SMBF_NO_PAUSE = (1 << 9), - SMBF_STEREO_SWAP = (1 << 10) + SMBF_STEREO_SWAP = (1 << 10), + SMBF_LOCK = (1 << 11) } switch_media_bug_flag_enum_t; typedef uint32_t switch_media_bug_flag_t; @@ -1821,6 +1823,8 @@ struct switch_console_callback_match { }; typedef struct switch_console_callback_match switch_console_callback_match_t; +typedef void (*switch_media_bug_exec_cb_t)(switch_media_bug_t *bug, void *user_data); + typedef void (*switch_cap_callback_t) (const char *var, const char *val, void *user_data); typedef switch_status_t (*switch_console_complete_callback_t) (const char *, const char *, switch_console_callback_match_t **matches); typedef switch_bool_t (*switch_media_bug_callback_t) (switch_media_bug_t *, void *, switch_abc_type_t); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index ea2ba7ce4d..a71dc4c714 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2100,6 +2100,8 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi number = tech_pvt->caller_profile->destination_number; } + switch_ivr_eavesdrop_update_display(session, name, number); + if (!sofia_test_flag(tech_pvt, TFLAG_UPDATING_DISPLAY) && switch_channel_test_flag(channel, CF_ANSWERED)) { if (zstr(tech_pvt->last_sent_callee_id_name) || strcmp(tech_pvt->last_sent_callee_id_name, name) || zstr(tech_pvt->last_sent_callee_id_number) || strcmp(tech_pvt->last_sent_callee_id_number, number)) { @@ -5342,11 +5344,40 @@ static switch_status_t list_profile_gateway(const char *line, const char *cursor } +SWITCH_STANDARD_APP(sofia_sla_function) +{ + private_object_t *tech_pvt; + switch_core_session_t *bargee_session; + + if (zstr(data)) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Usage: \n"); + return; + } + + if ((bargee_session = switch_core_session_locate((char *)data))) { + if (bargee_session == session) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "BARGE: %s (cannot barge on myself)\n", (char *) data); + } else { + if (switch_core_session_check_interface(bargee_session, sofia_endpoint_interface)) { + tech_pvt = switch_core_session_get_private(bargee_session); + sofia_set_flag(tech_pvt, TFLAG_SLA_BARGE); + switch_ivr_transfer_variable(bargee_session, session, SWITCH_SIGNAL_BOND_VARIABLE); + } + } + + switch_core_session_rwunlock(bargee_session); + } + + switch_ivr_eavesdrop_session(session, data, NULL, ED_MUX_READ | ED_MUX_WRITE | ED_COPY_DISPLAY); +} + + SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) { switch_chat_interface_t *chat_interface; switch_api_interface_t *api_interface; switch_management_interface_t *management_interface; + switch_application_interface_t *app_interface; struct in_addr in; memset(&mod_sofia_globals, 0, sizeof(mod_sofia_globals)); @@ -5468,6 +5499,9 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) management_interface->relative_oid = "1001"; management_interface->management_function = sofia_manage; + SWITCH_ADD_APP(app_interface, "sofia_sla", "private sofia sla function", + "private sofia sla function", sofia_sla_function, "", SAF_NONE); + SWITCH_ADD_API(api_interface, "sofia", "Sofia Controls", sofia_function, " "); SWITCH_ADD_API(api_interface, "sofia_gateway_data", "Get data from a sofia gateway", sofia_gateway_data_function, " [ivar|ovar|var] "); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 5a51f68a2d..b66b29fb44 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -332,6 +332,7 @@ typedef enum { TFLAG_GOT_ACK, TFLAG_CAPTURE, TFLAG_REINVITED, + TFLAG_SLA_BARGE, /* No new flags below this line */ TFLAG_MAX } TFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 7ae868ef62..26815b6f5e 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -599,6 +599,43 @@ void sofia_handle_sip_i_bye(switch_core_session_t *session, int status, status = 200; phrase = "OK"; + if (sofia_test_flag(tech_pvt, TFLAG_SLA_BARGE)) { + switch_core_session_t *new_session, *other_session; + const char *other_uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE); + char *cmd = NULL; + + if (!zstr(other_uuid) && (other_session = switch_core_session_locate(other_uuid))) { + switch_channel_t *other_channel = switch_core_session_get_channel(other_session); + + switch_mutex_lock(profile->ireg_mutex); + if (switch_ivr_eavesdrop_pop_eavesdropper(session, &new_session) == SWITCH_STATUS_SUCCESS) { + switch_channel_t *new_channel = switch_core_session_get_channel(new_session); + const char *new_uuid = switch_core_session_get_uuid(new_session); + + + switch_channel_set_variable(new_channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL); + + switch_channel_set_flag(other_channel, CF_REDIRECT); + + switch_channel_set_state(new_channel, CS_RESET); + + switch_ivr_uuid_bridge(new_uuid, other_uuid); + cmd = switch_core_session_sprintf(session, "sleep:500,sofia_sla:%s inline", new_uuid); + + switch_channel_clear_flag(other_channel, CF_REDIRECT); + + switch_core_session_rwunlock(new_session); + } + switch_mutex_unlock(profile->ireg_mutex); + + switch_core_session_rwunlock(other_session); + } + + if (!zstr(cmd)) { + switch_ivr_eavesdrop_exec_all(session, "transfer", cmd); + } + } + sofia_set_flag_locked(tech_pvt, TFLAG_BYE); call_info = switch_channel_get_variable(channel, "presence_call_info_full"); @@ -8354,8 +8391,6 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if ((b_session = switch_core_session_locate(b_private->uuid))) { switch_channel_t *b_channel = switch_core_session_get_channel(b_session); const char *uuid; - int one_leg = 1; - private_object_t *b_tech_pvt = NULL; const char *app = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_VARIABLE); const char *data = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE); switch_caller_profile_t *orig_cp; @@ -8387,68 +8422,15 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,conference:%s+flags{dist-dtmf}", data); tech_pvt->caller_profile->dialplan = "inline"; } else { - if (switch_core_session_check_interface(b_session, sofia_endpoint_interface)) { - b_tech_pvt = switch_core_session_get_private(b_session); - } - - if ((uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) { - one_leg = 0; - } else { + if (!(uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) { uuid = switch_core_session_get_uuid(b_session); } if (uuid) { - switch_core_session_t *c_session = NULL; - int do_conf = 0; - const char *c_app = NULL; - const char *c_data = NULL; - uuid = switch_core_session_strdup(b_session, uuid); + tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, + "answer,sofia_sla:%s", b_private->uuid); - if (call_info && (c_session = switch_core_session_locate(uuid))) { - switch_channel_t *c_channel = switch_core_session_get_channel(c_session); - private_object_t *c_tech_pvt = NULL; - - c_app = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_VARIABLE); - c_data = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE); - - if (switch_core_session_check_interface(c_session, sofia_endpoint_interface)) { - c_tech_pvt = switch_core_session_get_private(c_session); - } - - - if (!one_leg && - (!b_tech_pvt || !sofia_test_flag(b_tech_pvt, TFLAG_SIP_HOLD)) && - (!c_tech_pvt || !sofia_test_flag(c_tech_pvt, TFLAG_SIP_HOLD))) { - char *ext = switch_core_session_sprintf(session, "answer,conference:%s@sla+flags{mintwo|dist-dtmf}", uuid); - - switch_channel_set_flag(c_channel, CF_REDIRECT); - switch_ivr_session_transfer(b_session, ext, "inline", NULL); - switch_ivr_session_transfer(c_session, ext, "inline", NULL); - switch_channel_clear_flag(c_channel, CF_REDIRECT); - do_conf = 1; - } - switch_core_session_rwunlock(c_session); - } - - if (do_conf) { - tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,conference:%s@sla+flags{mintwo|dist-dtmf}", uuid); - } else { - if (one_leg && c_app) { - if (c_data) { - tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,%s:%s", c_app, c_data); - } else { - tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,%s", c_app); - } - } else { - switch_channel_mark_hold(b_channel, SWITCH_FALSE); - tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,intercept:%s", uuid); - } - } tech_pvt->caller_profile->dialplan = "inline"; } diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 6befca3439..c4eb565f85 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1167,6 +1167,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } } #endif + if (hup && dh.hits > 0) { goto done; diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 020556a490..f20fa7bff9 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -498,21 +498,12 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi continue; } - if (bp->ready && switch_test_flag(bp, SMBF_READ_STREAM)) { - switch_mutex_lock(bp->read_mutex); - switch_buffer_write(bp->raw_read_buffer, read_frame->data, read_frame->datalen); - - if (bp->callback) { - ok = bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ); - } - switch_mutex_unlock(bp->read_mutex); - } - if (ok && switch_test_flag(bp, SMBF_READ_REPLACE)) { do_bugs = 0; if (bp->callback) { bp->read_replace_frame_in = read_frame; bp->read_replace_frame_out = read_frame; + bp->read_demux_frame = NULL; if ((ok = bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ_REPLACE)) == SWITCH_TRUE) { read_frame = bp->read_replace_frame_out; } @@ -532,6 +523,55 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi } } + if (session->bugs) { + switch_media_bug_t *bp; + switch_bool_t ok = SWITCH_TRUE; + int prune = 0; + switch_thread_rwlock_rdlock(session->bug_rwlock); + + for (bp = session->bugs; bp; bp = bp->next) { + if (switch_channel_test_flag(session->channel, CF_PAUSE_BUGS) && !switch_core_media_bug_test_flag(bp, SMBF_NO_PAUSE)) { + continue; + } + + if (!switch_channel_test_flag(session->channel, CF_ANSWERED) && switch_core_media_bug_test_flag(bp, SMBF_ANSWER_REQ)) { + continue; + } + if (switch_test_flag(bp, SMBF_PRUNE)) { + prune++; + continue; + } + + if (ok && bp->ready && switch_test_flag(bp, SMBF_READ_STREAM)) { + switch_mutex_lock(bp->read_mutex); + if (bp->read_demux_frame) { + uint8_t data[SWITCH_RECOMMENDED_BUFFER_SIZE]; + int bytes = read_frame->datalen / 2; + + memcpy(data, read_frame->data, read_frame->datalen); + switch_unmerge_sln((int16_t *)data, bytes, bp->read_demux_frame->data, bytes); + switch_buffer_write(bp->raw_read_buffer, data, read_frame->datalen); + } else { + switch_buffer_write(bp->raw_read_buffer, read_frame->data, read_frame->datalen); + } + + if (bp->callback) { + ok = bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_READ); + } + switch_mutex_unlock(bp->read_mutex); + } + + if ((bp->stop_time && bp->stop_time <= switch_epoch_time_now(NULL)) || ok == SWITCH_FALSE) { + switch_set_flag(bp, SMBF_PRUNE); + prune++; + } + } + switch_thread_rwlock_unlock(session->bug_rwlock); + if (prune) { + switch_core_media_bug_prune(session); + } + } + if (do_bugs) { goto done; } diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index f5d14137b7..a320d9a345 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -72,6 +72,9 @@ SWITCH_DECLARE(uint32_t) switch_core_media_bug_test_flag(switch_media_bug_t *bug SWITCH_DECLARE(uint32_t) switch_core_media_bug_set_flag(switch_media_bug_t *bug, uint32_t flag) { + if ((flag & SMBF_PRUNE)) { + switch_clear_flag(bug, SMBF_LOCK); + } return switch_set_flag(bug, flag); } @@ -105,6 +108,11 @@ SWITCH_DECLARE(void) switch_core_media_bug_set_read_replace_frame(switch_media_b bug->read_replace_frame_out = frame; } +SWITCH_DECLARE(void) switch_core_media_bug_set_read_demux_frame(switch_media_bug_t *bug, switch_frame_t *frame) +{ + bug->read_demux_frame = frame; +} + SWITCH_DECLARE(void *) switch_core_media_bug_get_user_data(switch_media_bug_t *bug) { return bug->user_data; @@ -175,6 +183,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b bytes = read_impl.decoded_bytes_per_packet; + if (0 && bug->session->recur_buffer_len) { + frame->datalen = bug->session->recur_buffer_len; + frame->samples = bug->session->recur_buffer_len / sizeof(int16_t); + frame->rate = read_impl.actual_samples_per_second; + frame->codec = NULL; + memcpy(frame->data, bug->session->recur_buffer, bug->session->recur_buffer_len); + return SWITCH_STATUS_SUCCESS; + } + + if (frame->buflen < bytes) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_ERROR, "%s frame buffer too small!\n", switch_channel_get_name(bug->session->channel)); @@ -363,6 +381,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b return SWITCH_STATUS_BREAK; } + memcpy(bug->session->recur_buffer, frame->data, frame->datalen); + bug->session->recur_buffer_len = frame->datalen; + return SWITCH_STATUS_SUCCESS; } @@ -552,6 +573,53 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_transfer_recordings(switch return x ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; } +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_pop(switch_core_session_t *orig_session, const char *function, switch_media_bug_t **pop) +{ + switch_media_bug_t *bp; + + if (orig_session->bugs) { + switch_thread_rwlock_wrlock(orig_session->bug_rwlock); + for (bp = orig_session->bugs; bp; bp = bp->next) { + if (!strcmp(bp->function, function)) { + switch_set_flag(bp, SMBF_LOCK); + break; + } + } + switch_thread_rwlock_unlock(orig_session->bug_rwlock); + + if (bp) { + *pop = bp; + return SWITCH_STATUS_SUCCESS; + } else { + *pop = NULL; + } + } + + return SWITCH_STATUS_FALSE; +} + +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_exec_all(switch_core_session_t *orig_session, + const char *function, switch_media_bug_exec_cb_t cb, void *user_data) +{ + switch_media_bug_t *bp; + int x = 0; + + switch_assert(cb); + + if (orig_session->bugs) { + switch_thread_rwlock_wrlock(orig_session->bug_rwlock); + for (bp = orig_session->bugs; bp; bp = bp->next) { + if (!switch_test_flag(bp, SMBF_PRUNE) && !switch_test_flag(bp, SMBF_LOCK) && !strcmp(bp->function, function)) { + cb(bp, user_data); + x++; + } + } + switch_thread_rwlock_unlock(orig_session->bug_rwlock); + } + + return x ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; +} + SWITCH_DECLARE(switch_status_t) switch_core_media_bug_enumerate(switch_core_session_t *session, switch_stream_handle_t *stream) { switch_media_bug_t *bp; @@ -579,7 +647,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_enumerate(switch_core_sess return SWITCH_STATUS_SUCCESS; } -SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove_all(switch_core_session_t *session) +SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove_all_function(switch_core_session_t *session, const char *function) { switch_media_bug_t *bp; switch_status_t status = SWITCH_STATUS_FALSE; @@ -587,10 +655,15 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove_all(switch_core_ses if (session->bugs) { switch_thread_rwlock_wrlock(session->bug_rwlock); for (bp = session->bugs; bp; bp = bp->next) { - if (bp->thread_id && bp->thread_id != switch_thread_self()) { + if ((bp->thread_id && bp->thread_id != switch_thread_self()) || switch_test_flag(bp, SMBF_LOCK)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "BUG is thread locked skipping.\n"); continue; } + + if (!zstr(function) && strcmp(bp->function, function)) { + continue; + } + if (bp->callback) { bp->callback(bp, bp->user_data, SWITCH_ABC_TYPE_CLOSE); @@ -614,7 +687,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_close(switch_media_bug_t * { switch_media_bug_t *bp = *bug; if (bp) { - if (bp->thread_id && bp->thread_id != switch_thread_self()) { + if ((bp->thread_id && bp->thread_id != switch_thread_self()) || switch_test_flag(bp, SMBF_LOCK)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(*bug)), SWITCH_LOG_DEBUG, "BUG is thread locked skipping.\n"); return SWITCH_STATUS_FALSE; } @@ -637,6 +710,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_remove(switch_core_session { switch_media_bug_t *bp = NULL, *last = NULL; switch_status_t status = SWITCH_STATUS_FALSE; + + if (switch_core_media_bug_test_flag(*bug, SMBF_LOCK)) { + return status; + } switch_thread_rwlock_wrlock(session->bug_rwlock); if (session->bugs) { diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index ecddfdbbb6..5d6127d054 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1148,9 +1148,14 @@ struct eavesdrop_pvt { switch_mutex_t *r_mutex; switch_buffer_t *w_buffer; switch_mutex_t *w_mutex; + switch_core_session_t *eavesdropper; uint32_t flags; + switch_frame_t demux_frame; + uint8_t data[SWITCH_RECOMMENDED_BUFFER_SIZE]; }; + + static switch_bool_t eavesdrop_callback(switch_media_bug_t *bug, void *user_data, switch_abc_type_t type) { struct eavesdrop_pvt *ep = (struct eavesdrop_pvt *) user_data; @@ -1190,13 +1195,18 @@ static switch_bool_t eavesdrop_callback(switch_media_bug_t *bug, void *user_data if (switch_buffer_inuse(ep->r_buffer) >= rframe->datalen) { uint32_t bytes; switch_buffer_lock(ep->r_buffer); - bytes = (uint32_t) switch_buffer_read(ep->r_buffer, data, rframe->datalen); + bytes = (uint32_t) switch_buffer_read(ep->r_buffer, ep->data, rframe->datalen); - rframe->datalen = switch_merge_sln(rframe->data, rframe->samples, (int16_t *) data, bytes / 2) * 2; + rframe->datalen = switch_merge_sln(rframe->data, rframe->samples, (int16_t *) ep->data, bytes / 2) * 2; rframe->samples = rframe->datalen / 2; + ep->demux_frame.data = ep->data; + ep->demux_frame.datalen = bytes; + ep->demux_frame.samples = bytes / 2; + switch_buffer_unlock(ep->r_buffer); switch_core_media_bug_set_read_replace_frame(bug, rframe); + switch_core_media_bug_set_read_demux_frame(bug, &ep->demux_frame); } } } @@ -1229,6 +1239,99 @@ static switch_bool_t eavesdrop_callback(switch_media_bug_t *bug, void *user_data return SWITCH_TRUE; } +SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_pop_eavesdropper(switch_core_session_t *session, switch_core_session_t **sessionp) +{ + switch_media_bug_t *bug; + switch_status_t status = SWITCH_STATUS_FALSE; + + if (switch_core_media_bug_pop(session, "eavesdrop", &bug) == SWITCH_STATUS_SUCCESS) { + struct eavesdrop_pvt *ep = (struct eavesdrop_pvt *) switch_core_media_bug_get_user_data(bug); + + if (ep && ep->eavesdropper && ep->eavesdropper != session) { + switch_core_session_read_lock(ep->eavesdropper); + *sessionp = ep->eavesdropper; + switch_core_media_bug_set_flag(bug, SMBF_PRUNE); + status = SWITCH_STATUS_SUCCESS; + } + } + + + return status; +} + +struct exec_cb_data { + switch_core_session_t *caller; + char *var; + char *val; +}; + +static void exec_cb(switch_media_bug_t *bug, void *user_data) +{ + struct exec_cb_data *data = (struct exec_cb_data *) user_data; + struct eavesdrop_pvt *ep = (struct eavesdrop_pvt *) switch_core_media_bug_get_user_data(bug); + + if (ep && ep->eavesdropper && ep->eavesdropper != data->caller) { + switch_channel_t *a = switch_core_session_get_channel(ep->eavesdropper); + switch_channel_t *b = switch_core_session_get_channel(data->caller); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s telling %s to exec %s:%s\n", + switch_channel_get_name(b), switch_channel_get_name(a), data->var, data->val); + + switch_core_session_execute_application(ep->eavesdropper, data->var, data->val); + } +} + +static void display_exec_cb(switch_media_bug_t *bug, void *user_data) +{ + struct exec_cb_data *data = (struct exec_cb_data *) user_data; + struct eavesdrop_pvt *ep = (struct eavesdrop_pvt *) switch_core_media_bug_get_user_data(bug); + + if (ep && ep->eavesdropper && ep->eavesdropper != data->caller) { + switch_core_session_message_t msg = { 0 }; + + msg.from = __FILE__; + msg.message_id = SWITCH_MESSAGE_INDICATE_DISPLAY; + msg.string_array_arg[0] = data->var; + msg.string_array_arg[1] = data->val; + + switch_core_session_receive_message(ep->eavesdropper, &msg); + } +} + +SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_exec_all(switch_core_session_t *session, const char *app, const char *arg) +{ + struct exec_cb_data *data = NULL; + + data = switch_core_session_alloc(session, sizeof(*data)); + data->var = switch_core_session_strdup(session, app); + data->val = switch_core_session_strdup(session, arg); + data->caller = session; + + return switch_core_media_bug_exec_all(session, "eavesdrop", exec_cb, data); +} + + +SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_update_display(switch_core_session_t *session, const char *name, const char *number) +{ + struct exec_cb_data *data = NULL; + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_status_t status = SWITCH_STATUS_FALSE; + + data = switch_core_session_alloc(session, sizeof(*data)); + data->var = switch_core_session_strdup(session, name); + data->val = switch_core_session_strdup(session, number); + data->caller = session; + + if (!switch_channel_test_app_flag_key("EAVESDROP", channel, 1)) { + switch_channel_set_app_flag_key("EAVESDROP", channel, 1); + status = switch_core_media_bug_exec_all(session, "eavesdrop", display_exec_cb, data); + switch_channel_clear_app_flag_key("EAVESDROP", channel, 1); + } + + return status; +} + + SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session_t *session, const char *uuid, const char *require_group, switch_eavesdrop_flag_t flags) { @@ -1236,6 +1339,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session switch_status_t status = SWITCH_STATUS_FALSE; switch_channel_t *channel = switch_core_session_get_channel(session); int codec_initialized = 0; + const char *name, *num; if ((tsession = switch_core_session_locate(uuid))) { struct eavesdrop_pvt *ep = NULL; @@ -1341,6 +1445,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session write_frame.buflen = sizeof(buf); write_frame.rate = codec.implementation->actual_samples_per_second; + ep->eavesdropper = session; ep->flags = flags; switch_mutex_init(&ep->mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(tsession)); switch_buffer_create_dynamic(&ep->buffer, 2048, 2048, 8192); @@ -1370,9 +1475,28 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session /* Tell the channel we are going to be in a bridge */ msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE; switch_core_session_receive_message(session, &msg); - cp = switch_channel_get_caller_profile(tchannel); - switch_snprintf(cid_buf, sizeof(cid_buf), "%s|%s", cp->caller_id_number, cp->caller_id_name); + name = cp->caller_id_name; + num = cp->caller_id_number; + + if (flags & ED_COPY_DISPLAY) { + const char *tmp_name = NULL, *tmp_num = NULL; + name = cp->callee_id_name; + num = cp->callee_id_number; + + if (!((tmp_name = switch_channel_get_variable(tchannel, "last_sent_callee_id_name")) + && (tmp_num = switch_channel_get_variable(tchannel, "last_sent_callee_id_number")))) { + + tmp_name = switch_channel_get_variable(tchannel, "callee_id_name"); + tmp_num = switch_channel_get_variable(tchannel, "callee_id_number"); + } + + if (tmp_name) name = tmp_name; + if (tmp_num) num = tmp_num; + + } + + switch_snprintf(cid_buf, sizeof(cid_buf), "%s|%s", name, num); msg.string_arg = cid_buf; msg.message_id = SWITCH_MESSAGE_INDICATE_DISPLAY; switch_core_session_receive_message(session, &msg); diff --git a/src/switch_resample.c b/src/switch_resample.c index 136adc9694..6722d6f448 100644 --- a/src/switch_resample.c +++ b/src/switch_resample.c @@ -252,6 +252,25 @@ SWITCH_DECLARE(uint32_t) switch_merge_sln(int16_t *data, uint32_t samples, int16 return x; } + +SWITCH_DECLARE(uint32_t) switch_unmerge_sln(int16_t *data, uint32_t samples, int16_t *other_data, uint32_t other_samples) +{ + int i; + int32_t x; + + if (samples > other_samples) { + x = other_samples; + } else { + x = samples; + } + + for (i = 0; i < x; i++) { + data[i] -= other_data[i]; + } + + return x; +} + SWITCH_DECLARE(void) switch_mux_channels(int16_t *data, switch_size_t samples, uint32_t channels) { int16_t *buf; From c204243b1bdf860a26f5b8d984a0dc4504474e79 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 20:52:50 +0000 Subject: [PATCH 393/630] tagscript: reindent --- scripts/tagscript.sh | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 1ac817cb74..91f37bceb0 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -1,26 +1,28 @@ #!/bin/bash +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- +##### release a version of FreeSWITCH src_repo="$(pwd)" if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; + echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 + exit 1; fi showusage() { - echo "usage: ./scripts/tagscript.sh [-s] MAJOR.MINOR.MICRO[.REVISION]" 1>&2 - exit 1; + echo "usage: ./scripts/tagscript.sh [-s] MAJOR.MINOR.MICRO[.REVISION]" 1>&2 + exit 1; } while getopts "s" o; do - case "$o" in - s) opts="-s" ;; - esac + case "$o" in + s) opts="-s" ;; + esac done shift $(($OPTIND-1)) if [ -z "$1" ]; then - showusage + showusage fi ver="$1" @@ -33,26 +35,26 @@ dst_name="freeswitch-$major.$minor.$micro" dst_dir="$src_repo/../$dst_name" if [ -d "$dst_dir" ]; then - echo "error: destination directory $dst_dir already exists." 1>&2 - exit 1; + echo "error: destination directory $dst_dir already exists." 1>&2 + exit 1; fi # save local changes ret=$(git stash save "Save uncommitted changes before tagging.") if echo $ret | grep "^Saved"; then - stash_saved=1 + stash_saved=1 fi sed -e "s|\(AC_SUBST(SWITCH_VERSION_MAJOR, \[\).*\(\])\)|\1$major\2|" \ - -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ - -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ - -e "s|\(AC_INIT(\[freeswitch\], \[\).*\(\], BUG-REPORT-ADDRESS)\)|\1$major.$minor.$micro\2|" \ - -i configure.in + -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ + -e "s|\(AC_INIT(\[freeswitch\], \[\).*\(\], BUG-REPORT-ADDRESS)\)|\1$major.$minor.$micro\2|" \ + -i configure.in if [ -n "$rev" ]; then - sed -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ - -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ - -i configure.in + sed -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ + -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ + -i configure.in fi git add configure.in @@ -61,7 +63,7 @@ git tag -a ${opts} -m "freeswitch-$ver release" v$ver git clone $src_repo $dst_dir if [ -n "$stash_saved" ]; then - git stash pop + git stash pop fi cd $dst_dir @@ -87,3 +89,4 @@ server (I didn't do that for you, as you might want to review first). ---------------------------------------------------------------------- EOF +exit 0 From 20ac9757ba69b78e17eb8895dfb32144a11ce740 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 20:56:45 +0000 Subject: [PATCH 394/630] ci: wrap sanity checks --- scripts/ci/common.sh | 20 ++++++++++++-------- scripts/ci/debsrcbuilder.sh | 2 ++ scripts/ci/rpmbuilder.sh | 2 ++ scripts/ci/sounds-en-us-callie.sh | 2 ++ scripts/ci/src_tarball.sh | 2 ++ 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index a570cd8008..5967ae8262 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -73,13 +73,17 @@ gnuize () { rm -rf .git } -if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; -fi +check_pwd () { + if [ ! -d .git ]; then + echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 + exit 1; + fi +} -if [ -z "$1" ]; then - echo "usage: $0 " 1>&2 - exit 1; -fi +check_input_ver_build () { + if [ -z "$1" ]; then + echo "usage: $0 " 1>&2 + exit 1; + fi +} diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 3dc56e5faa..e5e429b153 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -5,6 +5,8 @@ sdir="." [ -n "${0%/*}" ] && sdir="${0%/*}" . $sdir/common.sh +check_pwd +check_input_ver_build eval $(parse_version "$1") datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 36b8b1d079..563bfca104 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -5,6 +5,8 @@ sdir="." [ -n "${0%/*}" ] && sdir="${0%/*}" . $sdir/common.sh +check_pwd +check_input_ver_build eval $(parse_version "$1") build="$2" diff --git a/scripts/ci/sounds-en-us-callie.sh b/scripts/ci/sounds-en-us-callie.sh index 39703028ca..6b3b0df0a6 100755 --- a/scripts/ci/sounds-en-us-callie.sh +++ b/scripts/ci/sounds-en-us-callie.sh @@ -5,6 +5,8 @@ sdir="." [ -n "${0%/*}" ] && sdir="${0%/*}" . $sdir/common.sh +check_pwd +check_input_ver_build eval $(parse_version "$1") build="$2" diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index 7fd48621e3..d4c3adffa7 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -5,6 +5,8 @@ sdir="." [ -n "${0%/*}" ] && sdir="${0%/*}" . $sdir/common.sh +check_pwd +check_input_ver_build eval $(parse_version "$1") dst_name="freeswitch-$cmajor.$cminor.$cmicro" From 985fad9e32813b840ebd918e1303219fdd5bbba1 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 21:34:08 +0000 Subject: [PATCH 395/630] prepare the tag script for the new release --- scripts/ci/common.sh | 10 ++++ scripts/tagscript.sh | 125 ++++++++++++++++++++++++++----------------- 2 files changed, 85 insertions(+), 50 deletions(-) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index 5967ae8262..ef191676b3 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -37,6 +37,11 @@ parse_version () { micro="0" ver="${major}.${minor}${rev}" fi + gver="$(echo "$ver" | sed -e 's/[~_]/-/')" + grev="$(echo "$rev" | sed -e 's/[~_]/-/')" + gmajor="$major" + gminor="$minor" + gmicro="$micro" [ -n "$crev" ] && cver="${cver}.${crev}" echo "ver='$ver'" echo "major='$major'" @@ -48,6 +53,11 @@ parse_version () { echo "cminor='$cminor'" echo "cmicro='$cmicro'" echo "crev='$crev'" + echo "gver='$gver'" + echo "gmajor='$gmajor'" + echo "gminor='$gminor'" + echo "gmicro='$gmicro'" + echo "grev='$grev'" } set_fs_ver () { diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 91f37bceb0..005fab5499 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -2,20 +2,38 @@ ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- ##### release a version of FreeSWITCH -src_repo="$(pwd)" +sdir="." +[ -n "${0%/*}" ] && sdir="${0%/*}" +. $sdir/ci/common.sh -if [ ! -d .git ]; then - echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 - exit 1; -fi +check_pwd showusage() { - echo "usage: ./scripts/tagscript.sh [-s] MAJOR.MINOR.MICRO[.REVISION]" 1>&2 + cat >&2 < + +where follows the format: + +1.2-alpha3 +1.2-beta3 +1.2-rc3 +1.2 +1.2.13-rc4 +1.2.13 +etc. + +I'll take care of correctly naming the tag to be consistent with +FreeSWITCH git policy from there. + +EOF exit 1; } -while getopts "s" o; do +opts="" +debug=false +while getopts "ds" o; do case "$o" in + d) debug=true ;; s) opts="-s" ;; esac done @@ -25,67 +43,74 @@ if [ -z "$1" ]; then showusage fi -ver="$1" -major=$(echo "$ver" | cut -d. -f1) -minor=$(echo "$ver" | cut -d. -f2) -micro=$(echo "$ver" | cut -d. -f3) -rev=$(echo "$ver" | cut -d. -f4) +eval $(parse_version "$1") -dst_name="freeswitch-$major.$minor.$micro" -dst_dir="$src_repo/../$dst_name" +ngrep () { grep -e "$1" >/dev/null; } -if [ -d "$dst_dir" ]; then - echo "error: destination directory $dst_dir already exists." 1>&2 - exit 1; +if ! $debug && ! (echo "$opts" | ngrep '-s'); then + cat >&2 <&2 + read r + [ -z "$r" ] && continue + if [ "$r" = yes ] || [ "$r" = y ]; then + (echo; echo "OK, I believe you."; echo) >&2 + break + else + (echo; echo "This is a bad idea then."; echo) >&2 + fi + while true; do + echo -n "Are you really really sure? (yes/no): " >&2 + read r + [ -z "$r" ] && continue + if [ "$r" = yes ] || [ "$r" = y ]; then + (echo; echo "As you wish, you've been warned."; echo) >&2 + break + else + (echo; echo "Great; go setup a GPG key and try again with -s"; echo) >&2 + exit 1 + fi + break + done + break + done fi -# save local changes +echo "Saving uncommitted changes before tagging..." >&2 ret=$(git stash save "Save uncommitted changes before tagging.") -if echo $ret | grep "^Saved"; then +if (echo "$ret" | ngrep '^Saved'); then stash_saved=1 fi -sed -e "s|\(AC_SUBST(SWITCH_VERSION_MAJOR, \[\).*\(\])\)|\1$major\2|" \ - -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ - -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ - -e "s|\(AC_INIT(\[freeswitch\], \[\).*\(\], BUG-REPORT-ADDRESS)\)|\1$major.$minor.$micro\2|" \ - -i configure.in - -if [ -n "$rev" ]; then - sed -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ - -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ - -i configure.in -fi +echo "Changing the version of configure.in..." >&2 +set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" +echo "Committing the new version..." >&2 git add configure.in -git commit -m "Release freeswitch-$ver" -git tag -a ${opts} -m "freeswitch-$ver release" v$ver +git commit -m "Release freeswitch-$gver" +echo "Tagging freeswitch v$gver..." >&2 +git tag -a ${opts} -m "freeswitch-$gver release" "v$gver" -git clone $src_repo $dst_dir if [ -n "$stash_saved" ]; then - git stash pop + echo "Restoring your uncommitted changes to your working directory..." >&2 + git stash pop >/dev/null fi -cd $dst_dir - -./bootstrap.sh -mv bootstrap.sh rebootstrap.sh -rm -f docs/AUTHORS -rm -f docs/COPYING -rm -f docs/ChangeLog -rm -rf .git -cd .. -tar -cvf $dst_name.tar $dst_dir -gzip -9 -c $dst_name.tar > $dst_name.tar.gz || echo "gzip not available" -bzip2 -z -k $dst_name.tar || echo "bzip2 not available" -xz -z -9 -k $dst_name.tar || echo "xz / xz-utils not available" -rm -rf $dst_name.tar $dst_dir - cat 1>&2 < Date: Mon, 7 May 2012 21:47:25 +0000 Subject: [PATCH 396/630] tagscript: refactor --- scripts/tagscript.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 005fab5499..12fafc42ff 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -44,10 +44,9 @@ if [ -z "$1" ]; then fi eval $(parse_version "$1") +ngrep () { (echo "$2" | grep -e "$1" >/dev/null); } -ngrep () { grep -e "$1" >/dev/null; } - -if ! $debug && ! (echo "$opts" | ngrep '-s'); then +if ! ($debug || ngrep '-s' "$opts"); then cat >&2 <&2 ret=$(git stash save "Save uncommitted changes before tagging.") -if (echo "$ret" | ngrep '^Saved'); then +if (ngrep '^Saved' "$ret"); then stash_saved=1 fi From 55330e0e564da82aa65b767a1dc5166450f3ca13 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 21:49:00 +0000 Subject: [PATCH 397/630] tagscript: follow our git subject line capitalization convention --- scripts/tagscript.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 12fafc42ff..faccf47081 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -92,7 +92,7 @@ set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" echo "Committing the new version..." >&2 git add configure.in -git commit -m "Release freeswitch-$gver" +git commit -m "release freeswitch-$gver" echo "Tagging freeswitch v$gver..." >&2 git tag -a ${opts} -m "freeswitch-$gver release" "v$gver" From d864e66d623c58a38c7063f038e1e6d3b1d52271 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 22:02:44 +0000 Subject: [PATCH 398/630] tagscript: add sanity checks on version number --- scripts/tagscript.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index faccf47081..4e74ebe9a5 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -45,6 +45,19 @@ fi eval $(parse_version "$1") ngrep () { (echo "$2" | grep -e "$1" >/dev/null); } +err () { echo "$1" >&2; exit 1; } + +ngrep '^[1-9]*$' "$gmajor" || \ + err "The major version '$gmajor' appears invalid." +ngrep '^[0-9]*$' "$gminor" || \ + err "The minor version '$gminor' appears invalid." +[ -z "$gmicro" ] || ngrep '^[0-9]*$' "$gmicro" || \ + err "The micro version '$gmicro' appears invalid." +[ -z "$grev" ] || ngrep '^[.-]' "$grev" || \ + err "The revision '$grev' appears invalid." + +echo "We're going to release freeswitch v$gver" >&2 +echo >&2 if ! ($debug || ngrep '-s' "$opts"); then cat >&2 < Date: Mon, 7 May 2012 22:15:59 +0000 Subject: [PATCH 399/630] tagscript: add better usage instructions and error checking --- scripts/tagscript.sh | 62 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 4e74ebe9a5..920d312d65 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -10,20 +10,34 @@ check_pwd showusage() { cat >&2 < +SYNOPSIS + $0 [-s] -where follows the format: +DESCRIPTION + Creates a new FreeSWITCH tag after performing some sanity checks. + The tag is optionally signed if '-s' is provided, but you should + really sign any public release tags, so pass '-s'. -1.2-alpha3 -1.2-beta3 -1.2-rc3 -1.2 -1.2.13-rc4 -1.2.13 -etc. + follows the format: + + 1.2-alpha3 + 1.2-beta3 + 1.2-rc3 + 1.2 + 1.2.13-rc4 + 1.2.13 + etc. -I'll take care of correctly naming the tag to be consistent with -FreeSWITCH git policy from there. + This tool will take care of correctly naming the tag to be + consistent with FreeSWITCH git policy from there. + +OPTIONS + -s + Signs the resulting tag. + + -d + Debug mode. Remove the tag after creating it and don't warn about + the lack of a signature. EOF exit 1; @@ -105,9 +119,31 @@ set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" echo "Committing the new version..." >&2 git add configure.in -git commit -m "release freeswitch-$gver" +if ! (git commit --allow-empty -m "release freeswitch-$gver"); then + cat >&2 <&2 -git tag -a ${opts} -m "freeswitch-$gver release" "v$gver" +if ! (git tag -a ${opts} -m "freeswitch-$gver release" "v$gver"); then + cat >&2 <&2 + git tag -d "v$gver" || true + git reset --hard HEAD^ || true +fi if [ -n "$stash_saved" ]; then echo "Restoring your uncommitted changes to your working directory..." >&2 From a9b997468d22f2ccc04eb0d220c18a466afe6bf0 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Mon, 7 May 2012 17:25:33 -0500 Subject: [PATCH 400/630] fix compiler warning --- src/switch_core_media_bug.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index a320d9a345..3d5c26b531 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -183,6 +183,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b bytes = read_impl.decoded_bytes_per_packet; +#ifdef TESTINGONLY if (0 && bug->session->recur_buffer_len) { frame->datalen = bug->session->recur_buffer_len; frame->samples = bug->session->recur_buffer_len / sizeof(int16_t); @@ -191,6 +192,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_read(switch_media_bug_t *b memcpy(frame->data, bug->session->recur_buffer, bug->session->recur_buffer_len); return SWITCH_STATUS_SUCCESS; } +#endif if (frame->buflen < bytes) { From 581e04c4f0d89f8b6f9dbbcead1d09872ea66ca1 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 22:28:33 +0000 Subject: [PATCH 401/630] tagscript: improve formatting of commits and tags --- scripts/tagscript.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 920d312d65..30222641a6 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -119,7 +119,7 @@ set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" echo "Committing the new version..." >&2 git add configure.in -if ! (git commit --allow-empty -m "release freeswitch-$gver"); then +if ! (git commit --allow-empty -m "release FreeSWITCH $gver"); then cat >&2 <&2 -if ! (git tag -a ${opts} -m "freeswitch-$gver release" "v$gver"); then +if ! (git tag -a ${opts} -m "FreeSWITCH $gver" "v$gver"); then cat >&2 < Date: Mon, 7 May 2012 22:39:39 +0000 Subject: [PATCH 402/630] ci: fix 20ac9757ba --- scripts/ci/debsrcbuilder.sh | 2 +- scripts/ci/rpmbuilder.sh | 2 +- scripts/ci/sounds-en-us-callie.sh | 2 +- scripts/ci/src_tarball.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index e5e429b153..70aceeeee0 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -6,7 +6,7 @@ sdir="." . $sdir/common.sh check_pwd -check_input_ver_build +check_input_ver_build $@ eval $(parse_version "$1") datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 563bfca104..78c4c3ca73 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -6,7 +6,7 @@ sdir="." . $sdir/common.sh check_pwd -check_input_ver_build +check_input_ver_build $@ eval $(parse_version "$1") build="$2" diff --git a/scripts/ci/sounds-en-us-callie.sh b/scripts/ci/sounds-en-us-callie.sh index 6b3b0df0a6..32fbc0a400 100755 --- a/scripts/ci/sounds-en-us-callie.sh +++ b/scripts/ci/sounds-en-us-callie.sh @@ -6,7 +6,7 @@ sdir="." . $sdir/common.sh check_pwd -check_input_ver_build +check_input_ver_build $@ eval $(parse_version "$1") build="$2" diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index d4c3adffa7..826b8a27b7 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -6,7 +6,7 @@ sdir="." . $sdir/common.sh check_pwd -check_input_ver_build +check_input_ver_build $@ eval $(parse_version "$1") dst_name="freeswitch-$cmajor.$cminor.$cmicro" From 0553518f678fe62bff0270fb03ad8a3f42723cf6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 22:52:48 +0000 Subject: [PATCH 403/630] ci/debian: accept the codename for which we are packaging --- debian/bootstrap.sh | 10 ++++++++++ scripts/ci/debsrcbuilder.sh | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index c13bbbb92e..2ee3bb8efc 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -788,6 +788,16 @@ genmodctl_mod () { echo } +codename="sid" +while getopts "r:" o; do + case "$o" in + r) codename="$OPTARG" ;; + esac +done +shift $(($OPTIND-1)) + +echo "Bootstrapping debian/ for ${codename}" >&2 +echo >&2 echo "Please wait, this takes a few seconds..." >&2 parse_dir=control-modules.parse diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 70aceeeee0..4e0d5aad57 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -12,6 +12,7 @@ datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" build="b$2" distro=${3:="unstable"} +codename=${4:="sid"} fver="${ver}~${nightly}~${build}" fname="freeswitch-$fver" @@ -58,13 +59,13 @@ echo "Compressing $orig.tar with xz -6..." >&2 xz -6 $orig.tar cd $bdir -(cd debian && ./bootstrap.sh) +(cd debian && ./bootstrap.sh -c "$codename") # dch can't handle comments in control file (cd debian; \ mv control control.orig; \ grep -e '^#' -v control.orig > control) # dependency: libparse-debcontrol-perl -dch -b -v "${fver}-1" \ +dch -b -v "${fver}-1~${codename}+1" \ -M --force-distribution -D "$distro" \ "Nightly build at ${datestamp}." # dependency: fakeroot From 5c18656a9133843a5b775945d0c4e712dff4061e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 23:32:09 +0000 Subject: [PATCH 404/630] debian: build different sets of modules based on the debian codename --- debian/bootstrap.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 2ee3bb8efc..16848e3ddd 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -30,14 +30,16 @@ avoid_mods=( event_handlers/mod_snmp formats/mod_portaudio_stream formats/mod_shout - formats/mod_vlc languages/mod_java languages/mod_managed - languages/mod_spidermonkey languages/mod_yaml sdk/autotools xml_int/mod_xml_ldap ) +avoid_mods_squeeze=( + formats/mod_vlc + languages/mod_spidermonkey +) err () { echo "$0 error: $1" >&2 @@ -54,7 +56,8 @@ xread () { } avoid_mod_filter () { - for x in "${avoid_mods[@]}"; do + local mods=("$(eval echo \${avoid_mods_$codename[@]})" "${avoid_mods[@]}") + for x in "${mods[@]}"; do [ "$1" = "$x" ] && return 1 done return 0 From bc2783effdf63309003fba0b34cd2ff4f4f67e45 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 7 May 2012 23:45:38 +0000 Subject: [PATCH 405/630] ci: fix up variadic invocation --- scripts/ci/debsrcbuilder.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 4e0d5aad57..d693777500 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -10,9 +10,9 @@ check_input_ver_build $@ eval $(parse_version "$1") datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" -build="b$2" -distro=${3:="unstable"} -codename=${4:="sid"} +build="b${2-0}" +distro="${3-unstable}" +codename="${4-sid}" fver="${ver}~${nightly}~${build}" fname="freeswitch-$fver" From a1177a79941d2d667c6c399199c9ff2f6f1cbfb0 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 8 May 2012 00:02:56 -0500 Subject: [PATCH 406/630] release FreeSWITCH 1.2-rc1 --- configure.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.in b/configure.in index f6d2e091ef..7b76740d62 100644 --- a/configure.in +++ b/configure.in @@ -3,11 +3,11 @@ # Must change all of the below together # For a release, set revision for that tagged release as well and uncomment -AC_INIT([freeswitch], [1.1.beta1], BUG-REPORT-ADDRESS) +AC_INIT([freeswitch], [1.2-rc1], BUG-REPORT-ADDRESS) AC_SUBST(SWITCH_VERSION_MAJOR, [1]) -AC_SUBST(SWITCH_VERSION_MINOR, [1]) -AC_SUBST(SWITCH_VERSION_MICRO, [beta1]) -#AC_SUBST(SWITCH_VERSION_REVISION, []) +AC_SUBST(SWITCH_VERSION_MINOR, [2]) +AC_SUBST(SWITCH_VERSION_MICRO, [0]) +AC_SUBST(SWITCH_VERSION_REVISION, [-rc1]) AC_CONFIG_FILES([src/include/switch_version.h.in:src/include/switch_version.h.template]) AC_CONFIG_FILES([.version:.version.in]) From c5b6166538cbece8727e1d45c08461f66e80f202 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 14:34:47 +0000 Subject: [PATCH 407/630] debian: fix use of bash arrays and display excludes/includes --- debian/bootstrap.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 242e2cb9c4..947388e632 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -56,16 +56,23 @@ xread () { } avoid_mod_filter () { - local mods=("$(eval echo \${avoid_mods_$codename[@]})" "${avoid_mods[@]}") + local x="avoid_mods_$codename[@]" + local -a mods=("${avoid_mods[@]}" "${!x}") for x in "${mods[@]}"; do - [ "$1" = "$x" ] && return 1 + if [ "$1" = "$x" ]; then + [ "$2" = "show" ] && echo "excluding module $x" >&2 + return 1 + fi done return 0 } modconf_filter () { - while xread line; do - [ "$1" = "$line" ] && return 0 + while xread l; do + if [ "$1" = "$l" ]; then + [ "$2" = "show" ] && echo "including module $l" >&2 + return 0 + fi done < modules.conf return 1 } @@ -78,6 +85,10 @@ mod_filter () { fi } +mod_filter_show () { + mod_filter "$1" show +} + map_fs_modules () { local filterfn="$1" percatfns="$2" permodfns="$3" for x in $mod_dir/*; do @@ -806,6 +817,7 @@ echo "Please wait, this takes a few seconds..." >&2 parse_dir=control-modules.parse map_fs_modules ':' 'genmodctl_new_cat' 'genmodctl_new_mod' >> control-modules parse_mod_control +map_modules 'mod_filter_show' '' '' (echo "# -*- mode:debian-control -*-"; echo; \ map_modules ':' 'genmodctl_cat' 'genmodctl_mod' \ ) > control-modules.gen From 1edf94b5d9624aa4d28b3c6a21d2ef15f54b0c1c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 14:43:26 +0000 Subject: [PATCH 408/630] debian: add progress output to bootstrap --- debian/bootstrap.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 947388e632..acb63dcd67 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -814,31 +814,42 @@ echo "Bootstrapping debian/ for ${codename}" >&2 echo >&2 echo "Please wait, this takes a few seconds..." >&2 +echo "Adding any new modules to control-modules..." >&2 parse_dir=control-modules.parse map_fs_modules ':' 'genmodctl_new_cat' 'genmodctl_new_mod' >> control-modules +echo "Parsing control-modules..." >&2 parse_mod_control +echo "Displaying includes/excludes..." >&2 map_modules 'mod_filter_show' '' '' +echo "Generating control-modules.gen as sanity check..." >&2 (echo "# -*- mode:debian-control -*-"; echo; \ map_modules ':' 'genmodctl_cat' 'genmodctl_mod' \ ) > control-modules.gen -print_edit_warning > modules_.conf +echo "Accumulating build dependencies from modules..." >&2 map_modules 'mod_filter' '' 'accumulate_build_depends' +echo "Generating debian/..." >&2 > control (print_edit_warning; print_source_control; print_core_control) >> control +echo "Generating debian/ (music)..." >&2 for r in 8000 16000 32000 48000; do genmusic $r; done +echo "Generating debian/ (sounds)..." >&2 for x in 'en/us/callie'; do for r in 8000 16000 32000 48000; do gensound $r $x done done +echo "Generating debian/ (conf)..." >&2 (echo "### conf"; echo) >> control map_confs 'genconf' +echo "Generating debian/ (modules)..." >&2 (echo "### modules"; echo) >> control +print_edit_warning > modules_.conf map_modules "mod_filter" \ "gencontrol_per_cat genmodules_per_cat" \ "gencontrol_per_mod geninstall_per_mod genoverrides_per_mod genmodules_per_mod" +echo "Generating additional lintian overrides..." >&2 grep -e '^Package:' control | while xread l; do m="${l#*: }" f=$m.lintian-overrides @@ -851,4 +862,5 @@ f=freeswitch.lintian-overrides [ -s $f ] || print_edit_warning >> $f print_gpl_openssl_override "freeswitch" >> $f +echo "Done bootstrapping debian/" >&2 touch .stamp-bootstrap From 024e5fdefd9bbcc9e2abe6abc170b428399ac392 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 07:41:10 -0500 Subject: [PATCH 409/630] FS-4196 --resolve --- src/include/switch_ivr.h | 9 + src/mod/event_handlers/mod_json_cdr/Makefile | 23 - .../mod_json_cdr/mod_json_cdr.c | 435 +----------------- src/switch_ivr.c | 254 ++++++++++ 4 files changed, 270 insertions(+), 451 deletions(-) diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index ef5155512c..9d3d5f2ea5 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -41,6 +41,7 @@ #define SWITCH_IVR_H #include +#include "switch_json.h" SWITCH_BEGIN_EXTERN_C struct switch_unicast_conninfo { switch_core_session_t *session; @@ -82,6 +83,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_activate_unicast(switch_core_session_ char *local_ip, switch_port_t local_port, char *remote_ip, switch_port_t remote_port, char *transport, char *flags); +/*! + \brief Generate an JSON CDR report. + \param session the session to get the data from. + \param json_cdr pointer to the json object + \return SWITCH_STATUS_SUCCESS if successful + \note on success the json object must be freed +*/ +SWITCH_DECLARE(switch_status_t) switch_ivr_generate_json_cdr(switch_core_session_t *session, cJSON **json_cdr, switch_bool_t urlencode); /*! \brief Generate an XML CDR report. diff --git a/src/mod/event_handlers/mod_json_cdr/Makefile b/src/mod/event_handlers/mod_json_cdr/Makefile index 0620c7df63..c9dfa5399e 100644 --- a/src/mod/event_handlers/mod_json_cdr/Makefile +++ b/src/mod/event_handlers/mod_json_cdr/Makefile @@ -1,27 +1,4 @@ -json-c=json-c-0.9 BASE=../../../.. - -JSON_DIR=$(switch_srcdir)/libs/$(json-c) -JSON_BUILDDIR=$(switch_builddir)/libs/$(json-c) - -JSONLA=$(JSON_BUILDDIR)/libjson.la - -LOCAL_CFLAGS=-I$(JSON_DIR) -LOCAL_LIBADD=$(JSONLA) - include $(BASE)/build/modmake.rules -$(JSON_DIR): - $(GETLIB) $(json-c).tar.gz - -$(JSON_BUILDDIR)/Makefile: $(JSON_DIR) - mkdir -p $(JSON_BUILDDIR) - cd $(JSON_BUILDDIR) && $(DEFAULT_VARS) $(JSON_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(JSON_DIR) CPPFLAGS= LDFLAGS= - $(TOUCH_TARGET) - -$(JSONLA): $(JSON_BUILDDIR)/Makefile - cd $(JSON_BUILDDIR) && $(MAKE) - $(TOUCH_TARGET) - - diff --git a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c index 92a51c65cb..36626461a5 100644 --- a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c +++ b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c @@ -33,7 +33,6 @@ #include #include #include -#include #define MAX_URLS 20 #define MAX_ERR_DIRS 20 @@ -181,432 +180,11 @@ static switch_status_t set_json_cdr_log_dirs() return status; } -#define json_object_safe_new_string(str) json_object_new_string(str ? str : "") -#define JSON_ENSURE_SUCCESS(obj) if (is_error(obj)) { return; } -static void set_json_profile_data(struct json_object *json, switch_caller_profile_t *caller_profile) -{ - struct json_object *param = NULL; - - param = json_object_safe_new_string((char *)caller_profile->username); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "username", param); - - param = json_object_safe_new_string((char *)caller_profile->dialplan); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "dialplan", param); - - param = json_object_safe_new_string((char *)caller_profile->caller_id_name); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "caller_id_name", param); - - param = json_object_safe_new_string((char *)caller_profile->ani); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "ani", param); - - param = json_object_safe_new_string((char *)caller_profile->aniii); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "aniii", param); - - param = json_object_safe_new_string((char *)caller_profile->caller_id_number); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "caller_id_number", param); - - param = json_object_safe_new_string((char *)caller_profile->network_addr); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "network_addr", param); - - param = json_object_safe_new_string((char *)caller_profile->rdnis); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "rdnis", param); - - param = json_object_safe_new_string(caller_profile->destination_number); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "destination_number", param); - - param = json_object_safe_new_string(caller_profile->uuid); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "uuid", param); - - param = json_object_safe_new_string((char *)caller_profile->source); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "source", param); - - param = json_object_safe_new_string((char *)caller_profile->context); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "context", param); - - param = json_object_safe_new_string(caller_profile->chan_name); - JSON_ENSURE_SUCCESS(param); - json_object_object_add(json, "chan_name", param); - -} - -static void set_json_chan_vars(struct json_object *json, switch_channel_t *channel) -{ - struct json_object *variable = NULL; - switch_event_header_t *hi = switch_channel_variable_first(channel); - - if (!hi) - return; - - for (; hi; hi = hi->next) { - if (!zstr(hi->name) && !zstr(hi->value)) { - char *data = hi->value; - if (globals.encode_values == ENCODING_DEFAULT) { - switch_size_t dlen = strlen(hi->value) * 3; - - if ((data = malloc(dlen))) { - memset(data, 0, dlen); - switch_url_encode(hi->value, data, dlen); - } - } - - variable = json_object_safe_new_string(data); - if (!is_error(variable)) { - json_object_object_add(json, hi->name, variable); - } - - if (data != hi->value) { - switch_safe_free(data); - } - } - } - switch_channel_variable_last(channel); -} - - - -static switch_status_t generate_json_cdr(switch_core_session_t *session, struct json_object **json_cdr) -{ - - struct json_object *cdr = json_object_new_object(); - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_caller_profile_t *caller_profile; - struct json_object *variables, *j_main_cp, *j_caller_profile, *j_caller_extension, *j_times, *time_tag, - *j_application, *j_callflow, *j_inner_extension, *j_apps, *j_o, *j_channel_data, *j_field; - switch_app_log_t *app_log; - char tmp[512], *f; - - if (is_error(cdr)) { - return SWITCH_STATUS_FALSE; - } - - j_channel_data = json_object_new_object(); - if (is_error(j_channel_data)) { - goto error; - } - json_object_object_add(cdr, "channel_data", j_channel_data); - - - j_field = json_object_safe_new_string((char *) switch_channel_state_name(switch_channel_get_state(channel))); - json_object_object_add(j_channel_data, "state", j_field); - - j_field = json_object_safe_new_string(switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound"); - - json_object_object_add(j_channel_data, "direction", j_field); - - - switch_snprintf(tmp, sizeof(tmp), "%d", switch_channel_get_state(channel)); - j_field = json_object_new_string((char *) tmp); - json_object_object_add(j_channel_data, "state_number", j_field); - - - if ((f = switch_channel_get_flag_string(channel))) { - j_field = json_object_safe_new_string((char *) f); - json_object_object_add(j_channel_data, "flags", j_field); - free(f); - } - - if ((f = switch_channel_get_cap_string(channel))) { - j_field = json_object_safe_new_string((char *) f); - json_object_object_add(j_channel_data, "caps", j_field); - free(f); - } - - - variables = json_object_new_object(); - json_object_object_add(cdr, "variables", variables); - - if (is_error(variables)) { - goto error; - } - - set_json_chan_vars(variables, channel); - - - if ((app_log = switch_core_session_get_app_log(session))) { - switch_app_log_t *ap; - - j_apps = json_object_new_object(); - - if (is_error(j_apps)) { - goto error; - } - - json_object_object_add(cdr, "app_log", j_apps); - - for (ap = app_log; ap; ap = ap->next) { - j_application = json_object_new_object(); - - if (is_error(j_application)) { - goto error; - } - - json_object_object_add(j_application, "app_name", json_object_safe_new_string(ap->app)); - json_object_object_add(j_application, "app_data", json_object_safe_new_string(ap->arg)); - - json_object_object_add(j_apps, "application", j_application); - } - } - - - caller_profile = switch_channel_get_caller_profile(channel); - - while (caller_profile) { - - j_callflow = json_object_new_object(); - - if (is_error(j_callflow)) { - goto error; - } - - json_object_object_add(cdr, "callflow", j_callflow); - - if (!zstr(caller_profile->dialplan)) { - json_object_object_add(j_callflow, "dialplan", json_object_safe_new_string((char *)caller_profile->dialplan)); - } - - if (!zstr(caller_profile->profile_index)) { - json_object_object_add(j_callflow, "profile_index", json_object_safe_new_string((char *)caller_profile->profile_index)); - } - - if (caller_profile->caller_extension) { - switch_caller_application_t *ap; - - j_caller_extension = json_object_new_object(); - - if (is_error(j_caller_extension)) { - goto error; - } - - json_object_object_add(j_callflow, "extension", j_caller_extension); - - json_object_object_add(j_caller_extension, "name", json_object_safe_new_string(caller_profile->caller_extension->extension_name)); - json_object_object_add(j_caller_extension, "number", json_object_safe_new_string(caller_profile->caller_extension->extension_number)); - - if (caller_profile->caller_extension->current_application) { - json_object_object_add(j_caller_extension, "current_app", json_object_safe_new_string(caller_profile->caller_extension->current_application->application_name)); - } - - for (ap = caller_profile->caller_extension->applications; ap; ap = ap->next) { - j_application = json_object_new_object(); - - if (is_error(j_application)) { - goto error; - } - - - json_object_object_add(j_caller_extension, "application", j_application); - - if (ap == caller_profile->caller_extension->current_application) { - json_object_object_add(j_application, "last_executed", json_object_new_string("true")); - } - json_object_object_add(j_application, "app_name", json_object_safe_new_string(ap->application_name)); - json_object_object_add(j_application, "app_data", json_object_safe_new_string(switch_str_nil(ap->application_data))); - } - - if (caller_profile->caller_extension->children) { - switch_caller_profile_t *cp = NULL; - for (cp = caller_profile->caller_extension->children; cp; cp = cp->next) { - - if (!cp->caller_extension) { - continue; - } - - j_inner_extension = json_object_new_object(); - if (is_error(j_inner_extension)) { - goto error; - } - - json_object_object_add(j_caller_extension, "sub_extensions", j_inner_extension); - - - j_caller_extension = json_object_new_object(); - if (is_error(j_caller_extension)) { - goto error; - } - - json_object_object_add(j_inner_extension, "extension", j_caller_extension); - - json_object_object_add(j_caller_extension, "name", json_object_safe_new_string(cp->caller_extension->extension_name)); - json_object_object_add(j_caller_extension, "number", json_object_safe_new_string(cp->caller_extension->extension_number)); - - json_object_object_add(j_caller_extension, "dialplan", json_object_safe_new_string((char *)cp->dialplan)); - - if (cp->caller_extension->current_application) { - json_object_object_add(j_caller_extension, "current_app", json_object_safe_new_string(cp->caller_extension->current_application->application_name)); - } - - for (ap = cp->caller_extension->applications; ap; ap = ap->next) { - j_application = json_object_new_object(); - - if (is_error(j_application)) { - goto error; - } - json_object_object_add(j_caller_extension, "application", j_application); - - if (ap == cp->caller_extension->current_application) { - json_object_object_add(j_application, "last_executed", json_object_new_string("true")); - } - json_object_object_add(j_application, "app_name", json_object_safe_new_string(ap->application_name)); - json_object_object_add(j_application, "app_data", json_object_safe_new_string(switch_str_nil(ap->application_data))); - } - } - } - } - - j_main_cp = json_object_new_object(); - if (is_error(j_main_cp)) { - goto error; - } - - json_object_object_add(j_callflow, "caller_profile", j_main_cp); - - set_json_profile_data(j_main_cp, caller_profile); - - if (caller_profile->originator_caller_profile) { - switch_caller_profile_t *cp = NULL; - - j_o = json_object_new_object(); - if (is_error(j_o)) { - goto error; - } - - json_object_object_add(j_main_cp, "originator", j_o); - - for (cp = caller_profile->originator_caller_profile; cp; cp = cp->next) { - j_caller_profile = json_object_new_object(); - if (is_error(j_caller_profile)) { - goto error; - } - - json_object_object_add(j_o, "originator_caller_profile", j_caller_profile); - - set_json_profile_data(j_caller_profile, cp); - } - } - - if (caller_profile->originatee_caller_profile) { - switch_caller_profile_t *cp = NULL; - - j_o = json_object_new_object(); - if (is_error(j_o)) { - goto error; - } - - json_object_object_add(j_main_cp, "originatee", j_o); - - for (cp = caller_profile->originatee_caller_profile; cp; cp = cp->next) { - - j_caller_profile = json_object_new_object(); - if (is_error(j_caller_profile)) { - goto error; - } - - json_object_object_add(j_o, "originatee_caller_profile", j_caller_profile); - set_json_profile_data(j_caller_profile, cp); - } - } - - if (caller_profile->times) { - - j_times = json_object_new_object(); - if (is_error(j_times)) { - goto error; - } - - json_object_object_add(j_callflow, "times", j_times); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->created); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "created_time", time_tag); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->profile_created); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "profile_created_time", time_tag); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->progress); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "progress_time", time_tag); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->progress_media); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "progress_media_time", time_tag); - - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->answered); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "answered_time", time_tag); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->hungup); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "hangup_time", time_tag); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->resurrected); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "resurrect_time", time_tag); - - switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->transferred); - time_tag = json_object_new_string(tmp); - if (is_error(time_tag)) { - goto error; - } - json_object_object_add(j_times, "transfer_time", time_tag); - - } - - caller_profile = caller_profile->next; - } - - *json_cdr = cdr; - - return SWITCH_STATUS_SUCCESS; - - error: - - if (cdr) { - json_object_put(cdr); - } - - return SWITCH_STATUS_FALSE; -} - static switch_status_t my_on_reporting(switch_core_session_t *session) { - struct json_object *json_cdr = NULL; - const char *json_text = NULL; + cJSON *json_cdr = NULL; + char *json_text = NULL; char *path = NULL; char *curl_json_text = NULL; const char *logdir = NULL; @@ -637,12 +215,12 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) a_prefix = "a_"; - if (generate_json_cdr(session, &json_cdr) != SWITCH_STATUS_SUCCESS) { + if (switch_ivr_generate_json_cdr(session, &json_cdr, globals.encode_values == ENCODING_DEFAULT) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Generating Data!\n"); return SWITCH_STATUS_FALSE; } - json_text = json_object_to_json_string(json_cdr); + json_text = cJSON_PrintUnformatted(json_cdr); if (!json_text) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n"); @@ -705,6 +283,7 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) switch_b64_encode((unsigned char *) json_text, need_bytes / 3, (unsigned char *) json_text_escaped, need_bytes); } + switch_safe_free(json_text); json_text = json_text_escaped; if (!(curl_json_text = switch_mprintf("cdr=%s", json_text))) { @@ -861,8 +440,8 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) switch_safe_free(curl_json_text); } - json_object_put(json_cdr); - switch_safe_free(json_text_escaped); + cJSON_Delete(json_cdr); + switch_safe_free(json_text); return status; } diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 432bb9edc6..7a24eff193 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -2472,6 +2472,260 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_generate_xml_cdr(switch_core_session_ return SWITCH_STATUS_FALSE; } +static void switch_ivr_set_json_profile_data(cJSON *json, switch_caller_profile_t *caller_profile) +{ + cJSON_AddItemToObject(json, "username", cJSON_CreateString((char *)caller_profile->username)); + cJSON_AddItemToObject(json, "dialplan", cJSON_CreateString((char *)caller_profile->dialplan)); + cJSON_AddItemToObject(json, "caller_id_name", cJSON_CreateString((char *)caller_profile->caller_id_name)); + cJSON_AddItemToObject(json, "ani", cJSON_CreateString((char *)caller_profile->ani)); + cJSON_AddItemToObject(json, "aniii", cJSON_CreateString((char *)caller_profile->aniii)); + cJSON_AddItemToObject(json, "caller_id_number", cJSON_CreateString((char *)caller_profile->caller_id_number)); + cJSON_AddItemToObject(json, "network_addr", cJSON_CreateString((char *)caller_profile->network_addr)); + cJSON_AddItemToObject(json, "rdnis", cJSON_CreateString((char *)caller_profile->rdnis)); + cJSON_AddItemToObject(json, "destination_number", cJSON_CreateString(caller_profile->destination_number)); + cJSON_AddItemToObject(json, "uuid", cJSON_CreateString(caller_profile->uuid)); + cJSON_AddItemToObject(json, "source", cJSON_CreateString((char *)caller_profile->source)); + cJSON_AddItemToObject(json, "context", cJSON_CreateString((char *)caller_profile->context)); + cJSON_AddItemToObject(json, "chan_name", cJSON_CreateString(caller_profile->chan_name)); +} + +static void switch_ivr_set_json_chan_vars(cJSON *json, switch_channel_t *channel, switch_bool_t urlencode) +{ + switch_event_header_t *hi = switch_channel_variable_first(channel); + + if (!hi) + return; + + for (; hi; hi = hi->next) { + if (!zstr(hi->name) && !zstr(hi->value)) { + char *data = hi->value; + if (urlencode) { + switch_size_t dlen = strlen(hi->value) * 3; + + if ((data = malloc(dlen))) { + memset(data, 0, dlen); + switch_url_encode(hi->value, data, dlen); + } + } + + cJSON_AddItemToObject(json, hi->name, cJSON_CreateString(data)); + + if (data != hi->value) { + switch_safe_free(data); + } + } + } + switch_channel_variable_last(channel); +} + + + +SWITCH_DECLARE(switch_status_t) switch_ivr_generate_json_cdr(switch_core_session_t *session, cJSON **json_cdr, switch_bool_t urlencode) +{ + cJSON *cdr = cJSON_CreateObject(); + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_caller_profile_t *caller_profile; + cJSON *variables, *j_main_cp, *j_caller_profile, *j_caller_extension, *j_times, + *j_application, *j_callflow, *j_inner_extension, *j_apps, *j_o, *j_channel_data; + switch_app_log_t *app_log; + char tmp[512], *f; + + j_channel_data = cJSON_CreateObject(); + + cJSON_AddItemToObject(cdr, "channel_data", j_channel_data); + + cJSON_AddItemToObject(j_channel_data, "state", cJSON_CreateString((char *) switch_channel_state_name(switch_channel_get_state(channel)))); + cJSON_AddItemToObject(j_channel_data, "direction", cJSON_CreateString(switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND ? "outbound" : "inbound")); + + switch_snprintf(tmp, sizeof(tmp), "%d", switch_channel_get_state(channel)); + cJSON_AddItemToObject(j_channel_data, "state_number", cJSON_CreateString((char *) tmp)); + + if ((f = switch_channel_get_flag_string(channel))) { + cJSON_AddItemToObject(j_channel_data, "flags", cJSON_CreateString((char *) f)); + free(f); + } + + if ((f = switch_channel_get_cap_string(channel))) { + cJSON_AddItemToObject(j_channel_data, "caps", cJSON_CreateString((char *) f)); + free(f); + } + + variables = cJSON_CreateObject(); + cJSON_AddItemToObject(cdr, "variables", variables); + + switch_ivr_set_json_chan_vars(variables, channel, urlencode); + + + if ((app_log = switch_core_session_get_app_log(session))) { + switch_app_log_t *ap; + + j_apps = cJSON_CreateObject(); + + cJSON_AddItemToObject(cdr, "app_log", j_apps); + + for (ap = app_log; ap; ap = ap->next) { + j_application = cJSON_CreateObject(); + + cJSON_AddItemToObject(j_application, "app_name", cJSON_CreateString(ap->app)); + cJSON_AddItemToObject(j_application, "app_data", cJSON_CreateString(ap->arg)); + + cJSON_AddItemToObject(j_apps, "application", j_application); + } + } + + + caller_profile = switch_channel_get_caller_profile(channel); + + while (caller_profile) { + + j_callflow = cJSON_CreateObject(); + + cJSON_AddItemToObject(cdr, "callflow", j_callflow); + + if (!zstr(caller_profile->dialplan)) { + cJSON_AddItemToObject(j_callflow, "dialplan", cJSON_CreateString((char *)caller_profile->dialplan)); + } + + if (!zstr(caller_profile->profile_index)) { + cJSON_AddItemToObject(j_callflow, "profile_index", cJSON_CreateString((char *)caller_profile->profile_index)); + } + + if (caller_profile->caller_extension) { + switch_caller_application_t *ap; + + j_caller_extension = cJSON_CreateObject(); + + cJSON_AddItemToObject(j_callflow, "extension", j_caller_extension); + + cJSON_AddItemToObject(j_caller_extension, "name", cJSON_CreateString(caller_profile->caller_extension->extension_name)); + cJSON_AddItemToObject(j_caller_extension, "number", cJSON_CreateString(caller_profile->caller_extension->extension_number)); + + if (caller_profile->caller_extension->current_application) { + cJSON_AddItemToObject(j_caller_extension, "current_app", cJSON_CreateString(caller_profile->caller_extension->current_application->application_name)); + } + + for (ap = caller_profile->caller_extension->applications; ap; ap = ap->next) { + j_application = cJSON_CreateObject(); + + cJSON_AddItemToObject(j_caller_extension, "application", j_application); + + if (ap == caller_profile->caller_extension->current_application) { + cJSON_AddItemToObject(j_application, "last_executed", cJSON_CreateString("true")); + } + cJSON_AddItemToObject(j_application, "app_name", cJSON_CreateString(ap->application_name)); + cJSON_AddItemToObject(j_application, "app_data", cJSON_CreateString(switch_str_nil(ap->application_data))); + } + + if (caller_profile->caller_extension->children) { + switch_caller_profile_t *cp = NULL; + for (cp = caller_profile->caller_extension->children; cp; cp = cp->next) { + + if (!cp->caller_extension) { + continue; + } + + j_inner_extension = cJSON_CreateObject(); + cJSON_AddItemToObject(j_caller_extension, "sub_extensions", j_inner_extension); + + j_caller_extension = cJSON_CreateObject(); + cJSON_AddItemToObject(j_inner_extension, "extension", j_caller_extension); + + cJSON_AddItemToObject(j_caller_extension, "name", cJSON_CreateString(cp->caller_extension->extension_name)); + cJSON_AddItemToObject(j_caller_extension, "number", cJSON_CreateString(cp->caller_extension->extension_number)); + + cJSON_AddItemToObject(j_caller_extension, "dialplan", cJSON_CreateString((char *)cp->dialplan)); + + if (cp->caller_extension->current_application) { + cJSON_AddItemToObject(j_caller_extension, "current_app", cJSON_CreateString(cp->caller_extension->current_application->application_name)); + } + + for (ap = cp->caller_extension->applications; ap; ap = ap->next) { + j_application = cJSON_CreateObject(); + cJSON_AddItemToObject(j_caller_extension, "application", j_application); + + if (ap == cp->caller_extension->current_application) { + cJSON_AddItemToObject(j_application, "last_executed", cJSON_CreateString("true")); + } + cJSON_AddItemToObject(j_application, "app_name", cJSON_CreateString(ap->application_name)); + cJSON_AddItemToObject(j_application, "app_data", cJSON_CreateString(switch_str_nil(ap->application_data))); + } + } + } + } + + j_main_cp = cJSON_CreateObject(); + cJSON_AddItemToObject(j_callflow, "caller_profile", j_main_cp); + + switch_ivr_set_json_profile_data(j_main_cp, caller_profile); + + if (caller_profile->originator_caller_profile) { + switch_caller_profile_t *cp = NULL; + + j_o = cJSON_CreateObject(); + cJSON_AddItemToObject(j_main_cp, "originator", j_o); + + for (cp = caller_profile->originator_caller_profile; cp; cp = cp->next) { + j_caller_profile = cJSON_CreateObject(); + cJSON_AddItemToObject(j_o, "originator_caller_profile", j_caller_profile); + + switch_ivr_set_json_profile_data(j_caller_profile, cp); + } + } + + if (caller_profile->originatee_caller_profile) { + switch_caller_profile_t *cp = NULL; + + j_o = cJSON_CreateObject(); + cJSON_AddItemToObject(j_main_cp, "originatee", j_o); + + for (cp = caller_profile->originatee_caller_profile; cp; cp = cp->next) { + j_caller_profile = cJSON_CreateObject(); + cJSON_AddItemToObject(j_o, "originatee_caller_profile", j_caller_profile); + switch_ivr_set_json_profile_data(j_caller_profile, cp); + } + } + + if (caller_profile->times) { + + j_times = cJSON_CreateObject(); + cJSON_AddItemToObject(j_callflow, "times", j_times); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->created); + cJSON_AddItemToObject(j_times, "created_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->profile_created); + cJSON_AddItemToObject(j_times, "profile_created_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->progress); + cJSON_AddItemToObject(j_times, "progress_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->progress_media); + cJSON_AddItemToObject(j_times, "progress_media_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->answered); + cJSON_AddItemToObject(j_times, "answered_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->hungup); + cJSON_AddItemToObject(j_times, "hangup_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->resurrected); + cJSON_AddItemToObject(j_times, "resurrect_time", cJSON_CreateString(tmp)); + + switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->transferred); + cJSON_AddItemToObject(j_times, "transfer_time", cJSON_CreateString(tmp)); + + } + + caller_profile = caller_profile->next; + } + + *json_cdr = cdr; + + return SWITCH_STATUS_SUCCESS; + +} + + SWITCH_DECLARE(void) switch_ivr_park_session(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); From 1fc57f98285d866b1f305889f060ae38018cf57f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 07:43:01 -0500 Subject: [PATCH 410/630] FS-4198 --resolve --- src/include/switch_types.h | 1 + src/switch_ivr_bridge.c | 42 ++++++++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 5fda9c369e..edd630ffcb 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -131,6 +131,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_READ_RESULT_VARIABLE "read_result" #define SWITCH_ATT_XFER_RESULT_VARIABLE "att_xfer_result" #define SWITCH_COPY_XML_CDR_VARIABLE "copy_xml_cdr" +#define SWITCH_COPY_JSON_CDR_VARIABLE "copy_json_cdr" #define SWITCH_CURRENT_APPLICATION_VARIABLE "current_application" #define SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE "proto_specific_hangup_cause" #define SWITCH_TRANSFER_HISTORY_VARIABLE "transfer_history" diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 8025c9d01c..b2cd384098 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -1366,21 +1366,41 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_multi_threaded_bridge(switch_core_ses switch_channel_set_variable(caller_channel, SWITCH_BRIDGE_HANGUP_CAUSE_VARIABLE, switch_channel_cause2str(cause)); } - if (switch_channel_down_nosig(peer_channel) && switch_true(switch_channel_get_variable(peer_channel, SWITCH_COPY_XML_CDR_VARIABLE))) { - switch_xml_t cdr = NULL; - char *xml_text; + if (switch_channel_down_nosig(peer_channel)) { + switch_bool_t copy_xml_cdr = switch_true(switch_channel_get_variable(peer_channel, SWITCH_COPY_XML_CDR_VARIABLE)); + switch_bool_t copy_json_cdr = switch_true(switch_channel_get_variable(peer_channel, SWITCH_COPY_JSON_CDR_VARIABLE)); - switch_channel_wait_for_state(peer_channel, caller_channel, CS_DESTROY); + if (copy_xml_cdr || copy_json_cdr) { + char *cdr_text = NULL; - if (switch_ivr_generate_xml_cdr(peer_session, &cdr) == SWITCH_STATUS_SUCCESS) { - if ((xml_text = switch_xml_toxml(cdr, SWITCH_FALSE))) { - switch_channel_set_variable(caller_channel, "b_leg_cdr", xml_text); - switch_safe_free(xml_text); + switch_channel_wait_for_state(peer_channel, caller_channel, CS_DESTROY); + + if (copy_xml_cdr) { + switch_xml_t cdr = NULL; + + if (switch_ivr_generate_xml_cdr(peer_session, &cdr) == SWITCH_STATUS_SUCCESS) { + cdr_text = switch_xml_toxml(cdr, SWITCH_FALSE); + switch_xml_free(cdr); + } } - switch_xml_free(cdr); - } - } + if (copy_json_cdr) { + cJSON *cdr = NULL; + if (switch_ivr_generate_json_cdr(peer_session, &cdr, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { + cdr_text = cJSON_PrintUnformatted(cdr); + cJSON_Delete(cdr); + } + } + + if (cdr_text) { + switch_channel_set_variable(caller_channel, "b_leg_cdr", cdr_text); + switch_channel_set_variable_name_printf(caller_channel, cdr_text, "b_leg_cdr_%s", switch_core_session_get_uuid(peer_session)); + switch_safe_free(cdr_text); + } + } + + } + switch_core_session_rwunlock(peer_session); } else { From 8ca2ed72b8fec56c43ce0cfee4cd98c98e37383c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 13:58:44 +0000 Subject: [PATCH 411/630] ci/debian: synchronize codename flag --- debian/bootstrap.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 16848e3ddd..242e2cb9c4 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -792,9 +792,9 @@ genmodctl_mod () { } codename="sid" -while getopts "r:" o; do +while getopts "c:" o; do case "$o" in - r) codename="$OPTARG" ;; + c) codename="$OPTARG" ;; esac done shift $(($OPTIND-1)) From eb92a4d22127e068624f813def702a5f03af980a Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 8 May 2012 10:06:35 -0500 Subject: [PATCH 412/630] small tweak to not bomb on some version numbers --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index c6e112c4b9..a752497dc8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -411,7 +411,7 @@ $(switch_builddir)/quiet_libtool: $(switch_builddir)/libtool src/include/switch_version.h: src/include/switch_version.h.in .version $(libfreeswitch_la_SOURCES) $(library_include_HEADERS) @have_version=1 ; \ force=0 ; \ - grep "@SWITCH_VERSION_REVISION@" src/include/switch_version.h.in > /dev/null && have_version=0 ; \ + grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h.in > /dev/null && have_version=0 ; \ test ! -f src/include/switch_version.h || grep "@SWITCH_VERSION_REVISION@" src/include/switch_version.h > /dev/null && force=1 ; \ if test $$have_version = 1 ; then \ cat src/include/switch_version.h.in > src/include/switch_version.h ; \ From 2325dfbc4af50d59cdf3a9a21b8edf573eeac81c Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 8 May 2012 10:10:21 -0500 Subject: [PATCH 413/630] Missed a grep --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index a752497dc8..c3f3a2fc28 100644 --- a/Makefile.am +++ b/Makefile.am @@ -412,7 +412,7 @@ src/include/switch_version.h: src/include/switch_version.h.in .version $(libfree @have_version=1 ; \ force=0 ; \ grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h.in > /dev/null && have_version=0 ; \ - test ! -f src/include/switch_version.h || grep "@SWITCH_VERSION_REVISION@" src/include/switch_version.h > /dev/null && force=1 ; \ + test ! -f src/include/switch_version.h || grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h > /dev/null && force=1 ; \ if test $$have_version = 1 ; then \ cat src/include/switch_version.h.in > src/include/switch_version.h ; \ touch .version ; \ From 07204a1fb51fb949cd2be8592af17cf76060c02d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 08:50:33 -0500 Subject: [PATCH 414/630] add param:confirm-blind-transfer var:confirm_blind_transfer that makes blind transfers keep the transferrer on the line until its confirmed that the call was completed or brings it back to the bridge. blind_transfer_ack app can be executed in the dp by the transferee to indicate sucess or fail or a sucessful bridge will automatically trigger a success --- src/include/switch_types.h | 2 + .../applications/mod_dptools/mod_dptools.c | 30 +++++++++ src/mod/endpoints/mod_sofia/mod_sofia.c | 24 ++++++- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 67 +++++++++++++------ src/switch_core_session.c | 19 ++++++ src/switch_core_state_machine.c | 20 ++++++ 7 files changed, 143 insertions(+), 20 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index edd630ffcb..477aa3b877 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -887,6 +887,7 @@ typedef enum { SWITCH_MESSAGE_INDICATE_SIGNAL_DATA, SWITCH_MESSAGE_INDICATE_INFO, SWITCH_MESSAGE_INDICATE_AUDIO_DATA, + SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE, SWITCH_MESSAGE_INVALID } switch_core_session_message_types_t; @@ -1216,6 +1217,7 @@ typedef enum { CF_ZRTP_PASS, CF_CHANNEL_SWAP, CF_PICKUP, + CF_CONFIRM_BLIND_TRANSFER, /* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */ /* IF YOU ADD NEW ONES CHECK IF THEY SHOULD PERSIST OR ZERO THEM IN switch_core_session.c switch_core_session_request_xml() */ CF_FLAG_MAX diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 7005a701c5..8ae6e6f221 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -4462,6 +4462,34 @@ static char *file_string_supported_formats[SWITCH_MAX_CODECS] = { 0 }; /* /FILE STRING INTERFACE */ +SWITCH_STANDARD_APP(blind_transfer_ack_function) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_bool_t val = 0; + + if (data) { + val = switch_true((char *) val); + } + + if (switch_channel_test_flag(channel, CF_CONFIRM_BLIND_TRANSFER)) { + switch_core_session_t *other_session; + const char *uuid = switch_channel_get_variable(channel, "blind_transfer_uuid"); + + switch_channel_clear_flag(channel, CF_CONFIRM_BLIND_TRANSFER); + + if (!zstr(uuid) && (other_session = switch_core_session_locate(uuid))) { + switch_core_session_message_t msg = { 0 }; + msg.message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; + msg.from = __FILE__; + msg.numeric_arg = val; + switch_core_session_receive_message(other_session, &msg); + switch_core_session_rwunlock(other_session); + } + } +} + + + #define SPEAK_DESC "Speak text to a channel via the tts interface" #define DISPLACE_DESC "Displace audio from a file to the channels input" @@ -4541,6 +4569,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) SWITCH_ADD_API(api_interface, "strftime", "strftime", strftime_api_function, ""); SWITCH_ADD_API(api_interface, "presence", "presence", presence_api_function, PRESENCE_USAGE); + SWITCH_ADD_APP(app_interface, "blind_transfer_ack", "", "", blind_transfer_ack_function, "[true|false]", SAF_NONE); + SWITCH_ADD_APP(app_interface, "bind_digit_action", "bind a key sequence or regex to an action", "bind a key sequence or regex to an action", bind_digit_action_function, BIND_DIGIT_ACTION_USAGE, SAF_SUPPORT_NOMEDIA); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index a71dc4c714..620030164c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1653,6 +1653,28 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } } goto end; + case SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE: + { + const char *event = switch_channel_get_variable(channel, "sip_blind_transfer_event"); + const char *uuid = switch_channel_get_variable(channel, "blind_transfer_uuid"); + char *xdest; + + if (event && uuid) { + nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag;version=2.0"), + NUTAG_SUBSTATE(nua_substate_terminated), + SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), + SIPTAG_PAYLOAD_STR(msg->numeric_arg ? "SIP/2.0 200 OK\r\n" : "SIP/2.0 403 Forbidden\r\n"), + SIPTAG_EVENT_STR(event), TAG_END()); + + + if (!msg->numeric_arg) { + xdest = switch_core_session_sprintf(session, "intercept:%s", uuid); + switch_ivr_session_transfer(session, xdest, "inline", NULL); + } + } + + } + goto end; case SWITCH_MESSAGE_INDICATE_UNBRIDGE: if (switch_rtp_ready(tech_pvt->rtp_session)) { @@ -5343,7 +5365,6 @@ static switch_status_t list_profile_gateway(const char *line, const char *cursor return status; } - SWITCH_STANDARD_APP(sofia_sla_function) { private_object_t *tech_pvt; @@ -5502,6 +5523,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) SWITCH_ADD_APP(app_interface, "sofia_sla", "private sofia sla function", "private sofia sla function", sofia_sla_function, "", SAF_NONE); + SWITCH_ADD_API(api_interface, "sofia", "Sofia Controls", sofia_function, " "); SWITCH_ADD_API(api_interface, "sofia_gateway_data", "Get data from a sofia gateway", sofia_gateway_data_function, " [ivar|ovar|var] "); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index b66b29fb44..2da82ac0c2 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -264,6 +264,7 @@ typedef enum { PFLAG_PRESENCE_MAP, PFLAG_OPTIONS_RESPOND_503_ON_BUSY, PFLAG_PRESENCE_DISABLE_EARLY, + PFLAG_CONFIRM_BLIND_TRANSFER, /* No new flags below this line */ PFLAG_MAX } PFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 26815b6f5e..f87e8581b0 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -3105,6 +3105,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_LOG_AUTH_FAIL); } + } else if (!strcasecmp(var, "confirm-blind-transfer")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER); + } else { + sofia_clear_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER); + } } else if (!strcasecmp(var, "presence-proto-lookup")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_PRESENCE_MAP); @@ -3892,6 +3898,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_LOG_AUTH_FAIL); } + } else if (!strcasecmp(var, "confirm-blind-transfer")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER); + } else { + sofia_clear_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER); + } } else if (!strcasecmp(var, "presence-proto-lookup")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_PRESENCE_MAP); @@ -7093,37 +7105,54 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t if (exten) { switch_channel_t *channel = switch_core_session_get_channel(session); const char *br; + switch_core_session_t *b_session; - if ((br = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { - switch_core_session_t *b_session; + if ((br = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (b_session = switch_core_session_locate(br))) { - if ((b_session = switch_core_session_locate(br))) { - switch_channel_t *b_channel = switch_core_session_get_channel(b_session); - switch_channel_set_variable(channel, "transfer_fallback_extension", from->a_user); - if (!zstr(full_ref_by)) { - switch_channel_set_variable(b_channel, SOFIA_SIP_HEADER_PREFIX "Referred-By", full_ref_by); - } - if (!zstr(full_ref_to)) { - switch_channel_set_variable(b_channel, SOFIA_REFER_TO_VARIABLE, full_ref_to); - } + const char *var; + switch_channel_t *b_channel = switch_core_session_get_channel(b_session); - if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer"))) { - switch_core_media_bug_transfer_recordings(session, b_session); - } + switch_channel_set_variable(channel, "transfer_fallback_extension", from->a_user); + if (!zstr(full_ref_by)) { + switch_channel_set_variable(b_channel, SOFIA_SIP_HEADER_PREFIX "Referred-By", full_ref_by); + } - switch_ivr_session_transfer(b_session, exten, NULL, NULL); - switch_core_session_rwunlock(b_session); + if (!zstr(full_ref_to)) { + switch_channel_set_variable(b_channel, SOFIA_REFER_TO_VARIABLE, full_ref_to); + } + + if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer"))) { + switch_core_media_bug_transfer_recordings(session, b_session); } switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "BLIND_TRANSFER"); - nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag;version=2.0"), - NUTAG_SUBSTATE(nua_substate_terminated),SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK\r\n"), SIPTAG_EVENT_STR(etmp), TAG_END()); + + if (((var = switch_channel_get_variable(channel, "confirm_blind_transfer")) && switch_true(var)) || + sofia_test_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER)) { + switch_channel_set_state_flag(b_channel, CF_CONFIRM_BLIND_TRANSFER); + switch_channel_set_variable(channel, "sip_blind_transfer_event", etmp); + switch_channel_set_variable(b_channel, "blind_transfer_uuid", switch_core_session_get_uuid(session)); + switch_channel_set_variable(channel, "blind_transfer_uuid", switch_core_session_get_uuid(b_session)); + + switch_channel_set_variable(channel, "park_timeout", "600:blind_transfer"); + switch_channel_set_state(channel, CS_PARK); + } else { + nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag;version=2.0"), + NUTAG_SUBSTATE(nua_substate_terminated), + SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), + SIPTAG_PAYLOAD_STR("SIP/2.0 200 OK\r\n"), SIPTAG_EVENT_STR(etmp), TAG_END()); + } + + switch_ivr_session_transfer(b_session, exten, NULL, NULL); + switch_core_session_rwunlock(b_session); } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot Blind Transfer 1 Legged calls\n"); switch_channel_set_variable(channel_a, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "ATTENDED_TRANSFER_ERROR"); nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag;version=2.0"), - NUTAG_SUBSTATE(nua_substate_terminated),SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden\r\n"), SIPTAG_EVENT_STR(etmp), TAG_END()); + NUTAG_SUBSTATE(nua_substate_terminated), + SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), + SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden\r\n"), SIPTAG_EVENT_STR(etmp), TAG_END()); } } diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 6551158522..56c6e0b3a4 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -640,6 +640,7 @@ static const char *message_names[] = { "SIGNAL_DATA", "INFO", "AUDIO_DATA", + "BLIND_TRANSFER_RESPONSE", "INVALID" }; @@ -722,6 +723,24 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_perform_receive_message(swit break; } } + + + if (message->message_id == SWITCH_MESSAGE_INDICATE_BRIDGE && + switch_channel_test_flag(session->channel, CF_CONFIRM_BLIND_TRANSFER)) { + switch_core_session_t *other_session; + const char *uuid = switch_channel_get_variable(session->channel, "blind_transfer_uuid"); + + switch_channel_clear_flag(session->channel, CF_CONFIRM_BLIND_TRANSFER); + + if (!zstr(uuid) && (other_session = switch_core_session_locate(uuid))) { + switch_core_session_message_t msg = { 0 }; + msg.message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; + msg.from = __FILE__; + msg.numeric_arg = 1; + switch_core_session_receive_message(other_session, &msg); + switch_core_session_rwunlock(other_session); + } + } } diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c index 7b2e900e7f..61fa9290e5 100644 --- a/src/switch_core_state_machine.c +++ b/src/switch_core_state_machine.c @@ -188,6 +188,7 @@ static void switch_core_standard_on_routing(switch_core_session_t *session) static void switch_core_standard_on_execute(switch_core_session_t *session) { switch_caller_extension_t *extension; + const char *uuid; switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s Standard EXECUTE\n", switch_channel_get_name(session->channel)); @@ -222,6 +223,25 @@ static void switch_core_standard_on_execute(switch_core_session_t *session) } + if (switch_channel_ready(session->channel) && switch_channel_get_state(session->channel) == CS_EXECUTE && + switch_channel_test_flag(session->channel, CF_CONFIRM_BLIND_TRANSFER) && + (uuid = switch_channel_get_variable(session->channel, "blind_transfer_uuid"))) { + switch_core_session_t *other_session; + + if ((other_session = switch_core_session_locate(uuid))) { + switch_core_session_message_t msg = { 0 }; + msg.message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; + msg.from = __FILE__; + msg.numeric_arg = 0; + switch_core_session_receive_message(other_session, &msg); + switch_core_session_rwunlock(other_session); + + switch_channel_set_variable(session->channel, "park_timeout", "10:blind_transfer"); + switch_channel_set_state(session->channel, CS_PARK); + switch_channel_clear_flag(session->channel, CF_CONFIRM_BLIND_TRANSFER); + } + } + if (switch_channel_ready(session->channel) && switch_channel_get_state(session->channel) == CS_EXECUTE) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "%s has executed the last dialplan instruction, hanging up.\n", switch_channel_get_name(session->channel)); From 1ecb6be00915107491f66f14298930317409e8e0 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 8 May 2012 11:04:01 -0500 Subject: [PATCH 415/630] release FreeSWITCH 1.2-rc2 --- configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index 7b76740d62..5dbe6d9e12 100644 --- a/configure.in +++ b/configure.in @@ -3,11 +3,11 @@ # Must change all of the below together # For a release, set revision for that tagged release as well and uncomment -AC_INIT([freeswitch], [1.2-rc1], BUG-REPORT-ADDRESS) +AC_INIT([freeswitch], [1.2-rc2], BUG-REPORT-ADDRESS) AC_SUBST(SWITCH_VERSION_MAJOR, [1]) AC_SUBST(SWITCH_VERSION_MINOR, [2]) AC_SUBST(SWITCH_VERSION_MICRO, [0]) -AC_SUBST(SWITCH_VERSION_REVISION, [-rc1]) +AC_SUBST(SWITCH_VERSION_REVISION, [-rc2]) AC_CONFIG_FILES([src/include/switch_version.h.in:src/include/switch_version.h.template]) AC_CONFIG_FILES([.version:.version.in]) From 53f1b51c1aa6a5391ac2ac97bdf780caf3907abc Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 15:53:45 +0000 Subject: [PATCH 416/630] ci: generalize version number handling a bit --- scripts/ci/common.sh | 59 ++++++++++++++++++++++++++++++------- scripts/ci/debsrcbuilder.sh | 4 +-- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index ef191676b3..25fd27a5e2 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -4,6 +4,8 @@ src_repo="$(pwd)" tmp_dir=${TMP_DIR:="/tmp"} +zgrep () { (echo "$2" | grep -e "$1" >/dev/null); } + parse_version () { local ver="$1" major="" minor="" micro="" rev="" local next=major @@ -26,38 +28,73 @@ parse_version () { eval $next='${tmp}${x}' fi done + # The major version should never be null + if [ -z "$major" ]; then + echo "WARNING: parse_version was called with '$1' which is missing a major version number" >&2 + fi + # If someone asks for the minor or micro specificially, they + # probably expect that it won't be null. Also, vX.Y should never be + # different from vX.Y.0 (that would be crazy), so we don't lose + # meaningful generality by setting minor or micro to zero on vX or + # vX.Y style versions. + minor="${minor:-0}" + micro="${micro:-0}" + # centos-style versions (don't mess with the argument given for now) + # TODO: what is the CentOS version number policy? local cmajor cminor cmicro crev cver - cmajor=${major:="0"} - cminor=${minor:="0"} - cmicro=${micro:="0"} + cmajor="${major:-0}" + cminor="${minor:-0}" + cmicro="${micro:-0}" crev="$(echo "$rev" | sed -e 's/[._~-]//')" cver="${cmajor}.${cminor}.${cmicro}" - if [ -n "${micro}" ] && echo "$micro" | grep '^\(alpha\|beta\|rc\)' >/dev/null; then - rev="~${micro}" + [ -n "$crev" ] && cver="${cver}.${crev}" + # fix up if the revision was passed in the minor or micro number + if zgrep '^\(alpha\|beta\|rc\)' "$minor"; then + rev="-${minor}" + minor="0" + micro="0" + ver="${major}${rev}" + fi + if zgrep '^\(alpha\|beta\|rc\)' "$micro"; then + rev="-${micro}" micro="0" ver="${major}.${minor}${rev}" fi + # git-style versions + local gmajor gminor gmicro grev gver gver="$(echo "$ver" | sed -e 's/[~_]/-/')" grev="$(echo "$rev" | sed -e 's/[~_]/-/')" gmajor="$major" gminor="$minor" gmicro="$micro" - [ -n "$crev" ] && cver="${cver}.${crev}" + # debian-style versions + local dmajor dminor dmicro drev dver + dver="$(echo "$ver" | sed -e 's/[-_]/~/')" + drev="$(echo "$rev" | sed -e 's/[-_]/~/')" + dmajor="$major" + dminor="$minor" + dmicro="$micro" + # return variables echo "ver='$ver'" echo "major='$major'" echo "minor='$minor'" echo "micro='$micro'" echo "rev='$rev'" - echo "cver='$cver'" - echo "cmajor='$cmajor'" - echo "cminor='$cminor'" - echo "cmicro='$cmicro'" - echo "crev='$crev'" echo "gver='$gver'" echo "gmajor='$gmajor'" echo "gminor='$gminor'" echo "gmicro='$gmicro'" echo "grev='$grev'" + echo "dver='$dver'" + echo "dmajor='$dmajor'" + echo "dminor='$dminor'" + echo "dmicro='$dmicro'" + echo "drev='$drev'" + echo "cver='$cver'" + echo "cmajor='$cmajor'" + echo "cminor='$cminor'" + echo "cmicro='$cmicro'" + echo "crev='$crev'" } set_fs_ver () { diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index d693777500..8b06ab4794 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -14,7 +14,7 @@ build="b${2-0}" distro="${3-unstable}" codename="${4-sid}" -fver="${ver}~${nightly}~${build}" +fver="${dver}~${nightly}~${build}" fname="freeswitch-$fver" orig="freeswitch_$fver.orig" ddir=$src_repo/debbuild @@ -23,7 +23,7 @@ bdir=$src_repo/debbuild/$fname mkdir -p $ddir git clone . $bdir cd $bdir -set_fs_ver "$ver" "$major" "$minor" "$micro" "$rev" +set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" cd libs getlib () { f="${1##*/}" From ee8caf78f198d8d32ccb989ec059867c8927c73b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 15:54:33 +0000 Subject: [PATCH 417/630] ci: be more consistent about the version in configure.in --- scripts/ci/src_tarball.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/src_tarball.sh b/scripts/ci/src_tarball.sh index 826b8a27b7..0cab5f5d58 100755 --- a/scripts/ci/src_tarball.sh +++ b/scripts/ci/src_tarball.sh @@ -21,7 +21,7 @@ mkdir -p $dst_dir cp -r . $dst_dir cd $dst_dir -set_fs_ver "$cver" "$cmajor" "$cminor" "$cmicro" "$crev" +set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" gnuize cd .. ls From 42dab8396651f5c82d6da40a1dc13781e8c3d53b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 16:35:08 +0000 Subject: [PATCH 418/630] ci: add automatic mechanism for determining next version number --- build/next-release.txt | 1 + scripts/ci/debsrcbuilder.sh | 6 +++++- scripts/tagscript.sh | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 build/next-release.txt diff --git a/build/next-release.txt b/build/next-release.txt new file mode 100644 index 0000000000..996f71d3b9 --- /dev/null +++ b/build/next-release.txt @@ -0,0 +1 @@ +1.2-rc3 diff --git a/scripts/ci/debsrcbuilder.sh b/scripts/ci/debsrcbuilder.sh index 8b06ab4794..e64093d120 100755 --- a/scripts/ci/debsrcbuilder.sh +++ b/scripts/ci/debsrcbuilder.sh @@ -7,7 +7,11 @@ sdir="." check_pwd check_input_ver_build $@ -eval $(parse_version "$1") +in_ver="$1" +if [ "$in_ver" = "auto" ]; then + in_ver="$(cat build/next-release.txt)" +fi +eval $(parse_version "$in_ver") datestamp="$(date +%Y%m%dT%H%M%SZ)" nightly="n${datestamp}" build="b${2-0}" diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 30222641a6..78253a10c5 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -114,6 +114,22 @@ if (ngrep '^Saved' "$ret"); then stash_saved=1 fi +echo "Determining next-release (release+1) version..." >&2 +if [ -n "$grev" ] && ngrep '[0-9]*$' "$grev"; then + rev_ver="$(echo "$grev" | sed -e 's/^[^0-9]*\([0-9]*\)$/\1/')" + next_rev="$((rev_ver+1))" + next_ver="${gver%%$rev_ver}${next_rev}" +elif [ -n "$grev" ]; then + next_ver="${gver}1" +elif ! [ "$gmicro" = "0" ]; then + next_ver="${gver%%$micro}$((micro+1))" +else + next_ver="${gmajor}.$((gminor+1))-rc1" +fi +echo "Setting next-release version ($next_ver)..." >&2 +echo "${next_ver}" > build/next-release.txt +git add build/next-release.txt + echo "Changing the version of configure.in..." >&2 set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" From c728efdbb987834f8d76dac51132d0a724380902 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 18:13:07 +0000 Subject: [PATCH 419/630] mod_posix_timer: comply with gcc -pedantic Thanks to Thierry Panthier for pointing this out. --- src/mod/timers/mod_posix_timer/mod_posix_timer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/timers/mod_posix_timer/mod_posix_timer.c b/src/mod/timers/mod_posix_timer/mod_posix_timer.c index 04d694b5f7..c170d8fa20 100644 --- a/src/mod/timers/mod_posix_timer/mod_posix_timer.c +++ b/src/mod/timers/mod_posix_timer/mod_posix_timer.c @@ -111,7 +111,9 @@ static void timer_signal_handler(int sig, siginfo_t *si, void *cu) if (val >= 0 && val <= MAX_ACTIVE_TIMERS) { uint8_t active_id = (uint8_t)val; /* notify runtime thread that timer identified by active_id has ticked */ - write(globals.timer_tick_pipe[1], &active_id, 1); + if (write(globals.timer_tick_pipe[1], &active_id, 1) == -1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing to pipe: %s\n", strerror(errno)); + } } } } From bb90d52df7cdda00668fc1706536d4347475e161 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 18:55:44 +0000 Subject: [PATCH 420/630] don't use bootstrap.sh -j anywhere but devel-bootstrap.sh We believe there may be a race condition in bootstrap.sh when run with -j. We know that running it without -j should be at least deterministic (whether or not correct), so we'll go with that in anticipation of releasing v1.2. --- debian/rules | 2 +- freeswitch.spec | 2 +- scripts/ci/common.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/rules b/debian/rules index 5581ffdacf..0cc293a346 100755 --- a/debian/rules +++ b/debian/rules @@ -47,7 +47,7 @@ override_dh_auto_clean: .stamp-bootstrap: @$(call show_vars) - ./bootstrap.sh -j + ./bootstrap.sh touch $@ .stamp-configure: .stamp-bootstrap diff --git a/freeswitch.spec b/freeswitch.spec index a56dd90035..470866ab2c 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -1433,7 +1433,7 @@ export ACLOCAL_FLAGS="-I /usr/share/aclocal" if test ! -f Makefile.in then - ./bootstrap.sh -j + ./bootstrap.sh fi %configure -C \ diff --git a/scripts/ci/common.sh b/scripts/ci/common.sh index 25fd27a5e2..3aa6bb3441 100755 --- a/scripts/ci/common.sh +++ b/scripts/ci/common.sh @@ -112,7 +112,7 @@ set_fs_ver () { } gnuize () { - ./bootstrap.sh -j + ./bootstrap.sh mv bootstrap.sh rebootstrap.sh rm -f docs/AUTHORS rm -f docs/COPYING From 9a802cd4d3e03102204f65d2642bd33693101dd6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 11:51:46 -0500 Subject: [PATCH 421/630] FS-4160 --- src/switch_ivr_bridge.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index b2cd384098..6a2cee0405 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -1491,21 +1491,26 @@ static void cleanup_proxy_mode_b(switch_core_session_t *session) static void cleanup_proxy_mode_a(switch_core_session_t *session) { switch_core_session_t *sbsession; - switch_channel_t *channel = switch_core_session_get_channel(session); - + int done = 0; if (switch_channel_test_flag(channel, CF_PROXY_MODE)) { - const char *sbv = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); - if (!zstr(sbv) && (sbsession = switch_core_session_locate(sbv))) { + if (switch_core_session_get_partner(session, &sbsession) == SWITCH_STATUS_SUCCESS) { switch_channel_t *sbchannel = switch_core_session_get_channel(sbsession); - /* Clear this now, otherwise will cause the one we're interested in to hang up too...*/ - switch_channel_set_variable(sbchannel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); - switch_channel_hangup(sbchannel, SWITCH_CAUSE_ATTENDED_TRANSFER); + + if (switch_channel_test_flag(sbchannel, CF_PROXY_MODE)) { + /* Clear this now, otherwise will cause the one we're interested in to hang up too...*/ + switch_channel_set_variable(sbchannel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); + switch_channel_hangup(sbchannel, SWITCH_CAUSE_ATTENDED_TRANSFER); + } else { + done = 1; + } switch_core_session_rwunlock(sbsession); } } + if (done) return; + switch_channel_set_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(channel, SWITCH_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(channel, SWITCH_BRIDGE_UUID_VARIABLE, NULL); From 33da6bf3b3d92193f7d363d6122db85ada3b1b18 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 8 May 2012 15:24:55 -0400 Subject: [PATCH 422/630] wait better --- bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bootstrap.sh b/bootstrap.sh index 0e0ac56fc4..d199a73226 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -457,6 +457,7 @@ bootstrap_libs() { ((libbootstrap ${i} ; bootstrap_libs_post ${i}) &) fi done + ${BGJOB} && wait } run() { From 8f8a9a8075b3f80e687c047b70b8edeab7c6e793 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 8 May 2012 15:28:48 -0400 Subject: [PATCH 423/630] wait better, you need to wait in the same function, so bging this one doesn't help --- bootstrap.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index d199a73226..b8f1dcd843 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -343,11 +343,7 @@ bootstrap_apr() { echo "Entering directory ${LIBDIR}/apr-util" cd ${LIBDIR}/apr-util - if ! ${BGJOB}; then - ./buildconf - else - ./buildconf & - fi + ./buildconf } bootstrap_libzrtp() { From 76c0201e8993c35ea05be5fda0196bd4fe785137 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 12:52:47 -0500 Subject: [PATCH 424/630] dtmf tweak --- src/mod/endpoints/mod_sofia/sofia_glue.c | 2 +- src/switch_rtp.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 6610895927..f787ac3cbb 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -3532,7 +3532,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f if (((val = switch_channel_get_variable(tech_pvt->channel, "rtp_digit_delay")))) { int delayi = atoi(val); if (delayi < 0) delayi = 0; - delay = (uint32_t) delay; + delay = (uint32_t) delayi; } diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 72d7a8e71c..d481a17d49 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -2300,6 +2300,7 @@ static void set_dtmf_delay(switch_rtp_t *rtp_session, uint32_t ms, uint32_t max_ if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_USE_TIMER)) { rtp_session->max_next_write_samplecount = rtp_session->timer.samplecount + max_upsamp; rtp_session->next_write_samplecount = rtp_session->timer.samplecount + upsamp; + rtp_session->last_write_ts += upsamp; } switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Queue digit delay of %dms\n", ms); @@ -2349,7 +2350,7 @@ static void do_2833(switch_rtp_t *rtp_session, switch_core_session_t *session) } } - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Send %s packet for [%c] ts=%u dur=%d/%d/%d seq=%d lw=%d\n", + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Send %s packet for [%c] ts=%u dur=%d/%d/%d seq=%d lw=%u\n", loops == 1 ? "middle" : "end", rtp_session->dtmf_data.out_digit, rtp_session->dtmf_data.timestamp_dtmf, rtp_session->dtmf_data.out_digit_sofar, @@ -4378,7 +4379,7 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session, rtp_session->write_msg.header.seq = htons(++rtp_session->seq); rtp_session->write_msg.header.ts = htonl(ts); rtp_session->write_msg.header.pt = payload; - rtp_session->write_msg.header.m = (m && !(rtp_session->rtp_bugs & RTP_BUG_NEVER_SEND_MARKER)) ? 1 : 0; + rtp_session->write_msg.header.m = m; memcpy(rtp_session->write_msg.body, data, datalen); bytes = rtp_header_len + datalen; From 89c590cda8f732820f899bb75d60549bafb21d6e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 19:40:43 +0000 Subject: [PATCH 425/630] bootstrap.sh: wait better Be more explicit about what we're waiting for, among other changes. This appears to fully correct the wait issues. --- bootstrap.sh | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index b8f1dcd843..5aaed673c5 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -438,10 +438,16 @@ bootstrap_libs_post() { } bootstrap_libs() { + local jobs="" for i in ${SUBDIRS}; do case "$i" in apr|fs|libzrtp) - ${BGJOB} && wait + if ${BGJOB}; then + for x in $jobs; do + wait $jobs + done + fi + jobs="" bootstrap_$i continue ;; @@ -450,10 +456,16 @@ bootstrap_libs() { if ! ${BGJOB}; then libbootstrap ${i} ; bootstrap_libs_post ${i} else - ((libbootstrap ${i} ; bootstrap_libs_post ${i}) &) + (libbootstrap ${i} ; bootstrap_libs_post ${i}) & + local x=$! + jobs="$jobs $x" fi done - ${BGJOB} && wait + if ${BGJOB}; then + for x in $jobs; do + wait $x + done + fi } run() { @@ -468,7 +480,6 @@ run() { check_libtoolize print_autotools_vers bootstrap_libs - ${BGJOB} && wait return 0 } From 9d341184672077c80fb6b06cc08fbced91ff9156 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 20:14:19 +0000 Subject: [PATCH 426/630] bootstrap.sh: wait more simply now that we've found the problem --- bootstrap.sh | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 5aaed673c5..5c9ab26f03 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -438,16 +438,10 @@ bootstrap_libs_post() { } bootstrap_libs() { - local jobs="" for i in ${SUBDIRS}; do case "$i" in apr|fs|libzrtp) - if ${BGJOB}; then - for x in $jobs; do - wait $jobs - done - fi - jobs="" + ${BGJOB} && wait bootstrap_$i continue ;; @@ -457,15 +451,9 @@ bootstrap_libs() { libbootstrap ${i} ; bootstrap_libs_post ${i} else (libbootstrap ${i} ; bootstrap_libs_post ${i}) & - local x=$! - jobs="$jobs $x" fi done - if ${BGJOB}; then - for x in $jobs; do - wait $x - done - fi + ${BGJOB} && wait } run() { From c985853cbffc641d790c9e2ed7b0c2876e852f5a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 8 May 2012 20:45:05 +0000 Subject: [PATCH 427/630] mod_posix_timer: we'll find a better way to comply with gcc -pedantic on lucid We shouldn't be logging in a signal handler. This reverts commit c728efdbb987834f8d76dac51132d0a724380902. --- src/mod/timers/mod_posix_timer/mod_posix_timer.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/mod/timers/mod_posix_timer/mod_posix_timer.c b/src/mod/timers/mod_posix_timer/mod_posix_timer.c index c170d8fa20..04d694b5f7 100644 --- a/src/mod/timers/mod_posix_timer/mod_posix_timer.c +++ b/src/mod/timers/mod_posix_timer/mod_posix_timer.c @@ -111,9 +111,7 @@ static void timer_signal_handler(int sig, siginfo_t *si, void *cu) if (val >= 0 && val <= MAX_ACTIVE_TIMERS) { uint8_t active_id = (uint8_t)val; /* notify runtime thread that timer identified by active_id has ticked */ - if (write(globals.timer_tick_pipe[1], &active_id, 1) == -1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing to pipe: %s\n", strerror(errno)); - } + write(globals.timer_tick_pipe[1], &active_id, 1); } } } From d82a38dfd655a29b3008bdac19048ced905d3852 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 19:25:14 -0500 Subject: [PATCH 428/630] fix missing close brace --- .../applications/mod_spandsp/mod_spandsp_modem.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_modem.c b/src/mod/applications/mod_spandsp/mod_spandsp_modem.c index e3f8afa89f..f1a1fdb7b0 100644 --- a/src/mod/applications/mod_spandsp/mod_spandsp_modem.c +++ b/src/mod/applications/mod_spandsp/mod_spandsp_modem.c @@ -230,13 +230,14 @@ switch_status_t modem_init(modem_t *modem, modem_control_handler_t control_handl #if USE_OPENPTY if (openpty(&modem->master, &modem->slave, NULL, NULL, NULL)) { - if (modem->master < 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Fatal error: failed to initialize pty\n"); - status = SWITCH_STATUS_FALSE; - goto end; - } + if (modem->master < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Fatal error: failed to initialize pty\n"); + status = SWITCH_STATUS_FALSE; + goto end; + } - modem->stty = ttyname(modem->slave); + modem->stty = ttyname(modem->slave); + } #else #if WIN32 modem->slot = 4+globals.NEXT_ID++; /* need work here we start at COM4 for now*/ From f106c18f51e03fd9acda72fed1141d6cd0e15b78 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 19:33:53 -0500 Subject: [PATCH 429/630] tweak to confirm blind transfer patch --- src/include/switch_ivr.h | 1 + .../applications/mod_dptools/mod_dptools.c | 17 +------------ src/switch_core_state_machine.c | 7 ++++-- src/switch_ivr.c | 25 +++++++++++++++++++ 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 9d3d5f2ea5..9299c584d9 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -970,6 +970,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_insert_file(switch_core_session_t *se SWITCH_DECLARE(switch_status_t) switch_ivr_create_message_reply(switch_event_t **reply, switch_event_t *message, const char *new_proto); SWITCH_DECLARE(char *) switch_ivr_check_presence_mapping(const char *exten_name, const char *domain_name); SWITCH_DECLARE(switch_status_t) switch_ivr_kill_uuid(const char *uuid, switch_call_cause_t cause); +SWITCH_DECLARE(switch_status_t) switch_ivr_blind_transfer_ack(switch_core_session_t *session, switch_bool_t success); /** @} */ diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 8ae6e6f221..b07f1a21ed 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -4464,28 +4464,13 @@ static char *file_string_supported_formats[SWITCH_MAX_CODECS] = { 0 }; SWITCH_STANDARD_APP(blind_transfer_ack_function) { - switch_channel_t *channel = switch_core_session_get_channel(session); switch_bool_t val = 0; if (data) { val = switch_true((char *) val); } - if (switch_channel_test_flag(channel, CF_CONFIRM_BLIND_TRANSFER)) { - switch_core_session_t *other_session; - const char *uuid = switch_channel_get_variable(channel, "blind_transfer_uuid"); - - switch_channel_clear_flag(channel, CF_CONFIRM_BLIND_TRANSFER); - - if (!zstr(uuid) && (other_session = switch_core_session_locate(uuid))) { - switch_core_session_message_t msg = { 0 }; - msg.message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; - msg.from = __FILE__; - msg.numeric_arg = val; - switch_core_session_receive_message(other_session, &msg); - switch_core_session_rwunlock(other_session); - } - } + switch_ivr_blind_transfer_ack(session, val); } diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c index 61fa9290e5..e567daa9fb 100644 --- a/src/switch_core_state_machine.c +++ b/src/switch_core_state_machine.c @@ -174,8 +174,11 @@ static void switch_core_standard_on_routing(switch_core_session_t *session) } if (!extension) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "No Route, Aborting\n"); - switch_channel_hangup(session->channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION); + + if (switch_ivr_blind_transfer_ack(session, SWITCH_FALSE) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "No Route, Aborting\n"); + switch_channel_hangup(session->channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION); + } } end: diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 7a24eff193..325a8083a2 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -3501,6 +3501,31 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_kill_uuid(const char *uuid, switch_ca } } +SWITCH_DECLARE(switch_status_t) switch_ivr_blind_transfer_ack(switch_core_session_t *session, switch_bool_t success) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + switch_status_t status = SWITCH_STATUS_FALSE; + + if (switch_channel_test_flag(channel, CF_CONFIRM_BLIND_TRANSFER)) { + switch_core_session_t *other_session; + const char *uuid = switch_channel_get_variable(channel, "blind_transfer_uuid"); + + switch_channel_clear_flag(channel, CF_CONFIRM_BLIND_TRANSFER); + + if (!zstr(uuid) && (other_session = switch_core_session_locate(uuid))) { + switch_core_session_message_t msg = { 0 }; + msg.message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; + msg.from = __FILE__; + msg.numeric_arg = success; + switch_core_session_receive_message(other_session, &msg); + switch_core_session_rwunlock(other_session); + status = SWITCH_STATUS_SUCCESS; + } + } + + return status; + +} /* For Emacs: * Local Variables: From 225eebc20dddf42d3e6cd0fc856e70c8b5446919 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 8 May 2012 19:44:39 -0500 Subject: [PATCH 430/630] take out 101 dialing --- src/mod/endpoints/mod_sofia/mod_sofia.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 620030164c..cf095386e5 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -91,10 +91,6 @@ static switch_status_t sofia_on_init(switch_core_session_t *session) sofia_set_flag(tech_pvt, TFLAG_RECOVERED); } - if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { - nua_respond(tech_pvt->nh, 101, "Dialing", TAG_END()); - } - if (sofia_test_flag(tech_pvt, TFLAG_OUTBOUND) || sofia_test_flag(tech_pvt, TFLAG_RECOVERING)) { const char *var; From 0165a813d70bbefc0aaa9ede9a55251f44c0f28f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 14:10:20 +0000 Subject: [PATCH 431/630] remove questionable idiom --- scripts/ci/extras/erlangbuilder.sh | 2 +- scripts/ci/get_extra_sources.sh | 2 +- scripts/ci/rpmbuilder.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/ci/extras/erlangbuilder.sh b/scripts/ci/extras/erlangbuilder.sh index dd6fdc6803..f944e987d4 100755 --- a/scripts/ci/extras/erlangbuilder.sh +++ b/scripts/ci/extras/erlangbuilder.sh @@ -13,7 +13,7 @@ if [ -z "$1" ]; then exit 1; fi -(mkdir -p rpmbuild && cd $_ && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SOURCES SPECS) +(mkdir -p rpmbuild && cd rpmbuild && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SOURCES SPECS) cd $src_repo rpmbuild --define "_topdir %(pwd)/rpmbuild" \ diff --git a/scripts/ci/get_extra_sources.sh b/scripts/ci/get_extra_sources.sh index c0827c68eb..a22281b477 100755 --- a/scripts/ci/get_extra_sources.sh +++ b/scripts/ci/get_extra_sources.sh @@ -8,7 +8,7 @@ if [ ! -d .git ]; then exit 1; fi -(mkdir -p rpmbuild && cd $_ && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SOURCES SPECS) +(mkdir -p rpmbuild && cd rpmbuild && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SOURCES SPECS) cd $src_repo/rpmbuild/SOURCES diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 78c4c3ca73..9842112d86 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -14,7 +14,7 @@ dst_name="freeswitch-$cmajor.$cminor.$cmicro" dst_parent="/tmp/" dst_dir="/tmp/$dst_name" -(mkdir -p rpmbuild && cd $_ && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SPECS) +(mkdir -p rpmbuild && cd rpmbuild && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SPECS) cd $src_repo From 56d3a866fc98d4ff1b5a6b049f2f4c95c42a45b3 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 14:14:15 +0000 Subject: [PATCH 432/630] ci: fixup rpmbuilder.sh --- scripts/ci/rpmbuilder.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 9842112d86..312902faf7 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -17,6 +17,7 @@ dst_dir="/tmp/$dst_name" (mkdir -p rpmbuild && cd rpmbuild && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SPECS) cd $src_repo +cp -a src_dist/* rpmbuild/SOURCES/ rpmbuild --define "VERSION_NUMBER $cver" \ --define "BUILD_NUMBER $build" \ From 4fbf8625edf107e1d6382c24c32266b9e215a0ba Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 9 May 2012 09:20:10 -0500 Subject: [PATCH 433/630] OPENZAP-183 --resolve --- libs/freetdm/src/ftdm_threadmutex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/freetdm/src/ftdm_threadmutex.c b/libs/freetdm/src/ftdm_threadmutex.c index 0b63f7c0ae..302cd32e64 100644 --- a/libs/freetdm/src/ftdm_threadmutex.c +++ b/libs/freetdm/src/ftdm_threadmutex.c @@ -401,7 +401,7 @@ FT_DECLARE(ftdm_status_t) ftdm_interrupt_wait(ftdm_interrupt_t *interrupt, int m if (interrupt->device != FTDM_INVALID_SOCKET) { num++; ints[1] = interrupt->device; - ftdm_log(FTDM_LOG_CRIT, "implement me! (Windows support for device_output_flags member!)\n", size); + ftdm_log(FTDM_LOG_CRIT, "implement me! (Windows support for device_output_flags member!)\n"); } res = WaitForMultipleObjects(num, ints, FALSE, ms >= 0 ? ms : INFINITE); switch (res) { From 849dd7376fa9602515581dbc0b339882fe0a0b1f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 14:23:03 +0000 Subject: [PATCH 434/630] ci: expect that jenkins might do this itself --- scripts/ci/rpmbuilder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/ci/rpmbuilder.sh b/scripts/ci/rpmbuilder.sh index 312902faf7..8d633d6d80 100755 --- a/scripts/ci/rpmbuilder.sh +++ b/scripts/ci/rpmbuilder.sh @@ -17,7 +17,7 @@ dst_dir="/tmp/$dst_name" (mkdir -p rpmbuild && cd rpmbuild && mkdir -p SOURCES BUILD BUILDROOT i386 x86_64 SPECS) cd $src_repo -cp -a src_dist/* rpmbuild/SOURCES/ +cp -a src_dist/* rpmbuild/SOURCES/ || true rpmbuild --define "VERSION_NUMBER $cver" \ --define "BUILD_NUMBER $build" \ From 2a4eb84e4d97dbbd51a7d78830f7c29f53596d1c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 May 2012 08:39:23 -0500 Subject: [PATCH 435/630] confirm_transfer tweak --- src/mod/applications/mod_dptools/mod_dptools.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index b07f1a21ed..7cf262acbe 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -3058,7 +3058,8 @@ SWITCH_STANDARD_APP(audio_bridge_function) } } } - if (!switch_channel_test_flag(caller_channel, CF_TRANSFER) && switch_channel_get_state(caller_channel) != CS_ROUTING) { + if (!switch_channel_test_flag(caller_channel, CF_TRANSFER) && !switch_channel_test_flag(caller_channel, CF_CONFIRM_BLIND_TRANSFER) && + switch_channel_get_state(caller_channel) != CS_ROUTING) { switch_channel_hangup(caller_channel, cause); } return; From 99bac0d05b4ddabe5f441f24285aee174c4036ef Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 May 2012 09:06:21 -0500 Subject: [PATCH 436/630] add video_refresh dp and uuid_video_refresh fsapi --- .../applications/mod_commands/mod_commands.c | 40 +++++++++++++++++++ .../applications/mod_dptools/mod_dptools.c | 13 ++++++ 2 files changed, 53 insertions(+) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index a812c8b994..470c7b02c9 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -3089,6 +3089,45 @@ SWITCH_STANDARD_API(uuid_send_info_function) } +#define VIDEO_REFRESH_SYNTAX "" +SWITCH_STANDARD_API(uuid_video_refresh_function) +{ + switch_status_t status = SWITCH_STATUS_FALSE; + char *mycmd = NULL, *argv[2] = { 0 }; + int argc = 0; + + if (!zstr(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + } + + if (argc < 1) { + stream->write_function(stream, "-USAGE: %s\n", VIDEO_REFRESH_SYNTAX); + } else { + switch_core_session_message_t msg = { 0 }; + switch_core_session_t *lsession = NULL; + + msg.message_id = SWITCH_MESSAGE_INDICATE_VIDEO_REFRESH_REQ; + msg.string_array_arg[2] = argv[1]; + msg.from = __FILE__; + + if ((lsession = switch_core_session_locate(argv[0]))) { + status = switch_core_session_receive_message(lsession, &msg); + switch_core_session_rwunlock(lsession); + } + } + + if (status == SWITCH_STATUS_SUCCESS) { + stream->write_function(stream, "+OK Success\n"); + } else { + stream->write_function(stream, "-ERR Operation Failed\n"); + } + + switch_safe_free(mycmd); + + return SWITCH_STATUS_SUCCESS; +} + + #define DEBUG_AUDIO_SYNTAX " " SWITCH_STANDARD_API(uuid_debug_audio_function) { @@ -5436,6 +5475,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load) SWITCH_ADD_API(commands_api_interface, "uuid_hold", "hold", uuid_hold_function, HOLD_SYNTAX); SWITCH_ADD_API(commands_api_interface, "uuid_kill", "Kill Channel", kill_function, KILL_SYNTAX); SWITCH_ADD_API(commands_api_interface, "uuid_send_info", "Send info to the endpoint", uuid_send_info_function, INFO_SYNTAX); + SWITCH_ADD_API(commands_api_interface, "uuid_video_refresh", "Send video refresh.", uuid_video_refresh_function, VIDEO_REFRESH_SYNTAX); SWITCH_ADD_API(commands_api_interface, "uuid_outgoing_answer", "Answer Outgoing Channel", outgoing_answer_function, OUTGOING_ANSWER_SYNTAX); SWITCH_ADD_API(commands_api_interface, "uuid_limit", "Increase limit resource", uuid_limit_function, LIMIT_SYNTAX); SWITCH_ADD_API(commands_api_interface, "uuid_limit_release", "Release limit resource", uuid_limit_release_function, LIMIT_RELEASE_SYNTAX); diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 7cf262acbe..0e441dc731 100755 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -1185,6 +1185,17 @@ SWITCH_STANDARD_APP(redirect_function) switch_core_session_receive_message(session, &msg); } +SWITCH_STANDARD_APP(video_refresh_function) +{ + switch_core_session_message_t msg = { 0 }; + + /* Tell the channel to refresh video */ + msg.from = __FILE__; + msg.string_arg = data; + msg.message_id = SWITCH_MESSAGE_INDICATE_VIDEO_REFRESH_REQ; + switch_core_session_receive_message(session, &msg); +} + SWITCH_STANDARD_APP(send_info_function) { switch_core_session_message_t msg = { 0 }; @@ -4633,6 +4644,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load) SWITCH_ADD_APP(app_interface, "ivr", "Run an ivr menu", "Run an ivr menu.", ivr_application_function, "", SAF_NONE); SWITCH_ADD_APP(app_interface, "redirect", "Send session redirect", "Send a redirect message to a session.", redirect_function, "", SAF_SUPPORT_NOMEDIA); + SWITCH_ADD_APP(app_interface, "video_refresh", "Send video refresh.", "Send video refresh.", video_refresh_function, "", + SAF_SUPPORT_NOMEDIA); SWITCH_ADD_APP(app_interface, "send_info", "Send info", "Send info", send_info_function, "", SAF_SUPPORT_NOMEDIA); SWITCH_ADD_APP(app_interface, "jitterbuffer", "Send session jitterbuffer", "Send a jitterbuffer message to a session.", jitterbuffer_function, "", SAF_SUPPORT_NOMEDIA); From 13498d59f0b80daf96a0e104477cbe8399f1d968 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 17:13:21 +0000 Subject: [PATCH 437/630] debian: spidermonkey doesn't build correctly on wheezy either --- debian/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index acb63dcd67..4c40b7eaed 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -32,13 +32,13 @@ avoid_mods=( formats/mod_shout languages/mod_java languages/mod_managed + languages/mod_spidermonkey languages/mod_yaml sdk/autotools xml_int/mod_xml_ldap ) avoid_mods_squeeze=( formats/mod_vlc - languages/mod_spidermonkey ) err () { From 5a059ef6307f4d3864d1468f01c759a7b3edc8ea Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 May 2012 12:11:13 -0500 Subject: [PATCH 438/630] add autocomplete for uuid_video_refresh --- src/mod/applications/mod_commands/mod_commands.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 470c7b02c9..0a9cac196c 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -5640,6 +5640,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load) switch_console_set_complete("add uuid_simplify ::console::list_uuid"); switch_console_set_complete("add uuid_transfer ::console::list_uuid"); switch_console_set_complete("add uuid_dual_transfer ::console::list_uuid"); + switch_console_set_complete("add uuid_video_refresh ::console::list_uuid"); switch_console_set_complete("add version"); switch_console_set_complete("add uuid_warning ::console::list_uuid"); switch_console_set_complete("add ..."); From 6bb33d7683bfd8d91e0fa8dfb5a1f033cc3f48f4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 May 2012 14:05:03 -0500 Subject: [PATCH 439/630] add libscgi (SCGI Client) --- libs/libscgi/Makefile | 32 ++ libs/libscgi/protocol.txt | 101 +++++++ libs/libscgi/src/include/scgi.h | 210 +++++++++++++ libs/libscgi/src/scgi.c | 520 ++++++++++++++++++++++++++++++++ libs/libscgi/testclient.c | 39 +++ 5 files changed, 902 insertions(+) create mode 100644 libs/libscgi/Makefile create mode 100644 libs/libscgi/protocol.txt create mode 100644 libs/libscgi/src/include/scgi.h create mode 100644 libs/libscgi/src/scgi.c create mode 100644 libs/libscgi/testclient.c diff --git a/libs/libscgi/Makefile b/libs/libscgi/Makefile new file mode 100644 index 0000000000..fb59cb7848 --- /dev/null +++ b/libs/libscgi/Makefile @@ -0,0 +1,32 @@ +PWD=$(shell pwd) +INCS=-I$(PWD)/src/include +DEBUG=-g -ggdb +BASE_FLAGS=$(INCS) $(DEBUG) -fPIC +PICKY=-O2 +CFLAGS=$(BASE_FLAGS) $(PICKY) +CXXFLAGS=$(BASE_FLAGS) +MYLIB=libscgi.a +LIBS= +LDFLAGS=-L. +OBJS=src/scgi.o +SRC=src/scgi.c +HEADERS=src/include/scgi.h +SOLINK=-shared -Xlinker -x + + +all: $(MYLIB) testclient + +$(MYLIB): $(OBJS) $(HEADERS) $(SRC) + ar rcs $(MYLIB) $(OBJS) + ranlib $(MYLIB) + +%.o: %.c $(HEADERS) + $(CC) $(CC_CFLAGS) $(CFLAGS) -c $< -o $@ + +testclient: $(MYLIB) testclient.c + $(CC) $(CC_CFLAGS) $(CFLAGS) testclient.c -o testclient -lscgi $(LDFLAGS) $(LIBS) + + + +clean: + rm -f *.o src/*.o libscgi.a *~ src/*~ src/include/*~ testclient diff --git a/libs/libscgi/protocol.txt b/libs/libscgi/protocol.txt new file mode 100644 index 0000000000..34c128005f --- /dev/null +++ b/libs/libscgi/protocol.txt @@ -0,0 +1,101 @@ +SCGI: A Simple Common Gateway Interface alternative +Neil Schemenauer +2008-06-23 + +1. Introduction + + The SCGI protocol is a replacement for the Common Gateway Interface + (CGI) protocol. It is a standard for applications to interface with + HTTP servers. It is similar to FastCGI but is designed to be easier + to implement. + + In this document, a string of 8-bit bytes may be written in two + different forms: as a series of hexadecimal numbers between angle + brackets, or as a sequence of ASCII characters between double quotes. + For example, <68 65 6c 6c 6f 20 77 6f 72 6c 64 21> is a string of + length 12; it is the same as the string "hello world!". Note that + these notations are part of this document, not part of the protocol. + + +2. Protocol + + The client connects to a SCGI server over a reliable stream protocol + allowing transmission of 8-bit bytes. The client begins by sending a + request. See section 3 for the format of the request. When the SCGI + server sees the end of the request it sends back a response and closes + the connection. The format of the response is not specified by this + protocol. + + +3. Request Format + + A request consists of a number of headers and a body. The format of + the headers is: + + headers ::= header* + header ::= name NUL value NUL + name ::= notnull+ + value ::= notnull* + notnull ::= <01> | <02> | <03> | ... | + NUL = <00> + + Duplicate names are not allowed in the headers. The first header + must have the name "CONTENT_LENGTH" and a value that is a nonempty + sequence of ASCII digits giving the of the body length in decimal. + The "CONTENT_LENGTH" header must always be present, even if its + value is "0". There must also always be a header with the name + "SCGI" and a value of "1". In order to facilitate the transition + from CGI, standard CGI environment variables should be provided as + SCGI headers. + + The headers are sent encoded as a netstring. Netstring encoding is + explained in section 4. The body is sent following the headers and + its length is specified by the "CONTENT_LENGTH" header. + + +4. Netstrings + + Any string of 8-bit bytes may be encoded as [len]":"[string]",". Here + [string] is the string and [len] is a nonempty sequence of ASCII + digits giving the length of [string] in decimal. The ASCII digits are + <30> for 0, <31> for 1, and so on up through <39> for 9. Extra zeros + at the front of [len] are prohibited: [len] begins with <30> exactly + when [string] is empty. + + For example, the string "hello world!" is encoded as <31 32 3a 68 65 + 6c 6c 6f 20 77 6f 72 6c 64 21 2c>, i.e., "12:hello world!,". The empty + string is encoded as "0:,". + + [len]":"[string]"," is called a netstring. [string] is called the + interpretation of the netstring. + + +5. Example + + The web server (a SCGI client) opens a connection and sends the + concatenation of the following strings: + + "70:" + "CONTENT_LENGTH" <00> "27" <00> + "SCGI" <00> "1" <00> + "REQUEST_METHOD" <00> "POST" <00> + "REQUEST_URI" <00> "/deepthought" <00> + "," + "What is the answer to life?" + + The SCGI server sends the following response: + + "Status: 200 OK" <0d 0a> + "Content-Type: text/plain" <0d 0a> + "" <0d 0a> + "42" + + The SCGI server closes the connection. + + +6. Copyright + + This document has been placed in the public domain. + + +/* vim: set ai tw=74 et sw=4 sts=4: */ diff --git a/libs/libscgi/src/include/scgi.h b/libs/libscgi/src/include/scgi.h new file mode 100644 index 0000000000..ea8d30ade4 --- /dev/null +++ b/libs/libscgi/src/include/scgi.h @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2012-2013, Anthony Minessale II + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER + * 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. + */ + +#ifndef _SCGI_H_ +#define _SCGI_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* defined(__cplusplus) */ +#if EMACS_BUG +} +#endif + +#ifdef _MSC_VER +#define FD_SETSIZE 8192 +#define SCGI_USE_SELECT +#else +#define SCGI_USE_POLL +#endif + + + +#ifdef SCGI_USE_POLL +#include +#endif + +#ifdef WIN32 +#include +#include +typedef SOCKET scgi_socket_t; +typedef unsigned __int64 uint64_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int8 uint8_t; +typedef __int64 int64_t; +typedef __int32 int32_t; +typedef __int16 int16_t; +typedef __int8 int8_t; +typedef intptr_t scgi_ssize_t; +typedef int scgi_filehandle_t; +#define SCGI_SOCK_INVALID INVALID_SOCKET +#define strerror_r(num, buf, size) strerror_s(buf, size, num) +#if defined(SCGI_DECLARE_STATIC) +#define SCGI_DECLARE(type) type __stdcall +#define SCGI_DECLARE_NONSTD(type) type __cdecl +#define SCGI_DECLARE_DATA +#elif defined(SCGI_EXPORTS) +#define SCGI_DECLARE(type) __declspec(dllexport) type __stdcall +#define SCGI_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl +#define SCGI_DECLARE_DATA __declspec(dllexport) +#else +#define SCGI_DECLARE(type) __declspec(dllimport) type __stdcall +#define SCGI_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl +#define SCGI_DECLARE_DATA __declspec(dllimport) +#endif +#else +#define SCGI_DECLARE(type) type +#define SCGI_DECLARE_NONSTD(type) type +#define SCGI_DECLARE_DATA +#include +#include +#include +#include +#include +#include +#include +#define SCGI_SOCK_INVALID -1 +typedef int scgi_socket_t; +typedef ssize_t scgi_ssize_t; +typedef int scgi_filehandle_t; +#endif + + +#include +#ifndef WIN32 +#include +#endif + +#include +#include +#include +#include +#ifndef WIN32 +#include +#include +#include +#include +#include +#include +#endif + +#ifdef HAVE_STRINGS_H +#include +#endif +#include + +#if (_MSC_VER >= 1400) // VC8+ +#define scgi_assert(expr) assert(expr);__analysis_assume( expr ) +#endif + +#ifndef scgi_assert +#define scgi_assert(_x) assert(_x) +#endif + +#define scgi_safe_free(_x) if (_x) free(_x); _x = NULL +#define scgi_strlen_zero(s) (!s || *(s) == '\0') +#define scgi_strlen_zero_buf(s) (*(s) == '\0') +#define end_of(_s) *(*_s == '\0' ? _s : _s + strlen(_s) - 1) + + +typedef enum { + SCGI_POLL_READ = (1 << 0), + SCGI_POLL_WRITE = (1 << 1), + SCGI_POLL_ERROR = (1 << 2) +} scgi_poll_t; + + +typedef struct scgi_param_s { + char *name; + char *value; + struct scgi_param_s *next; +} scgi_param_t; + +typedef struct scgi_handle_s { + scgi_param_t *params; + char *body; + struct sockaddr_in sockaddr; + struct hostent hostent; + char hostbuf[256]; + scgi_socket_t sock; + char err[256]; + int errnum; + int connected; + struct sockaddr_in addr; + int destroyed; +} scgi_handle_t; + + +typedef int16_t scgi_port_t; +typedef size_t scgi_size_t; + +typedef enum { + SCGI_SUCCESS, + SCGI_FAIL, + SCGI_BREAK, + SCGI_DISCONNECTED, + SCGI_GENERR +} scgi_status_t; + + + +SCGI_DECLARE(scgi_status_t) scgi_connect(scgi_handle_t *handle, const char *host, scgi_port_t port, uint32_t timeout); +SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle); +SCGI_DECLARE(int) scgi_wait_sock(scgi_socket_t sock, uint32_t ms, scgi_poll_t flags); +SCGI_DECLARE(ssize_t) scgi_recv(scgi_handle_t *handle, unsigned char *buf, size_t buflen); +SCGI_DECLARE(scgi_status_t) scgi_send_request(scgi_handle_t *handle); +SCGI_DECLARE(scgi_status_t) scgi_add_param(scgi_handle_t *handle, const char *name, const char *value); +SCGI_DECLARE(scgi_status_t) scgi_add_body(scgi_handle_t *handle, const char *value); +SCGI_DECLARE(size_t) scgi_build_message(scgi_handle_t *handle, char **buffer); +SCGI_DECLARE(scgi_status_t) scgi_destroy_params(scgi_handle_t *handle); + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + + +#endif /* defined(_SCGI_H_) */ + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c new file mode 100644 index 0000000000..eeec39a07b --- /dev/null +++ b/libs/libscgi/src/scgi.c @@ -0,0 +1,520 @@ +/* + * Copyright (c) 2012-2013, Anthony Minessale II + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER + * 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. + */ + +#include + +#ifndef WIN32 +#define closesocket(x) shutdown(x, 2); close(x) +#include +#include +#else +#pragma warning (disable:6386) +/* These warnings need to be ignored warning in sdk header */ +#include +#include +#ifndef errno +#define errno WSAGetLastError() +#endif +#ifndef EINTR +#define EINTR WSAEINTR +#endif +#pragma warning (default:6386) +#endif + +static scgi_status_t scgi_push_param(scgi_handle_t *handle, const char *name, const char *value); + +static int sock_setup(scgi_handle_t *handle) +{ + + if (handle->sock == SCGI_SOCK_INVALID) { + return SCGI_FAIL; + } + +#ifdef WIN32 + { + BOOL bOptVal = TRUE; + int bOptLen = sizeof(BOOL); + setsockopt(handle->sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&bOptVal, bOptLen); + } +#else + { + int x = 1; + setsockopt(handle->sock, IPPROTO_TCP, TCP_NODELAY, &x, sizeof(x)); + } +#endif + + return SCGI_SUCCESS; +} + + +SCGI_DECLARE(size_t) scgi_build_message(scgi_handle_t *handle, char **bufferp) +{ + scgi_param_t *pp; + size_t len = 0, plen = 0, ctlen = 0; + char *s, *bp; + char *buffer = NULL; + char tmp[128] = ""; + + scgi_push_param(handle, "SCGI", "1"); + + if (handle->body) { + ctlen = strlen(handle->body); + } + + snprintf(tmp, sizeof(tmp), "%ld", ctlen); + + scgi_push_param(handle, "CONTENT_LENGTH", tmp); + + + for(pp = handle->params; pp; pp = pp->next) { + plen += (strlen(pp->name) + strlen(pp->value) + 2); + } + + snprintf(tmp, sizeof(tmp), "%ld", plen + ctlen); + + len = plen + ctlen + strlen(tmp) + 2; + + buffer = malloc(len); + memset(buffer, 0, len); + + snprintf(buffer, len, "%ld:", plen); + bp = buffer + strlen(buffer); + + for(pp = handle->params; pp; pp = pp->next) { + + for (s = pp->name; s && *s; s++) { + *bp++ = *s; + } + + *bp++ = '\0'; + + for (s = pp->value; s && *s; s++) { + *bp++ = *s; + } + + *bp++ = '\0'; + } + + *bp++ = ','; + + if (handle->body) { + for (s = handle->body; s && *s; s++) { + *bp++ = *s; + } + } + + *bufferp = buffer; + + return len; +} + +SCGI_DECLARE(scgi_status_t) scgi_destroy_params(scgi_handle_t *handle) +{ + scgi_param_t *param, *pp; + + pp = handle->params; + + while(pp) { + param = pp; + pp = pp->next; + + free(param->name); + free(param->value); + free(param); + } + + handle->params = NULL; + + return SCGI_SUCCESS; +} + +SCGI_DECLARE(scgi_status_t) scgi_add_body(scgi_handle_t *handle, const char *value) +{ + handle->body = strdup(value); + + return SCGI_SUCCESS; +} + +SCGI_DECLARE(scgi_status_t) scgi_add_param(scgi_handle_t *handle, const char *name, const char *value) +{ + scgi_param_t *param, *pp; + + for(pp = handle->params; pp && pp->next; pp = pp->next) { + if (!strcasecmp(pp->name, name)) { + return SCGI_FAIL; + } + } + + param = malloc(sizeof(*param)); + memset(param, 0, sizeof(*param)); + + param->name = strdup(name); + param->value = strdup(value); + + if (!pp) { + handle->params = param; + } else { + pp->next = param; + } + + return SCGI_SUCCESS; +} + +static scgi_status_t scgi_push_param(scgi_handle_t *handle, const char *name, const char *value) +{ + scgi_param_t *param; + + param = malloc(sizeof(*param)); + memset(param, 0, sizeof(*param)); + + param->name = strdup(name); + param->value = strdup(value); + + param->next = handle->params; + handle->params = param; + + return SCGI_SUCCESS; +} + +SCGI_DECLARE(scgi_status_t) scgi_send_request(scgi_handle_t *handle) +{ + scgi_status_t status; + char *buffer = NULL; + size_t bytes = 0; + ssize_t sent = 0; + + if (handle->connected != 1) { + return SCGI_FAIL; + } + + bytes = scgi_build_message(handle, &buffer); + sent = send(handle->sock, buffer, bytes, 0); + + if (sent <= 0) { + handle->connected = -1; + } + + scgi_safe_free(buffer); + + return status; +} + + +SCGI_DECLARE(ssize_t) scgi_recv(scgi_handle_t *handle, unsigned char *buf, size_t buflen) +{ + ssize_t recvd; + + if (handle->connected != 1) { + return -1; + } + + recvd = recv(handle->sock, buf, buflen, 0); + + if (recvd == 0) { + handle->connected = -1; + } + + + return recvd; +} + +SCGI_DECLARE(scgi_status_t) scgi_connect(scgi_handle_t *handle, const char *host, scgi_port_t port, uint32_t timeout) +{ + int rval = 0; + + struct addrinfo hints = { 0 }, *result; +#ifndef WIN32 + int fd_flags = 0; +#else + WORD wVersionRequested = MAKEWORD(2, 0); + WSADATA wsaData; + int err = WSAStartup(wVersionRequested, &wsaData); + if (err != 0) { + snprintf(handle->err, sizeof(handle->err), "WSAStartup Error"); + return SCGI_FAIL; + } + +#endif + + handle->sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); + + if (handle->sock == SCGI_SOCK_INVALID) { + snprintf(handle->err, sizeof(handle->err), "Socket Error"); + return SCGI_FAIL; + } + + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + if (getaddrinfo(host, NULL, &hints, &result)) { + strncpy(handle->err, "Cannot resolve host", sizeof(handle->err)); + goto fail; + } + + memcpy(&handle->sockaddr, result->ai_addr, sizeof(handle->sockaddr)); + handle->sockaddr.sin_family = AF_INET; + handle->sockaddr.sin_port = htons(port); + freeaddrinfo(result); + + if (timeout) { +#ifdef WIN32 + u_long arg = 1; + if (ioctlsocket(handle->sock, FIONBIO, &arg) == SOCKET_ERROR) { + snprintf(handle->err, sizeof(handle->err), "Socket Connection Error"); + goto fail; + } +#else + fd_flags = fcntl(handle->sock, F_GETFL, 0); + if (fcntl(handle->sock, F_SETFL, fd_flags | O_NONBLOCK)) { + snprintf(handle->err, sizeof(handle->err), "Socket Connection Error"); + goto fail; + } +#endif + } + + rval = connect(handle->sock, (struct sockaddr*)&handle->sockaddr, sizeof(handle->sockaddr)); + + if (timeout) { + int r; + + + r = scgi_wait_sock(handle->sock, timeout, SCGI_POLL_WRITE); + + if (r <= 0) { + snprintf(handle->err, sizeof(handle->err), "Connection timed out"); + goto fail; + } + + if (!(r & SCGI_POLL_WRITE)) { + snprintf(handle->err, sizeof(handle->err), "Connection timed out"); + goto fail; + } + +#ifdef WIN32 + { + u_long arg = 0; + if (ioctlsocket(handle->sock, FIONBIO, &arg) == SOCKET_ERROR) { + snprintf(handle->err, sizeof(handle->err), "Socket Connection Error"); + goto fail; + } + } +#else + fcntl(handle->sock, F_SETFL, fd_flags); +#endif + rval = 0; + } + + result = NULL; + + if (rval) { + snprintf(handle->err, sizeof(handle->err), "Socket Connection Error"); + goto fail; + } + + sock_setup(handle); + + handle->connected = 1; + + + return SCGI_SUCCESS; + + fail: + + handle->connected = 0; + scgi_disconnect(handle); + + return SCGI_FAIL; +} + + + +SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle) +{ + scgi_status_t status = SCGI_FAIL; + + if (handle->destroyed) { + return SCGI_FAIL; + } + + handle->destroyed = 1; + handle->connected = 0; + + scgi_destroy_params(handle); + scgi_safe_free(handle->body); + + if (handle->sock != SCGI_SOCK_INVALID) { + closesocket(handle->sock); + handle->sock = SCGI_SOCK_INVALID; + status = SCGI_SUCCESS; + } + + return status; +} + + +/* USE WSAPoll on vista or higher */ +#ifdef SCGI_USE_WSAPOLL +SCGI_DECLARE(int) scgi_wait_sock(scgi_socket_t sock, uint32_t ms, scgi_poll_t flags) +{ +} +#endif + + +#ifdef SCGI_USE_SELECT +#ifdef WIN32 +#pragma warning( push ) +#pragma warning( disable : 6262 ) /* warning C6262: Function uses '98348' bytes of stack: exceeds /analyze:stacksize'16384'. Consider moving some data to heap */ +#endif +SCGI_DECLARE(int) scgi_wait_sock(scgi_socket_t sock, uint32_t ms, scgi_poll_t flags) +{ + int s = 0, r = 0; + fd_set rfds; + fd_set wfds; + fd_set efds; + struct timeval tv; + + FD_ZERO(&rfds); + FD_ZERO(&wfds); + FD_ZERO(&efds); + +#ifndef WIN32 + /* Wouldn't you rather know?? */ + assert(sock <= FD_SETSIZE); +#endif + + if ((flags & SCGI_POLL_READ)) { + +#ifdef WIN32 +#pragma warning( push ) +#pragma warning( disable : 4127 ) + FD_SET(sock, &rfds); +#pragma warning( pop ) +#else + FD_SET(sock, &rfds); +#endif + } + + if ((flags & SCGI_POLL_WRITE)) { + +#ifdef WIN32 +#pragma warning( push ) +#pragma warning( disable : 4127 ) + FD_SET(sock, &wfds); +#pragma warning( pop ) +#else + FD_SET(sock, &wfds); +#endif + } + + if ((flags & SCGI_POLL_ERROR)) { + +#ifdef WIN32 +#pragma warning( push ) +#pragma warning( disable : 4127 ) + FD_SET(sock, &efds); +#pragma warning( pop ) +#else + FD_SET(sock, &efds); +#endif + } + + tv.tv_sec = ms / 1000; + tv.tv_usec = (ms % 1000) * ms; + + s = select(sock + 1, (flags & SCGI_POLL_READ) ? &rfds : NULL, (flags & SCGI_POLL_WRITE) ? &wfds : NULL, (flags & SCGI_POLL_ERROR) ? &efds : NULL, &tv); + + if (s < 0) { + r = s; + } else if (s > 0) { + if ((flags & SCGI_POLL_READ) && FD_ISSET(sock, &rfds)) { + r |= SCGI_POLL_READ; + } + + if ((flags & SCGI_POLL_WRITE) && FD_ISSET(sock, &wfds)) { + r |= SCGI_POLL_WRITE; + } + + if ((flags & SCGI_POLL_ERROR) && FD_ISSET(sock, &efds)) { + r |= SCGI_POLL_ERROR; + } + } + + return r; + +} +#ifdef WIN32 +#pragma warning( pop ) +#endif +#endif + +#ifdef SCGI_USE_POLL +SCGI_DECLARE(int) scgi_wait_sock(scgi_socket_t sock, uint32_t ms, scgi_poll_t flags) +{ + struct pollfd pfds[2] = { { 0 } }; + int s = 0, r = 0; + + pfds[0].fd = sock; + + if ((flags & SCGI_POLL_READ)) { + pfds[0].events |= POLLIN; + } + + if ((flags & SCGI_POLL_WRITE)) { + pfds[0].events |= POLLOUT; + } + + if ((flags & SCGI_POLL_ERROR)) { + pfds[0].events |= POLLERR; + } + + s = poll(pfds, 1, ms); + + if (s < 0) { + r = s; + } else if (s > 0) { + if ((pfds[0].revents & POLLIN)) { + r |= SCGI_POLL_READ; + } + if ((pfds[0].revents & POLLOUT)) { + r |= SCGI_POLL_WRITE; + } + if ((pfds[0].revents & POLLERR)) { + r |= SCGI_POLL_ERROR; + } + } + + return r; + +} +#endif diff --git a/libs/libscgi/testclient.c b/libs/libscgi/testclient.c new file mode 100644 index 0000000000..c43fe237c4 --- /dev/null +++ b/libs/libscgi/testclient.c @@ -0,0 +1,39 @@ +#include + + +int main(int argc, char *argv[]) +{ + char buf[16336] = ""; + ssize_t len; + scgi_handle_t handle = { 0 }; + char *ip; + int port = 0; + + if (argc < 2) { + fprintf(stderr, "usage: testclient "); + } + + ip = argv[1]; + port = atoi(argv[2]); + + + + scgi_add_param(&handle, "REQUEST_METHOD", "POST"); + scgi_add_param(&handle, "REQUEST_URI", "/deepthought"); + scgi_add_param(&handle, "TESTING", "TRUE"); + scgi_add_param(&handle, "TESTING", "TRUE"); + scgi_add_body(&handle, "What is the answer to life?"); + + + scgi_connect(&handle, ip, port, 10000); + + scgi_send_request(&handle); + + + while((len = scgi_recv(&handle, buf, sizeof(buf))) > 0) { + printf("READ [%s]\n", buf); + } + + scgi_disconnect(&handle); + +} From d7cf0bbed0994ae480fdb10c4fe18166ed932792 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 May 2012 14:06:00 -0500 Subject: [PATCH 440/630] add mod_xml_scgi (like xml_curl minus the web server direct to an application backend that supports the SCGI protocol) --- src/mod/xml_int/mod_xml_scgi/Makefile | 5 + .../conf/autoload_configs/xml_scgi.conf.xml | 12 + .../mod_xml_scgi/mod_xml_scgi.2008.vcproj | 287 +++++++++++++++ .../mod_xml_scgi/mod_xml_scgi.2010.vcxproj | 131 +++++++ src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 340 ++++++++++++++++++ .../xml_int/mod_xml_scgi/xml_scgi_server.pl | 93 +++++ 6 files changed, 868 insertions(+) create mode 100644 src/mod/xml_int/mod_xml_scgi/Makefile create mode 100644 src/mod/xml_int/mod_xml_scgi/conf/autoload_configs/xml_scgi.conf.xml create mode 100644 src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2008.vcproj create mode 100644 src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2010.vcxproj create mode 100644 src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c create mode 100644 src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl diff --git a/src/mod/xml_int/mod_xml_scgi/Makefile b/src/mod/xml_int/mod_xml_scgi/Makefile new file mode 100644 index 0000000000..2c7a91d26d --- /dev/null +++ b/src/mod/xml_int/mod_xml_scgi/Makefile @@ -0,0 +1,5 @@ +BASE=../../../.. +LOCAL_SOURCES = $(BASE)/libs/libscgi/src/scgi.c +LOCAL_OBJS = $(BASE)/libs/libscgi/src/scgi.o +LOCAL_CFLAGS = -I. -I$(BASE)/libs/libscgi/src/include +include $(BASE)/build/modmake.rules diff --git a/src/mod/xml_int/mod_xml_scgi/conf/autoload_configs/xml_scgi.conf.xml b/src/mod/xml_int/mod_xml_scgi/conf/autoload_configs/xml_scgi.conf.xml new file mode 100644 index 0000000000..b9662d1638 --- /dev/null +++ b/src/mod/xml_int/mod_xml_scgi/conf/autoload_configs/xml_scgi.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2008.vcproj b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2008.vcproj new file mode 100644 index 0000000000..7718059dd5 --- /dev/null +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2008.vcproj @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2010.vcxproj b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2010.vcxproj new file mode 100644 index 0000000000..cde0e239e9 --- /dev/null +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.2010.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_xml_scgi + {11C9BC3D-45E9-46E3-BE84-B8CEE4685E39} + mod_xml_scgi + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c new file mode 100644 index 0000000000..687ec3aeb9 --- /dev/null +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -0,0 +1,340 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2012, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Anthony Minessale II + * + * mod_xml_scgi.c -- SCGI XML Gateway + * + */ +#include +#include + + +SWITCH_MODULE_LOAD_FUNCTION(mod_xml_scgi_load); +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_scgi_shutdown); +SWITCH_MODULE_DEFINITION(mod_xml_scgi, mod_xml_scgi_load, mod_xml_scgi_shutdown, NULL); + + +struct xml_binding { + char *host; + switch_port_t port; + char *url; + + int timeout; + switch_hash_t *vars_map; + char *bindings; + +}; + +static int GLOBAL_DEBUG = 0; + +typedef struct xml_binding xml_binding_t; + +#define XML_SCGI_MAX_BYTES 1024 * 1024 + +typedef struct hash_node { + switch_hash_t *hash; + struct hash_node *next; +} hash_node_t; + +static struct { + switch_memory_pool_t *pool; + hash_node_t *hash_root; + hash_node_t *hash_tail; +} globals; + +#define XML_SCGI_SYNTAX "[debug_on|debug_off]" +SWITCH_STANDARD_API(xml_scgi_function) +{ + if (session) { + return SWITCH_STATUS_FALSE; + } + + if (zstr(cmd)) { + goto usage; + } + + if (!strcasecmp(cmd, "debug_on")) { + GLOBAL_DEBUG = 1; + } else if (!strcasecmp(cmd, "debug_off")) { + GLOBAL_DEBUG = 0; + } else { + goto usage; + } + + stream->write_function(stream, "OK\n"); + return SWITCH_STATUS_SUCCESS; + + usage: + stream->write_function(stream, "USAGE: %s\n", XML_SCGI_SYNTAX); + return SWITCH_STATUS_SUCCESS; +} + + +static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, const char *key_name, const char *key_value, switch_event_t *params, + void *user_data) +{ + switch_xml_t xml = NULL; + char *data = NULL; + xml_binding_t *binding = (xml_binding_t *) user_data; + char hostname[256] = ""; + char basic_data[512]; + unsigned char buf[16336] = ""; + ssize_t len = -1, bytes = 0; + scgi_handle_t handle = { 0 }; + switch_stream_handle_t stream = { 0 }; + char *txt = NULL; + + strncpy(hostname, switch_core_get_switchname(), sizeof(hostname)); + + if (!binding) { + return NULL; + } + + switch_snprintf(basic_data, sizeof(basic_data), "hostname=%s§ion=%s&tag_name=%s&key_name=%s&key_value=%s", + hostname, section, switch_str_nil(tag_name), switch_str_nil(key_name), switch_str_nil(key_value)); + + data = switch_event_build_param_string(params, basic_data, binding->vars_map); + switch_assert(data); + + scgi_add_param(&handle, "REQUEST_METHOD", "POST"); + scgi_add_param(&handle, "REQUEST_URI", binding->url); + scgi_add_body(&handle, data); + + if (scgi_connect(&handle, binding->host, binding->port, binding->timeout * 1000) == SCGI_SUCCESS) { + scgi_send_request(&handle); + + SWITCH_STANDARD_STREAM(stream); + txt = (char *) stream.data; + + while((len = scgi_recv(&handle, buf, sizeof(buf))) > 0) { + + bytes += len; + + if (bytes > XML_SCGI_MAX_BYTES) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Data too big!\n"); + len = -1; + break; + } + + stream.write_function(&stream, "%s", buf); + } + + scgi_disconnect(&handle); + } + + if (GLOBAL_DEBUG) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s\nPOST_DATA:\n%s\n\nRESPONSE:\n%s\n\n", binding->url, data, txt); + } + + if (!len) { + if (!(xml = switch_xml_parse_str(txt, strlen(txt)))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Parsing Result! [%s]\ndata: [%s]\n", binding->url, data); + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Received error trying to fetch %s\ndata: [%s]\n", binding->url, data); + switch_safe_free(stream.data); + xml = NULL; + } + + switch_safe_free(data); + + + return xml; +} + +#define ENABLE_PARAM_VALUE "enabled" +static switch_status_t do_config(void) +{ + char *cf = "xml_scgi.conf"; + switch_xml_t cfg, xml, bindings_tag, binding_tag, param; + xml_binding_t *binding = NULL; + int x = 0; + int need_vars_map = 0; + switch_hash_t *vars_map = NULL; + + if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf); + return SWITCH_STATUS_TERM; + } + + if (!(bindings_tag = switch_xml_child(cfg, "bindings"))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing tag!\n"); + goto done; + } + + for (binding_tag = switch_xml_child(bindings_tag, "binding"); binding_tag; binding_tag = binding_tag->next) { + char *bname = (char *) switch_xml_attr_soft(binding_tag, "name"); + char *host = "127.0.0.1"; + char *port = "8080"; + char *bind_mask = NULL; + int timeout = 0; + + hash_node_t *hash_node; + need_vars_map = 0; + vars_map = NULL; + + for (param = switch_xml_child(binding_tag, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + + if (!strcasecmp(var, "host")) { + bind_mask = (char *) switch_xml_attr_soft(param, "bindings"); + if (val) { + host = val; + } + } else if (!strcasecmp(var, "port")) { + port = val; + } else if (!strcasecmp(var, "timeout")) { + int tmp = atoi(val); + if (tmp >= 0) { + timeout = tmp; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't set a negative timeout!\n"); + } + } else if (!strcasecmp(var, "enable-post-var")) { + if (!vars_map && need_vars_map == 0) { + if (switch_core_hash_init(&vars_map, globals.pool) != SWITCH_STATUS_SUCCESS) { + need_vars_map = -1; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't init params hash!\n"); + continue; + } + need_vars_map = 1; + } + + if (vars_map && val) { + if (switch_core_hash_insert(vars_map, val, ENABLE_PARAM_VALUE) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't add %s to params hash!\n", val); + } + } + } + } + + if (!host) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Binding has no host!\n"); + if (vars_map) { + switch_core_hash_destroy(&vars_map); + } + continue; + } + + if (!(binding = switch_core_alloc(globals.pool, sizeof(*binding)))) { + if (vars_map) { + switch_core_hash_destroy(&vars_map); + } + goto done; + } + memset(binding, 0, sizeof(*binding)); + + binding->timeout = timeout; + binding->host = switch_core_strdup(globals.pool, host); + binding->port = atoi(port); + binding->vars_map = vars_map; + binding->url = switch_mprintf("scgi://%s:%s", host, port); + + if (bind_mask) { + binding->bindings = switch_core_strdup(globals.pool, bind_mask); + } + + if (vars_map) { + switch_zmalloc(hash_node, sizeof(hash_node_t)); + hash_node->hash = vars_map; + hash_node->next = NULL; + + if (!globals.hash_root) { + globals.hash_root = hash_node; + globals.hash_tail = globals.hash_root; + } + + else { + globals.hash_tail->next = hash_node; + globals.hash_tail = globals.hash_tail->next; + } + + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Binding [%s] XML Fetch Function [%s] [%s]\n", + zstr(bname) ? "N/A" : bname, binding->url, binding->bindings ? binding->bindings : "all"); + switch_xml_bind_search_function(xml_url_fetch, switch_xml_parse_section_string(binding->bindings), binding); + x++; + binding = NULL; + } + + done: + switch_xml_free(xml); + + return x ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; +} + +SWITCH_MODULE_LOAD_FUNCTION(mod_xml_scgi_load) +{ + switch_api_interface_t *xml_scgi_api_interface; + + /* connect my internal structure to the blank pointer passed to me */ + *module_interface = switch_loadable_module_create_module_interface(pool, modname); + + memset(&globals, 0, sizeof(globals)); + globals.pool = pool; + globals.hash_root = NULL; + globals.hash_tail = NULL; + + if (do_config() != SWITCH_STATUS_SUCCESS) { + return SWITCH_STATUS_FALSE; + } + + SWITCH_ADD_API(xml_scgi_api_interface, "xml_scgi", "XML SCGI", xml_scgi_function, XML_SCGI_SYNTAX); + switch_console_set_complete("add xml_scgi debug_on"); + switch_console_set_complete("add xml_scgi debug_off"); + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_scgi_shutdown) +{ + hash_node_t *ptr = NULL; + + while (globals.hash_root) { + ptr = globals.hash_root; + switch_core_hash_destroy(&ptr->hash); + globals.hash_root = ptr->next; + switch_safe_free(ptr); + } + + switch_xml_unbind_search_function_ptr(xml_url_fetch); + + return SWITCH_STATUS_SUCCESS; +} + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ diff --git a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl new file mode 100644 index 0000000000..bf56c9c0c1 --- /dev/null +++ b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl @@ -0,0 +1,93 @@ +# +# Copyright (c) 2012-2013, Anthony Minessale II +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * 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. +# +# * Neither the name of the original author; nor the names of any contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER +# 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. +# + +### EXAMPLE SERVER SIDE FOR mod_xml_SCGI +### You will need the SCGI module from CPAN + +use SCGI; +use CGI; +use IO::Socket; +use Data::Dumper; + +my $socket = IO::Socket::INET->new(Listen => 5, ReuseAddr => 1, LocalPort => 8080) + or die "cannot bind to port 8080: $!"; + +my $scgi = SCGI->new($socket, blocking => 1); + + +my $xml = qq# + +

+ + + + + + + + + +
+ +#; + + +while (my $request = $scgi->accept) { + + # fork every new req into its own process (optional) + next unless(fork()); + my $handle = $request->connection; + + $request->read_env; + + # get the body that contains the PARAMS + read $handle, $body, $request->env->{CONTENT_LENGTH}; + + # Dump SCGI HEADERS + print Dumper $request->env; + + # Create a CGI parser on the PARAMS + my $cgi = CGI->new($body); + my %params = $cgi->Vars(); + # might be big output + print Dumper \%params; + + + ### DO something CGI-like here with %params ... I'm just going to return static xml + + # header is not necessary but optional + #print $handle "Content-Type: text/xml\n\n"; + + print $handle $xml; + +} From 5cf33770e1409c1c4719e8da3158f321a6284a5d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 9 May 2012 14:09:29 -0500 Subject: [PATCH 441/630] add conf for mod_xml_scgi --- build/modules.conf.in | 1 + conf/vanilla/autoload_configs/modules.conf.xml | 1 + conf/vanilla/autoload_configs/xml_scgi.conf.xml | 12 ++++++++++++ 3 files changed, 14 insertions(+) create mode 100644 conf/vanilla/autoload_configs/xml_scgi.conf.xml diff --git a/build/modules.conf.in b/build/modules.conf.in index 18babbfec9..98a88e0622 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -124,6 +124,7 @@ xml_int/mod_xml_cdr #xml_int/mod_xml_curl #xml_int/mod_xml_ldap xml_int/mod_xml_rpc +xml_int/mod_xml_scgi #../../libs/freetdm/mod_freetdm #../../libs/openzap/mod_openzap diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml index 50353ac849..5038713afe 100644 --- a/conf/vanilla/autoload_configs/modules.conf.xml +++ b/conf/vanilla/autoload_configs/modules.conf.xml @@ -16,6 +16,7 @@ + diff --git a/conf/vanilla/autoload_configs/xml_scgi.conf.xml b/conf/vanilla/autoload_configs/xml_scgi.conf.xml new file mode 100644 index 0000000000..b9662d1638 --- /dev/null +++ b/conf/vanilla/autoload_configs/xml_scgi.conf.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + From 6c0e1f90f93db19355e6d646b56b222e54f892dc Mon Sep 17 00:00:00 2001 From: Brian West Date: Wed, 9 May 2012 17:11:03 -0500 Subject: [PATCH 442/630] tweak --- src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl index bf56c9c0c1..4be66361e5 100644 --- a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl +++ b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl @@ -89,5 +89,5 @@ while (my $request = $scgi->accept) { #print $handle "Content-Type: text/xml\n\n"; print $handle $xml; - + exit; } From 7b54701d7ce60394734edbcbe0c19cbc4813ad7d Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Wed, 9 May 2012 15:18:12 -0700 Subject: [PATCH 443/630] mod_voicemail: Improved feedback to user when chaning vm passwords. --- conf/vanilla/lang/en/vm/sounds.xml | 4 ++-- src/mod/applications/mod_voicemail/mod_voicemail.c | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/conf/vanilla/lang/en/vm/sounds.xml b/conf/vanilla/lang/en/vm/sounds.xml index ff8844ae97..fdef472a5b 100644 --- a/conf/vanilla/lang/en/vm/sounds.xml +++ b/conf/vanilla/lang/en/vm/sounds.xml @@ -29,7 +29,7 @@ - + @@ -37,7 +37,7 @@ - + diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index 44bafb3ea2..2ed70ce05d 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -2197,8 +2197,7 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p if (fail) { /* add feedback for user - let him/her know that the password they tried to change to is not allowed */ - /* change the following macro to VM_CHANGE_PASS_FAIL_MACRO when new prompts have been recorded */ - switch_ivr_phrase_macro(session, VM_FAIL_AUTH_MACRO, NULL, NULL, NULL); + switch_ivr_phrase_macro(session, VM_CHANGE_PASS_FAIL_MACRO, NULL, NULL, NULL); } else { sql = switch_mprintf("update voicemail_prefs set password='%s' where username='%s' and domain='%s'", buf, myid, domain_name); vm_execute_sql(profile, sql, profile->mutex); From a9977a7cac8d16d1015269d26022766301eaf793 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 21:44:55 +0000 Subject: [PATCH 444/630] debian: separate out libfreeswitch1 --- debian/.gitignore | 1 + debian/bootstrap.sh | 20 ++++++++++++++++++++ debian/freeswitch.install | 1 - debian/libfreeswitch1.install | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 debian/libfreeswitch1.install diff --git a/debian/.gitignore b/debian/.gitignore index 437658053c..dc57b0b450 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -28,3 +28,4 @@ /freeswitch-sounds*/ /freeswitch-systemd/ /freeswitch-sysvinit/ +/libfreeswitch*/ diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 4c40b7eaed..8e26928043 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -194,6 +194,16 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch . This package contains the FreeSWITCH core. +Package: libfreeswitch1 +Architecture: any +Depends: \${shlibs:Depends}, \${perl:Depends}, \${misc:Depends} +Recommends: +Suggests: libfreeswitch1-dbg +Description: Cross-Platform Scalable Multi-Protocol Soft Switch + $(debian_wrap "${fs_description}") + . + This package contains the FreeSWITCH core library. + Package: freeswitch-meta-bare Architecture: any Depends: \${misc:Depends}, freeswitch (= \${binary:Version}) @@ -335,6 +345,16 @@ Description: debugging symbols for FreeSWITCH . This package contains debugging symbols for FreeSWITCH. +Package: libfreeswitch1-dbg +Section: debug +Priority: extra +Architecture: any +Depends: \${misc:Depends}, libfreeswitch1 (= \${binary:Version}) +Description: debugging symbols for FreeSWITCH + $(debian_wrap "${fs_description}") + . + This package contains debugging symbols for libfreeswitch1. + Package: freeswitch-dev Section: libdevel Architecture: any diff --git a/debian/freeswitch.install b/debian/freeswitch.install index 199329cdd3..d713fe0607 100644 --- a/debian/freeswitch.install +++ b/debian/freeswitch.install @@ -1,3 +1,2 @@ /usr/bin -/usr/lib/libfreeswitch.so.* /usr/share/freeswitch/scripts diff --git a/debian/libfreeswitch1.install b/debian/libfreeswitch1.install new file mode 100644 index 0000000000..216259cdd4 --- /dev/null +++ b/debian/libfreeswitch1.install @@ -0,0 +1 @@ +/usr/lib/libfreeswitch.so.* From 52fe417d936069f538d4bf71bc1dba2bbe2f2c38 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 21:48:30 +0000 Subject: [PATCH 445/630] debian: don't put module .la files in freeswitch-dev --- debian/freeswitch-dev.install | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/freeswitch-dev.install b/debian/freeswitch-dev.install index b63cfa4530..3d92ab2480 100644 --- a/debian/freeswitch-dev.install +++ b/debian/freeswitch-dev.install @@ -1,5 +1,4 @@ /usr/include -/usr/lib/freeswitch/mod/*.la /usr/lib/libfreeswitch.so /usr/lib/*.a /usr/lib/*.la From d64c72e88d37af374e7659e3c2e9288922a81039 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 22:00:04 +0000 Subject: [PATCH 446/630] debian: don't distribute .la files with modules Debian wants rid of .la files, and these module .la files shouldn't be necessary on a Debian system. --- debian/bootstrap.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 8e26928043..a2e6ec7eca 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -516,7 +516,6 @@ EOF print_mod_install () { cat < Date: Wed, 9 May 2012 22:05:15 +0000 Subject: [PATCH 447/630] debian: add mod_xml_scgi --- debian/control-modules | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debian/control-modules b/debian/control-modules index 922bbf119d..8ea77b00f0 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -641,3 +641,7 @@ Module: xml_int/mod_xml_rpc Description: mod_xml_rpc Adds mod_xml_rpc. +Module: xml_int/mod_xml_scgi +Description: mod_xml_scgi + Adds mod_xml_scgi. + From 4e4b0d45e2969a598aadbb4b90b8d53ff3ed6571 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 22:28:31 +0000 Subject: [PATCH 448/630] debian: reduce edit distance between control-modules and .gen --- debian/bootstrap.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index a2e6ec7eca..4757284bc9 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -841,7 +841,8 @@ parse_mod_control echo "Displaying includes/excludes..." >&2 map_modules 'mod_filter_show' '' '' echo "Generating control-modules.gen as sanity check..." >&2 -(echo "# -*- mode:debian-control -*-"; echo; \ +(echo "# -*- mode:debian-control -*-"; \ + echo "##### Author: Travis Cross "; echo; \ map_modules ':' 'genmodctl_cat' 'genmodctl_mod' \ ) > control-modules.gen From 9c6a3d76d3aea03624120e3d1f71981f1c7b7462 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 22:31:25 +0000 Subject: [PATCH 449/630] debian: rename libfreeswitch-dev package appropriately --- debian/bootstrap.sh | 2 +- debian/{freeswitch-dev.install => libfreeswitch-dev.install} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename debian/{freeswitch-dev.install => libfreeswitch-dev.install} (100%) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 4757284bc9..436ae77dca 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -355,7 +355,7 @@ Description: debugging symbols for FreeSWITCH . This package contains debugging symbols for libfreeswitch1. -Package: freeswitch-dev +Package: libfreeswitch-dev Section: libdevel Architecture: any Depends: \${misc:Depends}, freeswitch diff --git a/debian/freeswitch-dev.install b/debian/libfreeswitch-dev.install similarity index 100% rename from debian/freeswitch-dev.install rename to debian/libfreeswitch-dev.install From 7624ca0ba652060ece83dd26f6bb027af1fc6c31 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 22:49:30 +0000 Subject: [PATCH 450/630] debian: don't distribute .la file with libfreeswitch-dev Debian wants rid of .la files, and leaving this out shouldn't do any harm on a Debian system. --- debian/libfreeswitch-dev.install | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/libfreeswitch-dev.install b/debian/libfreeswitch-dev.install index 3d92ab2480..730856899c 100644 --- a/debian/libfreeswitch-dev.install +++ b/debian/libfreeswitch-dev.install @@ -1,5 +1,4 @@ /usr/include /usr/lib/libfreeswitch.so /usr/lib/*.a -/usr/lib/*.la /usr/lib/pkgconfig From 76330ec918259e61907fbc37e6b2ab2f648b6674 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 9 May 2012 23:20:37 +0000 Subject: [PATCH 451/630] debian: update package name for lintian override --- debian/bootstrap.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 436ae77dca..852571aeed 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -878,9 +878,9 @@ grep -e '^Package:' control | while xread l; do print_long_filename_override "$m" >> $f fi done -f=freeswitch.lintian-overrides +f=libfreeswitch1.lintian-overrides [ -s $f ] || print_edit_warning >> $f -print_gpl_openssl_override "freeswitch" >> $f +print_gpl_openssl_override "libfreeswitch1" >> $f echo "Done bootstrapping debian/" >&2 touch .stamp-bootstrap From 3ba5c72977f6f3fd26c935717842f35dd48f5ad5 Mon Sep 17 00:00:00 2001 From: Daniel Swarbrick Date: Thu, 10 May 2012 10:19:45 +0200 Subject: [PATCH 452/630] release mutex after iterating over channel vars --- .../event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c b/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c index f2ecd35a4a..4c8aded61c 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/mod_cdr_mongodb.c @@ -124,11 +124,16 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) /* Channel variables */ bson_append_start_object(&cdr, "variables"); - for (hi = switch_channel_variable_first(channel); hi; hi = hi->next) { - if (!zstr(hi->name) && !zstr(hi->value)) { - bson_append_string(&cdr, hi->name, hi->value); + + if ((hi = switch_channel_variable_first(channel))) { + for (; hi; hi = hi->next) { + if (!zstr(hi->name) && !zstr(hi->value)) { + bson_append_string(&cdr, hi->name, hi->value); + } } + switch_channel_variable_last(channel); } + bson_append_finish_object(&cdr); /* variables */ From 951f15990194d637e013bc4e70ed7089a1a62bc4 Mon Sep 17 00:00:00 2001 From: Daniel Swarbrick Date: Thu, 10 May 2012 11:03:04 +0200 Subject: [PATCH 453/630] update mongo-c-driver to 0.5.2 --- .../event_handlers/mod_cdr_mongodb/Makefile | 6 +- .../mod_cdr_mongodb/driver/HISTORY.md | 30 + .../mod_cdr_mongodb/driver/README.md | 4 +- .../mod_cdr_mongodb/driver/SConstruct | 178 ------ .../mod_cdr_mongodb/driver/src/bson.c | 308 ++++++---- .../mod_cdr_mongodb/driver/src/bson.h | 241 +++++--- .../mod_cdr_mongodb/driver/src/encoding.c | 2 +- .../mod_cdr_mongodb/driver/src/encoding.h | 6 +- .../mod_cdr_mongodb/driver/src/env.h | 39 ++ .../mod_cdr_mongodb/driver/src/env_posix.c | 165 +++++ .../mod_cdr_mongodb/driver/src/env_standard.c | 168 +++++ .../mod_cdr_mongodb/driver/src/env_win32.c | 183 ++++++ .../mod_cdr_mongodb/driver/src/gridfs.c | 115 ++-- .../mod_cdr_mongodb/driver/src/gridfs.h | 64 +- .../mod_cdr_mongodb/driver/src/md5.c | 6 +- .../mod_cdr_mongodb/driver/src/md5.h | 19 +- .../mod_cdr_mongodb/driver/src/mongo.c | 576 +++++++++++++----- .../mod_cdr_mongodb/driver/src/mongo.h | 191 ++++-- .../mod_cdr_mongodb/driver/src/net.c | 98 --- .../mod_cdr_mongodb/driver/src/net.h | 57 -- .../mod_cdr_mongodb/driver/src/numbers.c | 2 +- .../mod_cdr_mongodb/driver/src/platform.h | 94 --- .../driver/src/platform/linux/net.c | 183 ------ .../driver/src/platform/linux/net.h | 51 -- 24 files changed, 1598 insertions(+), 1188 deletions(-) delete mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/SConstruct create mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/env.h create mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_posix.c create mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_standard.c create mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_win32.c delete mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.c delete mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.h delete mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform.h delete mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.c delete mode 100644 src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.h diff --git a/src/mod/event_handlers/mod_cdr_mongodb/Makefile b/src/mod/event_handlers/mod_cdr_mongodb/Makefile index b9e04b983d..6a412a0f66 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/Makefile +++ b/src/mod/event_handlers/mod_cdr_mongodb/Makefile @@ -2,8 +2,8 @@ include ../../../../build/modmake.rules MONGODB_DRIVER=./driver/src LOCAL_CFLAGS=-I$(MONGODB_DRIVER) -LOCAL_OBJS=$(MONGODB_DRIVER)/md5.o \ - $(MONGODB_DRIVER)/mongo.o $(MONGODB_DRIVER)/net.o \ - $(MONGODB_DRIVER)/bson.o $(MONGODB_DRIVER)/numbers.o $(MONGODB_DRIVER)/encoding.o \ +LOCAL_OBJS=$(MONGODB_DRIVER)/encoding.o $(MONGODB_DRIVER)/env_posix.o \ + $(MONGODB_DRIVER)/bson.o $(MONGODB_DRIVER)/md5.o \ + $(MONGODB_DRIVER)/mongo.o $(MONGODB_DRIVER)/numbers.o local_depend: $(LOCAL_OBJS) diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/HISTORY.md b/src/mod/event_handlers/mod_cdr_mongodb/driver/HISTORY.md index f3f0fab21d..1659192909 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/HISTORY.md +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/HISTORY.md @@ -1,5 +1,35 @@ # MongoDB C Driver History +## 0.5.2 +2012-5-4 + +* Validate collection and database names on insert. +* Validate insert limits using max BSON size. +* Support getaddrinfo and SO_RCVTIMEO and SO_SNDTIMEO on Windows. +* Store errno/WSAGetLastError() on errors. +* Various bug fixes and refactorings. +* Update error reporting docs. + +## 0.5.1 + +* Env for POSIX, WIN32, and standard C. +* Various bug fixes. + +## 0.5 +2012-3-31 + +* Separate cursor-specific errors into their own enum: mongo_cursor_error_t. +* Catch $err return on bad queries and store the result in conn->getlasterrorcode + and conn->getlasterrstr. +* On queries that return $err, set cursor->err to MONGO_CURSOR_QUERY_FAIL. +* When passing bad BSON to a cursor object, set cursor->err to MONGO_CURSOR_BSON_ERROR, + and store the specific BSON error on the conn->err field. +* Remove bson_copy_basic(). +* bson_copy() will copy finished bson objects only. +* bson_copy() returns BSON_OK on success and BSON_ERROR on failure. +* Added a Makefile for easy compile and install on Linux and OS X. +* Replica set connect fixes. + ## 0.4 THIS RELEASE INCLUDES NUMEROUS BACKWARD-BREAKING CHANGES. diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/README.md b/src/mod/event_handlers/mod_cdr_mongodb/driver/README.md index 1afe39e69c..d8c7526683 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/README.md +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/README.md @@ -12,9 +12,9 @@ Until the 1.0 release, this driver should be considered alpha. Keep in mind that # Building First check out the version you want to build. *Always build from a particular tag, since HEAD may be -a work in progress.* For example, to build version 0.4, run: +a work in progress.* For example, to build version 0.5.2, run: - git checkout v0.4 + git checkout v0.5.2 You can then build the driver with scons: diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/SConstruct b/src/mod/event_handlers/mod_cdr_mongodb/driver/SConstruct deleted file mode 100644 index d3be2d89a6..0000000000 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/SConstruct +++ /dev/null @@ -1,178 +0,0 @@ -# -*- mode: python; -*- - -VERSION = "0.4" - -# --- options ---- -AddOption('--test-server', - dest='test_server', - default='127.0.0.1', - type='string', - nargs=1, - action='store', - help='IP address of server to use for testing') - -AddOption('--seed-start-port', - dest='seed_start_port', - default=30000, - type='int', - nargs=1, - action='store', - help='IP address of server to use for testing') - -AddOption('--c99', - dest='use_c99', - default=False, - action='store_true', - help='Compile with c99 (recommended for gcc)') - -AddOption('--d', - dest='optimize', - default=True, - action='store_false', - help='disable optimizations') - -AddOption('--use-platform', - dest='compile_platform', - default='GENERIC', - type='string', - nargs=1, - action='store', - help='Compile for a specific platform to take advantage ' - ' of particular system features. For the moment, this include timeouts only.' - ' Current options include LINUX, ' - ' GENERIC, and CUSTOM. If you specific CUSTOM, you must place a' - ' system-specific implementation of net.h and net.c in src/platform/custom/') - -import os, sys - -env = Environment( ENV=os.environ ) - -# ---- Docs ---- -def build_docs(env, target, source): - buildscript_path = os.path.join(os.path.abspath("docs")) - sys.path.insert(0, buildscript_path) - import buildscripts - from buildscripts import docs - docs.main() - -env.Alias("docs", [], [build_docs]) -env.AlwaysBuild("docs") - -# ---- Platforms ---- -PLATFORM_TEST_DIR = None -if "LINUX" == GetOption('compile_platform'): - env.Append( CPPFLAGS=" -D_MONGO_USE_LINUX_SYSTEM" ) - NET_LIB = "src/platform/linux/net.c" - PLATFORM_TEST_DIR = "test/platform/linux/" - PLATFORM_TESTS = [ "timeouts" ] -elif "CUSTOM" == GetOption('compile_platform'): - env.Append( CPPFLAGS=" -D_MONGO_USE_CUSTOM_SYSTEM" ) - NET_LIB = "src/platform/custom/net.c" -else: - NET_LIB = "src/net.c" - -# ---- Libraries ---- -if os.sys.platform in ["darwin", "linux2"]: - env.Append( CPPFLAGS=" -pedantic -Wall -ggdb -DMONGO_HAVE_STDINT" ) - env.Append( CPPPATH=["/opt/local/include/"] ) - env.Append( LIBPATH=["/opt/local/lib/"] ) - - if GetOption('use_c99'): - env.Append( CFLAGS=" -std=c99 " ) - env.Append( CXXDEFINES="MONGO_HAVE_STDINT" ) - else: - env.Append( CFLAGS=" -ansi " ) - - if GetOption('optimize'): - env.Append( CPPFLAGS=" -O3 " ) - # -O3 benchmarks *significantly* faster than -O2 when disabling networking -elif 'win32' == os.sys.platform: - env.Append( LIBS='ws2_32' ) - -#we shouldn't need these options in c99 mode -if not GetOption('use_c99'): - conf = Configure(env) - - if not conf.CheckType('int64_t'): - if conf.CheckType('int64_t', '#include \n'): - conf.env.Append( CPPDEFINES="MONGO_HAVE_STDINT" ) - elif conf.CheckType('int64_t', '#include \n'): - conf.env.Append( CPPDEFINES="MONGO_HAVE_UNISTD" ) - elif conf.CheckType('__int64'): - conf.env.Append( CPPDEFINES="MONGO_USE__INT64" ) - elif conf.CheckType('long long int'): - conf.env.Append( CPPDEFINES="MONGO_USE_LONG_LONG_INT" ) - else: - print "*** what is your 64 bit int type? ****" - Exit(1) - - env = conf.Finish() - -have_libjson = False -conf = Configure(env) -if conf.CheckLib('json'): - have_libjson = True -env = conf.Finish() - -if sys.byteorder == 'big': - env.Append( CPPDEFINES="MONGO_BIG_ENDIAN" ) - -env.Append( CPPPATH=["src/"] ) - -coreFiles = ["src/md5.c" ] -mFiles = [ "src/mongo.c", NET_LIB, "src/gridfs.c"] -bFiles = [ "src/bson.c", "src/numbers.c", "src/encoding.c"] -mLibFiles = coreFiles + mFiles + bFiles -bLibFiles = coreFiles + bFiles -m = env.Library( "mongoc" , mLibFiles ) -b = env.Library( "bson" , bLibFiles ) -env.Default( env.Alias( "lib" , [ m[0] , b[0] ] ) ) - -if os.sys.platform == "linux2": - env.Append( SHLINKFLAGS="-shared -Wl,-soname,libmongoc.so." + VERSION ) - env.Append( SHLINKFLAGS = "-shared -Wl,-soname,libbson.so." + VERSION ) - -dynm = env.SharedLibrary( "mongoc" , mLibFiles ) -dynb = env.SharedLibrary( "bson" , bLibFiles ) -env.Default( env.Alias( "sharedlib" , [ dynm[0] , dynb[0] ] ) ) - - - -# ---- Benchmarking ---- -benchmarkEnv = env.Clone() -benchmarkEnv.Append( CPPDEFINES=[('TEST_SERVER', r'\"%s\"'%GetOption('test_server')), -('SEED_START_PORT', r'%d'%GetOption('seed_start_port'))] ) -benchmarkEnv.Append( LIBS=[m, b] ) -benchmarkEnv.Prepend( LIBPATH=["."] ) -benchmarkEnv.Program( "benchmark" , [ "test/benchmark.c"] ) - -# ---- Tests ---- -testEnv = benchmarkEnv.Clone() -testCoreFiles = [ ] - -def run_tests( root, tests ): - for name in tests: - filename = "%s/%s.c" % (root, name) - exe = "test_" + name - test = testEnv.Program( exe , testCoreFiles + [filename] ) - test_alias = testEnv.Alias('test', [test], test[0].abspath + ' 2> ' + os.path.devnull) - AlwaysBuild(test_alias) - -tests = Split("sizes resize endian_swap bson bson_subobject simple update errors " -"count_delete auth gridfs validate examples helpers oid functions cursors replica_set") - -# Run standard tests -run_tests("test", tests) - -# Run platform tests -if not PLATFORM_TEST_DIR is None: - run_tests( PLATFORM_TEST_DIR, PLATFORM_TESTS ) - -if have_libjson: - tests.append('json') - testEnv.Append( LIBS=["json"] ) - -# special case for cpptest -test = testEnv.Program( 'test_cpp' , testCoreFiles + ['test/cpptest.cpp'] ) -test_alias = testEnv.Alias('test', [test], test[0].abspath + ' 2> '+ os.path.devnull) -AlwaysBuild(test_alias) diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.c index 349f42284c..26d17d8696 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.c @@ -33,7 +33,11 @@ static const int zero = 0; void *( *bson_malloc_func )( size_t ) = malloc; void *( *bson_realloc_func )( void *, size_t ) = realloc; void ( *bson_free )( void * ) = free; +#ifdef R_SAFETY_NET +bson_printf_func bson_printf; +#else bson_printf_func bson_printf = printf; +#endif bson_fprintf_func bson_fprintf = fprintf; bson_sprintf_func bson_sprintf = sprintf; @@ -48,33 +52,32 @@ static int ( *oid_inc_func )( void ) = NULL; READING ------------------------------ */ -bson *bson_empty( bson *obj ) { +MONGO_EXPORT bson* bson_create() { + return (bson*)bson_malloc(sizeof(bson)); +} + +MONGO_EXPORT void bson_dispose(bson* b) { + bson_free(b); +} + +MONGO_EXPORT bson *bson_empty( bson *obj ) { static char *data = "\005\0\0\0\0"; bson_init_data( obj, data ); obj->finished = 1; obj->err = 0; + obj->errstr = NULL; obj->stackPos = 0; return obj; } -void bson_copy_basic( bson *out, const bson *in ) { - if ( !out ) return; +MONGO_EXPORT int bson_copy( bson *out, const bson *in ) { + if ( !out ) return BSON_ERROR; + if ( !in->finished ) return BSON_ERROR; bson_init_size( out, bson_size( in ) ); memcpy( out->data, in->data, bson_size( in ) ); -} + out->finished = 1; -void bson_copy( bson *out, const bson *in ) { - int i; - - if ( !out ) return; - bson_copy_basic( out, in ); - out->cur = out->data + ( in->cur - in->data ); - out->dataSize = in->dataSize; - out->finished = in->finished; - out->stackPos = in->stackPos; - out->err = in->err; - for( i=0; istackPos; i++ ) - out->stack[i] = in->stack[i]; + return BSON_OK; } int bson_init_data( bson *b, char *data ) { @@ -82,6 +85,12 @@ int bson_init_data( bson *b, char *data ) { return BSON_OK; } +int bson_init_finished_data( bson *b, char *data ) { + bson_init_data( b, data ); + b->finished = 1; + return BSON_OK; +} + static void _bson_reset( bson *b ) { b->finished = 0; b->stackPos = 0; @@ -89,7 +98,7 @@ static void _bson_reset( bson *b ) { b->errstr = NULL; } -int bson_size( const bson *b ) { +MONGO_EXPORT int bson_size( const bson *b ) { int i; if ( ! b || ! b->data ) return 0; @@ -97,7 +106,12 @@ int bson_size( const bson *b ) { return i; } -const char *bson_data( bson *b ) { +MONGO_EXPORT int bson_buffer_size( const bson *b ) { + return (b->cur - b->data + 1); +} + + +MONGO_EXPORT const char *bson_data( const bson *b ) { return (const char *)b->data; } @@ -146,14 +160,14 @@ static char hexbyte( char hex ) { } } -void bson_oid_from_string( bson_oid_t *oid, const char *str ) { +MONGO_EXPORT void bson_oid_from_string( bson_oid_t *oid, const char *str ) { int i; for ( i=0; i<12; i++ ) { oid->bytes[i] = ( hexbyte( str[2*i] ) << 4 ) | hexbyte( str[2*i + 1] ); } } -void bson_oid_to_string( const bson_oid_t *oid, char *str ) { +MONGO_EXPORT void bson_oid_to_string( const bson_oid_t *oid, char *str ) { static const char hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; int i; for ( i=0; i<12; i++ ) { @@ -163,15 +177,15 @@ void bson_oid_to_string( const bson_oid_t *oid, char *str ) { str[24] = '\0'; } -void bson_set_oid_fuzz( int ( *func )( void ) ) { +MONGO_EXPORT void bson_set_oid_fuzz( int ( *func )( void ) ) { oid_fuzz_func = func; } -void bson_set_oid_inc( int ( *func )( void ) ) { +MONGO_EXPORT void bson_set_oid_inc( int ( *func )( void ) ) { oid_inc_func = func; } -void bson_oid_gen( bson_oid_t *oid ) { +MONGO_EXPORT void bson_oid_gen( bson_oid_t *oid ) { static int incr = 0; static int fuzz = 0; int i; @@ -196,18 +210,18 @@ void bson_oid_gen( bson_oid_t *oid ) { bson_big_endian32( &oid->ints[2], &i ); } -time_t bson_oid_generated_time( bson_oid_t *oid ) { +MONGO_EXPORT time_t bson_oid_generated_time( bson_oid_t *oid ) { time_t out; bson_big_endian32( &out, &oid->ints[0] ); return out; } -void bson_print( bson *b ) { +MONGO_EXPORT void bson_print( const bson *b ) { bson_print_raw( b->data , 0 ); } -void bson_print_raw( const char *data , int depth ) { +MONGO_EXPORT void bson_print_raw( const char *data , int depth ) { bson_iterator i; const char *key; int temp; @@ -223,69 +237,69 @@ void bson_print_raw( const char *data , int depth ) { key = bson_iterator_key( &i ); for ( temp=0; temp<=depth; temp++ ) - printf( "\t" ); + bson_printf( "\t" ); bson_printf( "%s : %d \t " , key , t ); switch ( t ) { case BSON_DOUBLE: - printf( "%f" , bson_iterator_double( &i ) ); + bson_printf( "%f" , bson_iterator_double( &i ) ); break; case BSON_STRING: - printf( "%s" , bson_iterator_string( &i ) ); + bson_printf( "%s" , bson_iterator_string( &i ) ); break; case BSON_SYMBOL: - printf( "SYMBOL: %s" , bson_iterator_string( &i ) ); + bson_printf( "SYMBOL: %s" , bson_iterator_string( &i ) ); break; case BSON_OID: bson_oid_to_string( bson_iterator_oid( &i ), oidhex ); - printf( "%s" , oidhex ); + bson_printf( "%s" , oidhex ); break; case BSON_BOOL: - printf( "%s" , bson_iterator_bool( &i ) ? "true" : "false" ); + bson_printf( "%s" , bson_iterator_bool( &i ) ? "true" : "false" ); break; case BSON_DATE: - printf( "%ld" , ( long int )bson_iterator_date( &i ) ); + bson_printf( "%ld" , ( long int )bson_iterator_date( &i ) ); break; case BSON_BINDATA: - printf( "BSON_BINDATA" ); + bson_printf( "BSON_BINDATA" ); break; case BSON_UNDEFINED: - printf( "BSON_UNDEFINED" ); + bson_printf( "BSON_UNDEFINED" ); break; case BSON_NULL: - printf( "BSON_NULL" ); + bson_printf( "BSON_NULL" ); break; case BSON_REGEX: - printf( "BSON_REGEX: %s", bson_iterator_regex( &i ) ); + bson_printf( "BSON_REGEX: %s", bson_iterator_regex( &i ) ); break; case BSON_CODE: - printf( "BSON_CODE: %s", bson_iterator_code( &i ) ); + bson_printf( "BSON_CODE: %s", bson_iterator_code( &i ) ); break; case BSON_CODEWSCOPE: - printf( "BSON_CODE_W_SCOPE: %s", bson_iterator_code( &i ) ); + bson_printf( "BSON_CODE_W_SCOPE: %s", bson_iterator_code( &i ) ); bson_init( &scope ); bson_iterator_code_scope( &i, &scope ); - printf( "\n\t SCOPE: " ); + bson_printf( "\n\t SCOPE: " ); bson_print( &scope ); break; case BSON_INT: - printf( "%d" , bson_iterator_int( &i ) ); + bson_printf( "%d" , bson_iterator_int( &i ) ); break; case BSON_LONG: - printf( "%lld" , ( long long int )bson_iterator_long( &i ) ); + bson_printf( "%lld" , ( uint64_t )bson_iterator_long( &i ) ); break; case BSON_TIMESTAMP: ts = bson_iterator_timestamp( &i ); - printf( "i: %d, t: %d", ts.i, ts.t ); + bson_printf( "i: %d, t: %d", ts.i, ts.t ); break; case BSON_OBJECT: case BSON_ARRAY: - printf( "\n" ); + bson_printf( "\n" ); bson_print_raw( bson_iterator_value( &i ) , depth + 1 ); break; default: bson_errprintf( "can't print type : %d\n" , t ); } - printf( "\n" ); + bson_printf( "\n" ); } } @@ -293,17 +307,25 @@ void bson_print_raw( const char *data , int depth ) { ITERATOR ------------------------------ */ -void bson_iterator_init( bson_iterator *i, const bson *b ) { +MONGO_EXPORT bson_iterator* bson_iterator_create() { + return (bson_iterator*)malloc(sizeof(bson_iterator*)); +} + +MONGO_EXPORT void bson_iterator_dispose(bson_iterator* i) { + free(i); +} + +MONGO_EXPORT void bson_iterator_init( bson_iterator *i, const bson *b ) { i->cur = b->data + 4; i->first = 1; } -void bson_iterator_from_buffer( bson_iterator *i, const char *buffer ) { +MONGO_EXPORT void bson_iterator_from_buffer( bson_iterator *i, const char *buffer ) { i->cur = buffer + 4; i->first = 1; } -bson_type bson_find( bson_iterator *it, const bson *obj, const char *name ) { +MONGO_EXPORT bson_type bson_find( bson_iterator *it, const bson *obj, const char *name ) { bson_iterator_init( it, (bson *)obj ); while( bson_iterator_next( it ) ) { if ( strcmp( name, bson_iterator_key( it ) ) == 0 ) @@ -312,11 +334,11 @@ bson_type bson_find( bson_iterator *it, const bson *obj, const char *name ) { return bson_iterator_type( it ); } -bson_bool_t bson_iterator_more( const bson_iterator *i ) { +MONGO_EXPORT bson_bool_t bson_iterator_more( const bson_iterator *i ) { return *( i->cur ); } -bson_type bson_iterator_next( bson_iterator *i ) { +MONGO_EXPORT bson_type bson_iterator_next( bson_iterator *i ) { int ds; if ( i->first ) { @@ -384,15 +406,15 @@ bson_type bson_iterator_next( bson_iterator *i ) { return ( bson_type )( *i->cur ); } -bson_type bson_iterator_type( const bson_iterator *i ) { +MONGO_EXPORT bson_type bson_iterator_type( const bson_iterator *i ) { return ( bson_type )i->cur[0]; } -const char *bson_iterator_key( const bson_iterator *i ) { +MONGO_EXPORT const char *bson_iterator_key( const bson_iterator *i ) { return i->cur + 1; } -const char *bson_iterator_value( const bson_iterator *i ) { +MONGO_EXPORT const char *bson_iterator_value( const bson_iterator *i ) { const char *t = i->cur + 1; t += strlen( t ) + 1; return t; @@ -422,11 +444,11 @@ bson_bool_t bson_iterator_bool_raw( const bson_iterator *i ) { return bson_iterator_value( i )[0]; } -bson_oid_t *bson_iterator_oid( const bson_iterator *i ) { +MONGO_EXPORT bson_oid_t *bson_iterator_oid( const bson_iterator *i ) { return ( bson_oid_t * )bson_iterator_value( i ); } -int bson_iterator_int( const bson_iterator *i ) { +MONGO_EXPORT int bson_iterator_int( const bson_iterator *i ) { switch ( bson_iterator_type( i ) ) { case BSON_INT: return bson_iterator_int_raw( i ); @@ -439,7 +461,7 @@ int bson_iterator_int( const bson_iterator *i ) { } } -double bson_iterator_double( const bson_iterator *i ) { +MONGO_EXPORT double bson_iterator_double( const bson_iterator *i ) { switch ( bson_iterator_type( i ) ) { case BSON_INT: return bson_iterator_int_raw( i ); @@ -452,7 +474,7 @@ double bson_iterator_double( const bson_iterator *i ) { } } -int64_t bson_iterator_long( const bson_iterator *i ) { +MONGO_EXPORT int64_t bson_iterator_long( const bson_iterator *i ) { switch ( bson_iterator_type( i ) ) { case BSON_INT: return bson_iterator_int_raw( i ); @@ -465,14 +487,29 @@ int64_t bson_iterator_long( const bson_iterator *i ) { } } -bson_timestamp_t bson_iterator_timestamp( const bson_iterator *i ) { +MONGO_EXPORT bson_timestamp_t bson_iterator_timestamp( const bson_iterator *i ) { bson_timestamp_t ts; bson_little_endian32( &( ts.i ), bson_iterator_value( i ) ); bson_little_endian32( &( ts.t ), bson_iterator_value( i ) + 4 ); return ts; } -bson_bool_t bson_iterator_bool( const bson_iterator *i ) { + +MONGO_EXPORT int bson_iterator_timestamp_time( const bson_iterator *i ) { + int time; + bson_little_endian32( &time, bson_iterator_value( i ) + 4 ); + return time; +} + + +MONGO_EXPORT int bson_iterator_timestamp_increment( const bson_iterator *i ) { + int increment; + bson_little_endian32( &increment, bson_iterator_value( i ) ); + return increment; +} + + +MONGO_EXPORT bson_bool_t bson_iterator_bool( const bson_iterator *i ) { switch ( bson_iterator_type( i ) ) { case BSON_BOOL: return bson_iterator_bool_raw( i ); @@ -490,15 +527,21 @@ bson_bool_t bson_iterator_bool( const bson_iterator *i ) { } } -const char *bson_iterator_string( const bson_iterator *i ) { - return bson_iterator_value( i ) + 4; +MONGO_EXPORT const char *bson_iterator_string( const bson_iterator *i ) { + switch ( bson_iterator_type( i ) ) { + case BSON_STRING: + case BSON_SYMBOL: + return bson_iterator_value( i ) + 4; + default: + return ""; + } } int bson_iterator_string_len( const bson_iterator *i ) { return bson_iterator_int_raw( i ); } -const char *bson_iterator_code( const bson_iterator *i ) { +MONGO_EXPORT const char *bson_iterator_code( const bson_iterator *i ) { switch ( bson_iterator_type( i ) ) { case BSON_STRING: case BSON_CODE: @@ -510,57 +553,59 @@ const char *bson_iterator_code( const bson_iterator *i ) { } } -void bson_iterator_code_scope( const bson_iterator *i, bson *scope ) { +MONGO_EXPORT void bson_iterator_code_scope( const bson_iterator *i, bson *scope ) { if ( bson_iterator_type( i ) == BSON_CODEWSCOPE ) { int code_len; bson_little_endian32( &code_len, bson_iterator_value( i )+4 ); bson_init_data( scope, ( void * )( bson_iterator_value( i )+8+code_len ) ); + _bson_reset( scope ); + scope->finished = 1; } else { bson_empty( scope ); } } -bson_date_t bson_iterator_date( const bson_iterator *i ) { +MONGO_EXPORT bson_date_t bson_iterator_date( const bson_iterator *i ) { return bson_iterator_long_raw( i ); } -time_t bson_iterator_time_t( const bson_iterator *i ) { +MONGO_EXPORT time_t bson_iterator_time_t( const bson_iterator *i ) { return bson_iterator_date( i ) / 1000; } -int bson_iterator_bin_len( const bson_iterator *i ) { +MONGO_EXPORT int bson_iterator_bin_len( const bson_iterator *i ) { return ( bson_iterator_bin_type( i ) == BSON_BIN_BINARY_OLD ) ? bson_iterator_int_raw( i ) - 4 : bson_iterator_int_raw( i ); } -char bson_iterator_bin_type( const bson_iterator *i ) { +MONGO_EXPORT char bson_iterator_bin_type( const bson_iterator *i ) { return bson_iterator_value( i )[4]; } -const char *bson_iterator_bin_data( const bson_iterator *i ) { +MONGO_EXPORT const char *bson_iterator_bin_data( const bson_iterator *i ) { return ( bson_iterator_bin_type( i ) == BSON_BIN_BINARY_OLD ) ? bson_iterator_value( i ) + 9 : bson_iterator_value( i ) + 5; } -const char *bson_iterator_regex( const bson_iterator *i ) { +MONGO_EXPORT const char *bson_iterator_regex( const bson_iterator *i ) { return bson_iterator_value( i ); } -const char *bson_iterator_regex_opts( const bson_iterator *i ) { +MONGO_EXPORT const char *bson_iterator_regex_opts( const bson_iterator *i ) { const char *p = bson_iterator_value( i ); return p + strlen( p ) + 1; } -void bson_iterator_subobject( const bson_iterator *i, bson *sub ) { +MONGO_EXPORT void bson_iterator_subobject( const bson_iterator *i, bson *sub ) { bson_init_data( sub, ( char * )bson_iterator_value( i ) ); _bson_reset( sub ); sub->finished = 1; } -void bson_iterator_subiterator( const bson_iterator *i, bson_iterator *sub ) { +MONGO_EXPORT void bson_iterator_subiterator( const bson_iterator *i, bson_iterator *sub ) { bson_iterator_from_buffer( sub, bson_iterator_value( i ) ); } @@ -578,7 +623,7 @@ static void _bson_init_size( bson *b, int size ) { _bson_reset( b ); } -void bson_init( bson *b ) { +MONGO_EXPORT void bson_init( bson *b ) { _bson_init_size( b, initialBufferSize ); } @@ -635,7 +680,7 @@ int bson_ensure_space( bson *b, const int bytesNeeded ) { return BSON_OK; } -int bson_finish( bson *b ) { +MONGO_EXPORT int bson_finish( bson *b ) { int i; if( b->err & BSON_NOT_UTF8 ) @@ -652,12 +697,14 @@ int bson_finish( bson *b ) { return BSON_OK; } -void bson_destroy( bson *b ) { - bson_free( b->data ); - b->err = 0; - b->data = 0; - b->cur = 0; - b->finished = 1; +MONGO_EXPORT void bson_destroy( bson *b ) { + if (b) { + bson_free( b->data ); + b->err = 0; + b->data = 0; + b->cur = 0; + b->finished = 1; + } } static int bson_append_estart( bson *b, int type, const char *name, const int dataSize ) { @@ -686,41 +733,41 @@ static int bson_append_estart( bson *b, int type, const char *name, const int da BUILDING TYPES ------------------------------ */ -int bson_append_int( bson *b, const char *name, const int i ) { +MONGO_EXPORT int bson_append_int( bson *b, const char *name, const int i ) { if ( bson_append_estart( b, BSON_INT, name, 4 ) == BSON_ERROR ) return BSON_ERROR; bson_append32( b , &i ); return BSON_OK; } -int bson_append_long( bson *b, const char *name, const int64_t i ) { +MONGO_EXPORT int bson_append_long( bson *b, const char *name, const int64_t i ) { if ( bson_append_estart( b , BSON_LONG, name, 8 ) == BSON_ERROR ) return BSON_ERROR; bson_append64( b , &i ); return BSON_OK; } -int bson_append_double( bson *b, const char *name, const double d ) { +MONGO_EXPORT int bson_append_double( bson *b, const char *name, const double d ) { if ( bson_append_estart( b, BSON_DOUBLE, name, 8 ) == BSON_ERROR ) return BSON_ERROR; bson_append64( b , &d ); return BSON_OK; } -int bson_append_bool( bson *b, const char *name, const bson_bool_t i ) { +MONGO_EXPORT int bson_append_bool( bson *b, const char *name, const bson_bool_t i ) { if ( bson_append_estart( b, BSON_BOOL, name, 1 ) == BSON_ERROR ) return BSON_ERROR; bson_append_byte( b , i != 0 ); return BSON_OK; } -int bson_append_null( bson *b, const char *name ) { +MONGO_EXPORT int bson_append_null( bson *b, const char *name ) { if ( bson_append_estart( b , BSON_NULL, name, 0 ) == BSON_ERROR ) return BSON_ERROR; return BSON_OK; } -int bson_append_undefined( bson *b, const char *name ) { +MONGO_EXPORT int bson_append_undefined( bson *b, const char *name ) { if ( bson_append_estart( b, BSON_UNDEFINED, name, 0 ) == BSON_ERROR ) return BSON_ERROR; return BSON_OK; @@ -741,31 +788,31 @@ int bson_append_string_base( bson *b, const char *name, return BSON_OK; } -int bson_append_string( bson *b, const char *name, const char *value ) { +MONGO_EXPORT int bson_append_string( bson *b, const char *name, const char *value ) { return bson_append_string_base( b, name, value, strlen ( value ), BSON_STRING ); } -int bson_append_symbol( bson *b, const char *name, const char *value ) { +MONGO_EXPORT int bson_append_symbol( bson *b, const char *name, const char *value ) { return bson_append_string_base( b, name, value, strlen ( value ), BSON_SYMBOL ); } -int bson_append_code( bson *b, const char *name, const char *value ) { +MONGO_EXPORT int bson_append_code( bson *b, const char *name, const char *value ) { return bson_append_string_base( b, name, value, strlen ( value ), BSON_CODE ); } -int bson_append_string_n( bson *b, const char *name, const char *value, int len ) { +MONGO_EXPORT int bson_append_string_n( bson *b, const char *name, const char *value, int len ) { return bson_append_string_base( b, name, value, len, BSON_STRING ); } -int bson_append_symbol_n( bson *b, const char *name, const char *value, int len ) { +MONGO_EXPORT int bson_append_symbol_n( bson *b, const char *name, const char *value, int len ) { return bson_append_string_base( b, name, value, len, BSON_SYMBOL ); } -int bson_append_code_n( bson *b, const char *name, const char *value, int len ) { +MONGO_EXPORT int bson_append_code_n( bson *b, const char *name, const char *value, int len ) { return bson_append_string_base( b, name, value, len, BSON_CODE ); } -int bson_append_code_w_scope_n( bson *b, const char *name, +MONGO_EXPORT int bson_append_code_w_scope_n( bson *b, const char *name, const char *code, int len, const bson *scope ) { int sl = len + 1; @@ -779,11 +826,11 @@ int bson_append_code_w_scope_n( bson *b, const char *name, return BSON_OK; } -int bson_append_code_w_scope( bson *b, const char *name, const char *code, const bson *scope ) { +MONGO_EXPORT int bson_append_code_w_scope( bson *b, const char *name, const char *code, const bson *scope ) { return bson_append_code_w_scope_n( b, name, code, strlen ( code ), scope ); } -int bson_append_binary( bson *b, const char *name, char type, const char *str, int len ) { +MONGO_EXPORT int bson_append_binary( bson *b, const char *name, char type, const char *str, int len ) { if ( type == BSON_BIN_BINARY_OLD ) { int subtwolen = len + 4; if ( bson_append_estart( b, BSON_BINDATA, name, 4+1+4+len ) == BSON_ERROR ) @@ -802,20 +849,20 @@ int bson_append_binary( bson *b, const char *name, char type, const char *str, i return BSON_OK; } -int bson_append_oid( bson *b, const char *name, const bson_oid_t *oid ) { +MONGO_EXPORT int bson_append_oid( bson *b, const char *name, const bson_oid_t *oid ) { if ( bson_append_estart( b, BSON_OID, name, 12 ) == BSON_ERROR ) return BSON_ERROR; bson_append( b , oid , 12 ); return BSON_OK; } -int bson_append_new_oid( bson *b, const char *name ) { +MONGO_EXPORT int bson_append_new_oid( bson *b, const char *name ) { bson_oid_t oid; bson_oid_gen( &oid ); return bson_append_oid( b, name, &oid ); } -int bson_append_regex( bson *b, const char *name, const char *pattern, const char *opts ) { +MONGO_EXPORT int bson_append_regex( bson *b, const char *name, const char *pattern, const char *opts ) { const int plen = strlen( pattern )+1; const int olen = strlen( opts )+1; if ( bson_append_estart( b, BSON_REGEX, name, plen + olen ) == BSON_ERROR ) @@ -827,14 +874,14 @@ int bson_append_regex( bson *b, const char *name, const char *pattern, const cha return BSON_OK; } -int bson_append_bson( bson *b, const char *name, const bson *bson ) { +MONGO_EXPORT int bson_append_bson( bson *b, const char *name, const bson *bson ) { if ( bson_append_estart( b, BSON_OBJECT, name, bson_size( bson ) ) == BSON_ERROR ) return BSON_ERROR; bson_append( b , bson->data , bson_size( bson ) ); return BSON_OK; } -int bson_append_element( bson *b, const char *name_or_null, const bson_iterator *elem ) { +MONGO_EXPORT int bson_append_element( bson *b, const char *name_or_null, const bson_iterator *elem ) { bson_iterator next = *elem; int size; @@ -854,7 +901,7 @@ int bson_append_element( bson *b, const char *name_or_null, const bson_iterator return BSON_OK; } -int bson_append_timestamp( bson *b, const char *name, bson_timestamp_t *ts ) { +MONGO_EXPORT int bson_append_timestamp( bson *b, const char *name, bson_timestamp_t *ts ) { if ( bson_append_estart( b, BSON_TIMESTAMP, name, 8 ) == BSON_ERROR ) return BSON_ERROR; bson_append32( b , &( ts->i ) ); @@ -863,31 +910,39 @@ int bson_append_timestamp( bson *b, const char *name, bson_timestamp_t *ts ) { return BSON_OK; } -int bson_append_date( bson *b, const char *name, bson_date_t millis ) { +MONGO_EXPORT int bson_append_timestamp2( bson *b, const char *name, int time, int increment ) { + if ( bson_append_estart( b, BSON_TIMESTAMP, name, 8 ) == BSON_ERROR ) return BSON_ERROR; + + bson_append32( b , &increment ); + bson_append32( b , &time ); + return BSON_OK; +} + +MONGO_EXPORT int bson_append_date( bson *b, const char *name, bson_date_t millis ) { if ( bson_append_estart( b, BSON_DATE, name, 8 ) == BSON_ERROR ) return BSON_ERROR; bson_append64( b , &millis ); return BSON_OK; } -int bson_append_time_t( bson *b, const char *name, time_t secs ) { +MONGO_EXPORT int bson_append_time_t( bson *b, const char *name, time_t secs ) { return bson_append_date( b, name, ( bson_date_t )secs * 1000 ); } -int bson_append_start_object( bson *b, const char *name ) { +MONGO_EXPORT int bson_append_start_object( bson *b, const char *name ) { if ( bson_append_estart( b, BSON_OBJECT, name, 5 ) == BSON_ERROR ) return BSON_ERROR; b->stack[ b->stackPos++ ] = b->cur - b->data; bson_append32( b , &zero ); return BSON_OK; } -int bson_append_start_array( bson *b, const char *name ) { +MONGO_EXPORT int bson_append_start_array( bson *b, const char *name ) { if ( bson_append_estart( b, BSON_ARRAY, name, 5 ) == BSON_ERROR ) return BSON_ERROR; b->stack[ b->stackPos++ ] = b->cur - b->data; bson_append32( b , &zero ); return BSON_OK; } -int bson_append_finish_object( bson *b ) { +MONGO_EXPORT int bson_append_finish_object( bson *b ) { char *start; int i; if ( bson_ensure_space( b, 1 ) == BSON_ERROR ) return BSON_ERROR; @@ -900,22 +955,25 @@ int bson_append_finish_object( bson *b ) { return BSON_OK; } -int bson_append_finish_array( bson *b ) { - return bson_append_finish_object( b ); +MONGO_EXPORT double bson_int64_to_double( int64_t i64 ) { + return (double)i64; } +MONGO_EXPORT int bson_append_finish_array( bson *b ) { + return bson_append_finish_object( b ); +} /* Error handling and allocators. */ static bson_err_handler err_handler = NULL; -bson_err_handler set_bson_err_handler( bson_err_handler func ) { +MONGO_EXPORT bson_err_handler set_bson_err_handler( bson_err_handler func ) { bson_err_handler old = err_handler; err_handler = func; return old; } -void *bson_malloc( int size ) { +MONGO_EXPORT void *bson_malloc( int size ) { void *p; p = bson_malloc_func( size ); bson_fatal_msg( !!p, "malloc() failed" ); @@ -933,7 +991,9 @@ int _bson_errprintf( const char *format, ... ) { va_list ap; int ret; va_start( ap, format ); +#ifndef R_SAFETY_NET ret = vfprintf( stderr, format, ap ); +#endif va_end( ap ); return ret; @@ -961,9 +1021,10 @@ void bson_fatal_msg( int ok , const char *msg ) { if ( err_handler ) { err_handler( msg ); } - +#ifndef R_SAFETY_NET bson_errprintf( "error: %s\n" , msg ); exit( -5 ); +#endif } @@ -976,3 +1037,28 @@ void bson_numstr( char *str, int i ) { else bson_sprintf( str,"%d", i ); } + +MONGO_EXPORT void bson_swap_endian64( void *outp, const void *inp ) { + const char *in = ( const char * )inp; + char *out = ( char * )outp; + + out[0] = in[7]; + out[1] = in[6]; + out[2] = in[5]; + out[3] = in[4]; + out[4] = in[3]; + out[5] = in[2]; + out[6] = in[1]; + out[7] = in[0]; + +} + +MONGO_EXPORT void bson_swap_endian32( void *outp, const void *inp ) { + const char *in = ( const char * )inp; + char *out = ( char * )outp; + + out[0] = in[3]; + out[1] = in[2]; + out[2] = in[1]; + out[3] = in[0]; +} diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.h index 2e385b9160..b83d1ca9c9 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.h +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/bson.h @@ -3,7 +3,7 @@ * @brief BSON Declarations */ -/* Copyright 2009-2011 10gen Inc. +/* Copyright 2009-2012 10gen Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,16 +18,63 @@ * limitations under the License. */ -#ifndef _BSON_H_ -#define _BSON_H_ +#ifndef BSON_H_ +#define BSON_H_ -#include "platform.h" #include #include #include #include #include +#ifdef __GNUC__ + #define MONGO_INLINE static __inline__ + #define MONGO_EXPORT +#else + #define MONGO_INLINE static + #ifdef MONGO_STATIC_BUILD + #define MONGO_EXPORT + #elif defined(MONGO_DLL_BUILD) + #define MONGO_EXPORT __declspec(dllexport) + #else + #define MONGO_EXPORT __declspec(dllimport) + #endif +#endif + +#ifdef __cplusplus +#define MONGO_EXTERN_C_START extern "C" { +#define MONGO_EXTERN_C_END } +#else +#define MONGO_EXTERN_C_START +#define MONGO_EXTERN_C_END +#endif + +#if defined(MONGO_HAVE_STDINT) || __STDC_VERSION__ >= 199901L +#include +#elif defined(MONGO_HAVE_UNISTD) +#include +#elif defined(MONGO_USE__INT64) +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#elif defined(MONGO_USE_LONG_LONG_INT) +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#else +#error Must compile with c99 or define MONGO_HAVE_STDINT, MONGO_HAVE_UNISTD, MONGO_USE__INT64, or MONGO_USE_LONG_INT. +#endif + +#ifdef MONGO_BIG_ENDIAN +#define bson_little_endian64(out, in) ( bson_swap_endian64(out, in) ) +#define bson_little_endian32(out, in) ( bson_swap_endian32(out, in) ) +#define bson_big_endian64(out, in) ( memcpy(out, in, 8) ) +#define bson_big_endian32(out, in) ( memcpy(out, in, 4) ) +#else +#define bson_little_endian64(out, in) ( memcpy(out, in, 8) ) +#define bson_little_endian32(out, in) ( memcpy(out, in, 4) ) +#define bson_big_endian64(out, in) ( bson_swap_endian64(out, in) ) +#define bson_big_endian32(out, in) ( bson_swap_endian32(out, in) ) +#endif + MONGO_EXTERN_C_START #define BSON_OK 0 @@ -84,12 +131,12 @@ typedef struct { } bson_iterator; typedef struct { - char *data; - char *cur; - int dataSize; - bson_bool_t finished; - int stack[32]; - int stackPos; + char *data; /**< Pointer to a block of data in this BSON object. */ + char *cur; /**< Pointer to the current position. */ + int dataSize; /**< The number of bytes allocated to char *data. */ + bson_bool_t finished; /**< When finished, the BSON object can no longer be modified. */ + int stack[32]; /**< A stack used to keep track of nested BSON elements. */ + int stackPos; /**< Index of current stack position. */ int err; /**< Bitfield representing errors or warnings on this buffer */ char *errstr; /**< A string representation of the most recent error or warning. */ } bson; @@ -112,6 +159,9 @@ typedef struct { READING ------------------------------ */ +MONGO_EXPORT bson* bson_create(); +MONGO_EXPORT void bson_dispose(bson* b); + /** * Size of a BSON object. * @@ -119,21 +169,22 @@ typedef struct { * * @return the size. */ -int bson_size( const bson *b ); +MONGO_EXPORT int bson_size( const bson *b ); +MONGO_EXPORT int bson_buffer_size( const bson *b ); /** * Print a string representation of a BSON object. * * @param b the BSON object to print. */ -void bson_print( bson *b ); +MONGO_EXPORT void bson_print( const bson *b ); /** * Return a pointer to the raw buffer stored by this bson object. * * @param b a BSON object */ -const char *bson_data( bson *b ); +MONGO_EXPORT const char *bson_data( const bson *b ); /** * Print a string representation of a BSON object. @@ -141,7 +192,7 @@ const char *bson_data( bson *b ); * @param bson the raw data to print. * @param depth the depth to recurse the object.x */ -void bson_print_raw( const char *bson , int depth ); +MONGO_EXPORT void bson_print_raw( const char *bson , int depth ); /** * Advance a bson_iterator to the named field. @@ -152,15 +203,18 @@ void bson_print_raw( const char *bson , int depth ); * * @return the type of the found object or BSON_EOO if it is not found. */ -bson_type bson_find( bson_iterator *it, const bson *obj, const char *name ); +MONGO_EXPORT bson_type bson_find( bson_iterator *it, const bson *obj, const char *name ); + +MONGO_EXPORT bson_iterator* bson_iterator_create(); +MONGO_EXPORT void bson_iterator_dispose(bson_iterator*); /** * Initialize a bson_iterator. * * @param i the bson_iterator to initialize. * @param bson the BSON object to associate with the iterator. */ -void bson_iterator_init( bson_iterator *i , const bson *b ); +MONGO_EXPORT void bson_iterator_init( bson_iterator *i , const bson *b ); /** * Initialize a bson iterator from a const char* buffer. Note @@ -169,7 +223,7 @@ void bson_iterator_init( bson_iterator *i , const bson *b ); * @param i the bson_iterator to initialize. * @param buffer the buffer to point to. */ -void bson_iterator_from_buffer( bson_iterator *i, const char *buffer ); +MONGO_EXPORT void bson_iterator_from_buffer( bson_iterator *i, const char *buffer ); /* more returns true for eoo. best to loop with bson_iterator_next(&it) */ /** @@ -179,7 +233,7 @@ void bson_iterator_from_buffer( bson_iterator *i, const char *buffer ); * * @return returns true if there is more data. */ -bson_bool_t bson_iterator_more( const bson_iterator *i ); +MONGO_EXPORT bson_bool_t bson_iterator_more( const bson_iterator *i ); /** * Point the iterator at the next BSON object. @@ -188,7 +242,7 @@ bson_bool_t bson_iterator_more( const bson_iterator *i ); * * @return the type of the next BSON object. */ -bson_type bson_iterator_next( bson_iterator *i ); +MONGO_EXPORT bson_type bson_iterator_next( bson_iterator *i ); /** * Get the type of the BSON object currently pointed to by the iterator. @@ -197,7 +251,7 @@ bson_type bson_iterator_next( bson_iterator *i ); * * @return the type of the current BSON object. */ -bson_type bson_iterator_type( const bson_iterator *i ); +MONGO_EXPORT bson_type bson_iterator_type( const bson_iterator *i ); /** * Get the key of the BSON object currently pointed to by the iterator. @@ -206,7 +260,7 @@ bson_type bson_iterator_type( const bson_iterator *i ); * * @return the key of the current BSON object. */ -const char *bson_iterator_key( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_key( const bson_iterator *i ); /** * Get the value of the BSON object currently pointed to by the iterator. @@ -215,7 +269,7 @@ const char *bson_iterator_key( const bson_iterator *i ); * * @return the value of the current BSON object. */ -const char *bson_iterator_value( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_value( const bson_iterator *i ); /* these convert to the right type (return 0 if non-numeric) */ /** @@ -226,7 +280,7 @@ const char *bson_iterator_value( const bson_iterator *i ); * * @return the value of the current BSON object. */ -double bson_iterator_double( const bson_iterator *i ); +MONGO_EXPORT double bson_iterator_double( const bson_iterator *i ); /** * Get the int value of the BSON object currently pointed to by the iterator. @@ -235,7 +289,7 @@ double bson_iterator_double( const bson_iterator *i ); * * @return the value of the current BSON object. */ -int bson_iterator_int( const bson_iterator *i ); +MONGO_EXPORT int bson_iterator_int( const bson_iterator *i ); /** * Get the long value of the BSON object currently pointed to by the iterator. @@ -244,7 +298,7 @@ int bson_iterator_int( const bson_iterator *i ); * * @return the value of the current BSON object. */ -int64_t bson_iterator_long( const bson_iterator *i ); +MONGO_EXPORT int64_t bson_iterator_long( const bson_iterator *i ); /* return the bson timestamp as a whole or in parts */ /** @@ -255,7 +309,9 @@ int64_t bson_iterator_long( const bson_iterator *i ); * * @return the value of the current BSON object. */ -bson_timestamp_t bson_iterator_timestamp( const bson_iterator *i ); +MONGO_EXPORT bson_timestamp_t bson_iterator_timestamp( const bson_iterator *i ); +MONGO_EXPORT int bson_iterator_timestamp_time( const bson_iterator *i ); +MONGO_EXPORT int bson_iterator_timestamp_increment( const bson_iterator *i ); /** * Get the boolean value of the BSON object currently pointed to by @@ -267,7 +323,7 @@ bson_timestamp_t bson_iterator_timestamp( const bson_iterator *i ); */ /* false: boolean false, 0 in any type, or null */ /* true: anything else (even empty strings and objects) */ -bson_bool_t bson_iterator_bool( const bson_iterator *i ); +MONGO_EXPORT bson_bool_t bson_iterator_bool( const bson_iterator *i ); /** * Get the double value of the BSON object currently pointed to by the @@ -318,7 +374,7 @@ bson_bool_t bson_iterator_bool_raw( const bson_iterator *i ); * * @return the value of the current BSON object. */ -bson_oid_t *bson_iterator_oid( const bson_iterator *i ); +MONGO_EXPORT bson_oid_t *bson_iterator_oid( const bson_iterator *i ); /** * Get the string value of the BSON object currently pointed to by the @@ -329,7 +385,7 @@ bson_oid_t *bson_iterator_oid( const bson_iterator *i ); * @return the value of the current BSON object. */ /* these can also be used with bson_code and bson_symbol*/ -const char *bson_iterator_string( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_string( const bson_iterator *i ); /** * Get the string length of the BSON object currently pointed to by the @@ -352,7 +408,7 @@ int bson_iterator_string_len( const bson_iterator *i ); */ /* works with bson_code, bson_codewscope, and BSON_STRING */ /* returns NULL for everything else */ -const char *bson_iterator_code( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_code( const bson_iterator *i ); /** * Calls bson_empty on scope if not a bson_codewscope @@ -361,7 +417,7 @@ const char *bson_iterator_code( const bson_iterator *i ); * @param scope the bson scope. */ /* calls bson_empty on scope if not a bson_codewscope */ -void bson_iterator_code_scope( const bson_iterator *i, bson *scope ); +MONGO_EXPORT void bson_iterator_code_scope( const bson_iterator *i, bson *scope ); /** * Get the date value of the BSON object currently pointed to by the @@ -372,7 +428,7 @@ void bson_iterator_code_scope( const bson_iterator *i, bson *scope ); * @return the date value of the current BSON object. */ /* both of these only work with bson_date */ -bson_date_t bson_iterator_date( const bson_iterator *i ); +MONGO_EXPORT bson_date_t bson_iterator_date( const bson_iterator *i ); /** * Get the time value of the BSON object currently pointed to by the @@ -382,7 +438,7 @@ bson_date_t bson_iterator_date( const bson_iterator *i ); * * @return the time value of the current BSON object. */ -time_t bson_iterator_time_t( const bson_iterator *i ); +MONGO_EXPORT time_t bson_iterator_time_t( const bson_iterator *i ); /** * Get the length of the BSON binary object currently pointed to by the @@ -392,7 +448,7 @@ time_t bson_iterator_time_t( const bson_iterator *i ); * * @return the length of the current BSON binary object. */ -int bson_iterator_bin_len( const bson_iterator *i ); +MONGO_EXPORT int bson_iterator_bin_len( const bson_iterator *i ); /** * Get the type of the BSON binary object currently pointed to by the @@ -402,7 +458,7 @@ int bson_iterator_bin_len( const bson_iterator *i ); * * @return the type of the current BSON binary object. */ -char bson_iterator_bin_type( const bson_iterator *i ); +MONGO_EXPORT char bson_iterator_bin_type( const bson_iterator *i ); /** * Get the value of the BSON binary object currently pointed to by the @@ -412,7 +468,7 @@ char bson_iterator_bin_type( const bson_iterator *i ); * * @return the value of the current BSON binary object. */ -const char *bson_iterator_bin_data( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_bin_data( const bson_iterator *i ); /** * Get the value of the BSON regex object currently pointed to by the @@ -422,7 +478,7 @@ const char *bson_iterator_bin_data( const bson_iterator *i ); * * @return the value of the current BSON regex object. */ -const char *bson_iterator_regex( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_regex( const bson_iterator *i ); /** * Get the options of the BSON regex object currently pointed to by the @@ -432,7 +488,7 @@ const char *bson_iterator_regex( const bson_iterator *i ); * * @return the options of the current BSON regex object. */ -const char *bson_iterator_regex_opts( const bson_iterator *i ); +MONGO_EXPORT const char *bson_iterator_regex_opts( const bson_iterator *i ); /* these work with BSON_OBJECT and BSON_ARRAY */ /** @@ -442,7 +498,7 @@ const char *bson_iterator_regex_opts( const bson_iterator *i ); * @param i the bson_iterator. * @param sub the BSON subobject destination. */ -void bson_iterator_subobject( const bson_iterator *i, bson *sub ); +MONGO_EXPORT void bson_iterator_subobject( const bson_iterator *i, bson *sub ); /** * Get a bson_iterator that on the BSON subobject. @@ -450,7 +506,7 @@ void bson_iterator_subobject( const bson_iterator *i, bson *sub ); * @param i the bson_iterator. * @param sub the iterator to point at the BSON subobject. */ -void bson_iterator_subiterator( const bson_iterator *i, bson_iterator *sub ); +MONGO_EXPORT void bson_iterator_subiterator( const bson_iterator *i, bson_iterator *sub ); /* str must be at least 24 hex chars + null byte */ /** @@ -459,7 +515,7 @@ void bson_iterator_subiterator( const bson_iterator *i, bson_iterator *sub ); * @param oid the bson_oid_t destination. * @param str a null terminated string comprised of at least 24 hex chars. */ -void bson_oid_from_string( bson_oid_t *oid, const char *str ); +MONGO_EXPORT void bson_oid_from_string( bson_oid_t *oid, const char *str ); /** * Create a string representation of the bson_oid_t. @@ -467,14 +523,14 @@ void bson_oid_from_string( bson_oid_t *oid, const char *str ); * @param oid the bson_oid_t source. * @param str the string representation destination. */ -void bson_oid_to_string( const bson_oid_t *oid, char *str ); +MONGO_EXPORT void bson_oid_to_string( const bson_oid_t *oid, char *str ); /** * Create a bson_oid object. * * @param oid the destination for the newly created bson_oid_t. */ -void bson_oid_gen( bson_oid_t *oid ); +MONGO_EXPORT void bson_oid_gen( bson_oid_t *oid ); /** * Set a function to be used to generate the second four bytes @@ -482,7 +538,7 @@ void bson_oid_gen( bson_oid_t *oid ); * * @param func a pointer to a function that returns an int. */ -void bson_set_oid_fuzz( int ( *func )( void ) ); +MONGO_EXPORT void bson_set_oid_fuzz( int ( *func )( void ) ); /** * Set a function to be used to generate the incrementing part @@ -491,14 +547,14 @@ void bson_set_oid_fuzz( int ( *func )( void ) ); * * @param func a pointer to a function that returns an int. */ -void bson_set_oid_inc( int ( *func )( void ) ); +MONGO_EXPORT void bson_set_oid_inc( int ( *func )( void ) ); /** * Get the time a bson_oid_t was created. * * @param oid the bson_oid_t. */ -time_t bson_oid_generated_time( bson_oid_t *oid ); /* Gives the time the OID was created */ +MONGO_EXPORT time_t bson_oid_generated_time( bson_oid_t *oid ); /* Gives the time the OID was created */ /* ---------------------------- BUILDING @@ -512,7 +568,7 @@ time_t bson_oid_generated_time( bson_oid_t *oid ); /* Gives the time the OID was * @note When finished, you must pass the bson object to * bson_destroy( ). */ -void bson_init( bson *b ); +MONGO_EXPORT void bson_init( bson *b ); /** * Initialize a BSON object, and point its data @@ -524,6 +580,7 @@ void bson_init( bson *b ); * @return BSON_OK or BSON_ERROR. */ int bson_init_data( bson *b , char *data ); +int bson_init_finished_data( bson *b, char *data ) ; /** * Initialize a BSON object, and set its @@ -555,7 +612,7 @@ int bson_ensure_space( bson *b, const int bytesNeeded ); * @return the standard error code. To deallocate memory, * call bson_destroy on the bson object. */ -int bson_finish( bson *b ); +MONGO_EXPORT int bson_finish( bson *b ); /** * Destroy a bson object. @@ -563,7 +620,7 @@ int bson_finish( bson *b ); * @param b the bson object to destroy. * */ -void bson_destroy( bson *b ); +MONGO_EXPORT void bson_destroy( bson *b ); /** * Returns a pointer to a static empty BSON object. @@ -573,23 +630,17 @@ void bson_destroy( bson *b ); * @return the empty initialized BSON object. */ /* returns pointer to static empty bson object */ -bson *bson_empty( bson *obj ); - -/** - * Copy BSON data only from one object to another. - * - * @param out the copy destination BSON object. - * @param in the copy source BSON object. - */ -void bson_copy_basic( bson *out, const bson *in ); +MONGO_EXPORT bson *bson_empty( bson *obj ); /** * Make a complete copy of the a BSON object. + * The source bson object must be in a finished + * state; otherwise, the copy will fail. * * @param out the copy destination BSON object. * @param in the copy source BSON object. */ -void bson_copy( bson *out, const bson *in ); /* puts data in new buffer. NOOP if out==NULL */ +MONGO_EXPORT int bson_copy( bson *out, const bson *in ); /* puts data in new buffer. NOOP if out==NULL */ /** * Append a previously created bson_oid_t to a bson object. @@ -600,7 +651,7 @@ void bson_copy( bson *out, const bson *in ); /* puts data in new buffer. NOOP if * * @return BSON_OK or BSON_ERROR. */ -int bson_append_oid( bson *b, const char *name, const bson_oid_t *oid ); +MONGO_EXPORT int bson_append_oid( bson *b, const char *name, const bson_oid_t *oid ); /** * Append a bson_oid_t to a bson. @@ -610,7 +661,7 @@ int bson_append_oid( bson *b, const char *name, const bson_oid_t *oid ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_new_oid( bson *b, const char *name ); +MONGO_EXPORT int bson_append_new_oid( bson *b, const char *name ); /** * Append an int to a bson. @@ -621,7 +672,7 @@ int bson_append_new_oid( bson *b, const char *name ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_int( bson *b, const char *name, const int i ); +MONGO_EXPORT int bson_append_int( bson *b, const char *name, const int i ); /** * Append an long to a bson. @@ -632,7 +683,7 @@ int bson_append_int( bson *b, const char *name, const int i ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_long( bson *b, const char *name, const int64_t i ); +MONGO_EXPORT int bson_append_long( bson *b, const char *name, const int64_t i ); /** * Append an double to a bson. @@ -643,7 +694,7 @@ int bson_append_long( bson *b, const char *name, const int64_t i ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_double( bson *b, const char *name, const double d ); +MONGO_EXPORT int bson_append_double( bson *b, const char *name, const double d ); /** * Append a string to a bson. @@ -654,7 +705,7 @@ int bson_append_double( bson *b, const char *name, const double d ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_string( bson *b, const char *name, const char *str ); +MONGO_EXPORT int bson_append_string( bson *b, const char *name, const char *str ); /** * Append len bytes of a string to a bson. @@ -666,7 +717,7 @@ int bson_append_string( bson *b, const char *name, const char *str ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_string_n( bson *b, const char *name, const char *str, int len ); +MONGO_EXPORT int bson_append_string_n( bson *b, const char *name, const char *str, int len ); /** * Append a symbol to a bson. @@ -677,7 +728,7 @@ int bson_append_string_n( bson *b, const char *name, const char *str, int len ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_symbol( bson *b, const char *name, const char *str ); +MONGO_EXPORT int bson_append_symbol( bson *b, const char *name, const char *str ); /** * Append len bytes of a symbol to a bson. @@ -689,7 +740,7 @@ int bson_append_symbol( bson *b, const char *name, const char *str ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_symbol_n( bson *b, const char *name, const char *str, int len ); +MONGO_EXPORT int bson_append_symbol_n( bson *b, const char *name, const char *str, int len ); /** * Append code to a bson. @@ -701,7 +752,7 @@ int bson_append_symbol_n( bson *b, const char *name, const char *str, int len ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_code( bson *b, const char *name, const char *str ); +MONGO_EXPORT int bson_append_code( bson *b, const char *name, const char *str ); /** * Append len bytes of code to a bson. @@ -713,7 +764,7 @@ int bson_append_code( bson *b, const char *name, const char *str ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_code_n( bson *b, const char *name, const char *str, int len ); +MONGO_EXPORT int bson_append_code_n( bson *b, const char *name, const char *str, int len ); /** * Append code to a bson with scope. @@ -725,7 +776,7 @@ int bson_append_code_n( bson *b, const char *name, const char *str, int len ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_code_w_scope( bson *b, const char *name, const char *code, const bson *scope ); +MONGO_EXPORT int bson_append_code_w_scope( bson *b, const char *name, const char *code, const bson *scope ); /** * Append len bytes of code to a bson with scope. @@ -738,7 +789,7 @@ int bson_append_code_w_scope( bson *b, const char *name, const char *code, const * * @return BSON_OK or BSON_ERROR. */ -int bson_append_code_w_scope_n( bson *b, const char *name, const char *code, int size, const bson *scope ); +MONGO_EXPORT int bson_append_code_w_scope_n( bson *b, const char *name, const char *code, int size, const bson *scope ); /** * Append binary data to a bson. @@ -751,7 +802,7 @@ int bson_append_code_w_scope_n( bson *b, const char *name, const char *code, int * * @return BSON_OK or BSON_ERROR. */ -int bson_append_binary( bson *b, const char *name, char type, const char *str, int len ); +MONGO_EXPORT int bson_append_binary( bson *b, const char *name, char type, const char *str, int len ); /** * Append a bson_bool_t to a bson. @@ -762,7 +813,7 @@ int bson_append_binary( bson *b, const char *name, char type, const char *str, i * * @return BSON_OK or BSON_ERROR. */ -int bson_append_bool( bson *b, const char *name, const bson_bool_t v ); +MONGO_EXPORT int bson_append_bool( bson *b, const char *name, const bson_bool_t v ); /** * Append a null value to a bson. @@ -772,7 +823,7 @@ int bson_append_bool( bson *b, const char *name, const bson_bool_t v ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_null( bson *b, const char *name ); +MONGO_EXPORT int bson_append_null( bson *b, const char *name ); /** * Append an undefined value to a bson. @@ -782,7 +833,7 @@ int bson_append_null( bson *b, const char *name ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_undefined( bson *b, const char *name ); +MONGO_EXPORT int bson_append_undefined( bson *b, const char *name ); /** * Append a regex value to a bson. @@ -794,7 +845,7 @@ int bson_append_undefined( bson *b, const char *name ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_regex( bson *b, const char *name, const char *pattern, const char *opts ); +MONGO_EXPORT int bson_append_regex( bson *b, const char *name, const char *pattern, const char *opts ); /** * Append bson data to a bson. @@ -805,7 +856,7 @@ int bson_append_regex( bson *b, const char *name, const char *pattern, const cha * * @return BSON_OK or BSON_ERROR. */ -int bson_append_bson( bson *b, const char *name, const bson *bson ); +MONGO_EXPORT int bson_append_bson( bson *b, const char *name, const bson *bson ); /** * Append a BSON element to a bson from the current point of an iterator. @@ -816,7 +867,7 @@ int bson_append_bson( bson *b, const char *name, const bson *bson ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_element( bson *b, const char *name_or_null, const bson_iterator *elem ); +MONGO_EXPORT int bson_append_element( bson *b, const char *name_or_null, const bson_iterator *elem ); /** * Append a bson_timestamp_t value to a bson. @@ -827,7 +878,8 @@ int bson_append_element( bson *b, const char *name_or_null, const bson_iterator * * @return BSON_OK or BSON_ERROR. */ -int bson_append_timestamp( bson *b, const char *name, bson_timestamp_t *ts ); +MONGO_EXPORT int bson_append_timestamp( bson *b, const char *name, bson_timestamp_t *ts ); +MONGO_EXPORT int bson_append_timestamp2( bson *b, const char *name, int time, int increment ); /* these both append a bson_date */ /** @@ -839,7 +891,7 @@ int bson_append_timestamp( bson *b, const char *name, bson_timestamp_t *ts ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_date( bson *b, const char *name, bson_date_t millis ); +MONGO_EXPORT int bson_append_date( bson *b, const char *name, bson_date_t millis ); /** * Append a time_t value to a bson. @@ -850,7 +902,7 @@ int bson_append_date( bson *b, const char *name, bson_date_t millis ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_time_t( bson *b, const char *name, time_t secs ); +MONGO_EXPORT int bson_append_time_t( bson *b, const char *name, time_t secs ); /** * Start appending a new object to a bson. @@ -860,7 +912,7 @@ int bson_append_time_t( bson *b, const char *name, time_t secs ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_start_object( bson *b, const char *name ); +MONGO_EXPORT int bson_append_start_object( bson *b, const char *name ); /** * Start appending a new array to a bson. @@ -870,7 +922,7 @@ int bson_append_start_object( bson *b, const char *name ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_start_array( bson *b, const char *name ); +MONGO_EXPORT int bson_append_start_array( bson *b, const char *name ); /** * Finish appending a new object or array to a bson. @@ -879,7 +931,7 @@ int bson_append_start_array( bson *b, const char *name ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_finish_object( bson *b ); +MONGO_EXPORT int bson_append_finish_object( bson *b ); /** * Finish appending a new object or array to a bson. This @@ -889,13 +941,13 @@ int bson_append_finish_object( bson *b ); * * @return BSON_OK or BSON_ERROR. */ -int bson_append_finish_array( bson *b ); +MONGO_EXPORT int bson_append_finish_array( bson *b ); void bson_numstr( char *str, int i ); void bson_incnumstr( char *str ); -/* Error handling and stadard library function over-riding. */ +/* Error handling and standard library function over-riding. */ /* -------------------------------------------------------- */ /* bson_err_handlers shouldn't return!!! */ @@ -912,7 +964,6 @@ extern void ( *bson_free )( void * ); extern bson_printf_func bson_printf; extern bson_fprintf_func bson_fprintf; extern bson_sprintf_func bson_sprintf; - extern bson_printf_func bson_errprintf; /** @@ -924,7 +975,7 @@ extern bson_printf_func bson_errprintf; * * @sa malloc(3) */ -void *bson_malloc( int size ); +MONGO_EXPORT void *bson_malloc( int size ); /** * Changes the size of allocated memory and checks return value, @@ -946,7 +997,7 @@ void *bson_realloc( void *ptr, int size ); * * @return the old error handling function, or NULL. */ -bson_err_handler set_bson_err_handler( bson_err_handler func ); +MONGO_EXPORT bson_err_handler set_bson_err_handler( bson_err_handler func ); /* does nothing if ok != 0 */ /** @@ -971,5 +1022,15 @@ void bson_fatal_msg( int ok, const char *msg ); */ void bson_builder_error( bson *b ); +/** + * Cast an int64_t to double. This is necessary for embedding in + * certain environments. + * + */ +MONGO_EXPORT double bson_int64_to_double( int64_t i64 ); + +MONGO_EXPORT void bson_swap_endian32( void *outp, const void *inp ); +MONGO_EXPORT void bson_swap_endian64( void *outp, const void *inp ); + MONGO_EXTERN_C_END #endif diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.c index 8d2da1502f..00ecf18c92 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2011 10gen, Inc. + * Copyright 2009-2012 10gen, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.h index a2a07c6d5d..f13c31ee89 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.h +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/encoding.h @@ -1,5 +1,5 @@ /* - * Copyright 2009-2011 10gen, Inc. + * Copyright 2009-2012 10gen, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,8 +14,8 @@ * limitations under the License. */ -#ifndef _BSON_ENCODING_H_ -#define _BSON_ENCODING_H_ +#ifndef BSON_ENCODING_H_ +#define BSON_ENCODING_H_ MONGO_EXTERN_C_START diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env.h new file mode 100644 index 0000000000..463ee32f79 --- /dev/null +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env.h @@ -0,0 +1,39 @@ +/** @file env.h */ + +/* Copyright 2009-2012 10gen Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Header for generic net.h */ +#ifndef MONGO_ENV_H_ +#define MONGO_ENV_H_ + +#include "mongo.h" + +MONGO_EXTERN_C_START + +/* This is a no-op in the generic implementation. */ +int mongo_env_set_socket_op_timeout( mongo *conn, int millis ); +int mongo_env_read_socket( mongo *conn, void *buf, int len ); +int mongo_env_write_socket( mongo *conn, const void *buf, int len ); +int mongo_env_socket_connect( mongo *conn, const char *host, int port ); + +/* Initialize socket services */ +MONGO_EXPORT int mongo_env_sock_init( void ); + +/* Close a socket */ +MONGO_EXPORT int mongo_env_close_socket( int socket ); + +MONGO_EXTERN_C_END +#endif diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_posix.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_posix.c new file mode 100644 index 0000000000..f1020ca80d --- /dev/null +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_posix.c @@ -0,0 +1,165 @@ +/* env_posix.c */ + +/* Copyright 2009-2012 10gen Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Networking and other niceties for POSIX systems. */ +#include "env.h" +#include "mongo.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef NI_MAXSERV +# define NI_MAXSERV 32 +#endif + +int mongo_env_close_socket( int socket ) { + return close( socket ); +} + +int mongo_env_sock_init( void ) { + return 0; +} + +int mongo_env_write_socket( mongo *conn, const void *buf, int len ) { + const char *cbuf = buf; +#ifdef __APPLE__ + int flags = 0; +#else + int flags = MSG_NOSIGNAL; +#endif + + while ( len ) { + int sent = send( conn->sock, cbuf, len, flags ); + if ( sent == -1 ) { + if (errno == EPIPE) + conn->connected = 0; + __mongo_set_error( conn, MONGO_IO_ERROR, strerror( errno ), errno ); + return MONGO_ERROR; + } + cbuf += sent; + len -= sent; + } + + return MONGO_OK; +} + +int mongo_env_read_socket( mongo *conn, void *buf, int len ) { + char *cbuf = buf; + while ( len ) { + int sent = recv( conn->sock, cbuf, len, 0 ); + if ( sent == 0 || sent == -1 ) { + __mongo_set_error( conn, MONGO_IO_ERROR, strerror( errno ), errno ); + return MONGO_ERROR; + } + cbuf += sent; + len -= sent; + } + + return MONGO_OK; +} + +int mongo_env_set_socket_op_timeout( mongo *conn, int millis ) { + struct timeval tv; + tv.tv_sec = millis / 1000; + tv.tv_usec = ( millis % 1000 ) * 1000; + + if ( setsockopt( conn->sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof( tv ) ) == -1 ) { + conn->err = MONGO_IO_ERROR; + __mongo_set_error( conn, MONGO_IO_ERROR, "setsockopt SO_RCVTIMEO failed.", errno ); + return MONGO_ERROR; + } + + if ( setsockopt( conn->sock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof( tv ) ) == -1 ) { + __mongo_set_error( conn, MONGO_IO_ERROR, "setsockopt SO_SNDTIMEO failed.", errno ); + return MONGO_ERROR; + } + + return MONGO_OK; +} + +int mongo_env_socket_connect( mongo *conn, const char *host, int port ) { + char port_str[NI_MAXSERV]; + int status; + + struct addrinfo ai_hints; + struct addrinfo *ai_list = NULL; + struct addrinfo *ai_ptr = NULL; + + conn->sock = 0; + conn->connected = 0; + sprintf(port_str,"%d",port); + + bson_sprintf( port_str, "%d", port ); + + memset( &ai_hints, 0, sizeof( ai_hints ) ); +#ifdef AI_ADDRCONFIG + ai_hints.ai_flags = AI_ADDRCONFIG; +#endif + ai_hints.ai_family = AF_UNSPEC; + ai_hints.ai_socktype = SOCK_STREAM; + + status = getaddrinfo( host, port_str, &ai_hints, &ai_list ); + if ( status != 0 ) { + bson_errprintf( "getaddrinfo failed: %s", gai_strerror( status ) ); + conn->err = MONGO_CONN_ADDR_FAIL; + return MONGO_ERROR; + } + + for ( ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next ) { + conn->sock = socket( ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol ); + if ( conn->sock < 0 ) { + conn->sock = 0; + continue; + } + + status = connect( conn->sock, ai_ptr->ai_addr, ai_ptr->ai_addrlen ); + if ( status != 0 ) { + mongo_env_close_socket( conn->sock ); + conn->sock = 0; + continue; + } + + if ( ai_ptr->ai_protocol == IPPROTO_TCP ) { + int flag = 1; + + setsockopt( conn->sock, IPPROTO_TCP, TCP_NODELAY, + ( void * ) &flag, sizeof( flag ) ); + if ( conn->op_timeout_ms > 0 ) + mongo_env_set_socket_op_timeout( conn, conn->op_timeout_ms ); + } + + conn->connected = 1; + break; + } + + freeaddrinfo( ai_list ); + + if ( ! conn->connected ) { + conn->err = MONGO_CONN_FAIL; + return MONGO_ERROR; + } + + return MONGO_OK; +} diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_standard.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_standard.c new file mode 100644 index 0000000000..36fa9f65c4 --- /dev/null +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_standard.c @@ -0,0 +1,168 @@ +/* env_standard.c */ + +/* Copyright 2009-2012 10gen Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Vanilla networking designed to work on all systems. */ +#include "env.h" +#include +#include + +#ifdef _WIN32 + #ifdef _MSC_VER + #include // send,recv,socklen_t etc + #include // addrinfo + #else + #include + #include + typedef int socklen_t; + #endif +#else +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#ifndef NI_MAXSERV +# define NI_MAXSERV 32 +#endif + +int mongo_env_close_socket( int socket ) { +#ifdef _WIN32 + return closesocket( socket ); +#else + return close( socket ); +#endif +} + +int mongo_env_write_socket( mongo *conn, const void *buf, int len ) { + const char *cbuf = buf; +#ifdef _WIN32 + int flags = 0; +#else +#ifdef __APPLE__ + int flags = 0; +#else + int flags = MSG_NOSIGNAL; +#endif +#endif + + while ( len ) { + int sent = send( conn->sock, cbuf, len, flags ); + if ( sent == -1 ) { + if (errno == EPIPE) + conn->connected = 0; + conn->err = MONGO_IO_ERROR; + return MONGO_ERROR; + } + cbuf += sent; + len -= sent; + } + + return MONGO_OK; +} + +int mongo_env_read_socket( mongo *conn, void *buf, int len ) { + char *cbuf = buf; + while ( len ) { + int sent = recv( conn->sock, cbuf, len, 0 ); + if ( sent == 0 || sent == -1 ) { + conn->err = MONGO_IO_ERROR; + return MONGO_ERROR; + } + cbuf += sent; + len -= sent; + } + + return MONGO_OK; +} + +/* This is a no-op in the generic implementation. */ +int mongo_env_set_socket_op_timeout( mongo *conn, int millis ) { + return MONGO_OK; +} + +int mongo_env_socket_connect( mongo *conn, const char *host, int port ) { + struct sockaddr_in sa; + socklen_t addressSize; + int flag = 1; + + if ( ( conn->sock = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) { + conn->sock = 0; + conn->err = MONGO_CONN_NO_SOCKET; + return MONGO_ERROR; + } + + memset( sa.sin_zero , 0 , sizeof( sa.sin_zero ) ); + sa.sin_family = AF_INET; + sa.sin_port = htons( port ); + sa.sin_addr.s_addr = inet_addr( host ); + addressSize = sizeof( sa ); + + if ( connect( conn->sock, ( struct sockaddr * )&sa, addressSize ) == -1 ) { + mongo_env_close_socket( conn->sock ); + conn->connected = 0; + conn->sock = 0; + conn->err = MONGO_CONN_FAIL; + return MONGO_ERROR; + } + + setsockopt( conn->sock, IPPROTO_TCP, TCP_NODELAY, ( char * ) &flag, sizeof( flag ) ); + + if( conn->op_timeout_ms > 0 ) + mongo_env_set_socket_op_timeout( conn, conn->op_timeout_ms ); + + conn->connected = 1; + + return MONGO_OK; +} + +MONGO_EXPORT int mongo_env_sock_init( void ) { + +#if defined(_WIN32) + WSADATA wsaData; + WORD wVers; +#elif defined(SIGPIPE) + struct sigaction act; +#endif + + static int called_once; + static int retval; + if (called_once) return retval; + called_once = 1; + +#if defined(_WIN32) + wVers = MAKEWORD(1, 1); + retval = (WSAStartup(wVers, &wsaData) == 0); +#elif defined(MACINTOSH) + GUSISetup(GUSIwithInternetSockets); + retval = 1; +#elif defined(SIGPIPE) + retval = 1; + if (sigaction(SIGPIPE, (struct sigaction *)NULL, &act) < 0) + retval = 0; + else if (act.sa_handler == SIG_DFL) { + act.sa_handler = SIG_IGN; + if (sigaction(SIGPIPE, &act, (struct sigaction *)NULL) < 0) + retval = 0; + } +#endif + return retval; +} diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_win32.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_win32.c new file mode 100644 index 0000000000..0b301cea61 --- /dev/null +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/env_win32.c @@ -0,0 +1,183 @@ +/* env_win32.c */ + +/* Copyright 2009-2012 10gen Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Networking and other niceties for WIN32. */ +#include "env.h" +#include "mongo.h" +#include + +#ifdef _MSC_VER +#include // send,recv,socklen_t etc +#include // addrinfo +#else +#include +#include +typedef int socklen_t; +#endif + +#ifndef NI_MAXSERV +# define NI_MAXSERV 32 +#endif + +static void mongo_clear_errors( mongo *conn ) { + conn->err = 0; + memset( conn->errstr, 0, MONGO_ERR_LEN ); +} + +int mongo_env_close_socket( int socket ) { + return closesocket( socket ); +} + +int mongo_env_write_socket( mongo *conn, const void *buf, int len ) { + const char *cbuf = buf; + int flags = 0; + + while ( len ) { + int sent = send( conn->sock, cbuf, len, flags ); + if ( sent == -1 ) { + __mongo_set_error( conn, MONGO_IO_ERROR, NULL, WSAGetLastError() ); + conn->connected = 0; + return MONGO_ERROR; + } + cbuf += sent; + len -= sent; + } + + return MONGO_OK; +} + +int mongo_env_read_socket( mongo *conn, void *buf, int len ) { + char *cbuf = buf; + + while ( len ) { + int sent = recv( conn->sock, cbuf, len, 0 ); + if ( sent == 0 || sent == -1 ) { + __mongo_set_error( conn, MONGO_IO_ERROR, NULL, WSAGetLastError() ); + return MONGO_ERROR; + } + cbuf += sent; + len -= sent; + } + + return MONGO_OK; +} + +int mongo_env_set_socket_op_timeout( mongo *conn, int millis ) { + if ( setsockopt( conn->sock, SOL_SOCKET, SO_RCVTIMEO, (const char *)&millis, + sizeof( millis ) ) == -1 ) { + __mongo_set_error( conn, MONGO_IO_ERROR, "setsockopt SO_RCVTIMEO failed.", + WSAGetLastError() ); + return MONGO_ERROR; + } + + if ( setsockopt( conn->sock, SOL_SOCKET, SO_SNDTIMEO, (const char *)&millis, + sizeof( millis ) ) == -1 ) { + __mongo_set_error( conn, MONGO_IO_ERROR, "setsockopt SO_SNDTIMEO failed.", + WSAGetLastError() ); + return MONGO_ERROR; + } + + return MONGO_OK; +} + +int mongo_env_socket_connect( mongo *conn, const char *host, int port ) { + char port_str[NI_MAXSERV]; + char errstr[MONGO_ERR_LEN]; + int status; + + struct addrinfo ai_hints; + struct addrinfo *ai_list = NULL; + struct addrinfo *ai_ptr = NULL; + + conn->sock = 0; + conn->connected = 0; + + bson_sprintf( port_str, "%d", port ); + + memset( &ai_hints, 0, sizeof( ai_hints ) ); + ai_hints.ai_family = AF_UNSPEC; + ai_hints.ai_socktype = SOCK_STREAM; + ai_hints.ai_protocol = IPPROTO_TCP; + + status = getaddrinfo( host, port_str, &ai_hints, &ai_list ); + if ( status != 0 ) { + bson_sprintf( errstr, "getaddrinfo failed with error %d", status ); + __mongo_set_error( conn, MONGO_CONN_ADDR_FAIL, errstr, WSAGetLastError() ); + return MONGO_ERROR; + } + + for ( ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next ) { + conn->sock = socket( ai_ptr->ai_family, ai_ptr->ai_socktype, + ai_ptr->ai_protocol ); + + if ( conn->sock < 0 ) { + __mongo_set_error( conn, MONGO_SOCKET_ERROR, "socket() failed", + WSAGetLastError() ); + conn->sock = 0; + continue; + } + + status = connect( conn->sock, ai_ptr->ai_addr, ai_ptr->ai_addrlen ); + if ( status != 0 ) { + __mongo_set_error( conn, MONGO_SOCKET_ERROR, "connect() failed", + WSAGetLastError() ); + mongo_env_close_socket( conn->sock ); + conn->sock = 0; + continue; + } + + if ( ai_ptr->ai_protocol == IPPROTO_TCP ) { + int flag = 1; + + setsockopt( conn->sock, IPPROTO_TCP, TCP_NODELAY, + ( void * ) &flag, sizeof( flag ) ); + + if ( conn->op_timeout_ms > 0 ) + mongo_env_set_socket_op_timeout( conn, conn->op_timeout_ms ); + } + + conn->connected = 1; + break; + } + + freeaddrinfo( ai_list ); + + if ( ! conn->connected ) { + conn->err = MONGO_CONN_FAIL; + return MONGO_ERROR; + } + else { + mongo_clear_errors( conn ); + return MONGO_OK; + } +} + +MONGO_EXPORT int mongo_env_sock_init( void ) { + + WSADATA wsaData; + WORD wVers; + static int called_once; + static int retval; + + if (called_once) return retval; + + called_once = 1; + wVers = MAKEWORD(1, 1); + retval = (WSAStartup(wVers, &wsaData) == 0); + + return retval; +} diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/gridfs.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/gridfs.c index f51b397d3f..9b2d1455ef 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/gridfs.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/gridfs.c @@ -1,6 +1,6 @@ /* gridfs.c */ -/* Copyright 2009-2011 10gen Inc. +/* Copyright 2009-2012 10gen Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,27 @@ #include #include +MONGO_EXPORT gridfs* gridfs_create() { + return (gridfs*)bson_malloc(sizeof(gridfs)); +} + +MONGO_EXPORT void gridfs_dispose(gridfs* gfs) { + free(gfs); +} + +MONGO_EXPORT gridfile* gridfile_create() { + return (gridfile*)bson_malloc(sizeof(gridfile)); +} + +MONGO_EXPORT void gridfile_dispose(gridfile* gf) { + free(gf); +} + +MONGO_EXPORT void gridfile_get_descriptor(gridfile* gf, bson* out) { + *out = *gf->meta; +} + + static bson *chunk_new( bson_oid_t id, int chunkNumber, const char *data, int len ) { bson *b = bson_malloc( sizeof( bson ) ); @@ -104,7 +125,7 @@ int gridfs_init( mongo *client, const char *dbname, const char *prefix, return MONGO_OK; } -void gridfs_destroy( gridfs *gfs ) { +MONGO_EXPORT void gridfs_destroy( gridfs *gfs ) { if ( gfs == NULL ) return; if ( gfs->dbname ) bson_free( ( char * )gfs->dbname ); if ( gfs->prefix ) bson_free( ( char * )gfs->prefix ); @@ -120,14 +141,17 @@ static int gridfs_insert_file( gridfs *gfs, const char *name, bson res; bson_iterator it; int result; + int64_t d; /* Check run md5 */ bson_init( &command ); bson_append_oid( &command, "filemd5", &id ); bson_append_string( &command, "root", gfs->prefix ); bson_finish( &command ); - assert( mongo_run_command( gfs->client, gfs->dbname, &command, &res ) == MONGO_OK ); + result = mongo_run_command( gfs->client, gfs->dbname, &command, &res ); bson_destroy( &command ); + if (result != MONGO_OK) + return result; /* Create and insert BSON for file metadata */ bson_init( &ret ); @@ -137,7 +161,8 @@ static int gridfs_insert_file( gridfs *gfs, const char *name, } bson_append_long( &ret, "length", length ); bson_append_int( &ret, "chunkSize", DEFAULT_CHUNK_SIZE ); - bson_append_date( &ret, "uploadDate", ( bson_date_t )1000*time( NULL ) ); + d = ( bson_date_t )1000*time( NULL ); + bson_append_date( &ret, "uploadDate", d); bson_find( &it, &res, "md5" ); bson_append_string( &ret, "md5", bson_iterator_string( &it ) ); bson_destroy( &res ); @@ -151,7 +176,7 @@ static int gridfs_insert_file( gridfs *gfs, const char *name, return result; } -int gridfs_store_buffer( gridfs *gfs, const char *data, +MONGO_EXPORT int gridfs_store_buffer( gridfs *gfs, const char *data, gridfs_offset length, const char *remotename, const char *contenttype ) { @@ -163,7 +188,7 @@ int gridfs_store_buffer( gridfs *gfs, const char *data, bson *oChunk; /* Large files Assertion */ - assert( length <= 0xffffffff ); + /* assert( length <= 0xffffffff ); */ /* Generate and append an oid*/ bson_oid_gen( &id ); @@ -183,7 +208,7 @@ int gridfs_store_buffer( gridfs *gfs, const char *data, return gridfs_insert_file( gfs, remotename, id, length, contenttype ); } -void gridfile_writer_init( gridfile *gfile, gridfs *gfs, +MONGO_EXPORT void gridfile_writer_init( gridfile *gfile, gridfs *gfs, const char *remote_name, const char *content_type ) { gfile->gfs = gfs; @@ -200,7 +225,7 @@ void gridfile_writer_init( gridfile *gfile, gridfs *gfs, strcpy( ( char * )gfile->content_type, content_type ); } -void gridfile_write_buffer( gridfile *gfile, const char *data, +MONGO_EXPORT void gridfile_write_buffer( gridfile *gfile, const char *data, gridfs_offset length ) { int bytes_left = 0; @@ -221,14 +246,13 @@ void gridfile_write_buffer( gridfile *gfile, const char *data, gfile->pending_len += length; } else { /* At least one chunk of data to write */ + chunks_to_write = to_write / DEFAULT_CHUNK_SIZE; + bytes_left = to_write % DEFAULT_CHUNK_SIZE; /* If there's a pending chunk to be written, we need to combine * the buffer provided up to DEFAULT_CHUNK_SIZE. */ if ( gfile->pending_len > 0 ) { - chunks_to_write = to_write / DEFAULT_CHUNK_SIZE; - bytes_left = to_write % DEFAULT_CHUNK_SIZE; - data_partial_len = DEFAULT_CHUNK_SIZE - gfile->pending_len; buffer = ( char * )bson_malloc( DEFAULT_CHUNK_SIZE ); memcpy( buffer, gfile->pending_data, gfile->pending_len ); @@ -270,7 +294,7 @@ void gridfile_write_buffer( gridfile *gfile, const char *data, } } -int gridfile_writer_done( gridfile *gfile ) { +MONGO_EXPORT int gridfile_writer_done( gridfile *gfile ) { /* write any remaining pending chunk data. * pending data will always take up less than one chunk */ @@ -307,8 +331,11 @@ int gridfs_store_file( gridfs *gfs, const char *filename, /* Open the file and the correct stream */ if ( strcmp( filename, "-" ) == 0 ) fd = stdin; - else fd = fopen( filename, "rb" ); - assert( fd != NULL ); /* No such file */ + else { + fd = fopen( filename, "rb" ); + if (fd == NULL) + return MONGO_ERROR; + } /* Generate and append an oid*/ bson_oid_gen( &id ); @@ -339,7 +366,7 @@ int gridfs_store_file( gridfs *gfs, const char *filename, return gridfs_insert_file( gfs, remotename, id, length, contenttype ); } -void gridfs_remove_filename( gridfs *gfs, const char *filename ) { +MONGO_EXPORT void gridfs_remove_filename( gridfs *gfs, const char *filename ) { bson query; mongo_cursor *files; bson file; @@ -433,7 +460,7 @@ int gridfile_init( gridfs *gfs, bson *meta, gridfile *gfile ) return MONGO_OK; } -void gridfile_destroy( gridfile *gfile ) +MONGO_EXPORT void gridfile_destroy( gridfile *gfile ) { bson_destroy( gfile->meta ); @@ -444,21 +471,21 @@ bson_bool_t gridfile_exists( gridfile *gfile ) { return ( bson_bool_t )( gfile != NULL || gfile->meta == NULL ); } -const char *gridfile_get_filename( gridfile *gfile ) { +MONGO_EXPORT const char *gridfile_get_filename( gridfile *gfile ) { bson_iterator it; bson_find( &it, gfile->meta, "filename" ); return bson_iterator_string( &it ); } -int gridfile_get_chunksize( gridfile *gfile ) { +MONGO_EXPORT int gridfile_get_chunksize( gridfile *gfile ) { bson_iterator it; bson_find( &it, gfile->meta, "chunkSize" ); return bson_iterator_int( &it ); } -gridfs_offset gridfile_get_contentlength( gridfile *gfile ) { +MONGO_EXPORT gridfs_offset gridfile_get_contentlength( gridfile *gfile ) { bson_iterator it; bson_find( &it, gfile->meta, "length" ); @@ -469,7 +496,7 @@ gridfs_offset gridfile_get_contentlength( gridfile *gfile ) { return ( gridfs_offset )bson_iterator_long( &it ); } -const char *gridfile_get_contenttype( gridfile *gfile ) { +MONGO_EXPORT const char *gridfile_get_contenttype( gridfile *gfile ) { bson_iterator it; if ( bson_find( &it, gfile->meta, "contentType" ) ) @@ -477,14 +504,14 @@ const char *gridfile_get_contenttype( gridfile *gfile ) { else return NULL; } -bson_date_t gridfile_get_uploaddate( gridfile *gfile ) { +MONGO_EXPORT bson_date_t gridfile_get_uploaddate( gridfile *gfile ) { bson_iterator it; bson_find( &it, gfile->meta, "uploadDate" ); return bson_iterator_date( &it ); } -const char *gridfile_get_md5( gridfile *gfile ) { +MONGO_EXPORT const char *gridfile_get_md5( gridfile *gfile ) { bson_iterator it; bson_find( &it, gfile->meta, "md5" ); @@ -505,20 +532,16 @@ bson_bool_t gridfile_get_boolean( gridfile *gfile, const char *name ) { return bson_iterator_bool( &it ); } -bson gridfile_get_metadata( gridfile *gfile ) { - bson sub; +MONGO_EXPORT void gridfile_get_metadata( gridfile *gfile, bson* out ) { bson_iterator it; - if ( bson_find( &it, gfile->meta, "metadata" ) ) { - bson_iterator_subobject( &it, &sub ); - return sub; - } else { - bson_empty( &sub ); - return sub; - } + if ( bson_find( &it, gfile->meta, "metadata" ) ) + bson_iterator_subobject( &it, out ); + else + bson_empty( out ); } -int gridfile_get_numchunks( gridfile *gfile ) { +MONGO_EXPORT int gridfile_get_numchunks( gridfile *gfile ) { bson_iterator it; gridfs_offset length; gridfs_offset chunkSize; @@ -539,11 +562,12 @@ int gridfile_get_numchunks( gridfile *gfile ) { : ( int )( numchunks ); } -bson gridfile_get_chunk( gridfile *gfile, int n ) { +MONGO_EXPORT void gridfile_get_chunk( gridfile *gfile, int n, bson* out ) { bson query; - bson out; + bson_iterator it; bson_oid_t id; + int result; bson_init( &query ); bson_find( &it, gfile->meta, "_id" ); @@ -552,15 +576,18 @@ bson gridfile_get_chunk( gridfile *gfile, int n ) { bson_append_int( &query, "n", n ); bson_finish( &query ); - assert( mongo_find_one( gfile->gfs->client, - gfile->gfs->chunks_ns, - &query, NULL, &out ) == MONGO_OK ); - + result = (mongo_find_one(gfile->gfs->client, + gfile->gfs->chunks_ns, + &query, NULL, out ) == MONGO_OK ); bson_destroy( &query ); - return out; + if (!result) { + bson empty; + bson_empty(&empty); + bson_copy(out, &empty); + } } -mongo_cursor *gridfile_get_chunks( gridfile *gfile, int start, int size ) { +MONGO_EXPORT mongo_cursor *gridfile_get_chunks( gridfile *gfile, int start, int size ) { bson_iterator it; bson_oid_t id; bson gte; @@ -613,18 +640,18 @@ gridfs_offset gridfile_write_file( gridfile *gfile, FILE *stream ) { const int num = gridfile_get_numchunks( gfile ); for ( i=0; i Length of pending_data buffer */ } gridfile; +MONGO_EXPORT gridfs* gridfs_create(); +MONGO_EXPORT void gridfs_dispose(gridfs* gfs); +MONGO_EXPORT gridfile* gridfile_create(); +MONGO_EXPORT void gridfile_dispose(gridfile* gf); +MONGO_EXPORT void gridfile_get_descriptor(gridfile* gf, bson* out); + /** * Initializes a GridFS object * @param client - db connection @@ -60,7 +66,7 @@ typedef struct { * * @return - MONGO_OK or MONGO_ERROR. */ -int gridfs_init( mongo *client, const char *dbname, +MONGO_EXPORT int gridfs_init( mongo *client, const char *dbname, const char *prefix, gridfs *gfs ); /** @@ -69,7 +75,7 @@ int gridfs_init( mongo *client, const char *dbname, * * @param gfs a grid */ -void gridfs_destroy( gridfs *gfs ); +MONGO_EXPORT void gridfs_destroy( gridfs *gfs ); /** * Initializes a gridfile for writing incrementally with gridfs_write_buffer. @@ -77,7 +83,7 @@ void gridfs_destroy( gridfs *gfs ); * When done, you must call gridfs_writer_done to save the file metadata. * */ -void gridfile_writer_init( gridfile *gfile, gridfs *gfs, const char *remote_name, +MONGO_EXPORT void gridfile_writer_init( gridfile *gfile, gridfs *gfs, const char *remote_name, const char *content_type ); /** @@ -86,7 +92,7 @@ void gridfile_writer_init( gridfile *gfile, gridfs *gfs, const char *remote_name * stream to a GridFS file. When finished, be sure to call gridfs_writer_done. * */ -void gridfile_write_buffer( gridfile *gfile, const char *data, +MONGO_EXPORT void gridfile_write_buffer( gridfile *gfile, const char *data, gridfs_offset length ); /** @@ -96,7 +102,7 @@ void gridfile_write_buffer( gridfile *gfile, const char *data, * * @return - MONGO_OK or MONGO_ERROR. */ -int gridfile_writer_done( gridfile *gfile ); +MONGO_EXPORT int gridfile_writer_done( gridfile *gfile ); /** * Store a buffer as a GridFS file. @@ -108,7 +114,7 @@ int gridfile_writer_done( gridfile *gfile ); * * @return - MONGO_OK or MONGO_ERROR. */ -int gridfs_store_buffer( gridfs *gfs, const char *data, gridfs_offset length, +MONGO_EXPORT int gridfs_store_buffer( gridfs *gfs, const char *data, gridfs_offset length, const char *remotename, const char *contenttype ); @@ -121,7 +127,7 @@ int gridfs_store_buffer( gridfs *gfs, const char *data, gridfs_offset length, * * @return - MONGO_OK or MONGO_ERROR. */ -int gridfs_store_file( gridfs *gfs, const char *filename, +MONGO_EXPORT int gridfs_store_file( gridfs *gfs, const char *filename, const char *remotename, const char *contenttype ); /** @@ -129,7 +135,7 @@ int gridfs_store_file( gridfs *gfs, const char *filename, * @param gfs - the working GridFS * @param filename - the filename of the file/s to be removed */ -void gridfs_remove_filename( gridfs *gfs, const char *filename ); +MONGO_EXPORT void gridfs_remove_filename( gridfs *gfs, const char *filename ); /** * Find the first file matching the provided query within the @@ -141,7 +147,7 @@ void gridfs_remove_filename( gridfs *gfs, const char *filename ); * * @return MONGO_OK if successful, MONGO_ERROR otherwise */ -int gridfs_find_query( gridfs *gfs, bson *query, gridfile *gfile ); +MONGO_EXPORT int gridfs_find_query( gridfs *gfs, bson *query, gridfile *gfile ); /** * Find the first file referenced by filename within the GridFS @@ -152,7 +158,7 @@ int gridfs_find_query( gridfs *gfs, bson *query, gridfile *gfile ); * * @return MONGO_OK or MONGO_ERROR. */ -int gridfs_find_filename( gridfs *gfs, const char *filename, gridfile *gfile ); +MONGO_EXPORT int gridfs_find_filename( gridfs *gfs, const char *filename, gridfile *gfile ); /** * Initializes a GridFile containing the GridFS and file bson @@ -162,20 +168,20 @@ int gridfs_find_filename( gridfs *gfs, const char *filename, gridfile *gfile ); * * @return - MONGO_OK or MONGO_ERROR. */ -int gridfile_init( gridfs *gfs, bson *meta, gridfile *gfile ); +MONGO_EXPORT int gridfile_init( gridfs *gfs, bson *meta, gridfile *gfile ); /** * Destroys the GridFile * * @param oGridFIle - the GridFile being destroyed */ -void gridfile_destroy( gridfile *gfile ); +MONGO_EXPORT void gridfile_destroy( gridfile *gfile ); /** * Returns whether or not the GridFile exists * @param gfile - the GridFile being examined */ -bson_bool_t gridfile_exists( gridfile *gfile ); +MONGO_EXPORT bson_bool_t gridfile_exists( gridfile *gfile ); /** * Returns the filename of GridFile @@ -183,7 +189,7 @@ bson_bool_t gridfile_exists( gridfile *gfile ); * * @return - the filename of the Gridfile */ -const char *gridfile_get_filename( gridfile *gfile ); +MONGO_EXPORT const char *gridfile_get_filename( gridfile *gfile ); /** * Returns the size of the chunks of the GridFile @@ -191,7 +197,7 @@ const char *gridfile_get_filename( gridfile *gfile ); * * @return - the size of the chunks of the Gridfile */ -int gridfile_get_chunksize( gridfile *gfile ); +MONGO_EXPORT int gridfile_get_chunksize( gridfile *gfile ); /** * Returns the length of GridFile's data @@ -200,7 +206,7 @@ int gridfile_get_chunksize( gridfile *gfile ); * * @return - the length of the Gridfile's data */ -gridfs_offset gridfile_get_contentlength( gridfile *gfile ); +MONGO_EXPORT gridfs_offset gridfile_get_contentlength( gridfile *gfile ); /** * Returns the MIME type of the GridFile @@ -210,7 +216,7 @@ gridfs_offset gridfile_get_contentlength( gridfile *gfile ); * @return - the MIME type of the Gridfile * (NULL if no type specified) */ -const char *gridfile_get_contenttype( gridfile *gfile ); +MONGO_EXPORT const char *gridfile_get_contenttype( gridfile *gfile ); /** * Returns the upload date of GridFile @@ -219,7 +225,7 @@ const char *gridfile_get_contenttype( gridfile *gfile ); * * @return - the upload date of the Gridfile */ -bson_date_t gridfile_get_uploaddate( gridfile *gfile ); +MONGO_EXPORT bson_date_t gridfile_get_uploaddate( gridfile *gfile ); /** * Returns the MD5 of GridFile @@ -228,7 +234,7 @@ bson_date_t gridfile_get_uploaddate( gridfile *gfile ); * * @return - the MD5 of the Gridfile */ -const char *gridfile_get_md5( gridfile *gfile ); +MONGO_EXPORT const char *gridfile_get_md5( gridfile *gfile ); /** * Returns the field in GridFile specified by name @@ -260,7 +266,7 @@ bson_bool_t gridfile_get_boolean( gridfile *gfile, * @return - the metadata of the Gridfile in a bson object * (an empty bson is returned if none exists) */ -bson gridfile_get_metadata( gridfile *gfile ); +MONGO_EXPORT void gridfile_get_metadata( gridfile *gfile, bson* out ); /** * Returns the number of chunks in the GridFile @@ -268,7 +274,7 @@ bson gridfile_get_metadata( gridfile *gfile ); * * @return - the number of chunks in the Gridfile */ -int gridfile_get_numchunks( gridfile *gfile ); +MONGO_EXPORT int gridfile_get_numchunks( gridfile *gfile ); /** * Returns chunk n of GridFile @@ -276,7 +282,7 @@ int gridfile_get_numchunks( gridfile *gfile ); * * @return - the nth chunk of the Gridfile */ -bson gridfile_get_chunk( gridfile *gfile, int n ); +MONGO_EXPORT void gridfile_get_chunk( gridfile *gfile, int n, bson* out ); /** * Returns a mongo_cursor of *size* chunks starting with chunk *start* @@ -287,7 +293,7 @@ bson gridfile_get_chunk( gridfile *gfile, int n ); * * @return - mongo_cursor of the chunks (must be destroyed after use) */ -mongo_cursor *gridfile_get_chunks( gridfile *gfile, int start, int size ); +MONGO_EXPORT mongo_cursor *gridfile_get_chunks( gridfile *gfile, int start, int size ); /** * Writes the GridFile to a stream @@ -295,7 +301,7 @@ mongo_cursor *gridfile_get_chunks( gridfile *gfile, int start, int size ); * @param gfile - the working GridFile * @param stream - the file stream to write to */ -gridfs_offset gridfile_write_file( gridfile *gfile, FILE *stream ); +MONGO_EXPORT gridfs_offset gridfile_write_file( gridfile *gfile, FILE *stream ); /** * Reads length bytes from the GridFile to a buffer @@ -309,7 +315,7 @@ gridfs_offset gridfile_write_file( gridfile *gfile, FILE *stream ); * * @return - the number of bytes read */ -gridfs_offset gridfile_read( gridfile *gfile, gridfs_offset size, char *buf ); +MONGO_EXPORT gridfs_offset gridfile_read( gridfile *gfile, gridfs_offset size, char *buf ); /** * Updates the position in the file @@ -321,6 +327,6 @@ gridfs_offset gridfile_read( gridfile *gfile, gridfs_offset size, char *buf ); * * @return - resulting offset location */ -gridfs_offset gridfile_seek( gridfile *gfile, gridfs_offset offset ); +MONGO_EXPORT gridfs_offset gridfile_seek( gridfile *gfile, gridfs_offset offset ); #endif diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.c index d1c1e3ab0b..68edd29513 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.c @@ -309,7 +309,7 @@ mongo_md5_process(mongo_md5_state_t *pms, const mongo_md5_byte_t *data /*[64]*/) pms->abcd[3] += d; } -void +MONGO_EXPORT void mongo_md5_init(mongo_md5_state_t *pms) { pms->count[0] = pms->count[1] = 0; @@ -319,7 +319,7 @@ mongo_md5_init(mongo_md5_state_t *pms) pms->abcd[3] = 0x10325476; } -void +MONGO_EXPORT void mongo_md5_append(mongo_md5_state_t *pms, const mongo_md5_byte_t *data, int nbytes) { const mongo_md5_byte_t *p = data; @@ -357,7 +357,7 @@ mongo_md5_append(mongo_md5_state_t *pms, const mongo_md5_byte_t *data, int nbyte memcpy(pms->buf, p, left); } -void +MONGO_EXPORT void mongo_md5_finish(mongo_md5_state_t *pms, mongo_md5_byte_t digest[16]) { static const mongo_md5_byte_t pad[64] = { diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.h index 540da3a584..342b6a7307 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.h +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/md5.h @@ -47,8 +47,8 @@ 1999-05-03 lpd Original version. */ -#ifndef md5_INCLUDED -# define md5_INCLUDED +#ifndef MONGO_MD5_H_ +#define MONGO_MD5_H_ /* * This package supports both compile-time and run-time determination of CPU @@ -59,6 +59,7 @@ * run on either big- or little-endian CPUs, but will run slightly less * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. */ +#include "bson.h" typedef unsigned char mongo_md5_byte_t; /* 8-bit byte */ typedef unsigned int mongo_md5_word_t; /* 32-bit word */ @@ -75,17 +76,17 @@ extern "C" { #endif - /* Initialize the algorithm. */ - void mongo_md5_init(mongo_md5_state_t *pms); +/* Initialize the algorithm. */ +MONGO_EXPORT void mongo_md5_init(mongo_md5_state_t *pms); - /* Append a string to the message. */ - void mongo_md5_append(mongo_md5_state_t *pms, const mongo_md5_byte_t *data, int nbytes); +/* Append a string to the message. */ +MONGO_EXPORT void mongo_md5_append(mongo_md5_state_t *pms, const mongo_md5_byte_t *data, int nbytes); - /* Finish the message and return the digest. */ - void mongo_md5_finish(mongo_md5_state_t *pms, mongo_md5_byte_t digest[16]); +/* Finish the message and return the digest. */ +MONGO_EXPORT void mongo_md5_finish(mongo_md5_state_t *pms, mongo_md5_byte_t digest[16]); #ifdef __cplusplus } /* end extern "C" */ #endif -#endif /* md5_INCLUDED */ +#endif /* MONGO_MD5_H_ */ diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.c index 2090e74312..eb16392297 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.c @@ -1,6 +1,6 @@ /* mongo.c */ -/* Copyright 2009-2011 10gen Inc. +/* Copyright 2009-2012 10gen Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,19 +17,235 @@ #include "mongo.h" #include "md5.h" +#include "env.h" #include #include #include #include -#ifdef _USE_LINUX_SYSTEM -#include "platform/linux/net.h" -#elif defined _USE_CUSTOM_SYSTEM -#include "platform/custom/net.h" -#else -#include "net.h" -#endif +MONGO_EXPORT mongo* mongo_create() { + return (mongo*)bson_malloc(sizeof(mongo)); +} + + +MONGO_EXPORT void mongo_dispose(mongo* conn) { + free(conn); +} + +MONGO_EXPORT int mongo_get_err(mongo* conn) { + return conn->err; +} + + +MONGO_EXPORT int mongo_is_connected(mongo* conn) { + return conn->connected != 0; +} + + +MONGO_EXPORT int mongo_get_op_timeout(mongo* conn) { + return conn->op_timeout_ms; +} + + +const char* _get_host_port(mongo_host_port* hp) { + static char _hp[sizeof(hp->host)+12]; + bson_sprintf(_hp, "%s:%d", hp->host, hp->port); + return _hp; +} + + +MONGO_EXPORT const char* mongo_get_primary(mongo* conn) { + mongo* conn_ = (mongo*)conn; + return _get_host_port(conn_->primary); +} + + +MONGO_EXPORT int mongo_get_socket(mongo* conn) { + mongo* conn_ = (mongo*)conn; + return conn_->sock; +} + + +MONGO_EXPORT int mongo_get_host_count(mongo* conn) { + mongo_replset* r = conn->replset; + mongo_host_port* hp; + int count = 0; + if (!r) return 0; + for (hp = r->hosts; hp; hp = hp->next) + ++count; + return count; +} + + +MONGO_EXPORT const char* mongo_get_host(mongo* conn, int i) { + mongo_replset* r = conn->replset; + mongo_host_port* hp; + int count = 0; + if (!r) return 0; + for (hp = r->hosts; hp; hp = hp->next) { + if (count == i) + return _get_host_port(hp); + ++count; + } + return 0; +} + + +MONGO_EXPORT mongo_cursor* mongo_cursor_create() { + return (mongo_cursor*)bson_malloc(sizeof(mongo_cursor)); +} + + +MONGO_EXPORT void mongo_cursor_dispose(mongo_cursor* cursor) { + free(cursor); +} + + +MONGO_EXPORT int mongo_get_server_err(mongo* conn) { + return conn->lasterrcode; +} + + +MONGO_EXPORT const char* mongo_get_server_err_string(mongo* conn) { + return conn->lasterrstr; +} + +MONGO_EXPORT void __mongo_set_error( mongo *conn, mongo_error_t err, const char *str, + int errcode ) { + int errstr_size, str_size; + + conn->err = err; + conn->errcode = errcode; + + if( str ) { + str_size = strlen( str ) + 1; + errstr_size = str_size > MONGO_ERR_LEN ? MONGO_ERR_LEN : str_size; + memcpy( conn->errstr, str, errstr_size ); + conn->errstr[errstr_size] = '\0'; + } +} + +MONGO_EXPORT void mongo_clear_errors( mongo *conn ) { + conn->err = 0; + conn->errcode = 0; + conn->lasterrcode = 0; + memset( conn->errstr, 0, MONGO_ERR_LEN ); + memset( conn->lasterrstr, 0, MONGO_ERR_LEN ); +} + +MONGO_EXPORT int mongo_validate_ns( mongo *conn, const char *ns ) { + char *last = NULL; + char *current = NULL; + const char *db_name = ns; + char *collection_name = NULL; + char errmsg[64]; + int ns_len = 0; + + /* If the first character is a '.', fail. */ + if( *ns == '.' ) { + __mongo_set_error( conn, MONGO_NS_INVALID, "ns cannot start with a '.'.", 0 ); + return MONGO_ERROR; + } + + /* Find the division between database and collection names. */ + for( current = (char *)ns; *current != '\0'; current++ ) { + if( *current == '.' ) { + current++; + break; + } + } + + /* Fail because the ns doesn't contain a '.' + * or the collection part starts with a dot. */ + if( *current == '\0' || *current == '.' ) { + __mongo_set_error( conn, MONGO_NS_INVALID, "ns cannot start with a '.'.", 0 ); + return MONGO_ERROR; + } + + /* Fail if collection length is 0. */ + if( *(current + 1) == '\0' ) { + __mongo_set_error( conn, MONGO_NS_INVALID, "Collection name missing.", 0 ); + return MONGO_ERROR; + } + + + /* Point to the beginning of the collection name. */ + collection_name = current; + + /* Ensure that the database name is greater than one char.*/ + if( collection_name - 1 == db_name ) { + __mongo_set_error( conn, MONGO_NS_INVALID, "Database name missing.", 0 ); + return MONGO_ERROR; + } + + /* Go back and validate the database name. */ + for( current = (char *)db_name; *current != '.'; current++ ) { + switch( *current ) { + case ' ': + case '$': + case '/': + case '\\': + __mongo_set_error( conn, MONGO_NS_INVALID, + "Database name may not contain ' ', '$', '/', or '\\'", 0 ); + return MONGO_ERROR; + default: + break; + } + + ns_len++; + } + + /* Add one to the length for the '.' character. */ + ns_len++; + + /* Now validate the collection name. */ + for( current = collection_name; *current != '\0'; current++ ) { + + /* Cannot have two consecutive dots. */ + if( last && *last == '.' && *current == '.' ) { + __mongo_set_error( conn, MONGO_NS_INVALID, + "Collection may not contain two consecutive '.'", 0 ); + return MONGO_ERROR; + } + + /* Cannot contain a '$' */ + if( *current == '$' ) { + __mongo_set_error( conn, MONGO_NS_INVALID, + "Collection may not contain '$'", 0 ); + return MONGO_ERROR; + } + + last = current; + ns_len++; + } + + if( ns_len > 128 ) { + bson_sprintf( errmsg, "Namespace too long; has %d but must <= 128.", + ns_len ); + __mongo_set_error( conn, MONGO_NS_INVALID, errmsg, 0 ); + return MONGO_ERROR; + } + + /* Cannot end with a '.' */ + if( *(current - 1) == '.' ) { + __mongo_set_error( conn, MONGO_NS_INVALID, + "Collection may not end with '.'", 0 ); + return MONGO_ERROR; + } + + return MONGO_OK; +} + +static void mongo_set_last_error( mongo *conn, bson_iterator *it, bson *obj ) { + int result_len = bson_iterator_string_len( it ); + const char *result_string = bson_iterator_string( it ); + int len = result_len < MONGO_ERR_LEN ? result_len : MONGO_ERR_LEN; + memcpy( conn->lasterrstr, result_string, len ); + + if( bson_find( it, obj, "code" ) != BSON_NULL ) + conn->lasterrcode = bson_iterator_int( it ); +} static const int ZERO = 0; static const int ONE = 1; @@ -57,13 +273,13 @@ int mongo_message_send( mongo *conn, mongo_message *mm ) { bson_little_endian32( &head.responseTo, &mm->head.responseTo ); bson_little_endian32( &head.op, &mm->head.op ); - res = mongo_write_socket( conn, &head, sizeof( head ) ); + res = mongo_env_write_socket( conn, &head, sizeof( head ) ); if( res != MONGO_OK ) { bson_free( mm ); return res; } - res = mongo_write_socket( conn, &mm->data, mm->head.len - sizeof( head ) ); + res = mongo_env_write_socket( conn, &mm->data, mm->head.len - sizeof( head ) ); if( res != MONGO_OK ) { bson_free( mm ); return res; @@ -80,8 +296,8 @@ int mongo_read_response( mongo *conn, mongo_reply **reply ) { unsigned int len; int res; - mongo_read_socket( conn, &head, sizeof( head ) ); - mongo_read_socket( conn, &fields, sizeof( fields ) ); + mongo_env_read_socket( conn, &head, sizeof( head ) ); + mongo_env_read_socket( conn, &fields, sizeof( fields ) ); bson_little_endian32( &len, &head.len ); @@ -100,7 +316,7 @@ int mongo_read_response( mongo *conn, mongo_reply **reply ) { bson_little_endian32( &out->fields.start, &fields.start ); bson_little_endian32( &out->fields.num, &fields.num ); - res = mongo_read_socket( conn, &out->objs, len-sizeof( head )-sizeof( fields ) ); + res = mongo_env_read_socket( conn, &out->objs, len-sizeof( head )-sizeof( fields ) ); if( res != MONGO_OK ) { bson_free( out ); return res; @@ -133,12 +349,17 @@ static int mongo_check_is_master( mongo *conn ) { bson out; bson_iterator it; bson_bool_t ismaster = 0; + int max_bson_size = MONGO_DEFAULT_MAX_BSON_SIZE; out.data = NULL; if ( mongo_simple_int_command( conn, "admin", "ismaster", 1, &out ) == MONGO_OK ) { if( bson_find( &it, &out, "ismaster" ) ) ismaster = bson_iterator_bool( &it ); + if( bson_find( &it, &out, "maxBsonObjectSize" ) ) { + max_bson_size = bson_iterator_int( &it ); + } + conn->max_bson_size = max_bson_size; } else { return MONGO_ERROR; } @@ -153,25 +374,25 @@ static int mongo_check_is_master( mongo *conn ) { } } -void mongo_init( mongo *conn ) { - conn->replset = NULL; - conn->err = 0; - conn->errstr = NULL; - conn->lasterrcode = 0; - conn->lasterrstr = NULL; - - conn->conn_timeout_ms = 0; - conn->op_timeout_ms = 0; +MONGO_EXPORT void mongo_init_sockets( void ) { + mongo_env_sock_init(); } -int mongo_connect( mongo *conn , const char *host, int port ) { + +MONGO_EXPORT void mongo_init( mongo *conn ) { + memset( conn, 0, sizeof( mongo ) ); + conn->max_bson_size = MONGO_DEFAULT_MAX_BSON_SIZE; +} + +MONGO_EXPORT int mongo_connect( mongo *conn , const char *host, int port ) { + mongo_init( conn ); + conn->primary = bson_malloc( sizeof( mongo_host_port ) ); strncpy( conn->primary->host, host, strlen( host ) + 1 ); conn->primary->port = port; conn->primary->next = NULL; - mongo_init( conn ); - if( mongo_socket_connect( conn, host, port ) != MONGO_OK ) + if( mongo_env_socket_connect( conn, host, port ) != MONGO_OK ) return MONGO_ERROR; if( mongo_check_is_master( conn ) != MONGO_OK ) @@ -180,7 +401,7 @@ int mongo_connect( mongo *conn , const char *host, int port ) { return MONGO_OK; } -void mongo_replset_init( mongo *conn, const char *name ) { +MONGO_EXPORT void mongo_replset_init( mongo *conn, const char *name ) { mongo_init( conn ); conn->replset = bson_malloc( sizeof( mongo_replset ) ); @@ -222,7 +443,7 @@ static void mongo_replset_free_list( mongo_host_port **list ) { *list = NULL; } -void mongo_replset_add_seed( mongo *conn, const char *host, int port ) { +MONGO_EXPORT void mongo_replset_add_seed( mongo *conn, const char *host, int port ) { mongo_replset_add_node( &conn->replset->seeds, host, port ); } @@ -291,7 +512,7 @@ static void mongo_replset_check_seed( mongo *conn ) { bson_destroy( &out ); bson_destroy( &hosts ); - mongo_close_socket( conn->sock ); + mongo_env_close_socket( conn->sock ); conn->sock = 0; conn->connected = 0; @@ -306,6 +527,7 @@ static int mongo_replset_check_host( mongo *conn ) { bson_iterator it; bson_bool_t ismaster = 0; const char *set_name; + int max_bson_size = MONGO_DEFAULT_MAX_BSON_SIZE; out.data = NULL; @@ -313,6 +535,10 @@ static int mongo_replset_check_host( mongo *conn ) { if( bson_find( &it, &out, "ismaster" ) ) ismaster = bson_iterator_bool( &it ); + if( bson_find( &it, &out, "maxBsonObjectSize" ) ) + max_bson_size = bson_iterator_int( &it ); + conn->max_bson_size = max_bson_size; + if( bson_find( &it, &out, "setName" ) ) { set_name = bson_iterator_string( &it ); if( strcmp( set_name, conn->replset->name ) != 0 ) { @@ -328,13 +554,13 @@ static int mongo_replset_check_host( mongo *conn ) { if( ismaster ) { conn->replset->primary_connected = 1; } else { - mongo_close_socket( conn->sock ); + mongo_env_close_socket( conn->sock ); } return MONGO_OK; } -int mongo_replset_connect( mongo *conn ) { +MONGO_EXPORT int mongo_replset_connect( mongo *conn ) { int res = 0; mongo_host_port *node; @@ -347,15 +573,12 @@ int mongo_replset_connect( mongo *conn ) { */ node = conn->replset->seeds; while( node != NULL ) { - res = mongo_socket_connect( conn, ( const char * )&node->host, node->port ); - if( res != MONGO_OK ) - return MONGO_ERROR; - - mongo_replset_check_seed( conn ); - - if( conn->replset->hosts ) - break; - + res = mongo_env_socket_connect( conn, ( const char * )&node->host, node->port ); + if( res == MONGO_OK ) { + mongo_replset_check_seed( conn ); + if( conn->replset->hosts ) + break; + } node = node->next; } @@ -367,19 +590,22 @@ int mongo_replset_connect( mongo *conn ) { node = conn->replset->hosts; while( node != NULL ) { - res = mongo_socket_connect( conn, ( const char * )&node->host, node->port ); + res = mongo_env_socket_connect( conn, ( const char * )&node->host, node->port ); if( res == MONGO_OK ) { if( mongo_replset_check_host( conn ) != MONGO_OK ) return MONGO_ERROR; /* Primary found, so return. */ - else if( conn->replset->primary_connected ) + else if( conn->replset->primary_connected ) { + strncpy( conn->primary->host, node->host, strlen( node->host ) + 1 ); + conn->primary->port = node->port; return MONGO_OK; + } /* No primary, so close the connection. */ else { - mongo_close_socket( conn->sock ); + mongo_env_close_socket( conn->sock ); conn->sock = 0; conn->connected = 0; } @@ -394,15 +620,15 @@ int mongo_replset_connect( mongo *conn ) { return MONGO_ERROR; } -int mongo_set_op_timeout( mongo *conn, int millis ) { +MONGO_EXPORT int mongo_set_op_timeout( mongo *conn, int millis ) { conn->op_timeout_ms = millis; if( conn->sock && conn->connected ) - mongo_set_socket_op_timeout( conn, millis ); + mongo_env_set_socket_op_timeout( conn, millis ); return MONGO_OK; } -int mongo_reconnect( mongo *conn ) { +MONGO_EXPORT int mongo_reconnect( mongo *conn ) { int res; mongo_disconnect( conn ); @@ -413,10 +639,10 @@ int mongo_reconnect( mongo *conn ) { res = mongo_replset_connect( conn ); return res; } else - return mongo_socket_connect( conn, conn->primary->host, conn->primary->port ); + return mongo_env_socket_connect( conn, conn->primary->host, conn->primary->port ); } -int mongo_check_connection( mongo *conn ) { +MONGO_EXPORT int mongo_check_connection( mongo *conn ) { if( ! conn->connected ) return MONGO_ERROR; @@ -426,7 +652,7 @@ int mongo_check_connection( mongo *conn ) { return MONGO_ERROR; } -void mongo_disconnect( mongo *conn ) { +MONGO_EXPORT void mongo_disconnect( mongo *conn ) { if( ! conn->connected ) return; @@ -436,13 +662,13 @@ void mongo_disconnect( mongo *conn ) { conn->replset->hosts = NULL; } - mongo_close_socket( conn->sock ); + mongo_env_close_socket( conn->sock ); conn->sock = 0; conn->connected = 0; } -void mongo_destroy( mongo *conn ) { +MONGO_EXPORT void mongo_destroy( mongo *conn ) { mongo_disconnect( conn ); if( conn->replset ) { @@ -454,17 +680,20 @@ void mongo_destroy( mongo *conn ) { } bson_free( conn->primary ); - bson_free( conn->errstr ); - bson_free( conn->lasterrstr ); - conn->err = 0; - conn->errstr = NULL; - conn->lasterrcode = 0; - conn->lasterrstr = NULL; + mongo_clear_errors( conn ); } /* Determine whether this BSON object is valid for the given operation. */ -static int mongo_bson_valid( mongo *conn, bson *bson, int write ) { +static int mongo_bson_valid( mongo *conn, const bson *bson, int write ) { + int size; + + size = bson_size( bson ); + if( size > conn->max_bson_size ) { + conn->err = MONGO_BSON_TOO_LARGE; + return MONGO_ERROR; + } + if( ! bson->finished ) { conn->err = MONGO_BSON_NOT_FINISHED; return MONGO_ERROR; @@ -486,20 +715,21 @@ static int mongo_bson_valid( mongo *conn, bson *bson, int write ) { } conn->err = 0; - conn->errstr = NULL; return MONGO_OK; } /* Determine whether this BSON object is valid for the given operation. */ -static int mongo_cursor_bson_valid( mongo_cursor *cursor, bson *bson ) { +static int mongo_cursor_bson_valid( mongo_cursor *cursor, const bson *bson ) { if( ! bson->finished ) { - cursor->err = MONGO_BSON_NOT_FINISHED; + cursor->err = MONGO_CURSOR_BSON_ERROR; + cursor->conn->err = MONGO_BSON_NOT_FINISHED; return MONGO_ERROR; } if( bson->err & BSON_NOT_UTF8 ) { - cursor->err = MONGO_BSON_INVALID; + cursor->err = MONGO_CURSOR_BSON_ERROR; + cursor->conn->err = MONGO_BSON_INVALID; return MONGO_ERROR; } @@ -508,13 +738,17 @@ static int mongo_cursor_bson_valid( mongo_cursor *cursor, bson *bson ) { /* MongoDB CRUD API */ -int mongo_insert_batch( mongo *conn, const char *ns, - bson **bsons, int count ) { +MONGO_EXPORT int mongo_insert_batch( mongo *conn, const char *ns, + const bson **bsons, int count ) { - int size = 16 + 4 + strlen( ns ) + 1; - int i; mongo_message *mm; + int i; char *data; + int overhead = 16 + 4 + strlen( ns ) + 1; + int size = overhead; + + if( mongo_validate_ns( conn, ns ) != MONGO_OK ) + return MONGO_ERROR; for( i=0; i conn->max_bson_size ) { + conn->err = MONGO_BSON_TOO_LARGE; + return MONGO_ERROR; + } + mm = mongo_message_create( size , 0 , 0 , MONGO_OP_INSERT ); data = &mm->data; @@ -535,11 +774,14 @@ int mongo_insert_batch( mongo *conn, const char *ns, return mongo_message_send( conn, mm ); } -int mongo_insert( mongo *conn , const char *ns , bson *bson ) { +MONGO_EXPORT int mongo_insert( mongo *conn , const char *ns , const bson *bson ) { char *data; mongo_message *mm; + if( mongo_validate_ns( conn, ns ) != MONGO_OK ) + return MONGO_ERROR; + /* Make sure that BSON is valid for insert. */ if( mongo_bson_valid( conn, bson, 1 ) != MONGO_OK ) { return MONGO_ERROR; @@ -559,7 +801,7 @@ int mongo_insert( mongo *conn , const char *ns , bson *bson ) { return mongo_message_send( conn, mm ); } -int mongo_update( mongo *conn, const char *ns, const bson *cond, +MONGO_EXPORT int mongo_update( mongo *conn, const char *ns, const bson *cond, const bson *op, int flags ) { char *data; @@ -590,14 +832,9 @@ int mongo_update( mongo *conn, const char *ns, const bson *cond, return mongo_message_send( conn, mm ); } -int mongo_remove( mongo *conn, const char *ns, const bson *cond ) { +MONGO_EXPORT int mongo_remove( mongo *conn, const char *ns, const bson *cond ) { char *data; - mongo_message *mm = mongo_message_create( 16 /* header */ - + 4 /* ZERO */ - + strlen( ns ) + 1 - + 4 /* ZERO */ - + bson_size( cond ) - , 0 , 0 , MONGO_OP_DELETE ); + mongo_message *mm; /* Make sure that the BSON is valid UTF-8. * TODO: decide whether to check cond as well. @@ -606,6 +843,13 @@ int mongo_remove( mongo *conn, const char *ns, const bson *cond ) { return MONGO_ERROR; } + mm = mongo_message_create( 16 /* header */ + + 4 /* ZERO */ + + strlen( ns ) + 1 + + 4 /* ZERO */ + + bson_size( cond ) + , 0 , 0 , MONGO_OP_DELETE ); + data = &mm->data; data = mongo_data_append32( data, &ZERO ); data = mongo_data_append( data, ns, strlen( ns ) + 1 ); @@ -621,6 +865,11 @@ static int mongo_cursor_op_query( mongo_cursor *cursor ) { bson empty; char *data; mongo_message *mm; + bson temp; + bson_iterator it; + + /* Clear any errors. */ + mongo_clear_errors( cursor->conn ); /* Set up default values for query and fields, if necessary. */ if( ! cursor->query ) @@ -662,6 +911,15 @@ static int mongo_cursor_op_query( mongo_cursor *cursor ) { return MONGO_ERROR; } + if( cursor->reply->fields.num == 1 ) { + bson_init_data( &temp, &cursor->reply->objs ); + if( bson_find( &it, &temp, "$err" ) ) { + mongo_set_last_error( cursor->conn, &it, &temp ); + cursor->err = MONGO_CURSOR_QUERY_FAIL; + return MONGO_ERROR; + } + } + cursor->seen += cursor->reply->fields.num; cursor->flags |= MONGO_CURSOR_QUERY_SENT; return MONGO_OK; @@ -719,8 +977,8 @@ static int mongo_cursor_get_more( mongo_cursor *cursor ) { } } -mongo_cursor *mongo_find( mongo *conn, const char *ns, bson *query, - bson *fields, int limit, int skip, int options ) { +MONGO_EXPORT mongo_cursor *mongo_find( mongo *conn, const char *ns, const bson *query, + const bson *fields, int limit, int skip, int options ) { mongo_cursor *cursor = ( mongo_cursor * )bson_malloc( sizeof( mongo_cursor ) ); mongo_cursor_init( cursor, conn, ns ); @@ -740,13 +998,20 @@ mongo_cursor *mongo_find( mongo *conn, const char *ns, bson *query, } } -int mongo_find_one( mongo *conn, const char *ns, bson *query, - bson *fields, bson *out ) { +MONGO_EXPORT int mongo_find_one( mongo *conn, const char *ns, const bson *query, + const bson *fields, bson *out ) { - mongo_cursor *cursor = mongo_find( conn, ns, query, fields, 1, 0, 0 ); + mongo_cursor cursor[1]; + mongo_cursor_init( cursor, conn, ns ); + mongo_cursor_set_query( cursor, query ); + mongo_cursor_set_fields( cursor, fields ); + mongo_cursor_set_limit( cursor, 1 ); - if ( cursor && mongo_cursor_next( cursor ) == MONGO_OK ) { - bson_copy_basic( out, &cursor->current ); + if ( mongo_cursor_next( cursor ) == MONGO_OK ) { + bson_init_size( out, bson_size( (bson *)&cursor->current ) ); + memcpy( out->data, cursor->current.data, + bson_size( (bson *)&cursor->current ) ); + out->finished = 1; mongo_cursor_destroy( cursor ); return MONGO_OK; } else { @@ -755,56 +1020,49 @@ int mongo_find_one( mongo *conn, const char *ns, bson *query, } } -void mongo_cursor_init( mongo_cursor *cursor, mongo *conn, const char *ns ) { +MONGO_EXPORT void mongo_cursor_init( mongo_cursor *cursor, mongo *conn, const char *ns ) { + memset( cursor, 0, sizeof( mongo_cursor ) ); cursor->conn = conn; cursor->ns = ( const char * )bson_malloc( strlen( ns ) + 1 ); strncpy( ( char * )cursor->ns, ns, strlen( ns ) + 1 ); cursor->current.data = NULL; - cursor->reply = NULL; - cursor->flags = 0; - cursor->seen = 0; - cursor->err = 0; - cursor->options = 0; - cursor->query = NULL; - cursor->fields = NULL; - cursor->skip = 0; - cursor->limit = 0; } -void mongo_cursor_set_query( mongo_cursor *cursor, bson *query ) { +MONGO_EXPORT void mongo_cursor_set_query( mongo_cursor *cursor, const bson *query ) { cursor->query = query; } -void mongo_cursor_set_fields( mongo_cursor *cursor, bson *fields ) { +MONGO_EXPORT void mongo_cursor_set_fields( mongo_cursor *cursor, const bson *fields ) { cursor->fields = fields; } -void mongo_cursor_set_skip( mongo_cursor *cursor, int skip ) { +MONGO_EXPORT void mongo_cursor_set_skip( mongo_cursor *cursor, int skip ) { cursor->skip = skip; } -void mongo_cursor_set_limit( mongo_cursor *cursor, int limit ) { +MONGO_EXPORT void mongo_cursor_set_limit( mongo_cursor *cursor, int limit ) { cursor->limit = limit; } -void mongo_cursor_set_options( mongo_cursor *cursor, int options ) { +MONGO_EXPORT void mongo_cursor_set_options( mongo_cursor *cursor, int options ) { cursor->options = options; } -const char *mongo_cursor_data( mongo_cursor *cursor ) { +MONGO_EXPORT const char *mongo_cursor_data( mongo_cursor *cursor ) { return cursor->current.data; } -const bson *mongo_cursor_bson( mongo_cursor *cursor ) { +MONGO_EXPORT const bson *mongo_cursor_bson( mongo_cursor *cursor ) { return (const bson *)&(cursor->current); } -int mongo_cursor_next( mongo_cursor *cursor ) { +MONGO_EXPORT int mongo_cursor_next( mongo_cursor *cursor ) { char *next_object; char *message_end; if( ! ( cursor->flags & MONGO_CURSOR_QUERY_SENT ) ) - mongo_cursor_op_query( cursor ); + if( mongo_cursor_op_query( cursor ) != MONGO_OK ) + return MONGO_ERROR; if( !cursor->reply ) return MONGO_ERROR; @@ -826,7 +1084,7 @@ int mongo_cursor_next( mongo_cursor *cursor ) { /* first */ if ( cursor->current.data == NULL ) { - bson_init_data( &cursor->current, &cursor->reply->objs ); + bson_init_finished_data( &cursor->current, &cursor->reply->objs ); return MONGO_OK; } @@ -843,15 +1101,15 @@ int mongo_cursor_next( mongo_cursor *cursor ) { return MONGO_ERROR; } - bson_init_data( &cursor->current, &cursor->reply->objs ); + bson_init_finished_data( &cursor->current, &cursor->reply->objs ); } else { - bson_init_data( &cursor->current, next_object ); + bson_init_finished_data( &cursor->current, next_object ); } return MONGO_OK; } -int mongo_cursor_destroy( mongo_cursor *cursor ) { +MONGO_EXPORT int mongo_cursor_destroy( mongo_cursor *cursor ) { int result = MONGO_OK; if ( !cursor ) return result; @@ -883,7 +1141,7 @@ int mongo_cursor_destroy( mongo_cursor *cursor ) { /* MongoDB Helper Functions */ -int mongo_create_index( mongo *conn, const char *ns, bson *key, int options, bson *out ) { +MONGO_EXPORT int mongo_create_index( mongo *conn, const char *ns, const bson *key, int options, bson *out ) { bson b; bson_iterator it; char name[255] = {'_'}; @@ -933,10 +1191,10 @@ bson_bool_t mongo_create_simple_index( mongo *conn, const char *ns, const char * return success; } -int64_t mongo_count( mongo *conn, const char *db, const char *ns, bson *query ) { +MONGO_EXPORT double mongo_count( mongo *conn, const char *db, const char *ns, const bson *query ) { bson cmd; bson out = {NULL, 0}; - int64_t count = -1; + double count = -1; bson_init( &cmd ); bson_append_string( &cmd, "count", ns ); @@ -947,7 +1205,7 @@ int64_t mongo_count( mongo *conn, const char *db, const char *ns, bson *query ) if( mongo_run_command( conn, db, &cmd, &out ) == MONGO_OK ) { bson_iterator it; if( bson_find( &it, &out, "n" ) ) - count = bson_iterator_long( &it ); + count = bson_iterator_double( &it ); bson_destroy( &cmd ); bson_destroy( &out ); return count; @@ -958,38 +1216,51 @@ int64_t mongo_count( mongo *conn, const char *db, const char *ns, bson *query ) } } -int mongo_run_command( mongo *conn, const char *db, bson *command, +MONGO_EXPORT int mongo_run_command( mongo *conn, const char *db, const bson *command, bson *out ) { + bson response = {NULL, 0}; bson fields; int sl = strlen( db ); char *ns = bson_malloc( sl + 5 + 1 ); /* ".$cmd" + nul */ - int res; + int res, success = 0; strcpy( ns, db ); strcpy( ns+sl, ".$cmd" ); - res = mongo_find_one( conn, ns, command, bson_empty( &fields ), out ); + res = mongo_find_one( conn, ns, command, bson_empty( &fields ), &response ); bson_free( ns ); - return res; + + if( res != MONGO_OK ) + return MONGO_ERROR; + else { + bson_iterator it; + if( bson_find( &it, &response, "ok" ) ) + success = bson_iterator_bool( &it ); + + if( !success ) { + conn->err = MONGO_COMMAND_FAILED; + return MONGO_ERROR; + } else { + if( out ) + *out = response; + return MONGO_OK; + } + } } -int mongo_simple_int_command( mongo *conn, const char *db, +MONGO_EXPORT int mongo_simple_int_command( mongo *conn, const char *db, const char *cmdstr, int arg, bson *realout ) { bson out = {NULL, 0}; bson cmd; - bson_bool_t success = 0; + int result; bson_init( &cmd ); bson_append_int( &cmd, cmdstr, arg ); bson_finish( &cmd ); - if( mongo_run_command( conn, db, &cmd, &out ) == MONGO_OK ) { - bson_iterator it; - if( bson_find( &it, &out, "ok" ) ) - success = bson_iterator_bool( &it ); - } + result = mongo_run_command( conn, db, &cmd, &out ); bson_destroy( &cmd ); @@ -998,30 +1269,21 @@ int mongo_simple_int_command( mongo *conn, const char *db, else bson_destroy( &out ); - if( success ) - return MONGO_OK; - else { - conn->err = MONGO_COMMAND_FAILED; - return MONGO_ERROR; - } + return result; } -int mongo_simple_str_command( mongo *conn, const char *db, +MONGO_EXPORT int mongo_simple_str_command( mongo *conn, const char *db, const char *cmdstr, const char *arg, bson *realout ) { bson out = {NULL, 0}; - int success = 0; + int result; bson cmd; bson_init( &cmd ); bson_append_string( &cmd, cmdstr, arg ); bson_finish( &cmd ); - if( mongo_run_command( conn, db, &cmd, &out ) == MONGO_OK ) { - bson_iterator it; - if( bson_find( &it, &out, "ok" ) ) - success = bson_iterator_bool( &it ); - } + result = mongo_run_command( conn, db, &cmd, &out ); bson_destroy( &cmd ); @@ -1030,21 +1292,18 @@ int mongo_simple_str_command( mongo *conn, const char *db, else bson_destroy( &out ); - if( success ) - return MONGO_OK; - else - return MONGO_ERROR; + return result; } -int mongo_cmd_drop_db( mongo *conn, const char *db ) { +MONGO_EXPORT int mongo_cmd_drop_db( mongo *conn, const char *db ) { return mongo_simple_int_command( conn, db, "dropDatabase", 1, NULL ); } -int mongo_cmd_drop_collection( mongo *conn, const char *db, const char *collection, bson *out ) { +MONGO_EXPORT int mongo_cmd_drop_collection( mongo *conn, const char *db, const char *collection, bson *out ) { return mongo_simple_str_command( conn, db, "drop", collection, out ); } -void mongo_cmd_reset_error( mongo *conn, const char *db ) { +MONGO_EXPORT void mongo_cmd_reset_error( mongo *conn, const char *db ) { mongo_simple_int_command( conn, db, "reseterror", 1, NULL ); } @@ -1055,23 +1314,13 @@ static int mongo_cmd_get_error_helper( mongo *conn, const char *db, bson_bool_t haserror = 0; /* Reset last error codes. */ - conn->lasterrcode = 0; - bson_free( conn->lasterrstr ); - conn->lasterrstr = NULL; + mongo_clear_errors( conn ); /* If there's an error, store its code and string in the connection object. */ if( mongo_simple_int_command( conn, db, cmdtype, 1, &out ) == MONGO_OK ) { bson_iterator it; haserror = ( bson_find( &it, &out, "err" ) != BSON_NULL ); - if( haserror ) { - conn->lasterrstr = ( char * )bson_malloc( bson_iterator_string_len( &it ) ); - if( conn->lasterrstr ) { - strcpy( conn->lasterrstr, bson_iterator_string( &it ) ); - } - - if( bson_find( &it, &out, "code" ) != BSON_NULL ) - conn->lasterrcode = bson_iterator_int( &it ); - } + if( haserror ) mongo_set_last_error( conn, &it, &out ); } if( realout ) @@ -1085,15 +1334,15 @@ static int mongo_cmd_get_error_helper( mongo *conn, const char *db, return MONGO_OK; } -int mongo_cmd_get_prev_error( mongo *conn, const char *db, bson *out ) { +MONGO_EXPORT int mongo_cmd_get_prev_error( mongo *conn, const char *db, bson *out ) { return mongo_cmd_get_error_helper( conn, db, out, "getpreverror" ); } -int mongo_cmd_get_last_error( mongo *conn, const char *db, bson *out ) { +MONGO_EXPORT int mongo_cmd_get_last_error( mongo *conn, const char *db, bson *out ) { return mongo_cmd_get_error_helper( conn, db, out, "getlasterror" ); } -bson_bool_t mongo_cmd_ismaster( mongo *conn, bson *realout ) { +MONGO_EXPORT bson_bool_t mongo_cmd_ismaster( mongo *conn, bson *realout ) { bson out = {NULL,0}; bson_bool_t ismaster = 0; @@ -1133,7 +1382,7 @@ static void mongo_pass_digest( const char *user, const char *pass, char hex_dige digest2hex( digest, hex_digest ); } -int mongo_cmd_add_user( mongo *conn, const char *db, const char *user, const char *pass ) { +MONGO_EXPORT int mongo_cmd_add_user( mongo *conn, const char *db, const char *user, const char *pass ) { bson user_obj; bson pass_obj; char hex_digest[33]; @@ -1164,12 +1413,12 @@ int mongo_cmd_add_user( mongo *conn, const char *db, const char *user, const cha return res; } -bson_bool_t mongo_cmd_authenticate( mongo *conn, const char *db, const char *user, const char *pass ) { +MONGO_EXPORT bson_bool_t mongo_cmd_authenticate( mongo *conn, const char *db, const char *user, const char *pass ) { bson from_db; bson cmd; bson out; const char *nonce; - bson_bool_t success = 0; + int result; mongo_md5_state_t st; mongo_md5_byte_t digest[16]; @@ -1200,18 +1449,11 @@ bson_bool_t mongo_cmd_authenticate( mongo *conn, const char *db, const char *use bson_finish( &cmd ); bson_destroy( &from_db ); - /*bson_init( &from_db ); */ - if( mongo_run_command( conn, db, &cmd, &out ) == MONGO_OK ) { - bson_iterator it; - if( bson_find( &it, &out, "ok" ) ) - success = bson_iterator_bool( &it ); - } + + result = mongo_run_command( conn, db, &cmd, &out ); bson_destroy( &from_db ); bson_destroy( &cmd ); - if( success ) - return MONGO_OK; - else - return MONGO_ERROR; + return result; } diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.h index 6f86174101..dd4c4b4f40 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.h +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/mongo.h @@ -3,7 +3,7 @@ * @brief Main MongoDB Declarations */ -/* Copyright 2009-2011 10gen Inc. +/* Copyright 2009-2012 10gen Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,22 +18,26 @@ * limitations under the License. */ -#ifndef _MONGO_H_ -#define _MONGO_H_ +#ifndef MONGO_H_ +#define MONGO_H_ #include "bson.h" MONGO_EXTERN_C_START #define MONGO_MAJOR 0 -#define MONGO_MINOR 4 -#define MONGO_PATCH 0 +#define MONGO_MINOR 5 +#define MONGO_PATCH 2 #define MONGO_OK 0 #define MONGO_ERROR -1 #define MONGO_DEFAULT_PORT 27017 +#define MONGO_DEFAULT_MAX_BSON_SIZE 4 * 1024 * 1024 + +#define MONGO_ERR_LEN 128 + typedef enum mongo_error_t { MONGO_CONN_SUCCESS = 0, /**< Connection success! */ MONGO_CONN_NO_SOCKET, /**< Could not create a socket. */ @@ -43,15 +47,25 @@ typedef enum mongo_error_t { MONGO_CONN_BAD_SET_NAME, /**< Given rs name doesn't match this replica set. */ MONGO_CONN_NO_PRIMARY, /**< Can't find primary in replica set. Connection closed. */ - MONGO_IO_ERROR, /**< An error occurred while reading or writing on socket. */ + MONGO_IO_ERROR, /**< An error occurred while reading or writing on the socket. */ + MONGO_SOCKET_ERROR, /**< Other socket error. */ MONGO_READ_SIZE_ERROR, /**< The response is not the expected length. */ MONGO_COMMAND_FAILED, /**< The command returned with 'ok' value of 0. */ + MONGO_NS_INVALID, /**< The name for the ns (database or collection) is invalid. */ + MONGO_BSON_INVALID, /**< BSON not valid for the specified op. */ + MONGO_BSON_NOT_FINISHED, /**< BSON object has not been finished. */ + MONGO_BSON_TOO_LARGE /**< BSON object exceeds max BSON size. */ +} mongo_error_t; + +typedef enum mongo_cursor_error_t { MONGO_CURSOR_EXHAUSTED, /**< The cursor has no more results. */ MONGO_CURSOR_INVALID, /**< The cursor has timed out or is not recognized. */ MONGO_CURSOR_PENDING, /**< Tailable cursor still alive but no data. */ - MONGO_BSON_INVALID, /**< BSON not valid for the specified op. */ - MONGO_BSON_NOT_FINISHED /**< BSON object has not been finished. */ -} mongo_error_t; + MONGO_CURSOR_QUERY_FAIL, /**< The server returned an '$err' object, indicating query failure. + See conn->lasterrcode and conn->lasterrstr for details. */ + MONGO_CURSOR_BSON_ERROR /**< Something is wrong with the BSON provided. See conn->err + for details. */ +} mongo_cursor_error_t; enum mongo_cursor_flags { MONGO_CURSOR_MUST_FREE = 1, /**< mongo_cursor_destroy should free cursor. */ @@ -137,12 +151,14 @@ typedef struct mongo { int flags; /**< Flags on this connection object. */ int conn_timeout_ms; /**< Connection timeout in milliseconds. */ int op_timeout_ms; /**< Read and write timeout in milliseconds. */ + int max_bson_size; /**< Largest BSON object allowed on this connection. */ bson_bool_t connected; /**< Connection status. */ - mongo_error_t err; /**< Most recent driver error code. */ - char *errstr; /**< String version of most recent driver error code. */ - int lasterrcode; /**< getlasterror given by the server on calls. */ - char *lasterrstr; /**< getlasterror string generated by server. */ + mongo_error_t err; /**< Most recent driver error code. */ + int errcode; /**< Most recent errno or WSAGetLastError(). */ + char errstr[MONGO_ERR_LEN]; /**< String version of error. */ + int lasterrcode; /**< getlasterror code from the server. */ + char lasterrstr[MONGO_ERR_LEN]; /**< getlasterror string from the server. */ } mongo; typedef struct { @@ -152,9 +168,9 @@ typedef struct { int flags; /**< Flags used internally by this drivers. */ int seen; /**< Number returned so far. */ bson current; /**< This cursor's current bson object. */ - mongo_error_t err; /**< Errors on this cursor. */ - bson *query; /**< Bitfield containing cursor options. */ - bson *fields; /**< Bitfield containing cursor options. */ + mongo_cursor_error_t err; /**< Errors on this cursor. */ + const bson *query; /**< Bitfield containing cursor options. */ + const bson *fields;/**< Bitfield containing cursor options. */ int options; /**< Bitfield containing cursor options. */ int limit; /**< Bitfield containing cursor options. */ int skip; /**< Bitfield containing cursor options. */ @@ -162,9 +178,44 @@ typedef struct { /* Connection API */ -/** Initialize a new mongo connection object. If not created - * with mongo_new, you must initialize each mongo - * object using this function. +MONGO_EXPORT mongo* mongo_create(); +MONGO_EXPORT void mongo_dispose(mongo* conn); +MONGO_EXPORT int mongo_get_err(mongo* conn); +MONGO_EXPORT int mongo_is_connected(mongo* conn); +MONGO_EXPORT int mongo_get_op_timeout(mongo* conn); +MONGO_EXPORT const char* mongo_get_primary(mongo* conn); +MONGO_EXPORT int mongo_get_socket(mongo* conn) ; +MONGO_EXPORT int mongo_get_host_count(mongo* conn); +MONGO_EXPORT const char* mongo_get_host(mongo* conn, int i); +MONGO_EXPORT mongo_cursor* mongo_cursor_create(); +MONGO_EXPORT void mongo_cursor_dispose(mongo_cursor* cursor); +MONGO_EXPORT int mongo_get_server_err(mongo* conn); +MONGO_EXPORT const char* mongo_get_server_err_string(mongo* conn); + +/** + * Set an error this mongo connection object. Mostly for internal use. + * + * @param conn a mongo connection object. + * @param err a driver error code of mongo_error_t. + * @param errstr a string version of the error. + * @param errorcode Currently errno or WSAGetLastError(). + */ +MONGO_EXPORT void __mongo_set_error( mongo *conn, mongo_error_t err, + const char *errstr, int errorcode ); +/** + * Clear all errors stored on this mongo connection object. + * + * @param conn a mongo connection object. + */ +MONGO_EXPORT void mongo_clear_errors( mongo *conn ); + +/** Initialize sockets for Windows. + */ +MONGO_EXPORT void mongo_init_sockets(); + +/** + * Initialize a new mongo connection object. You must initialize each mongo + * object using this function. * * @note When finished, you must pass this object to * mongo_destroy( ). @@ -172,7 +223,7 @@ typedef struct { * @param conn a mongo connection object allocated on the stack * or heap. */ -void mongo_init( mongo *conn ); +MONGO_EXPORT void mongo_init( mongo *conn ); /** * Connect to a single MongoDB server. @@ -182,9 +233,9 @@ void mongo_init( mongo *conn ); * @param port the port to connect to. * * @return MONGO_OK or MONGO_ERROR on failure. On failure, a constant of type - * mongo_conn_return_t will be set on the conn->err field. + * mongo_error_t will be set on the conn->err field. */ -int mongo_connect( mongo *conn , const char *host, int port ); +MONGO_EXPORT int mongo_connect( mongo *conn , const char *host, int port ); /** * Set up this connection object for connecting to a replica set. @@ -193,7 +244,7 @@ int mongo_connect( mongo *conn , const char *host, int port ); * @param conn a mongo object. * @param name the name of the replica set to connect to. * */ -void mongo_replset_init( mongo *conn, const char *name ); +MONGO_EXPORT void mongo_replset_init( mongo *conn, const char *name ); /** * Add a seed node to the replica set connection object. @@ -204,7 +255,7 @@ void mongo_replset_init( mongo *conn, const char *name ); * @param host a numerical network address or a network hostname. * @param port the port to connect to. */ -void mongo_replset_add_seed( mongo *conn, const char *host, int port ); +MONGO_EXPORT void mongo_replset_add_seed( mongo *conn, const char *host, int port ); /** * Utility function for converting a host-port string to a mongo_host_port. @@ -215,6 +266,17 @@ void mongo_replset_add_seed( mongo *conn, const char *host, int port ); */ void mongo_parse_host( const char *host_string, mongo_host_port *host_port ); +/** + * Utility function for validation database and collection names. + * + * @param conn a mongo object. + * + * @return MONGO_OK or MONGO_ERROR on failure. On failure, a constant of type + * mongo_conn_return_t will be set on the conn->err field. + * + */ +MONGO_EXPORT int mongo_validate_ns( mongo *conn, const char *ns ); + /** * Connect to a replica set. * @@ -226,7 +288,7 @@ void mongo_parse_host( const char *host_string, mongo_host_port *host_port ); * @return MONGO_OK or MONGO_ERROR on failure. On failure, a constant of type * mongo_conn_return_t will be set on the conn->err field. */ -int mongo_replset_connect( mongo *conn ); +MONGO_EXPORT int mongo_replset_connect( mongo *conn ); /** Set a timeout for operations on this connection. This * is a platform-specific feature, and only work on *nix @@ -238,7 +300,7 @@ int mongo_replset_connect( mongo *conn ); * @return MONGO_OK. On error, return MONGO_ERROR and * set the conn->err field. */ -int mongo_set_op_timeout( mongo *conn, int millis ); +MONGO_EXPORT int mongo_set_op_timeout( mongo *conn, int millis ); /** * Ensure that this connection is healthy by performing @@ -248,7 +310,7 @@ int mongo_set_op_timeout( mongo *conn, int millis ); * * @return MONGO_OK if connected; otherwise, MONGO_ERROR. */ -int mongo_check_connection( mongo *conn ); +MONGO_EXPORT int mongo_check_connection( mongo *conn ); /** * Try reconnecting to the server using the existing connection settings. @@ -261,7 +323,7 @@ int mongo_check_connection( mongo *conn ); * @return MONGO_OK or MONGO_ERROR and * set the conn->err field. */ -int mongo_reconnect( mongo *conn ); +MONGO_EXPORT int mongo_reconnect( mongo *conn ); /** * Close the current connection to the server. After calling @@ -270,7 +332,7 @@ int mongo_reconnect( mongo *conn ); * * @param conn a mongo object. */ -void mongo_disconnect( mongo *conn ); +MONGO_EXPORT void mongo_disconnect( mongo *conn ); /** * Close any existing connection to the server and free all allocated @@ -280,7 +342,7 @@ void mongo_disconnect( mongo *conn ); * * @param conn a mongo object. */ -void mongo_destroy( mongo *conn ); +MONGO_EXPORT void mongo_destroy( mongo *conn ); /** * Insert a BSON document into a MongoDB server. This function @@ -295,7 +357,7 @@ void mongo_destroy( mongo *conn ); * field is MONGO_BSON_INVALID, check the err field * on the bson struct for the reason. */ -int mongo_insert( mongo *conn, const char *ns, bson *data ); +MONGO_EXPORT int mongo_insert( mongo *conn, const char *ns, const bson *data ); /** * Insert a batch of BSON documents into a MongoDB server. This function @@ -309,8 +371,8 @@ int mongo_insert( mongo *conn, const char *ns, bson *data ); * @return MONGO_OK or MONGO_ERROR. * */ -int mongo_insert_batch( mongo *conn , const char *ns , - bson **data , int num ); +MONGO_EXPORT int mongo_insert_batch( mongo *conn , const char *ns , + const bson **data , int num ); /** * Update a document in a MongoDB server. @@ -324,7 +386,7 @@ int mongo_insert_batch( mongo *conn , const char *ns , * @return MONGO_OK or MONGO_ERROR with error stored in conn object. * */ -int mongo_update( mongo *conn, const char *ns, const bson *cond, +MONGO_EXPORT int mongo_update( mongo *conn, const char *ns, const bson *cond, const bson *op, int flags ); /** @@ -336,7 +398,7 @@ int mongo_update( mongo *conn, const char *ns, const bson *cond, * * @return MONGO_OK or MONGO_ERROR with error stored in conn object. */ -int mongo_remove( mongo *conn, const char *ns, const bson *cond ); +MONGO_EXPORT int mongo_remove( mongo *conn, const char *ns, const bson *cond ); /** * Find documents in a MongoDB server. @@ -353,8 +415,8 @@ int mongo_remove( mongo *conn, const char *ns, const bson *cond ); * an error has occurred. For finer-grained error checking, * use the cursor builder API instead. */ -mongo_cursor *mongo_find( mongo *conn, const char *ns, bson *query, - bson *fields, int limit, int skip, int options ); +MONGO_EXPORT mongo_cursor *mongo_find( mongo *conn, const char *ns, const bson *query, + const bson *fields, int limit, int skip, int options ); /** * Initalize a new cursor object. @@ -363,7 +425,7 @@ mongo_cursor *mongo_find( mongo *conn, const char *ns, bson *query, * @param ns the namespace, represented as the the database * name and collection name separated by a dot. e.g., "test.users" */ -void mongo_cursor_init( mongo_cursor *cursor, mongo *conn, const char *ns ); +MONGO_EXPORT void mongo_cursor_init( mongo_cursor *cursor, mongo *conn, const char *ns ); /** * Set the bson object specifying this cursor's query spec. If @@ -376,7 +438,7 @@ void mongo_cursor_init( mongo_cursor *cursor, mongo *conn, const char *ns ); * $query, $orderby, $hint, and/or $explain. See * http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol for details. */ -void mongo_cursor_set_query( mongo_cursor *cursor, bson *query ); +MONGO_EXPORT void mongo_cursor_set_query( mongo_cursor *cursor, const bson *query ); /** * Set the fields to return for this cursor. If you want to return @@ -386,7 +448,7 @@ void mongo_cursor_set_query( mongo_cursor *cursor, bson *query ); * @param fields a bson object representing the fields to return. * See http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields. */ -void mongo_cursor_set_fields( mongo_cursor *cursor, bson *fields ); +MONGO_EXPORT void mongo_cursor_set_fields( mongo_cursor *cursor, const bson *fields ); /** * Set the number of documents to skip. @@ -394,7 +456,7 @@ void mongo_cursor_set_fields( mongo_cursor *cursor, bson *fields ); * @param cursor * @param skip */ -void mongo_cursor_set_skip( mongo_cursor *cursor, int skip ); +MONGO_EXPORT void mongo_cursor_set_skip( mongo_cursor *cursor, int skip ); /** * Set the number of documents to return. @@ -402,7 +464,7 @@ void mongo_cursor_set_skip( mongo_cursor *cursor, int skip ); * @param cursor * @param limit */ -void mongo_cursor_set_limit( mongo_cursor *cursor, int limit ); +MONGO_EXPORT void mongo_cursor_set_limit( mongo_cursor *cursor, int limit ); /** * Set any of the available query options (e.g., MONGO_TAILABLE). @@ -411,7 +473,7 @@ void mongo_cursor_set_limit( mongo_cursor *cursor, int limit ); * @param options a bitfield storing query options. See * mongo_cursor_bitfield_t for available constants. */ -void mongo_cursor_set_options( mongo_cursor *cursor, int options ); +MONGO_EXPORT void mongo_cursor_set_options( mongo_cursor *cursor, int options ); /** * Return the current BSON object data as a const char*. This is useful @@ -419,7 +481,7 @@ void mongo_cursor_set_options( mongo_cursor *cursor, int options ); * * @param cursor */ -const char *mongo_cursor_data( mongo_cursor *cursor ); +MONGO_EXPORT const char *mongo_cursor_data( mongo_cursor *cursor ); /** * Return the current BSON object data as a const char*. This is useful @@ -427,7 +489,7 @@ const char *mongo_cursor_data( mongo_cursor *cursor ); * * @param cursor */ -const bson *mongo_cursor_bson( mongo_cursor *cursor ); +MONGO_EXPORT const bson *mongo_cursor_bson( mongo_cursor *cursor ); /** * Iterate the cursor, returning the next item. When successful, @@ -438,7 +500,7 @@ const bson *mongo_cursor_bson( mongo_cursor *cursor ); * @return MONGO_OK. On error, returns MONGO_ERROR and sets * cursor->err with a value of mongo_error_t. */ -int mongo_cursor_next( mongo_cursor *cursor ); +MONGO_EXPORT int mongo_cursor_next( mongo_cursor *cursor ); /** * Destroy a cursor object. When finished with a cursor, you @@ -449,7 +511,7 @@ int mongo_cursor_next( mongo_cursor *cursor ); * @return MONGO_OK or an error code. On error, check cursor->conn->err * for errors. */ -int mongo_cursor_destroy( mongo_cursor *cursor ); +MONGO_EXPORT int mongo_cursor_destroy( mongo_cursor *cursor ); /** * Find a single document in a MongoDB server. @@ -462,8 +524,8 @@ int mongo_cursor_destroy( mongo_cursor *cursor ); * */ /* out can be NULL if you don't care about results. useful for commands */ -bson_bool_t mongo_find_one( mongo *conn, const char *ns, bson *query, - bson *fields, bson *out ); +MONGO_EXPORT int mongo_find_one( mongo *conn, const char *ns, const bson *query, + const bson *fields, bson *out ); /* MongoDB Helper Functions */ @@ -478,8 +540,8 @@ bson_bool_t mongo_find_one( mongo *conn, const char *ns, bson *query, * @return the number of matching documents. If the command fails, * MONGO_ERROR is returned. */ -int64_t mongo_count( mongo *conn, const char *db, const char *coll, - bson *query ); +MONGO_EXPORT double mongo_count( mongo *conn, const char *db, const char *coll, + const bson *query ); /** * Create a compouned index. @@ -494,7 +556,7 @@ int64_t mongo_count( mongo *conn, const char *db, const char *coll, * * @return MONGO_OK if index is created successfully; otherwise, MONGO_ERROR. */ -int mongo_create_index( mongo *conn, const char *ns, bson *key, int options, bson *out ); +MONGO_EXPORT int mongo_create_index( mongo *conn, const char *ns, const bson *key, int options, bson *out ); /** * Create an index with a single key. @@ -521,9 +583,9 @@ bson_bool_t mongo_create_simple_index( mongo *conn, const char *ns, const char * * @param command the BSON command to run. * @param out the BSON result of the command. * - * @return true if the command ran without error. + * @return MONGO_OK if the command ran without error. */ -bson_bool_t mongo_run_command( mongo *conn, const char *db, bson *command, bson *out ); +MONGO_EXPORT int mongo_run_command( mongo *conn, const char *db, const bson *command, bson *out ); /** * Run a command that accepts a simple string key and integer value. @@ -537,7 +599,7 @@ bson_bool_t mongo_run_command( mongo *conn, const char *db, bson *command, bson * @return MONGO_OK or an error code. * */ -int mongo_simple_int_command( mongo *conn, const char *db, +MONGO_EXPORT int mongo_simple_int_command( mongo *conn, const char *db, const char *cmd, int arg, bson *out ); /** @@ -552,7 +614,7 @@ int mongo_simple_int_command( mongo *conn, const char *db, * @return true if the command ran without error. * */ -bson_bool_t mongo_simple_str_command( mongo *conn, const char *db, const char *cmd, const char *arg, bson *out ); +MONGO_EXPORT int mongo_simple_str_command( mongo *conn, const char *db, const char *cmd, const char *arg, bson *out ); /** * Drop a database. @@ -562,7 +624,7 @@ bson_bool_t mongo_simple_str_command( mongo *conn, const char *db, const char *c * * @return MONGO_OK or an error code. */ -int mongo_cmd_drop_db( mongo *conn, const char *db ); +MONGO_EXPORT int mongo_cmd_drop_db( mongo *conn, const char *db ); /** * Drop a collection. @@ -574,7 +636,7 @@ int mongo_cmd_drop_db( mongo *conn, const char *db ); * * @return true if the collection drop was successful. */ -bson_bool_t mongo_cmd_drop_collection( mongo *conn, const char *db, const char *collection, bson *out ); +MONGO_EXPORT int mongo_cmd_drop_collection( mongo *conn, const char *db, const char *collection, bson *out ); /** * Add a database user. @@ -586,7 +648,7 @@ bson_bool_t mongo_cmd_drop_collection( mongo *conn, const char *db, const char * * * @return MONGO_OK or MONGO_ERROR. */ -int mongo_cmd_add_user( mongo *conn, const char *db, const char *user, const char *pass ); +MONGO_EXPORT int mongo_cmd_add_user( mongo *conn, const char *db, const char *user, const char *pass ); /** * Authenticate a user. @@ -598,7 +660,7 @@ int mongo_cmd_add_user( mongo *conn, const char *db, const char *user, const cha * * @return MONGO_OK on sucess and MONGO_ERROR on failure. */ -int mongo_cmd_authenticate( mongo *conn, const char *db, const char *user, const char *pass ); +MONGO_EXPORT int mongo_cmd_authenticate( mongo *conn, const char *db, const char *user, const char *pass ); /** * Check if the current server is a master. @@ -609,7 +671,7 @@ int mongo_cmd_authenticate( mongo *conn, const char *db, const char *user, const * @return true if the server is a master. */ /* return value is master status */ -bson_bool_t mongo_cmd_ismaster( mongo *conn, bson *out ); +MONGO_EXPORT bson_bool_t mongo_cmd_ismaster( mongo *conn, bson *out ); /** * Get the error for the last command with the current connection. @@ -621,7 +683,7 @@ bson_bool_t mongo_cmd_ismaster( mongo *conn, bson *out ); * @return MONGO_OK if no error and MONGO_ERROR on error. On error, check the values * of conn->lasterrcode and conn->lasterrstr for the error status. */ -int mongo_cmd_get_last_error( mongo *conn, const char *db, bson *out ); +MONGO_EXPORT int mongo_cmd_get_last_error( mongo *conn, const char *db, bson *out ); /** * Get the most recent error with the current connection. @@ -633,7 +695,7 @@ int mongo_cmd_get_last_error( mongo *conn, const char *db, bson *out ); * @return MONGO_OK if no error and MONGO_ERROR on error. On error, check the values * of conn->lasterrcode and conn->lasterrstr for the error status. */ -int mongo_cmd_get_prev_error( mongo *conn, const char *db, bson *out ); +MONGO_EXPORT int mongo_cmd_get_prev_error( mongo *conn, const char *db, bson *out ); /** * Reset the error state for the connection. @@ -641,7 +703,8 @@ int mongo_cmd_get_prev_error( mongo *conn, const char *db, bson *out ); * @param conn a mongo object. * @param db the name of the database. */ -void mongo_cmd_reset_error( mongo *conn, const char *db ); +MONGO_EXPORT void mongo_cmd_reset_error( mongo *conn, const char *db ); + MONGO_EXTERN_C_END diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.c deleted file mode 100644 index 5c8ad9ba5e..0000000000 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.c +++ /dev/null @@ -1,98 +0,0 @@ -/* net.c */ - -/* Copyright 2009-2011 10gen Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Implementation for generic version of net.h */ -#include "net.h" -#include - -int mongo_write_socket( mongo *conn, const void *buf, int len ) { - const char *cbuf = buf; - while ( len ) { - int sent = send( conn->sock, cbuf, len, 0 ); - if ( sent == -1 ) { - conn->err = MONGO_IO_ERROR; - return MONGO_ERROR; - } - cbuf += sent; - len -= sent; - } - - return MONGO_OK; -} - -int mongo_read_socket( mongo *conn, void *buf, int len ) { - char *cbuf = buf; - while ( len ) { - int sent = recv( conn->sock, cbuf, len, 0 ); - if ( sent == 0 || sent == -1 ) { - conn->err = MONGO_IO_ERROR; - return MONGO_ERROR; - } - cbuf += sent; - len -= sent; - } - - return MONGO_OK; -} - -/* This is a no-op in the generic implementation. */ -int mongo_set_socket_op_timeout( mongo *conn, int millis ) { - return MONGO_OK; -} - -static int mongo_create_socket( mongo *conn ) { - int fd; - - if( ( fd = socket( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) { - conn->err = MONGO_CONN_NO_SOCKET; - return MONGO_ERROR; - } - conn->sock = fd; - - return MONGO_OK; -} - -int mongo_socket_connect( mongo *conn, const char *host, int port ) { - struct sockaddr_in sa; - socklen_t addressSize; - int flag = 1; - - if( mongo_create_socket( conn ) != MONGO_OK ) - return MONGO_ERROR; - - memset( sa.sin_zero , 0 , sizeof( sa.sin_zero ) ); - sa.sin_family = AF_INET; - sa.sin_port = htons( port ); - sa.sin_addr.s_addr = inet_addr( host ); - addressSize = sizeof( sa ); - - if ( connect( conn->sock, ( struct sockaddr * )&sa, addressSize ) == -1 ) { - mongo_close_socket( conn->sock ); - conn->connected = 0; - conn->sock = 0; - conn->err = MONGO_CONN_FAIL; - return MONGO_ERROR; - } - - setsockopt( conn->sock, IPPROTO_TCP, TCP_NODELAY, ( char * ) &flag, sizeof( flag ) ); - if( conn->op_timeout_ms > 0 ) - mongo_set_socket_op_timeout( conn, conn->op_timeout_ms ); - - conn->connected = 1; - - return MONGO_OK; -} diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.h deleted file mode 100644 index 49190877c8..0000000000 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/net.h +++ /dev/null @@ -1,57 +0,0 @@ -/** @file net.h */ - -/* Copyright 2009-2011 10gen Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Header for generic net.h */ -#ifndef _MONGO_NET_H_ -#define _MONGO_NET_H_ - -#include "mongo.h" - -#ifdef _WIN32 -#include -#include -#define mongo_close_socket(sock) ( closesocket(sock) ) -typedef int socklen_t; -#else -#include -#include -#include -#include -#include -#include -#include -#define mongo_close_socket(sock) ( close(sock) ) -#endif - -#ifndef _WIN32 -#include -#endif - -#if defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE) || _POSIX_C_SOURCE >= 1 -#define _MONGO_USE_GETADDRINFO -#endif - -MONGO_EXTERN_C_START - -/* This is a no-op in the generic implementation. */ -int mongo_set_socket_op_timeout( mongo *conn, int millis ); -int mongo_read_socket( mongo *conn, void *buf, int len ); -int mongo_write_socket( mongo *conn, const void *buf, int len ); -int mongo_socket_connect( mongo *conn, const char *host, int port ); - -MONGO_EXTERN_C_END -#endif diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/numbers.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/numbers.c index a63e3d73f9..b3032d5ee3 100644 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/numbers.c +++ b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/numbers.c @@ -1,4 +1,4 @@ -/* Copyright 2009-2011 10gen Inc. +/* Copyright 2009-2012 10gen Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform.h deleted file mode 100644 index 4a96af77e3..0000000000 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform.h +++ /dev/null @@ -1,94 +0,0 @@ -/** @file platform.h */ - -/** Copyright 2009-2011 10gen Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* all platform-specific ifdefs should go here */ - -#ifndef _PLATFORM_HACKS_H_ -#define _PLATFORM_HACKS_H_ - -#ifdef __GNUC__ -#define MONGO_INLINE static __inline__ -#else -#define MONGO_INLINE static -#endif - -#ifdef __cplusplus -#define MONGO_EXTERN_C_START extern "C" { -#define MONGO_EXTERN_C_END } -#else -#define MONGO_EXTERN_C_START -#define MONGO_EXTERN_C_END -#endif - - -#if defined(MONGO_HAVE_STDINT) || __STDC_VERSION__ >= 199901L -#include -#elif defined(MONGO_HAVE_UNISTD) -#include -#elif defined(MONGO_USE__INT64) -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#elif defined(MONGO_USE_LONG_LONG_INT) -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#else -#error must have a 64bit int type -#endif - -/* big endian is only used for OID generation. little is used everywhere else */ -#ifdef MONGO_BIG_ENDIAN -#define bson_little_endian64(out, in) ( bson_swap_endian64(out, in) ) -#define bson_little_endian32(out, in) ( bson_swap_endian32(out, in) ) -#define bson_big_endian64(out, in) ( memcpy(out, in, 8) ) -#define bson_big_endian32(out, in) ( memcpy(out, in, 4) ) -#else -#define bson_little_endian64(out, in) ( memcpy(out, in, 8) ) -#define bson_little_endian32(out, in) ( memcpy(out, in, 4) ) -#define bson_big_endian64(out, in) ( bson_swap_endian64(out, in) ) -#define bson_big_endian32(out, in) ( bson_swap_endian32(out, in) ) -#endif - -MONGO_EXTERN_C_START - -MONGO_INLINE void bson_swap_endian64( void *outp, const void *inp ) { - const char *in = ( const char * )inp; - char *out = ( char * )outp; - - out[0] = in[7]; - out[1] = in[6]; - out[2] = in[5]; - out[3] = in[4]; - out[4] = in[3]; - out[5] = in[2]; - out[6] = in[1]; - out[7] = in[0]; - -} -MONGO_INLINE void bson_swap_endian32( void *outp, const void *inp ) { - const char *in = ( const char * )inp; - char *out = ( char * )outp; - - out[0] = in[3]; - out[1] = in[2]; - out[2] = in[1]; - out[3] = in[0]; -} - -MONGO_EXTERN_C_END - -#endif diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.c b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.c deleted file mode 100644 index b2f7c22898..0000000000 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.c +++ /dev/null @@ -1,183 +0,0 @@ -/* net.c */ - -/* Copyright 2009-2011 10gen Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Implementation for Linux version of net.h */ -#include "net.h" -#include - -int mongo_write_socket( mongo *conn, const void *buf, int len ) { - const char *cbuf = buf; - while ( len ) { - int sent = send( conn->sock, cbuf, len, 0 ); - if ( sent == -1 ) { - conn->err = MONGO_IO_ERROR; - return MONGO_ERROR; - } - cbuf += sent; - len -= sent; - } - - return MONGO_OK; -} - -int mongo_read_socket( mongo *conn, void *buf, int len ) { - char *cbuf = buf; - while ( len ) { - int sent = recv( conn->sock, cbuf, len, 0 ); - if ( sent == 0 || sent == -1 ) { - conn->err = MONGO_IO_ERROR; - return MONGO_ERROR; - } - cbuf += sent; - len -= sent; - } - - return MONGO_OK; -} - -static int mongo_create_socket( mongo *conn ) { - int fd; - - if( ( fd = socket( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) { - conn->err = MONGO_CONN_NO_SOCKET; - return MONGO_ERROR; - } - conn->sock = fd; - - return MONGO_OK; -} - -static int mongo_set_blocking_status( mongo *conn ) { - int flags; - int blocking; - - blocking = ( conn->conn_timeout_ms == 0 ); - if( blocking ) - return MONGO_OK; - else { - if( ( flags = fcntl( conn->sock, F_GETFL ) ) == -1 ) { - conn->err = MONGO_IO_ERROR; - mongo_close_socket( conn->sock ); - return MONGO_ERROR; - } - - flags |= O_NONBLOCK; - - if( ( flags = fcntl( conn->sock, F_SETFL, flags ) ) == -1 ) { - conn->err = MONGO_IO_ERROR; - mongo_close_socket( conn->sock ); - return MONGO_ERROR; - } - } - - return MONGO_OK; -} - -int mongo_set_socket_op_timeout( mongo *conn, int millis ) { - struct timeval tv; - tv.tv_sec = millis / 1000; - tv.tv_usec = ( millis % 1000 ) * 1000; - - if ( setsockopt( conn->sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof( tv ) ) == -1 ) { - conn->err = MONGO_IO_ERROR; - return MONGO_ERROR; - } - - if ( setsockopt( conn->sock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof( tv ) ) == -1 ) { - conn->err = MONGO_IO_ERROR; - return MONGO_ERROR; - } - - return MONGO_OK; -} - -#ifdef _MONGO_USE_GETADDRINFO -int mongo_socket_connect( mongo *conn, const char *host, int port ) { - - struct addrinfo *addrs = NULL; - struct addrinfo hints; - int flag = 1; - char port_str[12]; - int ret; - - conn->sock = 0; - conn->connected = 0; - - memset( &hints, 0, sizeof( hints ) ); - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; - - sprintf( port_str, "%d", port ); - - if( mongo_create_socket( conn ) != MONGO_OK ) - return MONGO_ERROR; - - if( getaddrinfo( host, port_str, &hints, &addrs ) != 0 ) { - bson_errprintf( "getaddrinfo failed: %s", gai_strerror( ret ) ); - conn->err = MONGO_CONN_ADDR_FAIL; - return MONGO_ERROR; - } - - if ( connect( conn->sock, addrs->ai_addr, addrs->ai_addrlen ) == -1 ) { - mongo_close_socket( conn->sock ); - freeaddrinfo( addrs ); - conn->err = MONGO_CONN_FAIL; - return MONGO_ERROR; - } - - setsockopt( conn->sock, IPPROTO_TCP, TCP_NODELAY, ( char * )&flag, sizeof( flag ) ); - if( conn->op_timeout_ms > 0 ) - mongo_set_socket_op_timeout( conn, conn->op_timeout_ms ); - - conn->connected = 1; - freeaddrinfo( addrs ); - - return MONGO_OK; -} -#else -int mongo_socket_connect( mongo *conn, const char *host, int port ) { - struct sockaddr_in sa; - socklen_t addressSize; - int flag = 1; - - if( mongo_create_socket( conn ) != MONGO_OK ) - return MONGO_ERROR; - - memset( sa.sin_zero , 0 , sizeof( sa.sin_zero ) ); - sa.sin_family = AF_INET; - sa.sin_port = htons( port ); - sa.sin_addr.s_addr = inet_addr( host ); - addressSize = sizeof( sa ); - - if ( connect( conn->sock, ( struct sockaddr * )&sa, addressSize ) == -1 ) { - mongo_close_socket( conn->sock ); - conn->connected = 0; - conn->sock = 0; - conn->err = MONGO_CONN_FAIL; - return MONGO_ERROR; - } - - setsockopt( conn->sock, IPPROTO_TCP, TCP_NODELAY, ( char * ) &flag, sizeof( flag ) ); - - if( conn->op_timeout_ms > 0 ) - mongo_set_socket_op_timeout( conn, conn->op_timeout_ms ); - - conn->connected = 1; - - return MONGO_OK; -} -#endif diff --git a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.h b/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.h deleted file mode 100644 index 054247c1e8..0000000000 --- a/src/mod/event_handlers/mod_cdr_mongodb/driver/src/platform/linux/net.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @file net.h - * @brief Networking. - */ - -/* Copyright 2009-2011 10gen Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Header for Linux net.h */ -#ifndef _MONGO_NET_H_ -#define _MONGO_NET_H_ - -#include "mongo.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#define mongo_close_socket(sock) ( close(sock) ) - -#if defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE) || _POSIX_C_SOURCE >= 1 -#define _MONGO_USE_GETADDRINFO -#endif - -MONGO_EXTERN_C_START - -int mongo_set_socket_op_timeout( mongo *conn, int millis ); -int mongo_read_socket( mongo *conn, void *buf, int len ); -int mongo_write_socket( mongo *conn, const void *buf, int len ); -int mongo_socket_connect( mongo *conn, const char *host, int port ); - -MONGO_EXTERN_C_END -#endif From 576fbb97ad6c934270f62bb9c70ed3f237b3ba3f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 07:10:19 -0500 Subject: [PATCH 454/630] tweak --- src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl index 4be66361e5..2c7575f64c 100644 --- a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl +++ b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl @@ -65,7 +65,7 @@ my $xml = qq# while (my $request = $scgi->accept) { # fork every new req into its own process (optional) - next unless(fork()); + next unless(my $pid = fork()); my $handle = $request->connection; $request->read_env; @@ -89,5 +89,5 @@ while (my $request = $scgi->accept) { #print $handle "Content-Type: text/xml\n\n"; print $handle $xml; - exit; + exit if (!$pid); } From f917cbe29b5a9589c5019ae40b0339e721d285f9 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 08:23:23 -0500 Subject: [PATCH 455/630] add server side to scgi --- libs/libscgi/Makefile | 7 +- libs/libscgi/src/include/scgi.h | 7 +- libs/libscgi/src/scgi.c | 184 ++++++++++++++++++++++++++++++++ libs/libscgi/testclient.c | 3 +- libs/libscgi/testserver.c | 42 ++++++++ 5 files changed, 238 insertions(+), 5 deletions(-) create mode 100644 libs/libscgi/testserver.c diff --git a/libs/libscgi/Makefile b/libs/libscgi/Makefile index fb59cb7848..88b5b4e73c 100644 --- a/libs/libscgi/Makefile +++ b/libs/libscgi/Makefile @@ -14,7 +14,7 @@ HEADERS=src/include/scgi.h SOLINK=-shared -Xlinker -x -all: $(MYLIB) testclient +all: $(MYLIB) testclient testserver $(MYLIB): $(OBJS) $(HEADERS) $(SRC) ar rcs $(MYLIB) $(OBJS) @@ -26,7 +26,10 @@ $(MYLIB): $(OBJS) $(HEADERS) $(SRC) testclient: $(MYLIB) testclient.c $(CC) $(CC_CFLAGS) $(CFLAGS) testclient.c -o testclient -lscgi $(LDFLAGS) $(LIBS) +testserver: $(MYLIB) testserver.c + $(CC) $(CC_CFLAGS) $(CFLAGS) testserver.c -o testserver -lscgi $(LDFLAGS) $(LIBS) + clean: - rm -f *.o src/*.o libscgi.a *~ src/*~ src/include/*~ testclient + rm -f *.o src/*.o libscgi.a *~ src/*~ src/include/*~ testclient testserver diff --git a/libs/libscgi/src/include/scgi.h b/libs/libscgi/src/include/scgi.h index ea8d30ade4..29abcf0271 100644 --- a/libs/libscgi/src/include/scgi.h +++ b/libs/libscgi/src/include/scgi.h @@ -138,7 +138,7 @@ typedef int scgi_filehandle_t; #define scgi_strlen_zero(s) (!s || *(s) == '\0') #define scgi_strlen_zero_buf(s) (*(s) == '\0') #define end_of(_s) *(*_s == '\0' ? _s : _s + strlen(_s) - 1) - +#define end_of_p(_s) (*_s == '\0' ? _s : _s + strlen(_s) - 1) typedef enum { SCGI_POLL_READ = (1 << 0), @@ -179,7 +179,7 @@ typedef enum { SCGI_GENERR } scgi_status_t; - +typedef void (*scgi_listen_callback_t)(scgi_socket_t server_sock, scgi_socket_t client_sock, struct sockaddr_in *addr); SCGI_DECLARE(scgi_status_t) scgi_connect(scgi_handle_t *handle, const char *host, scgi_port_t port, uint32_t timeout); SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle); @@ -190,6 +190,9 @@ SCGI_DECLARE(scgi_status_t) scgi_add_param(scgi_handle_t *handle, const char *na SCGI_DECLARE(scgi_status_t) scgi_add_body(scgi_handle_t *handle, const char *value); SCGI_DECLARE(size_t) scgi_build_message(scgi_handle_t *handle, char **buffer); SCGI_DECLARE(scgi_status_t) scgi_destroy_params(scgi_handle_t *handle); +SCGI_DECLARE(scgi_status_t) scgi_listen(const char *host, scgi_port_t port, scgi_listen_callback_t callback); +SCGI_DECLARE(const char *) scgi_get_body(scgi_handle_t *handle); +SCGI_DECLARE(const char *) scgi_get_param(scgi_handle_t *handle, const char *name); #ifdef __cplusplus } diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c index eeec39a07b..74cd5cae38 100644 --- a/libs/libscgi/src/scgi.c +++ b/libs/libscgi/src/scgi.c @@ -165,6 +165,11 @@ SCGI_DECLARE(scgi_status_t) scgi_add_body(scgi_handle_t *handle, const char *val return SCGI_SUCCESS; } +SCGI_DECLARE(const char *) scgi_get_body(scgi_handle_t *handle) +{ + return handle->body; +} + SCGI_DECLARE(scgi_status_t) scgi_add_param(scgi_handle_t *handle, const char *name, const char *value) { scgi_param_t *param, *pp; @@ -190,6 +195,19 @@ SCGI_DECLARE(scgi_status_t) scgi_add_param(scgi_handle_t *handle, const char *na return SCGI_SUCCESS; } +SCGI_DECLARE(const char *) scgi_get_param(scgi_handle_t *handle, const char *name) +{ + scgi_param_t *pp; + + for(pp = handle->params; pp; pp = pp->next) { + if (!strcasecmp(pp->name, name)) { + return pp->value; + } + } + + return NULL; +} + static scgi_status_t scgi_push_param(scgi_handle_t *handle, const char *name, const char *value) { scgi_param_t *param; @@ -518,3 +536,169 @@ SCGI_DECLARE(int) scgi_wait_sock(scgi_socket_t sock, uint32_t ms, scgi_poll_t fl } #endif + +static int scgi_socket_reuseaddr(scgi_socket_t socket) +{ +#ifdef WIN32 + BOOL reuse_addr = TRUE; + return setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse_addr, sizeof(reuse_addr)); +#else + int reuse_addr = 1; + return setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, &reuse_addr, sizeof(reuse_addr)); +#endif +} + +SCGI_DECLARE(scgi_status_t) scgi_listen(const char *host, scgi_port_t port, scgi_listen_callback_t callback) +{ + scgi_socket_t server_sock = SCGI_SOCK_INVALID; + struct sockaddr_in addr; + scgi_status_t status = SCGI_SUCCESS; + + if ((server_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { + return SCGI_FAIL; + } + + scgi_socket_reuseaddr(server_sock); + + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl(INADDR_ANY); + addr.sin_port = htons(port); + + if (bind(server_sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) { + status = SCGI_FAIL; + goto end; + } + + if (listen(server_sock, 10000) < 0) { + status = SCGI_FAIL; + goto end; + } + + for (;;) { + int client_sock; + struct sockaddr_in echoClntAddr; +#ifdef WIN32 + int clntLen; +#else + unsigned int clntLen; +#endif + + clntLen = sizeof(echoClntAddr); + + if ((client_sock = accept(server_sock, (struct sockaddr *) &echoClntAddr, &clntLen)) == SCGI_SOCK_INVALID) { + status = SCGI_FAIL; + goto end; + } + + callback(server_sock, client_sock, &echoClntAddr); + } + + end: + + if (server_sock != SCGI_SOCK_INVALID) { + closesocket(server_sock); + server_sock = SCGI_SOCK_INVALID; + } + + return status; + +} + +#define next_str(_e, _s) _s = _e; while(*_s) _s++; _s++ + +SCGI_DECLARE(scgi_status_t) scgi_parse(scgi_socket_t sock, scgi_handle_t *handle) +{ + char sbuf[128] = ""; + char *p = sbuf, *e, *end; + ssize_t r = 0; + scgi_status_t status = SCGI_FAIL; + ssize_t bytes = 0; + char *headers = NULL; + int loops = 0; + ssize_t clen = 0; + char *body = NULL; + char comma = 0; + + handle->sock = sock; + handle->connected = 1; + sock_setup(handle); + + + for(;;) { + + if ((r = recv(sock, p, 1, 0)) < 1) { + break; + } + + if (*p == ':') { + *p = '\0'; + break; + } + p++; + } + + if (r <= 0) goto end; + + bytes = atoi(sbuf); + + if (bytes <= 0) goto end; + + headers = malloc(bytes); + r = recv(sock, headers, bytes, 0); + if (r <= 0) goto end; + + r = recv(sock, &comma, 1, 0); + if (r <= 0 || comma != ',') goto end; + + + p = headers; + end = p + bytes; + e = NULL; + + while(p < end) { + next_str(p, e); + + if (!e) break; + + if (!loops++) { + if (!strcasecmp(p, "CONTENT_LENGTH") && e) { + clen = atoi(e); + if (clen) { + body = malloc(clen+1); + r = recv(sock, body, clen, 0); + *(body + clen) = '\0'; + if (r <= 0) goto end; + scgi_add_body(handle, body); + scgi_safe_free(body); + } + + status = SCGI_SUCCESS; + + } else { + goto end; + } + } + + scgi_add_param(handle, p, e); + next_str(e, p); + } + + end: + + scgi_safe_free(headers); + + return status; +} + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ diff --git a/libs/libscgi/testclient.c b/libs/libscgi/testclient.c index c43fe237c4..9b9078691c 100644 --- a/libs/libscgi/testclient.c +++ b/libs/libscgi/testclient.c @@ -10,7 +10,8 @@ int main(int argc, char *argv[]) int port = 0; if (argc < 2) { - fprintf(stderr, "usage: testclient "); + fprintf(stderr, "usage: testclient \n"); + exit(-1); } ip = argv[1]; diff --git a/libs/libscgi/testserver.c b/libs/libscgi/testserver.c new file mode 100644 index 0000000000..7cb6e32a03 --- /dev/null +++ b/libs/libscgi/testserver.c @@ -0,0 +1,42 @@ +#include + +static void callback(scgi_socket_t server_sock, scgi_socket_t client_sock, struct sockaddr_in *addr) +{ + scgi_handle_t handle = { 0 }; + + if (scgi_parse(client_sock, &handle) == SCGI_SUCCESS) { + scgi_param_t *pp; + + for(pp = handle.params; pp; pp = pp->next) { + printf("HEADER: [%s] VALUE: [%s]\n", pp->name, pp->value); + } + + if (handle.body) { + printf("\n\nBODY:\n%s\n\n", handle.body); + } + + } + + scgi_disconnect(&handle); + +} + +int main(int argc, char *argv[]) +{ + char *ip; + int port = 0; + + if (argc < 2) { + fprintf(stderr, "usage: testserver \n"); + exit(-1); + } + + ip = argv[1]; + port = atoi(argv[2]); + + + scgi_listen(ip, port, callback); + + + +} From 154678b6c228e7d46f526123f5f605351e6b7ab1 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 10 May 2012 10:27:16 -0500 Subject: [PATCH 456/630] tweak for config change --- freeswitch.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/freeswitch.spec b/freeswitch.spec index 470866ab2c..de228a06bf 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -1756,6 +1756,7 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/xml_cdr.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/xml_curl.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/xml_rpc.conf.xml +%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/xml_scgi.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/zeroconf.conf.xml ###################################################################################################################### # Chatplans From e0db68d20be1a1e2d03c1e1d84182aece058776a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 09:48:33 -0500 Subject: [PATCH 457/630] add string to url --- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index 687ec3aeb9..f2dbc61ee9 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -252,7 +252,7 @@ static switch_status_t do_config(void) binding->host = switch_core_strdup(globals.pool, host); binding->port = atoi(port); binding->vars_map = vars_map; - binding->url = switch_mprintf("scgi://%s:%s", host, port); + binding->url = switch_mprintf("scgi://%s:%s/%s", host, port, bname); if (bind_mask) { binding->bindings = switch_core_strdup(globals.pool, bind_mask); From 68021e862f146875f2fb6c45fb2de58b8e8d537d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 09:48:42 -0500 Subject: [PATCH 458/630] send silence on smaller sleeps --- src/switch_ivr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 325a8083a2..e4fc807596 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -170,7 +170,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_sleep(switch_core_session_t *session, SWITCH_IVR_VERIFY_SILENCE_DIVISOR(sval); } - if (ms > 100 && sval) { + if (ms > 10 && sval) { switch_core_session_get_read_impl(session, &imp); if (switch_core_codec_init(&codec, From 787d81db320c8a34182570ad845efae2c7783eef Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 10:57:29 -0500 Subject: [PATCH 459/630] fix bsd build issue --- src/include/switch_platform.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/include/switch_platform.h b/src/include/switch_platform.h index 3d1efe425d..a011850748 100644 --- a/src/include/switch_platform.h +++ b/src/include/switch_platform.h @@ -258,8 +258,12 @@ typedef intptr_t switch_ssize_t; #endif #ifndef TIME_T_FMT +#if defined(__FreeBSD__) && SIZEOF_VOIDP == 4 +#define TIME_T_FMT "d" +#else #define TIME_T_FMT "ld" #endif +#endif #endif From aedbd06b99fb11030c498219f8e44370d7574fde Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 11:01:30 -0500 Subject: [PATCH 460/630] fix warning --- libs/libscgi/src/scgi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c index 74cd5cae38..d1675d246f 100644 --- a/libs/libscgi/src/scgi.c +++ b/libs/libscgi/src/scgi.c @@ -226,7 +226,7 @@ static scgi_status_t scgi_push_param(scgi_handle_t *handle, const char *name, co SCGI_DECLARE(scgi_status_t) scgi_send_request(scgi_handle_t *handle) { - scgi_status_t status; + scgi_status_t status = SCGI_SUCCESS; char *buffer = NULL; size_t bytes = 0; ssize_t sent = 0; From cc36ff4800cd1df074a59eef4313b583f3d9f23f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 10 May 2012 17:19:06 +0000 Subject: [PATCH 461/630] debian: override gpl/openssl warning on freeswitch package --- debian/bootstrap.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 852571aeed..12dbde8e6d 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -878,9 +878,11 @@ grep -e '^Package:' control | while xread l; do print_long_filename_override "$m" >> $f fi done -f=libfreeswitch1.lintian-overrides -[ -s $f ] || print_edit_warning >> $f -print_gpl_openssl_override "libfreeswitch1" >> $f +for p in freeswitch libfreeswitch1; do + f=$p.lintian-overrides + [ -s $f ] || print_edit_warning >> $f + print_gpl_openssl_override "$p" >> $f +done echo "Done bootstrapping debian/" >&2 touch .stamp-bootstrap From adf313d0c32c2b0be38b7e513765f90200ec15a1 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 10 May 2012 17:24:37 +0000 Subject: [PATCH 462/630] debian: override warnings about closing an ITP bug --- debian/bootstrap.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 12dbde8e6d..7ac9b15e9e 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -541,6 +541,15 @@ ${p}: possible-gpl-code-linked-with-openssl EOF } +print_itp_override () { + local p="$1" + cat <&2 grep -e '^Package:' control | while xread l; do m="${l#*: }" f=$m.lintian-overrides - if [ ! -s $f ] || ! grep -e 'package-has-long-file-name' $f >/dev/null; then - [ -s $f ] || print_edit_warning >> $f + [ -s $f ] || print_edit_warning >> $f + if ! grep -e 'package-has-long-file-name' $f >/dev/null; then print_long_filename_override "$m" >> $f fi + if ! grep -e 'new-package-should-close-itp-bug' $f >/dev/null; then + print_itp_override "$m" >> $f + fi done for p in freeswitch libfreeswitch1; do f=$p.lintian-overrides From 62190e58367c7c1ce5334335cbf6b6e3ddfaff81 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 10 May 2012 18:25:30 +0000 Subject: [PATCH 463/630] debian: libfreeswitch1 shouldn't build-depend on perl:Depends --- debian/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 7ac9b15e9e..52391ba438 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -196,7 +196,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch Package: libfreeswitch1 Architecture: any -Depends: \${shlibs:Depends}, \${perl:Depends}, \${misc:Depends} +Depends: \${shlibs:Depends}, \${misc:Depends} Recommends: Suggests: libfreeswitch1-dbg Description: Cross-Platform Scalable Multi-Protocol Soft Switch From 9b265bdf8b9a22a5c60288d9e587fcf7b93f9b3a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 10 May 2012 18:47:02 +0000 Subject: [PATCH 464/630] debian: freeswitch depends on libfreeswitch1 --- debian/bootstrap.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 52391ba438..f7ecd14876 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -186,7 +186,8 @@ print_core_control () { cat < Date: Thu, 10 May 2012 18:53:55 +0000 Subject: [PATCH 465/630] debian: don't package the SWF slim player We're not including the source code or build tools for the version of the player we're distributing, so it fails The Debian Free Software Guidelines (DFSG). --- debian/bootstrap.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index f7ecd14876..bc5ab0b62f 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -210,7 +210,6 @@ Architecture: any Depends: \${misc:Depends}, freeswitch (= \${binary:Version}) Recommends: freeswitch-doc (= \${binary:Version}), - freeswitch-htdocs-slim (= \${binary:Version}), freeswitch-mod-commands (= \${binary:Version}), freeswitch-init (= \${binary:Version}), freeswitch-music (= \${binary:Version}), @@ -404,14 +403,6 @@ Description: FreeSWITCH systemd configuration ## misc -Package: freeswitch-htdocs-slim -Architecture: all -Depends: \${misc:Depends} -Description: FreeSWITCH htdocs slim player - $(debian_wrap "${fs_description}") - . - This package contains the slim SWF player for FreeSWITCH. - ## sounds Package: freeswitch-music From e54ab070f443f31369e99c79dae69d6607f21642 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 12:15:25 -0500 Subject: [PATCH 466/630] put presence-data in events --- src/include/switch_event.h | 2 ++ src/switch_channel.c | 33 +++++++++++++++++++++++++++++++++ src/switch_core_sqldb.c | 2 +- src/switch_event.c | 27 +++++++++++++++++++++++++++ src/switch_ivr_bridge.c | 38 +++++++++++++++++++++++++++++--------- 5 files changed, 92 insertions(+), 10 deletions(-) diff --git a/src/include/switch_event.h b/src/include/switch_event.h index dd5991bf07..5909c0e0c0 100644 --- a/src/include/switch_event.h +++ b/src/include/switch_event.h @@ -402,6 +402,8 @@ SWITCH_DECLARE(void) switch_event_deliver(switch_event_t **event); SWITCH_DECLARE(char *) switch_event_build_param_string(switch_event_t *event, const char *prefix, switch_hash_t *vars_map); SWITCH_DECLARE(int) switch_event_check_permission_list(switch_event_t *list, const char *name); +SWITCH_DECLARE(void) switch_event_add_presence_data_cols(switch_channel_t *channel, switch_event_t *event, const char *prefix); + ///\} SWITCH_END_EXTERN_C diff --git a/src/switch_channel.c b/src/switch_channel.c index 3c4262b0a9..20734d04f4 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1160,6 +1160,38 @@ SWITCH_DECLARE(uint32_t) switch_channel_del_variable_prefix(switch_channel_t *ch return r; } + +SWITCH_DECLARE(void) switch_channel_set_presence_data_vals(switch_channel_t *channel, const char *presence_data_cols) +{ + if (!zstr(presence_data_cols)) { + char *cols[128] = { 0 }; + char header_name[128] = ""; + int col_count = 0, i = 0; + char *data_copy = NULL; + + if (zstr(presence_data_cols)) { + presence_data_cols = switch_channel_get_variable_dup(channel, "presence_data_cols", SWITCH_FALSE, -1); + if (zstr(presence_data_cols)) { + return; + } + } + + data_copy = strdup(presence_data_cols); + + col_count = switch_split(data_copy, ':', cols); + + for (i = 0; i < col_count; i++) { + const char *val = NULL; + switch_snprintf(header_name, sizeof(header_name), "PD-%s", cols[i]); + val = switch_channel_get_variable(channel, cols[i]); + switch_channel_set_profile_var(channel, header_name, val); + } + + switch_safe_free(data_copy); + } +} + + SWITCH_DECLARE(switch_status_t) switch_channel_set_variable_var_check(switch_channel_t *channel, const char *varname, const char *value, switch_bool_t var_check) { @@ -2192,6 +2224,7 @@ SWITCH_DECLARE(void) switch_channel_event_set_basic_data(switch_channel_t *chann if ((v = switch_channel_get_variable(channel, "presence_data_cols"))) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Data-Cols", v); + switch_event_add_presence_data_cols(channel, event, "PD-"); } if ((v = switch_channel_get_variable(channel, "call_uuid"))) { diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index d6c64758aa..5c59d96962 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -1171,7 +1171,7 @@ static void *SWITCH_THREAD_FUNC switch_core_sql_thread(switch_thread_t *thread, static char *parse_presence_data_cols(switch_event_t *event) { - char *cols[25] = { 0 }; + char *cols[128] = { 0 }; int col_count = 0; char *data_copy; switch_stream_handle_t stream = { 0 }; diff --git a/src/switch_event.c b/src/switch_event.c index bce57b79ee..fa864526c8 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -2399,7 +2399,34 @@ SWITCH_DECLARE(int) switch_event_check_permission_list(switch_event_t *list, con return r; } +SWITCH_DECLARE(void) switch_event_add_presence_data_cols(switch_channel_t *channel, switch_event_t *event, const char *prefix) +{ + const char *data; + if (!prefix) prefix = ""; + + if ((data = switch_channel_get_variable(channel, "presence_data_cols"))) { + char *cols[128] = { 0 }; + char header_name[128] = ""; + int col_count = 0, i = 0; + char *data_copy = NULL; + + data_copy = strdup(data); + + col_count = switch_split(data_copy, ':', cols); + + for (i = 0; i < col_count; i++) { + const char *val = NULL; + switch_snprintf(header_name, sizeof(header_name), "%s%s", prefix, cols[i]); + + val = switch_channel_get_variable(channel, cols[i]); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header_name, val); + } + + switch_safe_free(data_copy); + } + +} /* For Emacs: diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 6a2cee0405..3d9758f62b 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -968,9 +968,16 @@ static switch_status_t signal_bridge_on_hibernate(switch_core_session_t *session if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_BRIDGE) == SWITCH_STATUS_SUCCESS) { + switch_core_session_t *other_session; + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-A-Unique-ID", switch_core_session_get_uuid(session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-B-Unique-ID", msg.string_arg); switch_channel_event_set_data(channel, event); + if ((other_session = switch_core_session_locate(msg.string_arg))) { + switch_channel_t *other_channel = switch_core_session_get_channel(other_session); + switch_event_add_presence_data_cols(other_channel, event, "Bridge-B-PD-"); + switch_core_session_rwunlock(other_session); + } switch_event_fire(&event); } } @@ -1052,16 +1059,27 @@ static switch_status_t signal_bridge_on_hangup(switch_core_session_t *session) } } - switch_core_session_rwunlock(other_session); - } + if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { + switch_channel_clear_flag_recursive(channel, CF_BRIDGE_ORIGINATOR); + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_UNBRIDGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-A-Unique-ID", switch_core_session_get_uuid(session)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-B-Unique-ID", uuid); + switch_event_add_presence_data_cols(other_channel, event, "Bridge-B-PD-"); + switch_channel_event_set_data(channel, event); + switch_event_fire(&event); + } + } - if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { - switch_channel_clear_flag_recursive(channel, CF_BRIDGE_ORIGINATOR); - if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_UNBRIDGE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-A-Unique-ID", switch_core_session_get_uuid(session)); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-B-Unique-ID", uuid); - switch_channel_event_set_data(channel, event); - switch_event_fire(&event); + switch_core_session_rwunlock(other_session); + } else { + if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { + switch_channel_clear_flag_recursive(channel, CF_BRIDGE_ORIGINATOR); + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_UNBRIDGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-A-Unique-ID", switch_core_session_get_uuid(session)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-B-Unique-ID", uuid); + switch_channel_event_set_data(channel, event); + switch_event_fire(&event); + } } } @@ -1242,6 +1260,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_multi_threaded_bridge(switch_core_ses switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-A-Unique-ID", switch_core_session_get_uuid(session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-B-Unique-ID", switch_core_session_get_uuid(peer_session)); switch_channel_event_set_data(caller_channel, event); + switch_event_add_presence_data_cols(peer_channel, event, "Bridge-B-PD-"); switch_event_fire(&event); br = 1; } @@ -1425,6 +1444,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_multi_threaded_bridge(switch_core_ses switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-A-Unique-ID", switch_core_session_get_uuid(session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridge-B-Unique-ID", switch_core_session_get_uuid(peer_session)); switch_channel_event_set_data(caller_channel, event); + switch_event_add_presence_data_cols(peer_channel, event, "Bridge-B-PD-"); switch_event_fire(&event); } From 704427337696b19c1eb2e46dc42b9c667d2c6408 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 12:23:00 -0500 Subject: [PATCH 467/630] not worth it.... --- .../event_handlers/mod_event_socket/mod_event_socket.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c index b56c094872..d71a6fa70e 100644 --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c @@ -1356,16 +1356,16 @@ static switch_status_t read_packet(listener_t *listener, switch_event_t **event, if (switch_test_flag(listener, LFLAG_LINGER)) { char disco_buf[512] = ""; - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %"TIME_T_FMT"\n", - switch_channel_get_name(channel), listener->linger_timeout); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(listener->session), SWITCH_LOG_DEBUG, "%s Socket Linger %d\n", + switch_channel_get_name(channel), (int)listener->linger_timeout); switch_snprintf(disco_buf, sizeof(disco_buf), "Content-Type: text/disconnect-notice\n" "Controlled-Session-UUID: %s\n" "Content-Disposition: linger\n" "Channel-Name: %s\n" - "Linger-Time: %"TIME_T_FMT"\n" + "Linger-Time: %d\n" "Content-Length: 0\n\n", - switch_core_session_get_uuid(listener->session), switch_channel_get_name(channel), listener->linger_timeout); + switch_core_session_get_uuid(listener->session), switch_channel_get_name(channel), (int)listener->linger_timeout); if (listener->linger_timeout != (time_t) -1) { From 702cc9d49f158bd3a8ecf2cadf0acda6540c273d Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 10 May 2012 16:23:55 -0500 Subject: [PATCH 468/630] --resolve 4201 fix up the spec file to make sure /var/lib/freeswitch has the correct perms --- freeswitch.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/freeswitch.spec b/freeswitch.spec index de228a06bf..889dae9007 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -1593,6 +1593,7 @@ fi #################################### Basic Directory Structure ####################################################### # %dir %attr(0750, freeswitch, daemon) %{sysconfdir} +%dir %attr(0750, freeswitch, daemon) %{LOCALSTATEDIR} %dir %attr(0750, freeswitch, daemon) %{DBDIR} %dir %attr(0750, freeswitch, daemon) %{GRAMMARDIR} %dir %attr(0750, freeswitch, daemon) %{HTDOCSDIR} From dbafc38b3e5797c0096fc65a4f81d9b0e483272c Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Wed, 9 May 2012 10:49:11 +0200 Subject: [PATCH 469/630] skypopen: sk balances gives you how many credits you have, no more errors --- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index f489cc613a..08d815a7b1 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -2533,9 +2533,7 @@ SWITCH_STANDARD_API(sk_function) globals.SKYPOPEN_INTERFACES[tmp_i].message + 30); } } - } - - if (!strcasecmp(argv[0], "list")) { + } else if (!strcasecmp(argv[0], "list")) { int i; unsigned int ib = 0; unsigned int ib_failed = 0; From aba8e073a4f94ed95baad9388b5639f19051b605 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 10 May 2012 23:04:58 +0200 Subject: [PATCH 470/630] skypopen: don't whine in debug when skypeout to pstn --- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 08d815a7b1..25539fa81e 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -879,7 +879,7 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch switch_sleep(1000); //XXX don't like this try++; if (try < 5) { - DEBUGA_SKYPE("skypopen_audio_read going back to read\n", SKYPOPEN_P_LOG); + //DEBUGA_SKYPE("skypopen_audio_read going back to read\n", SKYPOPEN_P_LOG); goto read; } DEBUGA_SKYPE("READ BUFFER EMPTY, skypopen_audio_read Silence\n", SKYPOPEN_P_LOG); From b008f8c9d59f8238316d18bdb5a8529c8ae50ccf Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 00:35:17 +0000 Subject: [PATCH 471/630] debian: attribution --- debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/rules b/debian/rules index 0cc293a346..98b31607f4 100755 --- a/debian/rules +++ b/debian/rules @@ -1,5 +1,7 @@ #!/usr/bin/make -f # -*- mode:makefile -*- +##### Author: Travis Cross + #export DH_VERBOSE=1 FS_CFLAGS?=-ggdb3 -O2 From 383130f855759fbaba88311efac6870125f62344 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 02:03:58 +0000 Subject: [PATCH 472/630] debian: remove remnants of slimplayer as we're now packaging this under contrib --- debian/.gitignore | 1 - debian/freeswitch-htdocs-slim.install | 3 --- 2 files changed, 4 deletions(-) delete mode 100644 debian/freeswitch-htdocs-slim.install diff --git a/debian/.gitignore b/debian/.gitignore index dc57b0b450..a5ce34d6b9 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -20,7 +20,6 @@ /freeswitch-dbg/ /freeswitch-dev/ /freeswitch-doc/ -/freeswitch-htdocs-slim*/ /freeswitch-init*/ /freeswitch-meta*/ /freeswitch-mod-*/ diff --git a/debian/freeswitch-htdocs-slim.install b/debian/freeswitch-htdocs-slim.install deleted file mode 100644 index 0975415a85..0000000000 --- a/debian/freeswitch-htdocs-slim.install +++ /dev/null @@ -1,3 +0,0 @@ -/usr/share/freeswitch/htdocs/license.txt -/usr/share/freeswitch/htdocs/slim.swf -/usr/share/freeswitch/htdocs/slimtest.htm From f9653fbd38e569289181076bd1d9dc25ed2bba52 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 10 May 2012 22:34:37 -0500 Subject: [PATCH 473/630] FS-4204 --resolve --- src/include/switch_core.h | 2 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 12 +++++ src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 56 ++++++++++++++++++------ src/mod/endpoints/mod_sofia/sofia_glue.c | 4 ++ src/switch_core_media_bug.c | 22 +++++++++- src/switch_ivr_bridge.c | 2 + 7 files changed, 83 insertions(+), 16 deletions(-) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 91cff21d67..624d491e1d 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -141,7 +141,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_pop(switch_core_session_t SWITCH_DECLARE(switch_status_t) switch_core_media_bug_exec_all(switch_core_session_t *orig_session, const char *function, switch_media_bug_exec_cb_t cb, void *user_data); - +SWITCH_DECLARE(uint32_t) switch_core_media_bug_count(switch_core_session_t *orig_session, const char *function); /*! \brief Add a media bug to the session \param session the session to add the bug to diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index cf095386e5..164d0e76ff 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -5375,11 +5375,23 @@ SWITCH_STANDARD_APP(sofia_sla_function) if (bargee_session == session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "BARGE: %s (cannot barge on myself)\n", (char *) data); } else { + switch_channel_t *channel; + if (switch_core_session_check_interface(bargee_session, sofia_endpoint_interface)) { tech_pvt = switch_core_session_get_private(bargee_session); + sofia_clear_flag(tech_pvt, TFLAG_SLA_BARGING); sofia_set_flag(tech_pvt, TFLAG_SLA_BARGE); switch_ivr_transfer_variable(bargee_session, session, SWITCH_SIGNAL_BOND_VARIABLE); } + + if (switch_core_session_check_interface(session, sofia_endpoint_interface)) { + tech_pvt = switch_core_session_get_private(session); + sofia_set_flag(tech_pvt, TFLAG_SLA_BARGING); + } + + channel = switch_core_session_get_channel(session); + switch_channel_set_variable(channel, "sip_barging_uuid", (char *)data); + } switch_core_session_rwunlock(bargee_session); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 2da82ac0c2..65755500a9 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -334,6 +334,7 @@ typedef enum { TFLAG_CAPTURE, TFLAG_REINVITED, TFLAG_SLA_BARGE, + TFLAG_SLA_BARGING, /* No new flags below this line */ TFLAG_MAX } TFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index f87e8581b0..820118c585 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -599,6 +599,23 @@ void sofia_handle_sip_i_bye(switch_core_session_t *session, int status, status = 200; phrase = "OK"; + if (sofia_test_flag(tech_pvt, TFLAG_SLA_BARGING)) { + const char *bargee_uuid = switch_channel_get_variable(channel, "sip_barging_uuid"); + switch_core_session_t *bargee_session; + uint32_t ttl = 0; + + if ((bargee_session = switch_core_session_locate(bargee_uuid))) { + //switch_channel_t *bargee_channel = switch_core_session_get_channel(bargee_session); + if ((ttl = switch_core_media_bug_count(bargee_session, "eavesdrop")) == 1) { + if (switch_core_session_check_interface(bargee_session, sofia_endpoint_interface)) { + private_object_t *bargee_tech_pvt = switch_core_session_get_private(bargee_session); + sofia_clear_flag(bargee_tech_pvt, TFLAG_SLA_BARGE); + } + } + switch_core_session_rwunlock(bargee_session); + } + } + if (sofia_test_flag(tech_pvt, TFLAG_SLA_BARGE)) { switch_core_session_t *new_session, *other_session; const char *other_uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE); @@ -8419,9 +8436,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ if ((b_session = switch_core_session_locate(b_private->uuid))) { switch_channel_t *b_channel = switch_core_session_get_channel(b_session); - const char *uuid; - const char *app = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_VARIABLE); - const char *data = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE); + const char *bridge_uuid; switch_caller_profile_t *orig_cp; const char *sent_name, *sent_number; orig_cp = switch_channel_get_caller_profile(b_channel); @@ -8446,24 +8461,37 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Setting NAT mode based on %s\n", is_nat); } + tech_pvt->caller_profile->dialplan = "inline"; - if (app && data && !strcasecmp(app, "conference")) { - tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,conference:%s+flags{dist-dtmf}", data); - tech_pvt->caller_profile->dialplan = "inline"; - } else { - if (!(uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) { - uuid = switch_core_session_get_uuid(b_session); - } + bridge_uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE); - if (uuid) { - uuid = switch_core_session_strdup(b_session, uuid); + if (call_info) { + if (!zstr(bridge_uuid) && switch_channel_test_flag(b_channel, CF_LEG_HOLDING)) { + tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, + "answer,intercept:%s", bridge_uuid); + } else { tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,sofia_sla:%s", b_private->uuid); + } + } else { + if (!zstr(bridge_uuid)) { + switch_channel_mark_hold(b_channel, SWITCH_FALSE); + tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,intercept:%s", bridge_uuid); + } else { + const char *b_app = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_VARIABLE); + const char *b_data = switch_channel_get_variable(b_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE); + + if (b_data && b_app) { + tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,%s:%s", b_app, b_data); + } else if (b_app) { + tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "answer,%s", b_app); + } + - - tech_pvt->caller_profile->dialplan = "inline"; + switch_channel_hangup(b_channel, SWITCH_CAUSE_ATTENDED_TRANSFER); } } + switch_core_session_rwunlock(b_session); } } diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index f787ac3cbb..2039116b41 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -4061,6 +4061,10 @@ int sofia_glue_toggle_hold(private_object_t *tech_pvt, int sendonly) { int changed = 0; + if (sofia_test_flag(tech_pvt, TFLAG_SLA_BARGE) || sofia_test_flag(tech_pvt, TFLAG_SLA_BARGING)) { + return 0; + } + if (sendonly && switch_channel_test_flag(tech_pvt->channel, CF_ANSWERED)) { if (!sofia_test_flag(tech_pvt, TFLAG_SIP_HOLD)) { const char *stream; diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 3d5c26b531..8b466b111e 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -600,6 +600,24 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_pop(switch_core_session_t return SWITCH_STATUS_FALSE; } +SWITCH_DECLARE(uint32_t) switch_core_media_bug_count(switch_core_session_t *orig_session, const char *function) +{ + switch_media_bug_t *bp; + uint32_t x = 0; + + if (orig_session->bugs) { + switch_thread_rwlock_rdlock(orig_session->bug_rwlock); + for (bp = orig_session->bugs; bp; bp = bp->next) { + if (!switch_test_flag(bp, SMBF_PRUNE) && !switch_test_flag(bp, SMBF_LOCK) && !strcmp(bp->function, function)) { + x++; + } + } + switch_thread_rwlock_unlock(orig_session->bug_rwlock); + } + + return x; +} + SWITCH_DECLARE(switch_status_t) switch_core_media_bug_exec_all(switch_core_session_t *orig_session, const char *function, switch_media_bug_exec_cb_t cb, void *user_data) { @@ -629,7 +647,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_enumerate(switch_core_sess stream->write_function(stream, "\n"); if (session->bugs) { - switch_thread_rwlock_wrlock(session->bug_rwlock); + switch_thread_rwlock_rdlock(session->bug_rwlock); for (bp = session->bugs; bp; bp = bp->next) { int thread_locked = (bp->thread_id && bp->thread_id == switch_thread_self()); stream->write_function(stream, @@ -778,6 +796,8 @@ SWITCH_DECLARE(uint32_t) switch_core_media_bug_prune(switch_core_session_t *sess switch_thread_rwlock_unlock(session->bug_rwlock); if (bp) { + switch_clear_flag(bp, SMBF_LOCK); + bp->thread_id = 0; switch_core_media_bug_close(&bp); ttl++; goto top; diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 3d9758f62b..d8b548b048 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -228,6 +228,8 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) } } + switch_channel_clear_flag(chan_a, CF_INTERCEPT); + switch_channel_clear_flag(chan_a, CF_INTERCEPTED); switch_channel_set_flag(chan_a, CF_BRIDGED); From 495dd7e5e2dc377aa756fa0a28d02073c1c8be13 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 03:14:40 +0000 Subject: [PATCH 474/630] debian: stop if we hit any errors in util.sh --- debian/util.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index e8dc26448f..cb69823c7c 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -2,6 +2,8 @@ ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- ##### Author: Travis Cross +set -e + ddir="." [ -n "${0%/*}" ] && ddir="${0%/*}" From 417c3c29fca98b6d52a8372fa92907a76833d35d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 04:37:54 +0000 Subject: [PATCH 475/630] debian: clean up after bootstrapping --- debian/bootstrap.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index bc5ab0b62f..1ded03cc12 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -888,5 +888,10 @@ for p in freeswitch libfreeswitch1; do print_gpl_openssl_override "$p" >> $f done +echo "Cleaning up..." >&2 +rm -f control-modules.preparse +rm -rf control-modules.parse +diff control-modules control-modules.gen >/dev/null && rm -f control-modules.gen + echo "Done bootstrapping debian/" >&2 touch .stamp-bootstrap From 18de24477802f0c9f2dff91b1b205d18e65fbe62 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 03:13:39 +0000 Subject: [PATCH 476/630] debian: add a utility to create the .orig.tar.* file --- debian/util.sh | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index cb69823c7c..e5e561a26d 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -72,10 +72,112 @@ install_build_depends () { touch $ddir/.stamp-build-depends } +cwget () { + local url="$1" f="${1##*/}" + echo "fetching: $url to $f" >&2 + if [ -n "$FS_FILES_DIR" ]; then + if ! [ -s "$FS_FILES_DIR/$f" ]; then + (cd $FS_FILES_DIR && wget -N "$url") + fi + cp -a $FS_FILES_DIR/$f . + else + wget -N "$url" + fi +} + +getlib () { + local sd="$1" url="$2" f="${2##*/}" + (cd $sd/libs \ + && cwget "$url" \ + && tar -xv --no-same-owner --no-same-permissions -f "$f" \ + && rm -f "$f" \ + && mkdir -p $f) +} + +getsound () { + local sd="$1" url="$2" f="${2##*/}" + (cd $sd \ + && cwget "$url") +} + +getlibs () { + local sd="$1" + # get pinned libraries + getlib $sd http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-v1.8-latest.tgz + getlib $sd http://files.freeswitch.org/downloads/libs/json-c-0.9.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/libmemcached-0.32.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/soundtouch-1.6.0.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 + getlib $sd http://files.freeswitch.org/downloads/libs/sphinxbase-0.7.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/pocketsphinx-0.7.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/communicator_semi_6000_20080321.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/celt-0.10.0.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/opus-0.9.0.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/openldap-2.4.19.tar.gz + getlib $sd http://download.zeromq.org/zeromq-2.1.9.tar.gz \ + || getlib $sd http://download.zeromq.org/historic/zeromq-2.1.9.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/freeradius-client-1.1.6.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/lame-3.98.4.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz + getlib $sd http://files.freeswitch.org/downloads/libs/mpg123-1.13.2.tar.gz + # get sounds and music + for x in 8000 16000 32000 48000; do + getsound $sd http://files.freeswitch.org/freeswitch-sounds-en-us-callie-$x-1.0.18.tar.gz + getsound $sd http://files.freeswitch.org/freeswitch-sounds-music-$x-1.0.8.tar.gz + done + # cleanup mongo + ( + cd $sd/libs/mongo-cxx-driver-v1.8 + rm -rf config.log .sconf_temp *Test *Example + find . -name "*.o" -exec rm -f {} \; + ) +} + +get_current_version () { + cat $ddir/changelog \ + | grep -e '^freeswitch ' \ + | awk '{print $2}' \ + | sed -e 's/[()]//g' -e 's/-.*//' +} + +create_orig () { + . $ddir/../scripts/ci/common.sh + local xz_level="6" + while getopts 'dZ:' o; do + case "$o" in + d) set -vx;; + Z) xz_level="$OPTARG";; + esac + done + shift $(($OPTIND-1)) + eval $(parse_version "$(get_current_version)") + local destdir="$1" n=freeswitch + local d=${n}-${dver} f=${n}_${dver} + local sd=${ddir}/sdeb/$d + [ -n "$destdir" ] || destdir=$ddir/../../ + mkdir -p $sd + tar -c -C $ddir/../ \ + --exclude=.git \ + --exclude=debian \ + --exclude=freeswitch.xcodeproj \ + --exclude=fscomm \ + --exclude=htdocs \ + --exclude=w32 \ + --exclude=web \ + -vf - . | tar -x -C $sd -vf - + (cd $sd && set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev") + getlibs $sd + tar -c -C $ddir/sdeb -vf $ddir/sdeb/$f.orig.tar $d + xz -${xz_level}v $ddir/sdeb/$f.orig.tar + mv $ddir/sdeb/$f.orig.tar.xz $destdir + rm -rf $ddir/sdeb +} + cmd="$1" shift case "$cmd" in create-dbg-pkgs) create_dbg_pkgs ;; + create-orig) create_orig "$@" ;; list-build-depends) list_build_depends ;; install-build-depends) install_build_depends ;; esac From 8d366f7f984d73f2d5ab6054364bdfcdf1933ff3 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 04:48:21 +0000 Subject: [PATCH 477/630] debian: add a utility for creating the source package --- debian/util.sh | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index e5e561a26d..e67b96df79 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -140,18 +140,10 @@ get_current_version () { | sed -e 's/[()]//g' -e 's/-.*//' } -create_orig () { +_create_orig () { . $ddir/../scripts/ci/common.sh - local xz_level="6" - while getopts 'dZ:' o; do - case "$o" in - d) set -vx;; - Z) xz_level="$OPTARG";; - esac - done - shift $(($OPTIND-1)) eval $(parse_version "$(get_current_version)") - local destdir="$1" n=freeswitch + local destdir="$1" xz_level="$2" n=freeswitch local d=${n}-${dver} f=${n}_${dver} local sd=${ddir}/sdeb/$d [ -n "$destdir" ] || destdir=$ddir/../../ @@ -173,10 +165,48 @@ create_orig () { rm -rf $ddir/sdeb } +create_orig () { + local xz_level="6" + while getopts 'dZ:' o; do + case "$o" in + d) set -vx;; + Z) xz_level="$OPTARG";; + esac + done + shift $(($OPTIND-1)) + _create_orig "$1" "$xz_level" +} + +create_dsc () { + . $ddir/../scripts/ci/common.sh + local xz_level="6" + while getopts 'dZ:' o; do + case "$o" in + d) set -vx;; + Z) xz_level="$OPTARG";; + esac + done + shift $(($OPTIND-1)) + eval $(parse_version "$(get_current_version)") + local destdir="$1" n=freeswitch + local d=${n}-${dver} f=${n}_${dver} + [ -n "$destdir" ] || destdir=$ddir/../../ + [ -f $destdir/$f.orig.tar.xz ] \ + || _create_orig "$1" "${xz_level}" + ( + ddir=$(pwd)/$ddir + cd $destdir + mkdir -p $f + cp -a $ddir $f + dpkg-source -b -i.* -Zxz -z9 $f + ) +} + cmd="$1" shift case "$cmd" in create-dbg-pkgs) create_dbg_pkgs ;; + create-dsc) create_dsc "$@" ;; create-orig) create_orig "$@" ;; list-build-depends) list_build_depends ;; install-build-depends) install_build_depends ;; From 193512e9ea290d8a5e5a4ce9941e8f0c6cba56d4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 11 May 2012 06:23:18 +0000 Subject: [PATCH 478/630] debian: mirror dpkg-source parameter choice --- debian/util.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index e67b96df79..be7f2f1cc0 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -167,10 +167,10 @@ _create_orig () { create_orig () { local xz_level="6" - while getopts 'dZ:' o; do + while getopts 'dz:' o; do case "$o" in d) set -vx;; - Z) xz_level="$OPTARG";; + z) xz_level="$OPTARG";; esac done shift $(($OPTIND-1)) @@ -180,10 +180,10 @@ create_orig () { create_dsc () { . $ddir/../scripts/ci/common.sh local xz_level="6" - while getopts 'dZ:' o; do + while getopts 'dz:' o; do case "$o" in d) set -vx;; - Z) xz_level="$OPTARG";; + z) xz_level="$OPTARG";; esac done shift $(($OPTIND-1)) From 03bfc941a1dea7381db54928421ad567eaae0a44 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Fri, 11 May 2012 08:08:11 +0200 Subject: [PATCH 479/630] gsmopen: not check for CKPD when receiving SMS --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 2294ee4aee..fc59687958 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1199,7 +1199,7 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us /* we're not in a call, neither calling */ res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CKPD=\"EEE\""); if (res) { - ERRORA("AT+CKPD=\"EEE\" (cellphone screen back to user) do not got OK from the phone\n", GSMOPEN_P_LOG); + DEBUGA_GSMOPEN("AT+CKPD=\"EEE\" (cellphone screen back to user) do not got OK from the phone\n", GSMOPEN_P_LOG); } } } //unread_msg_id From f3b1809a63f70c0da611b7dacf48e49c329b43c6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 11 May 2012 10:20:45 -0500 Subject: [PATCH 480/630] tweak to standby mode --- src/mod/endpoints/mod_sofia/sofia.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 820118c585..26fc3e2668 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1711,11 +1711,6 @@ void *SWITCH_THREAD_FUNC sofia_profile_worker_thread_run(switch_thread_t *thread /* While we're running, or there is a pending sql statment that we haven't appended to sqlbuf yet, because of a lack of buffer space */ while ((mod_sofia_globals.running == 1 && sofia_test_pflag(profile, PFLAG_RUNNING)) || sql) { - if (sofia_test_pflag(profile, PFLAG_STANDBY)) { - switch_yield(1000000); - continue; - } - if (sofia_test_pflag(profile, PFLAG_SQL_IN_TRANS)) { /* Do we have enough statements or is the timeout expired */ while (sql || (sofia_test_pflag(profile, PFLAG_RUNNING) && mod_sofia_globals.running == 1 && @@ -1812,18 +1807,21 @@ void *SWITCH_THREAD_FUNC sofia_profile_worker_thread_run(switch_thread_t *thread } } - if (++ireg_loops >= IREG_SECONDS) { - time_t now = switch_epoch_time_now(NULL); - sofia_reg_check_expire(profile, now, 0); - ireg_loops = 0; - } - if (++gateway_loops >= GATEWAY_SECONDS) { - sofia_reg_check_gateway(profile, switch_epoch_time_now(NULL)); - gateway_loops = 0; - } + if (!sofia_test_pflag(profile, PFLAG_STANDBY)) { + if (++ireg_loops >= IREG_SECONDS) { + time_t now = switch_epoch_time_now(NULL); + sofia_reg_check_expire(profile, now, 0); + ireg_loops = 0; + } + + if (++gateway_loops >= GATEWAY_SECONDS) { + sofia_reg_check_gateway(profile, switch_epoch_time_now(NULL)); + gateway_loops = 0; + } - sofia_sub_check_gateway(profile, time(NULL)); + sofia_sub_check_gateway(profile, time(NULL)); + } last_check = switch_micro_time_now(); } From afdfb9a6e16d0b15236cfd38439c1c0a1d6e5a3a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 11 May 2012 12:46:32 -0500 Subject: [PATCH 481/630] fix missed error condition --- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index f2dbc61ee9..87fed74571 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -143,6 +143,11 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con } scgi_disconnect(&handle); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s Connection Failed: [%s]\n", binding->url, handle.err); + switch_safe_free(data); + switch_safe_free(stream.data); + return NULL; } if (GLOBAL_DEBUG) { From bbd9aa237edb57ca5ebc8b7ad85509505999062e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 11 May 2012 13:06:35 -0500 Subject: [PATCH 482/630] another tweak --- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 33 +++++++++++++-------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index 87fed74571..66833b110e 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -143,30 +143,39 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con } scgi_disconnect(&handle); + + if (len < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s Connection Read Failed: [%s]\n", binding->url, handle.err); + goto end; + } + } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s Connection Failed: [%s]\n", binding->url, handle.err); - switch_safe_free(data); - switch_safe_free(stream.data); - return NULL; + goto end; } if (GLOBAL_DEBUG) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s\nPOST_DATA:\n%s\n\nRESPONSE:\n%s\n\n", binding->url, data, txt); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s\nPOST_DATA:\n%s\n\nRESPONSE:-----\n%s\n-----\n", binding->url, data, txt); } - if (!len) { - if (!(xml = switch_xml_parse_str(txt, strlen(txt)))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Parsing Result! [%s]\ndata: [%s]\n", binding->url, data); + if (bytes) { + if ((xml = switch_xml_parse_str(txt, strlen(txt)))) { + txt = NULL; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Parsing Result! [%s]\ndata: [%s] RESPONSE[%s]\n", + binding->url, data, switch_str_nil(txt)); } } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Received error trying to fetch %s\ndata: [%s]\n", binding->url, data); - switch_safe_free(stream.data); - xml = NULL; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Received error trying to fetch %s\ndata: [%s] RESPONSE [%s]\n", + binding->url, data, switch_str_nil(txt)); } + + + end: switch_safe_free(data); - - + switch_safe_free(txt); + return xml; } From dd1ae3307cffe054c3f34883235e2a90ec16564b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 11 May 2012 13:12:44 -0500 Subject: [PATCH 483/630] another tweak --- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index 66833b110e..722dd8c9a1 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -159,7 +159,7 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con } if (bytes) { - if ((xml = switch_xml_parse_str(txt, strlen(txt)))) { + if ((xml = switch_xml_parse_str_dynamic(txt, FALSE))) { txt = NULL; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Parsing Result! [%s]\ndata: [%s] RESPONSE[%s]\n", From 0b43b32b42854cd53005c40c6d0717d566a01281 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 11 May 2012 13:34:42 -0500 Subject: [PATCH 484/630] Wrong week to quit sniffing glue --- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index 722dd8c9a1..97b6bdcf0a 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -140,6 +140,7 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con } stream.write_function(&stream, "%s", buf); + txt = (char *) stream.data; } scgi_disconnect(&handle); @@ -154,17 +155,21 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con goto end; } + + if (GLOBAL_DEBUG) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s\nPOST_DATA:\n%s\n\nRESPONSE:-----\n%s\n-----\n", binding->url, data, txt); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s\nPOST_DATA:\n%s\n\nRESPONSE:\n-----\n%s\n-----\n", + binding->url, data, switch_str_nil(txt)); } - if (bytes) { - if ((xml = switch_xml_parse_str_dynamic(txt, FALSE))) { - txt = NULL; - } else { + + + if (bytes && txt) { + if (!(xml = switch_xml_parse_str_dynamic(txt, FALSE))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Parsing Result! [%s]\ndata: [%s] RESPONSE[%s]\n", binding->url, data, switch_str_nil(txt)); } + txt = NULL; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Received error trying to fetch %s\ndata: [%s] RESPONSE [%s]\n", binding->url, data, switch_str_nil(txt)); From 2bd84705343c14048ec7c0d402fa2fe4e3640755 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 02:39:49 +0000 Subject: [PATCH 485/630] debian: trust shlibs:Depends to do its thing --- debian/control-modules | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/debian/control-modules b/debian/control-modules index 8ea77b00f0..c74f49bf0a 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -133,9 +133,6 @@ Description: MongoDB This module provides an interface to MongoDB. Build-Depends: scons, libboost-dev, libboost-system-dev, libboost-date-time-dev, libboost-thread-dev, libboost-filesystem-dev -Depends: libicu44, libboost-system1.42.0, libboost-date-time1.42.0, - libboost-serialization1.42.0, libboost-thread1.42.0, - libboost-filesystem1.42.0 Module: applications/mod_mp4 Description: MP4 video support @@ -317,7 +314,6 @@ Module: codecs/mod_speex Description: mod_speex Adds mod_speex. Build-Depends: libogg-dev -Depends: libogg0 Module: codecs/mod_theora Description: mod_theora @@ -353,7 +349,6 @@ Module: endpoints/mod_alsa Description: mod_alsa Adds mod_alsa. Build-Depends: libasound2-dev -Depends: libasound2 Module: endpoints/mod_dingaling Description: mod_dingaling @@ -399,7 +394,6 @@ Module: endpoints/mod_skypopen Description: mod_skypopen Adds mod_skypopen. Build-Depends: libx11-dev -Depends: libpthread-stubs0 Module: endpoints/mod_sofia Description: mod_sofia @@ -423,7 +417,6 @@ Module: event_handlers/mod_cdr_pg_csv Description: mod_cdr_pg_csv Adds mod_cdr_pg_csv. Build-Depends: libpq-dev -Depends: libpq5 Module: event_handlers/mod_cdr_sqlite Description: mod_cdr_sqlite @@ -483,8 +476,6 @@ Module: formats/mod_shout Description: mod_shout Adds mod_shout. Build-Depends: libogg-dev, libvorbis-dev -Depends: libogg0, libvorbis0a, libvorbisenc2, libvorbisfile3, - libvorbisidec1 Module: formats/mod_sndfile Description: mod_sndfile @@ -498,7 +489,6 @@ Module: formats/mod_vlc Description: VLC streaming This module provides VLC streaming. Build-Depends: libvlc-dev (>= 2.0.0) -Depends: libvlc5 Distro-Conflicts: squeeze ## mod/languages @@ -519,7 +509,6 @@ Module: languages/mod_perl Description: mod_perl Adds mod_perl. Build-Depends: libperl-dev -Depends: libperl5.10 Module: languages/mod_python Description: mod_python @@ -635,7 +624,6 @@ Module: xml_int/mod_xml_ldap Description: mod_xml_ldap Adds mod_xml_ldap. Build-Depends: libsasl2-dev -Depends: libsasl2-modules Module: xml_int/mod_xml_rpc Description: mod_xml_rpc From 31703ab6a4f5b7ef0b2667f55676da3306dcca0a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 04:38:56 +0000 Subject: [PATCH 486/630] debian: add support for per-distribution build-depends --- debian/bootstrap.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 1ded03cc12..984c90b442 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -6,6 +6,7 @@ mod_dir="../src/mod" conf_dir="../conf" fs_description="FreeSWITCH is a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media." mod_build_depends="." +supported_distros="squeeze wheezy sid" avoid_mods=( applications/mod_fax applications/mod_ladspa @@ -123,6 +124,11 @@ map_modules () { description="" long_description="" build_depends="" depends="" recommends="" suggests="" distro_conflicts="" + distro_vars="" + for x in $supported_distros; do + distro_vars="$distro_vars build_depends_$x" + eval build_depends_$x="" + done . $y [ -n "$description" ] || description="$module_name" [ -n "$long_description" ] || description="Adds ${module_name}." @@ -131,7 +137,7 @@ map_modules () { module module_name module_path \ description long_description \ build_depends depends recommends suggests \ - distro_conflicts + distro_conflicts $distro_vars done unset category category_path done @@ -695,11 +701,17 @@ gensound () { } accumulate_build_depends () { - if [ -n "$build_depends" ]; then + local x="" + if [ -n "$(eval echo \$build_depends_$codename)" ]; then + x="$(eval echo \$build_depends_$codename)" + else + x="${build_depends}" + fi + if [ -n "$x" ]; then if [ ! "$mod_build_depends" = "." ]; then - mod_build_depends="${mod_build_depends}, ${build_depends}" + mod_build_depends="${mod_build_depends}, ${x}" else - mod_build_depends="${build_depends}" + mod_build_depends="${x}" fi fi } @@ -815,6 +827,10 @@ genmodctl_mod () { echo " $v" done [ -n "$build_depends" ] && debian_wrap "Build-Depends: $build_depends" + for x in $supported_distros; do + [ -n "$(eval echo \$build_depends_$x)" ] \ + && debian_wrap "Build-Depends-$x: $(eval echo \$build_depends_$x)" + done [ -n "$depends" ] && debian_wrap "Depends: $depends" [ -n "$reccomends" ] && debian_wrap "Recommends: $recommends" [ -n "$suggests" ] && debian_wrap "Suggests: $suggests" From 65a29d68f9ba74de1116b0f5d6854cf50cc3657a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 02:49:15 +0000 Subject: [PATCH 487/630] debian: add some module build dependencies Thanks to Steven Ayre for an initial list. I've made some modifications and corrections. FS-4202 --resolve --- debian/control-modules | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/control-modules b/debian/control-modules index c74f49bf0a..a1b1178aaf 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -357,6 +357,7 @@ Description: mod_dingaling Module: endpoints/mod_gsmopen Description: mod_gsmopen Adds mod_gsmopen. +Build-Depends: libx11-dev Module: endpoints/mod_h323 Description: mod_h323 @@ -425,10 +426,12 @@ Description: mod_cdr_sqlite Module: event_handlers/mod_erlang_event Description: mod_erlang_event Adds mod_erlang_event. +Build-Depends: erlang-dev Module: event_handlers/mod_event_multicast Description: mod_event_multicast Adds mod_event_multicast. +Build-Depends: libssl-dev Module: event_handlers/mod_event_socket Description: mod_event_socket @@ -453,6 +456,7 @@ Description: mod_radius_cdr Module: event_handlers/mod_snmp Description: mod_snmp Adds mod_snmp. +Build-Depends: libsnmp-dev ## mod/formats @@ -496,6 +500,7 @@ Distro-Conflicts: squeeze Module: languages/mod_java Description: mod_java Adds mod_java. +Build-Depends: default-jdk Module: languages/mod_lua Description: mod_lua @@ -504,6 +509,7 @@ Description: mod_lua Module: languages/mod_managed Description: mod_managed Adds mod_managed. +Build-Depends: libmono-2.0-dev Module: languages/mod_perl Description: mod_perl @@ -513,10 +519,12 @@ Build-Depends: libperl-dev Module: languages/mod_python Description: mod_python Adds mod_python. +Build-Depends: python-dev Module: languages/mod_spidermonkey Description: mod_spidermonkey Adds mod_spidermonkey. +Build-Depends: unixodbc-dev Module: languages/mod_yaml Description: mod_yaml From 3e2194873d78584ce95f8938934486b923cfd4fa Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 18:10:52 +0000 Subject: [PATCH 488/630] debian: enable mod_snmp --- debian/bootstrap.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 984c90b442..deeaca1ff8 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -28,7 +28,6 @@ avoid_mods=( endpoints/mod_portaudio endpoints/mod_reference endpoints/mod_unicall - event_handlers/mod_snmp formats/mod_portaudio_stream formats/mod_shout languages/mod_java From 7061ff3b842f3ce107fca812ed12bc721ac7e1f2 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 05:06:14 +0000 Subject: [PATCH 489/630] debian: mod_java depends on gcj-jdk for a symlink to jni.h See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=371060 --- debian/control-modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control-modules b/debian/control-modules index a1b1178aaf..2d068aab0b 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -500,7 +500,7 @@ Distro-Conflicts: squeeze Module: languages/mod_java Description: mod_java Adds mod_java. -Build-Depends: default-jdk +Build-Depends: default-jdk, gcj-jdk Module: languages/mod_lua Description: mod_lua From 3eec3d79be24f03606b7ccab30f7d3c3745dcc14 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 18:11:09 +0000 Subject: [PATCH 490/630] debian: enable mod_java --- debian/bootstrap.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index deeaca1ff8..518d88beca 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -30,7 +30,6 @@ avoid_mods=( endpoints/mod_unicall formats/mod_portaudio_stream formats/mod_shout - languages/mod_java languages/mod_managed languages/mod_spidermonkey languages/mod_yaml From e44bdd11f443cd56fb7f8e6600d31957af1b870c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 18:11:28 +0000 Subject: [PATCH 491/630] debian: enable mod_managed except on squeeze mod_managed needs mono 2.8 or greater, and squeeze has only mono 2.6. --- debian/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 518d88beca..33af6fb2e3 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -30,7 +30,6 @@ avoid_mods=( endpoints/mod_unicall formats/mod_portaudio_stream formats/mod_shout - languages/mod_managed languages/mod_spidermonkey languages/mod_yaml sdk/autotools @@ -38,6 +37,7 @@ avoid_mods=( ) avoid_mods_squeeze=( formats/mod_vlc + languages/mod_managed ) err () { From ee653e58614b123708e4527ddaa28b7a6e3faf04 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 07:20:29 +0000 Subject: [PATCH 492/630] debian: use libjpeg62-dev rather than libjpeg8-dev Some modules such as mod_h323 pull in libjpeg62-dev which creates a dependency conflict if we try to use libjpeg8-dev for the core. --- debian/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 33af6fb2e3..cd72d4c983 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -168,7 +168,7 @@ Build-Depends: wget, pkg-config, # configure options libssl-dev, unixodbc-dev, - libncurses5-dev, libjpeg8-dev, + libncurses5-dev, libjpeg62-dev, python-dev, erlang-dev, # documentation doxygen, From 5e83530a20876bd8f5a0c61ff69c781f6b37725c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 05:49:58 +0000 Subject: [PATCH 493/630] debian: add build-depends and suggests for mod_ladspa --- debian/control-modules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control-modules b/debian/control-modules index 2d068aab0b..7a29134f5d 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -114,6 +114,8 @@ Description: HTTP GET with caching Module: applications/mod_ladspa Description: LADSPA This module provides an API for accessing LADSPA plugins. +Build-Depends: ladspa-sdk +Suggests: tap-plugins, swh-plugins, autotalent Module: applications/mod_lcr Description: LCR From df19f49fd8501c235ee7aec396990296bc1d507c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 06:24:40 +0000 Subject: [PATCH 494/630] debian: enable mod_ladspa --- debian/bootstrap.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index cd72d4c983..39a19847f7 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -9,7 +9,6 @@ mod_build_depends="." supported_distros="squeeze wheezy sid" avoid_mods=( applications/mod_fax - applications/mod_ladspa applications/mod_limit applications/mod_mongo applications/mod_mp4 From 832d00f3daabb69a375e091409f2cac977e9c322 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 06:54:38 +0000 Subject: [PATCH 495/630] debian: add build-depends for mod_yaml --- debian/control-modules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control-modules b/debian/control-modules index 7a29134f5d..62ca64699e 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -531,6 +531,7 @@ Build-Depends: unixodbc-dev Module: languages/mod_yaml Description: mod_yaml Adds mod_yaml. +Build-Depends: libyaml-dev ## mod/loggers From d113dbd27af8d972523ab09a361bed12e4af9920 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 07:06:46 +0000 Subject: [PATCH 496/630] debian: enable mod_yaml --- debian/bootstrap.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 39a19847f7..3ff20088d3 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -30,7 +30,6 @@ avoid_mods=( formats/mod_portaudio_stream formats/mod_shout languages/mod_spidermonkey - languages/mod_yaml sdk/autotools xml_int/mod_xml_ldap ) From fb749c611f5b068f1fec50c1e631cb7db734dd65 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 05:41:25 +0000 Subject: [PATCH 497/630] debian: enable mod_portaudio and mod_portaudio_stream --- debian/bootstrap.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 3ff20088d3..2fc8b72f66 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -24,10 +24,8 @@ avoid_mods=( endpoints/mod_h323 endpoints/mod_khomp endpoints/mod_opal - endpoints/mod_portaudio endpoints/mod_reference endpoints/mod_unicall - formats/mod_portaudio_stream formats/mod_shout languages/mod_spidermonkey sdk/autotools From 0f50f044f3bb3598e865483c69d6dfa4de788783 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 06:47:21 +0000 Subject: [PATCH 498/630] debian: add build-depends for mod_h323 --- debian/control-modules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control-modules b/debian/control-modules index 62ca64699e..8038771e3b 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -364,6 +364,7 @@ Build-Depends: libx11-dev Module: endpoints/mod_h323 Description: mod_h323 Adds mod_h323. +Build-Depends: libopenh323-dev, libpt-dev Module: endpoints/mod_khomp Description: mod_khomp From ed42f37212bb9dfcf855c71d7aa52c3b65859871 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 06:34:54 +0000 Subject: [PATCH 499/630] debian: add build-depends and section for mod_mp4 This needs a package from debian-multimedia.org, so it needs to go in contrib/ and we can't build it as part of this source package. --- debian/control-modules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control-modules b/debian/control-modules index 8038771e3b..55f73c4532 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -139,6 +139,8 @@ Build-Depends: scons, libboost-dev, libboost-system-dev, Module: applications/mod_mp4 Description: MP4 video support This module adds support for MP4 video playback. +Build-Depends: libmp4v2-dev +Section: contrib/comm Module: applications/mod_nibblebill Description: Nibblebill From b19b6498db6f789e6e78c751ae68588bcc9c4bc4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 06:37:27 +0000 Subject: [PATCH 500/630] debian: add build-depends for mod_osp --- debian/control-modules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control-modules b/debian/control-modules index 55f73c4532..1255b8ef40 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -150,6 +150,7 @@ Description: Nibblebill Module: applications/mod_osp Description: Open Settlement Protocol This module adds support for the Open Settlement Protocol (OSP). +Build-Depends: libosptk3-dev Module: applications/mod_rad_auth Description: RADIUS AA From c77d9a18dd4c54ab367bc1099926346bbfd42a39 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 18:53:00 +0000 Subject: [PATCH 501/630] spelling fix --- libs/libg722_1/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/libg722_1/README b/libs/libg722_1/README index 424c281581..865accacde 100644 --- a/libs/libg722_1/README +++ b/libs/libg722_1/README @@ -18,7 +18,7 @@ a separate process, and your application communicates with it through pipes or sockets. This implementation of G.722.1 is adapted from the reference source code -provided by Polycom. Polycom has given its concent for this library to be +provided by Polycom. Polycom has given its consent for this library to be distributed as source code, either on its own or as part of a larger package which they have licenced under their royalty free licencing scheme. From a7151174e29da4e07f4d5cb3696734fd4053c92a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 19:58:48 +0000 Subject: [PATCH 502/630] debian: support per-module section headers --- debian/bootstrap.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 2fc8b72f66..dcee07d3d0 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -115,7 +115,7 @@ map_modules () { module=${y##*/} module_path=$y $filterfn $category/$module || continue module="" category="" module_name="" - description="" long_description="" + section="" description="" long_description="" build_depends="" depends="" recommends="" suggests="" distro_conflicts="" distro_vars="" @@ -129,7 +129,7 @@ map_modules () { for f in $permodfns; do $f; done unset \ module module_name module_path \ - description long_description \ + section description long_description \ build_depends depends recommends suggests \ distro_conflicts $distro_vars done @@ -477,8 +477,10 @@ EOF } print_mod_control () { + local m_section="${section-comm}" cat < Date: Sat, 12 May 2012 19:51:16 +0000 Subject: [PATCH 503/630] debian: put mod_siren in non-free Despite the relatively-generous patent grant from Polycom, the requirement to execute further agreements to use the code and patents means this module fails the DFSG. We'll need to exclude this code from the source package as well. --- debian/control-modules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control-modules b/debian/control-modules index 1255b8ef40..fbcca77a9f 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -310,6 +310,7 @@ Description: mod_silk Module: codecs/mod_siren Description: mod_siren Adds mod_siren. +Section: non-free/comm Module: codecs/mod_skel_codec Description: mod_skel_codec From 243f950c2a36ac22591d19b0fb0bb399d8c70d65 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 19:57:25 +0000 Subject: [PATCH 504/630] debian: rearrange section headers --- debian/control-modules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control-modules b/debian/control-modules index fbcca77a9f..a82d163107 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -137,10 +137,10 @@ Build-Depends: scons, libboost-dev, libboost-system-dev, libboost-date-time-dev, libboost-thread-dev, libboost-filesystem-dev Module: applications/mod_mp4 +Section: contrib/comm Description: MP4 video support This module adds support for MP4 video playback. Build-Depends: libmp4v2-dev -Section: contrib/comm Module: applications/mod_nibblebill Description: Nibblebill @@ -308,9 +308,9 @@ Description: mod_silk Adds mod_silk. Module: codecs/mod_siren +Section: non-free/comm Description: mod_siren Adds mod_siren. -Section: non-free/comm Module: codecs/mod_skel_codec Description: mod_skel_codec From e84686943fc3ab093c1b18363c82b7a15e8c8caf Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 21:30:53 +0000 Subject: [PATCH 505/630] debian: put mod_ilbc in non-free The iLBC library in our tree is non-free software. Google has purchased Global IP Sound and released a newer version of this library as part of WebRTC as free software, but we need to upgrade to take advantage of this more favorable licensing. Until we do that, we also need to remove libs/ilbc from the Debian source packaging. --- debian/control-modules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control-modules b/debian/control-modules index a82d163107..3e066ac8b0 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -284,6 +284,7 @@ Description: mod_h26x Adds mod_h26x. Module: codecs/mod_ilbc +Section: non-free/comm Description: mod_ilbc Adds mod_ilbc. From 566123cc50c54bd24a3c5d6d439f526b325f0fa4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sat, 12 May 2012 21:57:57 +0000 Subject: [PATCH 506/630] debian: mod_managed needs mono-gmcs to build --- debian/control-modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control-modules b/debian/control-modules index 3e066ac8b0..2327495663 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -517,7 +517,7 @@ Description: mod_lua Module: languages/mod_managed Description: mod_managed Adds mod_managed. -Build-Depends: libmono-2.0-dev +Build-Depends: libmono-2.0-dev, mono-gmcs Module: languages/mod_perl Description: mod_perl From 916624c58bdfbee2a41b41040e5f543a398913b5 Mon Sep 17 00:00:00 2001 From: William King Date: Sun, 13 May 2012 10:33:19 -0700 Subject: [PATCH 507/630] Adding mod_vlc as a commented out option into modules.conf. --- build/modules.conf.in | 1 + 1 file changed, 1 insertion(+) diff --git a/build/modules.conf.in b/build/modules.conf.in index 98a88e0622..31aea530fb 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -96,6 +96,7 @@ formats/mod_native_file #formats/mod_shout formats/mod_sndfile formats/mod_tone_stream +#formats/mod_vlc #languages/mod_java languages/mod_lua #languages/mod_managed From 3bc4aa39fe7505e9253e3e6a42dc556c7f28a4d9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 13 May 2012 05:59:03 +0000 Subject: [PATCH 508/630] debian: handle copyright information for pocketsphinx Debian expects all copyright information to be in one place, so we copy the license details to debian/copyright and remove the COPYING files when we install components. --- debian/copyright | 38 ++++++++++++++++++++++++++++++++++++++ debian/rules | 1 + 2 files changed, 39 insertions(+) diff --git a/debian/copyright b/debian/copyright index 658614828f..732b2b7d0c 100644 --- a/debian/copyright +++ b/debian/copyright @@ -23,3 +23,41 @@ License: MPL for the specific language governing rights and limitations under the License. +Files: libs/pocketsphinx* +Copyright: 2010 Carnegie Mellon University + /* ==================================================================== + * Copyright (c) 1999-2010 Carnegie Mellon University. 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. + * + * This work was supported in part by funding from the Defense Advanced + * Research Projects Agency and the National Science Foundation of the + * United States of America, and the CMU Sphinx Speech Consortium. + * + * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND + * ANY EXPRESSED 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 CARNEGIE MELLON UNIVERSITY + * NOR ITS EMPLOYEES 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. + * + * ==================================================================== + * + */ + diff --git a/debian/rules b/debian/rules index 98b31607f4..60c5210940 100755 --- a/debian/rules +++ b/debian/rules @@ -93,6 +93,7 @@ override_dh_auto_install: -$(FS_INSTALL_SOUNDS) && DESTDIR=debian/tmp make cd-sounds-install cd-moh-install mkdir -p debian/tmp/lib/systemd/system install -m0644 debian/freeswitch-systemd.freeswitch.service debian/tmp/lib/systemd/system/freeswitch.service + rm -f debian/tmp/usr/share/freeswitch/grammar/model/communicator/COPYING override_dh_installinit: dh_installinit -pfreeswitch-sysvinit --name=freeswitch From 117582adcac5b514df6e24d8b4130c514ca466bb Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 13 May 2012 20:53:58 +0000 Subject: [PATCH 509/630] debian: match empty as well as unset section variable --- debian/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index dcee07d3d0..0c2ee5d10a 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -477,7 +477,7 @@ EOF } print_mod_control () { - local m_section="${section-comm}" + local m_section="${section:-comm}" cat < Date: Sun, 13 May 2012 18:27:51 +0200 Subject: [PATCH 510/630] gsmopen: mod_sms tweak --- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index d75dd5e6c4..d1443afc50 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -2978,6 +2978,7 @@ int sms_incoming(private_t *tech_pvt) DEBUGA_GSMOPEN("received SMS on interface %s: DATE=%s, SENDER=%s, BODY=%s|\n", GSMOPEN_P_LOG, tech_pvt->name, tech_pvt->sms_date, tech_pvt->sms_sender, tech_pvt->sms_body); +#ifdef NOTDEF if (!zstr(tech_pvt->session_uuid_str)) { session = switch_core_session_locate(tech_pvt->session_uuid_str); } @@ -2993,7 +2994,6 @@ int sms_incoming(private_t *tech_pvt) //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); -/* mod_sms begin */ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->name); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", GSMOPEN_CHAT_PROTO); @@ -3002,10 +3002,7 @@ int sms_incoming(private_t *tech_pvt) //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); -/* mod_sms end */ switch_event_add_body(event, "%s\n", tech_pvt->sms_body); - //switch_core_chat_send(GSMOPEN_CHAT_PROTO, event); /* mod_sms */ - switch_core_chat_send("GLOBAL", event); /* mod_sms */ if (session) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "during-call", "true"); if (switch_core_session_queue_event(session, &event) != SWITCH_STATUS_SUCCESS) { @@ -3052,6 +3049,38 @@ int sms_incoming(private_t *tech_pvt) if (session) { switch_core_session_rwunlock(session); } +#endif //NOTDEF + /* mod_sms begin */ + if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->chatmessages[which].from_dispname); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", tech_pvt->sms_sender); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "date", tech_pvt->sms_date); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "datacodingscheme", tech_pvt->sms_datacodingscheme); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "servicecentreaddress", tech_pvt->sms_servicecentreaddress); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "messagetype", "%d", tech_pvt->sms_messagetype); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "chatname", tech_pvt->chatmessages[which].chatname); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "id", tech_pvt->chatmessages[which].id); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", "SIMPLE MESSAGE"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", tech_pvt->name); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_proto", GSMOPEN_CHAT_PROTO); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", tech_pvt->sms_sender); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", "from_host"); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", "from_full"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_user", tech_pvt->name); + //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); + switch_event_add_body(event, "%s\n", tech_pvt->sms_body); + //switch_core_chat_send("GLOBAL", event); /* mod_sms */ + switch_core_chat_send("GLOBAL", event); /* mod_sms */ + } else { + + ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); + } + /* mod_sms end */ + + //memset(&tech_pvt->chatmessages[which], '\0', sizeof(&tech_pvt->chatmessages[which]) ); //memset(tech_pvt->sms_message, '\0', sizeof(tech_pvt->sms_message)); return 0; From eb93a14eb36791a8b69fb77e849122ee3f6041eb Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 14 May 2012 01:39:10 +0200 Subject: [PATCH 511/630] gsmopen: correctly sends SMSs in GSM7 or UCS2. Let's check SMS receiving --- .../mod_gsmopen/gsmopen_protocol.cpp | 160 ++++++------------ 1 file changed, 51 insertions(+), 109 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index fc59687958..af89b8dfa4 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -367,7 +367,6 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) if (res) { DEBUGA_GSMOPEN("AT+CMGF? failed, continue\n", GSMOPEN_P_LOG); } -#ifndef WANT_GSMLIB res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); if (res) { ERRORA("Error setting SMS sending mode to TEXT on the cellphone, let's hope is TEXT by default. Continuing\n", GSMOPEN_P_LOG); @@ -402,7 +401,6 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } } -#else // WANT_GSMLIB res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); if (res) { @@ -410,6 +408,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) } tech_pvt->sms_pdu_not_supported = 0; tech_pvt->no_ucs2 = 1; +#ifdef NOTDEF //GSMLIB? XXX if (tech_pvt->no_ucs2) { res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); if (res) { @@ -421,7 +420,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } } -#endif // WANT_GSMLIB +#endif// NOTDEF //GSMLIB? XXX #ifdef NOTDEF //GSMLIB? XXX @@ -1666,7 +1665,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } else { -#ifdef WANT_GSMLIB try { char content2[1000]; SMSMessageRef sms; @@ -1719,7 +1717,6 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us } -#endif // WANT_GSMLIB @@ -2731,117 +2728,70 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) char pdu2[16000]; memset(pdu2, '\0', sizeof(pdu2)); int pdulenght = 0; + string pdu; PUSHA_UNLOCKA(&tech_pvt->controldev_lock); LOKKA(tech_pvt->controldev_lock); -#ifndef WANT_GSMLIB - err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); - if (err) { - ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); - } -#else // WANT_GSMLIB - err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); - if (err) { - ERRORA("AT+CMGF=0 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); - } -#endif // WANT_GSMLIB - - if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { -#ifdef WANT_GSMLIB try { - SMSMessageRef smsMessage; +int bad_8859=0; memset(mesg_test, '\0', sizeof(mesg_test)); sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 //sprintf(mesg_test,":) ciao belè èéàòìù"); //text=mesg_test; - utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); - smsMessage = new SMSSubmitMessage(smscommand, dest); - string pdu = smsMessage->encode(); - strncpy(pdu2, pdu.c_str(), sizeof(pdu2) - 1); - memset(smscommand, '\0', sizeof(smscommand)); - pdulenght = pdu.length() / 2 - 1; - sprintf(smscommand, "AT+CMGS=%d", pdulenght); - -#ifdef NOTDEF - - ***9. How to support unicode ? You need 6 steps : 1. set datacodingschema to DCS_SIXTEEN_BIT_ALPHABET 2. set your locale correctly, for example - , my locale, china.setlocale(LC_ALL, "chs"); - - 3. translate MBCS(multiple byte character set) string to unicode string.wchar_t wstr[1000]; - memset(wstr, 0, 2000); - mbstowcs(wstr, data.c_str(), data.length()); - - 4. get unicode string length.int wcs_len = wcslen(wstr); - - 5. change unicode string to net order.for (int i = 0; i < wcs_len; i++) - wstr[i] = htons(wstr[i]); - - 6. put unicode string into pdu.char content2[1000]; - SMSMessageRef sms; - //MessageType messagetype; - //Address servicecentreaddress; - //Timestamp servicecentretimestamp; - //Address sender_recipient_address; - - sms = SMSMessage::decode(tech_pvt->line_array.result[i]); // dataCodingScheme = 8 , text=ciao 123 belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大 - - DEBUGA_GSMOPEN("SMS=\n%s\n", GSMOPEN_P_LOG, sms->toString().c_str()); - - memset(content2, '\0', sizeof(content2)); - if (sms->dataCodingScheme().getAlphabet() == DCS_DEFAULT_ALPHABET) { - iso_8859_1_to_utf8(tech_pvt, (char *) sms->userData().c_str(), content2, sizeof(content2)); - } else if (sms->dataCodingScheme().getAlphabet() == DCS_SIXTEEN_BIT_ALPHABET) { - ucs2_to_utf8(tech_pvt, (char *) bufToHex((unsigned char *) sms->userData().data(), sms->userData().length()).c_str(), content2, - sizeof(content2)); + bad_8859 = utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); + if(!bad_8859){ + err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); + if (err) { + ERRORA("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + SMSMessageRef smsMessage; + smsMessage = new SMSSubmitMessage(smscommand, dest); + //string pdu = smsMessage->encode(); + pdu = smsMessage->encode(); + strncpy(pdu2, pdu.c_str(), sizeof(pdu2) - 1); + memset(smscommand, '\0', sizeof(smscommand)); + pdulenght = pdu.length() / 2 - 1; + sprintf(smscommand, "AT+CMGS=%d", pdulenght); } else { - ERRORA("dataCodingScheme not supported=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); + int ok; + UNLOCKA(tech_pvt->controldev_lock); + POPPA_UNLOCKA(&tech_pvt->controldev_lock); + + tech_pvt->no_ucs2 = 0; + tech_pvt->sms_pdu_not_supported =1; + ok= gsmopen_sendsms(tech_pvt, dest, text); + tech_pvt->no_ucs2 = 1; + tech_pvt->sms_pdu_not_supported =0; + + return ok; } - DEBUGA_GSMOPEN("dataCodingScheme=%d\n", GSMOPEN_P_LOG, sms->dataCodingScheme().getAlphabet()); - DEBUGA_GSMOPEN("dataCodingScheme=%s\n", GSMOPEN_P_LOG, sms->dataCodingScheme().toString().c_str()); - DEBUGA_GSMOPEN("address=%s\n", GSMOPEN_P_LOG, sms->address().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreAddress=%s\n", GSMOPEN_P_LOG, sms->serviceCentreAddress().toString().c_str()); - DEBUGA_GSMOPEN("serviceCentreTimestamp=%s\n", GSMOPEN_P_LOG, sms->serviceCentreTimestamp().toString().c_str()); - DEBUGA_GSMOPEN("messageType=%d\n", GSMOPEN_P_LOG, sms->messageType()); - DEBUGA_GSMOPEN("userData= |||%s|||\n", GSMOPEN_P_LOG, content2); - - memset(sms_body, '\0', sizeof(sms_body)); - strncpy(sms_body, content2, sizeof(sms_body)); - DEBUGA_GSMOPEN("body=%s\n", GSMOPEN_P_LOG, sms_body); - strncpy(tech_pvt->sms_body, sms_body, sizeof(tech_pvt->sms_body)); - strncpy(tech_pvt->sms_sender, sms->address().toString().c_str(), sizeof(tech_pvt->sms_sender)); - strncpy(tech_pvt->sms_date, sms->serviceCentreTimestamp().toString().c_str(), sizeof(tech_pvt->sms_date)); - strncpy(tech_pvt->sms_datacodingscheme, sms->dataCodingScheme().toString().c_str(), sizeof(tech_pvt->sms_datacodingscheme)); - strncpy(tech_pvt->sms_servicecentreaddress, sms->serviceCentreAddress().toString().c_str(), sizeof(tech_pvt->sms_servicecentreaddress)); - tech_pvt->sms_messagetype = sms->messageType(); - //messagetype = sms->messageType(); - //servicecentreaddress = sms->serviceCentreAddress(); - //servicecentretimestamp = sms->serviceCentreTimestamp(); - //sender_recipient_address = sms->address(); -#endif // NOTDEF } catch(GsmException & ge) { ERRORA("GsmException= |||%s|||\n", GSMOPEN_P_LOG, ge.what()); } -#else // WANT_GSMLIB - ERRORA("tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0 && no WANT_GSMLIB\n", GSMOPEN_P_LOG); - return RESULT_FAILURE; -#endif // WANT_GSMLIB } else { char dest2[1048]; + err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=1"); + if (err) { + ERRORA("AT+CMGF=1 (set message sending to TEXT (as opposed to PDU) do not got OK from the phone\n", GSMOPEN_P_LOG); + } + +/* err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"UCS2\""); if (err) { ERRORA("AT+CSCS=\"UCS2\" (set TE messages to ucs2) do not got OK from the phone\n", GSMOPEN_P_LOG); } +*/ memset(dest2, '\0', sizeof(dest2)); utf8_to_ucs2(tech_pvt, dest, strlen(dest), dest2, sizeof(dest2)); @@ -2854,7 +2804,6 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) goto uscita; } err = gsmopen_serial_AT_expect(tech_pvt, "> ", 0, 1); // wait 1.1s for the prompt, no crlf -#if 1 if (err) { DEBUGA_GSMOPEN ("Error or timeout getting prompt '> ' for sending sms directly to the remote party. BTW, seems that we cannot do that with Motorola c350, so we'll write to cellphone memory, then send from memory\n", @@ -2879,24 +2828,23 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) goto uscita; } } -#endif -#ifndef WANT_GSMLIB - memset(mesg_test, '\0', sizeof(mesg_test)); - sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 - //text=mesg_test; + if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { + memset(smscommand, '\0', sizeof(smscommand)); + sprintf(smscommand, "%s", pdu2); + }else{ + memset(mesg_test, '\0', sizeof(mesg_test)); + sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 + //text=mesg_test; + + memset(smscommand, '\0', sizeof(smscommand)); + if (tech_pvt->no_ucs2) { + sprintf(smscommand, "%s", text); + } else { + utf8_to_ucs2(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); + } - memset(smscommand, '\0', sizeof(smscommand)); - if (tech_pvt->no_ucs2) { - sprintf(smscommand, "%s", text); - } else { - utf8_to_ucs2(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); } -#else // WANT_GSMLIB - - memset(smscommand, '\0', sizeof(smscommand)); - sprintf(smscommand, "%s", pdu2); -#endif // WANT_GSMLIB smscommand[strlen(smscommand)] = 0x1A; DEBUGA_GSMOPEN("smscommand len is: %d, text is:|||%s|||\n", GSMOPEN_P_LOG, (int) strlen(smscommand), smscommand); @@ -2923,7 +2871,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) ERRORA("Error de-activating echo from modem\n", GSMOPEN_P_LOG); } } - uscita: +uscita: gsmopen_sleep(1000); if (tech_pvt->at_cmgw[0]) { @@ -2948,12 +2896,6 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) UNLOCKA(tech_pvt->controldev_lock); POPPA_UNLOCKA(&tech_pvt->controldev_lock); } -#ifdef NOTDEF - err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); - if (err) { - DEBUGA_GSMOPEN("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); - } -#endif // NOTDEF DEBUGA_GSMOPEN("FINISH\n", GSMOPEN_P_LOG); if (failed) From 8a1508d669e41a4b2831233057780bb130080035 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 14 May 2012 01:55:45 +0200 Subject: [PATCH 512/630] gsmopen: correctly receives SMSs in GSM7 and UCS2 --- src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index af89b8dfa4..5e5cadd9b6 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1180,10 +1180,12 @@ int gsmopen_serial_read_AT(private_t *tech_pvt, int look_for_ack, int timeout_us if (res) { ERRORA("AT+CMGR (read SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); } - res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"GSM\""); +/* + res = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CSCS=\"CIAPALO1\""); if (res) { - ERRORA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + ERRORA("AT+CSCS=\"CIAPALO1\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); } +*/ memset(at_command, 0, sizeof(at_command)); sprintf(at_command, "AT+CMGD=%d", tech_pvt->unread_sms_msg_id); /* delete the message */ tech_pvt->unread_sms_msg_id = 0; @@ -2399,7 +2401,7 @@ int utf8_to_iso_8859_1(private_t *tech_pvt, char *utf8_in, size_t inbytesleft, c iconv_res = iconv(iconv_format, &inbuf, &inbytesleft, &outbuf, &outbytesleft); #endif // WIN32 if (iconv_res == (size_t) -1) { - ERRORA("error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); + DEBUGA_GSMOPEN("cannot translate in iso_8859_1 error: %s %d\n", GSMOPEN_P_LOG, strerror(errno), errno); return -1; } DEBUGA_GSMOPEN @@ -3038,9 +3040,9 @@ int gsmopen_serial_getstatus_AT(private_t *tech_pvt) if (res) { ERRORA("AT+CMGR (read SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); } - res = gsmopen_serial_write_AT_ack(p, "AT+CSCS=\"GSM\""); + res = gsmopen_serial_write_AT_ack(p, "AT+CSCS=\"CIAPALO2\""); if (res) { - ERRORA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + ERRORA("AT+CSCS=\"CIAPALO2\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); } memset(at_command, 0, sizeof(at_command)); sprintf(at_command, "AT+CMGD=%d", p->unread_sms_msg_id); /* delete the message */ From 44fd0de8ff14a4641971e740547f5bf3d3bede13 Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Mon, 14 May 2012 01:59:33 +0200 Subject: [PATCH 513/630] gsmopen: indented --- .../mod_gsmopen/gsmopen_protocol.cpp | 20 +++++++++---------- src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 5e5cadd9b6..391dade93a 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -420,7 +420,7 @@ int gsmopen_serial_config_AT(private_t *tech_pvt) WARNINGA("AT+CSMP do not got OK from the phone, continuing\n", GSMOPEN_P_LOG); } } -#endif// NOTDEF //GSMLIB? XXX +#endif // NOTDEF //GSMLIB? XXX #ifdef NOTDEF //GSMLIB? XXX @@ -2737,7 +2737,7 @@ int gsmopen_sendsms(private_t *tech_pvt, char *dest, char *text) if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { try { -int bad_8859=0; + int bad_8859 = 0; memset(mesg_test, '\0', sizeof(mesg_test)); sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 @@ -2745,7 +2745,7 @@ int bad_8859=0; //text=mesg_test; bad_8859 = utf8_to_iso_8859_1(tech_pvt, text, strlen(text), smscommand, sizeof(smscommand)); - if(!bad_8859){ + if (!bad_8859) { err = gsmopen_serial_write_AT_ack(tech_pvt, "AT+CMGF=0"); if (err) { ERRORA("AT+CMGF=0 (set message sending to PDU (as opposed to TEXT) do not got OK from the phone\n", GSMOPEN_P_LOG); @@ -2765,10 +2765,10 @@ int bad_8859=0; POPPA_UNLOCKA(&tech_pvt->controldev_lock); tech_pvt->no_ucs2 = 0; - tech_pvt->sms_pdu_not_supported =1; - ok= gsmopen_sendsms(tech_pvt, dest, text); + tech_pvt->sms_pdu_not_supported = 1; + ok = gsmopen_sendsms(tech_pvt, dest, text); tech_pvt->no_ucs2 = 1; - tech_pvt->sms_pdu_not_supported =0; + tech_pvt->sms_pdu_not_supported = 0; return ok; } @@ -2834,7 +2834,7 @@ int bad_8859=0; if (tech_pvt->no_ucs2 || tech_pvt->sms_pdu_not_supported == 0) { memset(smscommand, '\0', sizeof(smscommand)); sprintf(smscommand, "%s", pdu2); - }else{ + } else { memset(mesg_test, '\0', sizeof(mesg_test)); sprintf(mesg_test, ":) ciao belè новоÑти לק ר×ת ﺎﻠﺠﻤﻋﺓ 人大aèéàòçù"); //let's test the beauty of utf8 //text=mesg_test; @@ -2873,7 +2873,7 @@ int bad_8859=0; ERRORA("Error de-activating echo from modem\n", GSMOPEN_P_LOG); } } -uscita: + uscita: gsmopen_sleep(1000); if (tech_pvt->at_cmgw[0]) { @@ -3040,9 +3040,9 @@ int gsmopen_serial_getstatus_AT(private_t *tech_pvt) if (res) { ERRORA("AT+CMGR (read SMS) do not got OK from the phone, message sent was:|||%s|||\n", GSMOPEN_P_LOG, at_command); } - res = gsmopen_serial_write_AT_ack(p, "AT+CSCS=\"CIAPALO2\""); + res = gsmopen_serial_write_AT_ack(p, "AT+CSCS=\"GSM\""); if (res) { - ERRORA("AT+CSCS=\"CIAPALO2\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); + ERRORA("AT+CSCS=\"GSM\" (set TE messages to GSM) do not got OK from the phone\n", GSMOPEN_P_LOG); } memset(at_command, 0, sizeof(at_command)); sprintf(at_command, "AT+CMGD=%d", p->unread_sms_msg_id); /* delete the message */ diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index d1443afc50..f48d299e0a 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -3073,7 +3073,7 @@ int sms_incoming(private_t *tech_pvt) //switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to_host", "to_host"); switch_event_add_body(event, "%s\n", tech_pvt->sms_body); //switch_core_chat_send("GLOBAL", event); /* mod_sms */ - switch_core_chat_send("GLOBAL", event); /* mod_sms */ + switch_core_chat_send("GLOBAL", event); /* mod_sms */ } else { ERRORA("cannot create event on interface %s. WHY?????\n", GSMOPEN_P_LOG, tech_pvt->name); From 172e4a3041e821a2531b79ed0e5b4fbe2d4bf25c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 06:58:33 -0500 Subject: [PATCH 514/630] FS-4183 here is a start, it still needs some work but here are the basic components, initially I am using the algorithim we use to generate artifical silence (static) and using one of those values to sleep a certian number of microseconds plus the cumulative bytes of events but i bet there is still some predictability in there so it needs some more --- build/modules.conf.in | 1 + .../vanilla/autoload_configs/modules.conf.xml | 1 + src/mod/applications/mod_random/mod_random.c | 234 ++++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 src/mod/applications/mod_random/mod_random.c diff --git a/build/modules.conf.in b/build/modules.conf.in index 31aea530fb..534c1f0ec2 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -42,6 +42,7 @@ applications/mod_valet_parking #applications/mod_vmd applications/mod_voicemail #applications/mod_voicemail_ivr +#applications/mod_random #asr_tts/mod_cepstral #asr_tts/mod_flite #asr_tts/mod_pocketsphinx diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml index 5038713afe..266b32204a 100644 --- a/conf/vanilla/autoload_configs/modules.conf.xml +++ b/conf/vanilla/autoload_configs/modules.conf.xml @@ -63,6 +63,7 @@ + diff --git a/src/mod/applications/mod_random/mod_random.c b/src/mod/applications/mod_random/mod_random.c new file mode 100644 index 0000000000..08f1a8723e --- /dev/null +++ b/src/mod/applications/mod_random/mod_random.c @@ -0,0 +1,234 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2012, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Anthony Minessale II + * Neal Horman + * + * + * mod_random.c -- entropy source module + * + */ +#include + +/* Prototypes */ +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_random_shutdown); +SWITCH_MODULE_RUNTIME_FUNCTION(mod_random_runtime); +SWITCH_MODULE_LOAD_FUNCTION(mod_random_load); + +SWITCH_MODULE_DEFINITION(mod_random, mod_random_load, mod_random_shutdown, mod_random_runtime); + +static int RUNNING = 0; +static const char *random_device_files[] = { "/dev/hwrandom", "/dev/random", NULL }; +const char *random_device_file = NULL; + +static void event_handler(switch_event_t *event); + + +SWITCH_MODULE_LOAD_FUNCTION(mod_random_load) +{ + +#ifdef WIN32 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s missing window support\n", modname); + return SWITCH_STATUS_NOTIMPL; +#endif + + int i = 0; + + + for(i = 0 ;random_device_files[i]; i++) { + if (switch_file_exists(random_device_files[i], pool) == SWITCH_STATUS_SUCCESS) { + random_device_file = random_device_files[i]; + break; + } + } + + + if (!random_device_file) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s can't locate a random device file\n", modname); + return SWITCH_STATUS_FALSE; + } + + + if ((switch_event_bind(modname, SWITCH_EVENT_ALL, NULL, event_handler, NULL) != SWITCH_STATUS_SUCCESS)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); + return SWITCH_STATUS_TERM; + } + + /* connect my internal structure to the blank pointer passed to me */ + *module_interface = switch_loadable_module_create_module_interface(pool, modname); + + RUNNING = 1; + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_random_shutdown) +{ + + switch_event_unbind_callback(event_handler); + + RUNNING = 0; + + return SWITCH_STATUS_SUCCESS; +} + +#if WIN32 +SWITCH_MODULE_RUNTIME_FUNCTION(mod_random_runtime) +{ + RUNNING = 0; + return SWITCH_STATUS_TERM; +} +#else + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +typedef struct { + int count; + int size; + unsigned char *data; +} entropy_t; + + +static int random_add_entropy(int fd, void *buf, size_t size) +{ + entropy_t e = { 0 }; + int r = 0; + + e.count = size * 8; + e.size = size; + e.data = (unsigned char *) buf; + + if (ioctl(fd, RNDADDENTROPY, &e) != 0) { + r = 1; + } + + return r; +} + +static int rng_read(int fd, void *buf, size_t size) +{ + size_t off = 0; + ssize_t r; + unsigned char *bp = (unsigned char *) buf; + + while (size > 0) { + do { + r = read(fd, bp + off, size); + } while ((r == -1) && (errno == EINTR)); + + if (r <= 0) { + break; + } + + off += r; + size -= r; + } + + return size; +} + +static int rfd = 0; + +static void event_handler(switch_event_t *event) +{ + char *buf; + + if (switch_event_serialize(event, &buf, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { + random_add_entropy(rfd, buf, strlen(buf)); + free(buf); + } + +} + +SWITCH_MODULE_RUNTIME_FUNCTION(mod_random_runtime) +{ + + unsigned char data[1024] = {0}; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Thread starting using random_device_file %s\n", modname, random_device_file); + + if ((rfd = open(random_device_file, O_RDWR)) < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s Error opening random_device_file %s\n", modname, random_device_file); + RUNNING = 0; + } + + rng_read(rfd, data, 4); + + while(RUNNING) { + int16_t data[64]; + int i = 0; + int len = sizeof(data) / 2; + + switch_generate_sln_silence(data, len, 1); + random_add_entropy(rfd, data, len); + + while(i < len && !data[i]) i++; + + if (i < len) { + switch_yield(abs(data[i]) * 1000); + } + + } + + if (rfd > -1) { + close(rfd); + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Thread ending\n", modname); + + return SWITCH_STATUS_TERM; +} + +#endif + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 + */ From e7b482184451ade9f1ecfff6f80049d9c3a7e8bf Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 07:13:26 -0500 Subject: [PATCH 515/630] clean up forking code in example --- src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl index 2c7575f64c..0f4af275bc 100644 --- a/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl +++ b/src/mod/xml_int/mod_xml_scgi/xml_scgi_server.pl @@ -61,11 +61,17 @@ my $xml = qq# #; +$SIG{CHLD} = "IGNORE"; while (my $request = $scgi->accept) { - # fork every new req into its own process (optional) - next unless(my $pid = fork()); + my $pid = fork(); + + if ($pid) { + $request->close(); + next; + } + my $handle = $request->connection; $request->read_env; @@ -89,5 +95,9 @@ while (my $request = $scgi->accept) { #print $handle "Content-Type: text/xml\n\n"; print $handle $xml; - exit if (!$pid); + + exit unless $pid; } + + + From c3c559e4f75f39e537ee5cc0fc6e2f989e62b712 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 14 May 2012 15:52:11 +0000 Subject: [PATCH 516/630] debian: add mod_random --- debian/control-modules | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/debian/control-modules b/debian/control-modules index 2327495663..e229b86fc7 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -156,6 +156,11 @@ Module: applications/mod_rad_auth Description: RADIUS AA This module implements RADIUS Authentication and Authorization. +Module: applications/mod_random +Description: Entropy extraction + This module extracts entropy from FreeSWITCH and feeds it into + /dev/random. + Module: applications/mod_redis Description: Redis limit backend This module provides a mechanism to use Redis as a backend data From ec0f4c9f6ce20fa35ac49affe8620947de2a1725 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 09:47:35 -0500 Subject: [PATCH 517/630] FS-4218 --resolve --- libs/libscgi/src/scgi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c index d1675d246f..f50b5b8d88 100644 --- a/libs/libscgi/src/scgi.c +++ b/libs/libscgi/src/scgi.c @@ -91,7 +91,7 @@ SCGI_DECLARE(size_t) scgi_build_message(scgi_handle_t *handle, char **bufferp) ctlen = strlen(handle->body); } - snprintf(tmp, sizeof(tmp), "%ld", ctlen); + snprintf(tmp, sizeof(tmp), "%d", (int)ctlen); scgi_push_param(handle, "CONTENT_LENGTH", tmp); @@ -100,14 +100,14 @@ SCGI_DECLARE(size_t) scgi_build_message(scgi_handle_t *handle, char **bufferp) plen += (strlen(pp->name) + strlen(pp->value) + 2); } - snprintf(tmp, sizeof(tmp), "%ld", plen + ctlen); + snprintf(tmp, sizeof(tmp), "%d", (int) (plen + ctlen)); len = plen + ctlen + strlen(tmp) + 2; buffer = malloc(len); memset(buffer, 0, len); - snprintf(buffer, len, "%ld:", plen); + snprintf(buffer, len, "%d:", (int)plen); bp = buffer + strlen(buffer); for(pp = handle->params; pp; pp = pp->next) { From 5b3b77071b3483181da41f3a0b0dcccede0bc975 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 10:03:35 -0500 Subject: [PATCH 518/630] make sure bargers use the same codec as bargee to avoid transcoding delay --- src/include/private/switch_core_pvt.h | 1 + src/include/switch_core.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 25 +++++++++++++++++++++++-- src/switch_core_codec.c | 11 +++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index 95e66f2f6d..0005008252 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -120,6 +120,7 @@ struct switch_core_session { switch_codec_t *video_write_codec; switch_codec_implementation_t read_impl; + switch_codec_implementation_t real_read_impl; switch_codec_implementation_t write_impl; switch_codec_implementation_t video_read_impl; switch_codec_implementation_t video_write_impl; diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 624d491e1d..522ebec1f8 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -1500,6 +1500,7 @@ SWITCH_DECLARE(void) switch_core_session_unlock_codec_read(_In_ switch_core_sess SWITCH_DECLARE(switch_status_t) switch_core_session_get_read_impl(switch_core_session_t *session, switch_codec_implementation_t *impp); +SWITCH_DECLARE(switch_status_t) switch_core_session_get_real_read_impl(switch_core_session_t *session, switch_codec_implementation_t *impp); SWITCH_DECLARE(switch_status_t) switch_core_session_get_write_impl(switch_core_session_t *session, switch_codec_implementation_t *impp); SWITCH_DECLARE(switch_status_t) switch_core_session_get_video_read_impl(switch_core_session_t *session, switch_codec_implementation_t *impp); SWITCH_DECLARE(switch_status_t) switch_core_session_get_video_write_impl(switch_core_session_t *session, switch_codec_implementation_t *impp); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 26fc3e2668..441da03052 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -8464,12 +8464,33 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ bridge_uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE); if (call_info) { + const char *olu; + switch_core_session_t *os; + switch_codec_implementation_t read_impl = { 0 }; + char *codec_str = ""; + + if (!zstr(bridge_uuid) && switch_channel_test_flag(b_channel, CF_LEG_HOLDING)) { + olu = bridge_uuid; + } else { + olu = b_private->uuid; + } + + if ((os = switch_core_session_locate(olu))) { + switch_core_session_get_real_read_impl(os, &read_impl); + switch_core_session_rwunlock(os); + + codec_str = switch_core_session_sprintf(session, "set:absolute_codec_string=%s@%di,", read_impl.iananame, + read_impl.microseconds_per_packet / 1000); + } + + + if (!zstr(bridge_uuid) && switch_channel_test_flag(b_channel, CF_LEG_HOLDING)) { tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,intercept:%s", bridge_uuid); + "%sanswer,intercept:%s", codec_str, bridge_uuid); } else { tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, - "answer,sofia_sla:%s", b_private->uuid); + "%sanswer,sofia_sla:%s", codec_str, b_private->uuid); } } else { if (!zstr(bridge_uuid)) { diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index 28439c1b60..6ea47fcf13 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -206,6 +206,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_set_read_codec(switch_core_s session->read_codec = session->real_read_codec = codec; if (codec->implementation) { session->read_impl = *codec->implementation; + session->real_read_impl = *codec->implementation; } else { memset(&session->read_impl, 0, sizeof(session->read_impl)); } @@ -319,6 +320,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_read_impl(switch_core_se return SWITCH_STATUS_FALSE; } +SWITCH_DECLARE(switch_status_t) switch_core_session_get_real_read_impl(switch_core_session_t *session, switch_codec_implementation_t *impp) +{ + if (session->real_read_impl.codec_id) { + *impp = session->real_read_impl; + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_FALSE; +} + SWITCH_DECLARE(switch_status_t) switch_core_session_get_write_impl(switch_core_session_t *session, switch_codec_implementation_t *impp) { if (session->write_impl.codec_id) { From 4670a770cf86a23ee33c9cf0784040ad7cde8c98 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 11:06:36 -0500 Subject: [PATCH 519/630] fix sofia interaction with presence api command --- src/mod/endpoints/mod_sofia/sofia_presence.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index c4eb565f85..5965c54cd8 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1112,6 +1112,7 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) "sip_user='%q' and sip_host='%q'", rpid, status, mod_sofia_globals.hostname, profile->name, euser, host); sofia_glue_execute_sql_now(profile, &sql, SWITCH_TRUE); + proto = SOFIA_CHAT_PROTO; } if (zstr(uuid)) { From 5b38c22e9dc61a84badfdf5ee28ecec75e07eba5 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 14 May 2012 13:36:11 -0500 Subject: [PATCH 520/630] lets kick the auto test with a small change here that doesnt really matter --- freeswitch.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/freeswitch.spec b/freeswitch.spec index 889dae9007..f4e3399715 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -15,13 +15,13 @@ # This file and all modifications and additions to the pristine package are under the same license as the package itself. # # Contributor(s): Mike Jerris -# Brian West -# Raul Fragoso -# Rupa Shomaker -# Marc Olivier Chouinard -# Raymond Chandler -# Anthony Minessale II -# +# Brian West +# Anthony Minessale II +# Raul Fragoso +# Rupa Shomaker +# Marc Olivier Chouinard +# Raymond Chandler +# Ken Rice # # Maintainer(s): Ken Rice # From 1eae27942e0a41eb3c0298b6f70f761b54501163 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 13:07:35 -0500 Subject: [PATCH 521/630] addition to 5b3b77071b3483181da41f3a0b0dcccede0bc975 --- src/switch_core_codec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index 6ea47fcf13..e7fa3f3fe7 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -114,6 +114,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_set_real_read_codec(switch_c changed_read_codec = 1; if (codec->implementation) { session->read_impl = *codec->implementation; + session->real_read_impl = *codec->implementation; } else { memset(&session->read_impl, 0, sizeof(session->read_impl)); } @@ -136,7 +137,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_set_real_read_codec(switch_c session->read_codec = codec; changed_read_codec = 1; if (codec->implementation) { - session->read_impl = *codec->implementation; + session->read_impl = *codec->implementation; + session->real_read_impl = *codec->implementation; } else { memset(&session->read_impl, 0, sizeof(session->read_impl)); } From 18b88710d04d4be06a82dec5bb388d8bcf70f058 Mon Sep 17 00:00:00 2001 From: Michael S Collins Date: Mon, 14 May 2012 16:23:37 -0700 Subject: [PATCH 522/630] Update ChangeLog through Dec 31... 1.2 on horizon --- docs/ChangeLog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/ChangeLog b/docs/ChangeLog index 6f92097c5f..65588c761a 100644 --- a/docs/ChangeLog +++ b/docs/ChangeLog @@ -1,3 +1,18 @@ +freeswitch (1.2.0) + config: add screen_confirm macro to lang/en/ivr/sounds.xml (r:9ea3ce66) + config: support for --with-logfilesdir, --with-dbdir, --with-htdocsdir, --with-soundsdir, --with-grammardir, --with-scriptdir and --with-recordin + gsdir (r:7ae3f5b7/FS-302) + core: Add RECORD_STEREO_SWAP to reverse the record channels (r:d5042f2c/FS-3069) + core: api_on_startup (r:e164b76c) + mod_conference: Add auto-record filename to conference_recording channel variable and ability to pull filename from API (r:b9295fd5/FS-1573) + mod_conference: Convenience feature in mod_conference: apply sub cmds to non_moderator members (r:04295ac9/FS-3249) + mod_conference: New conference commands: get and set (r:ab5f3f28/FS-3254) + mod_commands: allow system API command to capture output from the executed command (r:d7a37e97) + mod_posix_timer: New timer module mod_posix_timer (r:9d7e9e67/FS-3731) + mod_sofia: Add presence-privacy parameter to exclude extension numbers from the distributed presence string (r:c6633fa3/FS-849) + mod_spandsp: Add T31 modem support to mod_spandsp - similar to iaxmodem only wired into FS. Also merge configs into single spandsp.conf.xml --see in tree example-- (r:d91f67d0) + mod_valet_parking: add orbit feature to valet_parking similar to mod_fifo (r:09725e2b) + freeswitch (1.0.7) build: Add mod_silk to windows build From 0a5a057c46e35d740e82549de53607e9ded4fa5b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 May 2012 17:50:55 -0500 Subject: [PATCH 523/630] add inbound-reg-in-new-thread sofia param to launch a new thread to process each new inbound register when using heavier backends --- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 + src/mod/endpoints/mod_sofia/sofia.c | 61 +++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 65755500a9..b96ff52011 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -151,6 +151,7 @@ typedef struct sofia_dispatch_event_s { sofia_profile_t *profile; int save; switch_core_session_t *session; + switch_memory_pool_t *pool; } sofia_dispatch_event_t; struct sofia_private { @@ -265,6 +266,7 @@ typedef enum { PFLAG_OPTIONS_RESPOND_503_ON_BUSY, PFLAG_PRESENCE_DISABLE_EARLY, PFLAG_CONFIRM_BLIND_TRANSFER, + PFLAG_THREAD_PER_REG, /* No new flags below this line */ PFLAG_MAX } PFLAGS; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 441da03052..df28e346ae 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1282,6 +1282,48 @@ static void our_sofia_event_callback(nua_event_t event, } } +void *SWITCH_THREAD_FUNC sofia_msg_thread_run_once(switch_thread_t *thread, void *obj) +{ + sofia_dispatch_event_t *de = (sofia_dispatch_event_t *) obj; + switch_memory_pool_t *pool = NULL; + + if (de) { + pool = de->pool; + de->pool = NULL; + sofia_process_dispatch_event(&de); + } + + if (pool) { + switch_core_destroy_memory_pool(&pool); + } + + return NULL; +} + +void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) +{ + sofia_dispatch_event_t *de = *dep; + switch_threadattr_t *thd_attr = NULL; + switch_memory_pool_t *pool; + switch_thread_t *thread; + + switch_core_new_memory_pool(&pool); + + + *dep = NULL; + de->pool = pool; + + switch_threadattr_create(&thd_attr, de->pool); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_thread_create(&thread, + thd_attr, + sofia_msg_thread_run_once, + de, + de->pool); + + +} + void sofia_process_dispatch_event(sofia_dispatch_event_t **dep) { sofia_dispatch_event_t *de = *dep; @@ -1387,6 +1429,13 @@ static void sofia_queue_message(sofia_dispatch_event_t *de) return; } + + if (de->profile && sofia_test_pflag(de->profile, PFLAG_THREAD_PER_REG) && de->data->e_event == nua_i_register) { + sofia_process_dispatch_event_in_thread(&de); + return; + } + + again: for (idx = 0; idx < mod_sofia_globals.msg_queue_len; idx++) { @@ -3251,6 +3300,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_CALLID_AS_UUID); } + } else if (!strcasecmp(var, "inbound-reg-in-new-thread")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_THREAD_PER_REG); + } else { + sofia_clear_pflag(profile, PFLAG_THREAD_PER_REG); + } } else if (!strcasecmp(var, "rtp-autoflush-during-bridge")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_RTP_AUTOFLUSH_DURING_BRIDGE); @@ -4102,6 +4157,12 @@ switch_status_t config_sofia(int reload, char *profile_name) sofia_clear_pflag(profile, PFLAG_MESSAGE_QUERY_ON_REGISTER); sofia_clear_pflag(profile, PFLAG_MESSAGE_QUERY_ON_FIRST_REGISTER); } + } else if (!strcasecmp(var, "inbound-reg-in-new-thread")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_THREAD_PER_REG); + } else { + sofia_clear_pflag(profile, PFLAG_THREAD_PER_REG); + } } else if (!strcasecmp(var, "inbound-use-callid-as-uuid")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_CALLID_AS_UUID); From efc6f16cef7ffda7d12cb8e85b3588b56c231d82 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 15 May 2012 05:04:44 +0000 Subject: [PATCH 524/630] build: add convenience script to set version in configure.in --- build/set-fs-version.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 build/set-fs-version.sh diff --git a/build/set-fs-version.sh b/build/set-fs-version.sh new file mode 100755 index 0000000000..6743b58b5f --- /dev/null +++ b/build/set-fs-version.sh @@ -0,0 +1,16 @@ +#!/bin/sh +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- + +sdir="." +[ -n "${0%/*}" ] && sdir="${0%/*}" +. $sdir/../scripts/ci/common.sh + +check_pwd +check_input_ver_build $@ +in_ver="$1" +if [ "$in_ver" = "auto" ]; then + in_ver="$(cat build/next-release.txt)" +fi +eval $(parse_version "$in_ver") +set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev" + From fbcb1c7ae2a8e165b8b524994108d2c3de0b3419 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 15 May 2012 07:18:50 +0000 Subject: [PATCH 525/630] debian: don't install scripts/ with freeswitch Some modules like mod_java drop files in there during install that should be installed with the module rather than with FS. --- debian/freeswitch.install | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/freeswitch.install b/debian/freeswitch.install index d713fe0607..415f082dd9 100644 --- a/debian/freeswitch.install +++ b/debian/freeswitch.install @@ -1,2 +1 @@ /usr/bin -/usr/share/freeswitch/scripts From fcaf88845245786cb64729f6e38cc0acbcdc98a4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 15 May 2012 07:19:51 +0000 Subject: [PATCH 526/630] debian: install freeswitch.jar with mod_java --- debian/freeswitch-mod-java.install.tmpl | 1 + 1 file changed, 1 insertion(+) create mode 100644 debian/freeswitch-mod-java.install.tmpl diff --git a/debian/freeswitch-mod-java.install.tmpl b/debian/freeswitch-mod-java.install.tmpl new file mode 100644 index 0000000000..b176da4348 --- /dev/null +++ b/debian/freeswitch-mod-java.install.tmpl @@ -0,0 +1 @@ +/usr/share/freeswitch/scripts/freeswitch.jar From a7c85c804a3e079c74ef415275483606e4a69fea Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 15 May 2012 09:18:02 -0500 Subject: [PATCH 527/630] FS-4219 --resolve --- libs/win32/util.vbs | 103 +++++++++++--------------------------------- 1 file changed, 25 insertions(+), 78 deletions(-) diff --git a/libs/win32/util.vbs b/libs/win32/util.vbs index ace3fd6998..29a7be5715 100644 --- a/libs/win32/util.vbs +++ b/libs/win32/util.vbs @@ -270,88 +270,35 @@ Sub CreateVersion(tmpFolder, VersionDir, includebase, includedest) strVerMicro = FindVersionStringInConfigure(VersionDir & "configure.in", "SWITCH_VERSION_MICRO") strVerRev = FindVersionStringInConfigure(VersionDir & "configure.in", "SWITCH_VERSION_REVISION") - If Right(tmpFolder, 1) <> "\" Then tmpFolder = tmpFolder & "\" End If - If Not FSO.FileExists(tmpFolder & "fs_svnversion.exe") Then - Wget ToolsBase & "fs_svnversion.exe", tmpFolder - End If - - If Not FSO.FileExists(tmpFolder & "libdb44.dll") Then - Wget ToolsBase & "libdb44.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libsvn_diff-1.dll") Then - Wget ToolsBase & "libsvn_diff-1.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libsvn_subr-1.dll") Then - Wget ToolsBase & "libsvn_subr-1.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libsvn_wc-1.dll") Then - Wget ToolsBase & "libsvn_wc-1.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "intl3_svn.dll") Then - Wget ToolsBase & "intl3_svn.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libapr-1.dll") Then - Wget ToolsBase & "libapr-1.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libaprutil-1.dll") Then - Wget ToolsBase & "libaprutil-1.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libapriconv-1.dll") Then - Wget ToolsBase & "libapriconv-1.dll", tmpFolder - End If - If Not FSO.FileExists(tmpFolder & "libsvn_delta-1.dll") Then - Wget ToolsBase & "libsvn_delta-1.dll", tmpFolder - End If - - Dim sLastFile - Const OverwriteIfExist = -1 - Const ForReading = 1 - - if strVerRev = "" Then - if FSO.FolderExists(VersionDir & ".svn") Then - VersionCmd="fs_svnversion " & quote & VersionDir & "." & quote & " -n" - Set MyFile = fso.CreateTextFile(tmpFolder & "tmpVersion.Bat", True) - MyFile.WriteLine("@" & "cd " & quote & tmpFolder & quote ) - MyFile.WriteLine("@" & VersionCmd) - MyFile.Close - Set oExec = WshShell.Exec("cmd /C " & quote & tmpFolder & "tmpVersion.Bat" & quote) - Do - strFromProc = OExec.StdOut.ReadLine() - VERSION="svn-" & strFromProc - Loop While Not OExec.StdOut.atEndOfStream - sLastVersion = "" - Set sLastFile = FSO.OpenTextFile(tmpFolder & "lastversion", ForReading, true, OpenAsASCII) - If Not sLastFile.atEndOfStream Then - sLastVersion = sLastFile.ReadLine() - End If - sLastFile.Close - End If - - if FSO.FolderExists(VersionDir & ".git") Then - VersionCmd="git log --format=" & quote & "%%h %%ci" & quote & " -1 HEAD" - Set MyFile = FSO.CreateTextFile(tmpFolder & "tmpVersion.Bat", True) - MyFile.WriteLine("@" & "cd " & quote & VersionDir & quote) - MyFile.WriteLine("@" & VersionCmd) - MyFile.Close - Set oExec = WshShell.Exec("cmd /C " & quote & tmpFolder & "tmpVersion.Bat" & quote) - Do - strFromProc = Trim(OExec.StdOut.ReadLine()) - VERSION="git-" & strFromProc - Loop While Not OExec.StdOut.atEndOfStream - sLastVersion = "" - Set sLastFile = FSO.OpenTextFile(tmpFolder & "lastversion", ForReading, true, OpenAsASCII) - If Not sLastFile.atEndOfStream Then - sLastVersion = sLastFile.ReadLine() - End If - sLastFile.Close - VERSION = Replace(VERSION, ":", "-") - End If - End If - + 'Set version to the one reported by configure.in if strVerRev <> "" Then VERSION = strVerRev End If + Dim sLastFile + Const ForReading = 1 + + 'Try To read revision from git, if it's found, use this instead of strVerRev found above + If FSO.FolderExists(VersionDir & ".git") Then + VersionCmd="git log --format=" & quote & "%%h %%ci" & quote & " -1 HEAD" + Set MyFile = FSO.CreateTextFile(tmpFolder & "tmpVersion.Bat", True) + MyFile.WriteLine("@" & "cd " & quote & VersionDir & quote) + MyFile.WriteLine("@" & VersionCmd) + MyFile.Close + Set oExec = WshShell.Exec("cmd /C " & quote & tmpFolder & "tmpVersion.Bat" & quote) + Do + strFromProc = Trim(OExec.StdOut.ReadLine()) + VERSION="git-" & strFromProc + Loop While Not OExec.StdOut.atEndOfStream + sLastVersion = "" + Set sLastFile = FSO.OpenTextFile(tmpFolder & "lastversion", ForReading, true, OpenAsASCII) + If Not sLastFile.atEndOfStream Then + sLastVersion = sLastFile.ReadLine() + End If + sLastFile.Close + VERSION = Replace(VERSION, ":", "-") + End If + If VERSION = "" Then VERSION = "UNKNOWN" End If From 2e42cabf132255d826abd4a852026fddded14bf3 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 15 May 2012 10:18:14 -0500 Subject: [PATCH 528/630] fix sox dependancy --- freeswitch-sounds-en-us-callie.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/freeswitch-sounds-en-us-callie.spec b/freeswitch-sounds-en-us-callie.spec index 468911c53d..68c79e42b6 100644 --- a/freeswitch-sounds-en-us-callie.spec +++ b/freeswitch-sounds-en-us-callie.spec @@ -77,6 +77,7 @@ BuildArch: noarch BuildRequires: sox Requires: freeswitch Requires: freeswitch-sounds-en-us-callie-48000 +Requires: sox BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description From 0d2739bfd25c5c5cb8f00fb2b38230afbebf39a9 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 15 May 2012 10:20:52 -0500 Subject: [PATCH 529/630] --resolve FS-4209 --- freeswitch-sounds-music.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/freeswitch-sounds-music.spec b/freeswitch-sounds-music.spec index e43ada5736..520a7dddfe 100644 --- a/freeswitch-sounds-music.spec +++ b/freeswitch-sounds-music.spec @@ -1,3 +1,4 @@ +%define fsname freeswitch %define PREFIX %{_prefix} %define EXECPREFIX %{_exec_prefix} %define BINDIR %{_bindir} From 5c75d4cf5bdf57e7d65000981c70509655f4ceaa Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 15 May 2012 08:31:33 -0500 Subject: [PATCH 530/630] FS-4220 --resolve i refactored this into a general cross platform function and use it everywhere else we try to set affinity --- src/include/switch_core.h | 2 +- src/mod/endpoints/mod_sofia/sofia.c | 10 +--------- src/switch_core.c | 29 +++++++++++++++++++++++++++++ src/switch_event.c | 12 ++---------- src/switch_time.c | 9 ++------- 5 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 522ebec1f8..8f9220d0b9 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -2328,7 +2328,7 @@ SWITCH_DECLARE(switch_status_t) switch_say_file_handle_create(switch_say_file_ha SWITCH_DECLARE(void) switch_say_file(switch_say_file_handle_t *sh, const char *fmt, ...); SWITCH_DECLARE(int) switch_max_file_desc(void); SWITCH_DECLARE(void) switch_close_extra_files(int *keep, int keep_ttl); - +SWITCH_DECLARE(switch_status_t) switch_core_thread_set_cpu_affinity(int cpu); SWITCH_END_EXTERN_C #endif /* For Emacs: diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index df28e346ae..d7dac7581b 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1363,15 +1363,7 @@ void *SWITCH_THREAD_FUNC sofia_msg_thread_run(switch_thread_t *thread, void *obj switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "MSG Thread %d Started\n", my_id); -#ifdef HAVE_CPU_SET_MACROS - { - cpu_set_t set; - CPU_ZERO(&set); - CPU_SET(my_id, &set); - sched_setaffinity(0, sizeof(set), &set); - } -#endif - + switch_core_thread_set_cpu_affinity(my_id); while(switch_queue_pop(q, &pop) == SWITCH_STATUS_SUCCESS && pop) { sofia_dispatch_event_t *de = (sofia_dispatch_event_t *) pop; diff --git a/src/switch_core.c b/src/switch_core.c index f957a7ae5e..8139f8ccf8 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1325,6 +1325,35 @@ SWITCH_DECLARE(uint32_t) switch_core_min_dtmf_duration(uint32_t duration) return runtime.min_dtmf_duration; } +SWITCH_DECLARE(switch_status_t) switch_core_thread_set_cpu_affinity(int cpu) +{ + switch_status_t status = SWITCH_STATUS_FALSE; + + if (cpu > -1) { + +#ifdef HAVE_CPU_SET_MACROS + cpu_set_t set; + + CPU_ZERO(&set); + CPU_SET(cpu, &set); + + if (!sched_setaffinity(0, sizeof(set), &set)) { + status = SWITCH_STATUS_SUCCESS; + } + +#else +#if WIN32 + if (SetThreadAffinityMask(GetCurrentThread(), (DWORD_PTR) cpu)) { + status = SWITCH_STATUS_SUCCESS; + } +#endif +#endif + } + + return status; +} + + static void switch_core_set_serial(void) { char buf[13] = ""; diff --git a/src/switch_event.c b/src/switch_event.c index fa864526c8..23670fac93 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -253,16 +253,8 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th EVENT_DISPATCH_QUEUE_RUNNING[my_id] = 1; switch_mutex_unlock(EVENT_QUEUE_MUTEX); - -#ifdef HAVE_CPU_SET_MACROS - { - cpu_set_t set; - CPU_ZERO(&set); - CPU_SET(my_id, &set); - sched_setaffinity(0, sizeof(set), &set); - } -#endif - + + switch_core_thread_set_cpu_affinity(my_id); for (;;) { void *pop = NULL; diff --git a/src/switch_time.c b/src/switch_time.c index 17a0a50675..e7256538f3 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -795,14 +795,9 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) runtime.profile_timer = switch_new_profile_timer(); switch_get_system_idle_time(runtime.profile_timer, &runtime.profile_time); -#ifdef HAVE_CPU_SET_MACROS - if (runtime.timer_affinity > -1) { - cpu_set_t set; - CPU_ZERO(&set); - CPU_SET(runtime.timer_affinity, &set); - sched_setaffinity(0, sizeof(set), &set); + if (runtime.timer_affinity > -1) { + switch_core_thread_set_cpu_affinity(runtime.timer_affinity); } -#endif switch_time_sync(); time_sync = runtime.time_sync; From da9aacc62e102c341136654a7c824c9309987f69 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 15 May 2012 08:48:08 -0500 Subject: [PATCH 531/630] FS-4217 --resolve --- src/mod/endpoints/mod_sofia/sofia_reg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 81b8da1696..c5fb57bb4d 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -428,6 +428,7 @@ void sofia_reg_check_gateway(sofia_profile_t *profile, time_t now) gateway_ptr->status = SOFIA_GATEWAY_DOWN; nua_unregister(gateway_ptr->nh, NUTAG_URL(gateway_ptr->register_url), + TAG_IF(gateway_ptr->register_sticky_proxy, NUTAG_PROXY(gateway_ptr->register_sticky_proxy)), TAG_IF(user_via, SIPTAG_VIA_STR(user_via)), SIPTAG_FROM_STR(gateway_ptr->register_from), SIPTAG_TO_STR(gateway_ptr->distinct_to ? gateway_ptr->register_to : gateway_ptr->register_from), From d015395566df56912f760eb88b1781474ed4724c Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 15 May 2012 11:25:50 -0500 Subject: [PATCH 532/630] FS-4203 --resolve add service setup to windows installer --- w32/Setup/FreeSWITCHConsole.wxs | 51 +++++++++++++++++++++++++++++++++ w32/Setup/Product.wxs | 18 ++++++------ w32/Setup/Setup.wixproj | 2 ++ 3 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 w32/Setup/FreeSWITCHConsole.wxs diff --git a/w32/Setup/FreeSWITCHConsole.wxs b/w32/Setup/FreeSWITCHConsole.wxs new file mode 100644 index 0000000000..243e614e60 --- /dev/null +++ b/w32/Setup/FreeSWITCHConsole.wxs @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/w32/Setup/Product.wxs b/w32/Setup/Product.wxs index 2f072aa8ca..66bc63b61d 100644 --- a/w32/Setup/Product.wxs +++ b/w32/Setup/Product.wxs @@ -66,12 +66,12 @@ WorkingDirectory="INSTALLLOCATION"/> - - + - + + @@ -87,12 +87,12 @@ - - - - - - + + + + + + diff --git a/w32/Setup/Setup.wixproj b/w32/Setup/Setup.wixproj index fcba3f0ceb..f7873cac08 100644 --- a/w32/Setup/Setup.wixproj +++ b/w32/Setup/Setup.wixproj @@ -36,6 +36,7 @@ + @@ -791,6 +792,7 @@ {1af3a893-f7be-43dd-b697-8ab2397c0d67} True + True Binaries;Content;Satellites INSTALLLOCATION From c2a74240ee602b39fc7c92cb2743863702cd7122 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 15 May 2012 22:25:24 +0000 Subject: [PATCH 533/630] libzrtp: fix client-side enrollment It appears that libzrtp would prevent a non-passive client from enrolling with a PBX because of a broken license mode comparison. Thanks to Ivo Kutts for the report. FS-4223 --resolve --- libs/libzrtp/src/zrtp_pbx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/libzrtp/src/zrtp_pbx.c b/libs/libzrtp/src/zrtp_pbx.c index f4f5a906c4..bb33b8006d 100644 --- a/libs/libzrtp/src/zrtp_pbx.c +++ b/libs/libzrtp/src/zrtp_pbx.c @@ -356,7 +356,7 @@ zrtp_status_t zrtp_register_with_trusted_mitm(zrtp_stream_t* stream) /* Passive Client endpoint should NOT generate PBX Secret. */ if ((stream->mitm_mode == ZRTP_MITM_MODE_REG_CLIENT) && - (ZRTP_LICENSE_MODE_PASSIVE != stream->zrtp->lic_mode)) { + (ZRTP_LICENSE_MODE_PASSIVE == stream->zrtp->lic_mode)) { ZRTP_LOG(2,(_ZTU_,"WARNING: Passive Client endpoint should NOT generate PBX Secert.\n")); return zrtp_status_bad_param; } From 6da083551ef995c5ac5fe5c2dd1e196e6961fff6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 15 May 2012 22:26:29 +0000 Subject: [PATCH 534/630] libzrtp: fix spelling in log message --- libs/libzrtp/src/zrtp_pbx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/libzrtp/src/zrtp_pbx.c b/libs/libzrtp/src/zrtp_pbx.c index bb33b8006d..3567d4a47b 100644 --- a/libs/libzrtp/src/zrtp_pbx.c +++ b/libs/libzrtp/src/zrtp_pbx.c @@ -357,7 +357,7 @@ zrtp_status_t zrtp_register_with_trusted_mitm(zrtp_stream_t* stream) /* Passive Client endpoint should NOT generate PBX Secret. */ if ((stream->mitm_mode == ZRTP_MITM_MODE_REG_CLIENT) && (ZRTP_LICENSE_MODE_PASSIVE == stream->zrtp->lic_mode)) { - ZRTP_LOG(2,(_ZTU_,"WARNING: Passive Client endpoint should NOT generate PBX Secert.\n")); + ZRTP_LOG(2,(_ZTU_,"WARNING: Passive Client endpoint should NOT generate PBX Secret.\n")); return zrtp_status_bad_param; } From f0aa4ab390b1f905ec1d99f689bfec6215308dcd Mon Sep 17 00:00:00 2001 From: Brian West Date: Tue, 15 May 2012 21:05:04 -0500 Subject: [PATCH 535/630] disable these options if zrtp isn't enabled. --- src/switch_channel.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/switch_channel.c b/src/switch_channel.c index 20734d04f4..806f5f0d82 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2952,6 +2952,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi return SWITCH_STATUS_FALSE; } +#ifdef ENABLE_ZRTP SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) { @@ -3000,7 +3001,7 @@ SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) } } } - +#endif @@ -3013,7 +3014,9 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_pre_answered(switch_ const char *uuid; switch_core_session_t *other_session; +#ifdef ENABLE_ZRTP switch_channel_check_zrtp(channel); +#endif switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Pre-Answer %s!\n", channel->name); switch_channel_set_flag(channel, CF_EARLY_MEDIA); switch_channel_set_callstate(channel, CCS_EARLY); @@ -3273,7 +3276,9 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_answered(switch_chan switch_mutex_unlock(channel->profile_mutex); } +#ifdef ENABLE_ZRTP switch_channel_check_zrtp(channel); +#endif switch_channel_set_flag(channel, CF_ANSWERED); switch_channel_set_callstate(channel, CCS_ACTIVE); From 7e193ed3827edf4534bf63167d3fb071a799ec1f Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 16 May 2012 02:41:24 +0000 Subject: [PATCH 536/630] Revert "disable these options if zrtp isn't enabled" Brian and I talked about this and concurred on the reversion here. Part of the point of the ZRTP pass-through mode code is that it allows two legs to have a ZRTP-enabled call even if FS doesn't have ZRTP. This reverts commit f0aa4ab390b1f905ec1d99f689bfec6215308dcd. --- src/switch_channel.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/switch_channel.c b/src/switch_channel.c index 806f5f0d82..20734d04f4 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2952,7 +2952,6 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi return SWITCH_STATUS_FALSE; } -#ifdef ENABLE_ZRTP SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) { @@ -3001,7 +3000,7 @@ SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) } } } -#endif + @@ -3014,9 +3013,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_pre_answered(switch_ const char *uuid; switch_core_session_t *other_session; -#ifdef ENABLE_ZRTP switch_channel_check_zrtp(channel); -#endif switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_channel_get_uuid(channel), SWITCH_LOG_NOTICE, "Pre-Answer %s!\n", channel->name); switch_channel_set_flag(channel, CF_EARLY_MEDIA); switch_channel_set_callstate(channel, CCS_EARLY); @@ -3276,9 +3273,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_answered(switch_chan switch_mutex_unlock(channel->profile_mutex); } -#ifdef ENABLE_ZRTP switch_channel_check_zrtp(channel); -#endif switch_channel_set_flag(channel, CF_ANSWERED); switch_channel_set_callstate(channel, CCS_ACTIVE); From 0709cc6f1bab24192697344630c8344d6808c34b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 16 May 2012 02:50:13 +0000 Subject: [PATCH 537/630] make log message relevant even if FS doesn't have ZRTP --- src/switch_channel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_channel.c b/src/switch_channel.c index 20734d04f4..f7d7e3aae4 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2982,7 +2982,7 @@ SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) if (doit) { switch_channel_set_variable(channel, "zrtp_secure_media", "true"); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(channel->session), SWITCH_LOG_INFO, - "%s ZRTP not negotiated on both sides, Activating ZRTP man-in-the-middle mode.\n", switch_channel_get_name(channel)); + "%s ZRTP not negotiated on both sides; disabling ZRTP passthru mode.\n", switch_channel_get_name(channel)); switch_channel_clear_flag(channel, CF_ZRTP_PASS); switch_channel_clear_flag(channel, CF_ZRTP_HASH); From 18ee7ce3d03423d4882b171edf049f610768f7a4 Mon Sep 17 00:00:00 2001 From: Mahdi Moradi Date: Wed, 16 May 2012 20:10:13 +0430 Subject: [PATCH 538/630] First upload. --- src/mod/say/mod_say_fa/mod_say_fa.c | 685 ++++++++++++++++++++++++++++ 1 file changed, 685 insertions(+) create mode 100644 src/mod/say/mod_say_fa/mod_say_fa.c diff --git a/src/mod/say/mod_say_fa/mod_say_fa.c b/src/mod/say/mod_say_fa/mod_say_fa.c new file mode 100644 index 0000000000..e044fca7b6 --- /dev/null +++ b/src/mod/say/mod_say_fa/mod_say_fa.c @@ -0,0 +1,685 @@ +/* + * Copyright (c) 2007, Anthony Minessale II + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER + * 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. + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Anthony Minessale II + * Mahdi Moradi + * Babak Yakhchali + * + * mod_say_fa.c -- Say for Persian + * + */ + +#include +#include +#include + +void gregorian_to_jalali(/* output */ int *j_y, int *j_m, int *j_d, + /* input */ int g_y, int g_m, int g_d); +void jalali_to_gregorian(/* output */ int *g_y, int *g_m, int *g_d, + /* input */ int j_y, int j_m, int j_d); + +SWITCH_MODULE_LOAD_FUNCTION(mod_say_fa_load); +SWITCH_MODULE_DEFINITION(mod_say_fa, mod_say_fa_load, NULL, NULL); + +#define say_num(num, meth) { \ + char tmp[80]; \ + switch_status_t tstatus; \ + switch_say_method_t smeth = say_args->method; \ + switch_say_type_t stype = say_args->type; \ + say_args->type = SST_ITEMS; say_args->method = meth; \ + switch_snprintf(tmp, sizeof(tmp), "%u", (unsigned)num); \ + if ((tstatus = \ + fa_say_general_count(session, tmp, say_args, args)) \ + != SWITCH_STATUS_SUCCESS) { \ + return tstatus; \ + } \ + say_args->method = smeth; say_args->type = stype; \ + } \ + +#define say_file(...) { \ + char tmp[80]; \ + switch_status_t tstatus; \ + switch_snprintf(tmp, sizeof(tmp), __VA_ARGS__); \ + if ((tstatus = \ + switch_ivr_play_file(session, NULL, tmp, args)) \ + != SWITCH_STATUS_SUCCESS){ \ + return tstatus; \ + } \ + if (!switch_channel_ready(switch_core_session_get_channel(session))) { \ + return SWITCH_STATUS_FALSE; \ + }} \ + +static switch_status_t play_group(switch_say_method_t method, int a, int b, int c, char *what, switch_core_session_t *session, switch_input_args_t *args) +{ + if (a) { + if ( !b && !c ) + { + if( method == SSM_COUNTED ) + { + say_file("digits/%d00om.wav", a); + } + else + say_file("digits/%d00.wav", a); + b = c = 0; + } + else + say_file("digits/%d00+.wav", a); + } + + if (b) { + if ( !c || b == 1 ) + { + if( method == SSM_COUNTED ) + { + say_file("digits/%d%dom.wav", b, c); + } + else + say_file("digits/%d%d.wav", b, c); + c = 0; + } + else + say_file("digits/%d0+.wav", b); + } + + if (c) { + if (method == SSM_COUNTED) { + say_file("digits/%dom.wav", c); + } else { + say_file("digits/%d.wav", c); + } + } + + if (what && (a || b || c)) { + say_file(what); + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t fa_say_general_count(switch_core_session_t *session, char *tosay, switch_say_args_t *say_args, switch_input_args_t *args) +{ + int in; + int x = 0; + int sum = 0; + char what_file[50] = ""; + int places[9] = { 0 }; + char sbuf[128] = ""; + switch_status_t status; + + if (say_args->method == SSM_ITERATED) { + if ((tosay = switch_strip_commas(tosay, sbuf, sizeof(sbuf)))) { + char *p; + for (p = tosay; p && *p; p++) { + say_file("digits/%c.wav", *p); + } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error!\n"); + return SWITCH_STATUS_GENERR; + } + return SWITCH_STATUS_SUCCESS; + } + + if (!(tosay = switch_strip_commas(tosay, sbuf, sizeof(sbuf))) || strlen(tosay) > 9) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error!\n"); + return SWITCH_STATUS_GENERR; + } + + in = atoi(tosay); + + if (in != 0) { + for (x = 8; x >= 0; x--) { + int num = (int) pow(10, x); + if ((places[(uint32_t) x] = in / num)) { + in -= places[(uint32_t) x] * num; + } + } + + switch (say_args->method) { + case SSM_COUNTED: + case SSM_PRONOUNCED: + sum = places[5] + places[4] + places[3] + places[2] + places[1] + places[0]; + if( !sum ) + { + if( say_args->method == SSM_COUNTED ) + { + strcpy(what_file,"digits/1000000om.wav"); + } + else + strcpy(what_file,"digits/1000000.wav"); + } + else + strcpy(what_file,"digits/1000000+.wav"); + if ((status = play_group(SSM_PRONOUNCED, places[8], places[7], places[6], what_file, session, args)) != SWITCH_STATUS_SUCCESS) { + return status; + } + sum = places[2] + places[1] + places[0]; + if( !sum ) + { if( say_args->method == SSM_COUNTED ) + { + strcpy(what_file,"digits/1000om.wav"); + } + else + strcpy(what_file,"digits/1000.wav"); + } + else + strcpy(what_file,"digits/1000+.wav"); + if ((status = play_group(SSM_PRONOUNCED, places[5], places[4], places[3], what_file, session, args)) != SWITCH_STATUS_SUCCESS) { + return status; + } + if ((status = play_group(say_args->method, places[2], places[1], places[0], NULL, session, args)) != SWITCH_STATUS_SUCCESS) { + return status; + } + break; + default: + break; + } + } else { + say_file("digits/0.wav"); + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t fa_say_time(switch_core_session_t *session, char *tosay, switch_say_args_t *say_args, switch_input_args_t *args) +{ + int32_t t; + switch_time_t target = 0, target_now = 0; + switch_time_exp_t tm, tm_now; + uint8_t say_date = 0, say_time = 0, say_year = 0, say_month = 0, say_dow = 0, say_day = 0, say_yesterday = 0, say_today = 0; + switch_channel_t *channel = switch_core_session_get_channel(session); + const char *tz = switch_channel_get_variable(channel, "timezone"); + int jalali_year = 1, jalali_month = 0, jalali_day = 0; + + if (say_args->type == SST_TIME_MEASUREMENT) { + int64_t hours = 0; + int64_t minutes = 0; + int64_t seconds = 0; + int64_t r = 0; + + if (strchr(tosay, ':')) { + char *tme = switch_core_session_strdup(session, tosay); + char *p; + + if ((p = strrchr(tme, ':'))) { + *p++ = '\0'; + seconds = atoi(p); + if ((p = strchr(tme, ':'))) { + *p++ = '\0'; + minutes = atoi(p); + if (tme) { + hours = atoi(tme); + } + } else { + minutes = atoi(tme); + } + } + } else { + if ((seconds = atol(tosay)) <= 0) { + seconds = (int64_t) switch_epoch_time_now(NULL); + } + + if (seconds >= 60) { + minutes = seconds / 60; + r = seconds % 60; + seconds = r; + } + + if (minutes >= 60) { + hours = minutes / 60; + r = minutes % 60; + minutes = r; + } + } + + if (hours) { + say_num(hours, SSM_PRONOUNCED); + if(minutes || seconds) + { + say_file("time/hour+.wav"); + } + else + say_file("time/hour.wav"); + } + + if (minutes) { + say_num(minutes, SSM_PRONOUNCED); + if( seconds ) + { + say_file("time/minutes+.wav"); + } + else + say_file("time/minutes.wav"); + } + + if (seconds) { + say_num(seconds, SSM_PRONOUNCED); + say_file("time/seconds.wav"); + } + + return SWITCH_STATUS_SUCCESS; + } + + if ((t = atol(tosay)) > 0) { + target = switch_time_make(t, 0); + target_now = switch_micro_time_now(); + } else { + target = switch_micro_time_now(); + target_now = switch_micro_time_now(); + } + + if (tz) { + int check = atoi(tz); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Timezone is [%s]\n", tz); + if (check) { + switch_time_exp_tz(&tm, target, check); + switch_time_exp_tz(&tm_now, target_now, check); + } else { + switch_time_exp_tz_name(tz, &tm, target); + switch_time_exp_tz_name(tz, &tm_now, target_now); + } + } else { + switch_time_exp_lt(&tm, target); + switch_time_exp_lt(&tm_now, target_now); + } + + switch (say_args->type) { + case SST_CURRENT_DATE_TIME: + say_date = say_time = 1; + break; + case SST_CURRENT_DATE: + say_date = 1; + break; + case SST_CURRENT_TIME: + say_time = 1; + break; + case SST_SHORT_DATE_TIME: + say_time = 1; + if (tm.tm_year != tm_now.tm_year) { + say_date = 1; + break; + } + if (tm.tm_yday == tm_now.tm_yday) { + say_today = 1; + break; + } + if (tm.tm_yday == tm_now.tm_yday - 1) { + say_yesterday = 1; + break; + } + if (tm.tm_yday >= tm_now.tm_yday - 5) { + say_dow = 1; + break; + } + if (tm.tm_mon != tm_now.tm_mon) { + say_month = say_day = say_dow = 1; + break; + } + + say_month = say_day = say_dow = 1; + + break; + default: + break; + } + + if (say_today) { + say_file("time/today.wav"); + } + if (say_yesterday) { + say_file("time/yesterday.wav"); + } + if (say_dow) { + say_file("time/day-%d.wav", tm.tm_wday); + } + + if (say_date) { + say_year = say_month = say_day = say_dow = 1; + say_today = say_yesterday = 0; + } + + gregorian_to_jalali(&jalali_year,&jalali_month,&jalali_day,tm.tm_year + 1900,tm.tm_mon + 1,tm.tm_mday); + + if (say_day) { + if(jalali_day > 20 && jalali_day != 30) + { + say_file("digits/%d+.wav", (jalali_day - jalali_day % 10)); + say_file("digits/%de.wav", jalali_day % 10); + } + else + say_file("digits/%de.wav", jalali_day); + } + + if (say_month) { + say_file("time/mon-%d.wav", jalali_month - 1); + } + + if (say_year) { + say_num(jalali_year, SSM_PRONOUNCED); + } + + if (say_time) { + int32_t hour = tm.tm_hour, pm = 0; + + if (say_date || say_today || say_yesterday || say_dow) { + say_file("time/at.wav"); + } + + if (hour > 12) { + hour -= 12; + pm = 1; + } else if (hour == 12) { + pm = 1; + } else if (hour == 0) { + hour = 12; + pm = 0; + } + + say_file("time/hour-e.wav"); + say_file("digits/%do.wav",hour); + play_group(SSM_PRONOUNCED, 0, (tm.tm_min - tm.tm_min % 10) / 10, tm.tm_min % 10, "time/minutes-e.wav", session, args); + say_file("time/%s.wav", pm ? "p-m" : "a-m"); + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t fa_say_money(switch_core_session_t *session, char *tosay, switch_say_args_t *say_args, switch_input_args_t *args) +{ + char sbuf[16] = ""; /* enough for 999,999,999,999.99 (w/o the commas or leading $) */ + char *rials = NULL; + char *cents = NULL; + + if (strlen(tosay) > 15 || !(tosay = switch_strip_nonnumerics(tosay, sbuf, sizeof(sbuf)))) { + /* valid characters are 0 - 9, period (.), minus (-), and plus (+) - remove all others */ + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error!\n"); + return SWITCH_STATUS_GENERR; + } + + rials = sbuf; + + if ((cents = strchr(sbuf, '.'))) { + *cents++ = '\0'; + if (strlen(cents) > 2) { + cents[2] = '\0'; + } + } + + /* If positive sign - skip over" */ + if (sbuf[0] == '+') { + say_file("currency/positive-e.wav"); + rials++; + } + + /* If negative say "negative" */ + if (sbuf[0] == '-') { + say_file("currency/negative-e.wav"); + rials++; + } + + /* Say rial amount */ + fa_say_general_count(session, rials, say_args, args); + say_file("currency/rials.wav"); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t fa_say_telephone(switch_core_session_t *session, char *tosay, switch_say_args_t *say_args, switch_input_args_t *args) +{ + char *phone_number; + int tosay_length = 0; + + if( !tosay || !strlen(tosay) ) + { + return SWITCH_STATUS_SUCCESS; + } + + if ((phone_number = strchr(tosay,'-'))) + { + *phone_number++ = '\0'; + fa_say_telephone(session,tosay,say_args,args); + fa_say_telephone(session,phone_number,say_args,args); + return SWITCH_STATUS_SUCCESS; + } + + tosay_length = strlen(tosay); + if( tosay_length == 1 ) + { + say_file("digits/%d.wav",tosay[0] - 48); + } + else if ( tosay[0] == '0' ) + { + if( tosay[1] == '0' ) + { + say_file("digits/00.wav"); + fa_say_telephone(session,tosay + 2,say_args,args); + } + else + { + say_file("digits/0.wav"); + fa_say_telephone(session,tosay + 1,say_args,args); + } + } + else if ( tosay_length % 2 ) + { + play_group(SSM_PRONOUNCED,tosay[0] - 48,tosay[1] - 48,tosay[2] - 48,NULL,session,args); + fa_say_telephone(session,tosay + 3,say_args,args); + } + else + { + play_group(SSM_PRONOUNCED,0,tosay[0] - 48,tosay[1] - 48,NULL,session,args); + fa_say_telephone(session,tosay + 2,say_args,args); + } + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t fa_say(switch_core_session_t *session, char *tosay, switch_say_args_t *say_args, switch_input_args_t *args) +{ + switch_say_callback_t say_cb = NULL; + + switch (say_args->type) { + case SST_NUMBER: + case SST_ITEMS: + case SST_PERSONS: + case SST_MESSAGES: + say_cb = fa_say_general_count; + break; + case SST_TIME_MEASUREMENT: + case SST_CURRENT_DATE: + case SST_CURRENT_TIME: + case SST_CURRENT_DATE_TIME: + case SST_SHORT_DATE_TIME: + say_cb = fa_say_time; + break; + case SST_IP_ADDRESS: + return switch_ivr_say_ip(session, tosay, fa_say_general_count, say_args, args); + break; + case SST_NAME_SPELLED: + case SST_NAME_PHONETIC: + return switch_ivr_say_spell(session, tosay, say_args, args); + break; + case SST_CURRENCY: + say_cb = fa_say_money; + break; + case SST_TELEPHONE_NUMBER: + say_cb = fa_say_telephone; + break; + default: + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unknown Say type=[%d]\n", say_args->type); + break; + } + + if (say_cb) { + return say_cb(session, tosay, say_args, args); + } + + return SWITCH_STATUS_FALSE; +} + +SWITCH_MODULE_LOAD_FUNCTION(mod_say_fa_load) +{ + switch_say_interface_t *say_interface; + /* connect my internal structure to the blank pointer passed to me */ + *module_interface = switch_loadable_module_create_module_interface(pool, modname); + say_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_SAY_INTERFACE); + say_interface->interface_name = "fa"; + say_interface->say_function = fa_say; + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; +} + +/* Utility functions */ + +int g_days_in_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; +int j_days_in_month[12] = {31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29}; + +void gregorian_to_jalali(int *j_y, int *j_m, int *j_d, + int g_y, int g_m, int g_d) +{ + int gy, gm, gd; + int jy, jm, jd; + long g_day_no, j_day_no; + int j_np; + + int i; + + gy = g_y-1600; + gm = g_m-1; + gd = g_d-1; + + g_day_no = 365*gy+(gy+3)/4-(gy+99)/100+(gy+399)/400; + for (i=0;i1 && ((gy%4==0 && gy%100!=0) || (gy%400==0))) + /* leap and after Feb */ + ++g_day_no; + g_day_no += gd; + + j_day_no = g_day_no-79; + + j_np = j_day_no / 12053; + j_day_no %= 12053; + + jy = 979+33*j_np+4*(j_day_no/1461); + j_day_no %= 1461; + + if (j_day_no >= 366) { + jy += (j_day_no-1)/365; + j_day_no = (j_day_no-1)%365; + } + + for (i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i) { + j_day_no -= j_days_in_month[i]; + } + jm = i+1; + jd = j_day_no+1; + *j_y = jy; + *j_m = jm; + *j_d = jd; +} + +void jalali_to_gregorian(int *g_y, int *g_m, int *g_d, + int j_y, int j_m, int j_d) +{ + int gy, gm, gd; + int jy, jm, jd; + long g_day_no, j_day_no; + int leap; + + int i; + + jy = j_y-979; + jm = j_m-1; + jd = j_d-1; + + j_day_no = 365*jy + (jy/33)*8 + (jy%33+3)/4; + for (i=0; i < jm; ++i) + j_day_no += j_days_in_month[i]; + + j_day_no += jd; + + g_day_no = j_day_no+79; + + gy = 1600 + 400*(g_day_no/146097); /* 146097 = 365*400 + 400/4 - 400/100 + 400/400 */ + g_day_no = g_day_no % 146097; + + leap = 1; + if (g_day_no >= 36525) /* 36525 = 365*100 + 100/4 */ + { + g_day_no--; + gy += 100*(g_day_no/36524); /* 36524 = 365*100 + 100/4 - 100/100 */ + g_day_no = g_day_no % 36524; + + if (g_day_no >= 365) + g_day_no++; + else + leap = 0; + } + + gy += 4*(g_day_no/1461); /* 1461 = 365*4 + 4/4 */ + g_day_no %= 1461; + + if (g_day_no >= 366) { + leap = 0; + + g_day_no--; + gy += g_day_no/365; + g_day_no = g_day_no % 365; + } + + for (i = 0; g_day_no >= g_days_in_month[i] + (i == 1 && leap); i++) + g_day_no -= g_days_in_month[i] + (i == 1 && leap); + gm = i+1; + gd = g_day_no+1; + + *g_y = gy; + *g_m = gm; + *g_d = gd; +} + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ \ No newline at end of file From 4e4b4444d26c424263d520fe33cfa2686762bb3f Mon Sep 17 00:00:00 2001 From: Mahdi Moradi Date: Wed, 16 May 2012 20:35:15 +0430 Subject: [PATCH 539/630] Microsoft visual studio project files. --- src/mod/say/mod_say_fa/mod_say_fa.2008.vcproj | 283 ++++++++++++++++++ .../say/mod_say_fa/mod_say_fa.2010.vcxproj | 135 +++++++++ .../mod_say_fa/mod_say_fa.2010.vcxproj.user | 3 + src/mod/say/mod_say_fa/mod_say_fa.vcproj | 51 ++++ 4 files changed, 472 insertions(+) create mode 100644 src/mod/say/mod_say_fa/mod_say_fa.2008.vcproj create mode 100644 src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj create mode 100644 src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user create mode 100644 src/mod/say/mod_say_fa/mod_say_fa.vcproj diff --git a/src/mod/say/mod_say_fa/mod_say_fa.2008.vcproj b/src/mod/say/mod_say_fa/mod_say_fa.2008.vcproj new file mode 100644 index 0000000000..7cd7862cd7 --- /dev/null +++ b/src/mod/say/mod_say_fa/mod_say_fa.2008.vcproj @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj b/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj new file mode 100644 index 0000000000..cefc30eeab --- /dev/null +++ b/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + mod_say_fa + {85a71f08-9f6c-11e1-9967-002186cfa17e} + mod_say_fa + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + + false + + + + + + + X64 + + + + + + + false + + + MachineX64 + + + + + + + + {f6c55d93-b927-4483-bb69-15aef3dd2dff} + false + + + {202d7a4e-760d-4d0e-afa1-d7459ced30ff} + false + + + + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user b/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user new file mode 100644 index 0000000000..695b5c78b9 --- /dev/null +++ b/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/mod/say/mod_say_fa/mod_say_fa.vcproj b/src/mod/say/mod_say_fa/mod_say_fa.vcproj new file mode 100644 index 0000000000..02de50a6fa --- /dev/null +++ b/src/mod/say/mod_say_fa/mod_say_fa.vcproj @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + From 31e0e17d6b98a3b26b584f91916f8168e3752837 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 16 May 2012 21:05:41 +0000 Subject: [PATCH 540/630] make some ZRTP-related integer casts explicit ...to satisfy Windows Visual Studio. Thanks to Jeff Lenk. --- src/switch_rtp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index d481a17d49..c34da28c58 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -858,7 +858,7 @@ SWITCH_DECLARE(void) switch_rtp_init(switch_memory_pool_t *pool) zrtp_config.lic_mode = ZRTP_LICENSE_MODE_ACTIVE; switch_snprintf(zrtp_cache_path, sizeof(zrtp_cache_path), "%s%szrtp.dat", SWITCH_GLOBAL_dirs.db_dir, SWITCH_PATH_SEPARATOR); zrtp_zstrcpyc((zrtp_stringn_t*)zrtp_config.def_cache_path.buffer, zrtp_cache_path); - zrtp_config.def_cache_path.length = strlen(zrtp_cache_path); + zrtp_config.def_cache_path.length = (uint16_t)strlen(zrtp_cache_path); zrtp_config.def_cache_path.max_length = 255; zrtp_config.cb.event_cb.on_zrtp_protocol_event = zrtp_event_callback; zrtp_config.cb.misc_cb.on_send_packet = zrtp_send_rtp_callback; @@ -1726,7 +1726,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session rtp_session->zrtp_profile->allowclear = 0; rtp_session->zrtp_profile->disclose_bit = 0; - rtp_session->zrtp_profile->cache_ttl = -1; + rtp_session->zrtp_profile->cache_ttl = (uint32_t) -1; if (zrtp_status_ok != zrtp_session_init(zrtp_global, rtp_session->zrtp_profile, zid, initiator, &rtp_session->zrtp_session)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error! zRTP INIT Failed\n"); From 7bd9efc7f52a725b7ef9efb64b65873b4bc4330b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 16 May 2012 21:26:50 +0000 Subject: [PATCH 541/630] use the typedef for an enum rather than unsigned The callback here receives both zrtp_protocol_event_t and zrtp_security_event_t events. The latter is numbered contiguously to the former. Still, it's a bit confusing to have to pick one as a type, but apparently this fixes a warning on Visual Studio on Windows. Thanks to Jeff Lenk. --- src/switch_rtp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index c34da28c58..9211ec2cee 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -688,7 +688,7 @@ static int zrtp_send_rtp_callback(const zrtp_stream_t *stream, char *rtp_packet, return status; } -static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) +static void zrtp_event_callback(zrtp_stream_t *stream, zrtp_security_event_t event) { switch_rtp_t *rtp_session = zrtp_stream_get_userdata(stream); zrtp_session_info_t zrtp_session_info; From fdc9e7f8b6a81df14bee9a2bb7d4b626e8df3e1a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 17 May 2012 05:33:44 +0000 Subject: [PATCH 542/630] work around libzrtp API mistake for VS libzrtp's sas_is_verified field is a uint32_t, but zrtp_verified_set expects a uint8_t. This is a boolean field, so it doesn't matter one way or the other. gcc doesn't care, but Windows Visual Studio apparently throws a warning about this. --- src/switch_rtp.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 9211ec2cee..9c42520ff9 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -715,7 +715,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, zrtp_security_event_t eve switch_channel_set_variable_name_printf(channel, stream->session->sas1.buffer, "zrtp_sas1_string_%s", type); switch_channel_set_variable_name_printf(channel, stream->session->sas2.buffer, "zrtp_sas2_string", type); - zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, zrtp_session_info.sas_is_verified ^ 1); + zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, (uint8_t)(zrtp_session_info.sas_is_verified ^ 1)); } } @@ -777,7 +777,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, zrtp_security_event_t eve if (zrtp_status_ok == zrtp_session_get(stream->session, &zrtp_session_info)) { if (zrtp_session_info.sas_is_ready) { - zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, zrtp_session_info.sas_is_verified ^ 1); + zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, (uint8_t)(zrtp_session_info.sas_is_verified ^ 1)); } } } @@ -790,7 +790,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, zrtp_security_event_t eve if (zrtp_status_ok == zrtp_session_get(stream->session, &zrtp_session_info)) { if (zrtp_session_info.sas_is_ready) { - zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, zrtp_session_info.sas_is_verified ^ 1); + zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, (uint8_t)(zrtp_session_info.sas_is_verified ^ 1)); } } } @@ -803,7 +803,7 @@ static void zrtp_event_callback(zrtp_stream_t *stream, zrtp_security_event_t eve if (zrtp_status_ok == zrtp_session_get(stream->session, &zrtp_session_info)) { if (zrtp_session_info.sas_is_ready) { - zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, zrtp_session_info.sas_is_verified ^ 1); + zrtp_verified_set(zrtp_global, &stream->session->zid, &stream->session->peer_zid, (uint8_t)(zrtp_session_info.sas_is_verified ^ 1)); } } } @@ -3645,7 +3645,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp switch_clear_flag(other_rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_RECV); switch_clear_flag(other_rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_SEND); zrtp_verified_set(zrtp_global, &rtp_session->zrtp_session->zid, - &rtp_session->zrtp_session->peer_zid, zrtp_session_info.sas_is_verified ^ 1); + &rtp_session->zrtp_session->peer_zid, (uint8_t)(zrtp_session_info.sas_is_verified ^ 1)); rtp_session->zrtp_mitm_tries++; } } @@ -4275,7 +4275,7 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra switch_clear_flag(other_rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_RECV); switch_clear_flag(other_rtp_session, SWITCH_ZRTP_FLAG_SECURE_MITM_SEND); zrtp_verified_set(zrtp_global, &rtp_session->zrtp_session->zid, - &rtp_session->zrtp_session->peer_zid, zrtp_session_info.sas_is_verified ^ 1); + &rtp_session->zrtp_session->peer_zid, (uint8_t)(zrtp_session_info.sas_is_verified ^ 1)); rtp_session->zrtp_mitm_tries++; } rtp_session->zrtp_mitm_tries++; From d5484651ce473636fcfb5ecc2a4289c4645319ca Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 17 May 2012 06:13:32 +0000 Subject: [PATCH 543/630] squelch a Windows VS warning about null termination on the ZID According Jeff Lenk, Windows Visual Studio doesn't understand that people use the char type for non-null-terminated byte arrays, so it throws a warning about this that causes the build to fail on Windows. As the initial value for the ZID doesn't really matter here one iota, just null-terminate it on Windows. --- src/switch_rtp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 9c42520ff9..c4030148aa 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -73,7 +73,11 @@ typedef srtp_hdr_t rtp_hdr_t; #ifdef ENABLE_ZRTP #include "zrtp.h" static zrtp_global_t *zrtp_global; +#ifndef WIN32 static zrtp_zid_t zid = { "FreeSWITCH01" }; +#else +static zrtp_zid_t zid = { "FreeSWITCH0\0" }; +#endif static int zrtp_on = 0; #define ZRTP_MITM_TRIES 100 #endif From b65c32119373a000f93ed7d974fc95b9c4c01dcc Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 17 May 2012 08:38:11 -0500 Subject: [PATCH 544/630] FS-4228 --resolve add zrtp support to windows vs2010 build --- Freeswitch.2010.sln | 20 ++ .../libzrtp/projects/win/libzrtp.2010.vcxproj | 250 +++++++++++++++++ .../projects/win/libzrtp.2010.vcxproj.filters | 256 ++++++++++++++++++ libs/libzrtp/third_party/bnlib/bnconfig.win | 76 ++++++ libs/libzrtp/third_party/bnlib/lbn.h | 6 + src/switch_rtp.c | 2 +- w32/Library/FreeSwitchCore.2010.vcxproj | 19 +- 7 files changed, 620 insertions(+), 9 deletions(-) create mode 100644 libs/libzrtp/projects/win/libzrtp.2010.vcxproj create mode 100644 libs/libzrtp/projects/win/libzrtp.2010.vcxproj.filters create mode 100644 libs/libzrtp/third_party/bnlib/bnconfig.win diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln index e7cccee08c..954ce1cc1b 100644 --- a/Freeswitch.2010.sln +++ b/Freeswitch.2010.sln @@ -525,6 +525,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2010.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzrtp", "libs\libzrtp\projects\win\libzrtp.2010.vcxproj", "{C13CC324-0032-4492-9A30-310A6BD64FF5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Win32 = All|Win32 @@ -3574,6 +3576,23 @@ Global {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64 {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64 Setup.ActiveCfg = Release|x64 {74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x86 Setup.ActiveCfg = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.Build.0 = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64 Setup.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x86 Setup.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.ActiveCfg = Debug|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.Build.0 = Debug|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.ActiveCfg = Debug|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.Build.0 = Debug|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64 Setup.ActiveCfg = Debug|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x86 Setup.ActiveCfg = Debug|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.Build.0 = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.ActiveCfg = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.Build.0 = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64 Setup.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x86 Setup.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3687,6 +3706,7 @@ Global {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {C13CC324-0032-4492-9A30-310A6BD64FF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC} {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000} {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000} diff --git a/libs/libzrtp/projects/win/libzrtp.2010.vcxproj b/libs/libzrtp/projects/win/libzrtp.2010.vcxproj new file mode 100644 index 0000000000..3306611920 --- /dev/null +++ b/libs/libzrtp/projects/win/libzrtp.2010.vcxproj @@ -0,0 +1,250 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C13CC324-0032-4492-9A30-310A6BD64FF5} + libzrtp.x32 + Win32Proj + libzrtp + + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + StaticLibrary + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + AllRules.ruleset + AllRules.ruleset + + + + + AllRules.ruleset + AllRules.ruleset + + + + + + + + Disabled + ../../include;../../third_party/bnlib;../../third_party/bgaes;../../test/include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=0;ZRTP_USE_BUILTIN_CACHE=1;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Default + + + Level3 + ProgramDatabase + CompileAsC + + + + if not exist "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" copy "$(ProjectDir)..\..\third_party\bnlib\bnconfig.win" "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" + + + + + Disabled + ../../include;../../third_party/bnlib;../../third_party/bgaes;../../test/include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=0;ZRTP_USE_BUILTIN_CACHE=1;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + Default + + + Level3 + ProgramDatabase + CompileAsC + + + + if not exist "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" copy "$(ProjectDir)..\..\third_party\bnlib\bnconfig.win" "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" + + + + + ../../include;../../third_party/bnlib;../../third_party/bgaes;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=0;ZRTP_USE_BUILTIN_CACHE=1;%(PreprocessorDefinitions) + + + MultiThreadedDLL + Default + false + + + Level3 + ProgramDatabase + CompileAsC + + + + if not exist "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" copy "$(ProjectDir)..\..\third_party\bnlib\bnconfig.win" "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" + + + + + ../../include;../../third_party/bnlib;../../third_party/bgaes;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;HAVE_CONFIG_H=1;ZRTP_ENABLE_EC=0;ZRTP_USE_BUILTIN_CACHE=1;%(PreprocessorDefinitions) + + + MultiThreadedDLL + Default + false + + + Level3 + ProgramDatabase + CompileAsC + + + + if not exist "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" copy "$(ProjectDir)..\..\third_party\bnlib\bnconfig.win" "$(ProjectDir)..\..\third_party\bnlib\bnconfig.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libs/libzrtp/projects/win/libzrtp.2010.vcxproj.filters b/libs/libzrtp/projects/win/libzrtp.2010.vcxproj.filters new file mode 100644 index 0000000000..4bae11a1dd --- /dev/null +++ b/libs/libzrtp/projects/win/libzrtp.2010.vcxproj.filters @@ -0,0 +1,256 @@ + + + + + {c0e76076-0032-445d-8c07-32b6c762622b} + + + {a03c0d83-0032-4848-9704-22cdce5ab144} + + + {dbe8a34e-0032-495e-8df7-e82218921e60} + + + {96d1a5c9-0032-4230-a764-a0ed11f434a7} + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bnlib + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + bgaes + + + + + + + \ No newline at end of file diff --git a/libs/libzrtp/third_party/bnlib/bnconfig.win b/libs/libzrtp/third_party/bnlib/bnconfig.win new file mode 100644 index 0000000000..303a25b689 --- /dev/null +++ b/libs/libzrtp/third_party/bnlib/bnconfig.win @@ -0,0 +1,76 @@ +/* + * Copyright (c) 1995 Colin Plumb. All rights reserved. + * For licensing and other legal details, see the file legal.c. + * + * bnconfig.h -- Configuration file for BigNum library. + * + * This file is automatically filled in by configure. + * Everything must start out turned *off*, because configure + * (or, more properly, config.status) only knows how to turn them + * *on*. + */ +#ifndef CONFIG_H +#define CONFIG_H + +/* Define to empty if the compiler does not support 'const' variables. */ +#undef const + +/* Define to `unsigned' if doesn't define it. */ +#undef size_t + +/* Checks for the presence and absence of various header files */ +#define HAVE_ASSERT_H 1 +#define NO_ASSERT_H !HAVE_ASSERT_H +#define HAVE_LIMITS_H 1 +#define NO_LIMITS_H !HAVE_LIMITS_H +#define HAVE_STDLIB_H 1 +#define NO_STDLIB_H !HAVE_STDLIB_H +#define HAVE_STRING_H 1 +#define NO_STRING_H !HAVE_STRING_H + +#define HAVE_STRINGS_H 0 +#define NEED_MEMORY_H 0 + +/* We go to some trouble to find accurate times... */ + +/* Define if you have Posix.4 glock_gettime() */ +#define HAVE_CLOCK_GETTIME 0 +/* Define if you have Solaris-style gethrvtime() */ +#define HAVE_GETHRVTIME 0 +/* Define if you have getrusage() */ +#define HAVE_GETRUSAGE 0 +/* Define if you have clock() */ +#define HAVE_CLOCK 0 +/* Define if you have time() */ +#define HAVE_TIME 0 + +/* + * Define as 0 if #including automatically + * #includes , and doing so explicitly causes an + * error. + */ +#define TIME_WITH_SYS_TIME 0 + +/* Defines for various kinds of library brokenness */ + +/* Define if is missing prototypes (= lots of warnings!) */ +#define NO_STDIO_PROTOS 0 + +/* Define if depends on and breaks without it */ +#define ASSERT_NEEDS_STDIO 0 +/* Define if depends on and complains without it */ +#define ASSERT_NEEDS_STDLIB 0 + +/* + * Define if delcares the mem* functions to take char * + * instead of void * parameters (= lots of warnings) + */ +#define MEM_PROTOS_BROKEN 0 + +/* If not available, bcopy() is substituted */ +#define HAVE_MEMMOVE 1 +#define NO_MEMMOVE !HAVE_MEMMOVE +#define HAVE_MEMCPY 1 +#define NO_MEMCPY !HAVE_MEMCPY + +#endif /* CONFIG_H */ diff --git a/libs/libzrtp/third_party/bnlib/lbn.h b/libs/libzrtp/third_party/bnlib/lbn.h index b0fd21cfb5..43fc7c91dc 100644 --- a/libs/libzrtp/third_party/bnlib/lbn.h +++ b/libs/libzrtp/third_party/bnlib/lbn.h @@ -145,6 +145,12 @@ typedef unsigned long long bnword64; #define BNWORD64 bnword64 #endif +/*Workaround for windows for now. */ +#ifdef WIN32 +typedef unsigned long long bnword64; +#define BNWORD64 bnword64 +#endif + /* We don't even try to find a 128-bit type at the moment */ #endif /* !LBN_H */ diff --git a/src/switch_rtp.c b/src/switch_rtp.c index c4030148aa..481bd54e84 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -76,7 +76,7 @@ static zrtp_global_t *zrtp_global; #ifndef WIN32 static zrtp_zid_t zid = { "FreeSWITCH01" }; #else -static zrtp_zid_t zid = { "FreeSWITCH0\0" }; +static zrtp_zid_t zid = { "FreeSWITCH0" }; #endif static int zrtp_on = 0; #define ZRTP_MITM_TRIES 100 diff --git a/w32/Library/FreeSwitchCore.2010.vcxproj b/w32/Library/FreeSwitchCore.2010.vcxproj index 94b5dbc55a..eb1933a7f6 100644 --- a/w32/Library/FreeSwitchCore.2010.vcxproj +++ b/w32/Library/FreeSwitchCore.2010.vcxproj @@ -88,8 +88,8 @@ Disabled - ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC;STATICLIB;%(PreprocessorDefinitions) + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;..\..\libs\libzrtp\include;..\..\libs\libzrtp\third_party\bgaes;..\..\libs\libzrtp\third_party\bnlib;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC;STATICLIB;ENABLE_ZRTP;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL @@ -146,8 +146,8 @@ if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs Disabled - ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC;STATICLIB;%(PreprocessorDefinitions) + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;..\..\libs\libzrtp\include;..\..\libs\libzrtp\third_party\bgaes;..\..\libs\libzrtp\third_party\bnlib;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC;STATICLIB;ENABLE_ZRTP;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL @@ -198,8 +198,8 @@ if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs MaxSpeed - ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;STATICLIB;CRASH_PROT;PCRE_STATIC;%(PreprocessorDefinitions) + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;..\..\libs\libzrtp\include;..\..\libs\libzrtp\third_party\bgaes;..\..\libs\libzrtp\third_party\bnlib;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;STATICLIB;CRASH_PROT;PCRE_STATIC;ENABLE_ZRTP;%(PreprocessorDefinitions) MultiThreadedDLL Use switch.h @@ -247,8 +247,8 @@ if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs MaxSpeed - ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;STATICLIB;CRASH_PROT;PCRE_STATIC;%(PreprocessorDefinitions) + ..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre;..\..\libs\stfu;..\..\libs\speex\include;..\..\libs\spandsp\src\msvc;..\..\libs\spandsp\src;..\..\libs\tiff-3.8.2\libtiff;..\..\libs\libzrtp\include;..\..\libs\libzrtp\third_party\bgaes;..\..\libs\libzrtp\third_party\bnlib;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;STATICLIB;CRASH_PROT;PCRE_STATIC;ENABLE_ZRTP;%(PreprocessorDefinitions) MultiThreadedDLL Use switch.h @@ -766,6 +766,9 @@ if not exist "$(OutDir)htdocs" xcopy "$(SolutionDir)htdocs\*.*" "$(OutDir)htdocs {89385c74-5860-4174-9caf-a39e7c48909c} false + + {c13cc324-0032-4492-9a30-310a6bd64ff5} + {1cbb0077-18c5-455f-801c-0a0ce7b0bbf5} From 021f48d02ec06d27d43d440fa3e9574aa06e3ff6 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 17 May 2012 10:28:51 -0500 Subject: [PATCH 545/630] FS-4169 --resolve compiler warning for solaris --- src/switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch.c b/src/switch.c index a3f8759d8c..189eea40cf 100644 --- a/src/switch.c +++ b/src/switch.c @@ -288,7 +288,7 @@ void daemonize(int do_wait) while(--sanity && !system_ready) { if (sanity % 2 == 0) { - printf("FreeSWITCH[%d] Waiting for background process pid:%d to be ready.....\n", getpid(), (int) pid); + printf("FreeSWITCH[%d] Waiting for background process pid:%d to be ready.....\n", (int)getpid(), (int) pid); } sleep(1); } From 92eb698ddc4c683a6e85cac4584f8aa7e576b9c0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 17 May 2012 11:27:57 -0500 Subject: [PATCH 546/630] FS-4231 --resolve declinatio mortuus obfirmo! --- src/mod/endpoints/mod_sofia/sofia_presence.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 5965c54cd8..be360520ea 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -3419,9 +3419,8 @@ void sofia_presence_handle_sip_i_subscribe(int status, "sub del sql: %s\n", sql); } - switch_mutex_lock(profile->ireg_mutex); switch_assert(sql != NULL); - sofia_glue_actually_execute_sql(profile, sql, NULL); + sofia_glue_actually_execute_sql(profile, sql, profile->ireg_mutex); switch_safe_free(sql); sstr = switch_mprintf("terminated;reason=noresource"); @@ -3460,7 +3459,6 @@ void sofia_presence_handle_sip_i_subscribe(int status, sstr = switch_mprintf("active;expires=%ld", exp_delta); } - switch_mutex_unlock(profile->ireg_mutex); } if (status < 200) { From 83e090c30d8851ba0ee42540e9a943541d00070d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 17 May 2012 16:24:56 +0000 Subject: [PATCH 547/630] add some casts to make things work with both gcc and VS This amends commit 7bd9efc7f52a725b7ef9efb64b65873b4bc4330b. Using the more explicit typedef causes gcc to warn about the incompatible types for the reasons noted in the earlier commit message. This is why we just used the unsigned type earlier so we could avoid all this casting. The things we do to make Windows happy... --- src/switch_rtp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 481bd54e84..be7f180fcd 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -864,9 +864,9 @@ SWITCH_DECLARE(void) switch_rtp_init(switch_memory_pool_t *pool) zrtp_zstrcpyc((zrtp_stringn_t*)zrtp_config.def_cache_path.buffer, zrtp_cache_path); zrtp_config.def_cache_path.length = (uint16_t)strlen(zrtp_cache_path); zrtp_config.def_cache_path.max_length = 255; - zrtp_config.cb.event_cb.on_zrtp_protocol_event = zrtp_event_callback; + zrtp_config.cb.event_cb.on_zrtp_protocol_event = (void (*)(zrtp_stream_t*,zrtp_protocol_event_t))zrtp_event_callback; zrtp_config.cb.misc_cb.on_send_packet = zrtp_send_rtp_callback; - zrtp_config.cb.event_cb.on_zrtp_security_event = zrtp_event_callback; + zrtp_config.cb.event_cb.on_zrtp_security_event = (void (*)(zrtp_stream_t*,zrtp_security_event_t))zrtp_event_callback; zrtp_log_set_log_engine((zrtp_log_engine *) zrtp_logger); zrtp_log_set_level(4); From ad7149bfa6c924ad7c36dea5611a00b39f4416b3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 17 May 2012 18:57:22 -0500 Subject: [PATCH 548/630] allow mod loopback bowout to reach out across stacked loopback bridges and remove all of them --- src/mod/endpoints/mod_loopback/mod_loopback.c | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index 9ad780f838..200d6e5b71 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -650,6 +650,39 @@ static switch_status_t channel_read_frame(switch_core_session_t *session, switch return status; } +static switch_status_t find_non_loopback_bridge(switch_core_session_t *session, switch_core_session_t **br_session, const char **br_uuid) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + const char *a_uuid; + switch_core_session_t *sp; + + *br_session = NULL; + *br_uuid = NULL; + + a_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + + while (a_uuid && (sp = switch_core_session_locate(a_uuid))) { + if (switch_core_session_check_interface(sp, loopback_endpoint_interface)) { + private_t *tech_pvt = switch_core_session_get_private(sp); + + a_uuid = switch_channel_get_variable(tech_pvt->other_channel, SWITCH_SIGNAL_BOND_VARIABLE); + switch_core_session_rwunlock(sp); + sp = NULL; + } else { + break; + } + } + + if (sp) { + *br_session = sp; + *br_uuid = a_uuid; + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_FALSE; + +} + static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_channel_t *channel = NULL; @@ -678,8 +711,8 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc switch_channel_test_flag(tech_pvt->other_channel, CF_BRIDGED) && switch_channel_test_flag(tech_pvt->channel, CF_ANSWERED) && switch_channel_test_flag(tech_pvt->other_channel, CF_ANSWERED) && --tech_pvt->bowout_frame_count <= 0) { - const char *a_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); - const char *b_uuid = switch_channel_get_variable(tech_pvt->other_channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *a_uuid = NULL; + const char *b_uuid = NULL; const char *vetoa, *vetob; @@ -690,16 +723,21 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc switch_core_session_t *br_a, *br_b; switch_channel_t *ch_a = NULL, *ch_b = NULL; int good_to_go = 0; + + find_non_loopback_bridge(session, &br_a, &a_uuid); + find_non_loopback_bridge(tech_pvt->other_session, &br_b, &b_uuid); + - if ((br_a = switch_core_session_locate(a_uuid))) { + if (br_a) { ch_a = switch_core_session_get_channel(br_a); } - if ((br_b = switch_core_session_locate(b_uuid))) { + if (br_b) { ch_b = switch_core_session_get_channel(br_b); } if (ch_a && ch_b && switch_channel_test_flag(ch_a, CF_BRIDGED) && switch_channel_test_flag(ch_b, CF_BRIDGED)) { + switch_set_flag_locked(tech_pvt, TFLAG_BOWOUT); switch_set_flag_locked(tech_pvt->other_tech_pvt, TFLAG_BOWOUT); From b117a65c5035cf43e00d5e5add58162f85dfecef Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 17 May 2012 19:57:02 -0500 Subject: [PATCH 549/630] put a little contention in the reg in new thread feature to prevent endless pileup --- src/mod/endpoints/mod_sofia/sofia.c | 4 +++- src/switch_core.c | 2 +- src/switch_core_sqldb.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index d7dac7581b..0e579ca1f8 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1306,6 +1306,7 @@ void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) switch_threadattr_t *thd_attr = NULL; switch_memory_pool_t *pool; switch_thread_t *thread; + sofia_profile_t *profile = (*dep)->profile; switch_core_new_memory_pool(&pool); @@ -1313,6 +1314,7 @@ void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) *dep = NULL; de->pool = pool; + switch_mutex_lock(profile->ireg_mutex); switch_threadattr_create(&thd_attr, de->pool); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); switch_thread_create(&thread, @@ -1320,7 +1322,7 @@ void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) sofia_msg_thread_run_once, de, de->pool); - + switch_mutex_unlock(profile->ireg_mutex); } diff --git a/src/switch_core.c b/src/switch_core.c index 8139f8ccf8..f89aeb5ee2 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1420,7 +1420,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc gethostname(runtime.hostname, sizeof(runtime.hostname)); runtime.max_db_handles = 50; - runtime.db_handle_timeout = 5000000;; + runtime.db_handle_timeout = 5000000; runtime.runlevel++; runtime.sql_buffer_len = 1024 * 32; diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 5c59d96962..85d38160ed 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -218,7 +218,7 @@ SWITCH_DECLARE(switch_status_t) _switch_core_db_handle(switch_cache_db_handle_t } -#define SQL_CACHE_TIMEOUT 120 +#define SQL_CACHE_TIMEOUT 30 #define SQL_REG_TIMEOUT 15 From bbdcd33bde0e9aef0325aa4d93a62c7caa79c36c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 17 May 2012 20:10:53 -0500 Subject: [PATCH 550/630] performance tweaks for sip message parsing and event system --- src/include/switch_core.h | 2 + src/mod/endpoints/mod_sofia/mod_sofia.c | 12 +- src/mod/endpoints/mod_sofia/mod_sofia.h | 4 +- src/mod/endpoints/mod_sofia/sofia.c | 92 ++++++++---- src/switch_channel.c | 2 +- src/switch_event.c | 190 ++++++++---------------- src/switch_time.c | 8 +- 7 files changed, 137 insertions(+), 173 deletions(-) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 8f9220d0b9..9803c6708b 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -2329,6 +2329,8 @@ SWITCH_DECLARE(void) switch_say_file(switch_say_file_handle_t *sh, const char *f SWITCH_DECLARE(int) switch_max_file_desc(void); SWITCH_DECLARE(void) switch_close_extra_files(int *keep, int keep_ttl); SWITCH_DECLARE(switch_status_t) switch_core_thread_set_cpu_affinity(int cpu); +SWITCH_DECLARE(void) switch_os_yield(void); + SWITCH_END_EXTERN_C #endif /* For Emacs: diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 164d0e76ff..6f64078509 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -5445,7 +5445,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) switch_yield(1500000); mod_sofia_globals.cpu_count = switch_core_cpu_count(); - mod_sofia_globals.max_msg_queues = mod_sofia_globals.cpu_count + 1; + mod_sofia_globals.max_msg_queues = (mod_sofia_globals.cpu_count / 2) + 1; + if (mod_sofia_globals.max_msg_queues < 2) { + mod_sofia_globals.max_msg_queues = 2; + } if (mod_sofia_globals.max_msg_queues > SOFIA_MAX_MSG_QUEUE) { mod_sofia_globals.max_msg_queues = SOFIA_MAX_MSG_QUEUE; @@ -5627,11 +5630,12 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_sofia_shutdown) } - for (i = 0; i < mod_sofia_globals.msg_queue_len; i++) { - switch_queue_push(mod_sofia_globals.msg_queue[i], NULL); + for (i = 0; mod_sofia_globals.msg_queue_thread[i]; i++) { + switch_queue_push(mod_sofia_globals.msg_queue, NULL); } - for (i = 0; i < mod_sofia_globals.msg_queue_len; i++) { + + for (i = 0; mod_sofia_globals.msg_queue_thread[i]; i++) { switch_status_t st; switch_thread_join(&st, mod_sofia_globals.msg_queue_thread[i]); } diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index b96ff52011..c0fc7dfba4 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -342,7 +342,7 @@ typedef enum { } TFLAGS; #define SOFIA_MAX_MSG_QUEUE 64 -#define SOFIA_MSG_QUEUE_SIZE 250 +#define SOFIA_MSG_QUEUE_SIZE 100 struct mod_sofia_globals { switch_memory_pool_t *pool; @@ -359,7 +359,7 @@ struct mod_sofia_globals { char hostname[512]; switch_queue_t *presence_queue; switch_queue_t *mwi_queue; - switch_queue_t *msg_queue[SOFIA_MAX_MSG_QUEUE]; + switch_queue_t *msg_queue; switch_thread_t *msg_queue_thread[SOFIA_MAX_MSG_QUEUE]; int msg_queue_len; struct sofia_private destroy_private; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 0e579ca1f8..8eb122b310 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1347,34 +1347,56 @@ void sofia_process_dispatch_event(sofia_dispatch_event_t **dep) nua_handle_unref(nh); nua_stack_unref(nua); + switch_os_yield(); } + +static int msg_queue_threads = 0; +//static int count = 0; + void *SWITCH_THREAD_FUNC sofia_msg_thread_run(switch_thread_t *thread, void *obj) { void *pop; switch_queue_t *q = (switch_queue_t *) obj; int my_id; + for (my_id = 0; my_id < mod_sofia_globals.msg_queue_len; my_id++) { - if (mod_sofia_globals.msg_queue[my_id] == q) { + if (mod_sofia_globals.msg_queue_thread[my_id] == thread) { + break; + } + } + + switch_mutex_lock(mod_sofia_globals.mutex); + msg_queue_threads++; + switch_mutex_unlock(mod_sofia_globals.mutex); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "MSG Thread %d Started\n", my_id); + + + for(;;) { + + if (switch_queue_pop(q, &pop) != SWITCH_STATUS_SUCCESS) { + switch_cond_next(); + continue; + } + + if (pop) { + sofia_dispatch_event_t *de = (sofia_dispatch_event_t *) pop; + sofia_process_dispatch_event(&de); + switch_os_yield(); + } else { break; } } - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "MSG Thread %d Started\n", my_id); - - switch_core_thread_set_cpu_affinity(my_id); - - while(switch_queue_pop(q, &pop) == SWITCH_STATUS_SUCCESS && pop) { - sofia_dispatch_event_t *de = (sofia_dispatch_event_t *) pop; - sofia_process_dispatch_event(&de); - switch_cond_next(); - } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "MSG Thread Ended\n"); + switch_mutex_lock(mod_sofia_globals.mutex); + msg_queue_threads--; + switch_mutex_unlock(mod_sofia_globals.mutex); + return NULL; } @@ -1392,11 +1414,14 @@ void sofia_msg_thread_start(int idx) int i; mod_sofia_globals.msg_queue_len = idx + 1; - for (i = 0; i < mod_sofia_globals.msg_queue_len; i++) { - if (!mod_sofia_globals.msg_queue[i]) { - switch_threadattr_t *thd_attr = NULL; + if (!mod_sofia_globals.msg_queue) { + switch_queue_create(&mod_sofia_globals.msg_queue, SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.cpu_count, mod_sofia_globals.pool); + } - switch_queue_create(&mod_sofia_globals.msg_queue[i], SOFIA_MSG_QUEUE_SIZE, mod_sofia_globals.pool); + + for (i = 0; i < mod_sofia_globals.msg_queue_len; i++) { + if (!mod_sofia_globals.msg_queue_thread[i]) { + switch_threadattr_t *thd_attr = NULL; switch_threadattr_create(&thd_attr, mod_sofia_globals.pool); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); @@ -1404,7 +1429,7 @@ void sofia_msg_thread_start(int idx) switch_thread_create(&mod_sofia_globals.msg_queue_thread[i], thd_attr, sofia_msg_thread_run, - mod_sofia_globals.msg_queue[i], + mod_sofia_globals.msg_queue, mod_sofia_globals.pool); } } @@ -1413,12 +1438,12 @@ void sofia_msg_thread_start(int idx) switch_mutex_unlock(mod_sofia_globals.mutex); } - +//static int foo = 0; static void sofia_queue_message(sofia_dispatch_event_t *de) { - int idx = 0, queued = 0; + int launch = 0; - if (mod_sofia_globals.running == 0 || !mod_sofia_globals.msg_queue[0]) { + if (mod_sofia_globals.running == 0 || !mod_sofia_globals.msg_queue) { sofia_process_dispatch_event(&de); return; } @@ -1430,25 +1455,18 @@ static void sofia_queue_message(sofia_dispatch_event_t *de) } - again: - - for (idx = 0; idx < mod_sofia_globals.msg_queue_len; idx++) { - if (switch_queue_trypush(mod_sofia_globals.msg_queue[idx], de) == SWITCH_STATUS_SUCCESS) { - queued++; - break; - } + if ((switch_queue_size(mod_sofia_globals.msg_queue) > (SOFIA_MSG_QUEUE_SIZE * msg_queue_threads))) { + launch++; } - if (!queued) { + if (launch) { if (mod_sofia_globals.msg_queue_len < mod_sofia_globals.max_msg_queues) { sofia_msg_thread_start(mod_sofia_globals.msg_queue_len + 1); - goto again; } - - switch_queue_push(mod_sofia_globals.msg_queue[0], de); } - + + switch_queue_push(mod_sofia_globals.msg_queue, de); } @@ -1468,6 +1486,7 @@ void sofia_event_callback(nua_event_t event, return; } + switch_mutex_lock(profile->flag_mutex); profile->queued_events++; @@ -1483,6 +1502,13 @@ void sofia_event_callback(nua_event_t event, de->nua = nua_stack_ref(nua); if (event == nua_i_invite && !sofia_private) { + int critical = (((SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.max_msg_queues) * 900) / 1000); + + if (switch_queue_size(mod_sofia_globals.msg_queue) > critical) { + nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END()); + return; + } + if (!(sofia_private = su_alloc(nh->nh_home, sizeof(*sofia_private)))) { abort(); } @@ -1516,8 +1542,8 @@ void sofia_event_callback(nua_event_t event, } } - sofia_queue_message(de); + switch_os_yield(); } diff --git a/src/switch_channel.c b/src/switch_channel.c index f7d7e3aae4..7afe342103 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -1415,7 +1415,7 @@ SWITCH_DECLARE(void) switch_channel_wait_for_state(switch_channel_t *channel, sw (other_channel && switch_channel_down_nosig(other_channel)) || switch_channel_down(channel)) { break; } - switch_yield(20000); + switch_cond_next(); } } diff --git a/src/switch_event.c b/src/switch_event.c index 23670fac93..38ec16bf26 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -35,7 +35,7 @@ #include #include //#define SWITCH_EVENT_RECYCLE -#define DISPATCH_QUEUE_LEN 1000 +#define DISPATCH_QUEUE_LEN 100 //#define DEBUG_DISPATCH_QUEUES /*! \brief A node to store binded events */ @@ -74,23 +74,20 @@ static switch_mutex_t *BLOCK = NULL; static switch_mutex_t *POOL_LOCK = NULL; static switch_memory_pool_t *RUNTIME_POOL = NULL; static switch_memory_pool_t *THRUNTIME_POOL = NULL; -#define NUMBER_OF_QUEUES 3 -static switch_thread_t *EVENT_QUEUE_THREADS[NUMBER_OF_QUEUES] = { 0 }; -static switch_queue_t *EVENT_QUEUE[NUMBER_OF_QUEUES] = { 0 }; static switch_thread_t *EVENT_DISPATCH_QUEUE_THREADS[MAX_DISPATCH_VAL] = { 0 }; static uint8_t EVENT_DISPATCH_QUEUE_RUNNING[MAX_DISPATCH_VAL] = { 0 }; -static switch_queue_t *EVENT_DISPATCH_QUEUE[MAX_DISPATCH_VAL] = { 0 }; -static int POOL_COUNT_MAX = SWITCH_CORE_QUEUE_LEN; +static switch_queue_t *EVENT_DISPATCH_QUEUE = NULL; static switch_mutex_t *EVENT_QUEUE_MUTEX = NULL; static switch_hash_t *CUSTOM_HASH = NULL; static int THREAD_COUNT = 0; +static int DISPATCH_THREAD_COUNT = 0; static int SYSTEM_RUNNING = 0; static uint64_t EVENT_SEQUENCE_NR = 0; #ifdef SWITCH_EVENT_RECYCLE static switch_queue_t *EVENT_RECYCLE_QUEUE = NULL; static switch_queue_t *EVENT_HEADER_RECYCLE_QUEUE = NULL; #endif -static void launch_dispatch_threads(uint32_t max, int len, switch_memory_pool_t *pool); +static void launch_dispatch_threads(uint32_t max, switch_memory_pool_t *pool); static char *my_dup(const char *s) { @@ -244,9 +241,10 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th switch_mutex_lock(EVENT_QUEUE_MUTEX); THREAD_COUNT++; + DISPATCH_THREAD_COUNT++; - for (my_id = 0; my_id < NUMBER_OF_QUEUES; my_id++) { - if (EVENT_DISPATCH_QUEUE[my_id] == queue) { + for (my_id = 0; my_id < MAX_DISPATCH_VAL; my_id++) { + if (EVENT_DISPATCH_QUEUE_THREADS[my_id] == thread) { break; } } @@ -254,7 +252,6 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th EVENT_DISPATCH_QUEUE_RUNNING[my_id] = 1; switch_mutex_unlock(EVENT_QUEUE_MUTEX); - switch_core_thread_set_cpu_affinity(my_id); for (;;) { void *pop = NULL; @@ -265,7 +262,7 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th } if (switch_queue_pop(queue, &pop) != SWITCH_STATUS_SUCCESS) { - break; + continue; } if (!pop) { @@ -280,6 +277,7 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th switch_mutex_lock(EVENT_QUEUE_MUTEX); EVENT_DISPATCH_QUEUE_RUNNING[my_id] = 0; THREAD_COUNT--; + DISPATCH_THREAD_COUNT--; switch_mutex_unlock(EVENT_QUEUE_MUTEX); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Dispatch Thread %d Ended.\n", my_id); @@ -287,74 +285,41 @@ static void *SWITCH_THREAD_FUNC switch_event_dispatch_thread(switch_thread_t *th } - -static void *SWITCH_THREAD_FUNC switch_event_thread(switch_thread_t *thread, void *obj) +static switch_status_t switch_event_queue_dispatch_event(switch_event_t **eventp) { - switch_queue_t *queue = (switch_queue_t *) obj; - uint32_t index = 0; - int my_id = 0; - switch_mutex_lock(EVENT_QUEUE_MUTEX); - THREAD_COUNT++; - switch_mutex_unlock(EVENT_QUEUE_MUTEX); + switch_event_t *event = *eventp; - for (my_id = 0; my_id < NUMBER_OF_QUEUES; my_id++) { - if (EVENT_QUEUE[my_id] == queue) { - break; - } + if (!SYSTEM_RUNNING) { + return SWITCH_STATUS_FALSE; } + + while (event) { + int launch = 0; - for (;;) { - void *pop = NULL; - switch_event_t *event = NULL; + switch_mutex_lock(EVENT_QUEUE_MUTEX); - if (switch_queue_pop(queue, &pop) != SWITCH_STATUS_SUCCESS) { - break; + if (switch_queue_size(EVENT_DISPATCH_QUEUE) > (DISPATCH_QUEUE_LEN * DISPATCH_THREAD_COUNT)) { + launch++; } - - if (!pop) { - break; - } - - if (!SYSTEM_RUNNING) { - break; - } - - event = (switch_event_t *) pop; - - while (event) { - - for (index = 0; index < SOFT_MAX_DISPATCH; index++) { - if (switch_queue_trypush(EVENT_DISPATCH_QUEUE[index], event) == SWITCH_STATUS_SUCCESS) { - event = NULL; - break; - } - } - - if (event) { - if (SOFT_MAX_DISPATCH + 1 < MAX_DISPATCH) { - switch_mutex_lock(EVENT_QUEUE_MUTEX); - launch_dispatch_threads(SOFT_MAX_DISPATCH + 1, DISPATCH_QUEUE_LEN, RUNTIME_POOL); - switch_mutex_unlock(EVENT_QUEUE_MUTEX); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Event Thread %d is blocking\n", my_id); - switch_queue_push(EVENT_DISPATCH_QUEUE[0], event); - event = NULL; - } + + if (launch) { + if (SOFT_MAX_DISPATCH + 1 < MAX_DISPATCH) { + launch_dispatch_threads(SOFT_MAX_DISPATCH + 1, RUNTIME_POOL); } } + + switch_mutex_unlock(EVENT_QUEUE_MUTEX); + + *eventp = NULL; + switch_queue_push(EVENT_DISPATCH_QUEUE, event); + event = NULL; + } - - switch_mutex_lock(EVENT_QUEUE_MUTEX); - THREAD_COUNT--; - switch_mutex_unlock(EVENT_QUEUE_MUTEX); - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Event Thread %d Ended.\n", my_id); - return NULL; - + + return SWITCH_STATUS_SUCCESS; } - SWITCH_DECLARE(void) switch_event_deliver(switch_event_t **event) { switch_event_types_t e; @@ -499,20 +464,23 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) SYSTEM_RUNNING = 0; switch_mutex_unlock(EVENT_QUEUE_MUTEX); - for (x = 0; x < 3; x++) { - if (EVENT_QUEUE[x]) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping event queue %d\n", x); - switch_queue_trypush(EVENT_QUEUE[x], NULL); - switch_queue_interrupt_all(EVENT_QUEUE[x]); - } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping dispatch queues\n"); + + + for(x = 0; x < DISPATCH_THREAD_COUNT; x++) { + switch_queue_trypush(EVENT_DISPATCH_QUEUE, NULL); } - for (x = 0; x < SOFT_MAX_DISPATCH; x++) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping dispatch queue %d\n", x); - switch_queue_trypush(EVENT_DISPATCH_QUEUE[x], NULL); - switch_queue_interrupt_all(EVENT_DISPATCH_QUEUE[x]); + switch_queue_interrupt_all(EVENT_DISPATCH_QUEUE); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping dispatch threads\n"); + + for(x = 0; x < DISPATCH_THREAD_COUNT; x++) { + switch_status_t st; + switch_thread_join(&st, EVENT_DISPATCH_QUEUE_THREADS[x]); } + x = 0; while (x < 10000 && THREAD_COUNT) { switch_cond_next(); if (THREAD_COUNT == last) { @@ -521,37 +489,16 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) last = THREAD_COUNT; } - for (x = 0; x < SOFT_MAX_DISPATCH; x++) { + { void *pop = NULL; switch_event_t *event = NULL; - switch_status_t st; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping dispatch thread %d\n", x); - switch_thread_join(&st, EVENT_DISPATCH_QUEUE_THREADS[x]); - - while (switch_queue_trypop(EVENT_DISPATCH_QUEUE[x], &pop) == SWITCH_STATUS_SUCCESS && pop) { + while (switch_queue_trypop(EVENT_DISPATCH_QUEUE, &pop) == SWITCH_STATUS_SUCCESS && pop) { event = (switch_event_t *) pop; switch_event_destroy(&event); } } - for (x = 0; x < NUMBER_OF_QUEUES; x++) { - void *pop = NULL; - switch_event_t *event = NULL; - switch_status_t st; - - if (EVENT_QUEUE_THREADS[x]) { - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping queue thread %d\n", x); - switch_thread_join(&st, EVENT_QUEUE_THREADS[x]); - - while (switch_queue_trypop(EVENT_QUEUE[x], &pop) == SWITCH_STATUS_SUCCESS && pop) { - event = (switch_event_t *) pop; - switch_event_destroy(&event); - } - } - } - for (hi = switch_hash_first(NULL, CUSTOM_HASH); hi; hi = switch_hash_next(hi)) { switch_event_subclass_t *subclass; switch_hash_this(hi, &var, NULL, &val); @@ -568,7 +515,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) return SWITCH_STATUS_SUCCESS; } -static void launch_dispatch_threads(uint32_t max, int len, switch_memory_pool_t *pool) +static void launch_dispatch_threads(uint32_t max, switch_memory_pool_t *pool) { switch_threadattr_t *thd_attr; uint32_t index = 0; @@ -584,14 +531,14 @@ static void launch_dispatch_threads(uint32_t max, int len, switch_memory_pool_t } for (index = SOFT_MAX_DISPATCH; index < max && index < MAX_DISPATCH; index++) { - if (EVENT_DISPATCH_QUEUE[index]) { + if (EVENT_DISPATCH_QUEUE_THREADS[index]) { continue; } - switch_queue_create(&EVENT_DISPATCH_QUEUE[index], len, pool); + switch_threadattr_create(&thd_attr, pool); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); switch_threadattr_priority_increase(thd_attr); - switch_thread_create(&EVENT_DISPATCH_QUEUE_THREADS[index], thd_attr, switch_event_dispatch_thread, EVENT_DISPATCH_QUEUE[index], pool); + switch_thread_create(&EVENT_DISPATCH_QUEUE_THREADS[index], thd_attr, switch_event_dispatch_thread, EVENT_DISPATCH_QUEUE, pool); while(--sanity && !EVENT_DISPATCH_QUEUE_RUNNING[index]) switch_yield(10000); if (index == 1) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Create event dispatch thread %d\n", index); @@ -616,8 +563,10 @@ SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) */ /* don't need any more dispatch threads than we have CPU's*/ - MAX_DISPATCH = switch_core_cpu_count() + 1; - + MAX_DISPATCH = (switch_core_cpu_count() / 2) + 1; + if (MAX_DISPATCH < 2) { + MAX_DISPATCH = 2; + } switch_assert(pool != NULL); THRUNTIME_POOL = RUNTIME_POOL = pool; @@ -648,7 +597,9 @@ SWITCH_DECLARE(switch_status_t) switch_event_init(switch_memory_pool_t *pool) //switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); //switch_threadattr_priority_increase(thd_attr); - launch_dispatch_threads(1, DISPATCH_QUEUE_LEN, RUNTIME_POOL); + switch_queue_create(&EVENT_DISPATCH_QUEUE, DISPATCH_QUEUE_LEN * MAX_DISPATCH, pool); + launch_dispatch_threads(1, RUNTIME_POOL); + //switch_thread_create(&EVENT_QUEUE_THREADS[0], thd_attr, switch_event_thread, EVENT_QUEUE[0], RUNTIME_POOL); //switch_thread_create(&EVENT_QUEUE_THREADS[1], thd_attr, switch_event_thread, EVENT_QUEUE[1], RUNTIME_POOL); //switch_thread_create(&EVENT_QUEUE_THREADS[2], thd_attr, switch_event_thread, EVENT_QUEUE[2], RUNTIME_POOL); @@ -1782,30 +1733,11 @@ SWITCH_DECLARE(switch_status_t) switch_event_fire_detailed(const char *file, con (*event)->event_user_data = user_data; } - if (!EVENT_QUEUE_THREADS[(*event)->priority] && (*event)->priority < 3) { - switch_threadattr_t *thd_attr; - - switch_queue_create(&EVENT_QUEUE[(*event)->priority], POOL_COUNT_MAX + 10, THRUNTIME_POOL); - switch_threadattr_create(&thd_attr, THRUNTIME_POOL); - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_threadattr_priority_increase(thd_attr); - switch_thread_create(&EVENT_QUEUE_THREADS[(*event)->priority], thd_attr, switch_event_thread, EVENT_QUEUE[(*event)->priority], RUNTIME_POOL); + if (switch_event_queue_dispatch_event(event) != SWITCH_STATUS_SUCCESS) { + switch_event_destroy(event); + return SWITCH_STATUS_FALSE; } - for (;;) { - if (switch_queue_trypush(EVENT_QUEUE[(*event)->priority], *event) == SWITCH_STATUS_SUCCESS) { - goto end; - } - - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Event queue is full!\n"); - switch_yield(100000); - } - - end: - - *event = NULL; - return SWITCH_STATUS_SUCCESS; } diff --git a/src/switch_time.c b/src/switch_time.c index e7256538f3..381d2dc5ad 100644 --- a/src/switch_time.c +++ b/src/switch_time.c @@ -140,7 +140,7 @@ typedef struct timer_matrix timer_matrix_t; static timer_matrix_t TIMER_MATRIX[MAX_ELEMENTS + 1]; -static void os_yield(void) +SWITCH_DECLARE(void) switch_os_yield(void) { #if defined(WIN32) SwitchToThread(); @@ -467,7 +467,7 @@ SWITCH_DECLARE(void) switch_sleep(switch_interval_time_t t) SWITCH_DECLARE(void) switch_cond_next(void) { if (runtime.tipping_point && globals.timer_count >= runtime.tipping_point) { - os_yield(); + switch_os_yield(); return; } #ifdef DISABLE_1MS_COND @@ -633,7 +633,7 @@ static switch_status_t timer_next(switch_timer_t *timer) check_roll(); if (runtime.tipping_point && globals.timer_count >= runtime.tipping_point) { - os_yield(); + switch_os_yield(); globals.use_cond_yield = 0; } else { if (globals.use_cond_yield == 1) { @@ -884,7 +884,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) } if (runtime.tipping_point && globals.timer_count >= runtime.tipping_point) { - os_yield(); + switch_os_yield(); } else { if (tfd > -1 && globals.RUNNING == 1) { uint64_t exp; From 718a311a41d2c7e93259fd3014e36a7aa4c3da13 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 May 2012 07:52:58 -0500 Subject: [PATCH 551/630] FS-4224 --resolve add optional wait param to sofia profile stop [sofia profile foo stop wait] --- src/mod/endpoints/mod_sofia/mod_sofia.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 6f64078509..8d50a221e8 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -3640,6 +3640,17 @@ static switch_status_t cmd_profile(char **argv, int argc, switch_stream_handle_t if (!strcasecmp(argv[1], "stop")) { sofia_clear_pflag_locked(profile, PFLAG_RUNNING); + if (argv[2] && !strcasecmp(argv[2], "wait")) { + int loops = 20 * 2; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Waiting for %s to finish SIP transactions.\n", profile->name); + while (!sofia_test_pflag(profile, PFLAG_SHUTDOWN)) { + switch_yield(500000); + if (!--loops) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Timeout Waiting for %s to finish SIP transactions.\n", profile->name); + break; + } + } + } stream->write_function(stream, "stopping: %s", profile->name); } else { sofia_set_pflag_locked(profile, PFLAG_RESPAWN); @@ -4129,7 +4140,7 @@ SWITCH_STANDARD_API(sofia_function) "sofia global siptrace \n" "sofia capture \n" " watchdog \n\n" - "sofia profile [start | stop | restart | rescan]\n" + "sofia profile [start | stop | restart | rescan] [wait]\n" " flush_inbound_reg [ | <[user]@domain>] [reboot]\n" " check_sync [ | <[user]@domain>]\n" " [register | unregister] [ | all]\n" @@ -5555,9 +5566,9 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) switch_console_set_complete("add sofia profile"); switch_console_set_complete("add sofia profile restart all"); - + switch_console_set_complete("add sofia profile ::sofia::list_profiles start"); - switch_console_set_complete("add sofia profile ::sofia::list_profiles stop"); + switch_console_set_complete("add sofia profile ::sofia::list_profiles stop wait"); switch_console_set_complete("add sofia profile ::sofia::list_profiles rescan"); switch_console_set_complete("add sofia profile ::sofia::list_profiles restart"); From e32b90306edcc1bee2dc5ae3847e234d1206643e Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Fri, 18 May 2012 11:08:15 -0500 Subject: [PATCH 552/630] build warnings --- src/switch_event.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/switch_event.c b/src/switch_event.c index 38ec16bf26..9a0776efd1 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -299,7 +299,7 @@ static switch_status_t switch_event_queue_dispatch_event(switch_event_t **eventp switch_mutex_lock(EVENT_QUEUE_MUTEX); - if (switch_queue_size(EVENT_DISPATCH_QUEUE) > (DISPATCH_QUEUE_LEN * DISPATCH_THREAD_COUNT)) { + if (switch_queue_size(EVENT_DISPATCH_QUEUE) > (unsigned int)(DISPATCH_QUEUE_LEN * DISPATCH_THREAD_COUNT)) { launch++; } @@ -467,7 +467,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping dispatch queues\n"); - for(x = 0; x < DISPATCH_THREAD_COUNT; x++) { + for(x = 0; x < (uint32_t)DISPATCH_THREAD_COUNT; x++) { switch_queue_trypush(EVENT_DISPATCH_QUEUE, NULL); } @@ -475,7 +475,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_shutdown(void) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping dispatch threads\n"); - for(x = 0; x < DISPATCH_THREAD_COUNT; x++) { + for(x = 0; x < (uint32_t)DISPATCH_THREAD_COUNT; x++) { switch_status_t st; switch_thread_join(&st, EVENT_DISPATCH_QUEUE_THREADS[x]); } From bcd7a1629063889ace9e6607edd92f717f265e3a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 May 2012 10:15:08 -0500 Subject: [PATCH 553/630] indent --- src/mod/endpoints/mod_sofia/sofia_presence.c | 131 ++++++++++--------- 1 file changed, 66 insertions(+), 65 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index be360520ea..fd3a106a58 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -1257,88 +1257,89 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) switch_str_nil(status), switch_str_nil(rpid), host, dh.status,dh.rpid,dh.presence_id, mod_sofia_globals.hostname, profile->name, call_id); - } + } - helper.profile = profile; - helper.event = event; - SWITCH_STANDARD_STREAM(helper.stream); - switch_assert(helper.stream.data); + helper.profile = profile; + helper.event = event; + SWITCH_STANDARD_STREAM(helper.stream); + switch_assert(helper.stream.data); - if (mod_sofia_globals.debug_presence > 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s START_PRESENCE_SQL (%s)\n", - event->event_id == SWITCH_EVENT_PRESENCE_IN ? "IN" : "OUT", profile->name); - } - - if (mod_sofia_globals.debug_presence) { - char *buf; - switch_event_serialize(event, &buf, SWITCH_FALSE); - switch_assert(buf); - if (mod_sofia_globals.debug_presence > 1) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DUMP PRESENCE SQL:\n%s\nEVENT DUMP:\n%s\n", sql, buf); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "EVENT DUMP:\n%s\n", buf); + if (mod_sofia_globals.debug_presence > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s START_PRESENCE_SQL (%s)\n", + event->event_id == SWITCH_EVENT_PRESENCE_IN ? "IN" : "OUT", profile->name); } - free(buf); - } - sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_sub_callback, &helper); - switch_safe_free(sql); + if (mod_sofia_globals.debug_presence) { + char *buf; + switch_event_serialize(event, &buf, SWITCH_FALSE); + switch_assert(buf); + if (mod_sofia_globals.debug_presence > 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DUMP PRESENCE SQL:\n%s\nEVENT DUMP:\n%s\n", sql, buf); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "EVENT DUMP:\n%s\n", buf); + } + free(buf); + } + + sofia_glue_execute_sql_callback(profile, profile->ireg_mutex, sql, sofia_presence_sub_callback, &helper); + switch_safe_free(sql); - if (mod_sofia_globals.debug_presence > 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s END_PRESENCE_SQL (%s)\n", - event->event_id == SWITCH_EVENT_PRESENCE_IN ? "IN" : "OUT", profile->name); - } - - - if (hup && dh.hits < 1) { - /* so many phones get confused when whe hangup we have to reprobe to get them all to reset to absolute states so the lights stay correct */ - switch_event_t *s_event; - - if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "login", profile->name); - switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "from", "%s@%s", euser, host); - switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "to", "%s@%s", euser, host); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "event_type", "presence"); - switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); - switch_event_fire(&s_event); + if (mod_sofia_globals.debug_presence > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s END_PRESENCE_SQL (%s)\n", + event->event_id == SWITCH_EVENT_PRESENCE_IN ? "IN" : "OUT", profile->name); + } + + + if (hup && dh.hits < 1) { + /* so many phones get confused when whe hangup we have to reprobe to get them all to reset to absolute states so the lights stay correct */ + switch_event_t *s_event; + + if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "proto", SOFIA_CHAT_PROTO); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "login", profile->name); + switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "from", "%s@%s", euser, host); + switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "to", "%s@%s", euser, host); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "event_type", "presence"); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); + switch_event_fire(&s_event); + } } - } - if (!zstr((char *) helper.stream.data)) { - char *this_sql = (char *) helper.stream.data; - char *next = NULL; - char *last = NULL; + if (!zstr((char *) helper.stream.data)) { + char *this_sql = (char *) helper.stream.data; + char *next = NULL; + char *last = NULL; - do { - if ((next = strchr(this_sql, ';'))) { - *next++ = '\0'; - while (*next == '\n' || *next == ' ' || *next == '\r') { + do { + if ((next = strchr(this_sql, ';'))) { *next++ = '\0'; + while (*next == '\n' || *next == ' ' || *next == '\r') { + *next++ = '\0'; + } } - } - if (!zstr(this_sql) && (!last || strcmp(last, this_sql))) { - sofia_glue_execute_sql(profile, &this_sql, SWITCH_FALSE); - last = this_sql; - } - this_sql = next; - } while (this_sql); - } - switch_safe_free(helper.stream.data); - helper.stream.data = NULL; + if (!zstr(this_sql) && (!last || strcmp(last, this_sql))) { + sofia_glue_execute_sql(profile, &this_sql, SWITCH_FALSE); + last = this_sql; + } + this_sql = next; + } while (this_sql); + } + switch_safe_free(helper.stream.data); + helper.stream.data = NULL; - sofia_glue_release_profile(profile); + sofia_glue_release_profile(profile); + } } + switch_console_free_matches(&matches); } - switch_console_free_matches(&matches); -} -done: -switch_safe_free(sql); -switch_safe_free(user); + done: + + switch_safe_free(sql); + switch_safe_free(user); } static int EVENT_THREAD_RUNNING = 0; From b3b2c3752636f67fd5f2da53a199567a4da0b2e7 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 May 2012 13:41:16 -0500 Subject: [PATCH 554/630] FS-3983 --resolve --- src/mod/endpoints/mod_sofia/sofia_presence.c | 39 +++++++++++--------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index fd3a106a58..800ba66cd2 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -90,6 +90,9 @@ struct presence_helper { switch_event_t *event; switch_stream_handle_t stream; char last_uuid[512]; + int hup; + int calls_up; + }; switch_status_t sofia_presence_chat_send(switch_event_t *message_event) @@ -1170,11 +1173,6 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) #endif - if (hup && dh.hits > 0) { - goto done; - } - - if (zstr(call_id) && (dh.hits && presence_source && (!strcasecmp(presence_source, "register") || switch_stristr("register", status)))) { goto done; } @@ -1259,7 +1257,8 @@ static void actual_sofia_presence_event_handler(switch_event_t *event) } - + helper.hup = hup; + helper.calls_up = dh.hits; helper.profile = profile; helper.event = event; SWITCH_STANDARD_STREAM(helper.stream); @@ -2437,6 +2436,10 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * is_dialog = !strcmp(event, "dialog"); + if (helper->hup && helper->calls_up > 0 && (!is_dialog || !user_agent || !switch_stristr("polycom", user_agent) || !switch_stristr("snom", user_agent))) { + goto end; + } + if (helper->event) { switch_stream_handle_t stream = { 0 }; const char *direction = switch_str_nil(switch_event_get_header(helper->event, "presence-call-direction")); @@ -2456,6 +2459,7 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * int force_status = 0; const char *call_state = switch_event_get_header(helper->event, "channel-state"); char *call_info_state = switch_event_get_header(helper->event, "presence-call-info-state"); + int term = 0; if (user_agent && switch_stristr("snom", user_agent) && uuid) { default_dialog = "full" ; @@ -2463,18 +2467,21 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * if (call_state && !strcasecmp(call_state, "cs_hangup")) { astate = "hangup"; - } + holding = 0; + term = 1; + } else { - if (event_status && !strncasecmp(event_status, "hold", 4)) { - holding = 1; - } + if (event_status && !strncasecmp(event_status, "hold", 4)) { + holding = 1; + } - if (force_event_status && !event_status) { - event_status = force_event_status; - } + if (force_event_status && !event_status) { + event_status = force_event_status; + } - if (event_status && !strncasecmp(event_status, "hold", 4)) { - holding = 1; + if (event_status && !strncasecmp(event_status, "hold", 4)) { + holding = 1; + } } if (!strcasecmp(direction, "inbound")) { @@ -2701,8 +2708,6 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char * open = "open"; if (switch_false(resub)) { - int term; - const char *direction = switch_event_get_header(helper->event, "Caller-Direction"); const char *op, *what = "Ring"; From e120f4b3594df680b63baabc9f70cefe47b20eb1 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 21 May 2012 09:58:02 -0500 Subject: [PATCH 555/630] --resolve FS-4234 --- build/freeswitch.init.suse | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/build/freeswitch.init.suse b/build/freeswitch.init.suse index 2859ddc501..29f832d86a 100644 --- a/build/freeswitch.init.suse +++ b/build/freeswitch.init.suse @@ -46,12 +46,7 @@ # Voice Platform ### END INIT INFO # -# Check for missing binaries (stale symlinks should not happen) -# Note: Special treatment of stop for LSB conformance FREESWITCH_BIN=/opt/freeswitch/bin/freeswitch -test -x $FREESWITCH_BIN || { echo "$FREESWITCH_BIN not installed"; - if [ "$1" = "stop" ]; then exit 0; - else exit 5; fi; } # Check for existence of needed config file and read it FREESWITCH_CONFIG=/etc/sysconfig/freeswitch @@ -62,6 +57,12 @@ test -r $FREESWITCH_CONFIG || { echo "$FREESWITCH_CONFIG not existing"; # Read config . $FREESWITCH_CONFIG +# Check for missing binaries (stale symlinks should not happen) +# Note: Special treatment of stop for LSB conformance +test -x $FREESWITCH_BIN || { echo "$FREESWITCH_BIN not installed"; + if [ "$1" = "stop" ]; then exit 0; + else exit 5; fi; } + # Source LSB init functions # providing start_daemon, killproc, pidofproc, # log_success_msg, log_failure_msg and log_warning_msg. @@ -202,7 +203,7 @@ case "$1" in ## argument to this init script which is required for a reload. ## Note: probe is not (yet) part of LSB (as of 1.9) - test /opt/freeswitch/conf/freeswitch.xml -nt /opt/freeswitch/run/freeswitch.pid && echo reload + test ${FREESWITCH_HOME}/conf/freeswitch.xml -nt ${FREESWITCH_HOME}/run/freeswitch.pid && echo reload ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" From 34df90196c9746b345ab20725739630d1ddbd139 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Mon, 21 May 2012 15:47:30 -0400 Subject: [PATCH 556/630] bail out on make mod_modname when core build dies --- Makefile.am | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index c3f3a2fc28..db22184f5d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,11 +20,18 @@ DEFAULT_SOUNDS=en-us-callie-8000 sounds_version=`grep $$base_sound_dir $(switch_srcdir)/build/sounds_version.txt | cut -d ' ' -f2`;\ soundfile=`echo freeswitch-sounds-$$full_sound_dir-$$moh_version.tar.gz`; \ echo $$full_sound_dir | grep music >/dev/null || soundfile=`echo freeswitch-sounds-$$full_sound_dir-$$sounds_version.tar.gz`; \ - if test "$$target" = "install"; then $(MAKE) $(AM_MAKEFLAGS) core_install; else $(MAKE) $(AM_MAKEFLAGS) core ; fi; \ if test "$$target_prefix" = "sounds"; then \ - if test "$$target" = "install"; then $(GETSOUNDS) $$soundfile $(DESTDIR)$(soundsdir)/; else $(GETSOUNDS) $$soundfile ; fi; \ + if test "$$target" = "install"; then \ + $(GETSOUNDS) $$soundfile $(DESTDIR)$(soundsdir)/;\ + else \ + $(GETSOUNDS) $$soundfile ; \ + fi; \ else \ - cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@ ;\ + if test "$$target" = "install"; then \ + $(MAKE) $(AM_MAKEFLAGS) core_install && cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@ ; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) core && cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@ ;\ + fi; \ fi sounds: sounds-en-us-callie-8000 From 792b004f36d209185ef726dd2882c18bf295f523 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 21 May 2012 13:55:50 -0500 Subject: [PATCH 557/630] add mwi-use-reg-callid --- src/mod/endpoints/mod_sofia/mod_sofia.h | 3 ++- src/mod/endpoints/mod_sofia/sofia.c | 14 +++++++++++++- src/mod/endpoints/mod_sofia/sofia_glue.c | 3 ++- src/mod/endpoints/mod_sofia/sofia_presence.c | 11 ++++++++--- src/mod/endpoints/mod_sofia/sofia_reg.c | 2 +- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index c0fc7dfba4..abbd1c226a 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -267,6 +267,7 @@ typedef enum { PFLAG_PRESENCE_DISABLE_EARLY, PFLAG_CONFIRM_BLIND_TRANSFER, PFLAG_THREAD_PER_REG, + PFLAG_MWI_USE_REG_CALLID, /* No new flags below this line */ PFLAG_MAX } PFLAGS; @@ -1139,7 +1140,7 @@ void sofia_glue_get_addr(msg_t *msg, char *buf, size_t buflen, int *port); sofia_destination_t *sofia_glue_get_destination(char *data); void sofia_glue_free_destination(sofia_destination_t *dst); switch_status_t sofia_glue_send_notify(sofia_profile_t *profile, const char *user, const char *host, const char *event, const char *contenttype, - const char *body, const char *o_contact, const char *network_ip); + const char *body, const char *o_contact, const char *network_ip, const char *call_id); char *sofia_glue_get_extra_headers(switch_channel_t *channel, const char *prefix); void sofia_glue_set_extra_headers(switch_core_session_t *session, sip_t const *sip, const char *prefix); char *sofia_glue_get_extra_headers_from_event(switch_event_t *event, const char *prefix); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 8eb122b310..549c8cd246 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1415,7 +1415,7 @@ void sofia_msg_thread_start(int idx) mod_sofia_globals.msg_queue_len = idx + 1; if (!mod_sofia_globals.msg_queue) { - switch_queue_create(&mod_sofia_globals.msg_queue, SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.cpu_count, mod_sofia_globals.pool); + switch_queue_create(&mod_sofia_globals.msg_queue, SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.max_msg_queues, mod_sofia_globals.pool); } @@ -3195,6 +3195,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER); } + } else if (!strcasecmp(var, "mwi-use-reg-callid")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_MWI_USE_REG_CALLID); + } else { + sofia_clear_pflag(profile, PFLAG_MWI_USE_REG_CALLID); + } } else if (!strcasecmp(var, "presence-proto-lookup")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_PRESENCE_MAP); @@ -3994,6 +4000,12 @@ switch_status_t config_sofia(int reload, char *profile_name) } else { sofia_clear_pflag(profile, PFLAG_CONFIRM_BLIND_TRANSFER); } + } else if (!strcasecmp(var, "mwi-use-reg-callid")) { + if (switch_true(val)) { + sofia_set_pflag(profile, PFLAG_MWI_USE_REG_CALLID); + } else { + sofia_clear_pflag(profile, PFLAG_MWI_USE_REG_CALLID); + } } else if (!strcasecmp(var, "presence-proto-lookup")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_PRESENCE_MAP); diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 2039116b41..85799d6c8a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -6643,7 +6643,7 @@ void sofia_glue_free_destination(sofia_destination_t *dst) } switch_status_t sofia_glue_send_notify(sofia_profile_t *profile, const char *user, const char *host, const char *event, const char *contenttype, - const char *body, const char *o_contact, const char *network_ip) + const char *body, const char *o_contact, const char *network_ip, const char *call_id) { char *id = NULL; nua_handle_t *nh; @@ -6706,6 +6706,7 @@ switch_status_t sofia_glue_send_notify(sofia_profile_t *profile, const char *use TAG_IF(user_via, SIPTAG_VIA_STR(user_via)), SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), TAG_IF(event, SIPTAG_EVENT_STR(event)), + TAG_IF(call_id, SIPTAG_CALL_ID_STR(call_id)), TAG_IF(contenttype, SIPTAG_CONTENT_TYPE_STR(contenttype)), TAG_IF(body, SIPTAG_PAYLOAD_STR(body)), TAG_END()); switch_safe_free(contact); diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c index 800ba66cd2..23ae017531 100644 --- a/src/mod/endpoints/mod_sofia/sofia_presence.c +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c @@ -558,11 +558,11 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) } if (for_everyone) { - sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,network_ip,'%q' " + sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,network_ip,'%q',call_id " "from sip_registrations where hostname='%q' and profile_name='%q' and mwi_user='%q' and mwi_host='%q'", stream.data, mod_sofia_globals.hostname, profile->name, user, host); } else if (call_id) { - sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,network_ip,'%q' " + sql = switch_mprintf("select sip_user,sip_host,contact,profile_name,network_ip,'%q',call_id " "from sip_registrations where hostname='%q' and profile_name='%q' and call_id='%q'", stream.data, mod_sofia_globals.hostname, profile->name, call_id); } @@ -2914,6 +2914,7 @@ static int sofia_presence_mwi_callback2(void *pArg, int argc, char **argv, char const char *body = argv[5]; const char *o_contact = argv[2]; const char *network_ip = argv[4]; + const char *call_id = argv[6]; char *profile_name = argv[3]; struct mwi_helper *h = (struct mwi_helper *) pArg; @@ -2925,7 +2926,11 @@ static int sofia_presence_mwi_callback2(void *pArg, int argc, char **argv, char } } - sofia_glue_send_notify(profile, user, host, event, contenttype, body, o_contact, network_ip); + if (!sofia_test_pflag(profile, PFLAG_MWI_USE_REG_CALLID)) { + call_id = NULL; + } + + sofia_glue_send_notify(profile, user, host, event, contenttype, body, o_contact, network_ip, call_id); if (ext_profile) { sofia_glue_release_profile(ext_profile); diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index c5fb57bb4d..a7a384ebe2 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -587,7 +587,7 @@ void sofia_reg_send_reboot(sofia_profile_t *profile, const char *user, const cha event = "reboot"; } - sofia_glue_send_notify(profile, user, host, event, contenttype, body, contact, network_ip); + sofia_glue_send_notify(profile, user, host, event, contenttype, body, contact, network_ip, NULL); } int sofia_sla_dialog_del_callback(void *pArg, int argc, char **argv, char **columnNames) From 10617b6153619a008604c575076d3fb672d0b5c2 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 22 May 2012 00:23:47 -0400 Subject: [PATCH 558/630] .gitignore --- .gitignore | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.gitignore b/.gitignore index f31e630473..cbeaaa463e 100644 --- a/.gitignore +++ b/.gitignore @@ -201,3 +201,23 @@ src/mod/formats/mod_shout/*/*/mod_shout.log /src/mod/languages/mod_managed/x64/Release_CLR/FREESWITCH.MANAGED.DLL.metagen /src/mod/languages/mod_managed/x64/Release_CLR/RSAENH.DLL.bi /src/mod/languages/mod_managed/x64/Release_CLR/TZRES.DLL.bi +libs/apr-util/a.out.dSYM/Contents/Info.plist +libs/apr-util/a.out.dSYM/Contents/Resources/DWARF/a.out +libs/apr/a.out.dSYM/Contents/Info.plist +libs/apr/a.out.dSYM/Contents/Resources/DWARF/a.out +libs/iksemel/a.out.dSYM/Contents/Info.plist +libs/iksemel/a.out.dSYM/Contents/Resources/DWARF/a.out +libs/ilbc/a.out.dSYM/Contents/Info.plist +libs/ilbc/a.out.dSYM/Contents/Resources/DWARF/a.out +libs/libedit/a.out.dSYM/Contents/Info.plist +libs/libedit/a.out.dSYM/Contents/Resources/DWARF/a.out +libs/pcre/a.out.dSYM/Contents/Info.plist +libs/pcre/a.out.dSYM/Contents/Resources/DWARF/a.out +libs/sqlite/lemon.dSYM/Contents/Info.plist +libs/sqlite/lemon.dSYM/Contents/Resources/DWARF/lemon +libs/sqlite/mkkeywordhash.dSYM/Contents/Info.plist +libs/sqlite/mkkeywordhash.dSYM/Contents/Resources/DWARF/mkkeywordhash +libs/sqlite/sqlite3.dSYM/Contents/Info.plist +libs/sqlite/sqlite3.dSYM/Contents/Resources/DWARF/sqlite3 +libs/srtp/a.out.dSYM/Contents/Info.plist +libs/srtp/a.out.dSYM/Contents/Resources/DWARF/a.out From a672c99a57952559a02fe5ca245955d6069b269c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 22 May 2012 07:59:16 -0500 Subject: [PATCH 559/630] FS-4224 --resolve this was a regression from d6374535 to fix FS-3029, when you find a profile you must release it --- src/mod/endpoints/mod_sofia/sofia_glue.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 85799d6c8a..0adcce9606 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -5858,6 +5858,7 @@ int sofia_glue_recover(switch_bool_t flush) for (m = matches->head; m; m = m->next) { if ((profile = sofia_glue_find_profile(m->val))) { r += sofia_glue_profile_recover(profile, flush); + sofia_glue_release_profile(profile); } } switch_console_free_matches(&matches); From 059ef54feb61393479225c9ebfd09dd75f6dfde9 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 22 May 2012 10:21:14 -0500 Subject: [PATCH 560/630] FS-4243 zrtp addition to vs2010 express try this and verify edited by hand --- Freeswitch.2010.express.sln | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Freeswitch.2010.express.sln b/Freeswitch.2010.express.sln index b0df7d9c35..baea4a0c35 100644 --- a/Freeswitch.2010.express.sln +++ b/Freeswitch.2010.express.sln @@ -320,6 +320,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ldns", "libs\win32\ldns\ldn EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpcre Generate pcre_chartables.c", "libs\win32\pcre\pcre_chartables.c.2010.vcxproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzrtp", "libs\libzrtp\projects\win\libzrtp.2010.vcxproj", "{C13CC324-0032-4492-9A30-310A6BD64FF5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Win32 = All|Win32 @@ -1989,6 +1991,17 @@ Global {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32 {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|x64.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|Win32.ActiveCfg = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64.ActiveCfg = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.All|x64.Build.0 = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.ActiveCfg = Debug|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|Win32.Build.0 = Debug|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.ActiveCfg = Debug|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Debug|x64.Build.0 = Debug|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.ActiveCfg = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|Win32.Build.0 = Release|Win32 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.ActiveCfg = Release|x64 + {C13CC324-0032-4492-9A30-310A6BD64FF5}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2089,6 +2102,7 @@ Global {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {9778F1C0-09BC-4698-8EBC-BD982247209A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {56B91D01-9150-4BBF-AFA1-5B68AB991B76} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} + {C13CC324-0032-4492-9A30-310A6BD64FF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC} {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {0C808854-54D1-4230-BFF5-77B5FD905000} {ACFFF684-4D19-4D48-AF12-88EA1D778BDF} = {0C808854-54D1-4230-BFF5-77B5FD905000} From fb790bc32067e3b83601c63f7987129c7112b4a7 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 22 May 2012 10:27:18 -0500 Subject: [PATCH 561/630] block any inbound messages when queue is full; add debounce for mwi and pres on register; fix missing detach attr on new mode to process reg in new thread --- src/mod/endpoints/mod_sofia/mod_sofia.c | 18 ++++++------ src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 38 +++++++++++++------------ src/mod/endpoints/mod_sofia/sofia_reg.c | 37 ++++++++++++++++++++---- 4 files changed, 63 insertions(+), 31 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 8d50a221e8..ebd009a16d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -5447,14 +5447,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) switch_queue_create(&mod_sofia_globals.presence_queue, SOFIA_QUEUE_SIZE, mod_sofia_globals.pool); switch_queue_create(&mod_sofia_globals.mwi_queue, SOFIA_QUEUE_SIZE, mod_sofia_globals.pool); - if (config_sofia(0, NULL) != SWITCH_STATUS_SUCCESS) { - mod_sofia_globals.running = 0; - return SWITCH_STATUS_GENERR; - } - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Waiting for profiles to start\n"); - switch_yield(1500000); - mod_sofia_globals.cpu_count = switch_core_cpu_count(); mod_sofia_globals.max_msg_queues = (mod_sofia_globals.cpu_count / 2) + 1; if (mod_sofia_globals.max_msg_queues < 2) { @@ -5465,10 +5457,20 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) mod_sofia_globals.max_msg_queues = SOFIA_MAX_MSG_QUEUE; } + switch_queue_create(&mod_sofia_globals.msg_queue, SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.max_msg_queues, mod_sofia_globals.pool); + /* start one message thread */ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Starting initial message thread.\n"); sofia_msg_thread_start(0); + if (config_sofia(0, NULL) != SWITCH_STATUS_SUCCESS) { + mod_sofia_globals.running = 0; + return SWITCH_STATUS_GENERR; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Waiting for profiles to start\n"); + switch_yield(1500000); + if (switch_event_bind_removable(modname, SWITCH_EVENT_CUSTOM, MULTICAST_EVENT, event_handler, NULL, &mod_sofia_globals.custom_node) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index abbd1c226a..5902cdad93 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -613,6 +613,7 @@ struct sofia_profile { sofia_gateway_t *gateways; //su_home_t *home; switch_hash_t *chat_hash; + switch_hash_t *mwi_debounce_hash; //switch_core_db_t *master_db; switch_thread_rwlock_t *rwlock; switch_mutex_t *flag_mutex; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 549c8cd246..8a1409bb27 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -1307,6 +1307,7 @@ void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) switch_memory_pool_t *pool; switch_thread_t *thread; sofia_profile_t *profile = (*dep)->profile; + switch_status_t status; switch_core_new_memory_pool(&pool); @@ -1316,14 +1317,19 @@ void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) switch_mutex_lock(profile->ireg_mutex); switch_threadattr_create(&thd_attr, de->pool); + switch_threadattr_detach_set(thd_attr, 1); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&thread, - thd_attr, - sofia_msg_thread_run_once, - de, - de->pool); + status = switch_thread_create(&thread, + thd_attr, + sofia_msg_thread_run_once, + de, + de->pool); switch_mutex_unlock(profile->ireg_mutex); - + + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot create threads!\n"); + sofia_process_dispatch_event(&de); + } } void sofia_process_dispatch_event(sofia_dispatch_event_t **dep) @@ -1414,11 +1420,6 @@ void sofia_msg_thread_start(int idx) int i; mod_sofia_globals.msg_queue_len = idx + 1; - if (!mod_sofia_globals.msg_queue) { - switch_queue_create(&mod_sofia_globals.msg_queue, SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.max_msg_queues, mod_sofia_globals.pool); - } - - for (i = 0; i < mod_sofia_globals.msg_queue_len; i++) { if (!mod_sofia_globals.msg_queue_thread[i]) { switch_threadattr_t *thd_attr = NULL; @@ -1477,8 +1478,14 @@ void sofia_event_callback(nua_event_t event, tagi_t tags[]) { sofia_dispatch_event_t *de; + int critical = (((SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.max_msg_queues) * 900) / 1000); + if (switch_queue_size(mod_sofia_globals.msg_queue) > critical) { + nua_respond(nh, 503, "System Busy", SIPTAG_RETRY_AFTER_STR("300"), TAG_END()); + return; + } + if (sofia_test_pflag(profile, PFLAG_STANDBY)) { if (event < nua_r_set_params || event > nua_r_authenticate) { nua_respond(nh, 503, "System Paused", TAG_END()); @@ -1502,13 +1509,6 @@ void sofia_event_callback(nua_event_t event, de->nua = nua_stack_ref(nua); if (event == nua_i_invite && !sofia_private) { - int critical = (((SOFIA_MSG_QUEUE_SIZE * mod_sofia_globals.max_msg_queues) * 900) / 1000); - - if (switch_queue_size(mod_sofia_globals.msg_queue) > critical) { - nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END()); - return; - } - if (!(sofia_private = su_alloc(nh->nh_home, sizeof(*sofia_private)))) { abort(); } @@ -2307,6 +2307,7 @@ void *SWITCH_THREAD_FUNC sofia_profile_thread_run(switch_thread_t *thread, void sofia_glue_del_profile(profile); switch_core_hash_destroy(&profile->chat_hash); + switch_core_hash_destroy(&profile->mwi_debounce_hash); switch_thread_rwlock_unlock(profile->rwlock); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Write unlock %s\n", profile->name); @@ -3910,6 +3911,7 @@ switch_status_t config_sofia(int reload, char *profile_name) profile->dbname = switch_core_strdup(profile->pool, url); switch_core_hash_init(&profile->chat_hash, profile->pool); + switch_core_hash_init(&profile->mwi_debounce_hash, profile->pool); switch_thread_rwlock_create(&profile->rwlock, profile->pool); switch_mutex_init(&profile->flag_mutex, SWITCH_MUTEX_NESTED, profile->pool); profile->dtmf_duration = 100; diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index a7a384ebe2..e358c8f228 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -993,6 +993,30 @@ uint32_t sofia_reg_reg_count(sofia_profile_t *profile, const char *user, const c return atoi(buf); } +static int debounce_check(sofia_profile_t *profile, const char *user, const char *host) +{ + char key[512] = ""; + int r = 0; + time_t *last, now = switch_epoch_time_now(NULL); + + snprintf(key, sizeof(key), "%s%s", user, host); + + if ((last = switch_core_hash_find(profile->mwi_debounce_hash, key))) { + if (now - *last > 30) { + *last = now; + r = 1; + } + } else { + last = switch_core_alloc(profile->pool, sizeof(*last)); + *last = now; + switch_core_hash_insert(profile->mwi_debounce_hash, key, last); + r = 1; + } + + return r; +} + + uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip, sofia_dispatch_event_t *de, sofia_regtype_t regtype, char *key, uint32_t keylen, switch_event_t **v_event, const char *is_nat) @@ -1668,11 +1692,14 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand if (contact) { if (exptime) { + int debounce_ok = debounce_check(profile, mwi_user, mwi_host); + switch_snprintf(exp_param, sizeof(exp_param), "expires=%ld", exptime); sip_contact_add_param(nua_handle_home(nh), sip->sip_contact, exp_param); - - if (sofia_test_pflag(profile, PFLAG_MESSAGE_QUERY_ON_REGISTER) || - (reg_count == 1 && sofia_test_pflag(profile, PFLAG_MESSAGE_QUERY_ON_FIRST_REGISTER))) { + + if ((sofia_test_pflag(profile, PFLAG_MESSAGE_QUERY_ON_REGISTER) || + (reg_count == 1 && sofia_test_pflag(profile, PFLAG_MESSAGE_QUERY_ON_FIRST_REGISTER))) && debounce_ok) { + if (switch_event_create(&s_mwi_event, SWITCH_EVENT_MESSAGE_QUERY) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(s_mwi_event, SWITCH_STACK_BOTTOM, "Message-Account", "sip:%s@%s", mwi_user, mwi_host); switch_event_add_header_string(s_mwi_event, SWITCH_STACK_BOTTOM, "VM-Sofia-Profile", profile->name); @@ -1680,9 +1707,9 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand } } - if (sofia_test_pflag(profile, PFLAG_PRESENCE_ON_REGISTER) || + if ((sofia_test_pflag(profile, PFLAG_PRESENCE_ON_REGISTER) || (reg_count == 1 && sofia_test_pflag(profile, PFLAG_PRESENCE_ON_FIRST_REGISTER)) - || send_pres == 1 || (reg_count == 1 && send_pres == 2)) { + || send_pres == 1 || (reg_count == 1 && send_pres == 2)) && debounce_ok) { if (sofia_test_pflag(profile, PFLAG_PRESENCE_PROBE_ON_REGISTER)) { if (switch_event_create(&s_event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) { From a5cd951c532639e371f0b5a3c9f08a8ca6d5a996 Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Tue, 22 May 2012 14:00:39 -0400 Subject: [PATCH 562/630] Update the outgoing channel handler so it passes the "var_event" event down towards rtmp_send_incoming_call since variables passed using originate are not yet in the session before the outgoing channel function returns. --- src/mod/endpoints/mod_rtmp/mod_rtmp.c | 2 +- src/mod/endpoints/mod_rtmp/mod_rtmp.h | 2 +- src/mod/endpoints/mod_rtmp/rtmp.c | 27 +++++++++++++++++++++++++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.c b/src/mod/endpoints/mod_rtmp/mod_rtmp.c index 5247074762..6b5bc862c9 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.c +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.c @@ -625,7 +625,7 @@ switch_call_cause_t rtmp_outgoing_channel(switch_core_session_t *session, switch /*switch_channel_mark_pre_answered(channel);*/ switch_channel_ring_ready(channel); - rtmp_send_incoming_call(*newsession); + rtmp_send_incoming_call(*newsession, var_event); switch_channel_set_state(channel, CS_INIT); switch_set_flag_locked(tech_pvt, TFLAG_IO); diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.h b/src/mod/endpoints/mod_rtmp/mod_rtmp.h index 388afeacb5..6109c8544e 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.h +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.h @@ -616,7 +616,7 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u void rtmp_send_event(rtmp_session_t *rsession, switch_event_t *event); void rtmp_notify_call_state(switch_core_session_t *session); void rtmp_send_display_update(switch_core_session_t *session); -void rtmp_send_incoming_call(switch_core_session_t *session); +void rtmp_send_incoming_call(switch_core_session_t *session, switch_event_t *var_event); void rtmp_send_onhangup(switch_core_session_t *session); void rtmp_add_registration(rtmp_session_t *rsession, const char *auth, const char *nickname); void rtmp_clear_registration(rtmp_session_t *rsession, const char *auth, const char *nickname); diff --git a/src/mod/endpoints/mod_rtmp/rtmp.c b/src/mod/endpoints/mod_rtmp/rtmp.c index f28f518383..a5224719e6 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp.c @@ -357,6 +357,25 @@ void rtmp_get_user_variables(switch_event_t **event, switch_core_session_t *sess } } + +void rtmp_get_user_variables_event(switch_event_t **event, switch_event_t *var_event) +{ + switch_event_header_t *he; + + if (!*event && switch_event_create(event, SWITCH_EVENT_CLONE) != SWITCH_STATUS_SUCCESS) { + return; + } + + if ((he = var_event->headers)) { + for (; he; he = he->next) { + if (!strncmp(he->name, RTMP_USER_VARIABLE_PREFIX, strlen(RTMP_USER_VARIABLE_PREFIX))) { + switch_event_add_header_string(*event, SWITCH_STACK_BOTTOM, he->name, he->value); + } + } + } +} + + void rtmp_session_send_onattach(rtmp_session_t *rsession) { const char *uuid = ""; @@ -386,7 +405,7 @@ void rtmp_send_display_update(switch_core_session_t *session) amf0_str(switch_str_nil(tech_pvt->display_callee_id_number)), NULL); } -void rtmp_send_incoming_call(switch_core_session_t *session) +void rtmp_send_incoming_call(switch_core_session_t *session, switch_event_t *var_event) { rtmp_private_t *tech_pvt = switch_core_session_get_private(session); switch_channel_t *channel = switch_core_session_get_channel(session); @@ -394,7 +413,11 @@ void rtmp_send_incoming_call(switch_core_session_t *session) switch_event_t *event = NULL; amf0_data *obj = NULL; - rtmp_get_user_variables(&event, session); + if (var_event) { + rtmp_get_user_variables_event(&event, var_event); + } else { + rtmp_get_user_variables(&event, session); + } if (event) { amf_event_to_object(&obj, event); From bb3f72cb666803c99f38b5f0f176b4757b55cf41 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 May 2012 09:37:54 -0500 Subject: [PATCH 563/630] add perl wrapper to scgi --- libs/libscgi/FSSCGI.i | 6 + libs/libscgi/Makefile | 26 +- libs/libscgi/perl/FSSCGI.pm | 103 + libs/libscgi/perl/Makefile | 38 + libs/libscgi/perl/esl_wrap.cpp | 4149 +++++++++++++++++++++++++++ libs/libscgi/perl/perlxsi.c | 16 + libs/libscgi/perl/scgi_wrap.cpp | 2459 ++++++++++++++++ libs/libscgi/src/include/scgi.h | 4 +- libs/libscgi/src/include/scgi_oop.h | 72 + libs/libscgi/src/scgi.c | 74 +- libs/libscgi/src/scgi_oop.cpp | 101 + libs/libscgi/testserver.c | 7 +- 12 files changed, 7025 insertions(+), 30 deletions(-) create mode 100644 libs/libscgi/FSSCGI.i create mode 100644 libs/libscgi/perl/FSSCGI.pm create mode 100644 libs/libscgi/perl/Makefile create mode 100644 libs/libscgi/perl/esl_wrap.cpp create mode 100644 libs/libscgi/perl/perlxsi.c create mode 100644 libs/libscgi/perl/scgi_wrap.cpp create mode 100644 libs/libscgi/src/include/scgi_oop.h create mode 100644 libs/libscgi/src/scgi_oop.cpp diff --git a/libs/libscgi/FSSCGI.i b/libs/libscgi/FSSCGI.i new file mode 100644 index 0000000000..186cef6244 --- /dev/null +++ b/libs/libscgi/FSSCGI.i @@ -0,0 +1,6 @@ +%{ +#include "scgi.h" +#include "scgi_oop.h" +%} + +%include "scgi_oop.h" diff --git a/libs/libscgi/Makefile b/libs/libscgi/Makefile index 88b5b4e73c..265834ae69 100644 --- a/libs/libscgi/Makefile +++ b/libs/libscgi/Makefile @@ -8,11 +8,13 @@ CXXFLAGS=$(BASE_FLAGS) MYLIB=libscgi.a LIBS= LDFLAGS=-L. -OBJS=src/scgi.o -SRC=src/scgi.c -HEADERS=src/include/scgi.h +OBJS=src/scgi.o +SRC=src/scgi.c src/scgi_oop.cpp +HEADERS=src/include/scgi.h src/include/scgi_oop.h SOLINK=-shared -Xlinker -x +# comment the next line to disable c++ (no swig mods for you then) +OBJS += src/scgi_oop.o all: $(MYLIB) testclient testserver @@ -23,13 +25,27 @@ $(MYLIB): $(OBJS) $(HEADERS) $(SRC) %.o: %.c $(HEADERS) $(CC) $(CC_CFLAGS) $(CFLAGS) -c $< -o $@ +%.o: %.cpp $(HEADERS) + $(CXX) $(CXX_CFLAGS) $(CXXFLAGS) -c $< -o $@ + testclient: $(MYLIB) testclient.c $(CC) $(CC_CFLAGS) $(CFLAGS) testclient.c -o testclient -lscgi $(LDFLAGS) $(LIBS) testserver: $(MYLIB) testserver.c $(CC) $(CC_CFLAGS) $(CFLAGS) testserver.c -o testserver -lscgi $(LDFLAGS) $(LIBS) - - clean: rm -f *.o src/*.o libscgi.a *~ src/*~ src/include/*~ testclient testserver + $(MAKE) -C perl clean + +reswig: swigclean + $(MAKE) -C perl reswig + +swigclean: clean + $(MAKE) -C perl swigclean + +perlmod: $(MYLIB) + $(MAKE) MYLIB="../$(MYLIB)" SOLINK="$(SOLINK)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CXX_CFLAGS="$(CXX_CFLAGS)" -C perl + +perlmod-install: perlmod + $(MAKE) -C perl install diff --git a/libs/libscgi/perl/FSSCGI.pm b/libs/libscgi/perl/FSSCGI.pm new file mode 100644 index 0000000000..7dfd256e05 --- /dev/null +++ b/libs/libscgi/perl/FSSCGI.pm @@ -0,0 +1,103 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 1.3.35 +# +# Don't modify this file, modify the SWIG interface instead. + +package FSSCGI; +require Exporter; +require DynaLoader; +@ISA = qw(Exporter DynaLoader); +package FSSCGIc; +bootstrap FSSCGI; +package FSSCGI; +@EXPORT = qw( ); + +# ---------- BASE METHODS ------------- + +package FSSCGI; + +sub TIEHASH { + my ($classname,$obj) = @_; + return bless $obj, $classname; +} + +sub CLEAR { } + +sub FIRSTKEY { } + +sub NEXTKEY { } + +sub FETCH { + my ($self,$field) = @_; + my $member_func = "swig_${field}_get"; + $self->$member_func(); +} + +sub STORE { + my ($self,$field,$newval) = @_; + my $member_func = "swig_${field}_set"; + $self->$member_func($newval); +} + +sub this { + my $ptr = shift; + return tied(%$ptr); +} + + +# ------- FUNCTION WRAPPERS -------- + +package FSSCGI; + + +############# Class : FSSCGI::SCGIhandle ############## + +package FSSCGI::SCGIhandle; +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS); +@ISA = qw( FSSCGI ); +%OWNER = (); +%ITERATORS = (); +sub new { + my $pkg = shift; + my $self = FSSCGIc::new_SCGIhandle(@_); + bless $self, $pkg if defined($self); +} + +sub DESTROY { + return unless $_[0]->isa('HASH'); + my $self = tied(%{$_[0]}); + return unless defined $self; + delete $ITERATORS{$self}; + if (exists $OWNER{$self}) { + FSSCGIc::delete_SCGIhandle($self); + delete $OWNER{$self}; + } +} + +*connected = *FSSCGIc::SCGIhandle_connected; +*socketDescriptor = *FSSCGIc::SCGIhandle_socketDescriptor; +*disconnect = *FSSCGIc::SCGIhandle_disconnect; +*addParam = *FSSCGIc::SCGIhandle_addParam; +*addBody = *FSSCGIc::SCGIhandle_addBody; +*sendRequest = *FSSCGIc::SCGIhandle_sendRequest; +*recv = *FSSCGIc::SCGIhandle_recv; +*bind = *FSSCGIc::SCGIhandle_bind; +*accept = *FSSCGIc::SCGIhandle_accept; +sub DISOWN { + my $self = shift; + my $ptr = tied(%$self); + delete $OWNER{$ptr}; +} + +sub ACQUIRE { + my $self = shift; + my $ptr = tied(%$self); + $OWNER{$ptr} = 1; +} + + +# ------- VARIABLE STUBS -------- + +package FSSCGI; + +1; diff --git a/libs/libscgi/perl/Makefile b/libs/libscgi/perl/Makefile new file mode 100644 index 0000000000..3bce02368d --- /dev/null +++ b/libs/libscgi/perl/Makefile @@ -0,0 +1,38 @@ +PERL=$(shell which perl) +PERL_SITEDIR=$(shell perl -MConfig -e 'print $$Config{sitelibexp}') +PERL_LIBDIR=-L$(shell perl -MConfig -e 'print $$Config{archlib}')/CORE +PERL_LIBS=$(shell perl -MConfig -e 'print $$Config{libs}') +LOCAL_CFLAGS=-w -DMULTIPLICITY $(shell $(PERL) -MExtUtils::Embed -e ccopts) -DEMBED_PERL +LOCAL_LDFLAGS=$(shell $(PERL) -MExtUtils::Embed -e ldopts) $(shell $(PERL) -MConfig -e 'print $$Config{libs}') +GCC_WARNING_JUNK=-w +PERL_INC=$(shell $(PERL) -MExtUtils::Embed -e perl_inc) +all: FSSCGI.so + +scgi_wrap.cpp: + swig -module FSSCGI -shadow -perl5 -c++ -DMULTIPLICITY -I../src/include -o scgi_wrap.cpp ../FSSCGI.i + +perlxsi.c: + $(PERL) -MExtUtils::Embed -e xsinit -- -o perlxsi.c + +perlxsi.o: perlxsi.c + $(CC) $(CC_CFLAGS) $(CFLAGS) $(LOCAL_CFLAGS) -c perlxsi.c -o perlxsi.o + +scgi_wrap.o: scgi_wrap.cpp + $(CXX) $(CXX_CFLAGS) $(CXXFLAGS) $(GCC_WARNING_JUNK) $(PERL_INC) -c scgi_wrap.cpp -o scgi_wrap.o + +FSSCGI.so: scgi_wrap.o perlxsi.o + $(CXX) $(SOLINK) scgi_wrap.o perlxsi.o $(MYLIB) $(LOCAL_LDFLAGS) -o FSSCGI.so -L. $(LIBS) + +clean: + rm -f *.o *.so *~ + +swigclean: + rm -f scgi_wrap.* FSSCGI.so FSSCGI.pm perlxsi.* + +reswig: swigclean scgi_wrap.cpp perlxsi.c + +install: FSSCGI.so + install -m 755 FSSCGI.so $(PERL_SITEDIR) + install -m 755 FSSCGI.pm $(PERL_SITEDIR) + install -d -m 755 FSSCGI $(PERL_SITEDIR)/FSSCGI + install -m 755 FSSCGI/* $(PERL_SITEDIR)/FSSCGI diff --git a/libs/libscgi/perl/esl_wrap.cpp b/libs/libscgi/perl/esl_wrap.cpp new file mode 100644 index 0000000000..832289f156 --- /dev/null +++ b/libs/libscgi/perl/esl_wrap.cpp @@ -0,0 +1,4149 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.35 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#define SWIGPERL +#define SWIG_CASTRANK_MODE + +#ifdef __cplusplus +template class SwigValueWrapper { + T *tt; +public: + SwigValueWrapper() : tt(0) { } + SwigValueWrapper(const SwigValueWrapper& rhs) : tt(new T(*rhs.tt)) { } + SwigValueWrapper(const T& t) : tt(new T(t)) { } + ~SwigValueWrapper() { delete tt; } + SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; } + operator T&() const { return *tt; } + T *operator&() { return tt; } +private: + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + + +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic CAPI SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the swig runtime code. + In 99.9% of the cases, swig just needs to declare them as 'static'. + + But only do this if is strictly necessary, ie, if you have problems + with your compiler or so. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The swig conversion methods, as ConvertPtr, return and integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old swig versions, you usually write code as: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit as: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + that seems to be the same, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + requires also to SWIG_ConvertPtr to return new result values, as + + int SWIG_ConvertPtr(obj, ptr,...) { + if () { + if () { + *ptr = ; + return SWIG_NEWOBJ; + } else { + *ptr = ; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + swig errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() + + + */ +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class" == "Class", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like ||... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like ||... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCompare(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + + +/* think of this as a c++ template<> or a scheme macro */ +#define SWIG_TypeCheck_Template(comparison, ty) \ + if (ty) { \ + swig_cast_info *iter = ty->cast; \ + while (iter) { \ + if (comparison) { \ + if (iter == ty->cast) return iter; \ + /* Move iter to the top of the linked list */ \ + iter->prev->next = iter->next; \ + if (iter->next) \ + iter->next->prev = iter->prev; \ + iter->next = ty->cast; \ + iter->prev = 0; \ + if (ty->cast) ty->cast->prev = iter; \ + ty->cast = iter; \ + return iter; \ + } \ + iter = iter->next; \ + } \ + } \ + return 0 + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty); +} + +/* Same as previous function, except strcmp is replaced with a pointer comparison */ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) { + SWIG_TypeCheck_Template(iter->type == from, into); +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + register size_t l = 0; + register size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + register size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + register int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + register size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + register const unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + register unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register char d = *(c++); + register unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +#ifdef __cplusplus +/* Needed on some windows machines---since MS plays funny games with the header files under C++ */ +#include +#include +extern "C" { +#endif +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +/* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */ + +/* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */ +#ifndef PERL_REVISION +# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) +# define PERL_PATCHLEVEL_H_IMPLICIT +# include +# endif +# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) +# include +# endif +# ifndef PERL_REVISION +# define PERL_REVISION (5) +# define PERL_VERSION PATCHLEVEL +# define PERL_SUBVERSION SUBVERSION +# endif +#endif + +#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE) +#define PerlIO_exportFILE(fh,fl) (FILE*)(fh) +#endif + +#ifndef SvIOK_UV +# define SvIOK_UV(sv) (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv))) +#endif + +#ifndef SvUOK +# define SvUOK(sv) SvIOK_UV(sv) +#endif + +#if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))) +# define PL_sv_undef sv_undef +# define PL_na na +# define PL_errgv errgv +# define PL_sv_no sv_no +# define PL_sv_yes sv_yes +# define PL_markstack_ptr markstack_ptr +#endif + +#ifndef IVSIZE +# ifdef LONGSIZE +# define IVSIZE LONGSIZE +# else +# define IVSIZE 4 /* A bold guess, but the best we can make. */ +# endif +#endif + +#ifndef INT2PTR +# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) +# define PTRV UV +# define INT2PTR(any,d) (any)(d) +# else +# if PTRSIZE == LONGSIZE +# define PTRV unsigned long +# else +# define PTRV unsigned +# endif +# define INT2PTR(any,d) (any)(PTRV)(d) +# endif + +# define NUM2PTR(any,d) (any)(PTRV)(d) +# define PTR2IV(p) INT2PTR(IV,p) +# define PTR2UV(p) INT2PTR(UV,p) +# define PTR2NV(p) NUM2PTR(NV,p) + +# if PTRSIZE == LONGSIZE +# define PTR2ul(p) (unsigned long)(p) +# else +# define PTR2ul(p) INT2PTR(unsigned long,p) +# endif +#endif /* !INT2PTR */ + +#ifndef SvPV_nolen +# define SvPV_nolen(x) SvPV(x,PL_na) +#endif + +#ifndef get_sv +# define get_sv perl_get_sv +#endif + +#ifndef ERRSV +# define ERRSV get_sv("@",FALSE) +#endif + +#ifndef pTHX_ +#define pTHX_ +#endif + +#include +#ifdef __cplusplus +} +#endif + +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGINTERN const char* +SWIG_Perl_ErrorType(int code) { + const char* type = 0; + switch(code) { + case SWIG_MemoryError: + type = "MemoryError"; + break; + case SWIG_IOError: + type = "IOError"; + break; + case SWIG_RuntimeError: + type = "RuntimeError"; + break; + case SWIG_IndexError: + type = "IndexError"; + break; + case SWIG_TypeError: + type = "TypeError"; + break; + case SWIG_DivisionByZero: + type = "ZeroDivisionError"; + break; + case SWIG_OverflowError: + type = "OverflowError"; + break; + case SWIG_SyntaxError: + type = "SyntaxError"; + break; + case SWIG_ValueError: + type = "ValueError"; + break; + case SWIG_SystemError: + type = "SystemError"; + break; + case SWIG_AttributeError: + type = "AttributeError"; + break; + default: + type = "RuntimeError"; + } + return type; +} + + + + +/* ----------------------------------------------------------------------------- + * perlrun.swg + * + * This file contains the runtime support for Perl modules + * and includes code for managing global variables and pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +#ifdef PERL_OBJECT +#define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl), +#define SWIG_PERL_OBJECT_CALL pPerl, +#else +#define SWIG_PERL_OBJECT_DECL +#define SWIG_PERL_OBJECT_CALL +#endif + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_ConvertPtr(obj, pp, type, flags) SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags) +#define SWIG_NewPointerObj(p, type, flags) SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags) + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, p, s, type) SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type) +#define SWIG_NewPackedObj(p, s, type) SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Perl_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer) + + +/* Error manipulation */ + +#define SWIG_ErrorType(code) SWIG_Perl_ErrorType(code) +#define SWIG_Error(code, msg) sv_setpvf(GvSV(PL_errgv),"%s %s\n", SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + +/* Perl-specific SWIG API */ + +#define SWIG_MakePtr(sv, ptr, type, flags) SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags) +#define SWIG_MakePackedObj(sv, p, s, type) SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type) +#define SWIG_SetError(str) SWIG_Error(SWIG_RuntimeError, str) + + +#define SWIG_PERL_DECL_ARGS_1(arg1) (SWIG_PERL_OBJECT_DECL arg1) +#define SWIG_PERL_CALL_ARGS_1(arg1) (SWIG_PERL_OBJECT_CALL arg1) +#define SWIG_PERL_DECL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_DECL arg1, arg2) +#define SWIG_PERL_CALL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_CALL arg1, arg2) + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +/* For backward compatibility only */ +#define SWIG_POINTER_EXCEPTION 0 + +#ifdef __cplusplus +extern "C" { +#endif + +#define SWIG_OWNER SWIG_POINTER_OWN +#define SWIG_SHADOW SWIG_OWNER << 1 + +#define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL + +/* SWIG Perl macros */ + +/* Macro to declare an XS function */ +#ifndef XSPROTO +# define XSPROTO(name) void name(pTHX_ CV* cv) +#endif + +/* Macro to call an XS function */ +#ifdef PERL_OBJECT +# define SWIG_CALLXS(_name) _name(cv,pPerl) +#else +# ifndef MULTIPLICITY +# define SWIG_CALLXS(_name) _name(cv) +# else +# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) +# endif +#endif + +#ifdef PERL_OBJECT +#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this; + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) +#define SWIGCLASS_STATIC + +#else /* PERL_OBJECT */ + +#define MAGIC_PPERL +#define SWIGCLASS_STATIC static SWIGUNUSED + +#ifndef MULTIPLICITY +#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (*SwigMagicFunc)(SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#else /* MULTIPLICITY */ + +#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b) + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#endif /* MULTIPLICITY */ +#endif /* PERL_OBJECT */ + +/* Workaround for bug in perl 5.6.x croak and earlier */ +#if (PERL_VERSION < 8) +# ifdef PERL_OBJECT +# define SWIG_croak_null() SWIG_Perl_croak_null(pPerl) +static void SWIG_Perl_croak_null(CPerlObj *pPerl) +# else +static void SWIG_croak_null() +# endif +{ + SV *err=ERRSV; +# if (PERL_VERSION < 6) + croak("%_", err); +# else + if (SvOK(err) && !SvROK(err)) croak("%_", err); + croak(Nullch); +# endif +} +#else +# define SWIG_croak_null() croak(Nullch) +#endif + + +/* + Define how strict is the cast between strings and integers/doubles + when overloading between these types occurs. + + The default is making it as strict as possible by using SWIG_AddCast + when needed. + + You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to + disable the SWIG_AddCast, making the casting between string and + numbers less strict. + + In the end, we try to solve the overloading between strings and + numerical types in the more natural way, but if you can avoid it, + well, avoid it using %rename, for example. +*/ +#ifndef SWIG_PERL_NO_STRICT_STR2NUM +# ifndef SWIG_PERL_STRICT_STR2NUM +# define SWIG_PERL_STRICT_STR2NUM +# endif +#endif +#ifdef SWIG_PERL_STRICT_STR2NUM +/* string takes precedence */ +#define SWIG_Str2NumCast(x) SWIG_AddCast(x) +#else +/* number takes precedence */ +#define SWIG_Str2NumCast(x) x +#endif + + + +#include + +SWIGRUNTIME const char * +SWIG_Perl_TypeProxyName(const swig_type_info *type) { + if (!type) return NULL; + if (type->clientdata != NULL) { + return (const char*) type->clientdata; + } + else { + return type->name; + } +} + +SWIGRUNTIME swig_cast_info * +SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) { + SWIG_TypeCheck_Template(( (!iter->type->clientdata && (strcmp(iter->type->name, c) == 0)) + || (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0))), ty); +} + + +/* Function for getting a pointer value */ + +SWIGRUNTIME int +SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) { + swig_cast_info *tc; + void *voidptr = (void *)0; + SV *tsv = 0; + /* If magical, apply more magic */ + if (SvGMAGICAL(sv)) + mg_get(sv); + + /* Check to see if this is an object */ + if (sv_isobject(sv)) { + IV tmp = 0; + tsv = (SV*) SvRV(sv); + if ((SvTYPE(tsv) == SVt_PVHV)) { + MAGIC *mg; + if (SvMAGICAL(tsv)) { + mg = mg_find(tsv,'P'); + if (mg) { + sv = mg->mg_obj; + if (sv_isobject(sv)) { + tsv = (SV*)SvRV(sv); + tmp = SvIV(tsv); + } + } + } else { + return SWIG_ERROR; + } + } else { + tmp = SvIV(tsv); + } + voidptr = INT2PTR(void *,tmp); + } else if (! SvOK(sv)) { /* Check for undef */ + *(ptr) = (void *) 0; + return SWIG_OK; + } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */ + if (!SvROK(sv)) { + *(ptr) = (void *) 0; + return SWIG_OK; + } else { + return SWIG_ERROR; + } + } else { /* Don't know what it is */ + return SWIG_ERROR; + } + if (_t) { + /* Now see if the types match */ + char *_c = HvNAME(SvSTASH(SvRV(sv))); + tc = SWIG_TypeProxyCheck(_c,_t); + if (!tc) { + return SWIG_ERROR; + } + { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,voidptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } + } else { + *ptr = voidptr; + } + + /* + * DISOWN implementation: we need a perl guru to check this one. + */ + if (tsv && (flags & SWIG_POINTER_DISOWN)) { + /* + * almost copy paste code from below SWIG_POINTER_OWN setting + */ + SV *obj = sv; + HV *stash = SvSTASH(SvRV(obj)); + GV *gv = *(GV**) hv_fetch(stash, "OWNER", 5, TRUE); + if (isGV(gv)) { + HV *hv = GvHVn(gv); + /* + * To set ownership (see below), a newSViv(1) entry is added. + * Hence, to remove ownership, we delete the entry. + */ + if (hv_exists_ent(hv, obj, 0)) { + hv_delete_ent(hv, obj, 0, 0); + } + } + } + return SWIG_OK; +} + +SWIGRUNTIME void +SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) { + if (ptr && (flags & SWIG_SHADOW)) { + SV *self; + SV *obj=newSV(0); + HV *hash=newHV(); + HV *stash; + sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr); + stash=SvSTASH(SvRV(obj)); + if (flags & SWIG_POINTER_OWN) { + HV *hv; + GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE); + if (!isGV(gv)) + gv_init(gv, stash, "OWNER", 5, FALSE); + hv=GvHVn(gv); + hv_store_ent(hv, obj, newSViv(1), 0); + } + sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0); + SvREFCNT_dec(obj); + self=newRV_noinc((SV *)hash); + sv_setsv(sv, self); + SvREFCNT_dec((SV *)self); + sv_bless(sv, stash); + } + else { + sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr); + } +} + +SWIGRUNTIMEINLINE SV * +SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) { + SV *result = sv_newmortal(); + SWIG_MakePtr(result, ptr, t, flags); + return result; +} + +SWIGRUNTIME void +SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) { + char result[1024]; + char *r = result; + if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + strcpy(r,SWIG_Perl_TypeProxyName(type)); + sv_setpv(sv, result); +} + +SWIGRUNTIME SV * +SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) { + SV *result = sv_newmortal(); + SWIG_Perl_MakePackedObj(result, ptr, sz, type); + return result; +} + +/* Convert a packed value value */ +SWIGRUNTIME int +SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) { + swig_cast_info *tc; + const char *c = 0; + + if ((!obj) || (!SvOK(obj))) return SWIG_ERROR; + c = SvPV_nolen(obj); + /* Pointer values must start with leading underscore */ + if (*c != '_') return SWIG_ERROR; + c++; + c = SWIG_UnpackData(c,ptr,sz); + if (ty) { + tc = SWIG_TypeCheck(c,ty); + if (!tc) return SWIG_ERROR; + } + return SWIG_OK; +} + + +/* Macros for low-level exception handling */ +#define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; } + + +typedef XSPROTO(SwigPerlWrapper); +typedef SwigPerlWrapper *SwigPerlWrapperPtr; + +/* Structure for command table */ +typedef struct { + const char *name; + SwigPerlWrapperPtr wrapper; +} swig_command_info; + +/* Information for constant table */ + +#define SWIG_INT 1 +#define SWIG_FLOAT 2 +#define SWIG_STRING 3 +#define SWIG_POINTER 4 +#define SWIG_BINARY 5 + +/* Constant information structure */ +typedef struct swig_constant_info { + int type; + const char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_constant_info; + + +/* Structure for variable table */ +typedef struct { + const char *name; + SwigMagicFunc set; + SwigMagicFunc get; + swig_type_info **type; +} swig_variable_info; + +/* Magic variable code */ +#ifndef PERL_OBJECT +#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c) + #ifndef MULTIPLICITY + SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) + #else + SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) + #endif +#else +# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c) +SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) +#endif +{ + MAGIC *mg; + sv_magic(sv,sv,'U',(char *) name,strlen(name)); + mg = mg_find(sv,'U'); + mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL)); + mg->mg_virtual->svt_get = (SwigMagicFunc) get; + mg->mg_virtual->svt_set = (SwigMagicFunc) set; + mg->mg_virtual->svt_len = 0; + mg->mg_virtual->svt_clear = 0; + mg->mg_virtual->svt_free = 0; +} + + +SWIGRUNTIME swig_module_info * +SWIG_Perl_GetModule(void) { + static void *type_pointer = (void *)0; + SV *pointer; + + /* first check if pointer already created */ + if (!type_pointer) { + pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI); + if (pointer && SvOK(pointer)) { + type_pointer = INT2PTR(swig_type_info **, SvIV(pointer)); + } + } + + return (swig_module_info *) type_pointer; +} + +SWIGRUNTIME void +SWIG_Perl_SetModule(swig_module_info *module) { + SV *pointer; + + /* create a new pointer */ + pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI); + sv_setiv(pointer, PTR2IV(module)); +} + +#ifdef __cplusplus +} +#endif + +/* Workaround perl5 global namespace pollution. Note that undefining library + * functions like fopen will not solve the problem on all platforms as fopen + * might be a macro on Windows but not necessarily on other operating systems. */ +#ifdef do_open + #undef do_open +#endif +#ifdef do_close + #undef do_close +#endif +#ifdef scalar + #undef scalar +#endif +#ifdef list + #undef list +#endif +#ifdef apply + #undef apply +#endif +#ifdef convert + #undef convert +#endif +#ifdef Error + #undef Error +#endif +#ifdef form + #undef form +#endif +#ifdef vform + #undef vform +#endif +#ifdef LABEL + #undef LABEL +#endif +#ifdef METHOD + #undef METHOD +#endif +#ifdef Move + #undef Move +#endif +#ifdef yylex + #undef yylex +#endif +#ifdef yyparse + #undef yyparse +#endif +#ifdef yyerror + #undef yyerror +#endif +#ifdef invert + #undef invert +#endif +#ifdef ref + #undef ref +#endif +#ifdef read + #undef read +#endif +#ifdef write + #undef write +#endif +#ifdef eof + #undef eof +#endif +#ifdef bool + #undef bool +#endif +#ifdef close + #undef close +#endif +#ifdef rewind + #undef rewind +#endif +#ifdef free + #undef free +#endif +#ifdef malloc + #undef malloc +#endif +#ifdef calloc + #undef calloc +#endif +#ifdef Stat + #undef Stat +#endif +#ifdef check + #undef check +#endif +#ifdef seekdir + #undef seekdir +#endif +#ifdef open + #undef open +#endif + + + +#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else + + + +/* -------- TYPES TABLE (BEGIN) -------- */ + +#define SWIGTYPE_p_ESLconnection swig_types[0] +#define SWIGTYPE_p_ESLevent swig_types[1] +#define SWIGTYPE_p_char swig_types[2] +#define SWIGTYPE_p_esl_event_t swig_types[3] +#define SWIGTYPE_p_esl_priority_t swig_types[4] +static swig_type_info *swig_types[6]; +static swig_module_info swig_module = {swig_types, 5, 0, 0, 0, 0}; +#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) +#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +/* -------- TYPES TABLE (END) -------- */ + +#define SWIG_init boot_ESL + +#define SWIG_name "ESLc::boot_ESL" +#define SWIG_prefix "ESLc::" + +#define SWIGVERSION 0x010335 +#define SWIG_VERSION SWIGVERSION + + +#define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) +#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) + + +#include + + +#ifdef __cplusplus +extern "C" +#endif +#ifndef PERL_OBJECT +#ifndef MULTIPLICITY +SWIGEXPORT void SWIG_init (CV* cv); +#else +SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); +#endif +#else +SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *); +#endif + + +#include "esl.h" +#include "esl_oop.h" + + +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} + + +SWIGINTERN int +SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc) +{ + if (SvPOK(obj)) { + STRLEN len = 0; + char *cstr = SvPV(obj, len); + size_t size = len + 1; + if (cptr) { + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = reinterpret_cast< char* >(memcpy((new char[size]), cstr, sizeof(char)*(size))); + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } + } + if (psize) *psize = size; + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + char* vptr = 0; + if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = vptr; + if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} + + + + + +SWIGINTERNINLINE SV * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + SV *obj = sv_newmortal(); + if (carray) { + sv_setpvn(obj, carray, size); + } else { + sv_setsv(obj, &PL_sv_undef); + } + return obj; +} + + +SWIGINTERNINLINE SV * +SWIG_FromCharPtr(const char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); +} + + +#include +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif + + +SWIGINTERN int +SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val) +{ + if (SvNIOK(obj)) { + if (val) *val = SvNV(obj); + return SWIG_OK; + } else if (SvIOK(obj)) { + if (val) *val = (double) SvIV(obj); + return SWIG_AddCast(SWIG_OK); + } else { + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + double v = strtod(nptr, &endptr); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + } + return SWIG_TypeError; +} + + +#include + + +#include + + +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} + + +SWIGINTERN int +SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val) +{ + if (SvIOK(obj)) { + if (val) *val = SvIV(obj); + return SWIG_OK; + } else { + int dispatch = 0; + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + long v; + errno = 0; + v = strtol(nptr, &endptr,0); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val) +{ + long v; + int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v); + if (SWIG_IsOK(res)) { + if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< int >(v); + } + } + return res; +} + + +SWIGINTERNINLINE SV * +SWIG_From_long SWIG_PERL_DECL_ARGS_1(long value) +{ + SV *obj = sv_newmortal(); + sv_setiv(obj, (IV) value); + return obj; +} + + +SWIGINTERNINLINE SV * +SWIG_From_int SWIG_PERL_DECL_ARGS_1(int value) +{ + return SWIG_From_long SWIG_PERL_CALL_ARGS_1(value); +} + + +SWIGINTERNINLINE SV * +SWIG_From_bool SWIG_PERL_DECL_ARGS_1(bool value) +{ + SV *obj = sv_newmortal(); + if (value) { + sv_setsv(obj, &PL_sv_yes); + } else { + sv_setsv(obj, &PL_sv_no); + } + return obj; +} + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef PERL_OBJECT +#define MAGIC_CLASS _wrap_ESL_var:: +class _wrap_ESL_var : public CPerlObj { +public: +#else +#define MAGIC_CLASS +#endif +SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) { + MAGIC_PPERL + croak("Value is read-only."); + return 0; +} + + +#ifdef PERL_OBJECT +}; +#endif + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +XS(_wrap_ESLevent_event_set) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + esl_event_t *arg2 = (esl_event_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLevent_event_set(self,event);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_event_set" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_esl_event_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_event_set" "', argument " "2"" of type '" "esl_event_t *""'"); + } + arg2 = reinterpret_cast< esl_event_t * >(argp2); + if (arg1) (arg1)->event = arg2; + + + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_event_get) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + esl_event_t *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_event_get(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_event_get" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (esl_event_t *) ((arg1)->event); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_esl_event_t, 0 | 0); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_serialized_string_set) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLevent_serialized_string_set(self,serialized_string);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_serialized_string_set" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_serialized_string_set" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (arg1->serialized_string) delete[] arg1->serialized_string; + if (arg2) { + size_t size = strlen(reinterpret_cast< const char * >(arg2)) + 1; + arg1->serialized_string = (char *)reinterpret_cast< char* >(memcpy((new char[size]), reinterpret_cast< const char * >(arg2), sizeof(char)*(size))); + } else { + arg1->serialized_string = 0; + } + + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_serialized_string_get) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_serialized_string_get(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_serialized_string_get" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (char *) ((arg1)->serialized_string); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_mine_set) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLevent_mine_set(self,mine);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_mine_set" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ESLevent_mine_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + if (arg1) (arg1)->mine = arg2; + + + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_mine_get) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_mine_get(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_mine_get" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (int) ((arg1)->mine); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLevent__SWIG_0) { + { + char *arg1 = (char *) 0 ; + char *arg2 = (char *) NULL ; + ESLevent *result = 0 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 2)) { + SWIG_croak("Usage: new_ESLevent(type,subclass_name);"); + } + res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ESLevent" "', argument " "1"" of type '" "char const *""'"); + } + arg1 = reinterpret_cast< char * >(buf1); + if (items > 1) { + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_ESLevent" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + } + result = (ESLevent *)new ESLevent((char const *)arg1,(char const *)arg2); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLevent__SWIG_1) { + { + esl_event_t *arg1 = (esl_event_t *) 0 ; + int arg2 = (int) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 2)) { + SWIG_croak("Usage: new_ESLevent(wrap_me,free_me);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_esl_event_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ESLevent" "', argument " "1"" of type '" "esl_event_t *""'"); + } + arg1 = reinterpret_cast< esl_event_t * >(argp1); + if (items > 1) { + ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_ESLevent" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + } + result = (ESLevent *)new ESLevent(arg1,arg2); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLevent__SWIG_2) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: new_ESLevent(me);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ESLevent" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (ESLevent *)new ESLevent(arg1); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLevent) { + dXSARGS; + + { + unsigned long _index = 0; + SWIG_TypeRank _rank = 0; + if ((items >= 1) && (items <= 2)) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + void *vptr = 0; + int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_esl_event_t, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_1; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (items > 1) { + { + { + int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), NULL); + _v = SWIG_CheckState(res); + } + } + if (!_v) goto check_1; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + } + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 1; + if (_rank == _rankm) goto dispatch; + } + } + check_1: + + if (items == 1) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + void *vptr = 0; + int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_ESLevent, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 2; + if (_rank == _rankm) goto dispatch; + } + } + check_2: + + if ((items >= 1) && (items <= 2)) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + int res = SWIG_AsCharPtrAndSize(ST(0), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_3; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (items > 1) { + { + int res = SWIG_AsCharPtrAndSize(ST(1), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_3; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + } + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 3; + if (_rank == _rankm) goto dispatch; + } + } + check_3: + + dispatch: + switch(_index) { + case 1: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_ESLevent__SWIG_1); return; + case 2: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_ESLevent__SWIG_2); return; + case 3: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_ESLevent__SWIG_0); return; + } + } + + croak("No matching function for overloaded 'new_ESLevent'"); + XSRETURN(0); +} + + +XS(_wrap_delete_ESLevent) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: delete_ESLevent(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ESLevent" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + delete arg1; + + + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_serialize) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) NULL ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 2)) { + SWIG_croak("Usage: ESLevent_serialize(self,format);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_serialize" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + if (items > 1) { + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_serialize" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + } + result = (char *)(arg1)->serialize((char const *)arg2); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_setPriority) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + esl_priority_t arg2 = (esl_priority_t) ESL_PRIORITY_NORMAL ; + bool result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 2)) { + SWIG_croak("Usage: ESLevent_setPriority(self,priority);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_setPriority" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + if (items > 1) { + { + res2 = SWIG_ConvertPtr(ST(1), &argp2, SWIGTYPE_p_esl_priority_t, 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_setPriority" "', argument " "2"" of type '" "esl_priority_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ESLevent_setPriority" "', argument " "2"" of type '" "esl_priority_t""'"); + } else { + arg2 = *(reinterpret_cast< esl_priority_t * >(argp2)); + } + } + } + result = (bool)(arg1)->setPriority(arg2); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_getHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 = (int) -1 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 3)) { + SWIG_croak("Usage: ESLevent_getHeader(self,header_name,idx);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_getHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_getHeader" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (items > 2) { + ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ESLevent_getHeader" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + } + result = (char *)(arg1)->getHeader((char const *)arg2,arg3); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_getBody) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_getBody(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_getBody" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (char *)(arg1)->getBody(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_getType) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_getType(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_getType" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (char *)(arg1)->getType(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_addBody) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + bool result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLevent_addBody(self,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_addBody" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_addBody" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (bool)(arg1)->addBody((char const *)arg2); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_addHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + bool result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: ESLevent_addHeader(self,header_name,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_addHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_addHeader" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLevent_addHeader" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (bool)(arg1)->addHeader((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_pushHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + bool result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: ESLevent_pushHeader(self,header_name,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_pushHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_pushHeader" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLevent_pushHeader" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (bool)(arg1)->pushHeader((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_unshiftHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + bool result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: ESLevent_unshiftHeader(self,header_name,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_unshiftHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_unshiftHeader" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLevent_unshiftHeader" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (bool)(arg1)->unshiftHeader((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_delHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *arg2 = (char *) 0 ; + bool result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLevent_delHeader(self,header_name);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_delHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLevent_delHeader" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (bool)(arg1)->delHeader((char const *)arg2); + ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_firstHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_firstHeader(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_firstHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (char *)(arg1)->firstHeader(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLevent_nextHeader) { + { + ESLevent *arg1 = (ESLevent *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLevent_nextHeader(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLevent_nextHeader" "', argument " "1"" of type '" "ESLevent *""'"); + } + arg1 = reinterpret_cast< ESLevent * >(argp1); + result = (char *)(arg1)->nextHeader(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLconnection__SWIG_0) { + { + char *arg1 = (char *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + char *arg4 = (char *) 0 ; + ESLconnection *result = 0 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int res4 ; + char *buf4 = 0 ; + int alloc4 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 4) || (items > 4)) { + SWIG_croak("Usage: new_ESLconnection(host,port,user,password);"); + } + res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ESLconnection" "', argument " "1"" of type '" "char const *""'"); + } + arg1 = reinterpret_cast< char * >(buf1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_ESLconnection" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_ESLconnection" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_ESLconnection" "', argument " "4"" of type '" "char const *""'"); + } + arg4 = reinterpret_cast< char * >(buf4); + result = (ESLconnection *)new ESLconnection((char const *)arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLconnection, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + XSRETURN(argvi); + fail: + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLconnection__SWIG_1) { + { + char *arg1 = (char *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + ESLconnection *result = 0 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: new_ESLconnection(host,port,password);"); + } + res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ESLconnection" "', argument " "1"" of type '" "char const *""'"); + } + arg1 = reinterpret_cast< char * >(buf1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_ESLconnection" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_ESLconnection" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (ESLconnection *)new ESLconnection((char const *)arg1,(char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLconnection, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLconnection__SWIG_2) { + { + int arg1 ; + ESLconnection *result = 0 ; + int val1 ; + int ecode1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: new_ESLconnection(socket);"); + } + ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_ESLconnection" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + result = (ESLconnection *)new ESLconnection(arg1); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLconnection, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_new_ESLconnection) { + dXSARGS; + + { + unsigned long _index = 0; + SWIG_TypeRank _rank = 0; + if (items == 1) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + { + int res = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), NULL); + _v = SWIG_CheckState(res); + } + } + if (!_v) goto check_1; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 1; + if (_rank == _rankm) goto dispatch; + } + } + check_1: + + if (items == 3) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + int res = SWIG_AsCharPtrAndSize(ST(0), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(1), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(2), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 2; + if (_rank == _rankm) goto dispatch; + } + } + check_2: + + if (items == 4) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + int res = SWIG_AsCharPtrAndSize(ST(0), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_3; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(1), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_3; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(2), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_3; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(3), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_3; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 3; + if (_rank == _rankm) goto dispatch; + } + } + check_3: + + dispatch: + switch(_index) { + case 1: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_ESLconnection__SWIG_2); return; + case 2: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_ESLconnection__SWIG_1); return; + case 3: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_ESLconnection__SWIG_0); return; + } + } + + croak("No matching function for overloaded 'new_ESLconnection'"); + XSRETURN(0); +} + + +XS(_wrap_delete_ESLconnection) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: delete_ESLconnection(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ESLconnection" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + delete arg1; + + + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_socketDescriptor) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLconnection_socketDescriptor(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_socketDescriptor" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + result = (int)(arg1)->socketDescriptor(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_connected) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLconnection_connected(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_connected" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + result = (int)(arg1)->connected(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_getInfo) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLconnection_getInfo(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_getInfo" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + result = (ESLevent *)(arg1)->getInfo(); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_send) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLconnection_send(self,cmd);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_send" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_send" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (int)(arg1)->send((char const *)arg2); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_sendRecv) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLconnection_sendRecv(self,cmd);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_sendRecv" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_sendRecv" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (ESLevent *)(arg1)->sendRecv((char const *)arg2); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_api) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) NULL ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 3)) { + SWIG_croak("Usage: ESLconnection_api(self,cmd,arg);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_api" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_api" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (items > 2) { + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_api" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + } + result = (ESLevent *)(arg1)->api((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_bgapi) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) NULL ; + char *arg4 = (char *) NULL ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int res4 ; + char *buf4 = 0 ; + int alloc4 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 4)) { + SWIG_croak("Usage: ESLconnection_bgapi(self,cmd,arg,job_uuid);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_bgapi" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_bgapi" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (items > 2) { + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_bgapi" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + } + if (items > 3) { + res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ESLconnection_bgapi" "', argument " "4"" of type '" "char const *""'"); + } + arg4 = reinterpret_cast< char * >(buf4); + } + result = (ESLevent *)(arg1)->bgapi((char const *)arg2,(char const *)arg3,(char const *)arg4); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_sendEvent) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + ESLevent *arg2 = (ESLevent *) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLconnection_sendEvent(self,send_me);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_sendEvent" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_sendEvent" "', argument " "2"" of type '" "ESLevent *""'"); + } + arg2 = reinterpret_cast< ESLevent * >(argp2); + result = (ESLevent *)(arg1)->sendEvent(arg2); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_sendMSG) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + ESLevent *arg2 = (ESLevent *) 0 ; + char *arg3 = (char *) NULL ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 3)) { + SWIG_croak("Usage: ESLconnection_sendMSG(self,send_me,uuid);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_sendMSG" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_ESLevent, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_sendMSG" "', argument " "2"" of type '" "ESLevent *""'"); + } + arg2 = reinterpret_cast< ESLevent * >(argp2); + if (items > 2) { + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_sendMSG" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + } + result = (int)(arg1)->sendMSG(arg2,(char const *)arg3); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_recvEvent) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLconnection_recvEvent(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_recvEvent" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + result = (ESLevent *)(arg1)->recvEvent(); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_recvEventTimed) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + int arg2 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLconnection_recvEventTimed(self,ms);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_recvEventTimed" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ESLconnection_recvEventTimed" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + result = (ESLevent *)(arg1)->recvEventTimed(arg2); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_filter) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: ESLconnection_filter(self,header,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_filter" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_filter" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_filter" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (ESLevent *)(arg1)->filter((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_events) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: ESLconnection_events(self,etype,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_events" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_events" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_events" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (int)(arg1)->events((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_execute) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) NULL ; + char *arg4 = (char *) NULL ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int res4 ; + char *buf4 = 0 ; + int alloc4 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 4)) { + SWIG_croak("Usage: ESLconnection_execute(self,app,arg,uuid);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_execute" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_execute" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (items > 2) { + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_execute" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + } + if (items > 3) { + res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ESLconnection_execute" "', argument " "4"" of type '" "char const *""'"); + } + arg4 = reinterpret_cast< char * >(buf4); + } + result = (ESLevent *)(arg1)->execute((char const *)arg2,(char const *)arg3,(char const *)arg4); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_executeAsync) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) NULL ; + char *arg4 = (char *) NULL ; + ESLevent *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int res4 ; + char *buf4 = 0 ; + int alloc4 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 4)) { + SWIG_croak("Usage: ESLconnection_executeAsync(self,app,arg,uuid);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_executeAsync" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_executeAsync" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (items > 2) { + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ESLconnection_executeAsync" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + } + if (items > 3) { + res4 = SWIG_AsCharPtrAndSize(ST(3), &buf4, NULL, &alloc4); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ESLconnection_executeAsync" "', argument " "4"" of type '" "char const *""'"); + } + arg4 = reinterpret_cast< char * >(buf4); + } + result = (ESLevent *)(arg1)->executeAsync((char const *)arg2,(char const *)arg3,(char const *)arg4); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ESLevent, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + if (alloc4 == SWIG_NEWOBJ) delete[] buf4; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_setAsyncExecute) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLconnection_setAsyncExecute(self,val);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_setAsyncExecute" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_setAsyncExecute" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (int)(arg1)->setAsyncExecute((char const *)arg2); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_setEventLock) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + char *arg2 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: ESLconnection_setEventLock(self,val);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_setEventLock" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ESLconnection_setEventLock" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (int)(arg1)->setEventLock((char const *)arg2); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_ESLconnection_disconnect) { + { + ESLconnection *arg1 = (ESLconnection *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: ESLconnection_disconnect(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_ESLconnection, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ESLconnection_disconnect" "', argument " "1"" of type '" "ESLconnection *""'"); + } + arg1 = reinterpret_cast< ESLconnection * >(argp1); + result = (int)(arg1)->disconnect(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_eslSetLogLevel) { + { + int arg1 ; + int val1 ; + int ecode1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: eslSetLogLevel(level);"); + } + ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "eslSetLogLevel" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + eslSetLogLevel(arg1); + + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + +static swig_type_info _swigt__p_ESLconnection = {"_p_ESLconnection", "ESLconnection *", 0, 0, (void*)"ESL::ESLconnection", 0}; +static swig_type_info _swigt__p_ESLevent = {"_p_ESLevent", "ESLevent *", 0, 0, (void*)"ESL::ESLevent", 0}; +static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_esl_event_t = {"_p_esl_event_t", "esl_event_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_esl_priority_t = {"_p_esl_priority_t", "esl_priority_t *", 0, 0, (void*)0, 0}; + +static swig_type_info *swig_type_initial[] = { + &_swigt__p_ESLconnection, + &_swigt__p_ESLevent, + &_swigt__p_char, + &_swigt__p_esl_event_t, + &_swigt__p_esl_priority_t, +}; + +static swig_cast_info _swigc__p_ESLconnection[] = { {&_swigt__p_ESLconnection, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ESLevent[] = { {&_swigt__p_ESLevent, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_esl_event_t[] = { {&_swigt__p_esl_event_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_esl_priority_t[] = { {&_swigt__p_esl_priority_t, 0, 0, 0},{0, 0, 0, 0}}; + +static swig_cast_info *swig_cast_initial[] = { + _swigc__p_ESLconnection, + _swigc__p_ESLevent, + _swigc__p_char, + _swigc__p_esl_event_t, + _swigc__p_esl_priority_t, +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ + +static swig_constant_info swig_constants[] = { +{0,0,0,0,0,0} +}; +#ifdef __cplusplus +} +#endif +static swig_variable_info swig_variables[] = { +{0,0,0,0} +}; +static swig_command_info swig_commands[] = { +{"ESLc::ESLevent_event_set", _wrap_ESLevent_event_set}, +{"ESLc::ESLevent_event_get", _wrap_ESLevent_event_get}, +{"ESLc::ESLevent_serialized_string_set", _wrap_ESLevent_serialized_string_set}, +{"ESLc::ESLevent_serialized_string_get", _wrap_ESLevent_serialized_string_get}, +{"ESLc::ESLevent_mine_set", _wrap_ESLevent_mine_set}, +{"ESLc::ESLevent_mine_get", _wrap_ESLevent_mine_get}, +{"ESLc::new_ESLevent", _wrap_new_ESLevent}, +{"ESLc::delete_ESLevent", _wrap_delete_ESLevent}, +{"ESLc::ESLevent_serialize", _wrap_ESLevent_serialize}, +{"ESLc::ESLevent_setPriority", _wrap_ESLevent_setPriority}, +{"ESLc::ESLevent_getHeader", _wrap_ESLevent_getHeader}, +{"ESLc::ESLevent_getBody", _wrap_ESLevent_getBody}, +{"ESLc::ESLevent_getType", _wrap_ESLevent_getType}, +{"ESLc::ESLevent_addBody", _wrap_ESLevent_addBody}, +{"ESLc::ESLevent_addHeader", _wrap_ESLevent_addHeader}, +{"ESLc::ESLevent_pushHeader", _wrap_ESLevent_pushHeader}, +{"ESLc::ESLevent_unshiftHeader", _wrap_ESLevent_unshiftHeader}, +{"ESLc::ESLevent_delHeader", _wrap_ESLevent_delHeader}, +{"ESLc::ESLevent_firstHeader", _wrap_ESLevent_firstHeader}, +{"ESLc::ESLevent_nextHeader", _wrap_ESLevent_nextHeader}, +{"ESLc::new_ESLconnection", _wrap_new_ESLconnection}, +{"ESLc::delete_ESLconnection", _wrap_delete_ESLconnection}, +{"ESLc::ESLconnection_socketDescriptor", _wrap_ESLconnection_socketDescriptor}, +{"ESLc::ESLconnection_connected", _wrap_ESLconnection_connected}, +{"ESLc::ESLconnection_getInfo", _wrap_ESLconnection_getInfo}, +{"ESLc::ESLconnection_send", _wrap_ESLconnection_send}, +{"ESLc::ESLconnection_sendRecv", _wrap_ESLconnection_sendRecv}, +{"ESLc::ESLconnection_api", _wrap_ESLconnection_api}, +{"ESLc::ESLconnection_bgapi", _wrap_ESLconnection_bgapi}, +{"ESLc::ESLconnection_sendEvent", _wrap_ESLconnection_sendEvent}, +{"ESLc::ESLconnection_sendMSG", _wrap_ESLconnection_sendMSG}, +{"ESLc::ESLconnection_recvEvent", _wrap_ESLconnection_recvEvent}, +{"ESLc::ESLconnection_recvEventTimed", _wrap_ESLconnection_recvEventTimed}, +{"ESLc::ESLconnection_filter", _wrap_ESLconnection_filter}, +{"ESLc::ESLconnection_events", _wrap_ESLconnection_events}, +{"ESLc::ESLconnection_execute", _wrap_ESLconnection_execute}, +{"ESLc::ESLconnection_executeAsync", _wrap_ESLconnection_executeAsync}, +{"ESLc::ESLconnection_setAsyncExecute", _wrap_ESLconnection_setAsyncExecute}, +{"ESLc::ESLconnection_setEventLock", _wrap_ESLconnection_setEventLock}, +{"ESLc::ESLconnection_disconnect", _wrap_ESLconnection_disconnect}, +{"ESLc::eslSetLogLevel", _wrap_eslSetLogLevel}, +{0,0} +}; +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned staticly to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int found, init; + + clientdata = clientdata; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + module_head = &swig_module; + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + found=0; + iter=module_head; + do { + if (iter==&swig_module) { + found=1; + break; + } + iter=iter->next; + } while (iter!= module_head); + + /* if the is found in the list, then all is done and we may leave */ + if (found) return; + /* otherwise we must add out module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpeters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %d\n", swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ + /* c-mode */ +#endif +} +#endif + + + +#ifdef __cplusplus +extern "C" +#endif + +XS(SWIG_init) { + dXSARGS; + int i; + + SWIG_InitializeModule(0); + + /* Install commands */ + for (i = 0; swig_commands[i].name; i++) { + newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__); + } + + /* Install variables */ + for (i = 0; swig_variables[i].name; i++) { + SV *sv; + sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI); + if (swig_variables[i].type) { + SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0); + } else { + sv_setiv(sv,(IV) 0); + } + swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); + } + + /* Install constant */ + for (i = 0; swig_constants[i].type; i++) { + SV *sv; + sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI); + switch(swig_constants[i].type) { + case SWIG_INT: + sv_setiv(sv, (IV) swig_constants[i].lvalue); + break; + case SWIG_FLOAT: + sv_setnv(sv, (double) swig_constants[i].dvalue); + break; + case SWIG_STRING: + sv_setpv(sv, (char *) swig_constants[i].pvalue); + break; + case SWIG_POINTER: + SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0); + break; + case SWIG_BINARY: + SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype)); + break; + default: + break; + } + SvREADONLY_on(sv); + } + + SWIG_TypeClientData(SWIGTYPE_p_ESLevent, (void*) "ESL::ESLevent"); + SWIG_TypeClientData(SWIGTYPE_p_ESLconnection, (void*) "ESL::ESLconnection"); + ST(0) = &PL_sv_yes; + XSRETURN(1); +} + diff --git a/libs/libscgi/perl/perlxsi.c b/libs/libscgi/perl/perlxsi.c new file mode 100644 index 0000000000..9ca8fc1fb1 --- /dev/null +++ b/libs/libscgi/perl/perlxsi.c @@ -0,0 +1,16 @@ +#include +#include + +EXTERN_C void xs_init (pTHX); + +EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); + +EXTERN_C void +xs_init(pTHX) +{ + char *file = __FILE__; + dXSUB_SYS; + + /* DynaLoader is a special case */ + newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); +} diff --git a/libs/libscgi/perl/scgi_wrap.cpp b/libs/libscgi/perl/scgi_wrap.cpp new file mode 100644 index 0000000000..aaa8e40219 --- /dev/null +++ b/libs/libscgi/perl/scgi_wrap.cpp @@ -0,0 +1,2459 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.35 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#define SWIGPERL +#define SWIG_CASTRANK_MODE + +#ifdef __cplusplus +template class SwigValueWrapper { + T *tt; +public: + SwigValueWrapper() : tt(0) { } + SwigValueWrapper(const SwigValueWrapper& rhs) : tt(new T(*rhs.tt)) { } + SwigValueWrapper(const T& t) : tt(new T(t)) { } + ~SwigValueWrapper() { delete tt; } + SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; } + operator T&() const { return *tt; } + T *operator&() { return tt; } +private: + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + + +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic CAPI SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the swig runtime code. + In 99.9% of the cases, swig just needs to declare them as 'static'. + + But only do this if is strictly necessary, ie, if you have problems + with your compiler or so. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The swig conversion methods, as ConvertPtr, return and integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old swig versions, you usually write code as: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit as: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + that seems to be the same, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + requires also to SWIG_ConvertPtr to return new result values, as + + int SWIG_ConvertPtr(obj, ptr,...) { + if () { + if () { + *ptr = ; + return SWIG_NEWOBJ; + } else { + *ptr = ; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + swig errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() + + + */ +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class" == "Class", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like ||... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like ||... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCompare(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + + +/* think of this as a c++ template<> or a scheme macro */ +#define SWIG_TypeCheck_Template(comparison, ty) \ + if (ty) { \ + swig_cast_info *iter = ty->cast; \ + while (iter) { \ + if (comparison) { \ + if (iter == ty->cast) return iter; \ + /* Move iter to the top of the linked list */ \ + iter->prev->next = iter->next; \ + if (iter->next) \ + iter->next->prev = iter->prev; \ + iter->next = ty->cast; \ + iter->prev = 0; \ + if (ty->cast) ty->cast->prev = iter; \ + ty->cast = iter; \ + return iter; \ + } \ + iter = iter->next; \ + } \ + } \ + return 0 + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty); +} + +/* Same as previous function, except strcmp is replaced with a pointer comparison */ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) { + SWIG_TypeCheck_Template(iter->type == from, into); +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + register size_t l = 0; + register size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + register size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + register int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + register size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + register const unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + register unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register char d = *(c++); + register unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +#ifdef __cplusplus +/* Needed on some windows machines---since MS plays funny games with the header files under C++ */ +#include +#include +extern "C" { +#endif +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +/* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */ + +/* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */ +#ifndef PERL_REVISION +# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) +# define PERL_PATCHLEVEL_H_IMPLICIT +# include +# endif +# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) +# include +# endif +# ifndef PERL_REVISION +# define PERL_REVISION (5) +# define PERL_VERSION PATCHLEVEL +# define PERL_SUBVERSION SUBVERSION +# endif +#endif + +#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE) +#define PerlIO_exportFILE(fh,fl) (FILE*)(fh) +#endif + +#ifndef SvIOK_UV +# define SvIOK_UV(sv) (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv))) +#endif + +#ifndef SvUOK +# define SvUOK(sv) SvIOK_UV(sv) +#endif + +#if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))) +# define PL_sv_undef sv_undef +# define PL_na na +# define PL_errgv errgv +# define PL_sv_no sv_no +# define PL_sv_yes sv_yes +# define PL_markstack_ptr markstack_ptr +#endif + +#ifndef IVSIZE +# ifdef LONGSIZE +# define IVSIZE LONGSIZE +# else +# define IVSIZE 4 /* A bold guess, but the best we can make. */ +# endif +#endif + +#ifndef INT2PTR +# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) +# define PTRV UV +# define INT2PTR(any,d) (any)(d) +# else +# if PTRSIZE == LONGSIZE +# define PTRV unsigned long +# else +# define PTRV unsigned +# endif +# define INT2PTR(any,d) (any)(PTRV)(d) +# endif + +# define NUM2PTR(any,d) (any)(PTRV)(d) +# define PTR2IV(p) INT2PTR(IV,p) +# define PTR2UV(p) INT2PTR(UV,p) +# define PTR2NV(p) NUM2PTR(NV,p) + +# if PTRSIZE == LONGSIZE +# define PTR2ul(p) (unsigned long)(p) +# else +# define PTR2ul(p) INT2PTR(unsigned long,p) +# endif +#endif /* !INT2PTR */ + +#ifndef SvPV_nolen +# define SvPV_nolen(x) SvPV(x,PL_na) +#endif + +#ifndef get_sv +# define get_sv perl_get_sv +#endif + +#ifndef ERRSV +# define ERRSV get_sv("@",FALSE) +#endif + +#ifndef pTHX_ +#define pTHX_ +#endif + +#include +#ifdef __cplusplus +} +#endif + +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGINTERN const char* +SWIG_Perl_ErrorType(int code) { + const char* type = 0; + switch(code) { + case SWIG_MemoryError: + type = "MemoryError"; + break; + case SWIG_IOError: + type = "IOError"; + break; + case SWIG_RuntimeError: + type = "RuntimeError"; + break; + case SWIG_IndexError: + type = "IndexError"; + break; + case SWIG_TypeError: + type = "TypeError"; + break; + case SWIG_DivisionByZero: + type = "ZeroDivisionError"; + break; + case SWIG_OverflowError: + type = "OverflowError"; + break; + case SWIG_SyntaxError: + type = "SyntaxError"; + break; + case SWIG_ValueError: + type = "ValueError"; + break; + case SWIG_SystemError: + type = "SystemError"; + break; + case SWIG_AttributeError: + type = "AttributeError"; + break; + default: + type = "RuntimeError"; + } + return type; +} + + + + +/* ----------------------------------------------------------------------------- + * perlrun.swg + * + * This file contains the runtime support for Perl modules + * and includes code for managing global variables and pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +#ifdef PERL_OBJECT +#define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl), +#define SWIG_PERL_OBJECT_CALL pPerl, +#else +#define SWIG_PERL_OBJECT_DECL +#define SWIG_PERL_OBJECT_CALL +#endif + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_ConvertPtr(obj, pp, type, flags) SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags) +#define SWIG_NewPointerObj(p, type, flags) SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags) + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, p, s, type) SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type) +#define SWIG_NewPackedObj(p, s, type) SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_ConvertPtr(obj, pptr, type, 0) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Perl_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Perl_SetModule(pointer) + + +/* Error manipulation */ + +#define SWIG_ErrorType(code) SWIG_Perl_ErrorType(code) +#define SWIG_Error(code, msg) sv_setpvf(GvSV(PL_errgv),"%s %s\n", SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + +/* Perl-specific SWIG API */ + +#define SWIG_MakePtr(sv, ptr, type, flags) SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags) +#define SWIG_MakePackedObj(sv, p, s, type) SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type) +#define SWIG_SetError(str) SWIG_Error(SWIG_RuntimeError, str) + + +#define SWIG_PERL_DECL_ARGS_1(arg1) (SWIG_PERL_OBJECT_DECL arg1) +#define SWIG_PERL_CALL_ARGS_1(arg1) (SWIG_PERL_OBJECT_CALL arg1) +#define SWIG_PERL_DECL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_DECL arg1, arg2) +#define SWIG_PERL_CALL_ARGS_2(arg1, arg2) (SWIG_PERL_OBJECT_CALL arg1, arg2) + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +/* For backward compatibility only */ +#define SWIG_POINTER_EXCEPTION 0 + +#ifdef __cplusplus +extern "C" { +#endif + +#define SWIG_OWNER SWIG_POINTER_OWN +#define SWIG_SHADOW SWIG_OWNER << 1 + +#define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL + +/* SWIG Perl macros */ + +/* Macro to declare an XS function */ +#ifndef XSPROTO +# define XSPROTO(name) void name(pTHX_ CV* cv) +#endif + +/* Macro to call an XS function */ +#ifdef PERL_OBJECT +# define SWIG_CALLXS(_name) _name(cv,pPerl) +#else +# ifndef MULTIPLICITY +# define SWIG_CALLXS(_name) _name(cv) +# else +# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) +# endif +#endif + +#ifdef PERL_OBJECT +#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this; + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) +#define SWIGCLASS_STATIC + +#else /* PERL_OBJECT */ + +#define MAGIC_PPERL +#define SWIGCLASS_STATIC static SWIGUNUSED + +#ifndef MULTIPLICITY +#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b) + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (*SwigMagicFunc)(SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#else /* MULTIPLICITY */ + +#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b) + +#ifdef __cplusplus +extern "C" { +#endif +typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *); +#ifdef __cplusplus +} +#endif + +#endif /* MULTIPLICITY */ +#endif /* PERL_OBJECT */ + +/* Workaround for bug in perl 5.6.x croak and earlier */ +#if (PERL_VERSION < 8) +# ifdef PERL_OBJECT +# define SWIG_croak_null() SWIG_Perl_croak_null(pPerl) +static void SWIG_Perl_croak_null(CPerlObj *pPerl) +# else +static void SWIG_croak_null() +# endif +{ + SV *err=ERRSV; +# if (PERL_VERSION < 6) + croak("%_", err); +# else + if (SvOK(err) && !SvROK(err)) croak("%_", err); + croak(Nullch); +# endif +} +#else +# define SWIG_croak_null() croak(Nullch) +#endif + + +/* + Define how strict is the cast between strings and integers/doubles + when overloading between these types occurs. + + The default is making it as strict as possible by using SWIG_AddCast + when needed. + + You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to + disable the SWIG_AddCast, making the casting between string and + numbers less strict. + + In the end, we try to solve the overloading between strings and + numerical types in the more natural way, but if you can avoid it, + well, avoid it using %rename, for example. +*/ +#ifndef SWIG_PERL_NO_STRICT_STR2NUM +# ifndef SWIG_PERL_STRICT_STR2NUM +# define SWIG_PERL_STRICT_STR2NUM +# endif +#endif +#ifdef SWIG_PERL_STRICT_STR2NUM +/* string takes precedence */ +#define SWIG_Str2NumCast(x) SWIG_AddCast(x) +#else +/* number takes precedence */ +#define SWIG_Str2NumCast(x) x +#endif + + + +#include + +SWIGRUNTIME const char * +SWIG_Perl_TypeProxyName(const swig_type_info *type) { + if (!type) return NULL; + if (type->clientdata != NULL) { + return (const char*) type->clientdata; + } + else { + return type->name; + } +} + +SWIGRUNTIME swig_cast_info * +SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) { + SWIG_TypeCheck_Template(( (!iter->type->clientdata && (strcmp(iter->type->name, c) == 0)) + || (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0))), ty); +} + + +/* Function for getting a pointer value */ + +SWIGRUNTIME int +SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) { + swig_cast_info *tc; + void *voidptr = (void *)0; + SV *tsv = 0; + /* If magical, apply more magic */ + if (SvGMAGICAL(sv)) + mg_get(sv); + + /* Check to see if this is an object */ + if (sv_isobject(sv)) { + IV tmp = 0; + tsv = (SV*) SvRV(sv); + if ((SvTYPE(tsv) == SVt_PVHV)) { + MAGIC *mg; + if (SvMAGICAL(tsv)) { + mg = mg_find(tsv,'P'); + if (mg) { + sv = mg->mg_obj; + if (sv_isobject(sv)) { + tsv = (SV*)SvRV(sv); + tmp = SvIV(tsv); + } + } + } else { + return SWIG_ERROR; + } + } else { + tmp = SvIV(tsv); + } + voidptr = INT2PTR(void *,tmp); + } else if (! SvOK(sv)) { /* Check for undef */ + *(ptr) = (void *) 0; + return SWIG_OK; + } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */ + if (!SvROK(sv)) { + *(ptr) = (void *) 0; + return SWIG_OK; + } else { + return SWIG_ERROR; + } + } else { /* Don't know what it is */ + return SWIG_ERROR; + } + if (_t) { + /* Now see if the types match */ + char *_c = HvNAME(SvSTASH(SvRV(sv))); + tc = SWIG_TypeProxyCheck(_c,_t); + if (!tc) { + return SWIG_ERROR; + } + { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,voidptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } + } else { + *ptr = voidptr; + } + + /* + * DISOWN implementation: we need a perl guru to check this one. + */ + if (tsv && (flags & SWIG_POINTER_DISOWN)) { + /* + * almost copy paste code from below SWIG_POINTER_OWN setting + */ + SV *obj = sv; + HV *stash = SvSTASH(SvRV(obj)); + GV *gv = *(GV**) hv_fetch(stash, "OWNER", 5, TRUE); + if (isGV(gv)) { + HV *hv = GvHVn(gv); + /* + * To set ownership (see below), a newSViv(1) entry is added. + * Hence, to remove ownership, we delete the entry. + */ + if (hv_exists_ent(hv, obj, 0)) { + hv_delete_ent(hv, obj, 0, 0); + } + } + } + return SWIG_OK; +} + +SWIGRUNTIME void +SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) { + if (ptr && (flags & SWIG_SHADOW)) { + SV *self; + SV *obj=newSV(0); + HV *hash=newHV(); + HV *stash; + sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr); + stash=SvSTASH(SvRV(obj)); + if (flags & SWIG_POINTER_OWN) { + HV *hv; + GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE); + if (!isGV(gv)) + gv_init(gv, stash, "OWNER", 5, FALSE); + hv=GvHVn(gv); + hv_store_ent(hv, obj, newSViv(1), 0); + } + sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0); + SvREFCNT_dec(obj); + self=newRV_noinc((SV *)hash); + sv_setsv(sv, self); + SvREFCNT_dec((SV *)self); + sv_bless(sv, stash); + } + else { + sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr); + } +} + +SWIGRUNTIMEINLINE SV * +SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) { + SV *result = sv_newmortal(); + SWIG_MakePtr(result, ptr, t, flags); + return result; +} + +SWIGRUNTIME void +SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) { + char result[1024]; + char *r = result; + if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + strcpy(r,SWIG_Perl_TypeProxyName(type)); + sv_setpv(sv, result); +} + +SWIGRUNTIME SV * +SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) { + SV *result = sv_newmortal(); + SWIG_Perl_MakePackedObj(result, ptr, sz, type); + return result; +} + +/* Convert a packed value value */ +SWIGRUNTIME int +SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) { + swig_cast_info *tc; + const char *c = 0; + + if ((!obj) || (!SvOK(obj))) return SWIG_ERROR; + c = SvPV_nolen(obj); + /* Pointer values must start with leading underscore */ + if (*c != '_') return SWIG_ERROR; + c++; + c = SWIG_UnpackData(c,ptr,sz); + if (ty) { + tc = SWIG_TypeCheck(c,ty); + if (!tc) return SWIG_ERROR; + } + return SWIG_OK; +} + + +/* Macros for low-level exception handling */ +#define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; } + + +typedef XSPROTO(SwigPerlWrapper); +typedef SwigPerlWrapper *SwigPerlWrapperPtr; + +/* Structure for command table */ +typedef struct { + const char *name; + SwigPerlWrapperPtr wrapper; +} swig_command_info; + +/* Information for constant table */ + +#define SWIG_INT 1 +#define SWIG_FLOAT 2 +#define SWIG_STRING 3 +#define SWIG_POINTER 4 +#define SWIG_BINARY 5 + +/* Constant information structure */ +typedef struct swig_constant_info { + int type; + const char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_constant_info; + + +/* Structure for variable table */ +typedef struct { + const char *name; + SwigMagicFunc set; + SwigMagicFunc get; + swig_type_info **type; +} swig_variable_info; + +/* Magic variable code */ +#ifndef PERL_OBJECT +#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c) + #ifndef MULTIPLICITY + SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) + #else + SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) + #endif +#else +# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c) +SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) +#endif +{ + MAGIC *mg; + sv_magic(sv,sv,'U',(char *) name,strlen(name)); + mg = mg_find(sv,'U'); + mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL)); + mg->mg_virtual->svt_get = (SwigMagicFunc) get; + mg->mg_virtual->svt_set = (SwigMagicFunc) set; + mg->mg_virtual->svt_len = 0; + mg->mg_virtual->svt_clear = 0; + mg->mg_virtual->svt_free = 0; +} + + +SWIGRUNTIME swig_module_info * +SWIG_Perl_GetModule(void) { + static void *type_pointer = (void *)0; + SV *pointer; + + /* first check if pointer already created */ + if (!type_pointer) { + pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI); + if (pointer && SvOK(pointer)) { + type_pointer = INT2PTR(swig_type_info **, SvIV(pointer)); + } + } + + return (swig_module_info *) type_pointer; +} + +SWIGRUNTIME void +SWIG_Perl_SetModule(swig_module_info *module) { + SV *pointer; + + /* create a new pointer */ + pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI); + sv_setiv(pointer, PTR2IV(module)); +} + +#ifdef __cplusplus +} +#endif + +/* Workaround perl5 global namespace pollution. Note that undefining library + * functions like fopen will not solve the problem on all platforms as fopen + * might be a macro on Windows but not necessarily on other operating systems. */ +#ifdef do_open + #undef do_open +#endif +#ifdef do_close + #undef do_close +#endif +#ifdef scalar + #undef scalar +#endif +#ifdef list + #undef list +#endif +#ifdef apply + #undef apply +#endif +#ifdef convert + #undef convert +#endif +#ifdef Error + #undef Error +#endif +#ifdef form + #undef form +#endif +#ifdef vform + #undef vform +#endif +#ifdef LABEL + #undef LABEL +#endif +#ifdef METHOD + #undef METHOD +#endif +#ifdef Move + #undef Move +#endif +#ifdef yylex + #undef yylex +#endif +#ifdef yyparse + #undef yyparse +#endif +#ifdef yyerror + #undef yyerror +#endif +#ifdef invert + #undef invert +#endif +#ifdef ref + #undef ref +#endif +#ifdef read + #undef read +#endif +#ifdef write + #undef write +#endif +#ifdef eof + #undef eof +#endif +#ifdef bool + #undef bool +#endif +#ifdef close + #undef close +#endif +#ifdef rewind + #undef rewind +#endif +#ifdef free + #undef free +#endif +#ifdef malloc + #undef malloc +#endif +#ifdef calloc + #undef calloc +#endif +#ifdef Stat + #undef Stat +#endif +#ifdef check + #undef check +#endif +#ifdef seekdir + #undef seekdir +#endif +#ifdef open + #undef open +#endif + + + +#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else + + + +/* -------- TYPES TABLE (BEGIN) -------- */ + +#define SWIGTYPE_p_SCGIhandle swig_types[0] +#define SWIGTYPE_p_char swig_types[1] +static swig_type_info *swig_types[3]; +static swig_module_info swig_module = {swig_types, 2, 0, 0, 0, 0}; +#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) +#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +/* -------- TYPES TABLE (END) -------- */ + +#define SWIG_init boot_FSSCGI + +#define SWIG_name "FSSCGIc::boot_FSSCGI" +#define SWIG_prefix "FSSCGIc::" + +#define SWIGVERSION 0x010335 +#define SWIG_VERSION SWIGVERSION + + +#define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) +#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) + + +#include + + +#ifdef __cplusplus +extern "C" +#endif +#ifndef PERL_OBJECT +#ifndef MULTIPLICITY +SWIGEXPORT void SWIG_init (CV* cv); +#else +SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); +#endif +#else +SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *); +#endif + + +#include "scgi.h" +#include "scgi_oop.h" + + +SWIGINTERNINLINE SV * +SWIG_From_long SWIG_PERL_DECL_ARGS_1(long value) +{ + SV *obj = sv_newmortal(); + sv_setiv(obj, (IV) value); + return obj; +} + + +SWIGINTERNINLINE SV * +SWIG_From_int SWIG_PERL_DECL_ARGS_1(int value) +{ + return SWIG_From_long SWIG_PERL_CALL_ARGS_1(value); +} + + +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} + + +SWIGINTERN int +SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc) +{ + if (SvPOK(obj)) { + STRLEN len = 0; + char *cstr = SvPV(obj, len); + size_t size = len + 1; + if (cptr) { + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = reinterpret_cast< char* >(memcpy((new char[size]), cstr, sizeof(char)*(size))); + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } + } + if (psize) *psize = size; + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + char* vptr = 0; + if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = vptr; + if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} + + + + + +#include +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif + + +SWIGINTERN int +SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val) +{ + if (SvNIOK(obj)) { + if (val) *val = SvNV(obj); + return SWIG_OK; + } else if (SvIOK(obj)) { + if (val) *val = (double) SvIV(obj); + return SWIG_AddCast(SWIG_OK); + } else { + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + double v = strtod(nptr, &endptr); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + } + return SWIG_TypeError; +} + + +#include + + +#include + + +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} + + +SWIGINTERN int +SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val) +{ + if (SvIOK(obj)) { + if (val) *val = SvIV(obj); + return SWIG_OK; + } else { + int dispatch = 0; + const char *nptr = SvPV_nolen(obj); + if (nptr) { + char *endptr; + long v; + errno = 0; + v = strtol(nptr, &endptr,0); + if (errno == ERANGE) { + errno = 0; + return SWIG_OverflowError; + } else { + if (*endptr == '\0') { + if (val) *val = v; + return SWIG_Str2NumCast(SWIG_OK); + } + } + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val) +{ + long v; + int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v); + if (SWIG_IsOK(res)) { + if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< int >(v); + } + } + return res; +} + + +SWIGINTERNINLINE SV * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + SV *obj = sv_newmortal(); + if (carray) { + sv_setpvn(obj, carray, size); + } else { + sv_setsv(obj, &PL_sv_undef); + } + return obj; +} + + +SWIGINTERNINLINE SV * +SWIG_FromCharPtr(const char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); +} + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef PERL_OBJECT +#define MAGIC_CLASS _wrap_FSSCGI_var:: +class _wrap_FSSCGI_var : public CPerlObj { +public: +#else +#define MAGIC_CLASS +#endif +SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) { + MAGIC_PPERL + croak("Value is read-only."); + return 0; +} + + +#ifdef PERL_OBJECT +}; +#endif + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +XS(_wrap_new_SCGIhandle) { + { + SCGIhandle *result = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 0) || (items > 0)) { + SWIG_croak("Usage: new_SCGIhandle();"); + } + result = (SCGIhandle *)new SCGIhandle(); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_SCGIhandle, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + XSRETURN(argvi); + fail: + SWIG_croak_null(); + } +} + + +XS(_wrap_delete_SCGIhandle) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: delete_SCGIhandle(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SCGIhandle" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + delete arg1; + + + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_connected) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: SCGIhandle_connected(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_connected" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + result = (int)(arg1)->connected(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_socketDescriptor) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: SCGIhandle_socketDescriptor(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_socketDescriptor" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + result = (int)(arg1)->socketDescriptor(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_disconnect) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: SCGIhandle_disconnect(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_disconnect" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + result = (int)(arg1)->disconnect(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_addParam) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: SCGIhandle_addParam(self,name,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_addParam" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SCGIhandle_addParam" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "SCGIhandle_addParam" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + result = (int)(arg1)->addParam((char const *)arg2,(char const *)arg3); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_addBody) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *arg2 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: SCGIhandle_addBody(self,value);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_addBody" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SCGIhandle_addBody" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (int)(arg1)->addBody((char const *)arg2); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_sendRequest) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int arg4 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 4) || (items > 4)) { + SWIG_croak("Usage: SCGIhandle_sendRequest(self,host,port,timeout);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_sendRequest" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SCGIhandle_sendRequest" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "SCGIhandle_sendRequest" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "SCGIhandle_sendRequest" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + result = (int)(arg1)->sendRequest((char const *)arg2,arg3,arg4); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + + + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_recv) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: SCGIhandle_recv(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_recv" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + result = (char *)(arg1)->recv(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_bind) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *arg2 = (char *) 0 ; + int arg3 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: SCGIhandle_bind(self,host,port);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_bind" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SCGIhandle_bind" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + ecode3 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "SCGIhandle_bind" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + result = (int)(arg1)->bind((char const *)arg2,arg3); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_accept) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: SCGIhandle_accept(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_accept" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + result = (int)(arg1)->accept(); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + +static swig_type_info _swigt__p_SCGIhandle = {"_p_SCGIhandle", "SCGIhandle *", 0, 0, (void*)"FSSCGI::SCGIhandle", 0}; +static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; + +static swig_type_info *swig_type_initial[] = { + &_swigt__p_SCGIhandle, + &_swigt__p_char, +}; + +static swig_cast_info _swigc__p_SCGIhandle[] = { {&_swigt__p_SCGIhandle, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; + +static swig_cast_info *swig_cast_initial[] = { + _swigc__p_SCGIhandle, + _swigc__p_char, +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ + +static swig_constant_info swig_constants[] = { +{0,0,0,0,0,0} +}; +#ifdef __cplusplus +} +#endif +static swig_variable_info swig_variables[] = { +{0,0,0,0} +}; +static swig_command_info swig_commands[] = { +{"FSSCGIc::new_SCGIhandle", _wrap_new_SCGIhandle}, +{"FSSCGIc::delete_SCGIhandle", _wrap_delete_SCGIhandle}, +{"FSSCGIc::SCGIhandle_connected", _wrap_SCGIhandle_connected}, +{"FSSCGIc::SCGIhandle_socketDescriptor", _wrap_SCGIhandle_socketDescriptor}, +{"FSSCGIc::SCGIhandle_disconnect", _wrap_SCGIhandle_disconnect}, +{"FSSCGIc::SCGIhandle_addParam", _wrap_SCGIhandle_addParam}, +{"FSSCGIc::SCGIhandle_addBody", _wrap_SCGIhandle_addBody}, +{"FSSCGIc::SCGIhandle_sendRequest", _wrap_SCGIhandle_sendRequest}, +{"FSSCGIc::SCGIhandle_recv", _wrap_SCGIhandle_recv}, +{"FSSCGIc::SCGIhandle_bind", _wrap_SCGIhandle_bind}, +{"FSSCGIc::SCGIhandle_accept", _wrap_SCGIhandle_accept}, +{0,0} +}; +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned staticly to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int found, init; + + clientdata = clientdata; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + module_head = &swig_module; + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + found=0; + iter=module_head; + do { + if (iter==&swig_module) { + found=1; + break; + } + iter=iter->next; + } while (iter!= module_head); + + /* if the is found in the list, then all is done and we may leave */ + if (found) return; + /* otherwise we must add out module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpeters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %d\n", swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ + /* c-mode */ +#endif +} +#endif + + + +#ifdef __cplusplus +extern "C" +#endif + +XS(SWIG_init) { + dXSARGS; + int i; + + SWIG_InitializeModule(0); + + /* Install commands */ + for (i = 0; swig_commands[i].name; i++) { + newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__); + } + + /* Install variables */ + for (i = 0; swig_variables[i].name; i++) { + SV *sv; + sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI); + if (swig_variables[i].type) { + SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0); + } else { + sv_setiv(sv,(IV) 0); + } + swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); + } + + /* Install constant */ + for (i = 0; swig_constants[i].type; i++) { + SV *sv; + sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI); + switch(swig_constants[i].type) { + case SWIG_INT: + sv_setiv(sv, (IV) swig_constants[i].lvalue); + break; + case SWIG_FLOAT: + sv_setnv(sv, (double) swig_constants[i].dvalue); + break; + case SWIG_STRING: + sv_setpv(sv, (char *) swig_constants[i].pvalue); + break; + case SWIG_POINTER: + SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0); + break; + case SWIG_BINARY: + SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype)); + break; + default: + break; + } + SvREADONLY_on(sv); + } + + SWIG_TypeClientData(SWIGTYPE_p_SCGIhandle, (void*) "FSSCGI::SCGIhandle"); + ST(0) = &PL_sv_yes; + XSRETURN(1); +} + diff --git a/libs/libscgi/src/include/scgi.h b/libs/libscgi/src/include/scgi.h index 29abcf0271..8a789a3a9f 100644 --- a/libs/libscgi/src/include/scgi.h +++ b/libs/libscgi/src/include/scgi.h @@ -179,7 +179,7 @@ typedef enum { SCGI_GENERR } scgi_status_t; -typedef void (*scgi_listen_callback_t)(scgi_socket_t server_sock, scgi_socket_t client_sock, struct sockaddr_in *addr); +typedef void (*scgi_listen_callback_t)(scgi_socket_t server_sock, scgi_socket_t *client_sock, struct sockaddr_in *addr); SCGI_DECLARE(scgi_status_t) scgi_connect(scgi_handle_t *handle, const char *host, scgi_port_t port, uint32_t timeout); SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle); @@ -193,6 +193,8 @@ SCGI_DECLARE(scgi_status_t) scgi_destroy_params(scgi_handle_t *handle); SCGI_DECLARE(scgi_status_t) scgi_listen(const char *host, scgi_port_t port, scgi_listen_callback_t callback); SCGI_DECLARE(const char *) scgi_get_body(scgi_handle_t *handle); SCGI_DECLARE(const char *) scgi_get_param(scgi_handle_t *handle, const char *name); +SCGI_DECLARE(scgi_status_t) scgi_bind(const char *host, scgi_port_t port, scgi_socket_t *socketp); +SCGI_DECLARE(scgi_status_t) scgi_accept(scgi_socket_t server_sock, scgi_socket_t *client_sock_p, struct sockaddr_in *echoClntAddr); #ifdef __cplusplus } diff --git a/libs/libscgi/src/include/scgi_oop.h b/libs/libscgi/src/include/scgi_oop.h new file mode 100644 index 0000000000..a49c96cdd1 --- /dev/null +++ b/libs/libscgi/src/include/scgi_oop.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2007-2012, Anthony Minessale II + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the original author; nor the names of any contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER + * 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. + */ + +#ifndef _SCGI_OOP_H_ +#define _SCGI_OOP_H_ +#include +#ifdef __cplusplus +extern "C" { +#endif + +#define this_check(x) do { if (!this) { scgi_log(SCGI_LOG_ERROR, "object is not initalized\n"); return x;}} while(0) +#define this_check_void() do { if (!this) { scgi_log(SCGI_LOG_ERROR, "object is not initalized\n"); return;}} while(0) + + + +class SCGIhandle { + private: + scgi_handle_t handle; + unsigned char buf[65536]; + public: + SCGIhandle(); + virtual ~SCGIhandle(); + int connected(); + int socketDescriptor(); + int disconnect(void); + int addParam(const char *name, const char *value); + int addBody(const char *value); + int sendRequest(const char *host, int port, int timeout); + char *recv(); + int bind(const char *host, int port); + int accept(void); +}; + + + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c index f50b5b8d88..f33afe30c8 100644 --- a/libs/libscgi/src/scgi.c +++ b/libs/libscgi/src/scgi.c @@ -548,7 +548,7 @@ static int scgi_socket_reuseaddr(scgi_socket_t socket) #endif } -SCGI_DECLARE(scgi_status_t) scgi_listen(const char *host, scgi_port_t port, scgi_listen_callback_t callback) +SCGI_DECLARE(scgi_status_t) scgi_bind(const char *host, scgi_port_t port, scgi_socket_t *socketp) { scgi_socket_t server_sock = SCGI_SOCK_INVALID; struct sockaddr_in addr; @@ -573,32 +573,64 @@ SCGI_DECLARE(scgi_status_t) scgi_listen(const char *host, scgi_port_t port, scgi if (listen(server_sock, 10000) < 0) { status = SCGI_FAIL; goto end; - } - - for (;;) { - int client_sock; - struct sockaddr_in echoClntAddr; -#ifdef WIN32 - int clntLen; -#else - unsigned int clntLen; -#endif - - clntLen = sizeof(echoClntAddr); - - if ((client_sock = accept(server_sock, (struct sockaddr *) &echoClntAddr, &clntLen)) == SCGI_SOCK_INVALID) { - status = SCGI_FAIL; - goto end; - } - - callback(server_sock, client_sock, &echoClntAddr); - } + } end: if (server_sock != SCGI_SOCK_INVALID) { closesocket(server_sock); server_sock = SCGI_SOCK_INVALID; + } else { + *socketp = server_sock; + } + + return status; +} + +SCGI_DECLARE(scgi_status_t) scgi_accept(scgi_socket_t server_sock, scgi_socket_t *client_sock_p, struct sockaddr_in *echoClntAddr) +{ + scgi_status_t status = SCGI_SUCCESS; + int client_sock; + struct sockaddr_in local_echoClntAddr; +#ifdef WIN32 + int clntLen; +#else + unsigned int clntLen; +#endif + + if (!echoClntAddr) { + echoClntAddr = &local_echoClntAddr; + } + + + clntLen = sizeof(*echoClntAddr); + + if ((client_sock = accept(server_sock, (struct sockaddr *) echoClntAddr, &clntLen)) == SCGI_SOCK_INVALID) { + status = SCGI_FAIL; + } else { + *client_sock_p = client_sock; + } + + return status; +} + +SCGI_DECLARE(scgi_status_t) scgi_listen(const char *host, scgi_port_t port, scgi_listen_callback_t callback) +{ + + scgi_socket_t server_sock = SCGI_SOCK_INVALID, client_sock = SCGI_SOCK_INVALID; + scgi_status_t status = SCGI_FAIL; + struct sockaddr_in echoClntAddr; + + if ((status = scgi_bind(host, port, &server_sock)) == SCGI_SUCCESS) { + + while(scgi_accept(server_sock, &client_sock, &echoClntAddr) == SCGI_SUCCESS) { + callback(server_sock, &client_sock, &echoClntAddr); + + if (client_sock != SCGI_SOCK_INVALID) { + closesocket(client_sock); + client_sock = SCGI_SOCK_INVALID; + } + } } return status; diff --git a/libs/libscgi/src/scgi_oop.cpp b/libs/libscgi/src/scgi_oop.cpp new file mode 100644 index 0000000000..c5b98334b9 --- /dev/null +++ b/libs/libscgi/src/scgi_oop.cpp @@ -0,0 +1,101 @@ +#include +#include + +#define connection_construct_common() memset(&handle, 0, sizeof(handle)) + + + +SCGIhandle::SCGIhandle(void) +{ + connection_construct_common(); +} + +SCGIhandle::~SCGIhandle() +{ + if (handle.connected) { + scgi_disconnect(&handle); + } +} + +int SCGIhandle::socketDescriptor() +{ + if (handle.connected) { + return (int) handle.sock; + } + + return -1; +} + + +int SCGIhandle::disconnect() +{ + if (handle.connected) { + return scgi_disconnect(&handle); + } + + return 0; +} + +int SCGIhandle::connected() +{ + return handle.connected; +} + +int SCGIhandle::addParam(const char *name, const char *value) +{ + return (int) scgi_add_param(&handle, name, value); +} + +int SCGIhandle::addBody(const char *value) +{ + return (int) scgi_add_body(&handle, value); +} + + +int SCGIhandle::sendRequest(const char *host, int port, int timeout) +{ + if (!host) { + return -2; + } + + if (timeout < 1000) { + timeout = 1000; + } + + if (scgi_connect(&handle, host, port, timeout) == SCGI_SUCCESS) { + return (int) scgi_send_request(&handle); + } + + return -2; +} + +char *SCGIhandle::recv(void) +{ + ssize_t len = scgi_recv(&handle, buf, sizeof(buf)); + + if (len > 0) { + return (char *)buf; + } + + return NULL; +} + + +int SCGIhandle::bind(const char *host, int port) +{ + return (int) scgi_bind(host, port, &handle.sock); +} + + +int SCGIhandle::accept(void) +{ + scgi_socket_t client_sock; + + if (scgi_accept(handle.sock, &client_sock, NULL) == SCGI_SUCCESS) { + return (int) client_sock; + } + + return -1; +} + + diff --git a/libs/libscgi/testserver.c b/libs/libscgi/testserver.c index 7cb6e32a03..2a784e83a8 100644 --- a/libs/libscgi/testserver.c +++ b/libs/libscgi/testserver.c @@ -1,12 +1,14 @@ #include -static void callback(scgi_socket_t server_sock, scgi_socket_t client_sock, struct sockaddr_in *addr) +static void callback(scgi_socket_t server_sock, scgi_socket_t *client_sock, struct sockaddr_in *addr) { scgi_handle_t handle = { 0 }; if (scgi_parse(client_sock, &handle) == SCGI_SUCCESS) { scgi_param_t *pp; + *client_sock = SCGI_SOCK_INVALID; + for(pp = handle.params; pp; pp = pp->next) { printf("HEADER: [%s] VALUE: [%s]\n", pp->name, pp->value); } @@ -15,10 +17,9 @@ static void callback(scgi_socket_t server_sock, scgi_socket_t client_sock, struc printf("\n\nBODY:\n%s\n\n", handle.body); } + scgi_disconnect(&handle); } - scgi_disconnect(&handle); - } int main(int argc, char *argv[]) From 4b2e7fc1f20a78909431997392fd355b2eed4a0d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 May 2012 11:31:17 -0500 Subject: [PATCH 564/630] perl update --- libs/libscgi/perl/FSSCGI.pm | 4 +- libs/libscgi/perl/scgi_wrap.cpp | 142 ++++++++++++++++++++++------ libs/libscgi/perl/testclient.pl | 19 ++++ libs/libscgi/perl/testserver.pl | 17 ++++ libs/libscgi/src/include/scgi.h | 5 + libs/libscgi/src/include/scgi_oop.h | 10 +- libs/libscgi/src/scgi.c | 31 +++--- libs/libscgi/src/scgi_oop.cpp | 84 ++++++++++------ libs/libscgi/testserver.c | 2 +- 9 files changed, 238 insertions(+), 76 deletions(-) create mode 100644 libs/libscgi/perl/testclient.pl create mode 100644 libs/libscgi/perl/testserver.pl diff --git a/libs/libscgi/perl/FSSCGI.pm b/libs/libscgi/perl/FSSCGI.pm index 7dfd256e05..05370a12a7 100644 --- a/libs/libscgi/perl/FSSCGI.pm +++ b/libs/libscgi/perl/FSSCGI.pm @@ -79,8 +79,10 @@ sub DESTROY { *disconnect = *FSSCGIc::SCGIhandle_disconnect; *addParam = *FSSCGIc::SCGIhandle_addParam; *addBody = *FSSCGIc::SCGIhandle_addBody; +*getBody = *FSSCGIc::SCGIhandle_getBody; +*getParam = *FSSCGIc::SCGIhandle_getParam; *sendRequest = *FSSCGIc::SCGIhandle_sendRequest; -*recv = *FSSCGIc::SCGIhandle_recv; +*respond = *FSSCGIc::SCGIhandle_respond; *bind = *FSSCGIc::SCGIhandle_bind; *accept = *FSSCGIc::SCGIhandle_accept; sub DISOWN { diff --git a/libs/libscgi/perl/scgi_wrap.cpp b/libs/libscgi/perl/scgi_wrap.cpp index aaa8e40219..cc96e9494c 100644 --- a/libs/libscgi/perl/scgi_wrap.cpp +++ b/libs/libscgi/perl/scgi_wrap.cpp @@ -1556,6 +1556,26 @@ SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc) +SWIGINTERNINLINE SV * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + SV *obj = sv_newmortal(); + if (carray) { + sv_setpvn(obj, carray, size); + } else { + sv_setsv(obj, &PL_sv_undef); + } + return obj; +} + + +SWIGINTERNINLINE SV * +SWIG_FromCharPtr(const char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); +} + + #include #if !defined(SWIG_NO_LLONG_MAX) # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) @@ -1683,26 +1703,6 @@ SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val) return res; } - -SWIGINTERNINLINE SV * -SWIG_FromCharPtrAndSize(const char* carray, size_t size) -{ - SV *obj = sv_newmortal(); - if (carray) { - sv_setpvn(obj, carray, size); - } else { - sv_setsv(obj, &PL_sv_undef); - } - return obj; -} - - -SWIGINTERNINLINE SV * -SWIG_FromCharPtr(const char *cptr) -{ - return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); -} - #ifdef __cplusplus extern "C" { #endif @@ -1951,13 +1951,80 @@ XS(_wrap_SCGIhandle_addBody) { } +XS(_wrap_SCGIhandle_getBody) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: SCGIhandle_getBody(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_getBody" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + result = (char *)(arg1)->getBody(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + +XS(_wrap_SCGIhandle_getParam) { + { + SCGIhandle *arg1 = (SCGIhandle *) 0 ; + char *arg2 = (char *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: SCGIhandle_getParam(self,name);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_getParam" "', argument " "1"" of type '" "SCGIhandle *""'"); + } + arg1 = reinterpret_cast< SCGIhandle * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SCGIhandle_getParam" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (char *)(arg1)->getParam((char const *)arg2); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + XS(_wrap_SCGIhandle_sendRequest) { { SCGIhandle *arg1 = (SCGIhandle *) 0 ; char *arg2 = (char *) 0 ; int arg3 ; int arg4 ; - int result; + char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; @@ -1993,8 +2060,8 @@ XS(_wrap_SCGIhandle_sendRequest) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "SCGIhandle_sendRequest" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); - result = (int)(arg1)->sendRequest((char const *)arg2,arg3,arg4); - ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + result = (char *)(arg1)->sendRequest((char const *)arg2,arg3,arg4); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; @@ -2010,29 +2077,40 @@ XS(_wrap_SCGIhandle_sendRequest) { } -XS(_wrap_SCGIhandle_recv) { +XS(_wrap_SCGIhandle_respond) { { SCGIhandle *arg1 = (SCGIhandle *) 0 ; - char *result = 0 ; + char *arg2 = (char *) 0 ; + int result; void *argp1 = 0 ; int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; int argvi = 0; dXSARGS; - if ((items < 1) || (items > 1)) { - SWIG_croak("Usage: SCGIhandle_recv(self);"); + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: SCGIhandle_respond(self,msg);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_SCGIhandle, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_recv" "', argument " "1"" of type '" "SCGIhandle *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SCGIhandle_respond" "', argument " "1"" of type '" "SCGIhandle *""'"); } arg1 = reinterpret_cast< SCGIhandle * >(argp1); - result = (char *)(arg1)->recv(); - ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SCGIhandle_respond" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (int)(arg1)->respond(arg2); + ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; XSRETURN(argvi); fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; SWIG_croak_null(); } } @@ -2154,8 +2232,10 @@ static swig_command_info swig_commands[] = { {"FSSCGIc::SCGIhandle_disconnect", _wrap_SCGIhandle_disconnect}, {"FSSCGIc::SCGIhandle_addParam", _wrap_SCGIhandle_addParam}, {"FSSCGIc::SCGIhandle_addBody", _wrap_SCGIhandle_addBody}, +{"FSSCGIc::SCGIhandle_getBody", _wrap_SCGIhandle_getBody}, +{"FSSCGIc::SCGIhandle_getParam", _wrap_SCGIhandle_getParam}, {"FSSCGIc::SCGIhandle_sendRequest", _wrap_SCGIhandle_sendRequest}, -{"FSSCGIc::SCGIhandle_recv", _wrap_SCGIhandle_recv}, +{"FSSCGIc::SCGIhandle_respond", _wrap_SCGIhandle_respond}, {"FSSCGIc::SCGIhandle_bind", _wrap_SCGIhandle_bind}, {"FSSCGIc::SCGIhandle_accept", _wrap_SCGIhandle_accept}, {0,0} diff --git a/libs/libscgi/perl/testclient.pl b/libs/libscgi/perl/testclient.pl new file mode 100644 index 0000000000..59415baf72 --- /dev/null +++ b/libs/libscgi/perl/testclient.pl @@ -0,0 +1,19 @@ +use FSSCGI; + + +my $handle = new FSSCGI::SCGIhandle(); + + $handle->addParam( "REQUEST_METHOD", "POST"); + $handle->addParam( "REQUEST_URI", "/deepthought"); + $handle->addParam( "TESTING", "TRUE"); + $handle->addParam( "TESTING", "TRUE"); + $handle->addBody("What is the answer to life?"); + + + +if ((my $response = $handle->sendRequest("127.0.0.1", 7777, 10000))) { + print "RESP[$response]\n"; +} else { + print "ERROR!\n"; +} + diff --git a/libs/libscgi/perl/testserver.pl b/libs/libscgi/perl/testserver.pl new file mode 100644 index 0000000000..6e03d5c5e4 --- /dev/null +++ b/libs/libscgi/perl/testserver.pl @@ -0,0 +1,17 @@ +use FSSCGI; + + +my $handle = new FSSCGI::SCGIhandle(); + +if ($handle->bind("127.0.0.1", 7777)) { + + while($handle->accept()) { + print "REQ: " . $handle->getBody(). "\n\n"; + $handle->respond("W00t!!!!!!\n"); + } + + print "DONE\n"; + +} else { + print "FAIL\n"; +} diff --git a/libs/libscgi/src/include/scgi.h b/libs/libscgi/src/include/scgi.h index 8a789a3a9f..b6a5165858 100644 --- a/libs/libscgi/src/include/scgi.h +++ b/libs/libscgi/src/include/scgi.h @@ -183,6 +183,7 @@ typedef void (*scgi_listen_callback_t)(scgi_socket_t server_sock, scgi_socket_t SCGI_DECLARE(scgi_status_t) scgi_connect(scgi_handle_t *handle, const char *host, scgi_port_t port, uint32_t timeout); SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle); +SCGI_DECLARE(scgi_status_t) scgi_parse(scgi_socket_t sock, scgi_handle_t *handle); SCGI_DECLARE(int) scgi_wait_sock(scgi_socket_t sock, uint32_t ms, scgi_poll_t flags); SCGI_DECLARE(ssize_t) scgi_recv(scgi_handle_t *handle, unsigned char *buf, size_t buflen); SCGI_DECLARE(scgi_status_t) scgi_send_request(scgi_handle_t *handle); @@ -196,6 +197,10 @@ SCGI_DECLARE(const char *) scgi_get_param(scgi_handle_t *handle, const char *nam SCGI_DECLARE(scgi_status_t) scgi_bind(const char *host, scgi_port_t port, scgi_socket_t *socketp); SCGI_DECLARE(scgi_status_t) scgi_accept(scgi_socket_t server_sock, scgi_socket_t *client_sock_p, struct sockaddr_in *echoClntAddr); +#ifndef WIN32 +#define closesocket(x) shutdown(x, 2); close(x) +#endif + #ifdef __cplusplus } #endif /* defined(__cplusplus) */ diff --git a/libs/libscgi/src/include/scgi_oop.h b/libs/libscgi/src/include/scgi_oop.h index a49c96cdd1..64f3267779 100644 --- a/libs/libscgi/src/include/scgi_oop.h +++ b/libs/libscgi/src/include/scgi_oop.h @@ -45,8 +45,12 @@ extern "C" { class SCGIhandle { private: + scgi_socket_t server_sock; scgi_handle_t handle; unsigned char buf[65536]; + char *data_buf; + int buflen; + int bufsize; public: SCGIhandle(); virtual ~SCGIhandle(); @@ -55,8 +59,10 @@ class SCGIhandle { int disconnect(void); int addParam(const char *name, const char *value); int addBody(const char *value); - int sendRequest(const char *host, int port, int timeout); - char *recv(); + char *getBody(); + char *getParam(const char *name); + char *sendRequest(const char *host, int port, int timeout); + int respond(char *msg); int bind(const char *host, int port); int accept(void); }; diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c index f33afe30c8..9f8e9956e0 100644 --- a/libs/libscgi/src/scgi.c +++ b/libs/libscgi/src/scgi.c @@ -34,7 +34,6 @@ #include #ifndef WIN32 -#define closesocket(x) shutdown(x, 2); close(x) #include #include #else @@ -385,11 +384,9 @@ SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle) return SCGI_FAIL; } - handle->destroyed = 1; - handle->connected = 0; - - scgi_destroy_params(handle); - scgi_safe_free(handle->body); + if (!handle->sock) { + abort(); + } if (handle->sock != SCGI_SOCK_INVALID) { closesocket(handle->sock); @@ -397,6 +394,12 @@ SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle) status = SCGI_SUCCESS; } + handle->destroyed = 1; + handle->connected = 0; + + scgi_destroy_params(handle); + scgi_safe_free(handle->body); + return status; } @@ -577,9 +580,11 @@ SCGI_DECLARE(scgi_status_t) scgi_bind(const char *host, scgi_port_t port, scgi_s end: - if (server_sock != SCGI_SOCK_INVALID) { - closesocket(server_sock); - server_sock = SCGI_SOCK_INVALID; + if (status == SCGI_FAIL) { + if (server_sock != SCGI_SOCK_INVALID) { + closesocket(server_sock); + server_sock = SCGI_SOCK_INVALID; + } } else { *socketp = server_sock; } @@ -601,11 +606,11 @@ SCGI_DECLARE(scgi_status_t) scgi_accept(scgi_socket_t server_sock, scgi_socket_t if (!echoClntAddr) { echoClntAddr = &local_echoClntAddr; } - - + clntLen = sizeof(*echoClntAddr); if ((client_sock = accept(server_sock, (struct sockaddr *) echoClntAddr, &clntLen)) == SCGI_SOCK_INVALID) { + printf("FRICK %s\n", strerror(errno)); status = SCGI_FAIL; } else { *client_sock_p = client_sock; @@ -652,10 +657,12 @@ SCGI_DECLARE(scgi_status_t) scgi_parse(scgi_socket_t sock, scgi_handle_t *handle char *body = NULL; char comma = 0; + memset(handle, 0, sizeof(*handle)); + handle->sock = sock; + handle->connected = 1; sock_setup(handle); - for(;;) { diff --git a/libs/libscgi/src/scgi_oop.cpp b/libs/libscgi/src/scgi_oop.cpp index c5b98334b9..4001b748a3 100644 --- a/libs/libscgi/src/scgi_oop.cpp +++ b/libs/libscgi/src/scgi_oop.cpp @@ -12,9 +12,12 @@ SCGIhandle::SCGIhandle(void) SCGIhandle::~SCGIhandle() { - if (handle.connected) { - scgi_disconnect(&handle); - } + + scgi_disconnect(&handle); + scgi_safe_free(data_buf); + buflen = 0; + bufsize = 0; + } int SCGIhandle::socketDescriptor() @@ -29,11 +32,7 @@ int SCGIhandle::socketDescriptor() int SCGIhandle::disconnect() { - if (handle.connected) { - return scgi_disconnect(&handle); - } - - return 0; + return scgi_disconnect(&handle); } int SCGIhandle::connected() @@ -51,11 +50,22 @@ int SCGIhandle::addBody(const char *value) return (int) scgi_add_body(&handle, value); } - -int SCGIhandle::sendRequest(const char *host, int port, int timeout) +char *SCGIhandle::getBody() { + return handle.body; +} + +char *SCGIhandle::getParam(const char *name) +{ + return (char *) scgi_get_param(&handle, name); +} + +char *SCGIhandle::sendRequest(const char *host, int port, int timeout) +{ + ssize_t len; + if (!host) { - return -2; + return 0; } if (timeout < 1000) { @@ -63,27 +73,30 @@ int SCGIhandle::sendRequest(const char *host, int port, int timeout) } if (scgi_connect(&handle, host, port, timeout) == SCGI_SUCCESS) { - return (int) scgi_send_request(&handle); + if (scgi_send_request(&handle) == SCGI_SUCCESS) { + while((len = scgi_recv(&handle, buf, sizeof(buf))) > 0) { + if (buflen + len > bufsize) { + bufsize = buflen + len + 1024; + void *tmp = realloc(data_buf, bufsize); + assert(tmp); + data_buf = (char *)tmp; + + *(data_buf+buflen) = '\0'; + } + snprintf(data_buf+buflen, bufsize-buflen, "%s", buf); + buflen += len; + } + + return data_buf; + } } - return -2; + return (char *) ""; } -char *SCGIhandle::recv(void) -{ - ssize_t len = scgi_recv(&handle, buf, sizeof(buf)); - - if (len > 0) { - return (char *)buf; - } - - return NULL; -} - - int SCGIhandle::bind(const char *host, int port) { - return (int) scgi_bind(host, port, &handle.sock); + return (scgi_bind(host, port, &server_sock) == SCGI_SUCCESS) ? 1 : 0; } @@ -91,11 +104,24 @@ int SCGIhandle::accept(void) { scgi_socket_t client_sock; - if (scgi_accept(handle.sock, &client_sock, NULL) == SCGI_SUCCESS) { - return (int) client_sock; + if (scgi_accept(server_sock, &client_sock, NULL) == SCGI_SUCCESS) { + if (scgi_parse(client_sock, &handle) == SCGI_SUCCESS) { + return 1; + } + + closesocket(client_sock); } - return -1; + return 0; } +int SCGIhandle::respond(char *msg) +{ + int b = write(handle.sock, msg, strlen(msg)); + scgi_disconnect(&handle); + scgi_safe_free(data_buf); + buflen = 0; + bufsize = 0; + return b; +} diff --git a/libs/libscgi/testserver.c b/libs/libscgi/testserver.c index 2a784e83a8..153a215c0e 100644 --- a/libs/libscgi/testserver.c +++ b/libs/libscgi/testserver.c @@ -4,7 +4,7 @@ static void callback(scgi_socket_t server_sock, scgi_socket_t *client_sock, stru { scgi_handle_t handle = { 0 }; - if (scgi_parse(client_sock, &handle) == SCGI_SUCCESS) { + if (scgi_parse(*client_sock, &handle) == SCGI_SUCCESS) { scgi_param_t *pp; *client_sock = SCGI_SOCK_INVALID; From 0a70ea3e09f36f62651b2a9a83e5b8d1847ad8a6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 May 2012 13:12:32 -0500 Subject: [PATCH 565/630] scgi updates --- libs/libscgi/src/include/scgi.h | 2 +- libs/libscgi/src/scgi.c | 4 ---- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/libs/libscgi/src/include/scgi.h b/libs/libscgi/src/include/scgi.h index b6a5165858..575a45f7f9 100644 --- a/libs/libscgi/src/include/scgi.h +++ b/libs/libscgi/src/include/scgi.h @@ -198,7 +198,7 @@ SCGI_DECLARE(scgi_status_t) scgi_bind(const char *host, scgi_port_t port, scgi_s SCGI_DECLARE(scgi_status_t) scgi_accept(scgi_socket_t server_sock, scgi_socket_t *client_sock_p, struct sockaddr_in *echoClntAddr); #ifndef WIN32 -#define closesocket(x) shutdown(x, 2); close(x) +#define closesocket(x) close(x) #endif #ifdef __cplusplus diff --git a/libs/libscgi/src/scgi.c b/libs/libscgi/src/scgi.c index 9f8e9956e0..df05b5980b 100644 --- a/libs/libscgi/src/scgi.c +++ b/libs/libscgi/src/scgi.c @@ -384,10 +384,6 @@ SCGI_DECLARE(scgi_status_t) scgi_disconnect(scgi_handle_t *handle) return SCGI_FAIL; } - if (!handle->sock) { - abort(); - } - if (handle->sock != SCGI_SOCK_INVALID) { closesocket(handle->sock); handle->sock = SCGI_SOCK_INVALID; diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index 97b6bdcf0a..6ee62d6ac9 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -145,7 +145,7 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con scgi_disconnect(&handle); - if (len < 0) { + if (len < 0 && (!txt || !strlen(txt))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "DEBUG:\nURL: %s Connection Read Failed: [%s]\n", binding->url, handle.err); goto end; } From 6df4d7cdc50531254a40392b23a499cbbe4d137a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 May 2012 13:13:32 -0500 Subject: [PATCH 566/630] FS-4245 --resolve --- src/switch_core_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_memory.c b/src/switch_core_memory.c index 3a93632338..38a066b020 100644 --- a/src/switch_core_memory.c +++ b/src/switch_core_memory.c @@ -646,7 +646,7 @@ switch_memory_pool_t *switch_core_memory_init(void) switch_queue_create(&memory_manager.pool_recycle_queue, 50000, memory_manager.memory_pool); switch_threadattr_create(&thd_attr, memory_manager.memory_pool); - switch_threadattr_detach_set(thd_attr, 1); + switch_threadattr_detach_set(thd_attr, 0); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); switch_thread_create(&pool_thread_p, thd_attr, pool_thread, NULL, memory_manager.memory_pool); From 11d4658ac4c801f790e606c0993652045075fff9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 23 May 2012 21:28:03 +0000 Subject: [PATCH 567/630] debian: package mod_say_fa (Say for Persian) --- debian/control-modules | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/debian/control-modules b/debian/control-modules index e229b86fc7..5b76bd5d26 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -572,6 +572,10 @@ Module: say/mod_say_es Description: mod_say_es Adds mod_say_es. +Module: say/mod_say_fa +Description: mod_say_fa + Adds mod_say_fa. + Module: say/mod_say_fr Description: mod_say_fr Adds mod_say_fr. From cb58e81c17b2f4c2b3ff0cfad92c0a7c06c81c6a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 23 May 2012 05:20:13 +0000 Subject: [PATCH 568/630] add editor variables to mod_sofia.h --- src/mod/endpoints/mod_sofia/mod_sofia.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 5902cdad93..f6e4c1122e 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -1179,3 +1179,15 @@ void sofia_process_dispatch_event(sofia_dispatch_event_t **dep); char *sofia_glue_get_host(const char *str, switch_memory_pool_t *pool); void sofia_presence_check_subscriptions(sofia_profile_t *profile, time_t now); void sofia_msg_thread_start(int idx); + + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4: + */ From 16cf43a68d080139d01acba48f6048da185df9fb Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 2 May 2012 07:42:16 +0000 Subject: [PATCH 569/630] fix indentation; whitespace --- src/mod/endpoints/mod_sofia/sofia.c | 39 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 8a1409bb27..e5d026975d 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -6409,31 +6409,30 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_core_session_rwunlock(other_session); } } else { - uint8_t match = 0; - int is_ok = 1; + uint8_t match = 0; + int is_ok = 1; + if (tech_pvt->num_codecs) { + match = sofia_glue_negotiate_sdp(session, r_sdp); + } - if (tech_pvt->num_codecs) { - match = sofia_glue_negotiate_sdp(session, r_sdp); - } - - if (match) { - sofia_set_flag_locked(tech_pvt, TFLAG_REINVITE); - if (sofia_glue_activate_rtp(tech_pvt, 0) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "RTP Error!\n"); - switch_channel_set_variable(tech_pvt->channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RTP ERROR"); + if (match) { + sofia_set_flag_locked(tech_pvt, TFLAG_REINVITE); + if (sofia_glue_activate_rtp(tech_pvt, 0) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "RTP Error!\n"); + switch_channel_set_variable(tech_pvt->channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "RTP ERROR"); + is_ok = 0; + } + sofia_clear_flag_locked(tech_pvt, TFLAG_REINVITE); + } else { + switch_channel_set_variable(tech_pvt->channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR"); is_ok = 0; } - sofia_clear_flag_locked(tech_pvt, TFLAG_REINVITE); - } else { - switch_channel_set_variable(tech_pvt->channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR"); - is_ok = 0; - } - if (!is_ok) { - nua_respond(nh, SIP_488_NOT_ACCEPTABLE, TAG_END()); - switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION); - } + if (!is_ok) { + nua_respond(nh, SIP_488_NOT_ACCEPTABLE, TAG_END()); + switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION); + } } goto done; } From 0c1a95f745dda29d26103575d92bf8bb46a8e19d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 00:44:32 +0000 Subject: [PATCH 570/630] fix gcc 4.7.0 warning related to enum type This amends commit 7bd9efc7f52a725b7ef9efb64b65873b4bc4330b. We changed away from using unsigned here because it caused a warning on Windows. Using the more specific type, however, is causing a warning on gcc-4.7 (it notices that the switch statement contains values not present in the specified enum type). So we're switching back to unsigned here while keeping the type casts and hoping that keeps Windows happy. --- src/switch_rtp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index be7f180fcd..4de962a31c 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -692,7 +692,7 @@ static int zrtp_send_rtp_callback(const zrtp_stream_t *stream, char *rtp_packet, return status; } -static void zrtp_event_callback(zrtp_stream_t *stream, zrtp_security_event_t event) +static void zrtp_event_callback(zrtp_stream_t *stream, unsigned event) { switch_rtp_t *rtp_session = zrtp_stream_get_userdata(stream); zrtp_session_info_t zrtp_session_info; From 236b927780c8ebd05f35381f651c7acc6406b7d8 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 03:50:42 +0000 Subject: [PATCH 571/630] lower log level on ZRTP protection drop When a call is being setup, a couple seconds of audio may be sent unencrypted. This seems to trigger the log message here with every such packet. --- src/switch_rtp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 4de962a31c..92c580664e 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3972,7 +3972,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Error: zRTP protection drop with code %d\n", stat); ret = (int) bytes; goto end; break; From d470ae239cfb5fdf6df81efc2f1b9290690ae070 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 03:52:51 +0000 Subject: [PATCH 572/630] don't log ZRTP protection drops At least until we can distinguish the meaningful ones from the noise. --- src/switch_rtp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 92c580664e..c91175a108 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3972,7 +3972,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, case zrtp_status_ok: break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Error: zRTP protection drop with code %d\n", stat); + /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Error: zRTP protection drop with code %d\n", stat); */ ret = (int) bytes; goto end; break; From f37b1f0c54e8e3e8bb9cc9a276fe743fa95357c9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 03:58:26 +0000 Subject: [PATCH 573/630] squelch another source of noise ZRTP protection drops --- src/switch_rtp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_rtp.c b/src/switch_rtp.c index c91175a108..1c243e1b80 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -2656,7 +2656,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t *bytes = sbytes; break; case zrtp_status_drop: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error: zRTP protection drop with code %d\n", stat); + /* switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error: zRTP protection drop with code %d\n", stat); */ *bytes = 0; return SWITCH_STATUS_SUCCESS; case zrtp_status_fail: From 56678528f855d2779fa95c5431be5b8f0ae669ec Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 08:02:00 +0000 Subject: [PATCH 574/630] gitignore TAGS anywhere in tree --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cbeaaa463e..f153ad6f7b 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ configure.lineno config.log config.status core.* +TAGS *.2010.log *.Build.CppClean.log *.tlog From 343bdec239f3702aa503990293be420f02f0e2db Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 08:04:49 +0000 Subject: [PATCH 575/630] remove .vcxproj.user file in tree --- src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user diff --git a/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user b/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user deleted file mode 100644 index 695b5c78b9..0000000000 --- a/src/mod/say/mod_say_fa/mod_say_fa.2010.vcxproj.user +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file From 7b5a9193aad24e37ab1001f71f9e3e30008c05b8 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 15:13:11 +0000 Subject: [PATCH 576/630] debian: remove support for building sounds and music The various sounds and music have their own source packages now as they have their own conventions and version numbers which fortunately update less frequently than FreeSWITCH itself. --- debian/README.source | 4 +- debian/bootstrap.sh | 117 +------------------------------------------ debian/rules | 13 +---- 3 files changed, 4 insertions(+), 130 deletions(-) diff --git a/debian/README.source b/debian/README.source index 3ecd6e1294..a51994be31 100644 --- a/debian/README.source +++ b/debian/README.source @@ -48,10 +48,8 @@ The format of debian/modules.conf is: To build this package, I recommend running the following from the root directory of your FS git working tree: - mkdir ../sounds - export FS_SOUNDS_DIR=$(pwd)/../sounds git clean -fdx && git reset --hard HEAD (cd debian && ./bootstrap.sh) schedtool -B -e git-buildpackage --git-verbose -us -uc - -- Travis Cross , Sat, 5 May 2012 23:32:53 +0000 + -- Travis Cross , Thu, 24 May 2012 16:28:46 +0000 diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 0c2ee5d10a..113675c3e8 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -408,27 +408,13 @@ Description: FreeSWITCH systemd configuration Package: freeswitch-music Architecture: all Depends: \${misc:Depends}, - freeswitch-music-default (= \${binary:Version}) + freeswitch-music-default (>= 1.0.8) Description: Music on hold audio for FreeSWITCH $(debian_wrap "${fs_description}") . This is a metapackage which depends on the default music on hold packages for FreeSWITCH. -Package: freeswitch-music-default -Architecture: all -Depends: \${misc:Depends}, - freeswitch-music-default-8k (= \${binary:Version}) -Recommends: - freeswitch-music-default-16k (= \${binary:Version}), - freeswitch-music-default-32k (= \${binary:Version}), - freeswitch-music-default-48k (= \${binary:Version}) -Description: Music on hold audio for FreeSWITCH - $(debian_wrap "${fs_description}") - . - This is a metapackage which depends on the default music on hold - packages for FreeSWITCH at various sampling rates. - Package: freeswitch-sounds Architecture: all Depends: \${misc:Depends}, @@ -452,27 +438,13 @@ Description: English sounds for FreeSWITCH Package: freeswitch-sounds-en-us Architecture: all Depends: \${misc:Depends}, - freeswitch-sounds-en-us-callie (= \${binary:Version}) + freeswitch-sounds-en-us-callie (>= 1.0.18) Description: US English sounds for FreeSWITCH $(debian_wrap "${fs_description}") . This is a metapackage which depends on the default US/English sound packages for FreeSWITCH. -Package: freeswitch-sounds-en-us-callie -Architecture: all -Depends: \${misc:Depends}, - freeswitch-sounds-en-us-callie-8k (= \${binary:Version}) -Recommends: - freeswitch-sounds-en-us-callie-16k (= \${binary:Version}), - freeswitch-sounds-en-us-callie-32k (= \${binary:Version}), - freeswitch-sounds-en-us-callie-48k (= \${binary:Version}) -Description: US English sounds for FreeSWITCH - $(debian_wrap "${fs_description}") - . - This is a metapackage which depends on the US/English Callie sound - packages for FreeSWITCH at various sampling rates. - EOF } @@ -557,14 +529,6 @@ print_conf_overrides () { print_common_overrides "$1" } -print_sound_overrides () { - print_common_overrides "$1" -} - -print_music_overrides () { - print_common_overrides "$1" -} - print_conf_control () { cat <> $f } -genmusic () { - rate="$1" rate_k="${rate%%000}k" - print_music_control >> control - local p=freeswitch-music-default-${rate_k} - local f=$p.install - (print_edit_warning; print_music_install) > $f - test -f $f.tmpl && cat $f.tmpl >> $f - local f=$p.lintian-overrides - (print_edit_warning; print_music_overrides "$p") > $f - test -f $f.tmpl && cat $f.tmpl >> $f - unset rate rate_k -} - -gensound () { - rate="$1" rate_k="${rate%%000}k" sound_path="$2" sound="${2,,}" - language=$(echo $sound | cut -d/ -f1) - country=$(echo $sound | cut -d/ -f2) - speaker=$(echo $sound | cut -d/ -f3) - print_sound_control >> control - local p=freeswitch-sounds-${sound//\//-}-${rate_k} - local f=$p.install - (print_edit_warning; print_sound_install) > $f - test -f $f.tmpl && cat $f.tmpl >> $f - local f=$p.lintian-overrides - (print_edit_warning; print_sound_overrides "$p") > $f - test -f $f.tmpl && cat $f.tmpl >> $f - unset rate rate_k sound sound_path language country speaker -} - accumulate_build_depends () { local x="" if [ -n "$(eval echo \$build_depends_$codename)" ]; then @@ -865,14 +760,6 @@ map_modules 'mod_filter' '' 'accumulate_build_depends' echo "Generating debian/..." >&2 > control (print_edit_warning; print_source_control; print_core_control) >> control -echo "Generating debian/ (music)..." >&2 -for r in 8000 16000 32000 48000; do genmusic $r; done -echo "Generating debian/ (sounds)..." >&2 -for x in 'en/us/callie'; do - for r in 8000 16000 32000 48000; do - gensound $r $x - done -done echo "Generating debian/ (conf)..." >&2 (echo "### conf"; echo) >> control map_confs 'genconf' diff --git a/debian/rules b/debian/rules index 60c5210940..0e864c398d 100755 --- a/debian/rules +++ b/debian/rules @@ -7,7 +7,6 @@ FS_CFLAGS?=-ggdb3 -O2 FS_CPPFLAGS?= FS_CXXFLAGS?=$(FS_CFLAGS) -FS_INSTALL_SOUNDS?=true export PATH?=/usr/lib/ccache:/usr/sbin:/usr/bin:/sbin:/bin export CFLAGS=$(FS_CFLAGS) export CPPFLAGS=$(FS_CPPFLAGS) @@ -20,7 +19,6 @@ show_vars= \ echo "CFLAGS='$(CFLAGS)'"; \ echo "CXXFLAGS='$(CXXFLAGS)'"; \ echo "CCACHE_DIR='$(CCACHE_DIR)'"; \ - echo "FS_INSTALL_SOUNDS='$(FS_INSTALL_SOUNDS)'"; \ echo; binary: @@ -90,7 +88,6 @@ override_dh_strip: override_dh_auto_install: dh_auto_install - -$(FS_INSTALL_SOUNDS) && DESTDIR=debian/tmp make cd-sounds-install cd-moh-install mkdir -p debian/tmp/lib/systemd/system install -m0644 debian/freeswitch-systemd.freeswitch.service debian/tmp/lib/systemd/system/freeswitch.service rm -f debian/tmp/usr/share/freeswitch/grammar/model/communicator/COPYING @@ -118,13 +115,5 @@ binary-quicktest: @$(call show_vars) echo "applications/mod_commands" > debian/modules.conf (cd debian && ./bootstrap.sh) - env FS_INSTALL_SOUNDS=false dh binary \ - -Nfreeswitch-sounds-music-8k \ - -Nfreeswitch-sounds-music-16k \ - -Nfreeswitch-sounds-music-32k \ - -Nfreeswitch-sounds-music-48k \ - -Nfreeswitch-sounds-en-us-callie-8k \ - -Nfreeswitch-sounds-en-us-callie-16k \ - -Nfreeswitch-sounds-en-us-callie-32k \ - -Nfreeswitch-sounds-en-us-callie-48k + dh binary From 1050a2a9f91fec8fd0beba99bf09dcab4059d9d8 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 15:16:13 +0000 Subject: [PATCH 577/630] debian: version bump --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3df3c52971..9d901307ea 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +freeswitch (1.2~rc2-1) unstable; urgency=low + + * Bump version. + * Sounds and music have been moved to their own source packaging. + + -- Travis Cross Thu, 24 May 2012 15:15:10 +0000 + freeswitch (1.2~alpha1-1) unstable; urgency=low * Initial release of FreeSWITCH in new debian packaging. From 879a798ef3fc4ebd270b5dc305135f4237dc9d21 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 16:36:31 +0000 Subject: [PATCH 578/630] debian: document a better way to build packaging --- debian/README.source | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/README.source b/debian/README.source index a51994be31..ab31d9b711 100644 --- a/debian/README.source +++ b/debian/README.source @@ -48,8 +48,17 @@ The format of debian/modules.conf is: To build this package, I recommend running the following from the root directory of your FS git working tree: + distro=sid + ver="$(cat build/next-release.txt | sed -e 's/-/~/g')~n$(date +%Y%m%dT%H%M%SZ)-1~${distro}+1" git clean -fdx && git reset --hard HEAD - (cd debian && ./bootstrap.sh) - schedtool -B -e git-buildpackage --git-verbose -us -uc + ./build/set-fs-version.sh "$ver" + git add configure.in && git commit -m "bump to custom v$ver" + (cd debian && ./bootstrap.sh -c $distro) + dch -b -m -v "$ver" --force-distribution -D "$suite" "Custom build." + git-buildpackage -b -us -uc \ + --git-verbose \ + --git-pbuilder --git-dist=$distro \ + --git-compression-level=1v --git-compression=xz + git reset --hard HEAD^ - -- Travis Cross , Thu, 24 May 2012 16:28:46 +0000 + -- Travis Cross , Thu, 24 May 2012 16:35:57 +0000 From 2a257a56a223ad15525caa9062e8aac909fa039d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 24 May 2012 13:06:32 -0500 Subject: [PATCH 579/630] default to forking system on non-windows --- src/switch_core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/switch_core.c b/src/switch_core.c index f89aeb5ee2..8f1543e028 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1431,8 +1431,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc switch_set_flag((&runtime.dummy_cng_frame), SFF_CNG); switch_set_flag((&runtime), SCF_AUTO_SCHEMAS); switch_set_flag((&runtime), SCF_CLEAR_SQL); +#ifdef WIN32 switch_set_flag((&runtime), SCF_THREADED_SYSTEM_EXEC); - +#endif switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS); runtime.hard_log_level = SWITCH_LOG_DEBUG; runtime.mailer_app = "sendmail"; From 1cfd145c171968bd7b184206e281f773d6feebdf Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 24 May 2012 13:07:26 -0500 Subject: [PATCH 580/630] add support for variable expander to recognize 717 vars as specificly globals --- src/switch_channel.c | 18 ++++++++++++++---- src/switch_event.c | 17 +++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/switch_channel.c b/src/switch_channel.c index 7afe342103..e06706cbc3 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -3411,12 +3411,16 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c memset(data, 0, olen); c = data; for (p = indup; p && p < endof_indup && *p; p++) { + int global = 0; vtype = 0; if (*p == '\\') { if (*(p + 1) == '$') { nv = 1; p++; + if (*(p + 1) == '$') { + p++; + } } else if (*(p + 1) == '\'') { p++; continue; @@ -3428,9 +3432,15 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c } if (*p == '$' && !nv) { + + if (*(p + 1) == '$') { + p++; + global++; + } + if (*(p + 1)) { if (*(p + 1) == '{') { - vtype = 1; + vtype = global ? 3 : 1; } else { nv = 1; } @@ -3452,7 +3462,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c s++; - if (vtype == 1 && *s == '{') { + if ((vtype == 1 || vtype == 3) && *s == '{') { br = 1; s++; } @@ -3513,7 +3523,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c vtype = 2; } - if (vtype == 1) { + if (vtype == 1 || vtype == 3) { char *expanded = NULL; int offset = 0; int ooffset = 0; @@ -3540,7 +3550,7 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables_check(switch_channel_t *c idx = atoi(ptr); } - if ((sub_val = (char *) switch_channel_get_variable_dup(channel, vname, SWITCH_TRUE, idx))) { + if (vtype == 3 || (sub_val = (char *) switch_channel_get_variable_dup(channel, vname, SWITCH_TRUE, idx))) { if (var_list && !switch_event_check_permission_list(var_list, vname)) { sub_val = "INVALID"; } diff --git a/src/switch_event.c b/src/switch_event.c index 9a0776efd1..defae3586c 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -1957,12 +1957,16 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, memset(data, 0, olen); c = data; for (p = indup; p && p < endof_indup && *p; p++) { + int global = 0; vtype = 0; if (*p == '\\') { if (*(p + 1) == '$') { nv = 1; p++; + if (*(p + 1) == '$') { + p++; + } } else if (*(p + 1) == '\'') { p++; continue; @@ -1974,9 +1978,14 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, } if (*p == '$' && !nv) { + if (*(p + 1) == '$') { + p++; + global++; + } + if (*(p + 1)) { if (*(p + 1) == '{') { - vtype = 1; + vtype = global ? 3 : 1; } else { nv = 1; } @@ -1998,7 +2007,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, s++; - if (vtype == 1 && *s == '{') { + if ((vtype == 1 || vtype == 3) && *s == '{') { br = 1; s++; } @@ -2060,7 +2069,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, vtype = 2; } - if (vtype == 1) { + if (vtype == 1 || vtype == 3) { char *expanded = NULL; int offset = 0; int ooffset = 0; @@ -2086,7 +2095,7 @@ SWITCH_DECLARE(char *) switch_event_expand_headers_check(switch_event_t *event, idx = atoi(ptr); } - if (!(sub_val = switch_event_get_header_idx(event, vname, idx))) { + if (vtype == 3 || !(sub_val = switch_event_get_header_idx(event, vname, idx))) { switch_safe_free(gvar); if ((gvar = switch_core_get_variable_dup(vname))) { sub_val = gvar; From 8c889aa3a758e16437ad38ad96852c6b1c6e1aa6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 24 May 2012 13:07:46 -0500 Subject: [PATCH 581/630] add param for scgi to monitor its own server process --- src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c | 100 +++++++++++++++++++- 1 file changed, 98 insertions(+), 2 deletions(-) diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c index 6ee62d6ac9..1ac74ebbdf 100644 --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c @@ -46,6 +46,9 @@ struct xml_binding { switch_hash_t *vars_map; char *bindings; + char *server; + switch_thread_t *thread; + struct xml_binding *next; }; static int GLOBAL_DEBUG = 0; @@ -63,6 +66,8 @@ static struct { switch_memory_pool_t *pool; hash_node_t *hash_root; hash_node_t *hash_tail; + int running; + xml_binding_t *bindings; } globals; #define XML_SCGI_SYNTAX "[debug_on|debug_off]" @@ -92,6 +97,38 @@ SWITCH_STANDARD_API(xml_scgi_function) return SWITCH_STATUS_SUCCESS; } +void *SWITCH_THREAD_FUNC monitor_thread_run(switch_thread_t *thread, void *obj) +{ + xml_binding_t *binding = (xml_binding_t *) obj; + time_t st; + int diff; + + while(globals.running) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Running server command: %s\n", binding->server); + st = switch_epoch_time_now(NULL); + switch_system(binding->server, SWITCH_TRUE); + diff = (int) switch_epoch_time_now(NULL) - st; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Server command complete: %s\n", binding->server); + + if (globals.running && diff < 5) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Server command had short run duration, sleeping: %s\n", binding->server); + switch_yield(10000000); + } + } + + return NULL; +} + +static void launch_monitor_thread(xml_binding_t *binding) +{ + switch_threadattr_t *thd_attr = NULL; + + switch_threadattr_create(&thd_attr, globals.pool); + switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); + switch_threadattr_priority_increase(thd_attr); + switch_thread_create(&binding->thread, thd_attr, monitor_thread_run, binding, globals.pool); +} + static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, const char *key_name, const char *key_value, switch_event_t *params, void *user_data) @@ -130,6 +167,7 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con txt = (char *) stream.data; while((len = scgi_recv(&handle, buf, sizeof(buf))) > 0) { + char *expanded = switch_event_expand_headers(params, (char *)buf); bytes += len; @@ -139,8 +177,14 @@ static switch_xml_t xml_url_fetch(const char *section, const char *tag_name, con break; } - stream.write_function(&stream, "%s", buf); + stream.write_function(&stream, "%s", expanded); txt = (char *) stream.data; + + if (expanded != (char *)buf) { + free(expanded); + } + + memset(buf, 0, sizeof(buf)); } scgi_disconnect(&handle); @@ -210,7 +254,8 @@ static switch_status_t do_config(void) char *port = "8080"; char *bind_mask = NULL; int timeout = 0; - + char *server = NULL; + hash_node_t *hash_node; need_vars_map = 0; vars_map = NULL; @@ -248,6 +293,8 @@ static switch_status_t do_config(void) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't add %s to params hash!\n", val); } } + } else if (!strcasecmp(var, "server")) { + server = val; } } @@ -273,6 +320,10 @@ static switch_status_t do_config(void) binding->vars_map = vars_map; binding->url = switch_mprintf("scgi://%s:%s/%s", host, port, bname); + if (server) { + binding->server = switch_core_strdup(globals.pool, server); + } + if (bind_mask) { binding->bindings = switch_core_strdup(globals.pool, bind_mask); } @@ -297,6 +348,15 @@ static switch_status_t do_config(void) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Binding [%s] XML Fetch Function [%s] [%s]\n", zstr(bname) ? "N/A" : bname, binding->url, binding->bindings ? binding->bindings : "all"); switch_xml_bind_search_function(xml_url_fetch, switch_xml_parse_section_string(binding->bindings), binding); + + if (binding->server) { + launch_monitor_thread(binding); + } + + binding->next = globals.bindings; + globals.bindings = binding; + + x++; binding = NULL; } @@ -315,6 +375,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_scgi_load) *module_interface = switch_loadable_module_create_module_interface(pool, modname); memset(&globals, 0, sizeof(globals)); + globals.running = 1; globals.pool = pool; globals.hash_root = NULL; globals.hash_tail = NULL; @@ -334,6 +395,41 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_scgi_load) SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_scgi_shutdown) { hash_node_t *ptr = NULL; + xml_binding_t *bp; + + globals.running = 0; + + for(bp = globals.bindings; bp; bp = bp->next) { + if (bp->thread) { + switch_status_t st; + scgi_handle_t handle = { 0 }; + unsigned char buf[16336] = ""; + int x = 3; + + scgi_add_param(&handle, "REQUEST_METHOD", "POST"); + scgi_add_param(&handle, "REQUEST_URI", bp->url); + scgi_add_body(&handle, "SHUTDOWN"); + + while(x--) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Sending shutdown message to server for %s\n", bp->url); + + if (scgi_connect(&handle, bp->host, bp->port, bp->timeout * 1000) == SCGI_SUCCESS) { + while(0 && scgi_recv(&handle, buf, sizeof(buf)) > 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "%s\n", (char *) buf); + memset(buf, 0, sizeof(buf)); + } + break; + } + + switch_yield(5000000); + } + + scgi_disconnect(&handle); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Waiting for server to stop.\n"); + switch_thread_join(&st, bp->thread); + } + } + while (globals.hash_root) { ptr = globals.hash_root; From 23f8967c32e63050af93b43c66ec94e7b404b063 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Thu, 24 May 2012 20:39:03 +0000 Subject: [PATCH 582/630] add enhanced zrtp passthrough (zrtp passthru) mode ZRTP passthrough mode allows two ZRTP-capable clients to negotiate an end-to-end security association through FreeSWITCH. The clients are therefore able to be certain that the FreeSWITCH instance mediating the call cannot eavesdrop on their conversation. Importantly, this capability is maintained across multiple FreeSWITCH hops. If widely deployed, this enables a global network architecture where two people can speak securely with strong cryptographically protected authentication and confidentiality. With this commit we implement a zrtp-passthru mode that handles all the details of the negotiation intelligently. This mode can be selected by setting the boolean parameter inbound-zrtp-passthru in the sofia profile. This will also force late-negotiation as it is essential for correctly negotiating an end-to-end ZRTP security association. When an incoming call with a zrtp-hash is received and this mode is enabled, we find the first audio and the first video zrtp-hash in the SDP and store them as remote values on this channel. Once a b-leg is available, we set the local zrtp-hash values on that channel to the remote zrtp-hash values collected from the a-leg. Because zrtp-passthru absolutely requires that the channels negotiate the same codec, we offer to the b-leg only codecs that the a-leg can speak. Once the b-leg accepts a codec, we will force that choice onto the a-leg. If the b-leg sends us zrtp-hash values in the signaling, we store those as remote values on the b-leg and copy them to the local values on the a-leg. At this point, each leg has the zrtp-hash values from the other, and we know we can do ZRTP passthrough mode on the call. We send the b-leg's zrtp-hash back to the a-leg in the 200 OK. We then enable UDPTL mode on the rtp streams for both the audio and the video so that we don't interfere in the ZRTP negotiation. If the b-leg fails to return a zrtp-hash in the signaling, we set up a ZRTP security association with the a-leg ourselves, if we are so equipped. Likewise, if the a-leg fails to send a zrtp-hash in the signaling, we attempt to set up a ZRTP security association ourselves with the b-leg. The zrtp-passthru mode can also be enabled in the dialplan by setting the boolean channel variable zrtp_passthru. If enabled in this manner, we can't force late-negotiation, so the user would need to be sure this is configured. If ZRTP passthrough mode is not enabled in either manner, this change should have no effect. Channel variables for each of the various zrtp-hash values are set, though it is anticipated that there is no good reason to use them, so they may be removed without warning. For checking whether zrtp passthrough mode was successful, we provide the channel variable zrtp_passthru_active which is set on both legs. Though not implemented by this commit, the changes here should make it more straightforward to add correct zrtp-hash values to the signaling and verify that correct hello hash values are received when FreeSWITCH is acting as a terminating leg of the ZRTP security association. A historical note... This commit replaces the recently-added sdp_zrtp_hash_string method, commit 2ab1605a8887adc62be1b75f6ef67af87ff080de. This prior method sets a channel variable from the a-leg's zrtp-hash, then relies on the dialplan to export this channel variable to the b-leg, where it is put into the SDP. While it was a great start and wonderful for testing, this approach has some drawbacks that motivated the present work: * There's no good way to pass the zrtp-hash from the b-leg back to the a-leg. In fact, the implementation seems to send the a-leg's zrtp-hash back to the originating client in the 200 OK. This is not correct. * To support video, we'd need to have a separate dialplan variable, and the dialplan author would need to deal with that explicitly. * The API is problematic as it requires the dialplan author to understand intricate details of how ZRTP works to implement a correct dialplan. Further, by providing too fine-grained control (but at the same time, not enough control) it would limit our ability to make the behavior smarter once people started relying on this. --- src/include/switch_types.h | 4 +- src/mod/endpoints/mod_sofia/mod_sofia.c | 13 +++ src/mod/endpoints/mod_sofia/mod_sofia.h | 8 ++ src/mod/endpoints/mod_sofia/sofia.c | 20 ++++ src/mod/endpoints/mod_sofia/sofia_glue.c | 139 +++++++++++++++++++---- src/switch_channel.c | 18 ++- src/switch_core_session.c | 4 + src/switch_ivr_originate.c | 11 +- 8 files changed, 186 insertions(+), 31 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 477aa3b877..4699cd238f 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -170,6 +170,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME "__cache_speech_handles_obj__" #define SWITCH_BYPASS_MEDIA_VARIABLE "bypass_media" #define SWITCH_PROXY_MEDIA_VARIABLE "proxy_media" +#define SWITCH_ZRTP_PASSTHRU_VARIABLE "zrtp_passthru" #define SWITCH_ENDPOINT_DISPOSITION_VARIABLE "endpoint_disposition" #define SWITCH_HOLD_MUSIC_VARIABLE "hold_music" #define SWITCH_TEMP_HOLD_MUSIC_VARIABLE "temp_hold_music" @@ -1213,8 +1214,9 @@ typedef enum { CF_VIDEO_REFRESH_REQ, CF_SERVICE_AUDIO, CF_SERVICE_VIDEO, + CF_ZRTP_PASSTHRU_REQ, + CF_ZRTP_PASSTHRU, CF_ZRTP_HASH, - CF_ZRTP_PASS, CF_CHANNEL_SWAP, CF_PICKUP, CF_CONFIRM_BLIND_TRANSFER, diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index ebd009a16d..92a27fd0f2 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -2997,6 +2997,7 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t stream->write_function(stream, "NOMEDIA \t%s\n", sofia_test_flag(profile, TFLAG_INB_NOMEDIA) ? "true" : "false"); stream->write_function(stream, "LATE-NEG \t%s\n", sofia_test_flag(profile, TFLAG_LATE_NEGOTIATION) ? "true" : "false"); stream->write_function(stream, "PROXY-MEDIA \t%s\n", sofia_test_flag(profile, TFLAG_PROXY_MEDIA) ? "true" : "false"); + stream->write_function(stream, "ZRTP-PASSTHRU \t%s\n", sofia_test_flag(profile, TFLAG_ZRTP_PASSTHRU) ? "true" : "false"); stream->write_function(stream, "AGGRESSIVENAT \t%s\n", sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION) ? "true" : "false"); stream->write_function(stream, "STUN-ENABLED \t%s\n", sofia_test_pflag(profile, PFLAG_STUN_ENABLED) ? "true" : "false"); @@ -3275,6 +3276,7 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl stream->write_function(stream, " %s\n", sofia_test_flag(profile, TFLAG_INB_NOMEDIA) ? "true" : "false"); stream->write_function(stream, " %s\n", sofia_test_flag(profile, TFLAG_LATE_NEGOTIATION) ? "true" : "false"); stream->write_function(stream, " %s\n", sofia_test_flag(profile, TFLAG_PROXY_MEDIA) ? "true" : "false"); + stream->write_function(stream, " %s\n", sofia_test_flag(profile, TFLAG_ZRTP_PASSTHRU) ? "true" : "false"); stream->write_function(stream, " %s\n", sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION) ? "true" : "false"); stream->write_function(stream, " %s\n", @@ -4785,6 +4787,17 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session sofia_clear_flag(ctech_pvt, TFLAG_ENABLE_SOA); } + if (switch_channel_test_flag(o_channel, CF_ZRTP_PASSTHRU_REQ)) { + const char *x = NULL; + sofia_glue_pass_zrtp_hash2(session, nsession); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "[zrtp_passthru] Setting a-leg inherit_codec=true\n"); + switch_channel_set_variable(o_channel, "inherit_codec", "true"); + if ((x = switch_channel_get_variable(o_channel, "ep_codec_string"))) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "[zrtp_passthru] Setting b-leg absolute_codec_string='%s'\n", x); + switch_channel_set_variable(nchannel, "absolute_codec_string", x); + } + } + /* SNARK: lets copy this across so we can see if we're the other leg of 3PCC + bypass_media... */ if (sofia_test_flag(ctech_pvt, TFLAG_3PCC) && (switch_channel_test_flag(o_channel, CF_PROXY_MODE) || switch_channel_test_flag(o_channel, CF_PROXY_MEDIA))) { sofia_set_flag(tech_pvt, TFLAG_3PCC_INVITE); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index f6e4c1122e..67d513cf27 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -317,6 +317,7 @@ typedef enum { TFLAG_TPORT_LOG, TFLAG_SENT_UPDATE, TFLAG_PROXY_MEDIA, + TFLAG_ZRTP_PASSTHRU, TFLAG_HOLD_LOCK, TFLAG_3PCC_HAS_ACK, TFLAG_PASS_RFC2833, @@ -825,6 +826,11 @@ struct private_object { switch_payload_t ianacodes[SWITCH_MAX_CODECS]; uint32_t session_timeout; enum nua_session_refresher session_refresher; + /** ZRTP **/ + char *local_sdp_audio_zrtp_hash; + char *local_sdp_video_zrtp_hash; + char *remote_sdp_audio_zrtp_hash; + char *remote_sdp_video_zrtp_hash; }; struct callback_t { @@ -932,6 +938,8 @@ void launch_sofia_profile_thread(sofia_profile_t *profile); switch_status_t sofia_presence_chat_send(switch_event_t *message_event); void sofia_glue_tech_absorb_sdp(private_object_t *tech_pvt); +void sofia_glue_pass_zrtp_hash2(switch_core_session_t *aleg_session, switch_core_session_t *bleg_session); +void sofia_glue_pass_zrtp_hash(switch_core_session_t *session); /* * \brief Sets the "ep_codec_string" channel variable, parsing r_sdp and taing codec_string in consideration diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index e5d026975d..0621b3b84d 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -3321,6 +3321,12 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } else { sofia_clear_flag(profile, TFLAG_PROXY_MEDIA); } + } else if (!strcasecmp(var, "inbound-zrtp-passthru")) { + if (switch_true(val)) { + sofia_set_flag(profile, TFLAG_ZRTP_PASSTHRU); + } else { + sofia_clear_flag(profile, TFLAG_ZRTP_PASSTHRU); + } } else if (!strcasecmp(var, "inbound-use-callid-as-uuid")) { if (switch_true(val)) { sofia_set_pflag(profile, PFLAG_CALLID_AS_UUID); @@ -3695,6 +3701,10 @@ switch_status_t reconfig_sofia(sofia_profile_t *profile) } } + if (sofia_test_flag(profile, TFLAG_ZRTP_PASSTHRU)) { + sofia_set_flag(profile, TFLAG_LATE_NEGOTIATION); + } + if ((gateways_tag = switch_xml_child(xprofile, "gateways"))) { parse_gateways(profile, gateways_tag); } @@ -4171,6 +4181,8 @@ switch_status_t config_sofia(int reload, char *profile_name) } } else if (!strcasecmp(var, "inbound-proxy-media") && switch_true(val)) { sofia_set_flag(profile, TFLAG_PROXY_MEDIA); + } else if (!strcasecmp(var, "inbound-zrtp-passthru") && switch_true(val)) { + sofia_set_flag(profile, TFLAG_ZRTP_PASSTHRU); } else if (!strcasecmp(var, "force-subscription-expires")) { int tmp = atoi(val); if (tmp > 0) { @@ -4801,6 +4813,10 @@ switch_status_t config_sofia(int reload, char *profile_name) } } + if (sofia_test_flag(profile, TFLAG_ZRTP_PASSTHRU)) { + sofia_set_flag(profile, TFLAG_LATE_NEGOTIATION); + } + if ((!profile->cng_pt) && (!sofia_test_pflag(profile, PFLAG_SUPPRESS_CNG))) { profile->cng_pt = SWITCH_RTP_CNG_PAYLOAD; } @@ -8264,6 +8280,10 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ switch_channel_set_flag(channel, CF_PROXY_MEDIA); } + if (sofia_test_flag(tech_pvt, TFLAG_ZRTP_PASSTHRU)) { + switch_channel_set_flag(channel, CF_ZRTP_PASSTHRU_REQ); + } + if (!tech_pvt->call_id && sip->sip_call_id && sip->sip_call_id->i_id) { tech_pvt->call_id = switch_core_session_strdup(session, sip->sip_call_id->i_id); switch_channel_set_variable(channel, "sip_call_id", tech_pvt->call_id); diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 0adcce9606..6bb7d3ee5f 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -184,7 +184,6 @@ static void generate_m(private_object_t *tech_pvt, char *buf, size_t buflen, int rate; int already_did[128] = { 0 }; int ptime = 0, noptime = 0; - const char *zrtp; switch_snprintf(buf + strlen(buf), buflen - strlen(buf), "m=audio %d RTP/%sAVP", port, secure ? "S" : ""); @@ -344,8 +343,11 @@ static void generate_m(private_object_t *tech_pvt, char *buf, size_t buflen, switch_snprintf(buf + strlen(buf), buflen - strlen(buf), "a=ptime:%d\n", cur_ptime); } - if ((zrtp = switch_channel_get_variable(tech_pvt->channel, "sdp_zrtp_hash_string"))) { - switch_snprintf(buf + strlen(buf), buflen - strlen(buf), "a=zrtp-hash:%s\n", zrtp); + if (tech_pvt->local_sdp_audio_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Adding audio a=zrtp-hash:%s\n", + tech_pvt->local_sdp_audio_zrtp_hash); + switch_snprintf(buf + strlen(buf), buflen - strlen(buf), "a=zrtp-hash:%s\n", + tech_pvt->local_sdp_audio_zrtp_hash); } if (sr) { @@ -391,7 +393,6 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch switch_event_t *map = NULL, *ptmap = NULL; const char *b_sdp = NULL; int verbose_sdp = 0; - const char *zrtp; sofia_glue_check_dtmf_type(tech_pvt); @@ -545,8 +546,12 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch switch_snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=ptime:%d\n", ptime); } - if ((zrtp = switch_channel_get_variable(tech_pvt->channel, "sdp_zrtp_hash_string"))) { - switch_snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=zrtp-hash:%s\n", zrtp); + + if (tech_pvt->local_sdp_audio_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Adding audio a=zrtp-hash:%s\n", + tech_pvt->local_sdp_audio_zrtp_hash); + switch_snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=zrtp-hash:%s\n", + tech_pvt->local_sdp_audio_zrtp_hash); } if (sr) { @@ -747,6 +752,13 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch } } + + if (tech_pvt->local_sdp_video_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Adding video a=zrtp-hash:%s\n", + tech_pvt->local_sdp_video_zrtp_hash); + switch_snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "a=zrtp-hash:%s\n", + tech_pvt->local_sdp_video_zrtp_hash); + } } } @@ -3563,9 +3575,11 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f switch_channel_set_variable(tech_pvt->channel, SWITCH_REMOTE_MEDIA_PORT_VARIABLE, tmp); - if (switch_channel_test_flag(tech_pvt->channel, CF_ZRTP_PASS)) { + if (switch_channel_test_flag(tech_pvt->channel, CF_ZRTP_PASSTHRU)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_INFO, "Activating ZRTP PROXY MODE\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Disable NOTIMER_DURING_BRIDGE\n"); sofia_clear_flag(tech_pvt, TFLAG_NOTIMER_DURING_BRIDGE); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Activating audio UDPTL mode\n"); switch_rtp_udptl_mode(tech_pvt->rtp_session); } @@ -3752,7 +3766,10 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f } } } - + if (switch_channel_test_flag(tech_pvt->channel, CF_ZRTP_PASSTHRU)) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Activating video UDPTL mode\n"); + switch_rtp_udptl_mode(tech_pvt->video_rtp_session); + } } else { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "VIDEO RTP REPORTS ERROR: [%s]\n", switch_str_nil(err)); @@ -3837,7 +3854,93 @@ static void add_audio_codec(sdp_rtpmap_t *map, int ptime, char *buf, switch_size } +void sofia_glue_pass_zrtp_hash2(switch_core_session_t *aleg_session, switch_core_session_t *bleg_session) +{ + switch_channel_t *aleg_channel = switch_core_session_get_channel(aleg_session); + private_object_t *aleg_tech_pvt = switch_core_session_get_private(aleg_session); + switch_channel_t *bleg_channel = switch_core_session_get_channel(bleg_session); + private_object_t *bleg_tech_pvt = switch_core_session_get_private(bleg_session); + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(aleg_channel), SWITCH_LOG_DEBUG, "Deciding whether to pass zrtp-hash between a-leg and b-leg\n"); + if (!(switch_channel_test_flag(aleg_tech_pvt->channel, CF_ZRTP_PASSTHRU_REQ))) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(aleg_channel), SWITCH_LOG_DEBUG, "CF_ZRTP_PASSTHRU_REQ not set on a-leg, so not propagating zrtp-hash\n"); + return; + } + if (aleg_tech_pvt->remote_sdp_audio_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(aleg_channel), SWITCH_LOG_DEBUG, "Passing a-leg remote zrtp-hash (audio) to b-leg\n"); + bleg_tech_pvt->local_sdp_audio_zrtp_hash = switch_core_session_strdup(bleg_tech_pvt->session, aleg_tech_pvt->remote_sdp_audio_zrtp_hash); + switch_channel_set_variable(bleg_channel, "l_sdp_audio_zrtp_hash", bleg_tech_pvt->local_sdp_audio_zrtp_hash); + } + if (aleg_tech_pvt->remote_sdp_video_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(aleg_channel), SWITCH_LOG_DEBUG, "Passing a-leg remote zrtp-hash (video) to b-leg\n"); + bleg_tech_pvt->local_sdp_video_zrtp_hash = switch_core_session_strdup(bleg_tech_pvt->session, aleg_tech_pvt->remote_sdp_video_zrtp_hash); + switch_channel_set_variable(bleg_channel, "l_sdp_video_zrtp_hash", bleg_tech_pvt->local_sdp_video_zrtp_hash); + } + if (bleg_tech_pvt->remote_sdp_audio_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(aleg_channel), SWITCH_LOG_DEBUG, "Passing b-leg remote zrtp-hash (audio) to a-leg\n"); + aleg_tech_pvt->local_sdp_audio_zrtp_hash = switch_core_session_strdup(aleg_tech_pvt->session, bleg_tech_pvt->remote_sdp_audio_zrtp_hash); + switch_channel_set_variable(aleg_channel, "l_sdp_audio_zrtp_hash", aleg_tech_pvt->local_sdp_audio_zrtp_hash); + } + if (bleg_tech_pvt->remote_sdp_video_zrtp_hash) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(aleg_channel), SWITCH_LOG_DEBUG, "Passing b-leg remote zrtp-hash (video) to a-leg\n"); + aleg_tech_pvt->local_sdp_video_zrtp_hash = switch_core_session_strdup(aleg_tech_pvt->session, bleg_tech_pvt->remote_sdp_video_zrtp_hash); + switch_channel_set_variable(aleg_channel, "l_sdp_video_zrtp_hash", aleg_tech_pvt->local_sdp_video_zrtp_hash); + } +} +void sofia_glue_pass_zrtp_hash(switch_core_session_t *session) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + private_object_t *tech_pvt = switch_core_session_get_private(session); + switch_core_session_t *other_session; + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Deciding whether to pass zrtp-hash between legs\n"); + if (!(switch_channel_test_flag(tech_pvt->channel, CF_ZRTP_PASSTHRU_REQ))) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "CF_ZRTP_PASSTHRU_REQ not set, so not propagating zrtp-hash\n"); + return; + } else if (!(switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS)) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "No partner channel found, so not propagating zrtp-hash\n"); + return; + } else { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Found peer channel; propagating zrtp-hash if set\n"); + sofia_glue_pass_zrtp_hash2(session, other_session); + switch_core_session_rwunlock(other_session); + } +} + +static void find_zrtp_hash(switch_core_session_t *session, sdp_session_t *sdp) +{ + switch_channel_t *channel = switch_core_session_get_channel(session); + private_object_t *tech_pvt = switch_core_session_get_private(session); + sdp_media_t *m; + sdp_attribute_t *attr; + int got_audio = 0, got_video = 0; + + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Looking for zrtp-hash\n"); + for (m = sdp->sdp_media; m; m = m->m_next) { + if (got_audio && got_video) break; + if (m->m_port && ((m->m_type == sdp_media_audio && !got_audio) + || (m->m_type == sdp_media_video && !got_video))) { + for (attr = m->m_attributes; attr; attr = attr->a_next) { + if (zstr(attr->a_name)) continue; + if (strcasecmp(attr->a_name, "zrtp-hash") || !(attr->a_value)) continue; + if (m->m_type == sdp_media_audio) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, + "Found audio zrtp-hash; setting r_sdp_audio_zrtp_hash=%s\n", attr->a_value); + switch_channel_set_variable(channel, "r_sdp_audio_zrtp_hash", attr->a_value); + tech_pvt->remote_sdp_audio_zrtp_hash = switch_core_session_strdup(tech_pvt->session, attr->a_value); + got_audio++; + } else if (m->m_type == sdp_media_video) { + switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, + "Found video zrtp-hash; setting r_sdp_video_zrtp_hash=%s\n", attr->a_value); + switch_channel_set_variable(channel, "r_sdp_video_zrtp_hash", attr->a_value); + tech_pvt->remote_sdp_video_zrtp_hash = switch_core_session_strdup(tech_pvt->session, attr->a_value); + got_video++; + } + switch_channel_set_flag(channel, CF_ZRTP_HASH); + break; + } + } + } +} void sofia_glue_set_r_sdp_codec_string(switch_core_session_t *session, const char *codec_string, sdp_session_t *sdp) { @@ -3887,18 +3990,8 @@ void sofia_glue_set_r_sdp_codec_string(switch_core_session_t *session, const cha } } - switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Looking for zrtp-hash to set sdp_zrtp_hash_string\n"); - for (m = sdp->sdp_media; m; m = m->m_next) { - for (attr = m->m_attributes; attr; attr = attr->a_next) { - if (zstr(attr->a_name)) continue; - if (!strcasecmp(attr->a_name, "zrtp-hash") && attr->a_value) { - switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(channel), SWITCH_LOG_DEBUG, "Found zrtp-hash, setting sdp_zrtp_hash_string=%s\n", attr->a_value); - switch_channel_set_variable(channel, "sdp_zrtp_hash_string", attr->a_value); - switch_channel_set_flag(channel, CF_ZRTP_HASH); - break; - } - } - } + find_zrtp_hash(session, sdp); + sofia_glue_pass_zrtp_hash(session); for (m = sdp->sdp_media; m; m = m->m_next) { ptime = dptime; @@ -4578,6 +4671,9 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s switch_channel_set_variable(tech_pvt->channel, "t38_broken_boolean", "true"); } + find_zrtp_hash(session, sdp); + sofia_glue_pass_zrtp_hash(session); + for (m = sdp->sdp_media; m; m = m->m_next) { sdp_connection_t *connection; switch_core_session_t *other_session; @@ -4699,9 +4795,6 @@ uint8_t sofia_glue_negotiate_sdp(switch_core_session_t *session, const char *r_s ptime = atoi(attr->a_value); } else if (!strcasecmp(attr->a_name, "maxptime") && attr->a_value) { maxptime = atoi(attr->a_value); - } else if (!strcasecmp(attr->a_name, "zrtp-hash") && attr->a_value) { - switch_channel_set_variable(tech_pvt->channel, "sdp_zrtp_hash_string", attr->a_value); - switch_channel_set_flag(tech_pvt->channel, CF_ZRTP_HASH); } else if (!got_crypto && !strcasecmp(attr->a_name, "crypto") && !zstr(attr->a_value)) { int crypto_tag; diff --git a/src/switch_channel.c b/src/switch_channel.c index e06706cbc3..dc983c78cd 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -2955,7 +2955,9 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) { - if (switch_channel_test_flag(channel, CF_ZRTP_HASH) && !switch_channel_test_flag(channel, CF_ZRTP_PASS)) { + if (!switch_channel_test_flag(channel, CF_ZRTP_PASSTHRU) + && switch_channel_test_flag(channel, CF_ZRTP_PASSTHRU_REQ) + && switch_channel_test_flag(channel, CF_ZRTP_HASH)) { switch_core_session_t *other_session; switch_channel_t *other_channel; int doit = 1; @@ -2963,14 +2965,16 @@ SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) if (switch_core_session_get_partner(channel->session, &other_session) == SWITCH_STATUS_SUCCESS) { other_channel = switch_core_session_get_channel(other_session); - if (switch_channel_test_flag(other_channel, CF_ZRTP_HASH) && !switch_channel_test_flag(other_channel, CF_ZRTP_PASS)) { + if (switch_channel_test_flag(other_channel, CF_ZRTP_HASH) && !switch_channel_test_flag(other_channel, CF_ZRTP_PASSTHRU)) { - switch_channel_set_flag(channel, CF_ZRTP_PASS); - switch_channel_set_flag(other_channel, CF_ZRTP_PASS); + switch_channel_set_flag(channel, CF_ZRTP_PASSTHRU); + switch_channel_set_flag(other_channel, CF_ZRTP_PASSTHRU); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(channel->session), SWITCH_LOG_INFO, "%s Activating ZRTP passthru mode.\n", switch_channel_get_name(channel)); + switch_channel_set_variable(channel, "zrtp_passthru_active", "true"); + switch_channel_set_variable(other_channel, "zrtp_passthru_active", "true"); switch_channel_set_variable(channel, "zrtp_secure_media", "false"); switch_channel_set_variable(other_channel, "zrtp_secure_media", "false"); doit = 0; @@ -2980,18 +2984,20 @@ SWITCH_DECLARE(void) switch_channel_check_zrtp(switch_channel_t *channel) } if (doit) { + switch_channel_set_variable(channel, "zrtp_passthru_active", "false"); switch_channel_set_variable(channel, "zrtp_secure_media", "true"); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(channel->session), SWITCH_LOG_INFO, "%s ZRTP not negotiated on both sides; disabling ZRTP passthru mode.\n", switch_channel_get_name(channel)); - switch_channel_clear_flag(channel, CF_ZRTP_PASS); + switch_channel_clear_flag(channel, CF_ZRTP_PASSTHRU); switch_channel_clear_flag(channel, CF_ZRTP_HASH); if (switch_core_session_get_partner(channel->session, &other_session) == SWITCH_STATUS_SUCCESS) { other_channel = switch_core_session_get_channel(other_session); + switch_channel_set_variable(other_channel, "zrtp_passthru_active", "false"); switch_channel_set_variable(other_channel, "zrtp_secure_media", "true"); - switch_channel_clear_flag(other_channel, CF_ZRTP_PASS); + switch_channel_clear_flag(other_channel, CF_ZRTP_PASSTHRU); switch_channel_clear_flag(other_channel, CF_ZRTP_HASH); switch_core_session_rwunlock(other_session); diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 56c6e0b3a4..4e43987ecf 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -577,6 +577,10 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ } } + if (switch_channel_test_flag(channel, CF_ZRTP_PASSTHRU_REQ)) { + switch_channel_set_flag(peer_channel, CF_ZRTP_PASSTHRU_REQ); + } + if (profile) { if ((cloned_profile = switch_caller_profile_clone(*new_session, profile)) != 0) { switch_channel_set_originator_caller_profile(peer_channel, cloned_profile); diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 87ff02ec8c..98fed62b34 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1820,7 +1820,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } if (session) { - const char *to_var, *bypass_media = NULL, *proxy_media = NULL; + const char *to_var, *bypass_media = NULL, *proxy_media = NULL, *zrtp_passthru = NULL; caller_channel = switch_core_session_get_channel(session); switch_channel_set_flag(caller_channel, CF_ORIGINATOR); oglobals.session = session; @@ -1833,6 +1833,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess proxy_media = switch_channel_get_variable(caller_channel, SWITCH_PROXY_MEDIA_VARIABLE); bypass_media = switch_channel_get_variable(caller_channel, SWITCH_BYPASS_MEDIA_VARIABLE); + zrtp_passthru = switch_channel_get_variable(caller_channel, SWITCH_ZRTP_PASSTHRU_VARIABLE); if (!zstr(proxy_media)) { if (switch_true(proxy_media)) { @@ -1842,6 +1843,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess } } + if (!zstr(zrtp_passthru)) { + if (switch_true(zrtp_passthru)) { + switch_channel_set_flag(caller_channel, CF_ZRTP_PASSTHRU_REQ); + } else if (switch_channel_test_flag(caller_channel, CF_ZRTP_PASSTHRU_REQ)) { + switch_channel_clear_flag(caller_channel, CF_ZRTP_PASSTHRU_REQ); + } + } + if (bypass_media && switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(caller_channel, CF_ANSWERED)) { switch_core_session_message_t msg = { 0 }; From 9daf595443bb369b1859e64c7337aa429a39fa17 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 24 May 2012 13:52:47 -0500 Subject: [PATCH 583/630] swigall --- .../languages/mod_managed/freeswitch_wrap.cxx | 251 +++++++++++++++++- src/mod/languages/mod_managed/managed/swig.cs | 210 ++++++++++++++- 2 files changed, 453 insertions(+), 8 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx index 557cb05f76..5884b42cf5 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx @@ -1113,6 +1113,17 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_READ_RESULT_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ATT_XFER_RESULT_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *) "att_xfer_result"; + + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_COPY_XML_CDR_VARIABLE_get() { char * jresult ; char *result = 0 ; @@ -1124,6 +1135,17 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_COPY_XML_CDR_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_COPY_JSON_CDR_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *) "copy_json_cdr"; + + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get() { char * jresult ; char *result = 0 ; @@ -6732,6 +6754,54 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_disable_heartbeat(void * } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_pop(void * jarg1, char * jarg2, void * jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + switch_media_bug_t **arg3 = (switch_media_bug_t **) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (switch_media_bug_t **)jarg3; + result = (switch_status_t)switch_core_media_bug_pop(arg1,(char const *)arg2,arg3); + jresult = result; + return jresult; +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_exec_all(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + switch_media_bug_exec_cb_t arg3 = (switch_media_bug_exec_cb_t) 0 ; + void *arg4 = (void *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (switch_media_bug_exec_cb_t)jarg3; + arg4 = (void *)jarg4; + result = (switch_status_t)switch_core_media_bug_exec_all(arg1,(char const *)arg2,arg3,arg4); + jresult = result; + return jresult; +} + + +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_core_media_bug_count(void * jarg1, char * jarg2) { + unsigned long jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + uint32_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + result = (uint32_t)switch_core_media_bug_count(arg1,(char const *)arg2); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_add(void * jarg1, char * jarg2, char * jarg3, void * jarg4, void * jarg5, void * jarg6, unsigned long jarg7, void * jarg8) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -6838,6 +6908,16 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_read_replace_fram } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_set_read_demux_frame(void * jarg1, void * jarg2) { + switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; + switch_frame_t *arg2 = (switch_frame_t *) 0 ; + + arg1 = (switch_media_bug_t *)jarg1; + arg2 = (switch_frame_t *)jarg2; + switch_core_media_bug_set_read_demux_frame(arg1,arg2); +} + + SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_session(void * jarg1) { void * jresult ; switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; @@ -6964,13 +7044,15 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_close(void * jarg1) { } -SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_remove_all(void * jarg1) { +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_remove_all_function(void * jarg1, char * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; switch_status_t result; arg1 = (switch_core_session_t *)jarg1; - result = (switch_status_t)switch_core_media_bug_remove_all(arg1); + arg2 = (char *)jarg2; + result = (switch_status_t)switch_core_media_bug_remove_all_function(arg1,(char const *)arg2); jresult = result; return jresult; } @@ -9303,6 +9385,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_read_impl(void * jarg1 } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_real_read_impl(void * jarg1, void * jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_codec_implementation_t *arg2 = (switch_codec_implementation_t *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_codec_implementation_t *)jarg2; + result = (switch_status_t)switch_core_session_get_real_read_impl(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_write_impl(void * jarg1, void * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -11467,6 +11563,23 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_close_extra_files(void * jarg1, int ja } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_thread_set_cpu_affinity(int jarg1) { + int jresult ; + int arg1 ; + switch_status_t result; + + arg1 = (int)jarg1; + result = (switch_status_t)switch_core_thread_set_cpu_affinity(arg1); + jresult = result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_os_yield() { + switch_os_yield(); +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_loadable_module_interface_module_name_set(void * jarg1, char * jarg2) { switch_loadable_module_interface *arg1 = (switch_loadable_module_interface *) 0 ; char *arg2 = (char *) 0 ; @@ -11970,6 +12083,24 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_switch_loadable_module_get_codec_interface( } +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_parse_codec_buf(char * jarg1, void * jarg2, void * jarg3, void * jarg4) { + char * jresult ; + char *arg1 = (char *) 0 ; + uint32_t *arg2 = (uint32_t *) 0 ; + uint32_t *arg3 = (uint32_t *) 0 ; + uint32_t *arg4 = (uint32_t *) 0 ; + char *result = 0 ; + + arg1 = (char *)jarg1; + arg2 = (uint32_t *)jarg2; + arg3 = (uint32_t *)jarg3; + arg4 = (uint32_t *)jarg4; + result = (char *)switch_parse_codec_buf(arg1,arg2,arg3,arg4); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT void * SWIGSTDCALL CSharp_switch_loadable_module_get_dialplan_interface(char * jarg1) { void * jresult ; char *arg1 = (char *) 0 ; @@ -27723,6 +27854,18 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_event_check_permission_list(void * jarg } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_event_add_presence_data_cols(void * jarg1, void * jarg2, char * jarg3) { + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + switch_event_t *arg2 = (switch_event_t *) 0 ; + char *arg3 = (char *) 0 ; + + arg1 = (switch_channel_t *)jarg1; + arg2 = (switch_event_t *)jarg2; + arg3 = (char *)jarg3; + switch_event_add_presence_data_cols(arg1,arg2,(char const *)arg3); +} + + SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RESAMPLE_QUALITY_get() { int jresult ; int result; @@ -28123,6 +28266,24 @@ SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_merge_sln(void * jarg1, unsig } +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_unmerge_sln(void * jarg1, unsigned long jarg2, void * jarg3, unsigned long jarg4) { + unsigned long jresult ; + int16_t *arg1 = (int16_t *) 0 ; + uint32_t arg2 ; + int16_t *arg3 = (int16_t *) 0 ; + uint32_t arg4 ; + uint32_t result; + + arg1 = (int16_t *)jarg1; + arg2 = (uint32_t)jarg2; + arg3 = (int16_t *)jarg3; + arg4 = (uint32_t)jarg4; + result = (uint32_t)switch_unmerge_sln(arg1,arg2,arg3,arg4); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_mux_channels(void * jarg1, void * jarg2, unsigned long jarg3) { int16_t *arg1 = (int16_t *) 0 ; switch_size_t arg2 ; @@ -28581,6 +28742,22 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_activate_unicast(void * jarg1, char } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_generate_json_cdr(void * jarg1, void * jarg2, int jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + cJSON **arg2 = (cJSON **) 0 ; + switch_bool_t arg3 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (cJSON **)jarg2; + arg3 = (switch_bool_t)jarg3; + result = (switch_status_t)switch_ivr_generate_json_cdr(arg1,arg2,arg3); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_generate_xml_cdr(void * jarg1, void * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -28991,6 +29168,52 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_record_session(void * jarg1, char * } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_pop_eavesdropper(void * jarg1, void * jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_core_session_t **arg2 = (switch_core_session_t **) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_core_session_t **)jarg2; + result = (switch_status_t)switch_ivr_eavesdrop_pop_eavesdropper(arg1,arg2); + jresult = result; + return jresult; +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_exec_all(void * jarg1, char * jarg2, char * jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (char *)jarg3; + result = (switch_status_t)switch_ivr_eavesdrop_exec_all(arg1,(char const *)arg2,(char const *)arg3); + jresult = result; + return jresult; +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_update_display(void * jarg1, char * jarg2, char * jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (char *)jarg3; + result = (switch_status_t)switch_ivr_eavesdrop_update_display(arg1,(char const *)arg2,(char const *)arg3); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_session(void * jarg1, char * jarg2, char * jarg3, unsigned long jarg4) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -30703,6 +30926,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_kill_uuid(char * jarg1, int jarg2) } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_blind_transfer_ack(void * jarg1, int jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_bool_t arg2 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_bool_t)jarg2; + result = (switch_status_t)switch_ivr_blind_transfer_ack(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RTP_MAX_BUF_LEN_get() { int jresult ; int result; @@ -31771,6 +32008,16 @@ SWIGEXPORT unsigned char SWIGSTDCALL CSharp_switch_rtp_check_auto_adj(void * jar } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_set_interdigit_delay(void * jarg1, unsigned long jarg2) { + switch_rtp_t *arg1 = (switch_rtp_t *) 0 ; + uint32_t arg2 ; + + arg1 = (switch_rtp_t *)jarg1; + arg2 = (uint32_t)jarg2; + switch_rtp_set_interdigit_delay(arg1,arg2); +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_log_node_t_data_set(void * jarg1, char * jarg2) { switch_log_node_t *arg1 = (switch_log_node_t *) 0 ; char *arg2 = (char *) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs index 94fecfa933..b16a97ed95 100644 --- a/src/mod/languages/mod_managed/managed/swig.cs +++ b/src/mod/languages/mod_managed/managed/swig.cs @@ -1054,6 +1054,21 @@ public class freeswitch { freeswitchPINVOKE.switch_core_session_disable_heartbeat(SWIGTYPE_p_switch_core_session.getCPtr(session)); } + public static switch_status_t switch_core_media_bug_pop(SWIGTYPE_p_switch_core_session orig_session, string function, SWIGTYPE_p_p_switch_media_bug pop) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_pop(SWIGTYPE_p_switch_core_session.getCPtr(orig_session), function, SWIGTYPE_p_p_switch_media_bug.getCPtr(pop)); + return ret; + } + + public static switch_status_t switch_core_media_bug_exec_all(SWIGTYPE_p_switch_core_session orig_session, string function, SWIGTYPE_p_f_p_switch_media_bug_p_void__void cb, SWIGTYPE_p_void user_data) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_exec_all(SWIGTYPE_p_switch_core_session.getCPtr(orig_session), function, SWIGTYPE_p_f_p_switch_media_bug_p_void__void.getCPtr(cb), SWIGTYPE_p_void.getCPtr(user_data)); + return ret; + } + + public static uint switch_core_media_bug_count(SWIGTYPE_p_switch_core_session orig_session, string function) { + uint ret = freeswitchPINVOKE.switch_core_media_bug_count(SWIGTYPE_p_switch_core_session.getCPtr(orig_session), function); + return ret; + } + public static switch_status_t switch_core_media_bug_add(SWIGTYPE_p_switch_core_session session, string function, string target, SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t callback, SWIGTYPE_p_void user_data, SWIGTYPE_p_time_t stop_time, uint flags, SWIGTYPE_p_p_switch_media_bug new_bug) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_add(SWIGTYPE_p_switch_core_session.getCPtr(session), function, target, SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t.getCPtr(callback), SWIGTYPE_p_void.getCPtr(user_data), SWIGTYPE_p_time_t.getCPtr(stop_time), flags, SWIGTYPE_p_p_switch_media_bug.getCPtr(new_bug)); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -1094,6 +1109,10 @@ public class freeswitch { return ret; } + public static void switch_core_media_bug_set_read_demux_frame(SWIGTYPE_p_switch_media_bug bug, switch_frame frame) { + freeswitchPINVOKE.switch_core_media_bug_set_read_demux_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug), switch_frame.getCPtr(frame)); + } + public static SWIGTYPE_p_switch_core_session switch_core_media_bug_get_session(SWIGTYPE_p_switch_media_bug bug) { IntPtr cPtr = freeswitchPINVOKE.switch_core_media_bug_get_session(SWIGTYPE_p_switch_media_bug.getCPtr(bug)); SWIGTYPE_p_switch_core_session ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_core_session(cPtr, false); @@ -1144,8 +1163,8 @@ public class freeswitch { return ret; } - public static switch_status_t switch_core_media_bug_remove_all(SWIGTYPE_p_switch_core_session session) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_remove_all(SWIGTYPE_p_switch_core_session.getCPtr(session)); + public static switch_status_t switch_core_media_bug_remove_all_function(SWIGTYPE_p_switch_core_session session, string function) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_remove_all_function(SWIGTYPE_p_switch_core_session.getCPtr(session), function); return ret; } @@ -1988,6 +2007,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_core_session_get_real_read_impl(SWIGTYPE_p_switch_core_session session, switch_codec_implementation impp) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_get_real_read_impl(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_codec_implementation.getCPtr(impp)); + return ret; + } + public static switch_status_t switch_core_session_get_write_impl(SWIGTYPE_p_switch_core_session session, switch_codec_implementation impp) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_get_write_impl(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_codec_implementation.getCPtr(impp)); return ret; @@ -2687,6 +2711,15 @@ public class freeswitch { freeswitchPINVOKE.switch_close_extra_files(SWIGTYPE_p_int.getCPtr(keep), keep_ttl); } + public static switch_status_t switch_core_thread_set_cpu_affinity(int cpu) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_thread_set_cpu_affinity(cpu); + return ret; + } + + public static void switch_os_yield() { + freeswitchPINVOKE.switch_os_yield(); + } + public static switch_status_t switch_loadable_module_init(switch_bool_t autoload) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_init((int)autoload); return ret; @@ -2708,6 +2741,11 @@ public class freeswitch { return ret; } + public static string switch_parse_codec_buf(string buf, SWIGTYPE_p_unsigned_long interval, SWIGTYPE_p_unsigned_long rate, SWIGTYPE_p_unsigned_long bit) { + string ret = freeswitchPINVOKE.switch_parse_codec_buf(buf, SWIGTYPE_p_unsigned_long.getCPtr(interval), SWIGTYPE_p_unsigned_long.getCPtr(rate), SWIGTYPE_p_unsigned_long.getCPtr(bit)); + return ret; + } + public static switch_dialplan_interface switch_loadable_module_get_dialplan_interface(string name) { IntPtr cPtr = freeswitchPINVOKE.switch_loadable_module_get_dialplan_interface(name); switch_dialplan_interface ret = (cPtr == IntPtr.Zero) ? null : new switch_dialplan_interface(cPtr, false); @@ -4358,6 +4396,10 @@ public class freeswitch { return ret; } + public static void switch_event_add_presence_data_cols(SWIGTYPE_p_switch_channel channel, switch_event arg1, string prefix) { + freeswitchPINVOKE.switch_event_add_presence_data_cols(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1), prefix); + } + public static switch_status_t switch_resample_perform_create(SWIGTYPE_p_p_switch_audio_resampler_t new_resampler, uint from_rate, uint to_rate, uint to_size, int quality, uint channels, string file, string func, int line) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_resample_perform_create(SWIGTYPE_p_p_switch_audio_resampler_t.getCPtr(new_resampler), from_rate, to_rate, to_size, quality, channels, file, func, line); return ret; @@ -4414,6 +4456,11 @@ public class freeswitch { return ret; } + public static uint switch_unmerge_sln(SWIGTYPE_p_short data, uint samples, SWIGTYPE_p_short other_data, uint other_samples) { + uint ret = freeswitchPINVOKE.switch_unmerge_sln(SWIGTYPE_p_short.getCPtr(data), samples, SWIGTYPE_p_short.getCPtr(other_data), other_samples); + return ret; + } + public static void switch_mux_channels(SWIGTYPE_p_short data, SWIGTYPE_p_switch_size_t samples, uint channels) { freeswitchPINVOKE.switch_mux_channels(SWIGTYPE_p_short.getCPtr(data), SWIGTYPE_p_switch_size_t.getCPtr(samples), channels); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -4429,6 +4476,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_generate_json_cdr(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_cJSON json_cdr, switch_bool_t urlencode) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_generate_json_cdr(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_cJSON.getCPtr(json_cdr), (int)urlencode); + return ret; + } + public static switch_status_t switch_ivr_generate_xml_cdr(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_xml xml_cdr) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_generate_xml_cdr(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_xml.getCPtr(xml_cdr)); return ret; @@ -4560,6 +4612,21 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_eavesdrop_pop_eavesdropper(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_core_session sessionp) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_pop_eavesdropper(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_core_session.getCPtr(sessionp)); + return ret; + } + + public static switch_status_t switch_ivr_eavesdrop_exec_all(SWIGTYPE_p_switch_core_session session, string app, string arg) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_exec_all(SWIGTYPE_p_switch_core_session.getCPtr(session), app, arg); + return ret; + } + + public static switch_status_t switch_ivr_eavesdrop_update_display(SWIGTYPE_p_switch_core_session session, string name, string number) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_update_display(SWIGTYPE_p_switch_core_session.getCPtr(session), name, number); + return ret; + } + public static switch_status_t switch_ivr_eavesdrop_session(SWIGTYPE_p_switch_core_session session, string uuid, string require_group, uint flags) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_session(SWIGTYPE_p_switch_core_session.getCPtr(session), uuid, require_group, flags); return ret; @@ -5076,6 +5143,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_blind_transfer_ack(SWIGTYPE_p_switch_core_session session, switch_bool_t success) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_blind_transfer_ack(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)success); + return ret; + } + public static switch_status_t switch_rtp_add_crypto_key(SWIGTYPE_p_switch_rtp rtp_session, switch_rtp_crypto_direction_t direction, uint index, switch_rtp_crypto_key_type_t type, SWIGTYPE_p_unsigned_char key, SWIGTYPE_p_switch_size_t keylen) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_add_crypto_key(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), (int)direction, index, (int)type, SWIGTYPE_p_unsigned_char.getCPtr(key), SWIGTYPE_p_switch_size_t.getCPtr(keylen)); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -5375,6 +5447,10 @@ public class freeswitch { return ret; } + public static void switch_rtp_set_interdigit_delay(SWIGTYPE_p_switch_rtp rtp_session, uint delay) { + freeswitchPINVOKE.switch_rtp_set_interdigit_delay(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), delay); + } + public static switch_status_t switch_log_init(SWIGTYPE_p_apr_pool_t pool, switch_bool_t colorize) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_log_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), (int)colorize); return ret; @@ -5992,7 +6068,9 @@ public class freeswitch { public static readonly string SWITCH_ENABLE_HEARTBEAT_EVENTS_VARIABLE = freeswitchPINVOKE.SWITCH_ENABLE_HEARTBEAT_EVENTS_VARIABLE_get(); public static readonly string SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE = freeswitchPINVOKE.SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE_get(); public static readonly string SWITCH_READ_RESULT_VARIABLE = freeswitchPINVOKE.SWITCH_READ_RESULT_VARIABLE_get(); + public static readonly string SWITCH_ATT_XFER_RESULT_VARIABLE = freeswitchPINVOKE.SWITCH_ATT_XFER_RESULT_VARIABLE_get(); public static readonly string SWITCH_COPY_XML_CDR_VARIABLE = freeswitchPINVOKE.SWITCH_COPY_XML_CDR_VARIABLE_get(); + public static readonly string SWITCH_COPY_JSON_CDR_VARIABLE = freeswitchPINVOKE.SWITCH_COPY_JSON_CDR_VARIABLE_get(); public static readonly string SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE = freeswitchPINVOKE.SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get(); public static readonly string SWITCH_TRANSFER_HISTORY_VARIABLE = freeswitchPINVOKE.SWITCH_TRANSFER_HISTORY_VARIABLE_get(); public static readonly string SWITCH_TRANSFER_SOURCE_VARIABLE = freeswitchPINVOKE.SWITCH_TRANSFER_SOURCE_VARIABLE_get(); @@ -6535,9 +6613,15 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_READ_RESULT_VARIABLE_get")] public static extern string SWITCH_READ_RESULT_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ATT_XFER_RESULT_VARIABLE_get")] + public static extern string SWITCH_ATT_XFER_RESULT_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_COPY_XML_CDR_VARIABLE_get")] public static extern string SWITCH_COPY_XML_CDR_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_COPY_JSON_CDR_VARIABLE_get")] + public static extern string SWITCH_COPY_JSON_CDR_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get")] public static extern string SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get(); @@ -7936,6 +8020,15 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_disable_heartbeat")] public static extern void switch_core_session_disable_heartbeat(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_pop")] + public static extern int switch_core_media_bug_pop(HandleRef jarg1, string jarg2, HandleRef jarg3); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_exec_all")] + public static extern int switch_core_media_bug_exec_all(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_count")] + public static extern uint switch_core_media_bug_count(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_add")] public static extern int switch_core_media_bug_add(HandleRef jarg1, string jarg2, string jarg3, HandleRef jarg4, HandleRef jarg5, HandleRef jarg6, uint jarg7, HandleRef jarg8); @@ -7960,6 +8053,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_read_replace_frame")] public static extern IntPtr switch_core_media_bug_get_read_replace_frame(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_read_demux_frame")] + public static extern void switch_core_media_bug_set_read_demux_frame(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_session")] public static extern IntPtr switch_core_media_bug_get_session(HandleRef jarg1); @@ -7990,8 +8086,8 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_close")] public static extern int switch_core_media_bug_close(HandleRef jarg1); - [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_remove_all")] - public static extern int switch_core_media_bug_remove_all(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_remove_all_function")] + public static extern int switch_core_media_bug_remove_all_function(HandleRef jarg1, string jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_enumerate")] public static extern int switch_core_media_bug_enumerate(HandleRef jarg1, HandleRef jarg2); @@ -8503,6 +8599,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_read_impl")] public static extern int switch_core_session_get_read_impl(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_real_read_impl")] + public static extern int switch_core_session_get_real_read_impl(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_write_impl")] public static extern int switch_core_session_get_write_impl(HandleRef jarg1, HandleRef jarg2); @@ -9007,6 +9106,12 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_close_extra_files")] public static extern void switch_close_extra_files(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_thread_set_cpu_affinity")] + public static extern int switch_core_thread_set_cpu_affinity(int jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_os_yield")] + public static extern void switch_os_yield(); + [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_interface_module_name_set")] public static extern void switch_loadable_module_interface_module_name_set(HandleRef jarg1, string jarg2); @@ -9139,6 +9244,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_get_codec_interface")] public static extern IntPtr switch_loadable_module_get_codec_interface(string jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_parse_codec_buf")] + public static extern string switch_parse_codec_buf(string jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_get_dialplan_interface")] public static extern IntPtr switch_loadable_module_get_dialplan_interface(string jarg1); @@ -12871,6 +12979,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_event_check_permission_list")] public static extern int switch_event_check_permission_list(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_event_add_presence_data_cols")] + public static extern void switch_event_add_presence_data_cols(HandleRef jarg1, HandleRef jarg2, string jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RESAMPLE_QUALITY_get")] public static extern int SWITCH_RESAMPLE_QUALITY_get(); @@ -12964,6 +13075,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_merge_sln")] public static extern uint switch_merge_sln(HandleRef jarg1, uint jarg2, HandleRef jarg3, uint jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_unmerge_sln")] + public static extern uint switch_unmerge_sln(HandleRef jarg1, uint jarg2, HandleRef jarg3, uint jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_mux_channels")] public static extern void switch_mux_channels(HandleRef jarg1, HandleRef jarg2, uint jarg3); @@ -13075,6 +13189,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_activate_unicast")] public static extern int switch_ivr_activate_unicast(HandleRef jarg1, string jarg2, ushort jarg3, string jarg4, ushort jarg5, string jarg6, string jarg7); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_generate_json_cdr")] + public static extern int switch_ivr_generate_json_cdr(HandleRef jarg1, HandleRef jarg2, int jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_generate_xml_cdr")] public static extern int switch_ivr_generate_xml_cdr(HandleRef jarg1, HandleRef jarg2); @@ -13153,6 +13270,15 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_record_session")] public static extern int switch_ivr_record_session(HandleRef jarg1, string jarg2, uint jarg3, HandleRef jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_pop_eavesdropper")] + public static extern int switch_ivr_eavesdrop_pop_eavesdropper(HandleRef jarg1, HandleRef jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_exec_all")] + public static extern int switch_ivr_eavesdrop_exec_all(HandleRef jarg1, string jarg2, string jarg3); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_update_display")] + public static extern int switch_ivr_eavesdrop_update_display(HandleRef jarg1, string jarg2, string jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_session")] public static extern int switch_ivr_eavesdrop_session(HandleRef jarg1, string jarg2, string jarg3, uint jarg4); @@ -13465,6 +13591,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_kill_uuid")] public static extern int switch_ivr_kill_uuid(string jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_blind_transfer_ack")] + public static extern int switch_ivr_blind_transfer_ack(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RTP_MAX_BUF_LEN_get")] public static extern int SWITCH_RTP_MAX_BUF_LEN_get(); @@ -13708,6 +13837,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_check_auto_adj")] public static extern byte switch_rtp_check_auto_adj(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_set_interdigit_delay")] + public static extern void switch_rtp_set_interdigit_delay(HandleRef jarg1, uint jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_log_node_t_data_set")] public static extern void switch_log_node_t_data_set(HandleRef jarg1, string jarg2); @@ -17362,6 +17494,36 @@ namespace FreeSWITCH.Native { using System; using System.Runtime.InteropServices; +public class SWIGTYPE_p_f_p_switch_media_bug_p_void__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_media_bug_p_void__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_media_bug_p_void__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_media_bug_p_void__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.35 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + public class SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void { private HandleRef swigCPtr; @@ -18142,6 +18304,36 @@ namespace FreeSWITCH.Native { using System; using System.Runtime.InteropServices; +public class SWIGTYPE_p_p_cJSON { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_cJSON(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_cJSON() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_cJSON obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.35 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + public class SWIGTYPE_p_p_p_char { private HandleRef swigCPtr; @@ -22998,6 +23190,9 @@ public enum switch_channel_flag_t { CF_SERVICE_VIDEO, CF_ZRTP_HASH, CF_ZRTP_PASS, + CF_CHANNEL_SWAP, + CF_PICKUP, + CF_CONFIRM_BLIND_TRANSFER, CF_FLAG_MAX } @@ -24891,6 +25086,7 @@ public enum switch_core_session_message_types_t { SWITCH_MESSAGE_INDICATE_SIGNAL_DATA, SWITCH_MESSAGE_INDICATE_INFO, SWITCH_MESSAGE_INDICATE_AUDIO_DATA, + SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE, SWITCH_MESSAGE_INVALID } @@ -25836,7 +26032,8 @@ namespace FreeSWITCH.Native { ED_NONE = 0, ED_MUX_READ = (1 << 0), ED_MUX_WRITE = (1 << 1), - ED_DTMF = (1 << 2) + ED_DTMF = (1 << 2), + ED_COPY_DISPLAY = (1 << 3) } } @@ -29776,7 +29973,8 @@ namespace FreeSWITCH.Native { SMBF_THREAD_LOCK = (1 << 7), SMBF_PRUNE = (1 << 8), SMBF_NO_PAUSE = (1 << 9), - SMBF_STEREO_SWAP = (1 << 10) + SMBF_STEREO_SWAP = (1 << 10), + SMBF_LOCK = (1 << 11) } } From 9b6702da67e63a06f44c36fcea0c6004150c9684 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 24 May 2012 13:53:23 -0500 Subject: [PATCH 584/630] swigall --- src/mod/languages/mod_managed/freeswitch_wrap.cxx | 11 +++++++++++ src/mod/languages/mod_managed/managed/swig.cs | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx index 5884b42cf5..33feeaee11 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx @@ -1520,6 +1520,17 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_PROXY_MEDIA_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ZRTP_PASSTHRU_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *) "zrtp_passthru"; + + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get() { char * jresult ; char *result = 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs index b16a97ed95..62dea3d5c5 100644 --- a/src/mod/languages/mod_managed/managed/swig.cs +++ b/src/mod/languages/mod_managed/managed/swig.cs @@ -6105,6 +6105,7 @@ public class freeswitch { public static readonly string SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME = freeswitchPINVOKE.SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME_get(); public static readonly string SWITCH_BYPASS_MEDIA_VARIABLE = freeswitchPINVOKE.SWITCH_BYPASS_MEDIA_VARIABLE_get(); public static readonly string SWITCH_PROXY_MEDIA_VARIABLE = freeswitchPINVOKE.SWITCH_PROXY_MEDIA_VARIABLE_get(); + public static readonly string SWITCH_ZRTP_PASSTHRU_VARIABLE = freeswitchPINVOKE.SWITCH_ZRTP_PASSTHRU_VARIABLE_get(); public static readonly string SWITCH_ENDPOINT_DISPOSITION_VARIABLE = freeswitchPINVOKE.SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get(); public static readonly string SWITCH_HOLD_MUSIC_VARIABLE = freeswitchPINVOKE.SWITCH_HOLD_MUSIC_VARIABLE_get(); public static readonly string SWITCH_TEMP_HOLD_MUSIC_VARIABLE = freeswitchPINVOKE.SWITCH_TEMP_HOLD_MUSIC_VARIABLE_get(); @@ -6724,6 +6725,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_PROXY_MEDIA_VARIABLE_get")] public static extern string SWITCH_PROXY_MEDIA_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ZRTP_PASSTHRU_VARIABLE_get")] + public static extern string SWITCH_ZRTP_PASSTHRU_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get")] public static extern string SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get(); @@ -23188,8 +23192,9 @@ public enum switch_channel_flag_t { CF_VIDEO_REFRESH_REQ, CF_SERVICE_AUDIO, CF_SERVICE_VIDEO, + CF_ZRTP_PASSTHRU_REQ, + CF_ZRTP_PASSTHRU, CF_ZRTP_HASH, - CF_ZRTP_PASS, CF_CHANNEL_SWAP, CF_PICKUP, CF_CONFIRM_BLIND_TRANSFER, From b0e95fdad65029b3f763ce2b0a795a6b1f4f02b1 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Thu, 24 May 2012 16:03:56 -0500 Subject: [PATCH 585/630] vs2010 reswig mod_managed --- .../mod_managed/freeswitch_wrap.2010.cxx | 259 +++++++++++++++++- .../mod_managed/managed/swig.2010.cs | 217 ++++++++++++++- 2 files changed, 467 insertions(+), 9 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx index 27cc9fb600..65b4eedf3c 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx @@ -1050,6 +1050,16 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_READ_RESULT_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ATT_XFER_RESULT_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *)("att_xfer_result"); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_COPY_XML_CDR_VARIABLE_get() { char * jresult ; char *result = 0 ; @@ -1060,6 +1070,16 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_COPY_XML_CDR_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_COPY_JSON_CDR_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *)("copy_json_cdr"); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get() { char * jresult ; char *result = 0 ; @@ -1400,6 +1420,16 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_PROXY_MEDIA_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ZRTP_PASSTHRU_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *)("zrtp_passthru"); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get() { char * jresult ; char *result = 0 ; @@ -6425,6 +6455,54 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_session_disable_heartbeat(void * } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_pop(void * jarg1, char * jarg2, void * jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + switch_media_bug_t **arg3 = (switch_media_bug_t **) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (switch_media_bug_t **)jarg3; + result = (switch_status_t)switch_core_media_bug_pop(arg1,(char const *)arg2,arg3); + jresult = result; + return jresult; +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_exec_all(void * jarg1, char * jarg2, void * jarg3, void * jarg4) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + switch_media_bug_exec_cb_t arg3 = (switch_media_bug_exec_cb_t) 0 ; + void *arg4 = (void *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (switch_media_bug_exec_cb_t)jarg3; + arg4 = (void *)jarg4; + result = (switch_status_t)switch_core_media_bug_exec_all(arg1,(char const *)arg2,arg3,arg4); + jresult = result; + return jresult; +} + + +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_core_media_bug_count(void * jarg1, char * jarg2) { + unsigned long jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + uint32_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + result = (uint32_t)switch_core_media_bug_count(arg1,(char const *)arg2); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_add(void * jarg1, char * jarg2, char * jarg3, void * jarg4, void * jarg5, void * jarg6, unsigned long jarg7, void * jarg8) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -6531,6 +6609,16 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_read_replace_fram } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_core_media_bug_set_read_demux_frame(void * jarg1, void * jarg2) { + switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; + switch_frame_t *arg2 = (switch_frame_t *) 0 ; + + arg1 = (switch_media_bug_t *)jarg1; + arg2 = (switch_frame_t *)jarg2; + switch_core_media_bug_set_read_demux_frame(arg1,arg2); +} + + SWIGEXPORT void * SWIGSTDCALL CSharp_switch_core_media_bug_get_session(void * jarg1) { void * jresult ; switch_media_bug_t *arg1 = (switch_media_bug_t *) 0 ; @@ -6657,13 +6745,15 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_close(void * jarg1) { } -SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_remove_all(void * jarg1) { +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_media_bug_remove_all_function(void * jarg1, char * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; switch_status_t result; arg1 = (switch_core_session_t *)jarg1; - result = (switch_status_t)switch_core_media_bug_remove_all(arg1); + arg2 = (char *)jarg2; + result = (switch_status_t)switch_core_media_bug_remove_all_function(arg1,(char const *)arg2); jresult = result; return jresult; } @@ -8996,6 +9086,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_read_impl(void * jarg1 } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_real_read_impl(void * jarg1, void * jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_codec_implementation_t *arg2 = (switch_codec_implementation_t *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_codec_implementation_t *)jarg2; + result = (switch_status_t)switch_core_session_get_real_read_impl(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_session_get_write_impl(void * jarg1, void * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -11151,6 +11255,23 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_close_extra_files(void * jarg1, int ja } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_thread_set_cpu_affinity(int jarg1) { + int jresult ; + int arg1 ; + switch_status_t result; + + arg1 = (int)jarg1; + result = (switch_status_t)switch_core_thread_set_cpu_affinity(arg1); + jresult = result; + return jresult; +} + + +SWIGEXPORT void SWIGSTDCALL CSharp_switch_os_yield() { + switch_os_yield(); +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_loadable_module_interface_module_name_set(void * jarg1, char * jarg2) { switch_loadable_module_interface *arg1 = (switch_loadable_module_interface *) 0 ; char *arg2 = (char *) 0 ; @@ -11635,6 +11756,24 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_switch_loadable_module_get_codec_interface( } +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_parse_codec_buf(char * jarg1, void * jarg2, void * jarg3, void * jarg4) { + char * jresult ; + char *arg1 = (char *) 0 ; + uint32_t *arg2 = (uint32_t *) 0 ; + uint32_t *arg3 = (uint32_t *) 0 ; + uint32_t *arg4 = (uint32_t *) 0 ; + char *result = 0 ; + + arg1 = (char *)jarg1; + arg2 = (uint32_t *)jarg2; + arg3 = (uint32_t *)jarg3; + arg4 = (uint32_t *)jarg4; + result = (char *)switch_parse_codec_buf(arg1,arg2,arg3,arg4); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT void * SWIGSTDCALL CSharp_switch_loadable_module_get_dialplan_interface(char * jarg1) { void * jresult ; char *arg1 = (char *) 0 ; @@ -27013,6 +27152,18 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_event_check_permission_list(void * jarg } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_event_add_presence_data_cols(void * jarg1, void * jarg2, char * jarg3) { + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + switch_event_t *arg2 = (switch_event_t *) 0 ; + char *arg3 = (char *) 0 ; + + arg1 = (switch_channel_t *)jarg1; + arg2 = (switch_event_t *)jarg2; + arg3 = (char *)jarg3; + switch_event_add_presence_data_cols(arg1,arg2,(char const *)arg3); +} + + SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RESAMPLE_QUALITY_get() { int jresult ; int result; @@ -27403,6 +27554,24 @@ SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_merge_sln(void * jarg1, unsig } +SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_unmerge_sln(void * jarg1, unsigned long jarg2, void * jarg3, unsigned long jarg4) { + unsigned long jresult ; + int16_t *arg1 = (int16_t *) 0 ; + uint32_t arg2 ; + int16_t *arg3 = (int16_t *) 0 ; + uint32_t arg4 ; + uint32_t result; + + arg1 = (int16_t *)jarg1; + arg2 = (uint32_t)jarg2; + arg3 = (int16_t *)jarg3; + arg4 = (uint32_t)jarg4; + result = (uint32_t)switch_unmerge_sln(arg1,arg2,arg3,arg4); + jresult = (unsigned long)result; + return jresult; +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_mux_channels(void * jarg1, void * jarg2, unsigned long jarg3) { int16_t *arg1 = (int16_t *) 0 ; switch_size_t arg2 ; @@ -27847,6 +28016,22 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_activate_unicast(void * jarg1, char } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_generate_json_cdr(void * jarg1, void * jarg2, int jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + cJSON **arg2 = (cJSON **) 0 ; + switch_bool_t arg3 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (cJSON **)jarg2; + arg3 = (switch_bool_t)jarg3; + result = (switch_status_t)switch_ivr_generate_json_cdr(arg1,arg2,arg3); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_generate_xml_cdr(void * jarg1, void * jarg2) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -28257,6 +28442,52 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_record_session(void * jarg1, char * } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_pop_eavesdropper(void * jarg1, void * jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_core_session_t **arg2 = (switch_core_session_t **) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_core_session_t **)jarg2; + result = (switch_status_t)switch_ivr_eavesdrop_pop_eavesdropper(arg1,arg2); + jresult = result; + return jresult; +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_exec_all(void * jarg1, char * jarg2, char * jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (char *)jarg3; + result = (switch_status_t)switch_ivr_eavesdrop_exec_all(arg1,(char const *)arg2,(char const *)arg3); + jresult = result; + return jresult; +} + + +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_update_display(void * jarg1, char * jarg2, char * jarg3) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (char *)jarg2; + arg3 = (char *)jarg3; + result = (switch_status_t)switch_ivr_eavesdrop_update_display(arg1,(char const *)arg2,(char const *)arg3); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_eavesdrop_session(void * jarg1, char * jarg2, char * jarg3, unsigned long jarg4) { int jresult ; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; @@ -29969,6 +30200,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_kill_uuid(char * jarg1, int jarg2) } +SWIGEXPORT int SWIGSTDCALL CSharp_switch_ivr_blind_transfer_ack(void * jarg1, int jarg2) { + int jresult ; + switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; + switch_bool_t arg2 ; + switch_status_t result; + + arg1 = (switch_core_session_t *)jarg1; + arg2 = (switch_bool_t)jarg2; + result = (switch_status_t)switch_ivr_blind_transfer_ack(arg1,arg2); + jresult = result; + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_SWITCH_RTP_MAX_BUF_LEN_get() { int jresult ; int result; @@ -31026,6 +31271,16 @@ SWIGEXPORT unsigned char SWIGSTDCALL CSharp_switch_rtp_check_auto_adj(void * jar } +SWIGEXPORT void SWIGSTDCALL CSharp_switch_rtp_set_interdigit_delay(void * jarg1, unsigned long jarg2) { + switch_rtp_t *arg1 = (switch_rtp_t *) 0 ; + uint32_t arg2 ; + + arg1 = (switch_rtp_t *)jarg1; + arg2 = (uint32_t)jarg2; + switch_rtp_set_interdigit_delay(arg1,arg2); +} + + SWIGEXPORT void SWIGSTDCALL CSharp_switch_log_node_t_data_set(void * jarg1, char * jarg2) { switch_log_node_t *arg1 = (switch_log_node_t *) 0 ; char *arg2 = (char *) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.2010.cs b/src/mod/languages/mod_managed/managed/swig.2010.cs index d814ce15b9..0654085a50 100644 --- a/src/mod/languages/mod_managed/managed/swig.2010.cs +++ b/src/mod/languages/mod_managed/managed/swig.2010.cs @@ -1066,6 +1066,21 @@ public class freeswitch { freeswitchPINVOKE.switch_core_session_disable_heartbeat(SWIGTYPE_p_switch_core_session.getCPtr(session)); } + public static switch_status_t switch_core_media_bug_pop(SWIGTYPE_p_switch_core_session orig_session, string function, SWIGTYPE_p_p_switch_media_bug pop) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_pop(SWIGTYPE_p_switch_core_session.getCPtr(orig_session), function, SWIGTYPE_p_p_switch_media_bug.getCPtr(pop)); + return ret; + } + + public static switch_status_t switch_core_media_bug_exec_all(SWIGTYPE_p_switch_core_session orig_session, string function, SWIGTYPE_p_f_p_switch_media_bug_p_void__void cb, SWIGTYPE_p_void user_data) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_exec_all(SWIGTYPE_p_switch_core_session.getCPtr(orig_session), function, SWIGTYPE_p_f_p_switch_media_bug_p_void__void.getCPtr(cb), SWIGTYPE_p_void.getCPtr(user_data)); + return ret; + } + + public static uint switch_core_media_bug_count(SWIGTYPE_p_switch_core_session orig_session, string function) { + uint ret = freeswitchPINVOKE.switch_core_media_bug_count(SWIGTYPE_p_switch_core_session.getCPtr(orig_session), function); + return ret; + } + public static switch_status_t switch_core_media_bug_add(SWIGTYPE_p_switch_core_session session, string function, string target, SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t callback, SWIGTYPE_p_void user_data, SWIGTYPE_p_time_t stop_time, uint flags, SWIGTYPE_p_p_switch_media_bug new_bug) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_add(SWIGTYPE_p_switch_core_session.getCPtr(session), function, target, SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t.getCPtr(callback), SWIGTYPE_p_void.getCPtr(user_data), SWIGTYPE_p_time_t.getCPtr(stop_time), flags, SWIGTYPE_p_p_switch_media_bug.getCPtr(new_bug)); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -1106,6 +1121,10 @@ public class freeswitch { return ret; } + public static void switch_core_media_bug_set_read_demux_frame(SWIGTYPE_p_switch_media_bug bug, switch_frame frame) { + freeswitchPINVOKE.switch_core_media_bug_set_read_demux_frame(SWIGTYPE_p_switch_media_bug.getCPtr(bug), switch_frame.getCPtr(frame)); + } + public static SWIGTYPE_p_switch_core_session switch_core_media_bug_get_session(SWIGTYPE_p_switch_media_bug bug) { IntPtr cPtr = freeswitchPINVOKE.switch_core_media_bug_get_session(SWIGTYPE_p_switch_media_bug.getCPtr(bug)); SWIGTYPE_p_switch_core_session ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_core_session(cPtr, false); @@ -1156,8 +1175,8 @@ public class freeswitch { return ret; } - public static switch_status_t switch_core_media_bug_remove_all(SWIGTYPE_p_switch_core_session session) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_remove_all(SWIGTYPE_p_switch_core_session.getCPtr(session)); + public static switch_status_t switch_core_media_bug_remove_all_function(SWIGTYPE_p_switch_core_session session, string function) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_media_bug_remove_all_function(SWIGTYPE_p_switch_core_session.getCPtr(session), function); return ret; } @@ -2000,6 +2019,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_core_session_get_real_read_impl(SWIGTYPE_p_switch_core_session session, switch_codec_implementation impp) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_get_real_read_impl(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_codec_implementation.getCPtr(impp)); + return ret; + } + public static switch_status_t switch_core_session_get_write_impl(SWIGTYPE_p_switch_core_session session, switch_codec_implementation impp) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_session_get_write_impl(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_codec_implementation.getCPtr(impp)); return ret; @@ -2699,6 +2723,15 @@ public class freeswitch { freeswitchPINVOKE.switch_close_extra_files(SWIGTYPE_p_int.getCPtr(keep), keep_ttl); } + public static switch_status_t switch_core_thread_set_cpu_affinity(int cpu) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_thread_set_cpu_affinity(cpu); + return ret; + } + + public static void switch_os_yield() { + freeswitchPINVOKE.switch_os_yield(); + } + public static switch_status_t switch_loadable_module_init(switch_bool_t autoload) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_init((int)autoload); return ret; @@ -2720,6 +2753,11 @@ public class freeswitch { return ret; } + public static string switch_parse_codec_buf(string buf, SWIGTYPE_p_unsigned_long interval, SWIGTYPE_p_unsigned_long rate, SWIGTYPE_p_unsigned_long bit) { + string ret = freeswitchPINVOKE.switch_parse_codec_buf(buf, SWIGTYPE_p_unsigned_long.getCPtr(interval), SWIGTYPE_p_unsigned_long.getCPtr(rate), SWIGTYPE_p_unsigned_long.getCPtr(bit)); + return ret; + } + public static switch_dialplan_interface switch_loadable_module_get_dialplan_interface(string name) { IntPtr cPtr = freeswitchPINVOKE.switch_loadable_module_get_dialplan_interface(name); switch_dialplan_interface ret = (cPtr == IntPtr.Zero) ? null : new switch_dialplan_interface(cPtr, false); @@ -4370,6 +4408,10 @@ public class freeswitch { return ret; } + public static void switch_event_add_presence_data_cols(SWIGTYPE_p_switch_channel channel, switch_event arg1, string prefix) { + freeswitchPINVOKE.switch_event_add_presence_data_cols(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_event.getCPtr(arg1), prefix); + } + public static switch_status_t switch_resample_perform_create(SWIGTYPE_p_p_switch_audio_resampler_t new_resampler, uint from_rate, uint to_rate, uint to_size, int quality, uint channels, string file, string func, int line) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_resample_perform_create(SWIGTYPE_p_p_switch_audio_resampler_t.getCPtr(new_resampler), from_rate, to_rate, to_size, quality, channels, file, func, line); return ret; @@ -4426,6 +4468,11 @@ public class freeswitch { return ret; } + public static uint switch_unmerge_sln(SWIGTYPE_p_short data, uint samples, SWIGTYPE_p_short other_data, uint other_samples) { + uint ret = freeswitchPINVOKE.switch_unmerge_sln(SWIGTYPE_p_short.getCPtr(data), samples, SWIGTYPE_p_short.getCPtr(other_data), other_samples); + return ret; + } + public static void switch_mux_channels(SWIGTYPE_p_short data, SWIGTYPE_p_switch_size_t samples, uint channels) { freeswitchPINVOKE.switch_mux_channels(SWIGTYPE_p_short.getCPtr(data), SWIGTYPE_p_switch_size_t.getCPtr(samples), channels); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -4441,6 +4488,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_generate_json_cdr(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_cJSON json_cdr, switch_bool_t urlencode) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_generate_json_cdr(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_cJSON.getCPtr(json_cdr), (int)urlencode); + return ret; + } + public static switch_status_t switch_ivr_generate_xml_cdr(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_xml xml_cdr) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_generate_xml_cdr(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_xml.getCPtr(xml_cdr)); return ret; @@ -4572,6 +4624,21 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_eavesdrop_pop_eavesdropper(SWIGTYPE_p_switch_core_session session, SWIGTYPE_p_p_switch_core_session sessionp) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_pop_eavesdropper(SWIGTYPE_p_switch_core_session.getCPtr(session), SWIGTYPE_p_p_switch_core_session.getCPtr(sessionp)); + return ret; + } + + public static switch_status_t switch_ivr_eavesdrop_exec_all(SWIGTYPE_p_switch_core_session session, string app, string arg) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_exec_all(SWIGTYPE_p_switch_core_session.getCPtr(session), app, arg); + return ret; + } + + public static switch_status_t switch_ivr_eavesdrop_update_display(SWIGTYPE_p_switch_core_session session, string name, string number) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_update_display(SWIGTYPE_p_switch_core_session.getCPtr(session), name, number); + return ret; + } + public static switch_status_t switch_ivr_eavesdrop_session(SWIGTYPE_p_switch_core_session session, string uuid, string require_group, uint flags) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_eavesdrop_session(SWIGTYPE_p_switch_core_session.getCPtr(session), uuid, require_group, flags); return ret; @@ -5088,6 +5155,11 @@ public class freeswitch { return ret; } + public static switch_status_t switch_ivr_blind_transfer_ack(SWIGTYPE_p_switch_core_session session, switch_bool_t success) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_blind_transfer_ack(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)success); + return ret; + } + public static switch_status_t switch_rtp_add_crypto_key(SWIGTYPE_p_switch_rtp rtp_session, switch_rtp_crypto_direction_t direction, uint index, switch_rtp_crypto_key_type_t type, SWIGTYPE_p_unsigned_char key, SWIGTYPE_p_switch_size_t keylen) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_add_crypto_key(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), (int)direction, index, (int)type, SWIGTYPE_p_unsigned_char.getCPtr(key), SWIGTYPE_p_switch_size_t.getCPtr(keylen)); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -5387,6 +5459,10 @@ public class freeswitch { return ret; } + public static void switch_rtp_set_interdigit_delay(SWIGTYPE_p_switch_rtp rtp_session, uint delay) { + freeswitchPINVOKE.switch_rtp_set_interdigit_delay(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), delay); + } + public static switch_status_t switch_log_init(SWIGTYPE_p_apr_pool_t pool, switch_bool_t colorize) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_log_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), (int)colorize); return ret; @@ -6004,7 +6080,9 @@ public class freeswitch { public static readonly string SWITCH_ENABLE_HEARTBEAT_EVENTS_VARIABLE = freeswitchPINVOKE.SWITCH_ENABLE_HEARTBEAT_EVENTS_VARIABLE_get(); public static readonly string SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE = freeswitchPINVOKE.SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE_get(); public static readonly string SWITCH_READ_RESULT_VARIABLE = freeswitchPINVOKE.SWITCH_READ_RESULT_VARIABLE_get(); + public static readonly string SWITCH_ATT_XFER_RESULT_VARIABLE = freeswitchPINVOKE.SWITCH_ATT_XFER_RESULT_VARIABLE_get(); public static readonly string SWITCH_COPY_XML_CDR_VARIABLE = freeswitchPINVOKE.SWITCH_COPY_XML_CDR_VARIABLE_get(); + public static readonly string SWITCH_COPY_JSON_CDR_VARIABLE = freeswitchPINVOKE.SWITCH_COPY_JSON_CDR_VARIABLE_get(); public static readonly string SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE = freeswitchPINVOKE.SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get(); public static readonly string SWITCH_TRANSFER_HISTORY_VARIABLE = freeswitchPINVOKE.SWITCH_TRANSFER_HISTORY_VARIABLE_get(); public static readonly string SWITCH_TRANSFER_SOURCE_VARIABLE = freeswitchPINVOKE.SWITCH_TRANSFER_SOURCE_VARIABLE_get(); @@ -6039,6 +6117,7 @@ public class freeswitch { public static readonly string SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME = freeswitchPINVOKE.SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME_get(); public static readonly string SWITCH_BYPASS_MEDIA_VARIABLE = freeswitchPINVOKE.SWITCH_BYPASS_MEDIA_VARIABLE_get(); public static readonly string SWITCH_PROXY_MEDIA_VARIABLE = freeswitchPINVOKE.SWITCH_PROXY_MEDIA_VARIABLE_get(); + public static readonly string SWITCH_ZRTP_PASSTHRU_VARIABLE = freeswitchPINVOKE.SWITCH_ZRTP_PASSTHRU_VARIABLE_get(); public static readonly string SWITCH_ENDPOINT_DISPOSITION_VARIABLE = freeswitchPINVOKE.SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get(); public static readonly string SWITCH_HOLD_MUSIC_VARIABLE = freeswitchPINVOKE.SWITCH_HOLD_MUSIC_VARIABLE_get(); public static readonly string SWITCH_TEMP_HOLD_MUSIC_VARIABLE = freeswitchPINVOKE.SWITCH_TEMP_HOLD_MUSIC_VARIABLE_get(); @@ -6551,9 +6630,15 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_READ_RESULT_VARIABLE_get")] public static extern string SWITCH_READ_RESULT_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ATT_XFER_RESULT_VARIABLE_get")] + public static extern string SWITCH_ATT_XFER_RESULT_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_COPY_XML_CDR_VARIABLE_get")] public static extern string SWITCH_COPY_XML_CDR_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_COPY_JSON_CDR_VARIABLE_get")] + public static extern string SWITCH_COPY_JSON_CDR_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get")] public static extern string SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE_get(); @@ -6656,6 +6741,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_PROXY_MEDIA_VARIABLE_get")] public static extern string SWITCH_PROXY_MEDIA_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ZRTP_PASSTHRU_VARIABLE_get")] + public static extern string SWITCH_ZRTP_PASSTHRU_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get")] public static extern string SWITCH_ENDPOINT_DISPOSITION_VARIABLE_get(); @@ -7952,6 +8040,15 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_disable_heartbeat")] public static extern void switch_core_session_disable_heartbeat(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_pop")] + public static extern int switch_core_media_bug_pop(HandleRef jarg1, string jarg2, HandleRef jarg3); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_exec_all")] + public static extern int switch_core_media_bug_exec_all(HandleRef jarg1, string jarg2, HandleRef jarg3, HandleRef jarg4); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_count")] + public static extern uint switch_core_media_bug_count(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_add")] public static extern int switch_core_media_bug_add(HandleRef jarg1, string jarg2, string jarg3, HandleRef jarg4, HandleRef jarg5, HandleRef jarg6, uint jarg7, HandleRef jarg8); @@ -7976,6 +8073,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_read_replace_frame")] public static extern IntPtr switch_core_media_bug_get_read_replace_frame(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_set_read_demux_frame")] + public static extern void switch_core_media_bug_set_read_demux_frame(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_get_session")] public static extern IntPtr switch_core_media_bug_get_session(HandleRef jarg1); @@ -8006,8 +8106,8 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_close")] public static extern int switch_core_media_bug_close(HandleRef jarg1); - [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_remove_all")] - public static extern int switch_core_media_bug_remove_all(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_remove_all_function")] + public static extern int switch_core_media_bug_remove_all_function(HandleRef jarg1, string jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_media_bug_enumerate")] public static extern int switch_core_media_bug_enumerate(HandleRef jarg1, HandleRef jarg2); @@ -8519,6 +8619,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_read_impl")] public static extern int switch_core_session_get_read_impl(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_real_read_impl")] + public static extern int switch_core_session_get_real_read_impl(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_get_write_impl")] public static extern int switch_core_session_get_write_impl(HandleRef jarg1, HandleRef jarg2); @@ -9023,6 +9126,12 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_close_extra_files")] public static extern void switch_close_extra_files(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_core_thread_set_cpu_affinity")] + public static extern int switch_core_thread_set_cpu_affinity(int jarg1); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_os_yield")] + public static extern void switch_os_yield(); + [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_interface_module_name_set")] public static extern void switch_loadable_module_interface_module_name_set(HandleRef jarg1, string jarg2); @@ -9155,6 +9264,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_get_codec_interface")] public static extern IntPtr switch_loadable_module_get_codec_interface(string jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_parse_codec_buf")] + public static extern string switch_parse_codec_buf(string jarg1, HandleRef jarg2, HandleRef jarg3, HandleRef jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_get_dialplan_interface")] public static extern IntPtr switch_loadable_module_get_dialplan_interface(string jarg1); @@ -12887,6 +12999,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_event_check_permission_list")] public static extern int switch_event_check_permission_list(HandleRef jarg1, string jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_event_add_presence_data_cols")] + public static extern void switch_event_add_presence_data_cols(HandleRef jarg1, HandleRef jarg2, string jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RESAMPLE_QUALITY_get")] public static extern int SWITCH_RESAMPLE_QUALITY_get(); @@ -12980,6 +13095,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_merge_sln")] public static extern uint switch_merge_sln(HandleRef jarg1, uint jarg2, HandleRef jarg3, uint jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_unmerge_sln")] + public static extern uint switch_unmerge_sln(HandleRef jarg1, uint jarg2, HandleRef jarg3, uint jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_mux_channels")] public static extern void switch_mux_channels(HandleRef jarg1, HandleRef jarg2, uint jarg3); @@ -13091,6 +13209,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_activate_unicast")] public static extern int switch_ivr_activate_unicast(HandleRef jarg1, string jarg2, ushort jarg3, string jarg4, ushort jarg5, string jarg6, string jarg7); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_generate_json_cdr")] + public static extern int switch_ivr_generate_json_cdr(HandleRef jarg1, HandleRef jarg2, int jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_generate_xml_cdr")] public static extern int switch_ivr_generate_xml_cdr(HandleRef jarg1, HandleRef jarg2); @@ -13169,6 +13290,15 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_record_session")] public static extern int switch_ivr_record_session(HandleRef jarg1, string jarg2, uint jarg3, HandleRef jarg4); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_pop_eavesdropper")] + public static extern int switch_ivr_eavesdrop_pop_eavesdropper(HandleRef jarg1, HandleRef jarg2); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_exec_all")] + public static extern int switch_ivr_eavesdrop_exec_all(HandleRef jarg1, string jarg2, string jarg3); + + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_update_display")] + public static extern int switch_ivr_eavesdrop_update_display(HandleRef jarg1, string jarg2, string jarg3); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_eavesdrop_session")] public static extern int switch_ivr_eavesdrop_session(HandleRef jarg1, string jarg2, string jarg3, uint jarg4); @@ -13481,6 +13611,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_kill_uuid")] public static extern int switch_ivr_kill_uuid(string jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_ivr_blind_transfer_ack")] + public static extern int switch_ivr_blind_transfer_ack(HandleRef jarg1, int jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_RTP_MAX_BUF_LEN_get")] public static extern int SWITCH_RTP_MAX_BUF_LEN_get(); @@ -13724,6 +13857,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_check_auto_adj")] public static extern byte switch_rtp_check_auto_adj(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_set_interdigit_delay")] + public static extern void switch_rtp_set_interdigit_delay(HandleRef jarg1, uint jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_log_node_t_data_set")] public static extern void switch_log_node_t_data_set(HandleRef jarg1, string jarg2); @@ -17420,6 +17556,36 @@ namespace FreeSWITCH.Native { using System; using System.Runtime.InteropServices; +public class SWIGTYPE_p_f_p_switch_media_bug_p_void__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_media_bug_p_void__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_media_bug_p_void__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_media_bug_p_void__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + public class SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void { private HandleRef swigCPtr; @@ -18200,6 +18366,36 @@ namespace FreeSWITCH.Native { using System; using System.Runtime.InteropServices; +public class SWIGTYPE_p_p_cJSON { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_cJSON(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_cJSON() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_cJSON obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.1 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + public class SWIGTYPE_p_p_p_char { private HandleRef swigCPtr; @@ -23052,8 +23248,12 @@ public enum switch_channel_flag_t { CF_VIDEO_REFRESH_REQ, CF_SERVICE_AUDIO, CF_SERVICE_VIDEO, + CF_ZRTP_PASSTHRU_REQ, + CF_ZRTP_PASSTHRU, CF_ZRTP_HASH, - CF_ZRTP_PASS, + CF_CHANNEL_SWAP, + CF_PICKUP, + CF_CONFIRM_BLIND_TRANSFER, CF_FLAG_MAX } @@ -24971,6 +25171,7 @@ public enum switch_core_session_message_types_t { SWITCH_MESSAGE_INDICATE_SIGNAL_DATA, SWITCH_MESSAGE_INDICATE_INFO, SWITCH_MESSAGE_INDICATE_AUDIO_DATA, + SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE, SWITCH_MESSAGE_INVALID } @@ -25930,7 +26131,8 @@ namespace FreeSWITCH.Native { ED_NONE = 0, ED_MUX_READ = (1 << 0), ED_MUX_WRITE = (1 << 1), - ED_DTMF = (1 << 2) + ED_DTMF = (1 << 2), + ED_COPY_DISPLAY = (1 << 3) } } @@ -29926,7 +30128,8 @@ namespace FreeSWITCH.Native { SMBF_THREAD_LOCK = (1 << 7), SMBF_PRUNE = (1 << 8), SMBF_NO_PAUSE = (1 << 9), - SMBF_STEREO_SWAP = (1 << 10) + SMBF_STEREO_SWAP = (1 << 10), + SMBF_LOCK = (1 << 11) } } From 409ff21cc4de738c8468a846c998e8f19080b865 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 25 May 2012 02:40:34 +0000 Subject: [PATCH 586/630] debian: improve policy compliance on debian/copyright --- debian/copyright | 984 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 966 insertions(+), 18 deletions(-) diff --git a/debian/copyright b/debian/copyright index 732b2b7d0c..4312f4bb88 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,29 +2,482 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: freeswitch Source: http://freeswitch.org/ -Files: debian/* -Copyright: 2012, Travis Cross -License: MPL or GPL2+ (at your option) - This packaging may be distributed under either (at your option) the - terms of the MPLv1.1 as described in docs/COPYING in the FreeSWITCH - source tree, or under the terms of the GNU GPL, version 2 or later, - as found on Debian systems in /usr/share/common-licenses/GPL-2. - Files: * -Copyright: 2012, Anthony Minessale II and many other contributors -License: MPL - The contents of these files are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use these files except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ +Copyright: 2012 Anthony Minessale II and many other contributors +License: MPL-1.1 + MOZILLA PUBLIC LICENSE + Version 1.1 . - Software distributed under the License is distributed on an "AS IS" basis, - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - for the specific language governing rights and limitations under the - License. + --------------- + . + 1. Definitions. + . + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + . + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + . + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + . + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + . + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + . + 1.5. "Executable" means Covered Code in any form other than Source + Code. + . + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + . + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + . + 1.8. "License" means this document. + . + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + . + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + . + B. Any new file that contains any part of the Original Code or + previous Modifications. + . + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + . + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + . + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + . + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + . + 2. Source Code License. + . + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + . + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + . + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + . + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + . + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + . + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + . + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + . + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + . + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + . + 3. Distribution Obligations. + . + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + . + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + . + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + . + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + . + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + . + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + . + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + . + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + . + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + . + 4. Inability to Comply Due to Statute or Regulation. + . + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + . + 5. Application of this License. + . + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + . + 6. Versions of the License. + . + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + . + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + . + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + . + 7. DISCLAIMER OF WARRANTY. + . + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + . + 8. TERMINATION. + . + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + . + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + . + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + . + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + . + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + . + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + . + 9. LIMITATION OF LIABILITY. + . + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + . + 10. U.S. GOVERNMENT END USERS. + . + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + . + 11. MISCELLANEOUS. + . + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + . + 12. RESPONSIBILITY FOR CLAIMS. + . + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + . + 13. MULTIPLE-LICENSED CODE. + . + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + . + EXHIBIT A -Mozilla Public License. + . + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + . + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + . + The Original Code is ______________________________________. + . + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + . + Contributor(s): ______________________________________. + . + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + . + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] Files: libs/pocketsphinx* Copyright: 2010 Carnegie Mellon University +License: BSD-2-clause /* ==================================================================== * Copyright (c) 1999-2010 Carnegie Mellon University. All rights * reserved. @@ -61,3 +514,498 @@ Copyright: 2010 Carnegie Mellon University * */ +Files: debian/* +Copyright: 2012 Travis Cross +License: MPL-1.1 or GPL-2+ + This program is free software, and you may redistribute it and/or + modify it under either (at your option) the terms of the Mozilla + Public License Version 1.1 (MPLv1.1) or 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). Both licenses are described below. + . + 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + USA + . + On Debian systems, the full text of the GNU General Public License + version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. + . + ---- + . + MOZILLA PUBLIC LICENSE + Version 1.1 + . + --------------- + . + 1. Definitions. + . + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + . + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + . + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + . + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + . + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + . + 1.5. "Executable" means Covered Code in any form other than Source + Code. + . + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + . + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + . + 1.8. "License" means this document. + . + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + . + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + . + B. Any new file that contains any part of the Original Code or + previous Modifications. + . + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + . + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + . + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + . + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + . + 2. Source Code License. + . + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + . + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + . + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + . + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + . + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + . + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + . + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + . + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + . + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + . + 3. Distribution Obligations. + . + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + . + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + . + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + . + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + . + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + . + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + . + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + . + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + . + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + . + 4. Inability to Comply Due to Statute or Regulation. + . + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + . + 5. Application of this License. + . + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + . + 6. Versions of the License. + . + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + . + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + . + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + . + 7. DISCLAIMER OF WARRANTY. + . + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + . + 8. TERMINATION. + . + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + . + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + . + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + . + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + . + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + . + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + . + 9. LIMITATION OF LIABILITY. + . + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + . + 10. U.S. GOVERNMENT END USERS. + . + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + . + 11. MISCELLANEOUS. + . + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + . + 12. RESPONSIBILITY FOR CLAIMS. + . + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + . + 13. MULTIPLE-LICENSED CODE. + . + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + . + EXHIBIT A -Mozilla Public License. + . + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + . + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + . + The Original Code is ______________________________________. + . + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + . + Contributor(s): ______________________________________. + . + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + . + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] From 771819c4307d72d116114dff315343b265845068 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Fri, 25 May 2012 04:46:08 +0000 Subject: [PATCH 587/630] setup-git.sh: set pull.rebase=true git-pull learned about pull.rebase in git-1.7.9. This value is used as a fallback if branch..rebase isn't found. --- scripts/setup-git.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/setup-git.sh b/scripts/setup-git.sh index f9f709ff7f..df3cd73b6c 100755 --- a/scripts/setup-git.sh +++ b/scripts/setup-git.sh @@ -34,13 +34,14 @@ if ! git config user.email >/dev/null 2>&1; then git config --global user.email "$email" fi +git config pull.rebase true git config branch.master.rebase true cat 1>&2 < Date: Fri, 25 May 2012 07:18:55 -0400 Subject: [PATCH 588/630] mod_voicemail: Make sure vm_fsdb api create the user directory before trying to move file into it --- src/mod/applications/mod_voicemail/mod_voicemail.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c index 2ed70ce05d..0bbea275d5 100644 --- a/src/mod/applications/mod_voicemail/mod_voicemail.c +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c @@ -4895,6 +4895,8 @@ SWITCH_STANDARD_API(vm_fsdb_pref_greeting_set_function) profile->name, SWITCH_PATH_SEPARATOR, domain, SWITCH_PATH_SEPARATOR, id); char *final_file_path = switch_core_sprintf(pool, "%s%sgreeting_%d.%s", dir_path, SWITCH_PATH_SEPARATOR, slot, profile->file_ext); + switch_dir_make_recursive(dir_path, SWITCH_DEFAULT_DIR_PERMS, pool); + if (file_path) { if (switch_file_exists(file_path, pool) != SWITCH_STATUS_SUCCESS) { stream->write_function(stream, "-ERR Filename doesn't exist\n"); @@ -4989,6 +4991,8 @@ SWITCH_STANDARD_API(vm_fsdb_pref_recname_set_function) profile->name, SWITCH_PATH_SEPARATOR, domain, SWITCH_PATH_SEPARATOR, id); char *final_file_path = switch_core_sprintf(pool, "%s%srecorded_name.%s", dir_path, SWITCH_PATH_SEPARATOR, profile->file_ext); + switch_dir_make_recursive(dir_path, SWITCH_DEFAULT_DIR_PERMS, pool); + if (switch_file_exists(file_path, pool) != SWITCH_STATUS_SUCCESS) { stream->write_function(stream, "-ERR Filename doesn't exist\n"); profile_rwunlock(profile); @@ -4996,6 +5000,7 @@ SWITCH_STANDARD_API(vm_fsdb_pref_recname_set_function) } switch_file_rename(file_path, final_file_path, pool); + if (atoi(res) == 0) { sql = switch_mprintf("INSERT INTO voicemail_prefs (username, domain, name_path) VALUES('%q', '%q', '%q')", id, domain, final_file_path); } else { From 452e1d82712becfacdd87b30b1fe7ec622c13f00 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 25 May 2012 07:54:11 -0500 Subject: [PATCH 589/630] FS-4249 --resolve --- libs/stfu/stfu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/stfu/stfu.c b/libs/stfu/stfu.c index 5c31133aa8..787fd9c3d9 100644 --- a/libs/stfu/stfu.c +++ b/libs/stfu/stfu.c @@ -461,7 +461,7 @@ stfu_status_t stfu_n_add_data(stfu_instance_t *i, uint32_t ts, uint32_t pt, void i->sync_in = 0; } else { - if ((ts && ts == i->last_rd_ts + i->samples_per_packet) || (i->last_rd_ts > 4294900000 && ts < 5000)) { + if ((ts && ts == i->last_rd_ts + i->samples_per_packet) || (i->last_rd_ts > 4294900000u && ts < 5000)) { good_ts = 1; } From 09bef08b8368b5af17e2205bde9df10502b66efa Mon Sep 17 00:00:00 2001 From: Marc Olivier Chouinard Date: Fri, 25 May 2012 13:45:02 -0400 Subject: [PATCH 590/630] FS-4254 --resolve I've changed the variable name from cc_export to cc_export_vars to be more consistant from the original patch --- src/mod/applications/mod_callcenter/mod_callcenter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 30bdf9c2b3..99ece2ff39 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -1466,6 +1466,8 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa switch_event_add_header(ovars, SWITCH_STACK_BOTTOM, "ignore_early_media", "true"); switch_event_add_header(ovars, SWITCH_STACK_BOTTOM, "origination_uuid", "%s", agent_uuid_str); + switch_channel_process_export(member_channel, NULL, ovars, "cc_export_vars"); + t_agent_called = local_epoch_time_now(NULL); dialstr = switch_mprintf("%s", h->originate_string); status = switch_ivr_originate(NULL, &agent_session, &cause, dialstr, 60, NULL, cid_name ? cid_name : h->member_cid_name, h->member_cid_number, NULL, ovars, SOF_NONE, NULL); From 03b92c9ba186c9ec1a01dbff9698f909d98d524a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 25 May 2012 11:02:51 -0500 Subject: [PATCH 591/630] FS-4251 --resolve just a silly oversight in the code specific to this use case, thanks --- src/switch_core_io.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/switch_core_io.c b/src/switch_core_io.c index f20fa7bff9..83f8ae6d26 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -1469,6 +1469,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_send_dtmf_string(switch_core switch_assert(session != NULL); + if (zstr(dtmf_string)) { + return SWITCH_STATUS_FALSE; + } + if (*dtmf_string == '~') { dtmf_string++; dtmf.flags = 0; @@ -1478,9 +1482,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_send_dtmf_string(switch_core return SWITCH_STATUS_FALSE; } - if (zstr(dtmf_string)) { - return SWITCH_STATUS_FALSE; - } if (strlen(dtmf_string) > 99) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Attempt to send very large dtmf string ignored!\n"); From 9b569ec875795052e068c244d880cf96deb65a3a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 05:22:17 +0000 Subject: [PATCH 592/630] cleanup and consolidate mod_sofia configuration example --- .../mod_sofia/conf/sip_profiles/external.xml | 95 ---- .../conf/sip_profiles/external/example.xml | 38 -- .../conf/sip_profiles/internal-ipv6.xml | 130 ----- .../mod_sofia/conf/sip_profiles/internal.xml | 385 -------------- .../conf/sip_profiles/internal/example.xml | 37 -- .../endpoints/mod_sofia/conf/sofia.conf.xml | 473 ++++++++++++++++++ 6 files changed, 473 insertions(+), 685 deletions(-) delete mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/external.xml delete mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/external/example.xml delete mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/internal-ipv6.xml delete mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/internal.xml delete mode 100644 src/mod/endpoints/mod_sofia/conf/sip_profiles/internal/example.xml create mode 100644 src/mod/endpoints/mod_sofia/conf/sofia.conf.xml diff --git a/src/mod/endpoints/mod_sofia/conf/sip_profiles/external.xml b/src/mod/endpoints/mod_sofia/conf/sip_profiles/external.xml deleted file mode 100644 index a709cbb94c..0000000000 --- a/src/mod/endpoints/mod_sofia/conf/sip_profiles/external.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mod/endpoints/mod_sofia/conf/sip_profiles/external/example.xml b/src/mod/endpoints/mod_sofia/conf/sip_profiles/external/example.xml deleted file mode 100644 index 70668a9ce5..0000000000 --- a/src/mod/endpoints/mod_sofia/conf/sip_profiles/external/example.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal-ipv6.xml b/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal-ipv6.xml deleted file mode 100644 index ee27a241a0..0000000000 --- a/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal-ipv6.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal.xml b/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal.xml deleted file mode 100644 index b8390c7934..0000000000 --- a/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal.xml +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal/example.xml b/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal/example.xml deleted file mode 100644 index fc061f96d1..0000000000 --- a/src/mod/endpoints/mod_sofia/conf/sip_profiles/internal/example.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml b/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml new file mode 100644 index 0000000000..2649a24ae8 --- /dev/null +++ b/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 73614127fcb04a9370b968438f1ffb01637b4d1a Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 05:44:14 +0000 Subject: [PATCH 593/630] whitespace cleanup --- conf/insideout/sip_profiles/external.xml | 12 +- .../sip_profiles/external/example.xml | 2 +- conf/insideout/sip_profiles/internal-ipv6.xml | 17 +- conf/insideout/sip_profiles/internal.xml | 63 +++--- .../sip_profiles/internal/example.xml | 2 +- conf/sbc/sbc_profiles/external.xml | 14 +- conf/sbc/sbc_profiles/external/example.xml | 2 +- conf/sbc/sbc_profiles/internal-ipv6.xml | 17 +- conf/sbc/sbc_profiles/internal.xml | 61 +++-- conf/sbc/sbc_profiles/internal/example.xml | 2 +- conf/vanilla/sip_profiles/external.xml | 27 ++- .../vanilla/sip_profiles/external/example.xml | 2 +- conf/vanilla/sip_profiles/internal-ipv6.xml | 27 ++- conf/vanilla/sip_profiles/internal.xml | 212 +++++++++--------- .../vanilla/sip_profiles/internal/example.xml | 2 +- 15 files changed, 227 insertions(+), 235 deletions(-) diff --git a/conf/insideout/sip_profiles/external.xml b/conf/insideout/sip_profiles/external.xml index 6f6045255d..3fcb969f7f 100644 --- a/conf/insideout/sip_profiles/external.xml +++ b/conf/insideout/sip_profiles/external.xml @@ -1,4 +1,4 @@ - + @@ -29,10 +29,10 @@ - @@ -48,7 +48,7 @@ diff --git a/conf/insideout/sip_profiles/external/example.xml b/conf/insideout/sip_profiles/external/example.xml index 7ac8db1186..c6b79e8fe3 100644 --- a/conf/insideout/sip_profiles/external/example.xml +++ b/conf/insideout/sip_profiles/external/example.xml @@ -9,7 +9,7 @@ - + diff --git a/conf/insideout/sip_profiles/internal-ipv6.xml b/conf/insideout/sip_profiles/internal-ipv6.xml index 856ac4905d..649246ad36 100644 --- a/conf/insideout/sip_profiles/internal-ipv6.xml +++ b/conf/insideout/sip_profiles/internal-ipv6.xml @@ -53,36 +53,36 @@ - + - + - + - + - + - + - + @@ -128,4 +128,3 @@ - diff --git a/conf/insideout/sip_profiles/internal.xml b/conf/insideout/sip_profiles/internal.xml index a6010b2945..3ea2ef155c 100644 --- a/conf/insideout/sip_profiles/internal.xml +++ b/conf/insideout/sip_profiles/internal.xml @@ -1,7 +1,7 @@ @@ -16,24 +16,24 @@ - + - + - + @@ -63,7 +63,7 @@ - + @@ -88,36 +88,36 @@ - + - + - + - + - + - + - + @@ -138,7 +138,7 @@ - + @@ -158,24 +158,24 @@ - + - + @@ -186,4 +186,3 @@ - diff --git a/conf/insideout/sip_profiles/internal/example.xml b/conf/insideout/sip_profiles/internal/example.xml index 7ac8db1186..c6b79e8fe3 100644 --- a/conf/insideout/sip_profiles/internal/example.xml +++ b/conf/insideout/sip_profiles/internal/example.xml @@ -9,7 +9,7 @@ - + diff --git a/conf/sbc/sbc_profiles/external.xml b/conf/sbc/sbc_profiles/external.xml index d16813960f..9a5686bd91 100644 --- a/conf/sbc/sbc_profiles/external.xml +++ b/conf/sbc/sbc_profiles/external.xml @@ -1,4 +1,4 @@ - + @@ -7,7 +7,7 @@ - + @@ -30,10 +30,10 @@ - @@ -49,7 +49,7 @@ diff --git a/conf/sbc/sbc_profiles/external/example.xml b/conf/sbc/sbc_profiles/external/example.xml index 7ac8db1186..c6b79e8fe3 100644 --- a/conf/sbc/sbc_profiles/external/example.xml +++ b/conf/sbc/sbc_profiles/external/example.xml @@ -9,7 +9,7 @@ - + diff --git a/conf/sbc/sbc_profiles/internal-ipv6.xml b/conf/sbc/sbc_profiles/internal-ipv6.xml index 856ac4905d..649246ad36 100644 --- a/conf/sbc/sbc_profiles/internal-ipv6.xml +++ b/conf/sbc/sbc_profiles/internal-ipv6.xml @@ -53,36 +53,36 @@ - + - + - + - + - + - + - + @@ -128,4 +128,3 @@ - diff --git a/conf/sbc/sbc_profiles/internal.xml b/conf/sbc/sbc_profiles/internal.xml index d06e3a76cd..7e1ceeb9df 100644 --- a/conf/sbc/sbc_profiles/internal.xml +++ b/conf/sbc/sbc_profiles/internal.xml @@ -1,7 +1,7 @@ @@ -15,24 +15,24 @@ - + - + - + @@ -69,7 +69,7 @@ - + @@ -94,36 +94,36 @@ - + - + - + - + - + - + - + @@ -154,24 +154,24 @@ - + - + @@ -182,4 +182,3 @@ - diff --git a/conf/sbc/sbc_profiles/internal/example.xml b/conf/sbc/sbc_profiles/internal/example.xml index 7ac8db1186..c6b79e8fe3 100644 --- a/conf/sbc/sbc_profiles/internal/example.xml +++ b/conf/sbc/sbc_profiles/internal/example.xml @@ -9,7 +9,7 @@ - + diff --git a/conf/vanilla/sip_profiles/external.xml b/conf/vanilla/sip_profiles/external.xml index a709cbb94c..39965e9421 100644 --- a/conf/vanilla/sip_profiles/external.xml +++ b/conf/vanilla/sip_profiles/external.xml @@ -1,14 +1,14 @@ - + - @@ -18,10 +18,10 @@ - - + + - + @@ -34,15 +34,15 @@ - + - @@ -57,7 +57,7 @@ @@ -90,6 +90,5 @@ - diff --git a/conf/vanilla/sip_profiles/external/example.xml b/conf/vanilla/sip_profiles/external/example.xml index 70668a9ce5..2a4df31aaf 100644 --- a/conf/vanilla/sip_profiles/external/example.xml +++ b/conf/vanilla/sip_profiles/external/example.xml @@ -9,7 +9,7 @@ - + diff --git a/conf/vanilla/sip_profiles/internal-ipv6.xml b/conf/vanilla/sip_profiles/internal-ipv6.xml index ee27a241a0..5a97f0cd60 100644 --- a/conf/vanilla/sip_profiles/internal-ipv6.xml +++ b/conf/vanilla/sip_profiles/internal-ipv6.xml @@ -54,36 +54,36 @@ - + - + - + - + - + - + - + @@ -103,8 +103,8 @@ @@ -121,10 +121,9 @@ - - - + + + - diff --git a/conf/vanilla/sip_profiles/internal.xml b/conf/vanilla/sip_profiles/internal.xml index b9605a192c..afb12ab94c 100644 --- a/conf/vanilla/sip_profiles/internal.xml +++ b/conf/vanilla/sip_profiles/internal.xml @@ -2,30 +2,30 @@ - + - + - + - + @@ -33,31 +33,31 @@ - - + + - + - @@ -106,26 +106,26 @@ - - - + + + @@ -134,10 +134,10 @@ - + - + @@ -164,7 +164,7 @@ - + @@ -203,39 +203,39 @@ - + - + - + - + - + - + - + - + @@ -252,16 +252,16 @@ - + + Used as the public IP address for SDP. + Can be an one of: + ip address - "12.34.56.78" + a stun server lookup - "stun:stun.server.com" + a DNS name - "host:host.server.com" + auto - Use guessed ip. + auto-nat - Use ip learned from NAT-PMP or UPNP + --> @@ -274,8 +274,8 @@ @@ -297,28 +297,27 @@ - - + @@ -332,59 +331,58 @@ - - - - + + + - - - - - - - - - - - - - - + - - + + + + + - - - + + + + + + + + + + + + + - diff --git a/conf/vanilla/sip_profiles/internal/example.xml b/conf/vanilla/sip_profiles/internal/example.xml index fc061f96d1..10263b05a5 100644 --- a/conf/vanilla/sip_profiles/internal/example.xml +++ b/conf/vanilla/sip_profiles/internal/example.xml @@ -9,7 +9,7 @@ - + From 8513be49de33d2832941b5837239e6c9318daf5b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 05:50:47 +0000 Subject: [PATCH 594/630] enable inbound-late-negotiation in sample configs We often tell people to enable this for various reasons; it likely makes a sensible default. --- conf/insideout/sip_profiles/external.xml | 1 + conf/insideout/sip_profiles/internal-ipv6.xml | 4 ++-- conf/insideout/sip_profiles/internal.xml | 4 ++-- conf/sbc/sbc_profiles/external.xml | 1 + conf/sbc/sbc_profiles/internal-ipv6.xml | 4 ++-- conf/sbc/sbc_profiles/internal.xml | 4 ++-- conf/vanilla/sip_profiles/external.xml | 1 + conf/vanilla/sip_profiles/internal-ipv6.xml | 4 ++-- conf/vanilla/sip_profiles/internal.xml | 4 ++-- src/mod/endpoints/mod_sofia/conf/sofia.conf.xml | 5 ++--- 10 files changed, 17 insertions(+), 15 deletions(-) diff --git a/conf/insideout/sip_profiles/external.xml b/conf/insideout/sip_profiles/external.xml index 3fcb969f7f..be38318432 100644 --- a/conf/insideout/sip_profiles/external.xml +++ b/conf/insideout/sip_profiles/external.xml @@ -47,6 +47,7 @@ + diff --git a/conf/insideout/sip_profiles/internal-ipv6.xml b/conf/insideout/sip_profiles/internal-ipv6.xml index 649246ad36..e433da1425 100644 --- a/conf/insideout/sip_profiles/internal-ipv6.xml +++ b/conf/insideout/sip_profiles/internal-ipv6.xml @@ -66,8 +66,8 @@ - - + + diff --git a/conf/insideout/sip_profiles/internal.xml b/conf/insideout/sip_profiles/internal.xml index 3ea2ef155c..61263f03dc 100644 --- a/conf/insideout/sip_profiles/internal.xml +++ b/conf/insideout/sip_profiles/internal.xml @@ -101,8 +101,8 @@ - - + + diff --git a/conf/sbc/sbc_profiles/external.xml b/conf/sbc/sbc_profiles/external.xml index 9a5686bd91..1cb91e8dab 100644 --- a/conf/sbc/sbc_profiles/external.xml +++ b/conf/sbc/sbc_profiles/external.xml @@ -48,6 +48,7 @@ + diff --git a/conf/sbc/sbc_profiles/internal-ipv6.xml b/conf/sbc/sbc_profiles/internal-ipv6.xml index 649246ad36..e433da1425 100644 --- a/conf/sbc/sbc_profiles/internal-ipv6.xml +++ b/conf/sbc/sbc_profiles/internal-ipv6.xml @@ -66,8 +66,8 @@ - - + + diff --git a/conf/sbc/sbc_profiles/internal.xml b/conf/sbc/sbc_profiles/internal.xml index 7e1ceeb9df..8263a82668 100644 --- a/conf/sbc/sbc_profiles/internal.xml +++ b/conf/sbc/sbc_profiles/internal.xml @@ -107,8 +107,8 @@ - - + + diff --git a/conf/vanilla/sip_profiles/external.xml b/conf/vanilla/sip_profiles/external.xml index 39965e9421..8176d9b23f 100644 --- a/conf/vanilla/sip_profiles/external.xml +++ b/conf/vanilla/sip_profiles/external.xml @@ -56,6 +56,7 @@ + diff --git a/conf/vanilla/sip_profiles/internal-ipv6.xml b/conf/vanilla/sip_profiles/internal-ipv6.xml index 5a97f0cd60..2dd3842649 100644 --- a/conf/vanilla/sip_profiles/internal-ipv6.xml +++ b/conf/vanilla/sip_profiles/internal-ipv6.xml @@ -67,8 +67,8 @@ - - + + diff --git a/conf/vanilla/sip_profiles/internal.xml b/conf/vanilla/sip_profiles/internal.xml index afb12ab94c..1ba2c57427 100644 --- a/conf/vanilla/sip_profiles/internal.xml +++ b/conf/vanilla/sip_profiles/internal.xml @@ -219,8 +219,8 @@ - - + + diff --git a/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml b/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml index 2649a24ae8..9acbe6d916 100644 --- a/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml +++ b/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml @@ -263,9 +263,8 @@ - - + + diff --git a/conf/insideout/sip_profiles/internal-ipv6.xml b/conf/insideout/sip_profiles/internal-ipv6.xml index e433da1425..b9907a78ad 100644 --- a/conf/insideout/sip_profiles/internal-ipv6.xml +++ b/conf/insideout/sip_profiles/internal-ipv6.xml @@ -69,6 +69,9 @@ + + + diff --git a/conf/insideout/sip_profiles/internal.xml b/conf/insideout/sip_profiles/internal.xml index 61263f03dc..e406cd5e72 100644 --- a/conf/insideout/sip_profiles/internal.xml +++ b/conf/insideout/sip_profiles/internal.xml @@ -104,6 +104,9 @@ + + + diff --git a/conf/sbc/sbc_profiles/external.xml b/conf/sbc/sbc_profiles/external.xml index 1cb91e8dab..0f15159f58 100644 --- a/conf/sbc/sbc_profiles/external.xml +++ b/conf/sbc/sbc_profiles/external.xml @@ -49,6 +49,7 @@ + diff --git a/conf/sbc/sbc_profiles/internal-ipv6.xml b/conf/sbc/sbc_profiles/internal-ipv6.xml index e433da1425..b9907a78ad 100644 --- a/conf/sbc/sbc_profiles/internal-ipv6.xml +++ b/conf/sbc/sbc_profiles/internal-ipv6.xml @@ -69,6 +69,9 @@ + + + diff --git a/conf/sbc/sbc_profiles/internal.xml b/conf/sbc/sbc_profiles/internal.xml index 8263a82668..3081052c88 100644 --- a/conf/sbc/sbc_profiles/internal.xml +++ b/conf/sbc/sbc_profiles/internal.xml @@ -110,6 +110,9 @@ + + + diff --git a/conf/vanilla/sip_profiles/external.xml b/conf/vanilla/sip_profiles/external.xml index 8176d9b23f..4f18e84be7 100644 --- a/conf/vanilla/sip_profiles/external.xml +++ b/conf/vanilla/sip_profiles/external.xml @@ -57,6 +57,7 @@ + diff --git a/conf/vanilla/sip_profiles/internal-ipv6.xml b/conf/vanilla/sip_profiles/internal-ipv6.xml index 2dd3842649..18274faa4f 100644 --- a/conf/vanilla/sip_profiles/internal-ipv6.xml +++ b/conf/vanilla/sip_profiles/internal-ipv6.xml @@ -70,6 +70,9 @@ + + + diff --git a/conf/vanilla/sip_profiles/internal.xml b/conf/vanilla/sip_profiles/internal.xml index 1ba2c57427..0f4cabe32d 100644 --- a/conf/vanilla/sip_profiles/internal.xml +++ b/conf/vanilla/sip_profiles/internal.xml @@ -222,6 +222,9 @@ + + + diff --git a/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml b/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml index 9acbe6d916..30d8063a67 100644 --- a/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml +++ b/src/mod/endpoints/mod_sofia/conf/sofia.conf.xml @@ -266,6 +266,9 @@ + + + From 890a89b6e39f1410fbaad5226b030861de0b300e Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 06:17:58 +0000 Subject: [PATCH 596/630] debian: suggest rather than depend on problematic codecs --- debian/bootstrap.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 113675c3e8..d5c533c080 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -322,13 +322,14 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-g723-1 (= \${binary:Version}), freeswitch-mod-g729 (= \${binary:Version}), freeswitch-mod-h26x (= \${binary:Version}), - freeswitch-mod-ilbc (= \${binary:Version}), freeswitch-mod-mp4v (= \${binary:Version}), freeswitch-mod-opus (= \${binary:Version}), freeswitch-mod-silk (= \${binary:Version}), - freeswitch-mod-siren (= \${binary:Version}), freeswitch-mod-speex (= \${binary:Version}), freeswitch-mod-theora (= \${binary:Version}) +Suggests: + freeswitch-mod-ilbc (= \${binary:Version}), + freeswitch-mod-siren (= \${binary:Version}) Description: Cross-Platform Scalable Multi-Protocol Soft Switch $(debian_wrap "${fs_description}") . From 219831edf3cac97e5aa043a75e2e8f212c2e5c8c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 06:34:52 +0000 Subject: [PATCH 597/630] debian: pull in mod_spandsp with other codecs --- debian/bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index d5c533c080..cf27d67934 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -325,6 +325,7 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-mp4v (= \${binary:Version}), freeswitch-mod-opus (= \${binary:Version}), freeswitch-mod-silk (= \${binary:Version}), + freeswitch-mod-spandsp (= \${binary:Version}), freeswitch-mod-speex (= \${binary:Version}), freeswitch-mod-theora (= \${binary:Version}) Suggests: From 44e6dd26800d6524345918b64e0e18610d97a35e Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Sun, 27 May 2012 14:36:15 +0200 Subject: [PATCH 598/630] FreeSWITCH: Make libzrtp library paths absolute (or relative to top srcdir), fixes FS-4260. Reference-URL: http://jira.freeswitch.org/browse/FS-4260 Tested-by: Stefan Knoblich Signed-off-by: Stefan Knoblich --- Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index db22184f5d..31d22f7754 100644 --- a/Makefile.am +++ b/Makefile.am @@ -157,8 +157,8 @@ if ENABLE_ZRTP CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib CORE_CFLAGS += -isystem $(switch_srcdir)/libs/libzrtp/include -ZRTP_LDFLAGS = -Llibs/libzrtp/third_party/bnlib -ZRTP_LDFLAGS += -Llibs/libzrtp/projects/gnu/build +ZRTP_LDFLAGS = -L$(switch_srcdir)/libs/libzrtp/third_party/bnlib +ZRTP_LDFLAGS += -L$(switch_srcdir)/libs/libzrtp/projects/gnu/build ZRTP_LIBS = -lbn -lzrtp libfreeswitch_la_LDFLAGS += $(ZRTP_LDFLAGS) libfreeswitch_la_LIBADD += $(ZRTP_LIBS) From be3ee2404c4f7f5bd4b0c1def723cfad82c57043 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 09:18:28 +0000 Subject: [PATCH 599/630] reindent --- build/getlib.sh.in | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/build/getlib.sh.in b/build/getlib.sh.in index bbfe696f79..f18ec1da2d 100755 --- a/build/getlib.sh.in +++ b/build/getlib.sh.in @@ -1,4 +1,5 @@ #!/bin/sh +##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*- TAR=@TAR@ ZCAT=@ZCAT@ @@ -8,39 +9,39 @@ WGET=@WGET@ CURL=@CURL@ if [ -f "$WGET" ]; then - DOWNLOAD_CMD=$WGET + DOWNLOAD_CMD=$WGET elif [ -f "$CURL" ]; then - DOWNLOAD_CMD="$CURL -O" + DOWNLOAD_CMD="$CURL -O" fi if [ -n "`echo $1 | grep '://'`" ]; then - base=$1/ - tarfile=$2 + base=$1/ + tarfile=$2 else - base=http://files.freeswitch.org/downloads/libs/ - tarfile=$1 + base=http://files.freeswitch.org/downloads/libs/ + tarfile=$1 fi uncompressed=`echo $tarfile | sed 's/\(\(\.tar\.gz\|\.tar\.bz2\|\.tar\.xz\)\|\(\.tgz\|\.tbz2\)\)$//'` case `echo $tarfile | sed 's/^.*\.//'` in - bz2|tbz2) UNZIPPER=$BZIP ;; - xz) UNZIPPER=$XZ ;; - gz|tgz|*) UNZIPPER=$ZCAT ;; + bz2|tbz2) UNZIPPER=$BZIP ;; + xz) UNZIPPER=$XZ ;; + gz|tgz|*) UNZIPPER=$ZCAT ;; esac if [ ! -d $tarfile ]; then + if [ ! -f $tarfile ]; then + rm -fr $uncompressed + $DOWNLOAD_CMD $base$tarfile if [ ! -f $tarfile ]; then - rm -fr $uncompressed - $DOWNLOAD_CMD $base$tarfile - if [ ! -f $tarfile ]; then - echo cannot find $tarfile - exit 1 - fi - fi - if [ ! -d $uncompressed ]; then - $UNZIPPER -c -d $tarfile | $TAR -xf - + echo cannot find $tarfile + exit 1 fi + fi + if [ ! -d $uncompressed ]; then + $UNZIPPER -c -d $tarfile | $TAR -xf - + fi fi exit 0 From dfddd3ec108d446cee59380ea482f758044c5ad6 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 09:12:09 +0000 Subject: [PATCH 600/630] debian: remove utilities that duplicate debian tools install-build-depends is inferior to: mk-build-deps -i --- debian/util.sh | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index be7f2f1cc0..3f25023d6d 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -32,46 +32,6 @@ create_dbg_pkgs () { done } -list_build_depends () { - test -f $ddir/.stamp-bootstrap || (cd $ddir && ./bootstrap.sh) - local deps="" found=false - while xread l; do - if [ "${l%%:*}" = "Build-Depends" ]; then - deps="${l#*:}" - found=true - continue - elif $found; then - if [ -z "$l" ]; then - # is newline - break - elif [ -z "${l##\#*}" ]; then - # is comment - continue - elif [ -z "${l## *}" ]; then - # is continuation line - deps="$deps $(echo "$l" | sed -e 's/^ *//' -e 's/ *([^)]*)//g' -e 's/,//g')" - else - # is a new header - break - fi - fi - done < $ddir/control - echo "${deps# }" -} - -install_build_depends () { - local apt="" - if [ -n "$(which aptitude)" ]; then - apt=$(which aptitude) - elif [ -n "$(which apt-get)" ]; then - apt=$(which apt-get) - else - err "Can't find apt-get or aptitude; are you running on debian?" - fi - $apt install -y $(list_build_depends) - touch $ddir/.stamp-build-depends -} - cwget () { local url="$1" f="${1##*/}" echo "fetching: $url to $f" >&2 @@ -208,7 +168,5 @@ case "$cmd" in create-dbg-pkgs) create_dbg_pkgs ;; create-dsc) create_dsc "$@" ;; create-orig) create_orig "$@" ;; - list-build-depends) list_build_depends ;; - install-build-depends) install_build_depends ;; esac From fa0de2efd3f66d3e56152974e6962d01a30a7d3b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 09:17:59 +0000 Subject: [PATCH 601/630] add .gitattributes Add some attributes that are useful for packaging. --- .gitattributes | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..06c92d07df --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +# gitattributes +*.exe -diff binary executable windows dfsg-nonfree debian-ignore +*.wav -diff binary sound +*.gif -diff binary image +*.jpg -diff binary image +*.jpeg -diff binary image +*.pbm -diff binary image +/clients/flex* dfsg-nonfree +/debian* debian-ignore +/freeswitch.xcodeproj debian-ignore +/libs/ilbc* dfsg-nonfree +/libs/libg722_1* dfsg-nonfree +/libs/win32* windows debian-ignore +/htdocs* dfsg-nonfree debian-ignore +/w32* windows debian-ignore From 7d5062f9c9677b8c5ea59f64454e92f5452e602d Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 09:51:18 +0000 Subject: [PATCH 602/630] debian: don't force-create the orig tarball --- debian/gbp.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/gbp.conf b/debian/gbp.conf index 3889b7e9ee..cd1c5ad37e 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -7,7 +7,6 @@ upstream-branch=master debian-branch=master upstream-tree=branch tag=False -force-create=True compression=xz compression-level=9ev builder=debuild --prepend-path=/usr/lib/ccache -eFS_* -eCCACHE_* -i\.git -I.git -Zxz -z9 From 870ef6f83f191610cad0546a45be28c2abc8cf3c Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 09:31:03 +0000 Subject: [PATCH 603/630] debian: don't bundle sounds in orig tarball We've moved the sounds to a separate source package. --- debian/util.sh | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 3f25023d6d..f303d10608 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -54,12 +54,6 @@ getlib () { && mkdir -p $f) } -getsound () { - local sd="$1" url="$2" f="${2##*/}" - (cd $sd \ - && cwget "$url") -} - getlibs () { local sd="$1" # get pinned libraries @@ -80,11 +74,6 @@ getlibs () { getlib $sd http://files.freeswitch.org/downloads/libs/lame-3.98.4.tar.gz getlib $sd http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz getlib $sd http://files.freeswitch.org/downloads/libs/mpg123-1.13.2.tar.gz - # get sounds and music - for x in 8000 16000 32000 48000; do - getsound $sd http://files.freeswitch.org/freeswitch-sounds-en-us-callie-$x-1.0.18.tar.gz - getsound $sd http://files.freeswitch.org/freeswitch-sounds-music-$x-1.0.8.tar.gz - done # cleanup mongo ( cd $sd/libs/mongo-cxx-driver-v1.8 From 15a67097d804ae4143e63d2c7a3475ff06943481 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Sun, 27 May 2012 06:54:31 +0000 Subject: [PATCH 604/630] debian: add utility for rolling nightly builds --- debian/util.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index f303d10608..133457b983 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -12,6 +12,16 @@ err () { exit 1 } +announce () { + cat >&2 < Date: Mon, 28 May 2012 12:11:41 +0000 Subject: [PATCH 605/630] debian: refactor and improve build utilities --- debian/util.sh | 278 ++++++++++++++++++++++++++----------------------- 1 file changed, 148 insertions(+), 130 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 133457b983..326e8f6156 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -6,6 +6,9 @@ set -e ddir="." [ -n "${0%/*}" ] && ddir="${0%/*}" +cd $ddir/../ + +#### lib err () { echo "$0 error: $1" >&2 @@ -31,6 +34,35 @@ xread () { return $ret } +mk_dver () { echo "$1" | sed -e 's/-/~/g'; } +mk_uver () { echo "$1" | sed -e 's/-.*$//' -e 's/~/-/'; } +dsc_source () { dpkg-parsechangelog | grep '^Source:' | awk '{print $2}'; } +dsc_ver () { dpkg-parsechangelog | grep '^Version:' | awk '{print $2}'; } +up_ver () { mk_uver "$(dsc_ver)"; } +dsc_base () { echo "$(dsc_source)_$(dsc_ver)"; } +up_base () { echo "$(dsc_source)-$(up_ver)"; } + +find_distro () { + case "$1" in + experimental) echo "sid";; + unstable) echo "sid";; + testing) echo "wheezy";; + stable) echo "squeeze";; + *) echo "$1";; + esac +} + +find_suite () { + case "$1" in + sid) echo "unstable";; + wheezy) echo "testing";; + squeeze) echo "stable";; + *) echo "$1";; + esac +} + +#### debian/rules helpers + create_dbg_pkgs () { for x in $ddir/*; do test ! -d $x && continue @@ -56,166 +88,152 @@ cwget () { } getlib () { - local sd="$1" url="$2" f="${2##*/}" - (cd $sd/libs \ - && cwget "$url" \ - && tar -xv --no-same-owner --no-same-permissions -f "$f" \ - && rm -f "$f" \ - && mkdir -p $f) + local url="$1" f="${1##*/}" + cwget "$url" + tar -xv --no-same-owner --no-same-permissions -f "$f" + rm -f "$f" && mkdir -p $f && touch $f/.download-stamp } getlibs () { - local sd="$1" # get pinned libraries - getlib $sd http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-v1.8-latest.tgz - getlib $sd http://files.freeswitch.org/downloads/libs/json-c-0.9.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/libmemcached-0.32.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/soundtouch-1.6.0.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 - getlib $sd http://files.freeswitch.org/downloads/libs/sphinxbase-0.7.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/pocketsphinx-0.7.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/communicator_semi_6000_20080321.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/celt-0.10.0.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/opus-0.9.0.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/openldap-2.4.19.tar.gz - getlib $sd http://download.zeromq.org/zeromq-2.1.9.tar.gz \ - || getlib $sd http://download.zeromq.org/historic/zeromq-2.1.9.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/freeradius-client-1.1.6.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/lame-3.98.4.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz - getlib $sd http://files.freeswitch.org/downloads/libs/mpg123-1.13.2.tar.gz + getlib http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-v1.8-latest.tgz + getlib http://files.freeswitch.org/downloads/libs/json-c-0.9.tar.gz + getlib http://files.freeswitch.org/downloads/libs/libmemcached-0.32.tar.gz + getlib http://files.freeswitch.org/downloads/libs/soundtouch-1.6.0.tar.gz + getlib http://files.freeswitch.org/downloads/libs/flite-1.5.4-current.tar.bz2 + getlib http://files.freeswitch.org/downloads/libs/sphinxbase-0.7.tar.gz + getlib http://files.freeswitch.org/downloads/libs/pocketsphinx-0.7.tar.gz + getlib http://files.freeswitch.org/downloads/libs/communicator_semi_6000_20080321.tar.gz + getlib http://files.freeswitch.org/downloads/libs/celt-0.10.0.tar.gz + getlib http://files.freeswitch.org/downloads/libs/opus-0.9.0.tar.gz + getlib http://files.freeswitch.org/downloads/libs/openldap-2.4.19.tar.gz + getlib http://download.zeromq.org/zeromq-2.1.9.tar.gz \ + || getlib http://download.zeromq.org/historic/zeromq-2.1.9.tar.gz + getlib http://files.freeswitch.org/downloads/libs/freeradius-client-1.1.6.tar.gz + getlib http://files.freeswitch.org/downloads/libs/lame-3.98.4.tar.gz + getlib http://files.freeswitch.org/downloads/libs/libshout-2.2.2.tar.gz + getlib http://files.freeswitch.org/downloads/libs/mpg123-1.13.2.tar.gz # cleanup mongo ( - cd $sd/libs/mongo-cxx-driver-v1.8 + cd mongo-cxx-driver-v1.8 rm -rf config.log .sconf_temp *Test *Example find . -name "*.o" -exec rm -f {} \; ) } -get_current_version () { - cat $ddir/changelog \ - | grep -e '^freeswitch ' \ - | awk '{print $2}' \ - | sed -e 's/[()]//g' -e 's/-.*//' -} - -_create_orig () { - . $ddir/../scripts/ci/common.sh - eval $(parse_version "$(get_current_version)") - local destdir="$1" xz_level="$2" n=freeswitch - local d=${n}-${dver} f=${n}_${dver} - local sd=${ddir}/sdeb/$d - [ -n "$destdir" ] || destdir=$ddir/../../ - mkdir -p $sd - tar -c -C $ddir/../ \ - --exclude=.git \ - --exclude=debian \ - --exclude=freeswitch.xcodeproj \ - --exclude=fscomm \ - --exclude=htdocs \ - --exclude=w32 \ - --exclude=web \ - -vf - . | tar -x -C $sd -vf - - (cd $sd && set_fs_ver "$gver" "$gmajor" "$gminor" "$gmicro" "$grev") - getlibs $sd - tar -c -C $ddir/sdeb -vf $ddir/sdeb/$f.orig.tar $d - xz -${xz_level}v $ddir/sdeb/$f.orig.tar - mv $ddir/sdeb/$f.orig.tar.xz $destdir - rm -rf $ddir/sdeb +check_repo_clean () { + git diff-index --quiet --cached HEAD \ + || err "uncommitted changes present" + git diff-files --quiet \ + || err "unclean working tree" + git diff-index --quiet HEAD \ + || err "unclean repository" + ! git ls-files --other --error-unmatch . >/dev/null 2>&1 \ + || err "untracked files or build products present" } create_orig () { - local xz_level="6" - while getopts 'dz:' o; do + local OPTIND OPTARG + local uver="" bundle_deps=false zl=9e + while getopts 'bnv:z:' o "$@"; do case "$o" in - d) set -vx;; - z) xz_level="$OPTARG";; + b) bundle_deps=true;; + n) uver="nightly";; + v) uver="$OPTARG";; + z) zl="$OPTARG";; esac done shift $(($OPTIND-1)) - _create_orig "$1" "$xz_level" + [ -z "$uver" ] || [ "$uver" = "nightly" ] \ + && uver="$(cat build/next-release.txt)-n$(date +%Y%m%dT%H%M%SZ)" + local treeish="$1" dver="$(mk_dver "$uver")" + local orig="../freeswitch_$dver.orig.tar.xz" + [ -n "$treeish" ] || treeish="HEAD" + check_repo_clean + git reset --hard "$treeish" + mv .gitattributes .gitattributes.orig + grep .gitattributes.orig \ + -e '\bdebian-ignore\b' \ + -e '\bdfsg-nonfree\b' \ + | while xread l; do + echo "$l export-ignore" >> .gitattributes + done + if $bundle_deps; then + (cd libs && getlibs) + git add -f libs + fi + ./build/set-fs-version.sh "$uver" && git add configure.in + git commit --allow-empty -m "nightly v$uver" + git archive -v \ + --worktree-attributes \ + --format=tar \ + --prefix=freeswitch-$uver/ \ + HEAD \ + | xz -c -${zl}v > $orig + mv .gitattributes.orig .gitattributes + git reset --hard HEAD^ && git clean -fdx + echo $orig } create_dsc () { - . $ddir/../scripts/ci/common.sh - local xz_level="6" - while getopts 'dz:' o; do - case "$o" in - d) set -vx;; - z) xz_level="$OPTARG";; - esac - done - shift $(($OPTIND-1)) - eval $(parse_version "$(get_current_version)") - local destdir="$1" n=freeswitch - local d=${n}-${dver} f=${n}_${dver} - [ -n "$destdir" ] || destdir=$ddir/../../ - [ -f $destdir/$f.orig.tar.xz ] \ - || _create_orig "$1" "${xz_level}" - ( - ddir=$(pwd)/$ddir - cd $destdir - mkdir -p $f - cp -a $ddir $f - dpkg-source -b -i.* -Zxz -z9 $f - ) -} - -build_nightly_for () { - set -e - local branch="$1" - local distro="$2" suite="" - case $distro in - experimental) distro="sid" suite="experimental";; - sid) suite="unstable";; - wheezy) suite="testing" ;; - squeeze) suite="stable" ;; - esac - [ -x "$(which cowbuilder)" ] \ - || err "Error: package cowbuilder isn't installed" + local distro="$(find_distro $1)" orig="$2" + local suite="$(find_suite $distro)" + local orig_ver="$(echo "$orig" | sed -e 's/^.*_//' -e 's/\.orig\.tar.*$//')" + local dver="${orig_ver}-1~${distro}+1" [ -x "$(which dch)" ] \ - || err "Error: package devscripts isn't installed" - [ -x "$(which git-buildpackage)" ] \ - || err "Error: package git-buildpackage isn't installed" - ulimit -n 200000 || true - if ! [ -d /var/cache/pbuilder/base-$distro.cow ]; then - announce "Creating base $distro image..." - cowbuilder --create \ - --distribution $distro \ - --basepath /var/cache/pbuilder/base-$distro.cow - fi - announce "Updating base $distro image..." - cowbuilder --update \ - --distribution $distro \ - --basepath /var/cache/pbuilder/base-$distro.cow - local ver="$(cat build/next-release.txt | sed -e 's/-/~/g')~n$(date +%Y%m%dT%H%M%SZ)-1~${distro}+1" - echo "Building v$ver for $distro based on $branch" - cd $ddir/../ - announce "Building v$ver..." - git clean -fdx - git reset --hard $branch - ./build/set-fs-version.sh "$ver" - git add configure.in && git commit --allow-empty -m "nightly v$ver" + || err "package devscripts isn't installed" (cd debian && ./bootstrap.sh -c $distro) - dch -b -m -v "$ver" --force-distribution -D "$suite" "Nightly build." - git-buildpackage -us -uc \ - --git-verbose \ - --git-pbuilder --git-dist=$distro \ - --git-compression=xz --git-compression-level=9ev - git reset --hard HEAD^ + dch -b -m -v "$dver" --force-distribution -D "$suite" "Nightly build." + git add debian/changelog && git commit -m "nightly v$orig_ver" + dpkg-source -i.* -Zxz -z9 -b . + dpkg-genchanges -S > ../$(dsc_base)_source.changes + local dsc="../$(dsc_base).dsc" + git reset --hard HEAD^ && git clean -fdx + echo $dsc } -build_nightly () { - local branch="$1"; shift - for distro in "$@"; do - build_nightly_for "$branch" "$distro" - done +build_debs () { + local distro="$(find_distro $1)" dsc="$2" arch="$3" + if [ -z "$distro" ] || [ "$distro" = "auto" ]; then + if ! (echo "$dsc" | grep -e '-[0-9]*~[a-z]*+[0-9]*'); then + err "no distro specified or found" + fi + local x="$(echo $dsc | sed -e 's/^[^-]*-[0-9]*~//' -e 's/+[^+]*$//')" + distro="$(find_distro $x)" + fi + [ -n "$arch" ] || arch="$(dpkg-architecture | grep '^DEB_BUILD_ARCH=' | cut -d'=' -f2)" + [ -x "$(which cowbuilder)" ] \ + || err "package cowbuilder isn't installed" + local cow_img=/var/cache/pbuilder/base-$distro-$arch.cow + cow () { + cowbuilder "$@" \ + --distribution $distro \ + --architecture $arch \ + --basepath $cow_img + } + if ! [ -d $cow_img ]; then + announce "Creating base $distro-$arch image..." + cow --create + fi + announce "Updating base $distro-$arch image..." + cow --update + announce "Building $distro-$arch DEBs from $dsc..." + cow --build $dsc + echo ${dsc}_${arch}.changes } +while getopts 'd' o "$@"; do + case "$o" in + d) set -vx;; + esac +done +shift $(($OPTIND-1)) + cmd="$1" shift case "$cmd" in - build-nightly) build_nightly "$@" ;; + archive-orig) archive_orig "$@" ;; + build-debs) build_debs "$@" ;; create-dbg-pkgs) create_dbg_pkgs ;; create-dsc) create_dsc "$@" ;; create-orig) create_orig "$@" ;; From 139485855d3469e5cec4d14884f9f920d8ec1b28 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 13:35:00 +0000 Subject: [PATCH 606/630] debian: don't try to build non-dfsg modules --- debian/bootstrap.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index cf27d67934..62edf42668 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -17,7 +17,9 @@ avoid_mods=( applications/mod_skel asr_tts/mod_cepstral codecs/mod_com_g729 + codecs/mod_ilbc codecs/mod_sangoma_codec + codecs/mod_siren codecs/mod_skel_codec codecs/mod_voipcodecs endpoints/mod_gsmopen From 8fb3f54c15045e699bd43c5df118589df439b179 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 13:37:34 +0000 Subject: [PATCH 607/630] debian: add option to create pbuilder debug hook --- debian/util.sh | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/debian/util.sh b/debian/util.sh index 326e8f6156..08827f3e07 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -192,7 +192,23 @@ create_dsc () { echo $dsc } +fmt_debug_hook () { + cat <<'EOF' +#!/bin/bash +export debian_chroot="cow" +cd /tmp/buildd/*/debian/.. +/bin/bash < /dev/tty > /dev/tty 2> /dev/tty +EOF +} + build_debs () { + local OPTIND OPTARG debug_hook=false hookdir="" + while getopts 'd' o "$@"; do + case "$o" in + d) debug_hook=true;; + esac + done + shift $(($OPTIND-1)) local distro="$(find_distro $1)" dsc="$2" arch="$3" if [ -z "$distro" ] || [ "$distro" = "auto" ]; then if ! (echo "$dsc" | grep -e '-[0-9]*~[a-z]*+[0-9]*'); then @@ -218,7 +234,13 @@ build_debs () { announce "Updating base $distro-$arch image..." cow --update announce "Building $distro-$arch DEBs from $dsc..." - cow --build $dsc + if $debug_hook; then + mkdir -p .hooks + fmt_debug_hook > .hooks/C10shell + chmod +x .hooks/C10shell + hookdir=$(pwd)/.hooks + fi + cow --build $dsc --hookdir "$hookdir" echo ${dsc}_${arch}.changes } From 40a98d4b49f8b986a4bb5ae87f94de1ee297546b Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 13:11:21 +0000 Subject: [PATCH 608/630] debian: disable modules that break the build --- debian/bootstrap.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index 62edf42668..bd5547dbc5 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -15,7 +15,9 @@ avoid_mods=( applications/mod_osp applications/mod_rad_auth applications/mod_skel + applications/mod_soundtouch asr_tts/mod_cepstral + asr_tts/mod_flite codecs/mod_com_g729 codecs/mod_ilbc codecs/mod_sangoma_codec @@ -33,6 +35,14 @@ avoid_mods=( sdk/autotools xml_int/mod_xml_ldap ) +avoid_mods_sid=( + endpoints/mod_portaudio + formats/mod_portaudio_stream +) +avoid_mods_wheezy=( + endpoints/mod_portaudio + formats/mod_portaudio_stream +) avoid_mods_squeeze=( formats/mod_vlc languages/mod_managed From 496b9a9c785bab98554df4625facf7ac510afee9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 14:55:44 +0000 Subject: [PATCH 609/630] debian: add utility for building all distros and architectures --- debian/util.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index 08827f3e07..181bf04702 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -244,6 +244,42 @@ build_debs () { echo ${dsc}_${arch}.changes } +build_all () { + local OPTIND OPTARG + local orig_opts="" deb_opts="" + local archs="" distros="" + while getopts 'a:bc:dnv:z:' o "$@"; do + case "$o" in + a) archs="$archs $OPTARG";; + b) orig_opts="$orig_opts -b";; + c) distros="$distros $OPTARG";; + d) deb_opts="$deb_opts -d";; + n) orig_opts="$orig_opts -n";; + v) orig_opts="$orig_opts -v$OPTARG";; + z) orig_opts="$orig_opts -z$OPTARG";; + esac + done + shift $(($OPTIND-1)) + [ -n "$archs" ] || archs="amd64 i386" + [ -n "$distros" ] || distros="sid wheezy squeeze" + local acc_changes="" + local orig="$(create_orig $orig_opts HEAD | tail -n1)" + if [ "${orig:0:2}" = ".." ]; then + for distro in $distros; do + local dsc="$(create_dsc $distro $orig | tail -n1)" + if [ "${dsc:0:2}" = ".." ]; then + for arch in $archs; do + local changes="$(build_debs $deb_opts $distro $dsc $arch | tail -n1)" + if [ "${changes:0:2}" = ".." ]; then + acc_changes="$acc_changes $changes" + fi + done + fi + done + fi + echo "${acc_changes:1}" +} + while getopts 'd' o "$@"; do case "$o" in d) set -vx;; @@ -255,6 +291,7 @@ cmd="$1" shift case "$cmd" in archive-orig) archive_orig "$@" ;; + build-all) build_all "$@" ;; build-debs) build_debs "$@" ;; create-dbg-pkgs) create_dbg_pkgs ;; create-dsc) create_dsc "$@" ;; From d3cb7036977c5e59f908f003e5cfce176a9059eb Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 17:03:23 +0000 Subject: [PATCH 610/630] debian: force build output to stderr Because we're capturing the string return value of these functions, we can't see any output that goes to stdout. --- debian/util.sh | 186 +++++++++++++++++++++++++------------------------ 1 file changed, 96 insertions(+), 90 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 181bf04702..829eeba3aa 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -133,62 +133,66 @@ check_repo_clean () { } create_orig () { - local OPTIND OPTARG - local uver="" bundle_deps=false zl=9e - while getopts 'bnv:z:' o "$@"; do - case "$o" in - b) bundle_deps=true;; - n) uver="nightly";; - v) uver="$OPTARG";; - z) zl="$OPTARG";; - esac - done - shift $(($OPTIND-1)) - [ -z "$uver" ] || [ "$uver" = "nightly" ] \ - && uver="$(cat build/next-release.txt)-n$(date +%Y%m%dT%H%M%SZ)" - local treeish="$1" dver="$(mk_dver "$uver")" - local orig="../freeswitch_$dver.orig.tar.xz" - [ -n "$treeish" ] || treeish="HEAD" - check_repo_clean - git reset --hard "$treeish" - mv .gitattributes .gitattributes.orig - grep .gitattributes.orig \ - -e '\bdebian-ignore\b' \ - -e '\bdfsg-nonfree\b' \ - | while xread l; do - echo "$l export-ignore" >> .gitattributes - done - if $bundle_deps; then - (cd libs && getlibs) - git add -f libs - fi - ./build/set-fs-version.sh "$uver" && git add configure.in - git commit --allow-empty -m "nightly v$uver" - git archive -v \ - --worktree-attributes \ - --format=tar \ - --prefix=freeswitch-$uver/ \ - HEAD \ - | xz -c -${zl}v > $orig - mv .gitattributes.orig .gitattributes - git reset --hard HEAD^ && git clean -fdx + { + local OPTIND OPTARG + local uver="" bundle_deps=false zl=9e + while getopts 'bnv:z:' o "$@"; do + case "$o" in + b) bundle_deps=true;; + n) uver="nightly";; + v) uver="$OPTARG";; + z) zl="$OPTARG";; + esac + done + shift $(($OPTIND-1)) + [ -z "$uver" ] || [ "$uver" = "nightly" ] \ + && uver="$(cat build/next-release.txt)-n$(date +%Y%m%dT%H%M%SZ)" + local treeish="$1" dver="$(mk_dver "$uver")" + local orig="../freeswitch_$dver.orig.tar.xz" + [ -n "$treeish" ] || treeish="HEAD" + check_repo_clean + git reset --hard "$treeish" + mv .gitattributes .gitattributes.orig + grep .gitattributes.orig \ + -e '\bdebian-ignore\b' \ + -e '\bdfsg-nonfree\b' \ + | while xread l; do + echo "$l export-ignore" >> .gitattributes + done + if $bundle_deps; then + (cd libs && getlibs) + git add -f libs + fi + ./build/set-fs-version.sh "$uver" && git add configure.in + git commit --allow-empty -m "nightly v$uver" + git archive -v \ + --worktree-attributes \ + --format=tar \ + --prefix=freeswitch-$uver/ \ + HEAD \ + | xz -c -${zl}v > $orig + mv .gitattributes.orig .gitattributes + git reset --hard HEAD^ && git clean -fdx + } 1>&2 echo $orig } create_dsc () { - local distro="$(find_distro $1)" orig="$2" - local suite="$(find_suite $distro)" - local orig_ver="$(echo "$orig" | sed -e 's/^.*_//' -e 's/\.orig\.tar.*$//')" - local dver="${orig_ver}-1~${distro}+1" - [ -x "$(which dch)" ] \ - || err "package devscripts isn't installed" - (cd debian && ./bootstrap.sh -c $distro) - dch -b -m -v "$dver" --force-distribution -D "$suite" "Nightly build." - git add debian/changelog && git commit -m "nightly v$orig_ver" - dpkg-source -i.* -Zxz -z9 -b . - dpkg-genchanges -S > ../$(dsc_base)_source.changes - local dsc="../$(dsc_base).dsc" - git reset --hard HEAD^ && git clean -fdx + { + local distro="$(find_distro $1)" orig="$2" + local suite="$(find_suite $distro)" + local orig_ver="$(echo "$orig" | sed -e 's/^.*_//' -e 's/\.orig\.tar.*$//')" + local dver="${orig_ver}-1~${distro}+1" + [ -x "$(which dch)" ] \ + || err "package devscripts isn't installed" + (cd debian && ./bootstrap.sh -c $distro) + dch -b -m -v "$dver" --force-distribution -D "$suite" "Nightly build." + git add debian/changelog && git commit -m "nightly v$orig_ver" + dpkg-source -i.* -Zxz -z9 -b . + dpkg-genchanges -S > ../$(dsc_base)_source.changes + local dsc="../$(dsc_base).dsc" + git reset --hard HEAD^ && git clean -fdx + } 1>&2 echo $dsc } @@ -202,45 +206,47 @@ EOF } build_debs () { - local OPTIND OPTARG debug_hook=false hookdir="" - while getopts 'd' o "$@"; do - case "$o" in - d) debug_hook=true;; - esac - done - shift $(($OPTIND-1)) - local distro="$(find_distro $1)" dsc="$2" arch="$3" - if [ -z "$distro" ] || [ "$distro" = "auto" ]; then - if ! (echo "$dsc" | grep -e '-[0-9]*~[a-z]*+[0-9]*'); then - err "no distro specified or found" + { + local OPTIND OPTARG debug_hook=false hookdir="" + while getopts 'd' o "$@"; do + case "$o" in + d) debug_hook=true;; + esac + done + shift $(($OPTIND-1)) + local distro="$(find_distro $1)" dsc="$2" arch="$3" + if [ -z "$distro" ] || [ "$distro" = "auto" ]; then + if ! (echo "$dsc" | grep -e '-[0-9]*~[a-z]*+[0-9]*'); then + err "no distro specified or found" + fi + local x="$(echo $dsc | sed -e 's/^[^-]*-[0-9]*~//' -e 's/+[^+]*$//')" + distro="$(find_distro $x)" fi - local x="$(echo $dsc | sed -e 's/^[^-]*-[0-9]*~//' -e 's/+[^+]*$//')" - distro="$(find_distro $x)" - fi - [ -n "$arch" ] || arch="$(dpkg-architecture | grep '^DEB_BUILD_ARCH=' | cut -d'=' -f2)" - [ -x "$(which cowbuilder)" ] \ - || err "package cowbuilder isn't installed" - local cow_img=/var/cache/pbuilder/base-$distro-$arch.cow - cow () { - cowbuilder "$@" \ - --distribution $distro \ - --architecture $arch \ - --basepath $cow_img - } - if ! [ -d $cow_img ]; then - announce "Creating base $distro-$arch image..." - cow --create - fi - announce "Updating base $distro-$arch image..." - cow --update - announce "Building $distro-$arch DEBs from $dsc..." - if $debug_hook; then - mkdir -p .hooks - fmt_debug_hook > .hooks/C10shell - chmod +x .hooks/C10shell - hookdir=$(pwd)/.hooks - fi - cow --build $dsc --hookdir "$hookdir" + [ -n "$arch" ] || arch="$(dpkg-architecture | grep '^DEB_BUILD_ARCH=' | cut -d'=' -f2)" + [ -x "$(which cowbuilder)" ] \ + || err "package cowbuilder isn't installed" + local cow_img=/var/cache/pbuilder/base-$distro-$arch.cow + cow () { + cowbuilder "$@" \ + --distribution $distro \ + --architecture $arch \ + --basepath $cow_img + } + if ! [ -d $cow_img ]; then + announce "Creating base $distro-$arch image..." + cow --create + fi + announce "Updating base $distro-$arch image..." + cow --update + announce "Building $distro-$arch DEBs from $dsc..." + if $debug_hook; then + mkdir -p .hooks + fmt_debug_hook > .hooks/C10shell + chmod +x .hooks/C10shell + hookdir=$(pwd)/.hooks + fi + cow --build $dsc --hookdir "$hookdir" + } 1>&2 echo ${dsc}_${arch}.changes } From 2365f41fdc1a7a04248b864aa1a22305a55274d5 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 17:26:32 +0000 Subject: [PATCH 611/630] debian: add a build quicktest feature --- debian/util.sh | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 829eeba3aa..0331913210 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -177,14 +177,30 @@ create_orig () { echo $orig } +set_modules_quicktest () { + cat > debian/modules.conf < Date: Mon, 28 May 2012 17:42:51 +0000 Subject: [PATCH 612/630] debian: ensure set -e behavior when run under build-all build_all call each of these subroutines under a sub-shell, so the set -e gets wiped out. --- debian/util.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/util.sh b/debian/util.sh index 0331913210..c6220e96a0 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -134,6 +134,7 @@ check_repo_clean () { create_orig () { { + set -e local OPTIND OPTARG local uver="" bundle_deps=false zl=9e while getopts 'bnv:z:' o "$@"; do @@ -185,6 +186,7 @@ EOF create_dsc () { { + set -e local OPTIND OPTARG modules_list="" while getopts 'm:' o "$@"; do case "$o" in @@ -223,6 +225,7 @@ EOF build_debs () { { + set -e local OPTIND OPTARG debug_hook=false hookdir="" while getopts 'd' o "$@"; do case "$o" in From b4816ae952828144b59f0b20771f4e5487f67ed9 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 18:24:11 +0000 Subject: [PATCH 613/630] debian: place build results in ../ --- debian/util.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/util.sh b/debian/util.sh index c6220e96a0..0b6320d21e 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -264,7 +264,9 @@ build_debs () { chmod +x .hooks/C10shell hookdir=$(pwd)/.hooks fi - cow --build $dsc --hookdir "$hookdir" + cow --build $dsc \ + --hookdir "$hookdir" \ + --buildresult ../ } 1>&2 echo ${dsc}_${arch}.changes } From 9f578ca440276fd6f5ed3b48d07ceca4e735d673 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 18:28:17 +0000 Subject: [PATCH 614/630] debian: use bootstrap.sh -j We believe it to be safe now. In test run on multi-core machines it is producing bit-for-bit identical result compared to the non-parallel invocation. --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 0e864c398d..1460ee8962 100755 --- a/debian/rules +++ b/debian/rules @@ -47,7 +47,7 @@ override_dh_auto_clean: .stamp-bootstrap: @$(call show_vars) - ./bootstrap.sh + ./bootstrap.sh -j touch $@ .stamp-configure: .stamp-bootstrap From 25287f3828c7445ae673aba64c5e17695c06bfd2 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 19:15:20 +0000 Subject: [PATCH 615/630] debian: add option to control make/bootstrap -j settings --- debian/util.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 0b6320d21e..87eca55efe 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -187,10 +187,11 @@ EOF create_dsc () { { set -e - local OPTIND OPTARG modules_list="" - while getopts 'm:' o "$@"; do + local OPTIND OPTARG modules_list="" speed="normal" + while getopts 'm:s:' o "$@"; do case "$o" in m) modules_list="$OPTARG";; + s) speed="$OPTARG";; esac done shift $(($OPTIND-1)) @@ -204,6 +205,13 @@ create_dsc () { set_modules_${modules_list} fi (cd debian && ./bootstrap.sh -c $distro) + case "$speed" in + paranoid) sed -i ./debian/rules \ + -e '/\.stamp-bootstrap:/{:l2 n; /\.\/bootstrap.sh -j/{s/ -j//; :l3 n; b l3}; b l2};' ;; + reckless) sed -i ./debian/rules \ + -e '/\.stamp-build:/{:l2 n; /make/{s/$/ -j/; :l3 n; b l3}; b l2};' ;; + esac + git add debian/rules dch -b -m -v "$dver" --force-distribution -D "$suite" "Nightly build." git add debian/changelog && git commit -m "nightly v$orig_ver" dpkg-source -i.* -Zxz -z9 -b . @@ -275,7 +283,7 @@ build_all () { local OPTIND OPTARG local orig_opts="" dsc_opts="" deb_opts="" local archs="" distros="" - while getopts 'a:bc:dnm:v:z:' o "$@"; do + while getopts 'a:bc:dnm:s:v:z:' o "$@"; do case "$o" in a) archs="$archs $OPTARG";; b) orig_opts="$orig_opts -b";; @@ -283,6 +291,7 @@ build_all () { d) deb_opts="$deb_opts -d";; n) orig_opts="$orig_opts -n";; m) dsc_opts="$dsc_opts -m$OPTARG";; + s) dsc_opts="$dsc_opts -s$OPTARG";; v) orig_opts="$orig_opts -v$OPTARG";; z) orig_opts="$orig_opts -z$OPTARG";; esac From baf5bbd565bcdc3dc35106485dc58c4dddd2baad Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 29 May 2012 08:42:51 -0500 Subject: [PATCH 616/630] FS-4266 --resolve --- src/mod/endpoints/mod_sofia/sofia_glue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 6bb7d3ee5f..577c36668e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -1751,7 +1751,7 @@ void sofia_glue_tech_patch_sdp(private_object_t *tech_pvt) } - } else if ((!strncmp("m=audio ", p, 8) && *(p + 9) != '0') || (!strncmp("m=image ", p, 8) && *(p + 9) != '0')) { + } else if ((!strncmp("m=audio ", p, 8) && *(p + 8) != '0') || (!strncmp("m=image ", p, 8) && *(p + 8) != '0')) { strncpy(q, p, 8); p += 8; @@ -1787,7 +1787,7 @@ void sofia_glue_tech_patch_sdp(private_object_t *tech_pvt) has_audio++; - } else if (!strncmp("m=video ", p, 8) && *(p + 9) != '0') { + } else if (!strncmp("m=video ", p, 8) && *(p + 8) != '0') { if (!has_video) { sofia_glue_tech_choose_video_port(tech_pvt, 1); tech_pvt->video_rm_encoding = "PROXY-VID"; From 6679e3f5892e299c6c15b904f4fb707386700429 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Mon, 28 May 2012 20:48:04 +0000 Subject: [PATCH 617/630] debian: add option to run builds in parallel --- debian/util.sh | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/debian/util.sh b/debian/util.sh index 87eca55efe..de1496a950 100755 --- a/debian/util.sh +++ b/debian/util.sh @@ -282,13 +282,14 @@ build_debs () { build_all () { local OPTIND OPTARG local orig_opts="" dsc_opts="" deb_opts="" - local archs="" distros="" - while getopts 'a:bc:dnm:s:v:z:' o "$@"; do + local archs="" distros="" par=false + while getopts 'a:bc:djnm:s:v:z:' o "$@"; do case "$o" in a) archs="$archs $OPTARG";; b) orig_opts="$orig_opts -b";; c) distros="$distros $OPTARG";; d) deb_opts="$deb_opts -d";; + j) par=true;; n) orig_opts="$orig_opts -n";; m) dsc_opts="$dsc_opts -m$OPTARG";; s) dsc_opts="$dsc_opts -s$OPTARG";; @@ -299,22 +300,32 @@ build_all () { shift $(($OPTIND-1)) [ -n "$archs" ] || archs="amd64 i386" [ -n "$distros" ] || distros="sid wheezy squeeze" - local acc_changes="" local orig="$(create_orig $orig_opts HEAD | tail -n1)" + mkdir -p ../log + > ../log/changes + echo; echo; echo; echo if [ "${orig:0:2}" = ".." ]; then for distro in $distros; do - local dsc="$(create_dsc $dsc_opts $distro $orig | tail -n1)" + echo "Creating $distro dsc..." >&2 + local dsc="$(create_dsc $dsc_opts $distro $orig 2>../log/$distro | tail -n1)" + echo "Done creating $distro dsc." >&2 if [ "${dsc:0:2}" = ".." ]; then for arch in $archs; do - local changes="$(build_debs $deb_opts $distro $dsc $arch | tail -n1)" - if [ "${changes:0:2}" = ".." ]; then - acc_changes="$acc_changes $changes" - fi + { + echo "Building $distro-$arch debs..." >&2 + local changes="$(build_debs $deb_opts $distro $dsc $arch 2>../log/$distro-$arch | tail -n1)" + echo "Done building $distro-$arch debs." >&2 + if [ "${changes:0:2}" = ".." ]; then + echo "$changes" >> ../log/changes + fi + } & + $par || wait done fi done + ! $par || wait fi - echo "${acc_changes:1}" + cat ../log/changes } while getopts 'd' o "$@"; do From 226851e8b091f0832f97bde1afe3e7bd2ff829ba Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 29 May 2012 18:41:17 +0000 Subject: [PATCH 618/630] don't use Siren or iLBC by default in example configs These codecs are non-free which creates issues for distributions, so let's not require these by default to run our example configs. We can add back in iLBC once we resolve the licensing situation with our in-tree implementation. --- conf/insideout/autoload_configs/modules.conf.xml | 2 +- conf/sbc/autoload_configs/modules.conf.xml | 2 +- conf/softphone/freeswitch.xml | 4 +--- conf/vanilla/autoload_configs/modules.conf.xml | 4 ++-- conf/vanilla/vars.xml | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/conf/insideout/autoload_configs/modules.conf.xml b/conf/insideout/autoload_configs/modules.conf.xml index 8793a003ba..3c864aec1c 100644 --- a/conf/insideout/autoload_configs/modules.conf.xml +++ b/conf/insideout/autoload_configs/modules.conf.xml @@ -60,7 +60,7 @@ - + diff --git a/conf/sbc/autoload_configs/modules.conf.xml b/conf/sbc/autoload_configs/modules.conf.xml index 31b96dd27a..fb59b386be 100644 --- a/conf/sbc/autoload_configs/modules.conf.xml +++ b/conf/sbc/autoload_configs/modules.conf.xml @@ -39,7 +39,7 @@ - + diff --git a/conf/softphone/freeswitch.xml b/conf/softphone/freeswitch.xml index 00a2bc31cb..66e7c2a923 100644 --- a/conf/softphone/freeswitch.xml +++ b/conf/softphone/freeswitch.xml @@ -3,7 +3,7 @@ - + @@ -86,10 +86,8 @@ - - diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml index 266b32204a..f88bb7b7c0 100644 --- a/conf/vanilla/autoload_configs/modules.conf.xml +++ b/conf/vanilla/autoload_configs/modules.conf.xml @@ -82,10 +82,10 @@ - + - + diff --git a/conf/vanilla/vars.xml b/conf/vanilla/vars.xml index 4f13a61fbb..907c6f1015 100644 --- a/conf/vanilla/vars.xml +++ b/conf/vanilla/vars.xml @@ -123,7 +123,7 @@ 127 - BV32 --> - + switch_rtp_udptl_mode\n"); switch_rtp_udptl_mode(tech_pvt->rtp_session); diff --git a/src/mod/endpoints/mod_khomp/include/applications.h b/src/mod/endpoints/mod_khomp/include/applications.h index 21b66b2b0a..14ba1d3323 100644 --- a/src/mod/endpoints/mod_khomp/include/applications.h +++ b/src/mod/endpoints/mod_khomp/include/applications.h @@ -599,7 +599,7 @@ struct Transfer return SWITCH_STATUS_FALSE; } - switch_core_session_t *peer_session = switch_core_session_locate(switch_channel_get_variable(chan,SWITCH_SIGNAL_BOND_VARIABLE)); + switch_core_session_t *peer_session = switch_core_session_locate(switch_channel_get_partner_uuid(chan)); if(!peer_session) { @@ -662,7 +662,7 @@ struct Transfer switch_channel_t * peer = switch_core_session_get_channel(peer_session); /* put the channel in hold */ - //switch_core_session_t *session = switch_core_session_locate(switch_channel_get_variable(chan,SWITCH_SIGNAL_BOND_VARIABLE)); + //switch_core_session_t *session = switch_core_session_locate(switch_channel_get_partner_uuid(chan)); //switch_channel_t *chan_core = switch_core_session_get_channel(session); const char *stream; @@ -709,7 +709,7 @@ struct Transfer switch_core_session_rwunlock(pvt->session()); switch_core_session_rwunlock(peer_session); - //switch_ivr_unhold_uuid(switch_channel_get_variable(chan,SWITCH_SIGNAL_BOND_VARIABLE)); + //switch_ivr_unhold_uuid(switch_channel_get_partner_uuid(chan)); } catch (ScopedLockFailed & err) { diff --git a/src/mod/endpoints/mod_loopback/mod_loopback.c b/src/mod/endpoints/mod_loopback/mod_loopback.c index 200d6e5b71..e2a2c3daab 100644 --- a/src/mod/endpoints/mod_loopback/mod_loopback.c +++ b/src/mod/endpoints/mod_loopback/mod_loopback.c @@ -659,13 +659,13 @@ static switch_status_t find_non_loopback_bridge(switch_core_session_t *session, *br_session = NULL; *br_uuid = NULL; - a_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + a_uuid = switch_channel_get_partner_uuid(channel); while (a_uuid && (sp = switch_core_session_locate(a_uuid))) { if (switch_core_session_check_interface(sp, loopback_endpoint_interface)) { private_t *tech_pvt = switch_core_session_get_private(sp); - a_uuid = switch_channel_get_variable(tech_pvt->other_channel, SWITCH_SIGNAL_BOND_VARIABLE); + a_uuid = switch_channel_get_partner_uuid(tech_pvt->other_channel); switch_core_session_rwunlock(sp); sp = NULL; } else { @@ -919,7 +919,7 @@ static switch_status_t loopback_bowout_on_execute_state_handler(switch_core_sess /* Wait for b_channel to be fully bridged */ switch_channel_wait_for_flag(b_channel, CF_BRIDGED, SWITCH_TRUE, 5000, NULL); - uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE); + uuid = switch_channel_get_partner_uuid(b_channel); if (uuid && (other_session = switch_core_session_locate(uuid))) { switch_channel_t *other_channel = switch_core_session_get_channel(other_session); diff --git a/src/mod/endpoints/mod_rtmp/rtmp_sig.c b/src/mod/endpoints/mod_rtmp/rtmp_sig.c index 5f57eb04c7..a29465ecc0 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_sig.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_sig.c @@ -539,7 +539,7 @@ RTMP_INVOKE_FUNCTION(rtmp_i_transfer) } if ((tech_pvt = rtmp_locate_private(rsession, uuid))) { - const char *other_uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *other_uuid = switch_channel_get_partner_uuid(tech_pvt->channel); switch_core_session_t *session; if (!zstr(other_uuid) && (session = switch_core_session_locate(other_uuid))) { @@ -570,8 +570,8 @@ RTMP_INVOKE_FUNCTION(rtmp_i_join) return SWITCH_STATUS_FALSE; } - if ((other_uuid[0] = switch_channel_get_variable(tech_pvt[0]->channel, SWITCH_SIGNAL_BOND_VARIABLE)) && - (other_uuid[1] = switch_channel_get_variable(tech_pvt[1]->channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((other_uuid[0] = switch_channel_get_partner_uuid(tech_pvt[0]->channel)) && + (other_uuid[1] = switch_channel_get_partner_uuid(tech_pvt[1]->channel))) { #ifndef RTMP_DONT_HOLD if (switch_test_flag(tech_pvt[0], TFLAG_DETACHED)) { @@ -725,8 +725,8 @@ RTMP_INVOKE_FUNCTION(rtmp_i_three_way) return SWITCH_STATUS_FALSE; } - if (!(other_uuid[0] = switch_channel_get_variable(tech_pvt[0]->channel, SWITCH_SIGNAL_BOND_VARIABLE)) || - !(other_uuid[1] = switch_channel_get_variable(tech_pvt[1]->channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if (!(other_uuid[0] = switch_channel_get_partner_uuid(tech_pvt[0]->channel)) || + !(other_uuid[1] = switch_channel_get_partner_uuid(tech_pvt[1]->channel))) { return SWITCH_STATUS_FALSE; /* Both calls aren't bridged */ } diff --git a/src/mod/endpoints/mod_skinny/skinny_server.c b/src/mod/endpoints/mod_skinny/skinny_server.c index 8e47691c36..0957739455 100644 --- a/src/mod/endpoints/mod_skinny/skinny_server.c +++ b/src/mod/endpoints/mod_skinny/skinny_server.c @@ -784,12 +784,12 @@ switch_status_t skinny_session_transfer(switch_core_session_t *session, listener tech_pvt = switch_core_session_get_private(session); channel = switch_core_session_get_channel(session); - remote_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + remote_uuid = switch_channel_get_partner_uuid(channel); if (tech_pvt->transfer_from_call_id) { if((session2 = skinny_profile_find_session(listener->profile, listener, &line_instance, tech_pvt->transfer_from_call_id))) { switch_channel_t *channel2 = switch_core_session_get_channel(session2); - const char *remote_uuid2 = switch_channel_get_variable(channel2, SWITCH_SIGNAL_BOND_VARIABLE); + const char *remote_uuid2 = switch_channel_get_partner_uuid(channel2); if (switch_ivr_uuid_bridge(remote_uuid, remote_uuid2) == SWITCH_STATUS_SUCCESS) { switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); switch_channel_hangup(channel2, SWITCH_CAUSE_NORMAL_CLEARING); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 92a27fd0f2..2b44018665 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -172,7 +172,7 @@ static switch_status_t sofia_on_reset(switch_core_session_t *session) const char *uuid = switch_core_session_get_uuid(session); if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { - const char *other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *other_uuid = switch_channel_get_partner_uuid(channel); int x = 0; if (other_uuid) { @@ -1824,7 +1824,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } sofia_glue_tech_set_local_sdp(tech_pvt, NULL, SWITCH_FALSE); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) + if ((uuid = switch_channel_get_partner_uuid(channel)) && (other_session = switch_core_session_locate(uuid))) { other_channel = switch_core_session_get_channel(other_session); ip = switch_channel_get_variable(other_channel, SWITCH_REMOTE_MEDIA_IP_VARIABLE); @@ -2061,7 +2061,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi const char *uuid; const char *call_id = NULL, *to_user = NULL, *to_host = NULL, *to_tag = NULL, *from_tag = NULL, *from_user = NULL, *from_host = NULL; - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *rsession; if ((rsession = switch_core_session_locate(uuid))) { switch_channel_t *rchannel = switch_core_session_get_channel(rsession); @@ -2191,7 +2191,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi if (switch_event_create(&event, SWITCH_EVENT_CALL_UPDATE) == SWITCH_STATUS_SUCCESS) { - const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(channel); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Direction", "SEND"); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 0621b3b84d..dc4fcfb0f0 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -618,7 +618,7 @@ void sofia_handle_sip_i_bye(switch_core_session_t *session, int status, if (sofia_test_flag(tech_pvt, TFLAG_SLA_BARGE)) { switch_core_session_t *new_session, *other_session; - const char *other_uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *other_uuid = switch_channel_get_partner_uuid(tech_pvt->channel); char *cmd = NULL; if (!zstr(other_uuid) && (other_session = switch_core_session_locate(other_uuid))) { @@ -783,7 +783,7 @@ void sofia_send_callee_id(switch_core_session_t *session, const char *name, cons number = caller_profile->destination_number; } - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (session_b = switch_core_session_locate(uuid))) { + if ((uuid = switch_channel_get_partner_uuid(channel)) && (session_b = switch_core_session_locate(uuid))) { switch_core_session_message_t *msg; //switch_channel_t *channel_b = switch_core_session_get_channel(session_b); @@ -906,7 +906,7 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro caller_profile->callee_id_number = switch_sanitize_number(switch_core_strdup(caller_profile->pool, number)); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Update Callee ID to \"%s\" <%s>\n", switch_channel_get_name(channel), name, number); - if (lazy || (att && !switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if (lazy || (att && !switch_channel_get_partner_uuid(channel))) { switch_channel_flip_cid(channel); } } @@ -914,7 +914,7 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro if (send) { if (switch_event_create(&event, SWITCH_EVENT_CALL_UPDATE) == SWITCH_STATUS_SUCCESS) { - const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(channel); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Direction", "RECV"); if (uuid) { switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Bridged-To", uuid); @@ -5211,7 +5211,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status goto end; } - if ((br = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((br = switch_channel_get_partner_uuid(channel))) { switch_xml_t root = NULL, domain = NULL; switch_core_session_t *a_session; switch_channel_t *a_channel; @@ -5370,7 +5370,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status if (sofia_test_flag(tech_pvt, TFLAG_SENT_UPDATE)) { sofia_clear_flag_locked(tech_pvt, TFLAG_SENT_UPDATE); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) { + if ((uuid = switch_channel_get_partner_uuid(channel)) && (other_session = switch_core_session_locate(uuid))) { const char *r_sdp = NULL; switch_core_session_message_t *msg; private_object_t *other_tech_pvt = switch_core_session_get_private(other_session); @@ -5602,7 +5602,7 @@ void *SWITCH_THREAD_FUNC media_on_hold_thread_run(switch_thread_t *thread, void switch_channel_t *channel = switch_core_session_get_channel(session); private_object_t *tech_pvt = switch_core_session_get_private(session); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) { + if ((uuid = switch_channel_get_partner_uuid(channel)) && (other_session = switch_core_session_locate(uuid))) { if (switch_core_session_compare(session, other_session)) { sofia_set_flag_locked(tech_pvt, TFLAG_HOLD_LOCK); switch_ivr_media(switch_core_session_get_uuid(other_session), SMF_REBRIDGE); @@ -6057,7 +6057,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } if ((b_private = nua_handle_magic(bnh))) { - const char *br_b = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *br_b = switch_channel_get_partner_uuid(channel); char *br_a = b_private->uuid; @@ -6859,8 +6859,8 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t b_tech_pvt = (private_object_t *) switch_core_session_get_private(b_session); channel_b = switch_core_session_get_channel(b_session); - br_a = switch_channel_get_variable(channel_a, SWITCH_SIGNAL_BOND_VARIABLE); - br_b = switch_channel_get_variable(channel_b, SWITCH_SIGNAL_BOND_VARIABLE); + br_a = switch_channel_get_partner_uuid(channel_a); + br_b = switch_channel_get_partner_uuid(channel_b); if (!switch_ivr_uuid_exists(br_a)) { br_a = NULL; @@ -7109,7 +7109,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t } nua_handle_unref(bnh); } else { /* the other channel is on a different box, we have to go find them */ - if (exten && (br_a = switch_channel_get_variable(channel_a, SWITCH_SIGNAL_BOND_VARIABLE))) { + if (exten && (br_a = switch_channel_get_partner_uuid(channel_a))) { switch_core_session_t *a_session; switch_channel_t *channel = switch_core_session_get_channel(session); @@ -7232,7 +7232,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t const char *br; switch_core_session_t *b_session; - if ((br = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (b_session = switch_core_session_locate(br))) { + if ((br = switch_channel_get_partner_uuid(channel)) && (b_session = switch_core_session_locate(br))) { const char *var; switch_channel_t *b_channel = switch_core_session_get_channel(b_session); @@ -7554,7 +7554,7 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t const char *uuid; switch_core_session_t *session_b; - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (session_b = switch_core_session_locate(uuid))) { + if ((uuid = switch_channel_get_partner_uuid(channel)) && (session_b = switch_core_session_locate(uuid))) { while (switch_channel_has_dtmf(channel)) { switch_dtmf_t idtmf = { 0, 0 }; if (switch_channel_dequeue_dtmf(channel, &idtmf) == SWITCH_STATUS_SUCCESS) { @@ -8575,7 +8575,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_ tech_pvt->caller_profile->dialplan = "inline"; - bridge_uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE); + bridge_uuid = switch_channel_get_partner_uuid(b_channel); if (call_info) { const char *olu; diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 577c36668e..cb091daf8e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -688,7 +688,7 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, const char *ip, switch pass_fmtp = NULL; - if (switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE)) { + if (switch_channel_get_partner_uuid(tech_pvt->channel)) { if ((of = switch_channel_get_variable_partner(tech_pvt->channel, "sip_video_fmtp"))) { pass_fmtp = of; } @@ -4189,9 +4189,9 @@ int sofia_glue_toggle_hold(private_object_t *tech_pvt, int sendonly) if (!strcasecmp(stream, "indicate_hold")) { switch_channel_set_flag(tech_pvt->channel, CF_SUSPEND); switch_channel_set_flag(tech_pvt->channel, CF_HOLD); - switch_ivr_hold_uuid(switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE), NULL, 0); + switch_ivr_hold_uuid(switch_channel_get_partner_uuid(tech_pvt->channel), NULL, 0); } else { - switch_ivr_broadcast(switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE), stream, + switch_ivr_broadcast(switch_channel_get_partner_uuid(tech_pvt->channel), stream, SMF_ECHO_ALEG | SMF_LOOP | SMF_PRIORITY); switch_yield(250000); } @@ -4217,7 +4217,7 @@ int sofia_glue_toggle_hold(private_object_t *tech_pvt, int sendonly) switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets); } - if ((uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (b_session = switch_core_session_locate(uuid))) { + if ((uuid = switch_channel_get_partner_uuid(tech_pvt->channel)) && (b_session = switch_core_session_locate(uuid))) { switch_channel_t *b_channel = switch_core_session_get_channel(b_session); if (switch_channel_test_flag(tech_pvt->channel, CF_HOLD)) { @@ -5330,7 +5330,7 @@ void sofia_glue_pass_sdp(private_object_t *tech_pvt, char *sdp) switch_core_session_t *other_session; switch_channel_t *other_channel; - if ((val = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE)) + if ((val = switch_channel_get_partner_uuid(tech_pvt->channel)) && (other_session = switch_core_session_locate(val))) { other_channel = switch_core_session_get_channel(other_session); switch_channel_set_variable(other_channel, SWITCH_B_SDP_VARIABLE, sdp); @@ -5904,7 +5904,7 @@ static int recover_callback(void *pArg, int argc, char **argv, char **columnName } - if (switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) { + if (switch_channel_get_partner_uuid(channel)) { sofia_set_flag(tech_pvt, TFLAG_RECOVERING_BRIDGE); } else { switch_xml_t callflow, param, x_extension; @@ -6826,7 +6826,7 @@ void sofia_glue_tech_simplify(private_object_t *tech_pvt) - if ((uuid = switch_channel_get_variable(tech_pvt->channel, SWITCH_SIGNAL_BOND_VARIABLE)) + if ((uuid = switch_channel_get_partner_uuid(tech_pvt->channel)) && (other_session = switch_core_session_locate(uuid))) { other_channel = switch_core_session_get_channel(other_session); diff --git a/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c b/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c index 9f3eaf1cb6..77a0438cca 100644 --- a/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c +++ b/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c @@ -213,7 +213,7 @@ static switch_status_t my_on_routing(switch_core_session_t *session) } */ - if ((signal_bond = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && !zstr(signal_bond)) { + if ((signal_bond = switch_channel_get_partner_uuid(channel)) && !zstr(signal_bond)) { if (rc_avpair_add(rad_config, &send, PW_FS_OTHER_LEG_ID, (void*) signal_bond, -1, PW_FS_PEC) == NULL) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "[mod_radius_cdr] Failed adding Freeswitch-Other-Leg-Id: %s\n", uuid_str); rc_destroy(rad_config); diff --git a/src/switch_channel.c b/src/switch_channel.c index dc983c78cd..138123f3eb 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -831,7 +831,7 @@ SWITCH_DECLARE(const char *) switch_channel_get_variable_partner(switch_channel_ switch_assert(channel != NULL); if (!zstr(varname)) { - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { switch_channel_t *tchannel = switch_core_session_get_channel(session); @@ -896,7 +896,7 @@ SWITCH_DECLARE(void *) switch_channel_get_private_partner(switch_channel_t *chan switch_assert(channel != NULL); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { val = switch_core_hash_find_locked(channel->private_hash, key, channel->profile_mutex); @@ -1324,7 +1324,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_set_variable_partner_var_check(sw switch_assert(channel != NULL); if (!zstr(varname)) { - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { switch_channel_t *tchannel = switch_core_session_get_channel(session); @@ -1357,7 +1357,7 @@ SWITCH_DECLARE(switch_bool_t) switch_channel_set_flag_partner(switch_channel_t * switch_assert(channel != NULL); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { switch_channel_set_flag(switch_core_session_get_channel(session), flag); @@ -1376,7 +1376,7 @@ SWITCH_DECLARE(uint32_t) switch_channel_test_flag_partner(switch_channel_t *chan switch_assert(channel != NULL); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { r = switch_channel_test_flag(switch_core_session_get_channel(session), flag); @@ -1393,7 +1393,7 @@ SWITCH_DECLARE(switch_bool_t) switch_channel_clear_flag_partner(switch_channel_t switch_assert(channel != NULL); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { switch_channel_clear_flag(switch_core_session_get_channel(session), flag); @@ -1513,7 +1513,7 @@ SWITCH_DECLARE(uint32_t) switch_channel_test_cap_partner(switch_channel_t *chann switch_assert(channel != NULL); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(channel))) { switch_core_session_t *session; if ((session = switch_core_session_locate(uuid))) { r = switch_channel_test_cap(switch_core_session_get_channel(session), cap); @@ -2730,7 +2730,7 @@ SWITCH_DECLARE(void) switch_channel_flip_cid(switch_channel_t *channel) if (switch_event_create(&event, SWITCH_EVENT_CALL_UPDATE) == SWITCH_STATUS_SUCCESS) { - const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(channel); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Direction", "RECV"); if (uuid) { @@ -4150,6 +4150,17 @@ SWITCH_DECLARE(switch_status_t) switch_channel_set_timestamps(switch_channel_t * return status; } +SWITCH_DECLARE(const char *) switch_channel_get_partner_uuid(switch_channel_t *channel) +{ + const char *uuid = NULL; + + if (!(uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + uuid = switch_channel_get_variable(channel, SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE); + } + + return uuid; +} + /* For Emacs: * Local Variables: * mode:c diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 83f8ae6d26..0a3db343ed 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -288,7 +288,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi if (switch_test_flag(session, SSF_READ_TRANSCODE) && !need_codec && switch_core_codec_ready(session->read_codec)) { switch_core_session_t *other_session; - const char *uuid = switch_channel_get_variable(switch_core_session_get_channel(session), SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(switch_core_session_get_channel(session)); switch_clear_flag(session, SSF_READ_TRANSCODE); if (uuid && (other_session = switch_core_session_locate(uuid))) { @@ -866,7 +866,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess if (switch_test_flag(session, SSF_WRITE_TRANSCODE) && !need_codec && switch_core_codec_ready(session->write_codec)) { switch_core_session_t *other_session; - const char *uuid = switch_channel_get_variable(switch_core_session_get_channel(session), SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(switch_core_session_get_channel(session)); if (uuid && (other_session = switch_core_session_locate(uuid))) { switch_set_flag(other_session, SSF_READ_CODEC_RESET); diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 4e43987ecf..2cdbeaa81b 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -184,7 +184,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_partner(switch_core_sess { const char *uuid; - if ((uuid = switch_channel_get_variable(session->channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(session->channel, "originate_signal_bond"))) { + if ((uuid = switch_channel_get_partner_uuid(session->channel))) { if ((*partner = switch_core_session_locate(uuid))) { return SWITCH_STATUS_SUCCESS; } @@ -544,7 +544,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ switch_channel_set_variable(peer_channel, SWITCH_ORIGINATOR_VARIABLE, switch_core_session_get_uuid(session)); switch_channel_set_variable(peer_channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(session)); // Needed by 3PCC proxy so that aleg can find bleg to pass SDP to, when final ACK arrives. - switch_channel_set_variable(channel, "originate_signal_bond", switch_core_session_get_uuid(*new_session)); + switch_channel_set_variable(channel, SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(*new_session)); if ((val = switch_channel_get_variable(channel, SWITCH_PROCESS_CDR_VARIABLE))) { switch_channel_set_variable(peer_channel, SWITCH_PROCESS_CDR_VARIABLE, val); @@ -797,7 +797,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_pass_indication(switch_core_ switch_channel_t *channel = switch_core_session_get_channel(session); switch_status_t status = SWITCH_STATUS_SUCCESS; - if (((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) || (uuid = switch_channel_get_variable(channel, "originate_signal_bond"))) && (other_session = switch_core_session_locate(uuid))) { + if (((uuid = switch_channel_get_partner_uuid(channel))) && (other_session = switch_core_session_locate(uuid))) { msg.message_id = indication; msg.from = __FILE__; status = switch_core_session_receive_message(other_session, &msg); diff --git a/src/switch_ivr.c b/src/switch_ivr.c index e4fc807596..08d1fcd5a4 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -559,7 +559,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se switch_channel_set_flag(channel, CF_BROADCAST); } if (hold_bleg && switch_true(hold_bleg)) { - if ((b_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((b_uuid = switch_channel_get_partner_uuid(channel))) { const char *stream; b_uuid = switch_core_session_strdup(session, b_uuid); @@ -1384,7 +1384,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_hold(switch_core_session_t *session, switch_core_session_receive_message(session, &msg); if (moh && (stream = switch_channel_get_hold_music(channel))) { - if ((other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((other_uuid = switch_channel_get_partner_uuid(channel))) { switch_ivr_broadcast(other_uuid, stream, SMF_ECHO_ALEG | SMF_LOOP); } } @@ -1421,7 +1421,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_unhold(switch_core_session_t *session switch_core_session_receive_message(session, &msg); - if ((other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (b_session = switch_core_session_locate(other_uuid))) { + if ((other_uuid = switch_channel_get_partner_uuid(channel)) && (b_session = switch_core_session_locate(other_uuid))) { switch_channel_t *b_channel = switch_core_session_get_channel(b_session); switch_channel_stop_broadcast(b_channel); switch_channel_wait_for_flag(b_channel, CF_BROADCAST, SWITCH_FALSE, 5000, NULL); diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 5d6127d054..37da4f0486 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -4068,7 +4068,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_broadcast(const char *uuid, const cha } } - if ((flags & SMF_ECHO_BLEG) && (other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) + if ((flags & SMF_ECHO_BLEG) && (other_uuid = switch_channel_get_partner_uuid(channel)) && (other_session = switch_core_session_locate(other_uuid))) { if ((flags & SMF_EXEC_INLINE)) { switch_core_session_execute_application_get_flags(other_session, app, path, &app_flags); diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index d8b548b048..4af0dbb8ff 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -1704,7 +1704,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_find_bridged_uuid(const char *uuid, c const char *brto; if ((brto = switch_channel_get_variable(rchannel, "orignate_signal_bond")) || - (brto = switch_channel_get_variable(rchannel, SWITCH_SIGNAL_BOND_VARIABLE))) { + (brto = switch_channel_get_partner_uuid(rchannel))) { switch_copy_string(b_uuid, brto, blen); status = SWITCH_STATUS_SUCCESS; } @@ -1738,7 +1738,7 @@ SWITCH_DECLARE(void) switch_ivr_intercept_session(switch_core_session_t *session channel = switch_core_session_get_channel(session); rchannel = switch_core_session_get_channel(rsession); - buuid = switch_channel_get_variable(rchannel, SWITCH_SIGNAL_BOND_VARIABLE); + buuid = switch_channel_get_partner_uuid(rchannel); if ((var = switch_channel_get_variable(channel, "intercept_unbridged_only")) && switch_true(var)) { if ((switch_channel_test_flag(rchannel, CF_BRIDGED))) { diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 98fed62b34..c18da450a6 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -3592,7 +3592,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess switch_channel_set_variable(caller_channel, SWITCH_SIGNAL_BOND_VARIABLE, switch_core_session_get_uuid(*bleg)); // Now main SWITCH_SIGNAL_BOND_VARIABLE is populated, don't need this one anymore... - switch_channel_set_variable(caller_channel, "originate_signal_bond", NULL); + switch_channel_set_variable(caller_channel, SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE, NULL); } diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index f435c87026..8738071cb4 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -2570,7 +2570,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_soft_hold(switch_core_session_t *sess channel = switch_core_session_get_channel(session); switch_assert(channel != NULL); - if ((other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { + if ((other_uuid = switch_channel_get_partner_uuid(channel))) { if ((other_session = switch_core_session_locate(other_uuid))) { other_channel = switch_core_session_get_channel(other_session); diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 1c243e1b80..039cad9eb6 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -3048,7 +3048,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); switch_channel_t *channel = switch_core_session_get_channel(session); - const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(channel); if (uuid) { switch_core_session_t *other_session; switch_rtp_t *other_rtp_session = NULL; @@ -3626,7 +3626,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); switch_channel_t *channel = switch_core_session_get_channel(session); - const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(channel); if (uuid) { switch_core_session_t *other_session; @@ -4257,7 +4257,7 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra switch_core_session_t *session = switch_core_memory_pool_get_data(rtp_session->pool, "__session"); switch_channel_t *channel = switch_core_session_get_channel(session); - const char *uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE); + const char *uuid = switch_channel_get_partner_uuid(channel); if (uuid) { switch_core_session_t *other_session; From 76c3580e83e70ebe592169b3d8e9cb2847f62951 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 29 May 2012 22:13:46 +0000 Subject: [PATCH 621/630] fix build test for revision number The test was backward. If the revision is in switch_version.h.in then we have the version already. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 31d22f7754..12dc3fa05a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -418,7 +418,7 @@ $(switch_builddir)/quiet_libtool: $(switch_builddir)/libtool src/include/switch_version.h: src/include/switch_version.h.in .version $(libfreeswitch_la_SOURCES) $(library_include_HEADERS) @have_version=1 ; \ force=0 ; \ - grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h.in > /dev/null && have_version=0 ; \ + grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h.in > /dev/null || have_version=0 ; \ test ! -f src/include/switch_version.h || grep -- "@SWITCH_VERSION_REVISION@" src/include/switch_version.h > /dev/null && force=1 ; \ if test $$have_version = 1 ; then \ cat src/include/switch_version.h.in > src/include/switch_version.h ; \ From 82b00ecbc8bfb9e9e389b7a2bf8fe43a2e390520 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Wed, 30 May 2012 15:10:00 +0000 Subject: [PATCH 622/630] don't build mod_ilbc or mod_siren by default Our default build probably shouldn't include non-free software. With mod_ilbc, the licensing situation is merely ambiguous. With mod_siren, the user can't use this code without getting explicit permission from Polycom (though it is apparently easily given). --- build/modules.conf.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/modules.conf.in b/build/modules.conf.in index 534c1f0ec2..fdb631927a 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -58,12 +58,12 @@ codecs/mod_bv codecs/mod_g723_1 codecs/mod_g729 codecs/mod_h26x -codecs/mod_ilbc +#codecs/mod_ilbc #codecs/mod_isac #codecs/mod_opus #codecs/mod_sangoma_codec #codecs/mod_silk -codecs/mod_siren +#codecs/mod_siren codecs/mod_speex dialplans/mod_dialplan_asterisk #dialplans/mod_dialplan_directory From 192030c57898bce8b3df805ea1b21ad436c015b9 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 May 2012 13:05:05 -0500 Subject: [PATCH 623/630] add metadata col to internal registrations table --- src/include/switch_core.h | 4 +- src/mod/endpoints/mod_skinny/skinny_server.c | 3 +- src/mod/endpoints/mod_sofia/sofia_reg.c | 7 ++- src/switch_core_sqldb.c | 50 ++++++++++++++------ 4 files changed, 46 insertions(+), 18 deletions(-) diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 9803c6708b..05d6e0aa48 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -2300,10 +2300,12 @@ SWITCH_DECLARE(uint32_t) switch_default_ptime(const char *name, uint32_t number) \param [in] network_ip \param [in] network_port \param [in] network_proto - one of tls, tcp, udp + \param [in] metadata - generic metadata supplied by module \param [out] err - Error if it exists */ SWITCH_DECLARE(switch_status_t) switch_core_add_registration(const char *user, const char *realm, const char *token, const char *url, uint32_t expires, - const char *network_ip, const char *network_port, const char *network_proto); + const char *network_ip, const char *network_port, const char *network_proto, + const char *metadata); /*! \brief Delete user registration \param [in] user diff --git a/src/mod/endpoints/mod_skinny/skinny_server.c b/src/mod/endpoints/mod_skinny/skinny_server.c index 0957739455..95f7e6c83e 100644 --- a/src/mod/endpoints/mod_skinny/skinny_server.c +++ b/src/mod/endpoints/mod_skinny/skinny_server.c @@ -1007,6 +1007,7 @@ switch_status_t skinny_handle_register(listener_t *listener, skinny_message_t *r const char *value = switch_xml_attr_soft(xbutton, "value"); if(type == SKINNY_BUTTON_LINE) { const char *caller_name = switch_xml_attr_soft(xbutton, "caller-name"); + const char *reg_metadata = switch_xml_attr_soft(xbutton, "registration-metadata"); uint32_t ring_on_idle = atoi(switch_xml_attr_soft(xbutton, "ring-on-idle")); uint32_t ring_on_active = atoi(switch_xml_attr_soft(xbutton, "ring-on-active")); uint32_t busy_trigger = atoi(switch_xml_attr_soft(xbutton, "busy-trigger")); @@ -1030,7 +1031,7 @@ switch_status_t skinny_handle_register(listener_t *listener, skinny_message_t *r switch_safe_free(sql); token = switch_mprintf("skinny/%q/%q/%q:%d", profile->name, value, request->data.reg.device_name, request->data.reg.instance); url = switch_mprintf("skinny/%q/%q", profile->name, value); - switch_core_add_registration(value, profile->domain, token, url, 0, network_ip, network_port_c, "tcp"); + switch_core_add_registration(value, profile->domain, token, url, 0, network_ip, network_port_c, "tcp", reg_metadata); switch_safe_free(token); switch_safe_free(url); } diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index e358c8f228..7ec9f1f93a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -1028,6 +1028,7 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand sip_contact_t const *contact = NULL; char *sql; switch_event_t *s_event; + const char *reg_meta = NULL; const char *to_user = NULL; const char *to_host = NULL; char *mwi_account = NULL; @@ -1485,6 +1486,10 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand to_user = var; } + if (v_event && *v_event && (var = switch_event_get_header(*v_event, "registration_metadata"))) { + reg_meta = var; + } + if (v_event && *v_event && (mwi_account = switch_event_get_header(*v_event, "mwi-account"))) { dup_mwi_account = strdup(mwi_account); switch_assert(dup_mwi_account != NULL); @@ -1559,7 +1564,7 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand url = switch_mprintf("sofia/%q/sip:%q", profile->name, sofia_glue_strip_proto(contact)); switch_core_add_registration(to_user, reg_host, call_id, url, (long) switch_epoch_time_now(NULL) + (long) exptime + 60, - network_ip, network_port_c, is_tls ? "tls" : is_tcp ? "tcp" : "udp"); + network_ip, network_port_c, is_tls ? "tls" : is_tcp ? "tcp" : "udp", reg_meta); switch_safe_free(url); switch_safe_free(contact); diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 85d38160ed..9b40674065 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -1713,7 +1713,8 @@ static char create_registrations_sql[] = " network_ip VARCHAR(256),\n" " network_port VARCHAR(256),\n" " network_proto VARCHAR(256),\n" - " hostname VARCHAR(256)\n" + " hostname VARCHAR(256),\n" + " metadata VARCHAR(256)\n" ");\n"; @@ -1843,7 +1844,8 @@ static char basic_calls_sql[] = SWITCH_DECLARE(switch_status_t) switch_core_add_registration(const char *user, const char *realm, const char *token, const char *url, uint32_t expires, - const char *network_ip, const char *network_port, const char *network_proto) + const char *network_ip, const char *network_port, const char *network_proto, + const char *metadata) { char *sql; @@ -1860,19 +1862,35 @@ SWITCH_DECLARE(switch_status_t) switch_core_add_registration(const char *user, c } switch_queue_push(sql_manager.sql_queue[0], sql); - - sql = switch_mprintf("insert into registrations (reg_user,realm,token,url,expires,network_ip,network_port,network_proto,hostname) " - "values ('%q','%q','%q','%q',%ld,'%q','%q','%q','%q')", - switch_str_nil(user), - switch_str_nil(realm), - switch_str_nil(token), - switch_str_nil(url), - expires, - switch_str_nil(network_ip), - switch_str_nil(network_port), - switch_str_nil(network_proto), - switch_core_get_switchname() - ); + + if ( !zstr(metadata) ) { + sql = switch_mprintf("insert into registrations (reg_user,realm,token,url,expires,network_ip,network_port,network_proto,hostname,metadata) " + "values ('%q','%q','%q','%q',%ld,'%q','%q','%q','%q','%q')", + switch_str_nil(user), + switch_str_nil(realm), + switch_str_nil(token), + switch_str_nil(url), + expires, + switch_str_nil(network_ip), + switch_str_nil(network_port), + switch_str_nil(network_proto), + switch_core_get_switchname(), + metadata + ); + } else { + sql = switch_mprintf("insert into registrations (reg_user,realm,token,url,expires,network_ip,network_port,network_proto,hostname) " + "values ('%q','%q','%q','%q',%ld,'%q','%q','%q','%q')", + switch_str_nil(user), + switch_str_nil(realm), + switch_str_nil(token), + switch_str_nil(url), + expires, + switch_str_nil(network_ip), + switch_str_nil(network_port), + switch_str_nil(network_proto), + switch_core_get_switchname() + ); + } switch_queue_push(sql_manager.sql_queue[0], sql); @@ -2007,6 +2025,8 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_ switch_cache_db_test_reactive(dbh, "delete from registrations where reg_user='' or network_proto='tcp' or network_proto='tls'", "DROP TABLE registrations", create_registrations_sql); + switch_cache_db_test_reactive(dbh, "select metadata from registrations", NULL, "ALTER TABLE registrations ADD COLUMN metadata VARCHAR(256)"); + switch (dbh->type) { case SCDB_TYPE_ODBC: From 3e1d68b0a6900b582154bbb72a8149ea1a357c9b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 May 2012 13:08:31 -0500 Subject: [PATCH 624/630] FS-4250 --resolve erase replaces header after using it --- src/mod/endpoints/mod_sofia/sofia_glue.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index cb091daf8e..2cb2fdd551 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2087,7 +2087,9 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) } - rep = switch_channel_get_variable(channel, SOFIA_REPLACES_HEADER); + if ((rep = switch_channel_get_variable(channel, SOFIA_REPLACES_HEADER))) { + switch_channel_set_variable(channel, SOFIA_REPLACES_HEADER, NULL); + } switch_assert(tech_pvt != NULL); From 39bad5b13ef8a85608a6783a9ebdaed3713da04d Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Wed, 30 May 2012 15:58:48 -0500 Subject: [PATCH 625/630] vs2010 reswig for last commit --- .../mod_managed/freeswitch_wrap.2010.cxx | 28 +++++++++++++++++-- .../mod_managed/managed/swig.2010.cs | 18 ++++++++++-- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx index 65b4eedf3c..a11d584f49 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.2010.cxx @@ -1550,6 +1550,16 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_SIGNAL_BOND_VARIABLE_get() { } +SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE_get() { + char * jresult ; + char *result = 0 ; + + result = (char *)("originate_signal_bond"); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT char * SWIGSTDCALL CSharp_SWITCH_ORIGINATOR_VARIABLE_get() { char * jresult ; char *result = 0 ; @@ -11108,7 +11118,7 @@ SWIGEXPORT unsigned long SWIGSTDCALL CSharp_switch_default_ptime(char * jarg1, u } -SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_add_registration(char * jarg1, char * jarg2, char * jarg3, char * jarg4, unsigned long jarg5, char * jarg6, char * jarg7, char * jarg8) { +SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_add_registration(char * jarg1, char * jarg2, char * jarg3, char * jarg4, unsigned long jarg5, char * jarg6, char * jarg7, char * jarg8, char * jarg9) { int jresult ; char *arg1 = (char *) 0 ; char *arg2 = (char *) 0 ; @@ -11118,6 +11128,7 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_add_registration(char * jarg1, cha char *arg6 = (char *) 0 ; char *arg7 = (char *) 0 ; char *arg8 = (char *) 0 ; + char *arg9 = (char *) 0 ; switch_status_t result; arg1 = (char *)jarg1; @@ -11128,7 +11139,8 @@ SWIGEXPORT int SWIGSTDCALL CSharp_switch_core_add_registration(char * jarg1, cha arg6 = (char *)jarg6; arg7 = (char *)jarg7; arg8 = (char *)jarg8; - result = (switch_status_t)switch_core_add_registration((char const *)arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8); + arg9 = (char *)jarg9; + result = (switch_status_t)switch_core_add_registration((char const *)arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8,(char const *)arg9); jresult = result; return jresult; } @@ -25772,6 +25784,18 @@ SWIGEXPORT void SWIGSTDCALL CSharp_switch_channel_transfer_to_extension(void * j } +SWIGEXPORT char * SWIGSTDCALL CSharp_switch_channel_get_partner_uuid(void * jarg1) { + char * jresult ; + switch_channel_t *arg1 = (switch_channel_t *) 0 ; + char *result = 0 ; + + arg1 = (switch_channel_t *)jarg1; + result = (char *)switch_channel_get_partner_uuid(arg1); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_switch_buffer_create(void * jarg1, void * jarg2, void * jarg3) { int jresult ; switch_memory_pool_t *arg1 = (switch_memory_pool_t *) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.2010.cs b/src/mod/languages/mod_managed/managed/swig.2010.cs index 0654085a50..3a1cc13d6b 100644 --- a/src/mod/languages/mod_managed/managed/swig.2010.cs +++ b/src/mod/languages/mod_managed/managed/swig.2010.cs @@ -2671,8 +2671,8 @@ public class freeswitch { return ret; } - public static switch_status_t switch_core_add_registration(string user, string realm, string token, string url, uint expires, string network_ip, string network_port, string network_proto) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_add_registration(user, realm, token, url, expires, network_ip, network_port, network_proto); + public static switch_status_t switch_core_add_registration(string user, string realm, string token, string url, uint expires, string network_ip, string network_port, string network_proto, string metadata) { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_add_registration(user, realm, token, url, expires, network_ip, network_port, network_proto, metadata); return ret; } @@ -4118,6 +4118,11 @@ public class freeswitch { freeswitchPINVOKE.switch_channel_transfer_to_extension(SWIGTYPE_p_switch_channel.getCPtr(channel), switch_caller_extension.getCPtr(caller_extension)); } + public static string switch_channel_get_partner_uuid(SWIGTYPE_p_switch_channel channel) { + string ret = freeswitchPINVOKE.switch_channel_get_partner_uuid(SWIGTYPE_p_switch_channel.getCPtr(channel)); + return ret; + } + public static switch_status_t switch_buffer_create(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_switch_size_t max_len) { switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_switch_size_t.getCPtr(max_len)); if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); @@ -6130,6 +6135,7 @@ public class freeswitch { public static readonly string SWITCH_LAST_BRIDGE_VARIABLE = freeswitchPINVOKE.SWITCH_LAST_BRIDGE_VARIABLE_get(); public static readonly string SWITCH_SIGNAL_BRIDGE_VARIABLE = freeswitchPINVOKE.SWITCH_SIGNAL_BRIDGE_VARIABLE_get(); public static readonly string SWITCH_SIGNAL_BOND_VARIABLE = freeswitchPINVOKE.SWITCH_SIGNAL_BOND_VARIABLE_get(); + public static readonly string SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE = freeswitchPINVOKE.SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE_get(); public static readonly string SWITCH_ORIGINATOR_VARIABLE = freeswitchPINVOKE.SWITCH_ORIGINATOR_VARIABLE_get(); public static readonly string SWITCH_ORIGINATOR_CODEC_VARIABLE = freeswitchPINVOKE.SWITCH_ORIGINATOR_CODEC_VARIABLE_get(); public static readonly string SWITCH_ORIGINATOR_VIDEO_CODEC_VARIABLE = freeswitchPINVOKE.SWITCH_ORIGINATOR_VIDEO_CODEC_VARIABLE_get(); @@ -6780,6 +6786,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_SIGNAL_BOND_VARIABLE_get")] public static extern string SWITCH_SIGNAL_BOND_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE_get")] + public static extern string SWITCH_ORIGINATE_SIGNAL_BOND_VARIABLE_get(); + [DllImport("mod_managed", EntryPoint="CSharp_SWITCH_ORIGINATOR_VARIABLE_get")] public static extern string SWITCH_ORIGINATOR_VARIABLE_get(); @@ -9094,7 +9103,7 @@ class freeswitchPINVOKE { public static extern uint switch_default_ptime(string jarg1, uint jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_add_registration")] - public static extern int switch_core_add_registration(string jarg1, string jarg2, string jarg3, string jarg4, uint jarg5, string jarg6, string jarg7, string jarg8); + public static extern int switch_core_add_registration(string jarg1, string jarg2, string jarg3, string jarg4, uint jarg5, string jarg6, string jarg7, string jarg8, string jarg9); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_del_registration")] public static extern int switch_core_del_registration(string jarg1, string jarg2, string jarg3); @@ -12705,6 +12714,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_transfer_to_extension")] public static extern void switch_channel_transfer_to_extension(HandleRef jarg1, HandleRef jarg2); + [DllImport("mod_managed", EntryPoint="CSharp_switch_channel_get_partner_uuid")] + public static extern string switch_channel_get_partner_uuid(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_switch_buffer_create")] public static extern int switch_buffer_create(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3); From 07bc7ba7639726985daa571ea20490c7d3dc75ce Mon Sep 17 00:00:00 2001 From: Giovanni Maruzzelli Date: Thu, 31 May 2012 07:40:59 +0200 Subject: [PATCH 626/630] gsmopen and skypopen: updated License headers --- src/mod/endpoints/mod_gsmopen/gsmopen.h | 12 +++---- .../mod_gsmopen/gsmopen_protocol.cpp | 36 +++++++++++++++++++ src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp | 11 +++--- src/mod/endpoints/mod_skypopen/mod_skypopen.c | 12 +++---- src/mod/endpoints/mod_skypopen/skypopen.h | 11 +++--- .../mod_skypopen/skypopen_protocol.c | 34 ++++++++++++++++++ 6 files changed, 89 insertions(+), 27 deletions(-) diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen.h b/src/mod/endpoints/mod_gsmopen/gsmopen.h index 2b4c619783..fd56fd4963 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen.h +++ b/src/mod/endpoints/mod_gsmopen/gsmopen.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2012, Anthony Minessale II + * Copyright (C) 2005-2011, Anthony Minessale II * * Version: MPL 1.1 * @@ -23,17 +23,15 @@ * * This module (mod_gsmopen) has been contributed by: * - * Giovanni Maruzzelli (gmaruzz@gmail.com) + * Giovanni Maruzzelli * + * Maintainer: Giovanni Maruzzelli * - * Further Contributors: - * - * - * - * mod_gsmopen.c -- GSM compatible Endpoint Module + * mod_gsmopen.cpp -- GSM Modem compatible Endpoint Module * */ + #define __STDC_LIMIT_MACROS #ifdef WIN32 diff --git a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp index 391dade93a..ffa4e3d014 100644 --- a/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp +++ b/src/mod/endpoints/mod_gsmopen/gsmopen_protocol.cpp @@ -1,3 +1,39 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2011, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * This module (mod_gsmopen) has been contributed by: + * + * Giovanni Maruzzelli + * + * Maintainer: Giovanni Maruzzelli + * + * gsmopen_protocol.cpp -- Low Level Interface for mod_gamopen + * + */ + + + + #include "gsmopen.h" #ifdef WIN32 #include "win_iconv.c" diff --git a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp index f48d299e0a..837d20ed30 100644 --- a/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp +++ b/src/mod/endpoints/mod_gsmopen/mod_gsmopen.cpp @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2012, Anthony Minessale II + * Copyright (C) 2005-2011, Anthony Minessale II * * Version: MPL 1.1 * @@ -23,14 +23,11 @@ * * This module (mod_gsmopen) has been contributed by: * - * Giovanni Maruzzelli (gmaruzz@gmail.com) + * Giovanni Maruzzelli * + * Maintainer: Giovanni Maruzzelli * - * Further Contributors: - * - * - * - * mod_gsmopen.c -- GSM compatible Endpoint Module + * mod_gsmopen.cpp -- GSM Modem compatible Endpoint Module * */ diff --git a/src/mod/endpoints/mod_skypopen/mod_skypopen.c b/src/mod/endpoints/mod_skypopen/mod_skypopen.c index 25539fa81e..ce89211b83 100644 --- a/src/mod/endpoints/mod_skypopen/mod_skypopen.c +++ b/src/mod/endpoints/mod_skypopen/mod_skypopen.c @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2012, Anthony Minessale II + * Copyright (C) 2005-2011, Anthony Minessale II * * Version: MPL 1.1 * @@ -21,19 +21,17 @@ * Portions created by the Initial Developer are Copyright (C) * the Initial Developer. All Rights Reserved. * - * This module (mod_skypopen) has been contributed by: - * - * Giovanni Maruzzelli (gmaruzz@gmail.com) - * - * - * Further Contributors: + * This module (mod_gsmopen) has been contributed by: * + * Giovanni Maruzzelli * + * Maintainer: Giovanni Maruzzelli * * mod_skypopen.c -- Skype compatible Endpoint Module * */ + #include "skypopen.h" #define SKYPE_CHAT_PROTO "skype" diff --git a/src/mod/endpoints/mod_skypopen/skypopen.h b/src/mod/endpoints/mod_skypopen/skypopen.h index d2dd51bd37..864a22c3e4 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen.h +++ b/src/mod/endpoints/mod_skypopen/skypopen.h @@ -1,6 +1,6 @@ /* * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005/2012, Anthony Minessale II + * Copyright (C) 2005-2011, Anthony Minessale II * * Version: MPL 1.1 * @@ -21,18 +21,17 @@ * Portions created by the Initial Developer are Copyright (C) * the Initial Developer. All Rights Reserved. * - * This module (mod_skypopen) has been contributed by: + * This module (mod_gsmopen) has been contributed by: * - * Giovanni Maruzzelli (gmaruzz@gmail.com) - * - * - * Further Contributors: + * Giovanni Maruzzelli * + * Maintainer: Giovanni Maruzzelli * * mod_skypopen.c -- Skype compatible Endpoint Module * */ + #include #include diff --git a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c index 5aa113c3bf..2126955452 100644 --- a/src/mod/endpoints/mod_skypopen/skypopen_protocol.c +++ b/src/mod/endpoints/mod_skypopen/skypopen_protocol.c @@ -1,3 +1,37 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2011, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * This module (mod_gsmopen) has been contributed by: + * + * Giovanni Maruzzelli + * + * Maintainer: Giovanni Maruzzelli + * + * skypopen_protocol.c -- Low Level Interface for mod_skypopen + * + */ + + #include "skypopen.h" #ifdef ASTERISK From be2ec2928214718978551b1419759e6fa13709da Mon Sep 17 00:00:00 2001 From: Christopher Rienzo Date: Thu, 31 May 2012 13:24:24 +0000 Subject: [PATCH 627/630] Add Maintainer to mod_posix_timer, mod_unimrcp, mod_http_cache --- src/mod/applications/mod_http_cache/mod_http_cache.c | 4 +++- src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c | 2 ++ src/mod/timers/mod_posix_timer/mod_posix_timer.c | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_http_cache/mod_http_cache.c b/src/mod/applications/mod_http_cache/mod_http_cache.c index 1e40ce2e15..fb2b4e09a2 100644 --- a/src/mod/applications/mod_http_cache/mod_http_cache.c +++ b/src/mod/applications/mod_http_cache/mod_http_cache.c @@ -23,7 +23,9 @@ * * Contributor(s): * - * Chris Rienzo + * Christopher M. Rienzo + * + * Maintainer: Christopher M. Rienzo * * mod_http_cache.c -- HTTP GET with caching * -- designed for downloading audio files from a webserver for playback diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c index 80fa3f2001..e53964277c 100644 --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c +++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c @@ -28,6 +28,8 @@ * Christopher M. Rienzo * Luke Dashjr (OpenMethods, LLC) * + * Maintainer: Christopher M. Rienzo + * * mod_unimrcp.c -- UniMRCP module (MRCP client) * */ diff --git a/src/mod/timers/mod_posix_timer/mod_posix_timer.c b/src/mod/timers/mod_posix_timer/mod_posix_timer.c index 04d694b5f7..cfb6584701 100644 --- a/src/mod/timers/mod_posix_timer/mod_posix_timer.c +++ b/src/mod/timers/mod_posix_timer/mod_posix_timer.c @@ -22,9 +22,11 @@ * the Initial Developer. All Rights Reserved. * * Contributor(s): - * Chris Rienzo + * Christopher M. Rienzo * Timo Teräs (based on mod_timerfd.c) * + * Maintainer: Christopher M. Rienzo + * * mod_posix_timer.c -- soft timer implemented with POSIX timers (timer_create/timer_settime/timer_getoverrun) * */ From 5be9857af249705b96c1235d778b317cc0b99afa Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 31 May 2012 10:25:49 -0500 Subject: [PATCH 628/630] remove mod_fax. this has been deprecated for quite a while --- src/mod/applications/mod_fax/Makefile.am | 24 - .../applications/mod_fax/mod_fax.2008.vcproj | 299 --- src/mod/applications/mod_fax/mod_fax.c | 1945 ----------------- src/mod/applications/mod_fax/udptl.c | 563 ----- src/mod/applications/mod_fax/udptl.h | 153 -- 5 files changed, 2984 deletions(-) delete mode 100644 src/mod/applications/mod_fax/Makefile.am delete mode 100644 src/mod/applications/mod_fax/mod_fax.2008.vcproj delete mode 100644 src/mod/applications/mod_fax/mod_fax.c delete mode 100644 src/mod/applications/mod_fax/udptl.c delete mode 100644 src/mod/applications/mod_fax/udptl.h diff --git a/src/mod/applications/mod_fax/Makefile.am b/src/mod/applications/mod_fax/Makefile.am deleted file mode 100644 index c71c5b9da5..0000000000 --- a/src/mod/applications/mod_fax/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -include $(top_srcdir)/build/modmake.rulesam -MODNAME=mod_fax - -TIFF_DIR=$(switch_srcdir)/libs/tiff-3.8.2 -TIFF_BUILDDIR=$(switch_builddir)/libs/tiff-3.8.2 -TIFF_LA=$(TIFF_BUILDDIR)/libtiff/libtiff.la - -SPANDSP_DIR=$(switch_srcdir)/libs/spandsp -SPANDSP_BUILDDIR=$(switch_builddir)/libs/spandsp -SPANDSP_LA=$(SPANDSP_BUILDDIR)/src/libspandsp.la - -mod_LTLIBRARIES = mod_fax.la -mod_fax_la_SOURCES = mod_fax.c udptl.c -mod_fax_la_CFLAGS = $(AM_CFLAGS) -I$(SPANDSP_DIR)/src -I$(TIFF_DIR)/libtiff -I$(SPANDSP_BUILDDIR)/src -I$(TIFF_BUILDDIR)/libtiff -I. -mod_fax_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA) $(TIFF_LA) -mod_fax_la_LDFLAGS = -avoid-version -module -no-undefined -shared -ljpeg - -$(SPANDSP_LA): $(TIFF_LA) $(SPANDSP_DIR) $(SPANDSP_DIR)/.update - cd $(SPANDSP_BUILDDIR) && $(MAKE) -j1 - $(TOUCH_TARGET) - -$(TIFF_LA): $(TIFF_DIR) $(TIFF_DIR)/.update - cd $(TIFF_BUILDDIR) && $(MAKE) -j1 - $(TOUCH_TARGET) diff --git a/src/mod/applications/mod_fax/mod_fax.2008.vcproj b/src/mod/applications/mod_fax/mod_fax.2008.vcproj deleted file mode 100644 index dd10ca8a93..0000000000 --- a/src/mod/applications/mod_fax/mod_fax.2008.vcproj +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mod/applications/mod_fax/mod_fax.c b/src/mod/applications/mod_fax/mod_fax.c deleted file mode 100644 index 7eac2520b3..0000000000 --- a/src/mod/applications/mod_fax/mod_fax.c +++ /dev/null @@ -1,1945 +0,0 @@ -/* - * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2005-2012, Anthony Minessale II - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is FreeSWITCH mod_fax. - * - * The Initial Developer of the Original Code is - * Massimo Cetra - * - * Portions created by the Initial Developer are Copyright (C) - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Brian West - * Anthony Minessale II - * Steve Underwood - * Antonio Gallo - * mod_fax.c -- Fax applications provided by SpanDSP - * - */ - -#include -#ifdef WIN32 -#define FAX_INVALID_SOCKET INVALID_HANDLE_VALUE -typedef HANDLE zap_socket_t; -#else -#define FAX_INVALID_SOCKET -1 -typedef int zap_socket_t; -#endif - -#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES -#include -#include - -#include "udptl.h" - -#define LOCAL_FAX_MAX_DATAGRAM 400 -#define MAX_FEC_ENTRIES 4 -#define MAX_FEC_SPAN 4 - -/***************************************************************************** - OUR DEFINES AND STRUCTS -*****************************************************************************/ - -typedef enum { - FUNCTION_TX, - FUNCTION_RX, - FUNCTION_GW -} application_mode_t; - -typedef enum { - T38_MODE, - AUDIO_MODE, - T38_GATEWAY_MODE -} transport_mode_t; - -typedef enum { - T38_MODE_UNKNOWN = 0, - T38_MODE_NEGOTIATED = 1, - T38_MODE_REQUESTED = 2, - T38_MODE_REFUSED = -1, -} t38_mode_t; - -/* The global stuff */ -static struct { - switch_memory_pool_t *pool; - switch_mutex_t *mutex; - - uint32_t total_sessions; - - short int use_ecm; - short int verbose; - short int disable_v17; - short int enable_t38; - short int enable_t38_request; - short int enable_t38_insist; - char ident[20]; - char header[50]; - char *prepend_string; - char *spool; -} globals; - -struct pvt_s { - switch_core_session_t *session; - - application_mode_t app_mode; - - fax_state_t *fax_state; - t38_terminal_state_t *t38_state; - t38_gateway_state_t *t38_gateway_state; - t38_core_state_t *t38_core; - - udptl_state_t *udptl_state; - - char *filename; - char *ident; - char *header; - - int use_ecm; - int disable_v17; - int verbose; - int caller; - - int tx_page_start; - int tx_page_end; - - int done; - - t38_mode_t t38_mode; - - struct pvt_s *next; -}; - -typedef struct pvt_s pvt_t; - -static void launch_timer_thread(void); - -static struct { - pvt_t *head; - switch_mutex_t *mutex; - switch_thread_t *thread; - int thread_running; -} t38_state_list; - -static int add_pvt(pvt_t *pvt) -{ - int r = 0; - uint32_t sanity = 50; - - switch_mutex_lock(t38_state_list.mutex); - if (!t38_state_list.thread_running) { - - launch_timer_thread(); - - while(--sanity && !t38_state_list.thread_running) { - switch_yield(10000); - } - } - switch_mutex_unlock(t38_state_list.mutex); - - if (t38_state_list.thread_running) { - switch_mutex_lock(t38_state_list.mutex); - pvt->next = t38_state_list.head; - t38_state_list.head = pvt; - switch_mutex_unlock(t38_state_list.mutex); - } - - return r; - -} - - -static int del_pvt(pvt_t *del_pvt) -{ - pvt_t *p, *l = NULL; - int r = 0; - - if (!t38_state_list.thread_running) goto end; - - switch_mutex_lock(t38_state_list.mutex); - for (p = t38_state_list.head; p; p = p->next) { - if (p == del_pvt) { - if (l) { - l->next = p->next; - } else { - t38_state_list.head = p->next; - } - p->next = NULL; - r = 1; - goto end; - } - - l = p; - } - - end: - - switch_mutex_unlock(t38_state_list.mutex); - - return r; - -} - -static void *SWITCH_THREAD_FUNC timer_thread_run(switch_thread_t *thread, void *obj) -{ - switch_timer_t timer = { 0 }; - pvt_t *pvt; - int samples = 240; - int ms = 30; - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "timer thread started.\n"); - - if (switch_core_timer_init(&timer, "soft", ms, samples, NULL) != SWITCH_STATUS_SUCCESS) { - return NULL; - } - - t38_state_list.thread_running = 1; - - while(t38_state_list.thread_running) { - - switch_mutex_lock(t38_state_list.mutex); - - if (!t38_state_list.head) { - switch_mutex_unlock(t38_state_list.mutex); - goto end; - } - - for (pvt = t38_state_list.head; pvt; pvt = pvt->next) { - if (pvt->udptl_state) { - t38_terminal_send_timeout(pvt->t38_state, samples); - } - } - - switch_mutex_unlock(t38_state_list.mutex); - - switch_core_timer_next(&timer); - } - - end: - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "timer thread ended.\n"); - - t38_state_list.thread_running = 0; - switch_core_timer_destroy(&timer); - - return NULL; -} - -static void launch_timer_thread(void) -{ - - switch_threadattr_t *thd_attr = NULL; - - switch_threadattr_create(&thd_attr, globals.pool); - switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); - switch_thread_create(&t38_state_list.thread, thd_attr, timer_thread_run, NULL, globals.pool); -} - - -/***************************************************************************** - LOGGING AND HELPER FUNCTIONS -*****************************************************************************/ - -static void counter_increment(void) -{ - switch_mutex_lock(globals.mutex); - globals.total_sessions++; - switch_mutex_unlock(globals.mutex); -} - -static void spanfax_log_message(int level, const char *msg) -{ - int fs_log_level; - - switch (level) { - case SPAN_LOG_NONE: - return; - case SPAN_LOG_ERROR: - case SPAN_LOG_PROTOCOL_ERROR: - fs_log_level = SWITCH_LOG_ERROR; - break; - case SPAN_LOG_WARNING: - case SPAN_LOG_PROTOCOL_WARNING: - fs_log_level = SWITCH_LOG_WARNING; - break; - case SPAN_LOG_FLOW: - case SPAN_LOG_FLOW_2: - case SPAN_LOG_FLOW_3: - default: /* SPAN_LOG_DEBUG, SPAN_LOG_DEBUG_2, SPAN_LOG_DEBUG_3 */ - fs_log_level = SWITCH_LOG_DEBUG; - break; - } - - if (!zstr(msg)) { - switch_log_printf(SWITCH_CHANNEL_LOG, fs_log_level, "%s", msg); - } -} - -/* - * Called at the end of the document - */ -static void phase_e_handler(t30_state_t *s, void *user_data, int result) -{ - t30_stats_t t; - const char *local_ident; - const char *far_ident; - switch_core_session_t *session; - switch_channel_t *channel; - pvt_t *pvt; - char *tmp; - - pvt = (pvt_t *) user_data; - switch_assert(pvt); - - session = pvt->session; - switch_assert(session); - - channel = switch_core_session_get_channel(session); - switch_assert(channel); - - t30_get_transfer_statistics(s, &t); - local_ident = switch_str_nil(t30_get_tx_ident(s)); - far_ident = switch_str_nil(t30_get_rx_ident(s)); - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "==============================================================================\n"); - - if (result == T30_ERR_OK) { - if (pvt->app_mode == FUNCTION_TX) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Fax successfully sent.\n"); - } else if (pvt->app_mode == FUNCTION_RX) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Fax successfully received.\n"); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Fax successfully managed. How ?\n"); - } - switch_channel_set_variable(channel, "fax_success", "1"); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Fax processing not successful - result (%d) %s.\n", result, - t30_completion_code_to_str(result)); - switch_channel_set_variable(channel, "fax_success", "0"); - } - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Remote station id: %s\n", far_ident); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Local station id: %s\n", local_ident); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Pages transferred: %i\n", - pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Total fax pages: %i\n", t.pages_in_file); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Image resolution: %ix%i\n", t.x_resolution, t.y_resolution); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Transfer Rate: %i\n", t.bit_rate); - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "ECM status %s\n", (t.error_correcting_mode) ? "on" : "off"); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "remote country: %s\n", switch_str_nil(t30_get_rx_country(s))); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "remote vendor: %s\n", switch_str_nil(t30_get_rx_vendor(s))); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "remote model: %s\n", switch_str_nil(t30_get_rx_model(s))); - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "==============================================================================\n"); - - /* - Set our channel variables - */ - - tmp = switch_mprintf("%i", result); - if (tmp) { - switch_channel_set_variable(channel, "fax_result_code", tmp); - switch_safe_free(tmp); - } - - switch_channel_set_variable(channel, "fax_result_text", t30_completion_code_to_str(result)); - - switch_channel_set_variable(channel, "fax_ecm_used", (t.error_correcting_mode) ? "on" : "off"); - switch_channel_set_variable(channel, "fax_local_station_id", local_ident); - switch_channel_set_variable(channel, "fax_remote_station_id", far_ident); - - tmp = switch_mprintf("%i", pvt->app_mode == FUNCTION_TX ? t.pages_tx : t.pages_rx); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_transferred_pages", tmp); - switch_safe_free(tmp); - } - - tmp = switch_mprintf("%i", t.pages_in_file); - if (tmp) { - switch_channel_set_variable(channel, "fax_document_total_pages", tmp); - switch_safe_free(tmp); - } - - tmp = switch_mprintf("%ix%i", t.x_resolution, t.y_resolution); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_resolution", tmp); - switch_safe_free(tmp); - } - - tmp = switch_mprintf("%d", t.image_size); - if (tmp) { - switch_channel_set_variable(channel, "fax_image_size", tmp); - switch_safe_free(tmp); - } - - tmp = switch_mprintf("%d", t.bad_rows); - if (tmp) { - switch_channel_set_variable(channel, "fax_bad_rows", tmp); - switch_safe_free(tmp); - } - - tmp = switch_mprintf("%i", t.bit_rate); - if (tmp) { - switch_channel_set_variable(channel, "fax_transfer_rate", tmp); - switch_safe_free(tmp); - } - - /* switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); */ - - pvt->done = 1; - - /* - TODO Fire events - */ -} - -static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uint8_t *buf, int len, int count) -{ - switch_frame_t out_frame = { 0 }; - switch_core_session_t *session; - switch_channel_t *channel; - pvt_t *pvt; - uint8_t pkt[LOCAL_FAX_MAX_DATAGRAM]; - int x; - int r = 0; - - pvt = (pvt_t *) user_data; - session = pvt->session; - channel = switch_core_session_get_channel(session); - - /* we need to build a real packet here and make write_frame.packet and write_frame.packetlen point to it */ - out_frame.flags = SFF_UDPTL_PACKET | SFF_PROXY_PACKET; - out_frame.packet = pkt; - out_frame.packetlen = udptl_build_packet(pvt->udptl_state, pkt, buf, len); - - //switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "WRITE %d udptl bytes\n", out_frame.packetlen); - - for (x = 0; x < count; x++) { - if (switch_core_session_write_frame(session, &out_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { - r = -1; - break; - } - } - - return r; -} - -static switch_status_t spanfax_init(pvt_t *pvt, transport_mode_t trans_mode) -{ - - switch_core_session_t *session; - switch_channel_t *channel; - fax_state_t *fax; - t38_terminal_state_t *t38; - t30_state_t *t30; - - - session = (switch_core_session_t *) pvt->session; - switch_assert(session); - - channel = switch_core_session_get_channel(session); - switch_assert(channel); - - - switch (trans_mode) { - case AUDIO_MODE: - if (pvt->fax_state == NULL) { - pvt->fax_state = (fax_state_t *) switch_core_session_alloc(pvt->session, sizeof(fax_state_t)); - } - if (pvt->fax_state == NULL) { - return SWITCH_STATUS_FALSE; - } - - fax = pvt->fax_state; - t30 = fax_get_t30_state(fax); - - memset(fax, 0, sizeof(fax_state_t)); - if (fax_init(fax, pvt->caller) == NULL) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot initialize my fax structs\n"); - return SWITCH_STATUS_FALSE; - } - - fax_set_transmit_on_idle(fax, TRUE); - - span_log_set_message_handler(&fax->logging, spanfax_log_message); - span_log_set_message_handler(&t30->logging, spanfax_log_message); - - if (pvt->verbose) { - span_log_set_level(&fax->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_level(&t30->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - } - break; - case T38_MODE: - if (pvt->t38_state == NULL) { - pvt->t38_state = (t38_terminal_state_t *) switch_core_session_alloc(pvt->session, sizeof(t38_terminal_state_t)); - } - if (pvt->t38_state == NULL) { - return SWITCH_STATUS_FALSE; - } - if (pvt->udptl_state == NULL) { - pvt->udptl_state = (udptl_state_t *) switch_core_session_alloc(pvt->session, sizeof(udptl_state_t)); - } - if (pvt->udptl_state == NULL) { - t38_terminal_free(pvt->t38_state); - pvt->t38_state = NULL; - return SWITCH_STATUS_FALSE; - } - - /* add to timer thread processing */ - add_pvt(pvt); - - t38 = pvt->t38_state; - t30 = t38_terminal_get_t30_state(t38); - - memset(t38, 0, sizeof(t38_terminal_state_t)); - - if (t38_terminal_init(t38, pvt->caller, t38_tx_packet_handler, pvt) == NULL) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot initialize my T.38 structs\n"); - return SWITCH_STATUS_FALSE; - } - - pvt->t38_core = t38_terminal_get_t38_core_state(pvt->t38_state); - - if (udptl_init(pvt->udptl_state, UDPTL_ERROR_CORRECTION_REDUNDANCY, 3, 3, - (udptl_rx_packet_handler_t *) t38_core_rx_ifp_packet, (void *) pvt->t38_core) == NULL) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot initialize my UDPTL structs\n"); - return SWITCH_STATUS_FALSE; - } - - span_log_set_message_handler(&t38->logging, spanfax_log_message); - span_log_set_message_handler(&t30->logging, spanfax_log_message); - - if (pvt->verbose) { - span_log_set_level(&t38->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_level(&t30->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - } - break; - case T38_GATEWAY_MODE: - if (pvt->t38_gateway_state == NULL) { - pvt->t38_gateway_state = (t38_gateway_state_t *) switch_core_session_alloc(pvt->session, sizeof(t38_gateway_state_t)); - } - - if (pvt->udptl_state == NULL) { - pvt->udptl_state = (udptl_state_t *) switch_core_session_alloc(pvt->session, sizeof(udptl_state_t)); - } - - if (t38_gateway_init(pvt->t38_gateway_state, t38_tx_packet_handler, pvt) == NULL) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot initialize my T.38 structs\n"); - t38_gateway_free(pvt->t38_gateway_state); - pvt->t38_gateway_state = NULL; - - return SWITCH_STATUS_FALSE; - } - - pvt->t38_core = t38_gateway_get_t38_core_state(pvt->t38_gateway_state); - - if (udptl_init(pvt->udptl_state, UDPTL_ERROR_CORRECTION_REDUNDANCY, 3, 3, - (udptl_rx_packet_handler_t *) t38_core_rx_ifp_packet, (void *) pvt->t38_core) == NULL) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot initialize my UDPTL structs\n"); - t38_gateway_free(pvt->t38_gateway_state); - udptl_release(pvt->udptl_state); - pvt->udptl_state = NULL; - return SWITCH_STATUS_FALSE; - } - - t38_gateway_set_transmit_on_idle(pvt->t38_gateway_state, TRUE); - - if (switch_true(switch_channel_get_variable(channel, "fax_v17_disabled"))) { - t38_gateway_set_supported_modems(pvt->t38_gateway_state, T30_SUPPORT_V29 | T30_SUPPORT_V27TER); - } else { - t38_gateway_set_supported_modems(pvt->t38_gateway_state, T30_SUPPORT_V17 | T30_SUPPORT_V29 | T30_SUPPORT_V27TER); - } - - t38_gateway_set_ecm_capability(pvt->t38_gateway_state, pvt->use_ecm); - switch_channel_set_variable(channel, "fax_ecm_requested", pvt->use_ecm ? "true" : "false"); - - if (switch_true(switch_channel_get_variable(channel, "FAX_DISABLE_ECM"))) { - t38_gateway_set_ecm_capability(pvt->t38_gateway_state, FALSE); - } else { - t38_gateway_set_ecm_capability(pvt->t38_gateway_state, TRUE); - } - - - span_log_set_message_handler(&pvt->t38_gateway_state->logging, spanfax_log_message); - span_log_set_message_handler(&pvt->t38_core->logging, spanfax_log_message); - - if (pvt->verbose) { - span_log_set_level(&pvt->t38_gateway_state->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - span_log_set_level(&pvt->t38_core->logging, SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW); - } - - t38_set_t38_version(pvt->t38_core, 0); - t38_gateway_set_ecm_capability(pvt->t38_gateway_state, 1); - - return SWITCH_STATUS_SUCCESS; - - default: - assert(0); /* What? */ - return SWITCH_STATUS_SUCCESS; - } /* Switch trans mode */ - - /* All the things which are common to audio and T.38 FAX setup */ - t30_set_tx_ident(t30, pvt->ident); - t30_set_tx_page_header_info(t30, pvt->header); - - t30_set_phase_e_handler(t30, phase_e_handler, pvt); - - t30_set_supported_image_sizes(t30, - T30_SUPPORT_US_LETTER_LENGTH | T30_SUPPORT_US_LEGAL_LENGTH | T30_SUPPORT_UNLIMITED_LENGTH - | T30_SUPPORT_215MM_WIDTH | T30_SUPPORT_255MM_WIDTH | T30_SUPPORT_303MM_WIDTH); - t30_set_supported_resolutions(t30, - T30_SUPPORT_STANDARD_RESOLUTION | T30_SUPPORT_FINE_RESOLUTION | T30_SUPPORT_SUPERFINE_RESOLUTION - | T30_SUPPORT_R8_RESOLUTION | T30_SUPPORT_R16_RESOLUTION); - - if (pvt->disable_v17) { - t30_set_supported_modems(t30, T30_SUPPORT_V29 | T30_SUPPORT_V27TER); - switch_channel_set_variable(channel, "fax_v17_disabled", "1"); - } else { - t30_set_supported_modems(t30, T30_SUPPORT_V29 | T30_SUPPORT_V27TER | T30_SUPPORT_V17); - switch_channel_set_variable(channel, "fax_v17_disabled", "0"); - } - - if (pvt->use_ecm) { - t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); - t30_set_ecm_capability(t30, TRUE); - switch_channel_set_variable(channel, "fax_ecm_requested", "1"); - } else { - t30_set_supported_compressions(t30, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION); - switch_channel_set_variable(channel, "fax_ecm_requested", "0"); - } - - if (pvt->app_mode == FUNCTION_TX) { - t30_set_tx_file(t30, pvt->filename, pvt->tx_page_start, pvt->tx_page_end); - } else { - t30_set_rx_file(t30, pvt->filename, -1); - } - switch_channel_set_variable(channel, "fax_filename", pvt->filename); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t spanfax_destroy(pvt_t *pvt) -{ - int terminate; - t30_state_t *t30; - - if (!pvt) return SWITCH_STATUS_FALSE; - - if (pvt->fax_state) { - if (pvt->t38_state) { - terminate = 0; - } else { - terminate = 1; - } - - t30 = fax_get_t30_state(pvt->fax_state); - if (terminate && t30) { - t30_terminate(t30); - } - - fax_release(pvt->fax_state); - } - - if (pvt->t38_state) { - - /* remove from timer thread processing */ - del_pvt(pvt); - - if (pvt->t38_state) { - terminate = 1; - } else { - terminate = 0; - } - - t30 = t38_terminal_get_t30_state(pvt->t38_state); - - if (terminate && t30) { - t30_terminate(t30); - } - - t38_terminal_release(pvt->t38_state); - } - - if (pvt->t38_gateway_state) { - t38_gateway_release(pvt->t38_gateway_state); - } - - if (pvt->udptl_state) { - udptl_release(pvt->udptl_state); - } - return SWITCH_STATUS_SUCCESS; -} - -static t38_mode_t configure_t38(pvt_t *pvt) -{ - switch_core_session_t *session = pvt->session; - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_t38_options_t *t38_options = switch_channel_get_private(channel, "t38_options"); - int method = 2; - - if (!t38_options || !pvt || !pvt->t38_core) { - pvt->t38_mode = T38_MODE_REFUSED; - return pvt->t38_mode; - } - - t38_set_t38_version(pvt->t38_core, t38_options->T38FaxVersion); - t38_set_max_buffer_size(pvt->t38_core, t38_options->T38FaxMaxBuffer); - t38_set_fastest_image_data_rate(pvt->t38_core, t38_options->T38MaxBitRate); - t38_set_fill_bit_removal(pvt->t38_core, t38_options->T38FaxFillBitRemoval); - t38_set_mmr_transcoding(pvt->t38_core, t38_options->T38FaxTranscodingMMR); - t38_set_jbig_transcoding(pvt->t38_core, t38_options->T38FaxTranscodingJBIG); - t38_set_max_datagram_size(pvt->t38_core, t38_options->T38FaxMaxDatagram); - - if (t38_options->T38FaxRateManagement) { - if (!strcasecmp(t38_options->T38FaxRateManagement, "transferredTCF")) { - method = 2; - } else { - method = 1; - } - } - - t38_set_data_rate_management_method(pvt->t38_core, method); - - - //t38_set_data_transport_protocol(pvt->t38_core, int data_transport_protocol); - //t38_set_redundancy_control(pvt->t38_core, int category, int setting); - - return pvt->t38_mode; -} - -static t38_mode_t negotiate_t38(pvt_t *pvt) -{ - switch_core_session_t *session = pvt->session; - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_core_session_message_t msg = { 0 }; - switch_t38_options_t *t38_options = switch_channel_get_private(channel, "t38_options"); - int enabled = 0, insist = 0; - const char *v; - - pvt->t38_mode = T38_MODE_REFUSED; - - if (pvt->app_mode == FUNCTION_GW) { - enabled = 1; - } else if ((v = switch_channel_get_variable(channel, "fax_enable_t38"))) { - enabled = switch_true(v); - } else { - enabled = globals.enable_t38; - } - - if (!(enabled && t38_options)) { - /* if there is no t38_options the endpoint will refuse the transition */ - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s NO T38 options detected.\n", switch_channel_get_name(channel)); - switch_channel_set_private(channel, "t38_options", NULL); - } else { - pvt->t38_mode = T38_MODE_NEGOTIATED; - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxVersion = %d\n", t38_options->T38FaxVersion); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38MaxBitRate = %d\n", t38_options->T38MaxBitRate); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxFillBitRemoval = %d\n", t38_options->T38FaxFillBitRemoval); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxTranscodingMMR = %d\n", t38_options->T38FaxTranscodingMMR); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxTranscodingJBIG = %d\n", t38_options->T38FaxTranscodingJBIG); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxRateManagement = '%s'\n", t38_options->T38FaxRateManagement); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxMaxBuffer = %d\n", t38_options->T38FaxMaxBuffer); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxMaxDatagram = %d\n", t38_options->T38FaxMaxDatagram); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38FaxUdpEC = '%s'\n", t38_options->T38FaxUdpEC); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "T38VendorInfo = '%s'\n", switch_str_nil(t38_options->T38VendorInfo)); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "ip = '%s'\n", t38_options->remote_ip ? t38_options->remote_ip : "Not specified"); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "port = %d\n", t38_options->remote_port); - - /* Time to practice our negotiating skills, by editing the t38_options */ - - if (t38_options->T38FaxVersion > 3) { - t38_options->T38FaxVersion = 3; - } - t38_options->T38MaxBitRate = (pvt->disable_v17) ? 9600 : 14400; - t38_options->T38FaxFillBitRemoval = 1; - t38_options->T38FaxTranscodingMMR = 0; - t38_options->T38FaxTranscodingJBIG = 0; - t38_options->T38FaxRateManagement = "transferredTCF"; - t38_options->T38FaxMaxBuffer = 2000; - t38_options->T38FaxMaxDatagram = LOCAL_FAX_MAX_DATAGRAM; - if (strcasecmp(t38_options->T38FaxUdpEC, "t38UDPRedundancy") == 0 - || - strcasecmp(t38_options->T38FaxUdpEC, "t38UDPFEC") == 0) { - t38_options->T38FaxUdpEC = "t38UDPRedundancy"; - } else { - t38_options->T38FaxUdpEC = NULL; - } - t38_options->T38VendorInfo = "0 0 0"; - } - - if ((v = switch_channel_get_variable(channel, "fax_enable_t38_insist"))) { - insist = switch_true(v); - } else { - insist = globals.enable_t38_insist; - } - - /* This will send the options back in a response */ - msg.from = __FILE__; - msg.message_id = SWITCH_MESSAGE_INDICATE_T38_DESCRIPTION; - msg.numeric_arg = insist; - switch_core_session_receive_message(session, &msg); - - return pvt->t38_mode; -} - - - -static t38_mode_t request_t38(pvt_t *pvt) -{ - switch_core_session_t *session = pvt->session; - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_core_session_message_t msg = { 0 }; - switch_t38_options_t *t38_options = NULL; - int enabled = 0, insist = 0; - const char *v; - - pvt->t38_mode = T38_MODE_UNKNOWN; - - if (pvt->app_mode == FUNCTION_GW) { - enabled = 1; - } else if ((v = switch_channel_get_variable(channel, "fax_enable_t38"))) { - enabled = switch_true(v); - } else { - enabled = globals.enable_t38; - } - - if (enabled) { - if ((v = switch_channel_get_variable(channel, "fax_enable_t38_request"))) { - enabled = switch_true(v); - } else { - enabled = globals.enable_t38_request; - } - } - - - if ((v = switch_channel_get_variable(channel, "fax_enable_t38_insist"))) { - insist = switch_true(v); - } else { - insist = globals.enable_t38_insist; - } - - if (enabled) { - t38_options = switch_core_session_alloc(session, sizeof(*t38_options)); - - t38_options->T38MaxBitRate = (pvt->disable_v17) ? 9600 : 14400; - t38_options->T38FaxVersion = 0; - t38_options->T38FaxFillBitRemoval = 1; - t38_options->T38FaxTranscodingMMR = 0; - t38_options->T38FaxTranscodingJBIG = 0; - t38_options->T38FaxRateManagement = "transferredTCF"; - t38_options->T38FaxMaxBuffer = 2000; - t38_options->T38FaxMaxDatagram = LOCAL_FAX_MAX_DATAGRAM; - t38_options->T38FaxUdpEC = "t38UDPRedundancy"; - t38_options->T38VendorInfo = "0 0 0"; - - switch_channel_set_private(channel, "t38_options", t38_options); - pvt->t38_mode = T38_MODE_REQUESTED; - - /* This will send a request for t.38 mode */ - msg.from = __FILE__; - msg.message_id = SWITCH_MESSAGE_INDICATE_REQUEST_IMAGE_MEDIA; - msg.numeric_arg = insist; - switch_core_session_receive_message(session, &msg); - } - - return pvt->t38_mode; -} - -/***************************************************************************** - MAIN FAX PROCESSING -*****************************************************************************/ - -static pvt_t *pvt_init(switch_core_session_t *session, application_mode_t app_mode) -{ - switch_channel_t *channel; - pvt_t *pvt = NULL; - const char *tmp; - - /* Make sure we have a valid channel when starting the FAX application */ - channel = switch_core_session_get_channel(session); - switch_assert(channel != NULL); - - if (!switch_channel_media_ready(channel)) { - switch_channel_answer(channel); - } - - /* Allocate our structs */ - pvt = switch_core_session_alloc(session, sizeof(pvt_t)); - pvt->session = session; - - pvt->app_mode = app_mode; - - pvt->tx_page_start = -1; - pvt->tx_page_end = -1; - - - switch(pvt->app_mode) { - - case FUNCTION_TX: - pvt->caller = 1; - break; - case FUNCTION_RX: - pvt->caller = 0; - break; - case FUNCTION_GW: - break; - } - - /* Retrieving our settings from the channel variables */ - - if ((tmp = switch_channel_get_variable(channel, "fax_use_ecm"))) { - pvt->use_ecm = switch_true(tmp); - } else { - pvt->use_ecm = globals.use_ecm; - } - - if ((tmp = switch_channel_get_variable(channel, "fax_disable_v17"))) { - pvt->disable_v17 = switch_true(tmp); - } else { - pvt->disable_v17 = globals.disable_v17; - } - - if ((tmp = switch_channel_get_variable(channel, "fax_verbose"))) { - pvt->verbose = switch_true(tmp); - } else { - pvt->verbose = globals.verbose; - } - - if ((tmp = switch_channel_get_variable(channel, "fax_force_caller"))) { - if (switch_true(tmp)) { - pvt->caller = 1; - } else { - pvt->caller = 0; - } - } - - if ((tmp = switch_channel_get_variable(channel, "fax_ident"))) { - pvt->ident = switch_core_session_strdup(session, tmp); - } else { - pvt->ident = switch_core_session_strdup(session, globals.ident); - } - - if ((tmp = switch_channel_get_variable(channel, "fax_header"))) { - pvt->header = switch_core_session_strdup(session, tmp); - } else { - pvt->header = switch_core_session_strdup(session, globals.header); - } - - if (pvt->app_mode == FUNCTION_TX) { - if ((tmp = switch_channel_get_variable(channel, "fax_start_page"))) { - pvt->tx_page_start = atoi(tmp); - } - - if ((tmp = switch_channel_get_variable(channel, "fax_end_page"))) { - pvt->tx_page_end = atoi(tmp); - } - - if (pvt->tx_page_end < -1) { - pvt->tx_page_end = -1; - } - - if (pvt->tx_page_start < -1) { - pvt->tx_page_start = -1; - } - - if ((pvt->tx_page_end < pvt->tx_page_start) && (pvt->tx_page_end != -1)) { - pvt->tx_page_end = pvt->tx_page_start; - } - } - - return pvt; -} - -void process_fax(switch_core_session_t *session, const char *data, application_mode_t app_mode) -{ - pvt_t *pvt; - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_codec_t read_codec = { 0 }; - switch_codec_t write_codec = { 0 }; - switch_frame_t *read_frame = { 0 }; - switch_frame_t write_frame = { 0 }; - switch_codec_implementation_t read_impl = { 0 }; - int16_t *buf = NULL; - - switch_core_session_get_read_impl(session, &read_impl); - - counter_increment(); - - - pvt = pvt_init(session, app_mode); - - - buf = switch_core_session_alloc(session, SWITCH_RECOMMENDED_BUFFER_SIZE); - - if (!zstr(data)) { - pvt->filename = switch_core_session_strdup(session, data); - if (pvt->app_mode == FUNCTION_TX) { - if ((switch_file_exists(pvt->filename, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot send inexistant fax file [%s]\n", - switch_str_nil(pvt->filename)); - goto done; - } - } - } else { - if (pvt->app_mode == FUNCTION_TX) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Fax TX filename not set.\n"); - goto done; - } else if (pvt->app_mode == FUNCTION_RX) { - char *fname; - const char *prefix; - switch_time_t time; - - time = switch_time_now(); - - if (!(prefix = switch_channel_get_variable(channel, "fax_prefix"))) { - prefix = globals.prepend_string; - } - - fname = switch_mprintf("%s/%s-%ld-%ld.tif", globals.spool, prefix, globals.total_sessions, time); - if (fname) { - pvt->filename = switch_core_session_strdup(session, fname); - switch_safe_free(fname); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot automatically set fax RX destination file\n"); - goto done; - } - } else { - assert(0); /* UH ?? */ - } - } - - /* - *** Initialize the SpanDSP elements *** - - Note: we could analyze if a fax was already detected in previous stages - and if so, when T.38 will be supported, send a reinvite in T38_MODE, - bypassing AUDIO_MODE. - */ - - if ((spanfax_init(pvt, AUDIO_MODE) != SWITCH_STATUS_SUCCESS)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Cannot initialize Fax engine\n"); - return; - } - - /* - Note: Disable echocan on the channel, remember to call app "disable_ec" in the dialplan - before invoking fax applications - */ - - /* - Note: we are disabling the Jitterbuffer, here, before we answer. - If you have set it to something else and the channel is pre-answered, - it will have no effect. Make sure that if you want more reliable - faxes, it is disabled. - */ - switch_channel_set_variable(channel, "jitterbuffer_msec", "0"); - - - /* We store the original channel codec before switching both - * legs of the calls to a linear 16 bit codec that is the one - * used internally by spandsp and FS will do the transcoding - * from G.711 or any other original codec - */ - if (switch_core_codec_init(&read_codec, - "L16", - NULL, - read_impl.samples_per_second, - read_impl.microseconds_per_packet / 1000, - 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, - NULL, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Raw read codec activation Success L16 %u\n", - read_codec.implementation->microseconds_per_packet); - switch_core_session_set_read_codec(session, &read_codec); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Raw read codec activation Failed L16\n"); - goto done; - } - - if (switch_core_codec_init(&write_codec, - "L16", - NULL, - read_impl.samples_per_second, - read_impl.microseconds_per_packet / 1000, - 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, - NULL, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Raw write codec activation Success L16\n"); - write_frame.codec = &write_codec; - write_frame.data = buf; - write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE; - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Raw write codec activation Failed L16\n"); - goto done; - } - - switch_ivr_sleep(session, 250, SWITCH_TRUE, NULL); - - - /* If you have the means, I highly recommend picking one up. ...*/ - request_t38(pvt); - - - while (switch_channel_ready(channel)) { - int tx = 0; - switch_status_t status; - - /* - if we are in T.38 mode, we should: 1- initialize the ptv->t38_state stuff, if not done - and then set some callbacks when reading frames. - The only thing we need, then, in this loop, is: - - read a frame without blocking - - eventually feed that frame in spandsp, - - call t38_terminal_send_timeout(), sleep for a while - - The T.38 stuff can be placed here (and the audio stuff can be skipped) - */ - - /* read new audio frame from the channel */ - status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); - - if (!SWITCH_READ_ACCEPTABLE(status) || pvt->done) { - /* Our duty is over */ - goto done; - } - - switch (pvt->t38_mode) { - case T38_MODE_REQUESTED: - { - if (switch_channel_test_app_flag_key("T38", channel, CF_APP_T38)) { - switch_core_session_message_t msg = { 0 }; - pvt->t38_mode = T38_MODE_NEGOTIATED; - spanfax_init(pvt, T38_MODE); - configure_t38(pvt); - - /* This will change the rtp stack to udptl mode */ - msg.from = __FILE__; - msg.message_id = SWITCH_MESSAGE_INDICATE_UDPTL_MODE; - switch_core_session_receive_message(session, &msg); - } - continue; - } - break; - case T38_MODE_UNKNOWN: - { - if (switch_channel_test_app_flag_key("T38", channel, CF_APP_T38)) { - if (negotiate_t38(pvt) == T38_MODE_NEGOTIATED) { - /* is is safe to call this again, it was already called above in AUDIO_MODE */ - /* but this is the only way to set up the t38 stuff */ - spanfax_init(pvt, T38_MODE); - continue; - } - } - } - break; - case T38_MODE_NEGOTIATED: - { - /* do what we need to do when we are in t38 mode */ - if (switch_test_flag(read_frame, SFF_CNG)) { - /* dunno what to do, most likely you will not get too many of these since we turn off the timer in udptl mode */ - continue; - } - - if (switch_test_flag(read_frame, SFF_UDPTL_PACKET)) { - /* now we know we can cast frame->packet to a udptl structure */ - //switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "READ %d udptl bytes\n", read_frame->packetlen); - - udptl_rx_packet(pvt->udptl_state, read_frame->packet, read_frame->packetlen); - - - } - } - continue; - default: - break; - } - - /* Skip CNG frames (auto-generated by FreeSWITCH, usually) */ - if (switch_test_flag(read_frame, SFF_CNG)) { - /* We have no real signal data for the FAX software, but we have a space in time if we have a CNG indication. - Do a fill-in operation in the FAX machine, to keep things rolling along. */ - if (fax_rx_fillin(pvt->fax_state, read_frame->samples)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "fax_rx_fillin reported an error\n"); - goto done; - } - } else { - /* Pass the new incoming audio frame to the fax_rx function */ - if (fax_rx(pvt->fax_state, (int16_t *) read_frame->data, read_frame->samples)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "fax_rx reported an error\n"); - goto done; - } - } - - if ((tx = fax_tx(pvt->fax_state, buf, write_codec.implementation->samples_per_packet)) < 0) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "fax_tx reported an error\n"); - goto done; - } - - if (!tx) { - /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "No audio samples to send\n"); */ - continue; - } else { - /* Set our write_frame data */ - write_frame.datalen = tx * sizeof(int16_t); - write_frame.samples = tx; - } - - if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { - goto done; - } - - } - - done: - /* Destroy the SpanDSP structures */ - spanfax_destroy(pvt); - - /* restore the original codecs over the channel */ - - switch_core_session_set_read_codec(session, NULL); - - if (switch_core_codec_ready(&read_codec)) { - switch_core_codec_destroy(&read_codec); - } - - if (switch_core_codec_ready(&write_codec)) { - switch_core_codec_destroy(&write_codec); - } -} - -/* ************************************************************************** - CONFIGURATION - ************************************************************************* */ - -void load_configuration(switch_bool_t reload) -{ - switch_xml_t xml = NULL, x_lists = NULL, x_list = NULL, cfg = NULL; - - if ((xml = switch_xml_open_cfg("fax.conf", &cfg, NULL))) { - if ((x_lists = switch_xml_child(cfg, "settings"))) { - for (x_list = switch_xml_child(x_lists, "param"); x_list; x_list = x_list->next) { - const char *name = switch_xml_attr(x_list, "name"); - const char *value = switch_xml_attr(x_list, "value"); - - if (zstr(name)) { - continue; - } - - if (zstr(value)) { - continue; - } - - if (!strcmp(name, "use-ecm")) { - if (switch_true(value)) - globals.use_ecm = 1; - else - globals.use_ecm = 0; - } else if (!strcmp(name, "verbose")) { - if (switch_true(value)) - globals.verbose = 1; - else - globals.verbose = 0; - } else if (!strcmp(name, "disable-v17")) { - if (switch_true(value)) - globals.disable_v17 = 1; - else - globals.disable_v17 = 0; - } else if (!strcmp(name, "enable-t38")) { - if (switch_true(value)) { - globals.enable_t38= 1; - } else { - globals.enable_t38 = 0; - } - } else if (!strcmp(name, "enable-t38-request")) { - if (switch_true(value)) { - globals.enable_t38_request = 1; - } else { - globals.enable_t38_request = 0; - } - } else if (!strcmp(name, "ident")) { - strncpy(globals.ident, value, sizeof(globals.ident) - 1); - } else if (!strcmp(name, "header")) { - strncpy(globals.header, value, sizeof(globals.header) - 1); - } else if (!strcmp(name, "spool-dir")) { - globals.spool = switch_core_strdup(globals.pool, value); - } else if (!strcmp(name, "file-prefix")) { - globals.prepend_string = switch_core_strdup(globals.pool, value); - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unknown parameter %s\n", name); - } - - } - } - - switch_xml_free(xml); - } -} - -static void event_handler(switch_event_t *event) -{ - load_configuration(1); -} - - - - - - -typedef struct { - switch_core_session_t *session; - dtmf_rx_state_t *dtmf_detect; -} switch_inband_dtmf_t; - -static switch_bool_t inband_dtmf_callback(switch_media_bug_t *bug, void *user_data, switch_abc_type_t type) -{ - switch_inband_dtmf_t *pvt = (switch_inband_dtmf_t *) user_data; - switch_frame_t *frame = NULL; - char digit_str[80]; - switch_channel_t *channel = switch_core_session_get_channel(pvt->session); - - switch (type) { - case SWITCH_ABC_TYPE_INIT: - pvt->dtmf_detect = dtmf_rx_init(NULL, NULL, NULL); - break; - case SWITCH_ABC_TYPE_CLOSE: - if (pvt->dtmf_detect) { - dtmf_rx_free(pvt->dtmf_detect); - } - break; - case SWITCH_ABC_TYPE_READ_REPLACE: - if ((frame = switch_core_media_bug_get_read_replace_frame(bug))) { - dtmf_rx(pvt->dtmf_detect, frame->data, frame->samples); - dtmf_rx_get(pvt->dtmf_detect, digit_str, sizeof(digit_str)); - if (digit_str[0]) { - char *p = digit_str; - while (p && *p) { - switch_dtmf_t dtmf = {0}; - dtmf.digit = *p; - dtmf.duration = switch_core_default_dtmf_duration(0); - switch_channel_queue_dtmf(channel, &dtmf); - p++; - } - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(switch_core_media_bug_get_session(bug)), SWITCH_LOG_DEBUG, "DTMF DETECTED: [%s]\n", - digit_str); - } - switch_core_media_bug_set_read_replace_frame(bug, frame); - } - break; - case SWITCH_ABC_TYPE_WRITE: - default: - break; - } - - return SWITCH_TRUE; -} - -switch_status_t spandsp_stop_inband_dtmf_session(switch_core_session_t *session) -{ - switch_media_bug_t *bug; - switch_channel_t *channel = switch_core_session_get_channel(session); - - if ((bug = switch_channel_get_private(channel, "dtmf"))) { - switch_channel_set_private(channel, "dtmf", NULL); - switch_core_media_bug_remove(session, &bug); - return SWITCH_STATUS_SUCCESS; - } - return SWITCH_STATUS_FALSE; -} - -switch_status_t spandsp_inband_dtmf_session(switch_core_session_t *session) -{ - switch_channel_t *channel = switch_core_session_get_channel(session); - switch_media_bug_t *bug; - switch_status_t status; - switch_inband_dtmf_t *pvt; - switch_codec_implementation_t read_impl = { 0 }; - - switch_core_session_get_read_impl(session, &read_impl); - - if (!(pvt = switch_core_session_alloc(session, sizeof(*pvt)))) { - return SWITCH_STATUS_MEMERR; - } - - - pvt->session = session; - - - if (switch_channel_pre_answer(channel) != SWITCH_STATUS_SUCCESS) { - return SWITCH_STATUS_FALSE; - } - - if ((status = switch_core_media_bug_add(session, "spandsp_dtmf_detect", NULL, - inband_dtmf_callback, pvt, 0, SMBF_READ_REPLACE, &bug)) != SWITCH_STATUS_SUCCESS) { - return status; - } - - switch_channel_set_private(channel, "dtmf", bug); - - return SWITCH_STATUS_SUCCESS; -} - -/* ************************************************************************** - FREESWITCH MODULE DEFINITIONS - ************************************************************************* */ - -#define SPANFAX_RX_USAGE "" -#define SPANFAX_TX_USAGE "" - -SWITCH_MODULE_LOAD_FUNCTION(mod_fax_init); -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_fax_shutdown); -SWITCH_MODULE_DEFINITION(mod_fax, mod_fax_init, mod_fax_shutdown, NULL); - -static switch_event_node_t *NODE = NULL; - -SWITCH_STANDARD_APP(spanfax_tx_function) -{ - process_fax(session, data, FUNCTION_TX); -} - -SWITCH_STANDARD_APP(spanfax_rx_function) -{ - process_fax(session, data, FUNCTION_RX); -} - - -SWITCH_STANDARD_APP(dtmf_session_function) -{ - spandsp_inband_dtmf_session(session); -} - -SWITCH_STANDARD_APP(stop_dtmf_session_function) -{ - spandsp_stop_inband_dtmf_session(session); -} - -static const switch_state_handler_table_t t38_gateway_state_handlers; - -static switch_status_t t38_gateway_on_soft_execute(switch_core_session_t *session) -{ - switch_core_session_t *other_session; - - switch_channel_t *other_channel, *channel = switch_core_session_get_channel(session); - pvt_t *pvt; - const char *peer_uuid = switch_channel_get_variable(channel, "t38_peer"); - switch_core_session_message_t msg = { 0 }; - switch_status_t status; - switch_frame_t *read_frame = { 0 }; - - if (!(other_session = switch_core_session_locate(peer_uuid))) { - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Cannot locate channel with uuid %s", - switch_channel_get_name(channel), peer_uuid); - goto end; - } - - other_channel = switch_core_session_get_channel(other_session); - - pvt = pvt_init(session, FUNCTION_GW); - request_t38(pvt); - - msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE; - msg.from = __FILE__; - msg.string_arg = peer_uuid; - switch_core_session_receive_message(session, &msg); - - while (switch_channel_ready(channel) && switch_channel_up(other_channel) && !switch_channel_test_app_flag_key("T38", channel, CF_APP_T38)) { - status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); - - if (!SWITCH_READ_ACCEPTABLE(status) || pvt->done) { - /* Our duty is over */ - goto end_unlock; - } - - if (switch_test_flag(read_frame, SFF_CNG)) { - continue; - } - - if (switch_core_session_write_frame(other_session, read_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { - goto end_unlock; - } - } - - if (!(switch_channel_ready(channel) && switch_channel_up(other_channel))) { - goto end_unlock; - } - - if (!switch_channel_test_app_flag_key("T38", channel, CF_APP_T38)) { - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Could not negotiate T38\n", switch_channel_get_name(channel)); - goto end_unlock; - } - - if (pvt->t38_mode == T38_MODE_REQUESTED) { - spanfax_init(pvt, T38_GATEWAY_MODE); - configure_t38(pvt); - pvt->t38_mode = T38_MODE_NEGOTIATED; - } else { - if (negotiate_t38(pvt) != T38_MODE_NEGOTIATED) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Could not negotiate T38\n", switch_channel_get_name(channel)); - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - goto end_unlock; - } - - spanfax_init(pvt, T38_GATEWAY_MODE); - } - - /* This will change the rtp stack to udptl mode */ - msg.from = __FILE__; - msg.message_id = SWITCH_MESSAGE_INDICATE_UDPTL_MODE; - switch_core_session_receive_message(session, &msg); - - - /* wake up the audio side */ - switch_channel_set_private(channel, "_t38_pvt", pvt); - switch_channel_set_app_flag_key("T38", other_channel, CF_APP_T38); - - - while (switch_channel_ready(channel) && switch_channel_up(other_channel)) { - - status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); - - if (!SWITCH_READ_ACCEPTABLE(status) || pvt->done) { - /* Our duty is over */ - goto end_unlock; - } - - if (switch_test_flag(read_frame, SFF_CNG)) { - continue; - } - - if (switch_test_flag(read_frame, SFF_UDPTL_PACKET)) { - udptl_rx_packet(pvt->udptl_state, read_frame->packet, read_frame->packetlen); - } - } - - end_unlock: - - - msg.message_id = SWITCH_MESSAGE_INDICATE_UNBRIDGE; - msg.from = __FILE__; - msg.string_arg = peer_uuid; - switch_core_session_receive_message(session, &msg); - - switch_channel_hangup(other_channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(other_session); - - end: - - switch_channel_clear_state_handler(channel, &t38_gateway_state_handlers); - switch_channel_set_variable(channel, "t38_peer", NULL); - - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t t38_gateway_on_consume_media(switch_core_session_t *session) -{ - switch_core_session_t *other_session; - switch_channel_t *other_channel, *channel = switch_core_session_get_channel(session); - const char *peer_uuid = switch_channel_get_variable(channel, "t38_peer"); - pvt_t *pvt = NULL; - switch_codec_t read_codec = { 0 }; - switch_codec_t write_codec = { 0 }; - switch_frame_t *read_frame = { 0 }; - switch_frame_t write_frame = { 0 }; - switch_codec_implementation_t read_impl = { 0 }; - int16_t *buf = NULL; - switch_status_t status; - switch_size_t tx; - const char *t38_trace = switch_channel_get_variable(channel, "t38_trace"); - char *trace_read, *trace_write; - zap_socket_t read_fd = FAX_INVALID_SOCKET, write_fd = FAX_INVALID_SOCKET; - switch_core_session_message_t msg = { 0 }; - switch_event_t *event; - - switch_core_session_get_read_impl(session, &read_impl); - - buf = switch_core_session_alloc(session, SWITCH_RECOMMENDED_BUFFER_SIZE); - - if (!(other_session = switch_core_session_locate(peer_uuid))) { - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - goto end; - } - - other_channel = switch_core_session_get_channel(other_session); - - msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE; - msg.from = __FILE__; - msg.string_arg = peer_uuid; - switch_core_session_receive_message(session, &msg); - - if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_BRIDGE) == SWITCH_STATUS_SUCCESS) { - switch_channel_event_set_data(channel, event); - switch_event_fire(&event); - } - - while (switch_channel_ready(channel) && switch_channel_up(other_channel) && !switch_channel_test_app_flag_key("T38", channel, CF_APP_T38)) { - status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); - - if (!SWITCH_READ_ACCEPTABLE(status)) { - /* Our duty is over */ - goto end_unlock; - } - - if (switch_test_flag(read_frame, SFF_CNG)) { - continue; - } - - if (switch_core_session_write_frame(other_session, read_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { - goto end_unlock; - } - } - - if (!(switch_channel_ready(channel) && switch_channel_up(other_channel))) { - goto end_unlock; - } - - if (!switch_channel_test_app_flag_key("T38", channel, CF_APP_T38)) { - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - goto end_unlock; - } - - if (!(pvt = switch_channel_get_private(other_channel, "_t38_pvt"))) { - switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); - goto end_unlock; - } - - if (switch_core_codec_init(&read_codec, - "L16", - NULL, - read_impl.samples_per_second, - read_impl.microseconds_per_packet / 1000, - 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, - NULL, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Raw read codec activation Success L16 %u\n", - read_codec.implementation->microseconds_per_packet); - switch_core_session_set_read_codec(session, &read_codec); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Raw read codec activation Failed L16\n"); - goto end_unlock; - } - - if (switch_core_codec_init(&write_codec, - "L16", - NULL, - read_impl.samples_per_second, - read_impl.microseconds_per_packet / 1000, - 1, - SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, - NULL, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Raw write codec activation Success L16\n"); - write_frame.codec = &write_codec; - write_frame.data = buf; - write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE; - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Raw write codec activation Failed L16\n"); - goto end_unlock; - } - - switch_ivr_sleep(session, 0, SWITCH_TRUE, NULL); - - if (switch_true(t38_trace)) { - trace_read = switch_core_session_sprintf(session, "%s%s%s_read.raw", SWITCH_GLOBAL_dirs.temp_dir, - SWITCH_PATH_SEPARATOR, switch_core_session_get_uuid(session)); - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Tracing inbound audio to %s\n", trace_read); - switch_channel_set_variable(channel, "t38_trace_read", trace_read); - - trace_write = switch_core_session_sprintf(session, "%s%s%s_write.raw", SWITCH_GLOBAL_dirs.temp_dir, - SWITCH_PATH_SEPARATOR, switch_core_session_get_uuid(session)); - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Tracing outbound audio to %s\n", trace_write); - switch_channel_set_variable(channel, "t38_trace_read", trace_write); - - - if ((write_fd = open(trace_read, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR)) != FAX_INVALID_SOCKET) { - if ((read_fd = open(trace_write, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR)) == FAX_INVALID_SOCKET) { - close(write_fd); - write_fd = FAX_INVALID_SOCKET; - } - } - } - - while (switch_channel_ready(channel) && switch_channel_up(other_channel)) { - status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); - - if (!SWITCH_READ_ACCEPTABLE(status) || pvt->done) { - /* Our duty is over */ - goto end_unlock; - } - - - /* Skip CNG frames (auto-generated by FreeSWITCH, usually) */ - if (!switch_test_flag(read_frame, SFF_CNG)) { - - if (read_fd != FAX_INVALID_SOCKET) { - int w = write(read_fd, read_frame->data, read_frame->datalen); - if (w <= 0) { - close(read_fd); - read_fd = FAX_INVALID_SOCKET; - } - } - if (t38_gateway_rx(pvt->t38_gateway_state, (int16_t *) read_frame->data, read_frame->samples)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "fax_rx reported an error\n"); - goto end_unlock; - } - } - - if ((tx = t38_gateway_tx(pvt->t38_gateway_state, buf, write_codec.implementation->samples_per_packet)) < 0) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "fax_tx reported an error\n"); - goto end_unlock; - } - - if (!tx) { - /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "No audio samples to send\n"); */ - continue; - } else { - /* Set our write_frame data */ - write_frame.datalen = tx * sizeof(int16_t); - write_frame.samples = tx; - } - - if (write_fd != FAX_INVALID_SOCKET) { - int w = write(write_fd, write_frame.data, write_frame.datalen); - if (w <= 0) { - close(write_fd); - write_fd = FAX_INVALID_SOCKET; - } - } - - if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { - goto end_unlock; - } - } - - end_unlock: - - msg.message_id = SWITCH_MESSAGE_INDICATE_UNBRIDGE; - msg.from = __FILE__; - msg.string_arg = peer_uuid; - switch_core_session_receive_message(session, &msg); - - - if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_UNBRIDGE) == SWITCH_STATUS_SUCCESS) { - switch_channel_event_set_data(channel, event); - switch_event_fire(&event); - } - - if (read_fd != FAX_INVALID_SOCKET) { - close(read_fd); - read_fd = FAX_INVALID_SOCKET; - } - - if (write_fd != FAX_INVALID_SOCKET) { - close(write_fd); - write_fd = FAX_INVALID_SOCKET; - } - - - switch_channel_hangup(other_channel, SWITCH_CAUSE_NORMAL_CLEARING); - switch_core_session_rwunlock(other_session); - - switch_core_session_set_read_codec(session, NULL); - - if (switch_core_codec_ready(&read_codec)) { - switch_core_codec_destroy(&read_codec); - } - - if (switch_core_codec_ready(&write_codec)) { - switch_core_codec_destroy(&write_codec); - } - - - end: - - switch_channel_clear_state_handler(channel, &t38_gateway_state_handlers); - switch_channel_set_variable(channel, "t38_peer", NULL); - switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t t38_gateway_on_reset(switch_core_session_t *session) -{ - switch_channel_t *channel = switch_core_session_get_channel(session); - - switch_channel_set_variable(channel, "rtp_autoflush_during_bridge", "false"); - - switch_channel_clear_flag(channel, CF_REDIRECT); - - if (switch_channel_test_app_flag(channel, CF_APP_TAGGED)) { - switch_channel_clear_app_flag(channel, CF_APP_TAGGED); - switch_channel_set_state(channel, CS_CONSUME_MEDIA); - } else { - switch_channel_set_state(channel, CS_SOFT_EXECUTE); - } - - return SWITCH_STATUS_SUCCESS; -} - -static const switch_state_handler_table_t t38_gateway_state_handlers = { - /*.on_init */ NULL, - /*.on_routing */ NULL, - /*.on_execute */ NULL, - /*.on_hangup */ NULL, - /*.on_exchange_media */ NULL, - /*.on_soft_execute */ t38_gateway_on_soft_execute, - /*.on_consume_media */ t38_gateway_on_consume_media, - /*.on_hibernate */ NULL, - /*.on_reset */ t38_gateway_on_reset, - /*.on_park */ NULL, - /*.on_reporting */ NULL, - /*.on_destroy */ NULL, - SSH_FLAG_STICKY -}; - -static switch_bool_t t38_gateway_start(switch_core_session_t *session, const char *app, const char *data) -{ - switch_channel_t *other_channel = NULL, *channel = switch_core_session_get_channel(session); - switch_core_session_t *other_session = NULL; - int peer = app && !strcasecmp(app, "peer"); - - if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { - other_channel = switch_core_session_get_channel(other_session); - - switch_channel_set_variable(channel, "t38_peer", switch_core_session_get_uuid(other_session)); - switch_channel_set_variable(other_channel, "t38_peer", switch_core_session_get_uuid(session)); - - - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s starting gateway mode to %s\n", - switch_channel_get_name(peer ? channel : other_channel), - switch_channel_get_name(peer ? other_channel : channel)); - - - switch_channel_clear_state_handler(channel, NULL); - switch_channel_clear_state_handler(other_channel, NULL); - - switch_channel_add_state_handler(channel, &t38_gateway_state_handlers); - switch_channel_add_state_handler(other_channel, &t38_gateway_state_handlers); - - switch_channel_set_app_flag(peer ? channel : other_channel, CF_APP_TAGGED); - switch_channel_clear_app_flag(peer ? other_channel : channel, CF_APP_TAGGED); - - switch_channel_set_flag(channel, CF_REDIRECT); - switch_channel_set_state(channel, CS_RESET); - - switch_channel_set_flag(other_channel, CF_REDIRECT); - switch_channel_set_state(other_channel, CS_RESET); - - switch_core_session_rwunlock(other_session); - - } - - return SWITCH_FALSE; -} - - -SWITCH_STANDARD_APP(t38_gateway_function) -{ - switch_channel_t *channel = switch_core_session_get_channel(session); - time_t timeout = switch_epoch_time_now(NULL) + 20; - const char *var; - - if (zstr(data) || strcasecmp(data, "self")) { - data = "peer"; - } - - switch_channel_set_variable(channel, "t38_leg", data); - - if ((var = switch_channel_get_variable(channel, "t38_gateway_detect_timeout"))) { - long to = atol(var); - if (to > -1) { - timeout = (time_t) (switch_epoch_time_now(NULL) + to); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s invalid timeout value.\n", switch_channel_get_name(channel)); - } - } - - switch_ivr_tone_detect_session(session, "t38", "1100.0", "rw", timeout, 1, data, NULL, t38_gateway_start); -} - - -SWITCH_MODULE_LOAD_FUNCTION(mod_fax_init) -{ - switch_application_interface_t *app_interface; - - *module_interface = switch_loadable_module_create_module_interface(pool, modname); - - SWITCH_ADD_APP(app_interface, "t38_gateway", "Convert to T38 Gateway if tones are heard", "Convert to T38 Gateway if tones are heard", - t38_gateway_function, "", SAF_MEDIA_TAP); - - SWITCH_ADD_APP(app_interface, "rxfax", "FAX Receive Application", "FAX Receive Application", spanfax_rx_function, SPANFAX_RX_USAGE, - SAF_SUPPORT_NOMEDIA); - SWITCH_ADD_APP(app_interface, "txfax", "FAX Transmit Application", "FAX Transmit Application", spanfax_tx_function, SPANFAX_TX_USAGE, - SAF_SUPPORT_NOMEDIA); - - SWITCH_ADD_APP(app_interface, "spandsp_stop_dtmf", "stop inband dtmf", "Stop detecting inband dtmf.", stop_dtmf_session_function, "", SAF_NONE); - SWITCH_ADD_APP(app_interface, "spandsp_start_dtmf", "Detect dtmf", "Detect inband dtmf on the session", dtmf_session_function, "", SAF_MEDIA_TAP); - - memset(&globals, 0, sizeof(globals)); - memset(&t38_state_list, 0, sizeof(t38_state_list)); - switch_core_new_memory_pool(&globals.pool); - switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, globals.pool); - switch_mutex_init(&t38_state_list.mutex, SWITCH_MUTEX_NESTED, globals.pool); - - globals.enable_t38 = 1; - globals.total_sessions = 0; - globals.verbose = 1; - globals.use_ecm = 1; - globals.disable_v17 = 0; - globals.prepend_string = switch_core_strdup(globals.pool, "fax"); - globals.spool = switch_core_strdup(globals.pool, "/tmp"); - strncpy(globals.ident, "SpanDSP Fax Ident", sizeof(globals.ident) - 1); - strncpy(globals.header, "SpanDSP Fax Header", sizeof(globals.header) - 1); - - load_configuration(0); - - if ((switch_event_bind_removable(modname, SWITCH_EVENT_RELOADXML, NULL, event_handler, NULL, &NODE) != SWITCH_STATUS_SUCCESS)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind our reloadxml handler!\n"); - /* Not such severe to prevent loading */ - } - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "mod_fax loaded, using spandsp library version [%s]\n", SPANDSP_RELEASE_DATETIME_STRING); - - return SWITCH_STATUS_SUCCESS; -} - -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_fax_shutdown) -{ - switch_memory_pool_t *pool = globals.pool; - - switch_event_unbind(&NODE); - - switch_core_destroy_memory_pool(&pool); - memset(&globals, 0, sizeof(globals)); - - return SWITCH_STATUS_UNLOAD; -} - -/* For Emacs: - * Local Variables: - * mode:c - * indent-tabs-mode:nil - * tab-width:4 - * c-basic-offset:4 - * End: - * For VIM: - * vim:set softtabstop=4 shiftwidth=4 tabstop=4: - */ diff --git a/src/mod/applications/mod_fax/udptl.c b/src/mod/applications/mod_fax/udptl.c deleted file mode 100644 index a2651513f0..0000000000 --- a/src/mod/applications/mod_fax/udptl.c +++ /dev/null @@ -1,563 +0,0 @@ -//#define UDPTL_DEBUG -/* - * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2009, Steve Underwood - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * Contributor(s): - * - * Steve Underwood - * - * udptl.c -- UDPTL handling for T.38 - * - */ - -#include -#include -#include -#include -#include - -#include "udptl.h" - -#define FALSE 0 -#define TRUE (!FALSE) - -static int decode_length(const uint8_t *buf, int limit, int *len, int *pvalue) -{ - if (*len >= limit) - return -1; - if ((buf[*len] & 0x80) == 0) { - *pvalue = buf[(*len)++]; - return 0; - } - if ((buf[*len] & 0x40) == 0) { - if (*len >= limit - 1) - return -1; - *pvalue = (buf[(*len)++] & 0x3F) << 8; - *pvalue |= buf[(*len)++]; - return 0; - } - *pvalue = (buf[(*len)++] & 0x3F) << 14; - /* Indicate we have a fragment */ - return 1; -} - -/*- End of function --------------------------------------------------------*/ - -static int decode_open_type(const uint8_t *buf, int limit, int *len, const uint8_t ** p_object, int *p_num_octets) -{ - int octet_cnt; - int octet_idx; - int stat; - int i; - const uint8_t **pbuf; - - for (octet_idx = 0, *p_num_octets = 0;; octet_idx += octet_cnt) { - if ((stat = decode_length(buf, limit, len, &octet_cnt)) < 0) - return -1; - if (octet_cnt > 0) { - *p_num_octets += octet_cnt; - - pbuf = &p_object[octet_idx]; - i = 0; - /* Make sure the buffer contains at least the number of bits requested */ - if ((*len + octet_cnt) > limit) - return -1; - - *pbuf = &buf[*len]; - *len += octet_cnt; - } - if (stat == 0) - break; - } - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -static int encode_length(uint8_t *buf, int *len, int value) -{ - int multiplier; - - if (value < 0x80) { - /* 1 octet */ - buf[(*len)++] = value; - return value; - } - if (value < 0x4000) { - /* 2 octets */ - /* Set the first bit of the first octet */ - buf[(*len)++] = ((0x8000 | value) >> 8) & 0xFF; - buf[(*len)++] = value & 0xFF; - return value; - } - /* Fragmentation */ - multiplier = (value < 0x10000) ? (value >> 14) : 4; - /* Set the first 2 bits of the octet */ - buf[(*len)++] = 0xC0 | multiplier; - return multiplier << 14; -} - -/*- End of function --------------------------------------------------------*/ - -static int encode_open_type(uint8_t *buf, int *len, const uint8_t *data, int num_octets) -{ - int enclen; - int octet_idx; - uint8_t zero_byte; - - /* If open type is of zero length, add a single zero byte (10.1) */ - if (num_octets == 0) { - zero_byte = 0; - data = &zero_byte; - num_octets = 1; - } - /* Encode the open type */ - for (octet_idx = 0;; num_octets -= enclen, octet_idx += enclen) { - if ((enclen = encode_length(buf, len, num_octets)) < 0) - return -1; - if (enclen > 0) { - memcpy(&buf[*len], &data[octet_idx], enclen); - *len += enclen; - } - if (enclen >= num_octets) - break; - } - - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_rx_packet(udptl_state_t *s, const uint8_t buf[], int len) -{ - int stat; - int stat2; - int i; - int j; - int k; - int l; - int m; - int x; - int limit; - int which; - int ptr; - int count; - int total_count; - int seq_no; - const uint8_t *msg; - const uint8_t *data; - int msg_len; - int repaired[16]; - const uint8_t *bufs[16]; - int lengths[16]; - int span; - int entries; - - ptr = 0; - /* Decode seq_number */ - if (ptr + 2 > len) - return -1; - seq_no = (buf[0] << 8) | buf[1]; - ptr += 2; - /* Break out the primary packet */ - if ((stat = decode_open_type(buf, len, &ptr, &msg, &msg_len)) != 0) - return -1; - /* Decode error_recovery */ - if (ptr + 1 > len) - return -1; - /* Our buffers cannot tolerate overlength packets */ - if (msg_len > LOCAL_FAX_MAX_DATAGRAM) - return -1; - /* Update any missed slots in the buffer */ - for (i = s->rx_seq_no; seq_no > i; i++) { - x = i & UDPTL_BUF_MASK; - s->rx[x].buf_len = -1; - s->rx[x].fec_len[0] = 0; - s->rx[x].fec_span = 0; - s->rx[x].fec_entries = 0; - } - /* Save the new packet. Pure redundancy mode won't use this, but some systems will switch - into FEC mode after sending some redundant packets. */ - x = seq_no & UDPTL_BUF_MASK; - memcpy(s->rx[x].buf, msg, msg_len); - s->rx[x].buf_len = msg_len; - s->rx[x].fec_len[0] = 0; - s->rx[x].fec_span = 0; - s->rx[x].fec_entries = 0; - if ((buf[ptr++] & 0x80) == 0) { - /* Secondary packet mode for error recovery */ - /* We might have the packet we want, but we need to check through - the redundant stuff, and verify the integrity of the UDPTL. - This greatly reduces our chances of accepting garbage. */ - total_count = 0; - do { - if ((stat2 = decode_length(buf, len, &ptr, &count)) < 0) - return -1; - for (i = 0; i < count; i++) { - if ((stat = decode_open_type(buf, len, &ptr, &bufs[total_count + i], &lengths[total_count + i])) != 0) - return -1; - } - total_count += count; - } - while (stat2 > 0); - /* We should now be exactly at the end of the packet. If not, this is a fault. */ - if (ptr != len) - return -1; - if (seq_no > s->rx_seq_no) { - /* We received a later packet than we expected, so we need to check if we can fill in the gap from the - secondary packets. */ - /* Step through in reverse order, so we go oldest to newest */ - for (i = total_count; i > 0; i--) { - if (seq_no - i >= s->rx_seq_no) { - /* This one wasn't seen before */ - /* Decode the secondary packet */ -#if defined(UDPTL_DEBUG) - fprintf(stderr, "Secondary %d, len %d\n", seq_no - i, lengths[i - 1]); -#endif - /* Save the new packet. Redundancy mode won't use this, but some systems will switch into - FEC mode after sending some redundant packets, and this may then be important. */ - x = (seq_no - i) & UDPTL_BUF_MASK; - memcpy(s->rx[x].buf, bufs[i - 1], lengths[i - 1]); - s->rx[x].buf_len = lengths[i - 1]; - s->rx[x].fec_len[0] = 0; - s->rx[x].fec_span = 0; - s->rx[x].fec_entries = 0; - if (s->rx_packet_handler(s->user_data, bufs[i - 1], lengths[i - 1], seq_no - i) < 0) - fprintf(stderr, "Bad IFP\n"); - } - } - } - } else { - /* FEC mode for error recovery */ - - /* Decode the FEC packets */ - /* The span is defined as an unconstrained integer, but will never be more - than a small value. */ - if (ptr + 2 > len) - return -1; - if (buf[ptr++] != 1) - return -1; - span = buf[ptr++]; - - x = seq_no & UDPTL_BUF_MASK; - - s->rx[x].fec_span = span; - - memset(repaired, 0, sizeof(repaired)); - repaired[x] = TRUE; - - /* The number of entries is defined as a length, but will only ever be a small - value. Treat it as such. */ - if (ptr + 1 > len) - return -1; - entries = buf[ptr++]; - s->rx[x].fec_entries = entries; - - /* Decode the elements */ - for (i = 0; i < entries; i++) { - if ((stat = decode_open_type(buf, len, &ptr, &data, &s->rx[x].fec_len[i])) != 0) - return -1; - if (s->rx[x].fec_len[i] > LOCAL_FAX_MAX_DATAGRAM) - return -1; - - /* Save the new FEC data */ - memcpy(s->rx[x].fec[i], data, s->rx[x].fec_len[i]); -#if 0 - fprintf(stderr, "FEC: "); - for (j = 0; j < s->rx[x].fec_len[i]; j++) - fprintf(stderr, "%02X ", data[j]); - fprintf(stderr, "\n"); -#endif - } - /* We should now be exactly at the end of the packet. If not, this is a fault. */ - if (ptr != len) - return -1; - /* See if we can reconstruct anything which is missing */ - /* TODO: this does not comprehensively hunt back and repair everything that is possible */ - for (l = x; l != ((x - (16 - span * entries)) & UDPTL_BUF_MASK); l = (l - 1) & UDPTL_BUF_MASK) { - if (s->rx[l].fec_len[0] <= 0) - continue; - for (m = 0; m < s->rx[l].fec_entries; m++) { - limit = (l + m) & UDPTL_BUF_MASK; - for (which = -1, k = (limit - s->rx[l].fec_span * s->rx[l].fec_entries) & UDPTL_BUF_MASK; k != limit; - k = (k + s->rx[l].fec_entries) & UDPTL_BUF_MASK) { - if (s->rx[k].buf_len <= 0) - which = (which == -1) ? k : -2; - } - if (which >= 0) { - /* Repairable */ - for (j = 0; j < s->rx[l].fec_len[m]; j++) { - s->rx[which].buf[j] = s->rx[l].fec[m][j]; - for (k = (limit - s->rx[l].fec_span * s->rx[l].fec_entries) & UDPTL_BUF_MASK; k != limit; - k = (k + s->rx[l].fec_entries) & UDPTL_BUF_MASK) - s->rx[which].buf[j] ^= (s->rx[k].buf_len > j) ? s->rx[k].buf[j] : 0; - } - s->rx[which].buf_len = s->rx[l].fec_len[m]; - repaired[which] = TRUE; - } - } - } - /* Now play any new packets forwards in time */ - for (l = (x + 1) & UDPTL_BUF_MASK, j = seq_no - UDPTL_BUF_MASK; l != x; l = (l + 1) & UDPTL_BUF_MASK, j++) { - if (repaired[l]) { -#if defined(UDPTL_DEBUG) - fprintf(stderr, "Fixed packet %d, len %d\n", j, l); -#endif - if (s->rx_packet_handler(s->user_data, s->rx[l].buf, s->rx[l].buf_len, j) < 0) - fprintf(stderr, "Bad IFP\n"); - } - } - } - /* If packets are received out of sequence, we may have already processed this packet from the error - recovery information in a packet already received. */ - if (seq_no >= s->rx_seq_no) { - /* Decode the primary packet */ -#if defined(UDPTL_DEBUG) - fprintf(stderr, "Primary packet %d, len %d\n", seq_no, msg_len); -#endif - if (s->rx_packet_handler(s->user_data, msg, msg_len, seq_no) < 0) - fprintf(stderr, "Bad IFP\n"); - } - - s->rx_seq_no = (seq_no + 1) & 0xFFFF; - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_build_packet(udptl_state_t *s, uint8_t buf[], const uint8_t msg[], int msg_len) -{ - uint8_t fec[LOCAL_FAX_MAX_DATAGRAM]; - int i; - int j; - int seq; - int entry; - int entries; - int span; - int m; - int len; - int limit; - int high_tide; - - /* UDPTL cannot cope with zero length messages, and our buffering for redundancy limits their - maximum length. */ - if (msg_len < 1 || msg_len > LOCAL_FAX_MAX_DATAGRAM) - return -1; - seq = s->tx_seq_no & 0xFFFF; - - /* Map the sequence number to an entry in the circular buffer */ - entry = seq & UDPTL_BUF_MASK; - - /* We save the message in a circular buffer, for generating FEC or - redundancy sets later on. */ - s->tx[entry].buf_len = msg_len; - memcpy(s->tx[entry].buf, msg, msg_len); - - /* Build the UDPTL packet */ - - len = 0; - /* Encode the sequence number */ - buf[len++] = (seq >> 8) & 0xFF; - buf[len++] = seq & 0xFF; - - /* Encode the primary packet */ - if (encode_open_type(buf, &len, msg, msg_len) < 0) - return -1; - - /* Encode the appropriate type of error recovery information */ - switch (s->error_correction_scheme) { - case UDPTL_ERROR_CORRECTION_NONE: - /* Encode the error recovery type */ - buf[len++] = 0x00; - /* The number of entries will always be zero, so it is pointless allowing - for the fragmented case here. */ - if (encode_length(buf, &len, 0) < 0) - return -1; - break; - case UDPTL_ERROR_CORRECTION_REDUNDANCY: - /* Encode the error recovery type */ - buf[len++] = 0x00; - if (s->tx_seq_no > s->error_correction_entries) - entries = s->error_correction_entries; - else - entries = s->tx_seq_no; - /* The number of entries will always be small, so it is pointless allowing - for the fragmented case here. */ - if (encode_length(buf, &len, entries) < 0) - return -1; - /* Encode the elements */ - for (i = 0; i < entries; i++) { - j = (entry - i - 1) & UDPTL_BUF_MASK; - if (encode_open_type(buf, &len, s->tx[j].buf, s->tx[j].buf_len) < 0) - return -1; - } - break; - case UDPTL_ERROR_CORRECTION_FEC: - span = s->error_correction_span; - entries = s->error_correction_entries; - if (seq < s->error_correction_span * s->error_correction_entries) { - /* In the initial stages, wind up the FEC smoothly */ - entries = seq / s->error_correction_span; - if (seq < s->error_correction_span) - span = 0; - } - /* Encode the error recovery type */ - buf[len++] = 0x80; - /* Span is defined as an inconstrained integer, which it dumb. It will only - ever be a small value. Treat it as such. */ - buf[len++] = 1; - buf[len++] = span; - /* The number of entries is defined as a length, but will only ever be a small - value. Treat it as such. */ - buf[len++] = entries; - for (m = 0; m < entries; m++) { - /* Make an XOR'ed entry the maximum length */ - limit = (entry + m) & UDPTL_BUF_MASK; - high_tide = 0; - for (i = (limit - span * entries) & UDPTL_BUF_MASK; i != limit; i = (i + entries) & UDPTL_BUF_MASK) { - if (high_tide < s->tx[i].buf_len) { - for (j = 0; j < high_tide; j++) - fec[j] ^= s->tx[i].buf[j]; - for (; j < s->tx[i].buf_len; j++) - fec[j] = s->tx[i].buf[j]; - high_tide = s->tx[i].buf_len; - } else { - for (j = 0; j < s->tx[i].buf_len; j++) - fec[j] ^= s->tx[i].buf[j]; - } - } - if (encode_open_type(buf, &len, fec, high_tide) < 0) - return -1; - } - break; - } - - if (s->verbose) - fprintf(stderr, "\n"); - s->tx_seq_no++; - return len; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_set_error_correction(udptl_state_t *s, int ec_scheme, int span, int entries) -{ - switch (ec_scheme) { - case UDPTL_ERROR_CORRECTION_FEC: - case UDPTL_ERROR_CORRECTION_REDUNDANCY: - case UDPTL_ERROR_CORRECTION_NONE: - s->error_correction_scheme = ec_scheme; - break; - case -1: - /* Just don't change the scheme */ - break; - default: - return -1; - } - if (span >= 0) - s->error_correction_span = span; - if (entries >= 0) - s->error_correction_entries = entries; - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_get_error_correction(udptl_state_t *s, int *ec_scheme, int *span, int *entries) -{ - if (ec_scheme) - *ec_scheme = s->error_correction_scheme; - if (span) - *span = s->error_correction_span; - if (entries) - *entries = s->error_correction_entries; - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_set_local_max_datagram(udptl_state_t *s, int max_datagram) -{ - s->local_max_datagram_size = max_datagram; - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_get_local_max_datagram(udptl_state_t *s) -{ - return s->local_max_datagram_size; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_set_far_max_datagram(udptl_state_t *s, int max_datagram) -{ - s->far_max_datagram_size = max_datagram; - return 0; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_get_far_max_datagram(udptl_state_t *s) -{ - return s->far_max_datagram_size; -} - -/*- End of function --------------------------------------------------------*/ - -udptl_state_t *udptl_init(udptl_state_t *s, int ec_scheme, int span, int entries, udptl_rx_packet_handler_t rx_packet_handler, void *user_data) -{ - int i; - - if (rx_packet_handler == NULL) - return NULL; - - if (s == NULL) { - if ((s = (udptl_state_t *) malloc(sizeof(*s))) == NULL) - return NULL; - } - memset(s, 0, sizeof(*s)); - - s->error_correction_scheme = ec_scheme; - s->error_correction_span = span; - s->error_correction_entries = entries; - - s->far_max_datagram_size = LOCAL_FAX_MAX_DATAGRAM; - s->local_max_datagram_size = LOCAL_FAX_MAX_DATAGRAM; - - memset(&s->rx, 0, sizeof(s->rx)); - memset(&s->tx, 0, sizeof(s->tx)); - for (i = 0; i <= UDPTL_BUF_MASK; i++) { - s->rx[i].buf_len = -1; - s->tx[i].buf_len = -1; - } - - s->rx_packet_handler = rx_packet_handler; - s->user_data = user_data; - - return s; -} - -/*- End of function --------------------------------------------------------*/ - -int udptl_release(udptl_state_t *s) -{ - return 0; -} - -/*- End of function --------------------------------------------------------*/ -/*- End of file ------------------------------------------------------------*/ diff --git a/src/mod/applications/mod_fax/udptl.h b/src/mod/applications/mod_fax/udptl.h deleted file mode 100644 index 39740353d1..0000000000 --- a/src/mod/applications/mod_fax/udptl.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application - * Copyright (C) 2009, Steve Underwood - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * Contributor(s): - * - * Steve Underwood - * - * udptl.h -- UDPTL handling for T.38 - * - */ - -#if !defined(FREESWITCH_UDPTL_H) -#define FREESWITCH_UDPTL_H - -#define LOCAL_FAX_MAX_DATAGRAM 400 -#define LOCAL_FAX_MAX_FEC_PACKETS 5 - -#define UDPTL_BUF_MASK 15 - -typedef int (udptl_rx_packet_handler_t) (void *user_data, const uint8_t msg[], int len, int seq_no); - -typedef struct { - int buf_len; - uint8_t buf[LOCAL_FAX_MAX_DATAGRAM]; -} udptl_fec_tx_buffer_t; - -typedef struct { - int buf_len; - uint8_t buf[LOCAL_FAX_MAX_DATAGRAM]; - int fec_len[LOCAL_FAX_MAX_FEC_PACKETS]; - uint8_t fec[LOCAL_FAX_MAX_FEC_PACKETS][LOCAL_FAX_MAX_DATAGRAM]; - int fec_span; - int fec_entries; -} udptl_fec_rx_buffer_t; - -struct udptl_state_s { - udptl_rx_packet_handler_t *rx_packet_handler; - void *user_data; - - /*! This option indicates the error correction scheme used in transmitted UDPTL - packets. */ - int error_correction_scheme; - - /*! This option indicates the number of error correction entries transmitted in - UDPTL packets. */ - int error_correction_entries; - - /*! This option indicates the span of the error correction entries in transmitted - UDPTL packets (FEC only). */ - int error_correction_span; - - /*! This option indicates the maximum size of a datagram that can be accepted by - the remote device. */ - int far_max_datagram_size; - - /*! This option indicates the maximum size of a datagram that we are prepared to - accept. */ - int local_max_datagram_size; - - int verbose; - - int tx_seq_no; - int rx_seq_no; - int rx_expected_seq_no; - - udptl_fec_tx_buffer_t tx[UDPTL_BUF_MASK + 1]; - udptl_fec_rx_buffer_t rx[UDPTL_BUF_MASK + 1]; -}; - -enum { - UDPTL_ERROR_CORRECTION_NONE, - UDPTL_ERROR_CORRECTION_FEC, - UDPTL_ERROR_CORRECTION_REDUNDANCY -}; - -typedef struct udptl_state_s udptl_state_t; - -#if defined(__cplusplus) -extern "C" { -#endif - -/*! \brief Process an arriving UDPTL packet. - \param s The UDPTL context. - \param buf The UDPTL packet buffer. - \param len The length of the packet. - \return 0 for OK. */ - int udptl_rx_packet(udptl_state_t *s, const uint8_t buf[], int len); - -/*! \brief Construct a UDPTL packet, ready for transmission. - \param s The UDPTL context. - \param buf The UDPTL packet buffer. - \param msg The primary packet. - \param len The length of the primary packet. - \return The length of the constructed UDPTL packet. */ - int udptl_build_packet(udptl_state_t *s, uint8_t buf[], const uint8_t msg[], int msg_len); - -/*! \brief Change the error correction settings of a UDPTL context. - \param s The UDPTL context. - \param ec_scheme One of the optional error correction schemes. - \param span The packet span over which error correction should be applied. - \param entries The number of error correction entries to include in packets. - \return 0 for OK. */ - int udptl_set_error_correction(udptl_state_t *s, int ec_scheme, int span, int entries); - -/*! \brief Check the error correction settings of a UDPTL context. - \param s The UDPTL context. - \param ec_scheme One of the optional error correction schemes. - \param span The packet span over which error correction is being applied. - \param entries The number of error correction being included in packets. - \return 0 for OK. */ - int udptl_get_error_correction(udptl_state_t *s, int *ec_scheme, int *span, int *entries); - - int udptl_set_local_max_datagram(udptl_state_t *s, int max_datagram); - - int udptl_get_local_max_datagram(udptl_state_t *s); - - int udptl_set_far_max_datagram(udptl_state_t *s, int max_datagram); - - int udptl_get_far_max_datagram(udptl_state_t *s); - -/*! \brief Initialise a UDPTL context. - \param s The UDPTL context. - \param ec_scheme One of the optional error correction schemes. - \param span The packet span over which error correction should be applied. - \param entries The number of error correction entries to include in packets. - \param rx_packet_handler The callback function, used to report arriving IFP packets. - \param user_data An opaque pointer supplied to rx_packet_handler. - \return A pointer to the UDPTL context, or NULL if there was a problem. */ - udptl_state_t *udptl_init(udptl_state_t *s, int ec_scheme, int span, int entries, udptl_rx_packet_handler_t rx_packet_handler, void *user_data); - -/*! \brief Release a UDPTL context. - \param s The UDPTL context. - \return 0 for OK. */ - int udptl_release(udptl_state_t *s); - -#if defined(__cplusplus) -} -#endif -#endif -/*- End of file ------------------------------------------------------------*/ From 693e04a7dedf6dbae14fd65ecfbaf77bb96879f6 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 31 May 2012 09:04:08 -0500 Subject: [PATCH 629/630] FS-4250 please post a new log if this does not work --- src/mod/endpoints/mod_sofia/mod_sofia.c | 2 ++ src/mod/endpoints/mod_sofia/sofia.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 2b44018665..6d28bc01f9 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -1587,6 +1587,8 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi case SWITCH_MESSAGE_INDICATE_BRIDGE: { + + switch_channel_set_variable(channel, SOFIA_REPLACES_HEADER, NULL); sofia_glue_tech_track(tech_pvt->profile, session); sofia_set_flag(tech_pvt, TFLAG_SIMPLIFY); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index dc4fcfb0f0..281aa511da 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -6797,6 +6797,9 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS_MSG(de->data->e_msg), SIPTAG_EXPIRES_STR("60"), TAG_END()); + + switch_channel_set_variable(tech_pvt->channel, SOFIA_REPLACES_HEADER, NULL); + if (sip->sip_referred_by) { full_ref_by = sip_header_as_string(home, (void *) sip->sip_referred_by); } From 24f6c4056b1bfec94020eeb9611b3fcb0f4f72b4 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 31 May 2012 11:25:28 -0500 Subject: [PATCH 630/630] missed a spot removing mod_fax --- configure.in | 1 - 1 file changed, 1 deletion(-) diff --git a/configure.in b/configure.in index 5dbe6d9e12..83cb4144eb 100644 --- a/configure.in +++ b/configure.in @@ -993,7 +993,6 @@ AC_CONFIG_FILES([Makefile src/Makefile src/mod/Makefile src/mod/applications/mod_expr/Makefile - src/mod/applications/mod_fax/Makefile src/mod/applications/mod_spandsp/Makefile src/mod/applications/mod_osp/Makefile src/mod/applications/mod_stress/Makefile